2025-09-28T09:00:02.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:00:02.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:00:02.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-28T09:00:03.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 8, 59, 44), 8.89, 54.94, 0.0, 11.82, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:00:03.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 08:59:44
2025-09-28T09:00:03.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:00:03.660 [DEBUG] [Thread-120086] [transport.py] [_log()] starting thread (client mode): 0x2e361ba0
2025-09-28T09:00:03.660 [DEBUG] [Thread-120086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:03.681 [DEBUG] [Thread-120086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:00:03.681 [INFO] [Thread-120086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:03.684 [DEBUG] [Thread-120086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] Compression: none
2025-09-28T09:00:03.685 [DEBUG] [Thread-120086] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:03.702 [DEBUG] [Thread-120086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:03.702 [DEBUG] [Thread-120086] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:03.702 [DEBUG] [Thread-120086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:00:03.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:00:03.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:03.703 [DEBUG] [Thread-120086] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:03.703 [DEBUG] [Thread-120086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:03.703 [DEBUG] [Thread-120086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:03.703 [DEBUG] [Thread-120086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:00:03.703 [DEBUG] [Thread-120086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:03.718 [INFO] [Thread-120086] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:03.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:08.234 [DEBUG] [Thread-120088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:11.317 [DEBUG] [Thread-120086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:11.317 [DEBUG] [Thread-120086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:11.317 [DEBUG] [Thread-120086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:00:11.358 [DEBUG] [Thread-120086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:11.358 [DEBUG] [Thread-120086] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:11.361 [DEBUG] [Thread-120086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:11.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:11.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:00:11.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:00:11.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:00:11.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:11.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:00:11.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.291401 -999.00  +13.60   8.87     58   +5.60 1 1 1 1 1   888    0 8.66 20.96 ----- 11.6 8.9 254.8 11.7 20.2 -27.2 19.1 -24.4 17.5 -24.4 18.4 -26.1
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.291401
2025-09-28T09:00:11.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:00:11.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:00:11.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:00:11.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:00:11.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:00:11.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T08:59:44', tmtdew=8.89, humidity=54.94, cloud=0.0, wind=11.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T06:59:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:00:11.468 [DEBUG] [Thread-120086] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:11.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-28T09:00:11.557 [DEBUG] [Thread-120090] [transport.py] [_log()] starting thread (client mode): 0x2e3c2b90
2025-09-28T09:00:11.557 [DEBUG] [Thread-120090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:11.571 [DEBUG] [Thread-120090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:00:11.571 [INFO] [Thread-120090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:11.579 [DEBUG] [Thread-120090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:11.580 [DEBUG] [Thread-120090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:11.580 [DEBUG] [Thread-120090] [transport.py] [_log()] Compression: none
2025-09-28T09:00:11.580 [DEBUG] [Thread-120090] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:11.635 [DEBUG] [Thread-120090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:11.635 [DEBUG] [Thread-120090] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:11.635 [DEBUG] [Thread-120090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:00:11.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:00:11.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:11.692 [DEBUG] [Thread-120090] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:11.692 [DEBUG] [Thread-120090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:11.692 [DEBUG] [Thread-120090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:11.692 [DEBUG] [Thread-120090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:00:11.692 [DEBUG] [Thread-120090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:11.709 [INFO] [Thread-120090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:11.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-28T09:00:11.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:12.689 [DEBUG] [Thread-120090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:12.689 [DEBUG] [Thread-120090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:12.737 [DEBUG] [Thread-120090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:12.737 [DEBUG] [Thread-120090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:12.746 [DEBUG] [Thread-120090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:12.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:12.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')
2025-09-28T09:00:12.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-28T09:00:12.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:12.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:12.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:12.781 [DEBUG] [Thread-120090] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:16.400 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:16.401 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:22.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:00:22.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:00:22.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-28T09:00:23.262 [DEBUG] [Thread-120092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:23.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 0, 16), 8.89, 54.95, 0.0, 12.7, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:00:23.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:00:16
2025-09-28T09:00:23.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:00:23.633 [DEBUG] [Thread-120093] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9a0
2025-09-28T09:00:23.633 [DEBUG] [Thread-120093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:23.653 [DEBUG] [Thread-120093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:00:23.653 [INFO] [Thread-120093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:00:23.656 [DEBUG] [Thread-120093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:23.656 [DEBUG] [Thread-120093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:00:23.656 [DEBUG] [Thread-120093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:23.656 [DEBUG] [Thread-120093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:23.656 [DEBUG] [Thread-120093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:23.657 [DEBUG] [Thread-120093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:23.658 [DEBUG] [Thread-120093] [transport.py] [_log()] Compression: none
2025-09-28T09:00:23.658 [DEBUG] [Thread-120093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:23.675 [DEBUG] [Thread-120093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:23.676 [DEBUG] [Thread-120093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:23.676 [DEBUG] [Thread-120093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:00:23.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:00:23.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:23.678 [DEBUG] [Thread-120093] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:23.679 [DEBUG] [Thread-120093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:23.679 [DEBUG] [Thread-120093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:23.679 [DEBUG] [Thread-120093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:00:23.679 [DEBUG] [Thread-120093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:23.713 [INFO] [Thread-120093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:23.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:26.872 [DEBUG] [Thread-120093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:26.872 [DEBUG] [Thread-120093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:26.872 [DEBUG] [Thread-120093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:00:26.913 [DEBUG] [Thread-120093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:26.913 [DEBUG] [Thread-120093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:26.915 [DEBUG] [Thread-120093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:26.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:26.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:00:26.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:00:26.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:00:26.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:26.932 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:00:26.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.291401 -999.00  +13.60   8.87     58   +5.60 1 1 1 1 1   888    0 8.66 20.96 ----- 11.6 8.9 254.8 11.7 20.2 -27.2 19.1 -24.4 17.5 -24.4 18.4 -26.1
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.291401
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:00:26.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:00:16', tmtdew=8.89, humidity=54.95, cloud=0.0, wind=12.7, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T06:59:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:00:26.934 [DEBUG] [Thread-120093] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:27.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-28T09:00:27.063 [DEBUG] [Thread-120096] [transport.py] [_log()] starting thread (client mode): 0x2e3c0cd0
2025-09-28T09:00:27.063 [DEBUG] [Thread-120096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:27.109 [DEBUG] [Thread-120096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:00:27.109 [INFO] [Thread-120096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] Compression: none
2025-09-28T09:00:27.147 [DEBUG] [Thread-120096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:27.212 [DEBUG] [Thread-120096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:27.213 [DEBUG] [Thread-120096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:27.213 [DEBUG] [Thread-120096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:00:27.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:00:27.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:27.334 [DEBUG] [Thread-120096] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:27.334 [DEBUG] [Thread-120096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:27.335 [DEBUG] [Thread-120096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:27.335 [DEBUG] [Thread-120096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:00:27.335 [DEBUG] [Thread-120096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:27.384 [INFO] [Thread-120096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:27.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-28T09:00:27.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:28.388 [DEBUG] [Thread-120096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:28.389 [DEBUG] [Thread-120096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:28.478 [DEBUG] [Thread-120096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:28.478 [DEBUG] [Thread-120096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:28.517 [DEBUG] [Thread-120096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:28.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:28.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-28T09:00:28.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-28T09:00:28.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:28.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:28.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:28.657 [DEBUG] [Thread-120096] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:38.300 [DEBUG] [Thread-120098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:38.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:00:38.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:00:38.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-28T09:00:39.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 0, 16), 8.89, 54.95, 0.0, 12.7, 13.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:00:39.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:00:16
2025-09-28T09:00:39.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:00:39.482 [DEBUG] [Thread-120099] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c20
2025-09-28T09:00:39.482 [DEBUG] [Thread-120099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:39.494 [DEBUG] [Thread-120099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:00:39.494 [INFO] [Thread-120099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:39.497 [DEBUG] [Thread-120099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] Compression: none
2025-09-28T09:00:39.498 [DEBUG] [Thread-120099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:39.506 [DEBUG] [Thread-120099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:39.507 [DEBUG] [Thread-120099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:39.507 [DEBUG] [Thread-120099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:00:39.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:00:39.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:39.509 [DEBUG] [Thread-120099] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:39.509 [DEBUG] [Thread-120099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:39.509 [DEBUG] [Thread-120099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:39.509 [DEBUG] [Thread-120099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:00:39.509 [DEBUG] [Thread-120099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:39.548 [INFO] [Thread-120099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:39.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:40.131 [DEBUG] [Thread-120099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:40.131 [DEBUG] [Thread-120099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:40.131 [DEBUG] [Thread-120099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:00:40.171 [DEBUG] [Thread-120099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:40.172 [DEBUG] [Thread-120099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:40.175 [DEBUG] [Thread-120099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:40.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:40.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:00:40.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:00:40.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:00:40.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:40.199 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:00:40.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:40.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:40.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:00:40.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.291748 -999.00  +13.70   6.16     59   +5.80 1 1 1 1 1   888    0 8.71 20.76 ----- 9.0 6.2 219.9 12.8 20.3 -26.2 19.1 -24.3 17.5 -24.5 18.4 -25.4
2025-09-28T09:00:40.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:00:40.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:00:40.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.291748
2025-09-28T09:00:40.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:00:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:00:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:00:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:00:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:00:40.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:00:16', tmtdew=8.89, humidity=54.95, cloud=0.0, wind=12.7, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:00:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:00:40.202 [DEBUG] [Thread-120099] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:40.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-28T09:00:40.299 [DEBUG] [Thread-120102] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e30
2025-09-28T09:00:40.299 [DEBUG] [Thread-120102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:40.314 [DEBUG] [Thread-120102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:00:40.314 [INFO] [Thread-120102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:40.322 [DEBUG] [Thread-120102] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] Compression: none
2025-09-28T09:00:40.323 [DEBUG] [Thread-120102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:40.380 [DEBUG] [Thread-120102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:40.380 [DEBUG] [Thread-120102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:40.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:00:40.381 [DEBUG] [Thread-120102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:00:40.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:40.436 [DEBUG] [Thread-120102] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:40.436 [DEBUG] [Thread-120102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:40.436 [DEBUG] [Thread-120102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:40.437 [DEBUG] [Thread-120102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:00:40.437 [DEBUG] [Thread-120102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:40.456 [INFO] [Thread-120102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:40.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-28T09:00:40.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:41.450 [DEBUG] [Thread-120102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:41.450 [DEBUG] [Thread-120102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:41.498 [DEBUG] [Thread-120102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:41.498 [DEBUG] [Thread-120102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:41.507 [DEBUG] [Thread-120102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:41.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:41.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-28T09:00:41.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-28T09:00:41.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:41.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:41.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:41.542 [DEBUG] [Thread-120102] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:51.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:00:51.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:00:51.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-28T09:00:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 0, 48), 8.77, 55.0, 0.0, 13.45, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:00:52.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:00:48
2025-09-28T09:00:52.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:00:52.389 [DEBUG] [Thread-120104] [transport.py] [_log()] starting thread (client mode): 0x2e362050
2025-09-28T09:00:52.389 [DEBUG] [Thread-120104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:52.407 [DEBUG] [Thread-120104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:00:52.407 [INFO] [Thread-120104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:52.408 [DEBUG] [Thread-120104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] Compression: none
2025-09-28T09:00:52.409 [DEBUG] [Thread-120104] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:52.422 [DEBUG] [Thread-120104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:52.422 [DEBUG] [Thread-120104] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:52.423 [DEBUG] [Thread-120104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:00:52.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:00:52.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:52.424 [DEBUG] [Thread-120104] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:52.424 [DEBUG] [Thread-120104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:52.424 [DEBUG] [Thread-120104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:52.425 [DEBUG] [Thread-120104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:00:52.425 [DEBUG] [Thread-120104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:52.442 [INFO] [Thread-120104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:52.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:53.101 [DEBUG] [Thread-120104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:53.102 [DEBUG] [Thread-120104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:53.102 [DEBUG] [Thread-120104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:00:53.142 [DEBUG] [Thread-120104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:53.143 [DEBUG] [Thread-120104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:53.145 [DEBUG] [Thread-120104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:53.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:53.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:00:53.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:00:53.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:00:53.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:53.167 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:00:53.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:53.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:53.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:00:53.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.291748 -999.00  +13.70   6.16     59   +5.80 1 1 1 1 1   888    0 8.71 20.76 ----- 9.0 6.2 219.9 12.8 20.3 -26.2 19.1 -24.3 17.5 -24.5 18.4 -25.4
2025-09-28T09:00:53.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:00:53.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:00:53.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.291748
2025-09-28T09:00:53.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:00:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:00:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:00:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:00:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:00:53.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:00:48', tmtdew=8.77, humidity=55.0, cloud=0.0, wind=13.45, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:00:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:00:53.169 [DEBUG] [Thread-120104] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:53.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-28T09:00:53.264 [DEBUG] [Thread-120107] [transport.py] [_log()] starting thread (client mode): 0x2e363c10
2025-09-28T09:00:53.264 [DEBUG] [Thread-120107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:00:53.279 [DEBUG] [Thread-120107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:00:53.279 [INFO] [Thread-120107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:00:53.286 [DEBUG] [Thread-120107] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:00:53.286 [DEBUG] [Thread-120107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] client lang: <none>
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] server lang: <none>
2025-09-28T09:00:53.287 [DEBUG] [Thread-120107] [transport.py] [_log()] kex follows: False
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] Compression: none
2025-09-28T09:00:53.288 [DEBUG] [Thread-120107] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:00:53.344 [DEBUG] [Thread-120107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:00:53.344 [DEBUG] [Thread-120107] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:00:53.345 [DEBUG] [Thread-120107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:00:53.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:00:53.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:00:53.350 [DEBUG] [Thread-120109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:00:53.400 [DEBUG] [Thread-120107] [transport.py] [_log()] userauth is OK
2025-09-28T09:00:53.400 [DEBUG] [Thread-120107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:00:53.400 [DEBUG] [Thread-120107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:00:53.400 [DEBUG] [Thread-120107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:00:53.400 [DEBUG] [Thread-120107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:00:53.417 [INFO] [Thread-120107] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:00:53.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-28T09:00:53.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:00:54.363 [DEBUG] [Thread-120107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:00:54.363 [DEBUG] [Thread-120107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:00:54.411 [DEBUG] [Thread-120107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:00:54.411 [DEBUG] [Thread-120107] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:00:54.420 [DEBUG] [Thread-120107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:00:54.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:00:54.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')
2025-09-28T09:00:54.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-28T09:00:54.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:00:54.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:00:54.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:00:54.455 [DEBUG] [Thread-120107] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:00:58.401 [DEBUG] [Thread-120110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:04.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:01:04.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:01:04.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-28T09:01:05.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 0, 48), 8.77, 55.0, 0.0, 13.45, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:01:05.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:00:48
2025-09-28T09:01:05.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:01:05.349 [DEBUG] [Thread-120111] [transport.py] [_log()] starting thread (client mode): 0x2e3c34f0
2025-09-28T09:01:05.350 [DEBUG] [Thread-120111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:05.369 [DEBUG] [Thread-120111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:01:05.369 [INFO] [Thread-120111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] Compression: none
2025-09-28T09:01:05.372 [DEBUG] [Thread-120111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:05.391 [DEBUG] [Thread-120111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:05.391 [DEBUG] [Thread-120111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:05.391 [DEBUG] [Thread-120111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:01:05.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:01:05.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:05.392 [DEBUG] [Thread-120111] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:05.392 [DEBUG] [Thread-120111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:05.392 [DEBUG] [Thread-120111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:05.392 [DEBUG] [Thread-120111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:01:05.392 [DEBUG] [Thread-120111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:05.401 [INFO] [Thread-120111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:05.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:05.960 [DEBUG] [Thread-120111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:05.960 [DEBUG] [Thread-120111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:05.960 [DEBUG] [Thread-120111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:01:06.001 [DEBUG] [Thread-120111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:06.001 [DEBUG] [Thread-120111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:06.003 [DEBUG] [Thread-120111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:06.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:06.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:01:06.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:01:06.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:01:06.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:06.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:01:06.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292095 -999.00  +13.80  11.87     59   +6.00 1 1 1 1 1   888    0 8.75 20.62 ----- 7.2 11.9 229.6 14.8 20.3 -26.0 19.1 -24.0 17.5 -24.6 18.5 -26.1
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:01:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292095
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:01:06.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:00:48', tmtdew=8.77, humidity=55.0, cloud=0.0, wind=13.45, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:00:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:01:06.015 [DEBUG] [Thread-120111] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:06.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-28T09:01:06.105 [DEBUG] [Thread-120114] [transport.py] [_log()] starting thread (client mode): 0x2b94ca00
2025-09-28T09:01:06.105 [DEBUG] [Thread-120114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:06.119 [DEBUG] [Thread-120114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:01:06.119 [INFO] [Thread-120114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:06.126 [DEBUG] [Thread-120114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] Compression: none
2025-09-28T09:01:06.127 [DEBUG] [Thread-120114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:06.182 [DEBUG] [Thread-120114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:06.182 [DEBUG] [Thread-120114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:06.183 [DEBUG] [Thread-120114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:01:06.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:01:06.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:06.244 [DEBUG] [Thread-120114] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:06.244 [DEBUG] [Thread-120114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:06.244 [DEBUG] [Thread-120114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:06.244 [DEBUG] [Thread-120114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:01:06.244 [DEBUG] [Thread-120114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:06.258 [INFO] [Thread-120114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:06.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-28T09:01:06.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:07.259 [DEBUG] [Thread-120114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:07.259 [DEBUG] [Thread-120114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:07.307 [DEBUG] [Thread-120114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:07.307 [DEBUG] [Thread-120114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:07.315 [DEBUG] [Thread-120114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:07.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:07.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-28T09:01:07.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-28T09:01:07.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:07.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:07.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:07.347 [DEBUG] [Thread-120114] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:08.391 [DEBUG] [Thread-120116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:16.556 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:16.558 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:17.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:01:17.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:01:17.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-28T09:01:17.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 0, 48), 8.77, 55.0, 0.0, 13.45, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:01:17.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:00:48
2025-09-28T09:01:18.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:01:18.207 [DEBUG] [Thread-120117] [transport.py] [_log()] starting thread (client mode): 0x2e363e20
2025-09-28T09:01:18.208 [DEBUG] [Thread-120117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:18.219 [DEBUG] [Thread-120117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:01:18.219 [INFO] [Thread-120117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:18.220 [DEBUG] [Thread-120117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:18.221 [DEBUG] [Thread-120117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:18.221 [DEBUG] [Thread-120117] [transport.py] [_log()] Compression: none
2025-09-28T09:01:18.221 [DEBUG] [Thread-120117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:18.229 [DEBUG] [Thread-120117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:18.230 [DEBUG] [Thread-120117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:18.230 [DEBUG] [Thread-120117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:01:18.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:01:18.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:18.231 [DEBUG] [Thread-120117] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:18.231 [DEBUG] [Thread-120117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:18.231 [DEBUG] [Thread-120117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:18.231 [DEBUG] [Thread-120117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:01:18.232 [DEBUG] [Thread-120117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:18.258 [INFO] [Thread-120117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:18.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:19.031 [DEBUG] [Thread-120117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:19.031 [DEBUG] [Thread-120117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:19.032 [DEBUG] [Thread-120117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:01:19.072 [DEBUG] [Thread-120117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:19.072 [DEBUG] [Thread-120117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:19.075 [DEBUG] [Thread-120117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:19.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:19.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:01:19.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:01:19.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:01:19.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:19.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:01:19.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:19.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:19.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:01:19.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292095 -999.00  +13.80  11.87     59   +6.00 1 1 1 1 1   888    0 8.75 20.62 ----- 7.2 11.9 229.6 14.8 20.3 -26.0 19.1 -24.0 17.5 -24.6 18.5 -26.1
2025-09-28T09:01:19.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:01:19.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:01:19.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292095
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:01:19.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:00:48', tmtdew=8.77, humidity=55.0, cloud=0.0, wind=13.45, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:00:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:01:19.099 [DEBUG] [Thread-120117] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:19.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:01:19.193 [DEBUG] [Thread-120120] [transport.py] [_log()] starting thread (client mode): 0x2e360f70
2025-09-28T09:01:19.193 [DEBUG] [Thread-120120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:19.208 [DEBUG] [Thread-120120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:01:19.208 [INFO] [Thread-120120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:01:19.215 [DEBUG] [Thread-120120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:19.215 [DEBUG] [Thread-120120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:01:19.215 [DEBUG] [Thread-120120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:19.215 [DEBUG] [Thread-120120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:19.216 [DEBUG] [Thread-120120] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] Compression: none
2025-09-28T09:01:19.217 [DEBUG] [Thread-120120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:19.275 [DEBUG] [Thread-120120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:19.275 [DEBUG] [Thread-120120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:19.276 [DEBUG] [Thread-120120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:01:19.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:01:19.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:19.331 [DEBUG] [Thread-120120] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:19.332 [DEBUG] [Thread-120120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:19.332 [DEBUG] [Thread-120120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:19.332 [DEBUG] [Thread-120120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:01:19.332 [DEBUG] [Thread-120120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:19.351 [INFO] [Thread-120120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:19.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-28T09:01:19.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:20.440 [DEBUG] [Thread-120120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:20.441 [DEBUG] [Thread-120120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:20.488 [DEBUG] [Thread-120120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:20.488 [DEBUG] [Thread-120120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:20.497 [DEBUG] [Thread-120120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:20.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:20.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-28T09:01:20.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-28T09:01:20.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:20.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:20.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:20.532 [DEBUG] [Thread-120120] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:23.429 [DEBUG] [Thread-120122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:30.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:01:30.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:01:30.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-28T09:01:31.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 1, 20), 8.8, 54.9, 0.0, 13.75, 13.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:01:31.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:01:20
2025-09-28T09:01:31.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:01:31.382 [DEBUG] [Thread-120123] [transport.py] [_log()] starting thread (client mode): 0x2e3df340
2025-09-28T09:01:31.382 [DEBUG] [Thread-120123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:31.403 [DEBUG] [Thread-120123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:01:31.403 [INFO] [Thread-120123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:01:31.404 [DEBUG] [Thread-120123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] Compression: none
2025-09-28T09:01:31.405 [DEBUG] [Thread-120123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:31.418 [DEBUG] [Thread-120123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:31.419 [DEBUG] [Thread-120123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:31.419 [DEBUG] [Thread-120123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:01:31.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:01:31.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:31.421 [DEBUG] [Thread-120123] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:31.421 [DEBUG] [Thread-120123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:31.421 [DEBUG] [Thread-120123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:31.421 [DEBUG] [Thread-120123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:01:31.421 [DEBUG] [Thread-120123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:31.440 [INFO] [Thread-120123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:31.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:32.194 [DEBUG] [Thread-120123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:32.194 [DEBUG] [Thread-120123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:32.195 [DEBUG] [Thread-120123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:01:32.235 [DEBUG] [Thread-120123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:32.235 [DEBUG] [Thread-120123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:32.238 [DEBUG] [Thread-120123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:32.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:32.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:01:32.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:01:32.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:01:32.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:32.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:01:32.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:32.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:32.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:01:32.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292095 -999.00  +13.80  11.87     59   +6.00 1 1 1 1 1   888    0 8.75 20.62 ----- 7.2 11.9 229.6 14.8 20.3 -26.0 19.1 -24.0 17.5 -24.6 18.5 -26.1
2025-09-28T09:01:32.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:01:32.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:01:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292095
2025-09-28T09:01:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:01:32.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:01:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:01:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:01:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:01:32.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:01:20', tmtdew=8.8, humidity=54.9, cloud=0.0, wind=13.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:00:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:01:32.258 [DEBUG] [Thread-120123] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:32.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-28T09:01:32.383 [DEBUG] [Thread-120126] [transport.py] [_log()] starting thread (client mode): 0x2e3c0af0
2025-09-28T09:01:32.383 [DEBUG] [Thread-120126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:32.427 [DEBUG] [Thread-120126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:01:32.428 [INFO] [Thread-120126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:01:32.461 [DEBUG] [Thread-120126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:32.461 [DEBUG] [Thread-120126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] Compression: none
2025-09-28T09:01:32.462 [DEBUG] [Thread-120126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:32.556 [DEBUG] [Thread-120126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:32.556 [DEBUG] [Thread-120126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:32.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:01:32.557 [DEBUG] [Thread-120126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:01:32.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:32.672 [DEBUG] [Thread-120126] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:32.673 [DEBUG] [Thread-120126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:32.673 [DEBUG] [Thread-120126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:32.673 [DEBUG] [Thread-120126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:01:32.673 [DEBUG] [Thread-120126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:32.723 [INFO] [Thread-120126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:32.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:01:32.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:33.701 [DEBUG] [Thread-120126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:33.701 [DEBUG] [Thread-120126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:33.782 [DEBUG] [Thread-120126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:33.782 [DEBUG] [Thread-120126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:33.824 [DEBUG] [Thread-120126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:33.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:33.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-28T09:01:33.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-28T09:01:33.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:33.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:33.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:33.983 [DEBUG] [Thread-120126] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:38.461 [DEBUG] [Thread-120128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:01:43.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:01:43.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-28T09:01:44.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 1, 20), 8.8, 54.9, 0.0, 13.75, 13.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:01:44.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:01:20
2025-09-28T09:01:44.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:01:44.821 [DEBUG] [Thread-120129] [transport.py] [_log()] starting thread (client mode): 0x2e3dc790
2025-09-28T09:01:44.821 [DEBUG] [Thread-120129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:44.838 [DEBUG] [Thread-120129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:01:44.838 [INFO] [Thread-120129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] Compression: none
2025-09-28T09:01:44.842 [DEBUG] [Thread-120129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:44.853 [DEBUG] [Thread-120129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:44.853 [DEBUG] [Thread-120129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:44.853 [DEBUG] [Thread-120129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:01:44.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:01:44.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:44.854 [DEBUG] [Thread-120129] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:44.854 [DEBUG] [Thread-120129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:44.854 [DEBUG] [Thread-120129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:44.854 [DEBUG] [Thread-120129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:01:44.854 [DEBUG] [Thread-120129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:44.870 [INFO] [Thread-120129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:44.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:45.498 [DEBUG] [Thread-120129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:45.498 [DEBUG] [Thread-120129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:45.498 [DEBUG] [Thread-120129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:01:45.539 [DEBUG] [Thread-120129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:45.539 [DEBUG] [Thread-120129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:45.541 [DEBUG] [Thread-120129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:45.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:45.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:01:45.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:01:45.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:01:45.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:45.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:01:45.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292443 -999.00  +14.00   8.65     58   +6.00 1 1 1 1 1   888    0 8.72 20.94 ----- 11.9 8.7 199.9 16.8 20.2 -27.5 19.1 -24.4 17.5 -24.9 18.4 -25.8
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292443
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:01:45.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:01:20', tmtdew=8.8, humidity=54.9, cloud=0.0, wind=13.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:01:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:01:45.561 [DEBUG] [Thread-120129] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:45.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-28T09:01:45.645 [DEBUG] [Thread-120132] [transport.py] [_log()] starting thread (client mode): 0x2e362920
2025-09-28T09:01:45.645 [DEBUG] [Thread-120132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:45.661 [DEBUG] [Thread-120132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:01:45.661 [INFO] [Thread-120132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] Compression: none
2025-09-28T09:01:45.669 [DEBUG] [Thread-120132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:45.726 [DEBUG] [Thread-120132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:45.726 [DEBUG] [Thread-120132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:45.726 [DEBUG] [Thread-120132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:01:45.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:01:45.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:45.783 [DEBUG] [Thread-120132] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:45.783 [DEBUG] [Thread-120132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:45.783 [DEBUG] [Thread-120132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:45.783 [DEBUG] [Thread-120132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:01:45.783 [DEBUG] [Thread-120132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:45.797 [INFO] [Thread-120132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:45.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-28T09:01:45.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:46.766 [DEBUG] [Thread-120132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:46.766 [DEBUG] [Thread-120132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:46.814 [DEBUG] [Thread-120132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:46.814 [DEBUG] [Thread-120132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:46.823 [DEBUG] [Thread-120132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:46.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:46.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-28T09:01:46.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-28T09:01:46.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:46.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:46.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:46.858 [DEBUG] [Thread-120132] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01:53.498 [DEBUG] [Thread-120134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:56.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:01:56.860 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:01:56.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-28T09:01:57.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 1, 52), 8.91, 54.85, 0.0, 13.99, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:01:57.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:01:52
2025-09-28T09:01:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:01:57.708 [DEBUG] [Thread-120135] [transport.py] [_log()] starting thread (client mode): 0x2b94d150
2025-09-28T09:01:57.708 [DEBUG] [Thread-120135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:57.727 [DEBUG] [Thread-120135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:01:57.727 [INFO] [Thread-120135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:01:57.731 [DEBUG] [Thread-120135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:57.731 [DEBUG] [Thread-120135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:01:57.731 [DEBUG] [Thread-120135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:57.731 [DEBUG] [Thread-120135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] Compression: none
2025-09-28T09:01:57.732 [DEBUG] [Thread-120135] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:57.742 [DEBUG] [Thread-120135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:57.742 [DEBUG] [Thread-120135] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:57.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:01:57.743 [DEBUG] [Thread-120135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:01:57.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:57.745 [DEBUG] [Thread-120135] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:57.745 [DEBUG] [Thread-120135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:57.745 [DEBUG] [Thread-120135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:57.745 [DEBUG] [Thread-120135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:01:57.745 [DEBUG] [Thread-120135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:57.763 [INFO] [Thread-120135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:57.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:58.437 [DEBUG] [Thread-120137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:01:58.466 [DEBUG] [Thread-120135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:58.466 [DEBUG] [Thread-120135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:58.467 [DEBUG] [Thread-120135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:01:58.507 [DEBUG] [Thread-120135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:58.507 [DEBUG] [Thread-120135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:58.510 [DEBUG] [Thread-120135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:58.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01:58.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:01:58.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:01:58.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:01:58.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:58.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:01:58.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:58.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:58.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:01:58.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292443 -999.00  +14.00   8.65     58   +6.00 1 1 1 1 1   888    0 8.72 20.94 ----- 11.9 8.7 199.9 16.8 20.2 -27.5 19.1 -24.4 17.5 -24.9 18.4 -25.8
2025-09-28T09:01:58.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:01:58.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:01:58.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292443
2025-09-28T09:01:58.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:01:58.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:01:58.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:01:58.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:01:58.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:01:58.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:01:52', tmtdew=8.91, humidity=54.85, cloud=0.0, wind=13.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:01:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:01:58.536 [DEBUG] [Thread-120135] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:01: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-28T09:01:58.632 [DEBUG] [Thread-120139] [transport.py] [_log()] starting thread (client mode): 0x2e361de0
2025-09-28T09:01:58.633 [DEBUG] [Thread-120139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:01:58.648 [DEBUG] [Thread-120139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:01:58.648 [INFO] [Thread-120139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:01:58.655 [DEBUG] [Thread-120139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] client lang: <none>
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] server lang: <none>
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] kex follows: False
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] Compression: none
2025-09-28T09:01:58.656 [DEBUG] [Thread-120139] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:01:58.713 [DEBUG] [Thread-120139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:01:58.713 [DEBUG] [Thread-120139] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:01:58.714 [DEBUG] [Thread-120139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:01:58.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:01:58.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:01:58.771 [DEBUG] [Thread-120139] [transport.py] [_log()] userauth is OK
2025-09-28T09:01:58.771 [DEBUG] [Thread-120139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:01:58.771 [DEBUG] [Thread-120139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:01:58.771 [DEBUG] [Thread-120139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:01:58.771 [DEBUG] [Thread-120139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:01:58.785 [INFO] [Thread-120139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:01:58.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-28T09:01:58.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:01:59.799 [DEBUG] [Thread-120139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:01:59.799 [DEBUG] [Thread-120139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:01:59.847 [DEBUG] [Thread-120139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:01:59.847 [DEBUG] [Thread-120139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:01:59.856 [DEBUG] [Thread-120139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:01:59.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:01: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')
2025-09-28T09:01:59.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') -> 00000000
2025-09-28T09:01:59.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:01:59.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:01:59.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:01:59.891 [DEBUG] [Thread-120139] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:08.536 [DEBUG] [Thread-120141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:02:09.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:02:09.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-28T09:02:10.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 1, 52), 8.91, 54.85, 0.0, 13.99, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:02:10.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:01:52
2025-09-28T09:02:10.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:02:10.751 [DEBUG] [Thread-120142] [transport.py] [_log()] starting thread (client mode): 0x2e38e6e0
2025-09-28T09:02:10.752 [DEBUG] [Thread-120142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:10.772 [DEBUG] [Thread-120142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:02:10.772 [INFO] [Thread-120142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:10.775 [DEBUG] [Thread-120142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:10.776 [DEBUG] [Thread-120142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:10.776 [DEBUG] [Thread-120142] [transport.py] [_log()] Compression: none
2025-09-28T09:02:10.776 [DEBUG] [Thread-120142] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:10.794 [DEBUG] [Thread-120142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:10.794 [DEBUG] [Thread-120142] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:10.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:02:10.795 [DEBUG] [Thread-120142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:02:10.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:10.797 [DEBUG] [Thread-120142] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:10.797 [DEBUG] [Thread-120142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:10.797 [DEBUG] [Thread-120142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:10.797 [DEBUG] [Thread-120142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:02:10.797 [DEBUG] [Thread-120142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:10.820 [INFO] [Thread-120142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:10.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:11.552 [DEBUG] [Thread-120142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:11.552 [DEBUG] [Thread-120142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:11.552 [DEBUG] [Thread-120142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:02:11.592 [DEBUG] [Thread-120142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:11.592 [DEBUG] [Thread-120142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:11.595 [DEBUG] [Thread-120142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:11.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:11.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:02:11.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:02:11.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:02:11.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:11.617 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:02:11.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:11.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:11.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:02:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.292443 -999.00  +14.00   8.65     58   +6.00 1 1 1 1 1   888    0 8.72 20.94 ----- 11.9 8.7 199.9 16.8 20.2 -27.5 19.1 -24.4 17.5 -24.9 18.4 -25.8
2025-09-28T09:02:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:02:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:02:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.292443
2025-09-28T09:02:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:02:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:02:11.619 [DEBUG] [Thread-120142] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:02:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:02:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:02:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:01:52', tmtdew=8.91, humidity=54.85, cloud=0.0, wind=13.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:01:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:02:11.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-28T09:02:11.746 [DEBUG] [Thread-120145] [transport.py] [_log()] starting thread (client mode): 0x2e3dc880
2025-09-28T09:02:11.746 [DEBUG] [Thread-120145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:11.789 [DEBUG] [Thread-120145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:02:11.790 [INFO] [Thread-120145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:02:11.826 [DEBUG] [Thread-120145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:11.827 [DEBUG] [Thread-120145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:11.828 [DEBUG] [Thread-120145] [transport.py] [_log()] Compression: none
2025-09-28T09:02:11.828 [DEBUG] [Thread-120145] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:11.914 [DEBUG] [Thread-120145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:11.914 [DEBUG] [Thread-120145] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:11.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:02:11.915 [DEBUG] [Thread-120145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:02:11.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:12.030 [DEBUG] [Thread-120145] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:12.031 [DEBUG] [Thread-120145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:12.031 [DEBUG] [Thread-120145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:12.031 [DEBUG] [Thread-120145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:02:12.031 [DEBUG] [Thread-120145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:12.079 [INFO] [Thread-120145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:12.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:02:12.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:13.038 [DEBUG] [Thread-120145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:13.039 [DEBUG] [Thread-120145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:13.116 [DEBUG] [Thread-120145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:13.116 [DEBUG] [Thread-120145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:13.154 [DEBUG] [Thread-120145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:13.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:13.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-28T09:02:13.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-28T09:02:13.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:13.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:13.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:13.308 [DEBUG] [Thread-120145] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:16.706 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:16.707 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:23.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:02:23.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:02:23.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:02:23.577 [DEBUG] [Thread-120147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 1, 52), 8.91, 54.85, 0.0, 13.99, 13.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:02:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:01:52
2025-09-28T09:02:24.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:02:24.162 [DEBUG] [Thread-120148] [transport.py] [_log()] starting thread (client mode): 0x2e3de320
2025-09-28T09:02:24.162 [DEBUG] [Thread-120148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:24.190 [DEBUG] [Thread-120148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:02:24.190 [INFO] [Thread-120148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:24.193 [DEBUG] [Thread-120148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:24.194 [DEBUG] [Thread-120148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:24.194 [DEBUG] [Thread-120148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:24.194 [DEBUG] [Thread-120148] [transport.py] [_log()] Compression: none
2025-09-28T09:02:24.194 [DEBUG] [Thread-120148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:24.208 [DEBUG] [Thread-120148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:24.208 [DEBUG] [Thread-120148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:24.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:02:24.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:02:24.209 [DEBUG] [Thread-120148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:24.225 [INFO] [Thread-120148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:24.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:24.804 [DEBUG] [Thread-120148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:24.804 [DEBUG] [Thread-120148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:24.804 [DEBUG] [Thread-120148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:02:24.845 [DEBUG] [Thread-120148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:24.845 [DEBUG] [Thread-120148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:24.847 [DEBUG] [Thread-120148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:24.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:24.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:02:24.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:02:24.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:02:24.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:24.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:02:24.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293137 -999.00  +14.00  10.82     57   +5.70 1 1 1 1 1   888    0 8.80 22.36 ----- 6.6 10.8 221.0 16.6 20.2 -26.1 19.0 -24.3 17.5 -25.1 18.5 -26.7
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293137
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:02:24.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:01:52', tmtdew=8.91, humidity=54.85, cloud=0.0, wind=13.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:02:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:02:24.866 [DEBUG] [Thread-120148] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:24.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-28T09:02:24.980 [DEBUG] [Thread-120151] [transport.py] [_log()] starting thread (client mode): 0x2e38fa60
2025-09-28T09:02:24.981 [DEBUG] [Thread-120151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:25.029 [DEBUG] [Thread-120151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:02:25.029 [INFO] [Thread-120151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] Compression: none
2025-09-28T09:02:25.072 [DEBUG] [Thread-120151] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:25.159 [DEBUG] [Thread-120151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:25.160 [DEBUG] [Thread-120151] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:25.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:02:25.160 [DEBUG] [Thread-120151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:02:25.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:25.288 [DEBUG] [Thread-120151] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:25.288 [DEBUG] [Thread-120151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:25.288 [DEBUG] [Thread-120151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:25.288 [DEBUG] [Thread-120151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:02:25.288 [DEBUG] [Thread-120151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:25.339 [INFO] [Thread-120151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:25.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-28T09:02:25.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:26.342 [DEBUG] [Thread-120151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:26.343 [DEBUG] [Thread-120151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:26.428 [DEBUG] [Thread-120151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:26.428 [DEBUG] [Thread-120151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:26.471 [DEBUG] [Thread-120151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:26.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:26.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-28T09:02:26.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-28T09:02:26.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:26.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:26.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:26.646 [DEBUG] [Thread-120151] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:36.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:02:36.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:02:36.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-28T09:02:37.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 2, 24), 8.98, 54.64, 0.0, 16.16, 13.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:02:37.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:02:24
2025-09-28T09:02:37.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:02:37.446 [DEBUG] [Thread-120153] [transport.py] [_log()] starting thread (client mode): 0x2e3c17b0
2025-09-28T09:02:37.446 [DEBUG] [Thread-120153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:37.465 [DEBUG] [Thread-120153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:02:37.465 [INFO] [Thread-120153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:02:37.468 [DEBUG] [Thread-120153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:37.469 [DEBUG] [Thread-120153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] Compression: none
2025-09-28T09:02:37.470 [DEBUG] [Thread-120153] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:37.479 [DEBUG] [Thread-120153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:37.480 [DEBUG] [Thread-120153] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:37.480 [DEBUG] [Thread-120153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:02:37.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:02:37.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:37.484 [DEBUG] [Thread-120153] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:37.484 [DEBUG] [Thread-120153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:37.484 [DEBUG] [Thread-120153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:37.485 [DEBUG] [Thread-120153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:02:37.485 [DEBUG] [Thread-120153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:37.520 [INFO] [Thread-120153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:37.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:38.134 [DEBUG] [Thread-120153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:38.134 [DEBUG] [Thread-120153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:38.134 [DEBUG] [Thread-120153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:02:38.175 [DEBUG] [Thread-120153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:38.176 [DEBUG] [Thread-120153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:38.179 [DEBUG] [Thread-120153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:38.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:38.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:02:38.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:02:38.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:02:38.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:38.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:02:38.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293137 -999.00  +14.00  10.82     57   +5.70 1 1 1 1 1   888    0 8.80 22.36 ----- 6.6 10.8 221.0 16.6 20.2 -26.1 19.0 -24.3 17.5 -25.1 18.5 -26.7
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:02:38.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293137
2025-09-28T09:02:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:02:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:02:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:02:38.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:02:38.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:02:38.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:02:24', tmtdew=8.98, humidity=54.64, cloud=0.0, wind=16.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:02:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:02:38.206 [DEBUG] [Thread-120153] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:38.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-28T09:02:38.302 [DEBUG] [Thread-120156] [transport.py] [_log()] starting thread (client mode): 0x30dddd50
2025-09-28T09:02:38.302 [DEBUG] [Thread-120156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:38.317 [DEBUG] [Thread-120156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:02:38.317 [INFO] [Thread-120156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:38.325 [DEBUG] [Thread-120156] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] Compression: none
2025-09-28T09:02:38.326 [DEBUG] [Thread-120156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:38.429 [DEBUG] [Thread-120156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:38.429 [DEBUG] [Thread-120156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:38.429 [DEBUG] [Thread-120156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:02:38.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:02:38.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:38.533 [DEBUG] [Thread-120156] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:38.533 [DEBUG] [Thread-120156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:38.533 [DEBUG] [Thread-120156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:38.533 [DEBUG] [Thread-120156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:02:38.533 [DEBUG] [Thread-120156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:38.576 [INFO] [Thread-120156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:38.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-28T09:02:38.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:38.603 [DEBUG] [Thread-120158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:39.578 [DEBUG] [Thread-120156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:39.578 [DEBUG] [Thread-120156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:39.649 [DEBUG] [Thread-120156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:39.649 [DEBUG] [Thread-120156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:39.680 [DEBUG] [Thread-120156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:39.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:39.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-28T09:02:39.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-28T09:02:39.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:39.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:39.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:39.780 [DEBUG] [Thread-120156] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:49.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:02:49.782 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:02:49.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-28T09:02:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 2, 24), 8.98, 54.64, 0.0, 16.16, 13.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:02:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:02:24
2025-09-28T09:02:50.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:02:50.641 [DEBUG] [Thread-120159] [transport.py] [_log()] starting thread (client mode): 0x2e3c2920
2025-09-28T09:02:50.641 [DEBUG] [Thread-120159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:50.661 [DEBUG] [Thread-120159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:02:50.661 [INFO] [Thread-120159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:02:50.662 [DEBUG] [Thread-120159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] Compression: none
2025-09-28T09:02:50.663 [DEBUG] [Thread-120159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:50.678 [DEBUG] [Thread-120159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:50.679 [DEBUG] [Thread-120159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:50.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:02:50.680 [DEBUG] [Thread-120159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:02:50.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:50.682 [DEBUG] [Thread-120159] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:50.682 [DEBUG] [Thread-120159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:50.682 [DEBUG] [Thread-120159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:50.682 [DEBUG] [Thread-120159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:02:50.682 [DEBUG] [Thread-120159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:50.718 [INFO] [Thread-120159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:50.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:51.353 [DEBUG] [Thread-120159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:51.353 [DEBUG] [Thread-120159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:51.354 [DEBUG] [Thread-120159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:02:51.394 [DEBUG] [Thread-120159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:51.394 [DEBUG] [Thread-120159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:51.397 [DEBUG] [Thread-120159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:51.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:51.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:02:51.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:02:51.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:02:51.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:51.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:02:51.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:51.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:51.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:02:51.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293484 -999.00  +13.80   7.76     57   +5.60 1 1 1 1 1   888    0 8.70 22.82 ----- 7.8 7.8 249.2 11.1 20.2 -25.9 19.1 -23.9 17.6 -24.1 18.5 -26.2
2025-09-28T09:02:51.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:02:51.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:02:51.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293484
2025-09-28T09:02:51.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:02:51.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:02:51.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:02:51.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:02:51.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:02:51.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:02:24', tmtdew=8.98, humidity=54.64, cloud=0.0, wind=16.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:02:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:02:51.424 [DEBUG] [Thread-120159] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:51.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-28T09:02:51.524 [DEBUG] [Thread-120162] [transport.py] [_log()] starting thread (client mode): 0x30ddfca0
2025-09-28T09:02:51.524 [DEBUG] [Thread-120162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:02:51.557 [DEBUG] [Thread-120162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:02:51.557 [INFO] [Thread-120162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:02:51.594 [DEBUG] [Thread-120162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:02:51.595 [DEBUG] [Thread-120162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] client lang: <none>
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] server lang: <none>
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] kex follows: False
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:02:51.596 [DEBUG] [Thread-120162] [transport.py] [_log()] Compression: none
2025-09-28T09:02:51.597 [DEBUG] [Thread-120162] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:02:51.672 [DEBUG] [Thread-120162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:02:51.672 [DEBUG] [Thread-120162] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:02:51.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:02:51.673 [DEBUG] [Thread-120162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:02:51.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:02:51.785 [DEBUG] [Thread-120162] [transport.py] [_log()] userauth is OK
2025-09-28T09:02:51.785 [DEBUG] [Thread-120162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:02:51.785 [DEBUG] [Thread-120162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:02:51.786 [DEBUG] [Thread-120162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:02:51.786 [DEBUG] [Thread-120162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:02:51.836 [INFO] [Thread-120162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:02:51.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-28T09:02:51.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:02:52.813 [DEBUG] [Thread-120162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:02:52.813 [DEBUG] [Thread-120162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:02:52.889 [DEBUG] [Thread-120162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:02:52.890 [DEBUG] [Thread-120162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:02:52.928 [DEBUG] [Thread-120162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:02:52.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:02:52.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-28T09:02:53.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') -> 00000000
2025-09-28T09:02:53.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:02:53.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:02:53.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:02:53.080 [DEBUG] [Thread-120162] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:02:53.647 [DEBUG] [Thread-120164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:02:58.487 [DEBUG] [Thread-120165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:03.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:03:03.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:03:03.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-28T09:03:03.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 2, 56), 9.06, 54.37, 0.0, 11.28, 13.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:03:03.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:02:56
2025-09-28T09:03:03.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:03:03.892 [DEBUG] [Thread-120166] [transport.py] [_log()] starting thread (client mode): 0x2e360f70
2025-09-28T09:03:03.892 [DEBUG] [Thread-120166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:03.911 [DEBUG] [Thread-120166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:03:03.912 [INFO] [Thread-120166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:03.913 [DEBUG] [Thread-120166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] Compression: none
2025-09-28T09:03:03.914 [DEBUG] [Thread-120166] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:03.926 [DEBUG] [Thread-120166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:03.926 [DEBUG] [Thread-120166] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:03.926 [DEBUG] [Thread-120166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:03:03.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:03:03.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:03.928 [DEBUG] [Thread-120166] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:03.928 [DEBUG] [Thread-120166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:03.928 [DEBUG] [Thread-120166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:03.928 [DEBUG] [Thread-120166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:03:03.929 [DEBUG] [Thread-120166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:03.950 [INFO] [Thread-120166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:03.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:04.562 [DEBUG] [Thread-120166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:04.562 [DEBUG] [Thread-120166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:04.563 [DEBUG] [Thread-120166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:03:04.604 [DEBUG] [Thread-120166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:04.604 [DEBUG] [Thread-120166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:04.607 [DEBUG] [Thread-120166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:04.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:04.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:03:04.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:03:04.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:03:04.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:04.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:03:04.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:04.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293484 -999.00  +13.80   7.76     57   +5.60 1 1 1 1 1   888    0 8.70 22.82 ----- 7.8 7.8 249.2 11.1 20.2 -25.9 19.1 -23.9 17.6 -24.1 18.5 -26.2
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293484
2025-09-28T09:03:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:03:04.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:03:04.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:03:04.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:03:04.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:03:04.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:02:56', tmtdew=9.06, humidity=54.37, cloud=0.0, wind=11.28, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:02:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:03:04.634 [DEBUG] [Thread-120166] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:04.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:03:04.746 [DEBUG] [Thread-120169] [transport.py] [_log()] starting thread (client mode): 0x2e38d480
2025-09-28T09:03:04.747 [DEBUG] [Thread-120169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:04.763 [DEBUG] [Thread-120169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:03:04.763 [INFO] [Thread-120169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:04.773 [DEBUG] [Thread-120169] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] Compression: none
2025-09-28T09:03:04.774 [DEBUG] [Thread-120169] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:04.832 [DEBUG] [Thread-120169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:04.833 [DEBUG] [Thread-120169] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:04.833 [DEBUG] [Thread-120169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:03:04.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:03:04.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:04.897 [DEBUG] [Thread-120169] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:04.897 [DEBUG] [Thread-120169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:04.897 [DEBUG] [Thread-120169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:04.897 [DEBUG] [Thread-120169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:03:04.897 [DEBUG] [Thread-120169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:04.932 [INFO] [Thread-120169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:04.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-28T09:03:04.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:05.885 [DEBUG] [Thread-120169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:05.885 [DEBUG] [Thread-120169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:05.954 [DEBUG] [Thread-120169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:05.954 [DEBUG] [Thread-120169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:05.992 [DEBUG] [Thread-120169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:06.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:06.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-28T09:03:06.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-28T09:03:06.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:06.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:06.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:06.122 [DEBUG] [Thread-120169] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:08.687 [DEBUG] [Thread-120171 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:16.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:03:16.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:03:16.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-28T09:03:16.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 2, 56), 9.06, 54.37, 0.0, 11.28, 13.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:03:16.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:02:56
2025-09-28T09:03:16.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:03:16.855 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:16.856 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:16.941 [DEBUG] [Thread-120172] [transport.py] [_log()] starting thread (client mode): 0x2b94d360
2025-09-28T09:03:16.941 [DEBUG] [Thread-120172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:16.951 [DEBUG] [Thread-120172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:03:16.951 [INFO] [Thread-120172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:16.954 [DEBUG] [Thread-120172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] Compression: none
2025-09-28T09:03:16.955 [DEBUG] [Thread-120172] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:16.962 [DEBUG] [Thread-120172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:16.963 [DEBUG] [Thread-120172] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:16.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:03:16.963 [DEBUG] [Thread-120172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:03:16.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:16.964 [DEBUG] [Thread-120172] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:16.964 [DEBUG] [Thread-120172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:16.964 [DEBUG] [Thread-120172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:16.964 [DEBUG] [Thread-120172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:03:16.964 [DEBUG] [Thread-120172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:16.976 [INFO] [Thread-120172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:16.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:17.622 [DEBUG] [Thread-120172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:17.622 [DEBUG] [Thread-120172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:17.623 [DEBUG] [Thread-120172] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:03:17.663 [DEBUG] [Thread-120172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:17.664 [DEBUG] [Thread-120172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:17.667 [DEBUG] [Thread-120172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:17.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:17.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:03:17.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:03:17.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:03:17.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:17.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:03:17.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:17.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293484 -999.00  +13.80   7.76     57   +5.60 1 1 1 1 1   888    0 8.70 22.82 ----- 7.8 7.8 249.2 11.1 20.2 -25.9 19.1 -23.9 17.6 -24.1 18.5 -26.2
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293484
2025-09-28T09:03:17.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:03:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:03:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:03:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:03:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:03:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:02:56', tmtdew=9.06, humidity=54.37, cloud=0.0, wind=11.28, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:02:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:03:17.690 [DEBUG] [Thread-120172] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:17.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:03:17.813 [DEBUG] [Thread-120175] [transport.py] [_log()] starting thread (client mode): 0x2e3486d0
2025-09-28T09:03:17.813 [DEBUG] [Thread-120175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:17.856 [DEBUG] [Thread-120175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:03:17.857 [INFO] [Thread-120175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:17.894 [DEBUG] [Thread-120175] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] Compression: none
2025-09-28T09:03:17.895 [DEBUG] [Thread-120175] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:17.982 [DEBUG] [Thread-120175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:17.982 [DEBUG] [Thread-120175] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:17.983 [DEBUG] [Thread-120175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:03:17.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:03:17.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:18.079 [DEBUG] [Thread-120175] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:18.079 [DEBUG] [Thread-120175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:18.079 [DEBUG] [Thread-120175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:18.079 [DEBUG] [Thread-120175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:03:18.079 [DEBUG] [Thread-120175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:18.100 [INFO] [Thread-120175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:18.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-28T09:03:18.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:19.094 [DEBUG] [Thread-120175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:19.095 [DEBUG] [Thread-120175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:19.173 [DEBUG] [Thread-120175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:19.173 [DEBUG] [Thread-120175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:19.212 [DEBUG] [Thread-120175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:19.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:19.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:03:19.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') -> 00000000
2025-09-28T09:03:19.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:19.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:19.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:19.353 [DEBUG] [Thread-120175] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:23.741 [DEBUG] [Thread-120177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:29.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:03:29.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:03:29.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-28T09:03:29.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 2, 56), 9.06, 54.37, 0.0, 11.28, 13.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:03:29.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:02:56
2025-09-28T09:03:30.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:03:30.212 [DEBUG] [Thread-120178] [transport.py] [_log()] starting thread (client mode): 0x2e38e410
2025-09-28T09:03:30.212 [DEBUG] [Thread-120178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:30.229 [DEBUG] [Thread-120178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:03:30.229 [INFO] [Thread-120178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:03:30.230 [DEBUG] [Thread-120178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:30.230 [DEBUG] [Thread-120178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] Compression: none
2025-09-28T09:03:30.231 [DEBUG] [Thread-120178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:30.239 [DEBUG] [Thread-120178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:30.239 [DEBUG] [Thread-120178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:30.240 [DEBUG] [Thread-120178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:03:30.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:03:30.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:30.241 [DEBUG] [Thread-120178] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:30.241 [DEBUG] [Thread-120178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:30.241 [DEBUG] [Thread-120178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:30.241 [DEBUG] [Thread-120178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:03:30.241 [DEBUG] [Thread-120178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:30.256 [INFO] [Thread-120178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:30.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:30.890 [DEBUG] [Thread-120178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:30.890 [DEBUG] [Thread-120178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:30.891 [DEBUG] [Thread-120178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:03:30.931 [DEBUG] [Thread-120178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:30.931 [DEBUG] [Thread-120178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:30.942 [DEBUG] [Thread-120178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:30.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:30.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:03:30.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:03:30.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:03:30.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:30.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:03:30.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:30.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:03:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293831 -999.00  +13.80   8.25     58   +5.90 1 1 1 1 1   888    0 8.70 22.83 ----- 14.9 8.2 245.5 15.8 20.3 -25.3 19.1 -24.1 17.6 -24.3 18.6 -25.8
2025-09-28T09:03:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:03:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:03:30.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293831
2025-09-28T09:03:30.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:03:30.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:03:30.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:03:30.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:03:30.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:03:30.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:02:56', tmtdew=9.06, humidity=54.37, cloud=0.0, wind=11.28, temperature=13.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:03:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:03:30.963 [DEBUG] [Thread-120178] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:31.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-28T09:03:31.058 [DEBUG] [Thread-120181] [transport.py] [_log()] starting thread (client mode): 0x2e38ca00
2025-09-28T09:03:31.058 [DEBUG] [Thread-120181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:31.076 [DEBUG] [Thread-120181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:03:31.076 [INFO] [Thread-120181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:03:31.083 [DEBUG] [Thread-120181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:31.084 [DEBUG] [Thread-120181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:31.085 [DEBUG] [Thread-120181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:31.085 [DEBUG] [Thread-120181] [transport.py] [_log()] Compression: none
2025-09-28T09:03:31.085 [DEBUG] [Thread-120181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:31.142 [DEBUG] [Thread-120181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:31.142 [DEBUG] [Thread-120181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:31.143 [DEBUG] [Thread-120181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:03:31.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:03:31.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:31.201 [DEBUG] [Thread-120181] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:31.201 [DEBUG] [Thread-120181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:31.201 [DEBUG] [Thread-120181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:31.201 [DEBUG] [Thread-120181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:03:31.201 [DEBUG] [Thread-120181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:31.221 [INFO] [Thread-120181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:31.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-28T09:03:31.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:32.210 [DEBUG] [Thread-120181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:32.210 [DEBUG] [Thread-120181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:32.258 [DEBUG] [Thread-120181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:32.258 [DEBUG] [Thread-120181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:32.267 [DEBUG] [Thread-120181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:32.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:32.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-28T09:03:32.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-28T09:03:32.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:32.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:32.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:32.301 [DEBUG] [Thread-120181] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:38.765 [DEBUG] [Thread-120183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:42.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:03:42.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:03:42.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-28T09:03:42.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 3, 27), 9.15, 54.04, 0.0, 11.5, 13.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:03:42.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:03:27
2025-09-28T09:03:43.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:03:43.164 [DEBUG] [Thread-120184] [transport.py] [_log()] starting thread (client mode): 0x2b9cf640
2025-09-28T09:03:43.164 [DEBUG] [Thread-120184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:43.183 [DEBUG] [Thread-120184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:03:43.183 [INFO] [Thread-120184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:43.186 [DEBUG] [Thread-120184] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] Compression: none
2025-09-28T09:03:43.187 [DEBUG] [Thread-120184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:43.204 [DEBUG] [Thread-120184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:43.204 [DEBUG] [Thread-120184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:43.205 [DEBUG] [Thread-120184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:03:43.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:03:43.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:43.207 [DEBUG] [Thread-120184] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:43.207 [DEBUG] [Thread-120184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:43.207 [DEBUG] [Thread-120184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:43.207 [DEBUG] [Thread-120184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:03:43.207 [DEBUG] [Thread-120184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:43.232 [INFO] [Thread-120184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:43.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:43.881 [DEBUG] [Thread-120184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:43.881 [DEBUG] [Thread-120184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:43.881 [DEBUG] [Thread-120184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:03:43.921 [DEBUG] [Thread-120184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:43.921 [DEBUG] [Thread-120184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:43.924 [DEBUG] [Thread-120184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:43.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:43.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:03:43.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:03:43.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:03:43.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:43.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:03:43.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:43.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.293831 -999.00  +13.80   8.25     58   +5.90 1 1 1 1 1   888    0 8.70 22.83 ----- 14.9 8.2 245.5 15.8 20.3 -25.3 19.1 -24.1 17.6 -24.3 18.6 -25.8
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.293831
2025-09-28T09:03:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:03:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:03:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:03:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:03:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:03:43.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:03:27', tmtdew=9.15, humidity=54.04, cloud=0.0, wind=11.5, temperature=13.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:03:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:03:43.949 [DEBUG] [Thread-120184] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:44.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-28T09:03:44.071 [DEBUG] [Thread-120187] [transport.py] [_log()] starting thread (client mode): 0x2e3f92a0
2025-09-28T09:03:44.072 [DEBUG] [Thread-120187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:44.117 [DEBUG] [Thread-120187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:03:44.117 [INFO] [Thread-120187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:44.154 [DEBUG] [Thread-120187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] Compression: none
2025-09-28T09:03:44.155 [DEBUG] [Thread-120187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:44.243 [DEBUG] [Thread-120187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:44.244 [DEBUG] [Thread-120187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:44.244 [DEBUG] [Thread-120187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:03:44.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:03:44.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:44.361 [DEBUG] [Thread-120187] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:44.361 [DEBUG] [Thread-120187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:44.361 [DEBUG] [Thread-120187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:44.361 [DEBUG] [Thread-120187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:03:44.361 [DEBUG] [Thread-120187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:44.409 [INFO] [Thread-120187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:44.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-28T09:03:44.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:45.463 [DEBUG] [Thread-120187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:45.463 [DEBUG] [Thread-120187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:45.540 [DEBUG] [Thread-120187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:45.540 [DEBUG] [Thread-120187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:45.578 [DEBUG] [Thread-120187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:45.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:45.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-28T09:03:45.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-28T09:03:45.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:45.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:45.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:45.729 [DEBUG] [Thread-120187] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:53.801 [DEBUG] [Thread-120189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:03:55.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:03:55.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:03:55.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-28T09:03:56.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 3, 27), 9.15, 54.04, 0.0, 11.5, 13.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:03:56.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:03:27
2025-09-28T09:03:56.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:03:56.550 [DEBUG] [Thread-120190] [transport.py] [_log()] starting thread (client mode): 0x2e38d930
2025-09-28T09:03:56.550 [DEBUG] [Thread-120190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:56.562 [DEBUG] [Thread-120190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:03:56.562 [INFO] [Thread-120190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:56.563 [DEBUG] [Thread-120190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:56.564 [DEBUG] [Thread-120190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:56.564 [DEBUG] [Thread-120190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:56.564 [DEBUG] [Thread-120190] [transport.py] [_log()] Compression: none
2025-09-28T09:03:56.564 [DEBUG] [Thread-120190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:56.575 [DEBUG] [Thread-120190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:56.575 [DEBUG] [Thread-120190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:56.575 [DEBUG] [Thread-120190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:03:56.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:03:56.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:56.577 [DEBUG] [Thread-120190] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:56.577 [DEBUG] [Thread-120190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:56.577 [DEBUG] [Thread-120190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:56.577 [DEBUG] [Thread-120190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:03:56.577 [DEBUG] [Thread-120190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:56.590 [INFO] [Thread-120190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:56.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:57.160 [DEBUG] [Thread-120190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:57.160 [DEBUG] [Thread-120190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:57.160 [DEBUG] [Thread-120190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:03:57.201 [DEBUG] [Thread-120190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:57.202 [DEBUG] [Thread-120190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:57.205 [DEBUG] [Thread-120190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:57.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03:57.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:03:57.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:03:57.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:03:57.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:57.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:03:57.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:57.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:57.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:03:57.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294179 -999.00  +13.40   9.13     60   +5.80 1 1 1 1 1   888    0 8.82 20.52 ----- 7.6 9.1 258.0 17.6 20.4 -26.4 19.2 -24.9 17.6 -24.3 18.5 -26.3
2025-09-28T09:03:57.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:03:57.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:03:57.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294179
2025-09-28T09:03:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:03:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:03:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:03:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:03:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:03:57.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:03:27', tmtdew=9.15, humidity=54.04, cloud=0.0, wind=11.5, temperature=13.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:03:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:03:57.231 [DEBUG] [Thread-120190] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:57.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:03:57.323 [DEBUG] [Thread-120193] [transport.py] [_log()] starting thread (client mode): 0x2e3c03a0
2025-09-28T09:03:57.323 [DEBUG] [Thread-120193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:03:57.338 [DEBUG] [Thread-120193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:03:57.339 [INFO] [Thread-120193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:03:57.346 [DEBUG] [Thread-120193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:03:57.347 [DEBUG] [Thread-120193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] client lang: <none>
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] server lang: <none>
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] kex follows: False
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] Compression: none
2025-09-28T09:03:57.348 [DEBUG] [Thread-120193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:03:57.406 [DEBUG] [Thread-120193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:03:57.406 [DEBUG] [Thread-120193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:03:57.407 [DEBUG] [Thread-120193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:03:57.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:03:57.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:03:57.462 [DEBUG] [Thread-120193] [transport.py] [_log()] userauth is OK
2025-09-28T09:03:57.462 [DEBUG] [Thread-120193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:03:57.462 [DEBUG] [Thread-120193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:03:57.462 [DEBUG] [Thread-120193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:03:57.462 [DEBUG] [Thread-120193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:03:57.482 [INFO] [Thread-120193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:03:57.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:03:57.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:03:58.442 [DEBUG] [Thread-120193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:03:58.442 [DEBUG] [Thread-120193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:03:58.493 [DEBUG] [Thread-120193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:03:58.494 [DEBUG] [Thread-120193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:03:58.503 [DEBUG] [Thread-120193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:03:58.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:03: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-28T09:03:58.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-28T09:03:58.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:03:58.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:03:58.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:03:58.538 [DEBUG] [Thread-120193] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:03:58.542 [DEBUG] [Thread-120195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:08.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:04:08.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:04:08.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-28T09:04:08.845 [DEBUG] [Thread-120196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:09.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 3, 59), 9.05, 54.02, 0.0, 11.38, 13.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:04:09.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:03:59
2025-09-28T09:04:09.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:04:09.400 [DEBUG] [Thread-120197] [transport.py] [_log()] starting thread (client mode): 0x2e3c3df0
2025-09-28T09:04:09.400 [DEBUG] [Thread-120197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:09.421 [DEBUG] [Thread-120197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:04:09.421 [INFO] [Thread-120197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] Compression: none
2025-09-28T09:04:09.424 [DEBUG] [Thread-120197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:09.443 [DEBUG] [Thread-120197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:09.443 [DEBUG] [Thread-120197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:09.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:04:09.444 [DEBUG] [Thread-120197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:04:09.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:09.446 [DEBUG] [Thread-120197] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:09.446 [DEBUG] [Thread-120197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:09.447 [DEBUG] [Thread-120197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:09.447 [DEBUG] [Thread-120197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:04:09.447 [DEBUG] [Thread-120197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:09.470 [INFO] [Thread-120197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:09.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:10.123 [DEBUG] [Thread-120197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:10.123 [DEBUG] [Thread-120197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:10.123 [DEBUG] [Thread-120197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:04:10.164 [DEBUG] [Thread-120197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:10.165 [DEBUG] [Thread-120197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:10.167 [DEBUG] [Thread-120197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:10.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:10.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:04:10.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:04:10.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:04:10.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:10.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:04:10.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:10.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294179 -999.00  +13.40   9.13     60   +5.80 1 1 1 1 1   888    0 8.82 20.52 ----- 7.6 9.1 258.0 17.6 20.4 -26.4 19.2 -24.9 17.6 -24.3 18.5 -26.3
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294179
2025-09-28T09:04:10.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:04:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:04:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:04:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:04:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:04:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:03:59', tmtdew=9.05, humidity=54.02, cloud=0.0, wind=11.38, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:03:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:04:10.191 [DEBUG] [Thread-120197] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:10.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-28T09:04:10.286 [DEBUG] [Thread-120200] [transport.py] [_log()] starting thread (client mode): 0x2e349990
2025-09-28T09:04:10.286 [DEBUG] [Thread-120200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:10.301 [DEBUG] [Thread-120200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:04:10.301 [INFO] [Thread-120200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:10.309 [DEBUG] [Thread-120200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:10.310 [DEBUG] [Thread-120200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:10.310 [DEBUG] [Thread-120200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:10.310 [DEBUG] [Thread-120200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:10.310 [DEBUG] [Thread-120200] [transport.py] [_log()] Compression: none
2025-09-28T09:04:10.310 [DEBUG] [Thread-120200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:10.367 [DEBUG] [Thread-120200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:10.367 [DEBUG] [Thread-120200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:10.367 [DEBUG] [Thread-120200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:04:10.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:04:10.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:10.423 [DEBUG] [Thread-120200] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:10.423 [DEBUG] [Thread-120200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:10.424 [DEBUG] [Thread-120200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:10.424 [DEBUG] [Thread-120200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:04:10.424 [DEBUG] [Thread-120200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:10.443 [INFO] [Thread-120200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:10.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:04:10.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:11.428 [DEBUG] [Thread-120200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:11.428 [DEBUG] [Thread-120200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:11.475 [DEBUG] [Thread-120200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:11.475 [DEBUG] [Thread-120200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:11.484 [DEBUG] [Thread-120200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:11.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:11.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')
2025-09-28T09:04:11.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') -> 00000000
2025-09-28T09:04:11.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:11.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:11.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:11.519 [DEBUG] [Thread-120200] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:16.997 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:16.998 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:04:21.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:04:21.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:04:22.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 3, 59), 9.05, 54.02, 0.0, 11.38, 13.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:04:22.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:03:59
2025-09-28T09:04:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:04:22.381 [DEBUG] [Thread-120202] [transport.py] [_log()] starting thread (client mode): 0x2e34b430
2025-09-28T09:04:22.381 [DEBUG] [Thread-120202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:22.401 [DEBUG] [Thread-120202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:04:22.401 [INFO] [Thread-120202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:04:22.404 [DEBUG] [Thread-120202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:22.404 [DEBUG] [Thread-120202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:04:22.404 [DEBUG] [Thread-120202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:22.404 [DEBUG] [Thread-120202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] Compression: none
2025-09-28T09:04:22.405 [DEBUG] [Thread-120202] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:22.413 [DEBUG] [Thread-120202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:22.413 [DEBUG] [Thread-120202] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:22.414 [DEBUG] [Thread-120202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:04:22.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:04:22.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:22.415 [DEBUG] [Thread-120202] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:22.415 [DEBUG] [Thread-120202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:22.416 [DEBUG] [Thread-120202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:22.416 [DEBUG] [Thread-120202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:04:22.416 [DEBUG] [Thread-120202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:22.440 [INFO] [Thread-120202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:22.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:23.087 [DEBUG] [Thread-120202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:23.087 [DEBUG] [Thread-120202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:23.088 [DEBUG] [Thread-120202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:04:23.128 [DEBUG] [Thread-120202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:23.128 [DEBUG] [Thread-120202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:23.131 [DEBUG] [Thread-120202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:23.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:23.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:04:23.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:04:23.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:04:23.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:23.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:04:23.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:23.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:23.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:04:23.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294179 -999.00  +13.40   9.13     60   +5.80 1 1 1 1 1   888    0 8.82 20.52 ----- 7.6 9.1 258.0 17.6 20.4 -26.4 19.2 -24.9 17.6 -24.3 18.5 -26.3
2025-09-28T09:04:23.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:04:23.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:04:23.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294179
2025-09-28T09:04:23.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:04:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:04:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:04:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:04:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:04:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:03:59', tmtdew=9.05, humidity=54.02, cloud=0.0, wind=11.38, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:03:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:04:23.156 [DEBUG] [Thread-120202] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:23.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-28T09:04:23.264 [DEBUG] [Thread-120205] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb80
2025-09-28T09:04:23.265 [DEBUG] [Thread-120205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:23.307 [DEBUG] [Thread-120205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:04:23.308 [INFO] [Thread-120205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:04:23.341 [DEBUG] [Thread-120205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:23.342 [DEBUG] [Thread-120205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:23.343 [DEBUG] [Thread-120205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] Compression: none
2025-09-28T09:04:23.344 [DEBUG] [Thread-120205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:23.417 [DEBUG] [Thread-120205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:23.417 [DEBUG] [Thread-120205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:23.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:04:23.418 [DEBUG] [Thread-120205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:04:23.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:23.526 [DEBUG] [Thread-120205] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:23.526 [DEBUG] [Thread-120205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:23.526 [DEBUG] [Thread-120205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:23.526 [DEBUG] [Thread-120205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:04:23.526 [DEBUG] [Thread-120205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:23.569 [INFO] [Thread-120205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:23.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:04:23.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:23.882 [DEBUG] [Thread-120207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:24.505 [DEBUG] [Thread-120205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:24.505 [DEBUG] [Thread-120205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:24.554 [DEBUG] [Thread-120205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:24.554 [DEBUG] [Thread-120205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:24.563 [DEBUG] [Thread-120205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:24.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:24.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-28T09:04:24.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-28T09:04:24.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:24.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:24.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:24.612 [DEBUG] [Thread-120205] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:34.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:04:34.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:04:34.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-28T09:04:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 4, 31), 8.95, 54.36, 0.0, 12.02, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:04:35.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:04:31
2025-09-28T09:04:35.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:04:35.469 [DEBUG] [Thread-120208] [transport.py] [_log()] starting thread (client mode): 0x2e3f82b0
2025-09-28T09:04:35.469 [DEBUG] [Thread-120208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:35.488 [DEBUG] [Thread-120208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:04:35.488 [INFO] [Thread-120208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] Compression: none
2025-09-28T09:04:35.490 [DEBUG] [Thread-120208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:04:35.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:04:35.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:35.499 [DEBUG] [Thread-120208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:35.500 [DEBUG] [Thread-120208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:04:35.500 [DEBUG] [Thread-120208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:35.508 [INFO] [Thread-120208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:35.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:36.155 [DEBUG] [Thread-120208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:36.155 [DEBUG] [Thread-120208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:36.155 [DEBUG] [Thread-120208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:04:36.196 [DEBUG] [Thread-120208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:36.196 [DEBUG] [Thread-120208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:36.199 [DEBUG] [Thread-120208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:36.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:36.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:04:36.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:04:36.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:04:36.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:36.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:04:36.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:36.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:36.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:04:36.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294526 -999.00  +13.70   8.14     60   +6.20 1 1 1 1 1   888    0 8.62 18.39 ----- 9.5 8.1 216.3 11.3 20.5 -26.0 19.3 -24.2 17.6 -24.5 18.6 -25.0
2025-09-28T09:04:36.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:04:36.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:04:36.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294526
2025-09-28T09:04:36.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:04:36.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:04:36.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:04:36.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:04:36.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:04:36.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:04:31', tmtdew=8.95, humidity=54.36, cloud=0.0, wind=12.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:04:36.225 [DEBUG] [Thread-120208] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:36.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:04:36.319 [DEBUG] [Thread-120211] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8c0
2025-09-28T09:04:36.319 [DEBUG] [Thread-120211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:36.334 [DEBUG] [Thread-120211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:04:36.334 [INFO] [Thread-120211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:04:36.341 [DEBUG] [Thread-120211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:36.341 [DEBUG] [Thread-120211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] Compression: none
2025-09-28T09:04:36.342 [DEBUG] [Thread-120211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:36.400 [DEBUG] [Thread-120211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:36.401 [DEBUG] [Thread-120211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:36.401 [DEBUG] [Thread-120211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:04:36.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:04:36.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:36.457 [DEBUG] [Thread-120211] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:36.458 [DEBUG] [Thread-120211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:36.458 [DEBUG] [Thread-120211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:36.458 [DEBUG] [Thread-120211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:04:36.458 [DEBUG] [Thread-120211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:36.477 [INFO] [Thread-120211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:36.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-28T09:04:36.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:37.474 [DEBUG] [Thread-120211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:37.474 [DEBUG] [Thread-120211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:37.522 [DEBUG] [Thread-120211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:37.522 [DEBUG] [Thread-120211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:37.531 [DEBUG] [Thread-120211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:37.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:37.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-28T09:04:37.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-28T09:04:37.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:37.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:37.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:37.564 [DEBUG] [Thread-120211] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:38.935 [DEBUG] [Thread-120213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:47.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:04:47.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:04:47.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-28T09:04:48.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 4, 31), 8.95, 54.36, 0.0, 12.02, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:04:48.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:04:31
2025-09-28T09:04:48.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:04:48.419 [DEBUG] [Thread-120214] [transport.py] [_log()] starting thread (client mode): 0x2e3fb880
2025-09-28T09:04:48.419 [DEBUG] [Thread-120214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:48.438 [DEBUG] [Thread-120214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:04:48.439 [INFO] [Thread-120214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:04:48.442 [DEBUG] [Thread-120214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:48.442 [DEBUG] [Thread-120214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:04:48.442 [DEBUG] [Thread-120214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:48.442 [DEBUG] [Thread-120214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:48.442 [DEBUG] [Thread-120214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] Compression: none
2025-09-28T09:04:48.443 [DEBUG] [Thread-120214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:48.462 [DEBUG] [Thread-120214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:48.462 [DEBUG] [Thread-120214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:48.463 [DEBUG] [Thread-120214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:04:48.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:04:48.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:48.465 [DEBUG] [Thread-120214] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:48.465 [DEBUG] [Thread-120214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:48.465 [DEBUG] [Thread-120214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:48.465 [DEBUG] [Thread-120214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:04:48.465 [DEBUG] [Thread-120214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:48.490 [INFO] [Thread-120214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:48.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:49.170 [DEBUG] [Thread-120214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:49.171 [DEBUG] [Thread-120214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:49.171 [DEBUG] [Thread-120214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:04:49.211 [DEBUG] [Thread-120214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:49.211 [DEBUG] [Thread-120214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:49.214 [DEBUG] [Thread-120214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:49.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:49.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:04:49.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:04:49.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:04:49.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:49.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:04:49.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:49.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294526 -999.00  +13.70   8.14     60   +6.20 1 1 1 1 1   888    0 8.62 18.39 ----- 9.5 8.1 216.3 11.3 20.5 -26.0 19.3 -24.2 17.6 -24.5 18.6 -25.0
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294526
2025-09-28T09:04:49.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:04:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:04:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:04:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:04:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:04:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:04:31', tmtdew=8.95, humidity=54.36, cloud=0.0, wind=12.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:04:49.240 [DEBUG] [Thread-120214] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:49.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-28T09:04:49.351 [DEBUG] [Thread-120217] [transport.py] [_log()] starting thread (client mode): 0x2e34b460
2025-09-28T09:04:49.351 [DEBUG] [Thread-120217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:04:49.395 [DEBUG] [Thread-120217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:04:49.396 [INFO] [Thread-120217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:04:49.433 [DEBUG] [Thread-120217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] client lang: <none>
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] server lang: <none>
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] kex follows: False
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:04:49.434 [DEBUG] [Thread-120217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:04:49.435 [DEBUG] [Thread-120217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:04:49.435 [DEBUG] [Thread-120217] [transport.py] [_log()] Compression: none
2025-09-28T09:04:49.435 [DEBUG] [Thread-120217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:04:49.525 [DEBUG] [Thread-120217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:04:49.526 [DEBUG] [Thread-120217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:04:49.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:04:49.527 [DEBUG] [Thread-120217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:04:49.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:04:49.632 [DEBUG] [Thread-120217] [transport.py] [_log()] userauth is OK
2025-09-28T09:04:49.632 [DEBUG] [Thread-120217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:04:49.632 [DEBUG] [Thread-120217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:04:49.632 [DEBUG] [Thread-120217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:04:49.632 [DEBUG] [Thread-120217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:04:49.661 [INFO] [Thread-120217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:04:49.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:04:49.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:04:50.735 [DEBUG] [Thread-120217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:04:50.735 [DEBUG] [Thread-120217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:04:50.812 [DEBUG] [Thread-120217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:04:50.812 [DEBUG] [Thread-120217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:04:50.850 [DEBUG] [Thread-120217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:04:50.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:04:50.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-28T09:04:50.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-28T09:04:50.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:04:50.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:04:50.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:04:50.961 [DEBUG] [Thread-120217] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:04:53.980 [DEBUG] [Thread-120219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:04:58.598 [DEBUG] [Thread-120220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:00.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:05:00.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:05:00.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-28T09:05:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 4, 31), 8.95, 54.36, 0.0, 12.02, 13.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:05:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:04:31
2025-09-28T09:05:01.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:05:01.808 [DEBUG] [Thread-120221] [transport.py] [_log()] starting thread (client mode): 0x2e3f8100
2025-09-28T09:05:01.809 [DEBUG] [Thread-120221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:01.819 [DEBUG] [Thread-120221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:05:01.819 [INFO] [Thread-120221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:01.824 [DEBUG] [Thread-120221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] Compression: none
2025-09-28T09:05:01.825 [DEBUG] [Thread-120221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:01.832 [DEBUG] [Thread-120221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:01.832 [DEBUG] [Thread-120221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:01.832 [DEBUG] [Thread-120221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:05:01.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:05:01.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:01.835 [DEBUG] [Thread-120221] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:01.835 [DEBUG] [Thread-120221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:01.835 [DEBUG] [Thread-120221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:01.835 [DEBUG] [Thread-120221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:05:01.835 [DEBUG] [Thread-120221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:01.844 [INFO] [Thread-120221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:01.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:02.438 [DEBUG] [Thread-120221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:02.438 [DEBUG] [Thread-120221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:02.438 [DEBUG] [Thread-120221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:05:02.480 [DEBUG] [Thread-120221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:02.480 [DEBUG] [Thread-120221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:02.481 [DEBUG] [Thread-120221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:02.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:02.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:05:02.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:05:02.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:05:02.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:02.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:05:02.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:02.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294873 -999.00  +14.10   6.94     59   +6.30 1 1 1 1 1   888    0 8.43 13.95 ----- 2.4 6.9 208.2 11.3 20.5 -25.6 19.3 -24.1 17.7 -24.2 18.7 -24.2
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294873
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:05:02.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:04:31', tmtdew=8.95, humidity=54.36, cloud=0.0, wind=12.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:05:02.502 [DEBUG] [Thread-120221] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05: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-28T09:05:02.600 [DEBUG] [Thread-120224] [transport.py] [_log()] starting thread (client mode): 0x2e3fb910
2025-09-28T09:05:02.600 [DEBUG] [Thread-120224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:02.640 [DEBUG] [Thread-120224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:05:02.640 [INFO] [Thread-120224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:05:02.659 [DEBUG] [Thread-120224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:02.659 [DEBUG] [Thread-120224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:05:02.659 [DEBUG] [Thread-120224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:02.660 [DEBUG] [Thread-120224] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] Compression: none
2025-09-28T09:05:02.661 [DEBUG] [Thread-120224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:02.758 [DEBUG] [Thread-120224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:02.759 [DEBUG] [Thread-120224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:02.759 [DEBUG] [Thread-120224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:05:02.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:05:02.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:02.821 [DEBUG] [Thread-120224] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:02.821 [DEBUG] [Thread-120224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:02.821 [DEBUG] [Thread-120224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:02.822 [DEBUG] [Thread-120224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:05:02.822 [DEBUG] [Thread-120224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:02.841 [INFO] [Thread-120224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:02.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-28T09:05:02.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:03.870 [DEBUG] [Thread-120224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:03.871 [DEBUG] [Thread-120224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:03.934 [DEBUG] [Thread-120224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:03.934 [DEBUG] [Thread-120224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:03.965 [DEBUG] [Thread-120224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:04.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:04.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-28T09:05:04.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-28T09:05:04.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:04.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:04.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:04.066 [DEBUG] [Thread-120224] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:09.005 [DEBUG] [Thread-120226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:14.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:05:14.049 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:05:14.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-28T09:05:14.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 5, 3), 8.84, 54.8, 0.0, 10.01, 13.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:05:14.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:05:03
2025-09-28T09:05:14.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:05:14.887 [DEBUG] [Thread-120227] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb50
2025-09-28T09:05:14.887 [DEBUG] [Thread-120227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:14.900 [DEBUG] [Thread-120227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:05:14.900 [INFO] [Thread-120227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:05:14.903 [DEBUG] [Thread-120227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:14.903 [DEBUG] [Thread-120227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] Compression: none
2025-09-28T09:05:14.904 [DEBUG] [Thread-120227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:14.921 [DEBUG] [Thread-120227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:14.922 [DEBUG] [Thread-120227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:14.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:05:14.923 [DEBUG] [Thread-120227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:05:14.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:14.925 [DEBUG] [Thread-120227] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:14.925 [DEBUG] [Thread-120227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:14.925 [DEBUG] [Thread-120227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:14.925 [DEBUG] [Thread-120227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:05:14.925 [DEBUG] [Thread-120227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:14.943 [INFO] [Thread-120227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:14.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:15.590 [DEBUG] [Thread-120227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:15.590 [DEBUG] [Thread-120227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:15.591 [DEBUG] [Thread-120227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:05:15.631 [DEBUG] [Thread-120227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:15.631 [DEBUG] [Thread-120227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:15.635 [DEBUG] [Thread-120227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:15.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:15.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:05:15.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:05:15.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:05:15.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:15.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:05:15.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:15.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:05:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294873 -999.00  +14.10   6.94     59   +6.30 1 1 1 1 1   888    0 8.43 13.95 ----- 2.4 6.9 208.2 11.3 20.5 -25.6 19.3 -24.1 17.7 -24.2 18.7 -24.2
2025-09-28T09:05:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:05:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:05:15.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294873
2025-09-28T09:05:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:05:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:05:15.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:05:15.661 [DEBUG] [Thread-120227] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:15.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:05:15.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:05:15.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:05:03', tmtdew=8.84, humidity=54.8, cloud=0.0, wind=10.01, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:05:15.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-28T09:05:15.757 [DEBUG] [Thread-120230] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-28T09:05:15.757 [DEBUG] [Thread-120230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:15.783 [DEBUG] [Thread-120230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:05:15.783 [INFO] [Thread-120230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:05:15.791 [DEBUG] [Thread-120230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:15.791 [DEBUG] [Thread-120230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:05:15.791 [DEBUG] [Thread-120230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:15.792 [DEBUG] [Thread-120230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:15.793 [DEBUG] [Thread-120230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:15.793 [DEBUG] [Thread-120230] [transport.py] [_log()] Compression: none
2025-09-28T09:05:15.793 [DEBUG] [Thread-120230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:15.855 [DEBUG] [Thread-120230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:15.855 [DEBUG] [Thread-120230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:15.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:05:15.857 [DEBUG] [Thread-120230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:05:15.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:15.915 [DEBUG] [Thread-120230] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:15.915 [DEBUG] [Thread-120230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:15.915 [DEBUG] [Thread-120230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:15.915 [DEBUG] [Thread-120230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:05:15.915 [DEBUG] [Thread-120230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:15.937 [INFO] [Thread-120230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:15.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-28T09:05:15.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:16.928 [DEBUG] [Thread-120230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:16.928 [DEBUG] [Thread-120230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:16.999 [DEBUG] [Thread-120230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:17.000 [DEBUG] [Thread-120230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:17.032 [DEBUG] [Thread-120230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:17.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05: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')
2025-09-28T09:05:17.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') -> 00000000
2025-09-28T09:05:17.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:17.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:17.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:17.137 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:17.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:17.162 [DEBUG] [Thread-120230] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:24.055 [DEBUG] [Thread-120232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:27.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:05:27.140 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:05:27.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-28T09:05:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 5, 3), 8.84, 54.8, 0.0, 10.01, 13.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:05:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:05:03
2025-09-28T09:05:27.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:05:27.962 [DEBUG] [Thread-120233] [transport.py] [_log()] starting thread (client mode): 0x2e3fb970
2025-09-28T09:05:27.962 [DEBUG] [Thread-120233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:27.984 [DEBUG] [Thread-120233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:05:27.984 [INFO] [Thread-120233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] Compression: none
2025-09-28T09:05:27.987 [DEBUG] [Thread-120233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:28.000 [DEBUG] [Thread-120233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:28.001 [DEBUG] [Thread-120233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:28.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:05:28.002 [DEBUG] [Thread-120233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:05:28.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:28.003 [DEBUG] [Thread-120233] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:28.003 [DEBUG] [Thread-120233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:28.004 [DEBUG] [Thread-120233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:28.004 [DEBUG] [Thread-120233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:05:28.004 [DEBUG] [Thread-120233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:28.038 [INFO] [Thread-120233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:28.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:29.450 [DEBUG] [Thread-120233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:29.450 [DEBUG] [Thread-120233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:29.450 [DEBUG] [Thread-120233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:05:29.491 [DEBUG] [Thread-120233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:29.491 [DEBUG] [Thread-120233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:29.493 [DEBUG] [Thread-120233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:29.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:29.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:05:29.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:05:29.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:05:29.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:29.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:05:29.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294873 -999.00  +14.10   6.94     59   +6.30 1 1 1 1 1   888    0 8.43 13.95 ----- 2.4 6.9 208.2 11.3 20.5 -25.6 19.3 -24.1 17.7 -24.2 18.7 -24.2
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294873
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:05:29.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:05:03', tmtdew=8.84, humidity=54.8, cloud=0.0, wind=10.01, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:05:29.514 [DEBUG] [Thread-120233] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:29.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-28T09:05:29.626 [DEBUG] [Thread-120236] [transport.py] [_log()] starting thread (client mode): 0x2e362590
2025-09-28T09:05:29.626 [DEBUG] [Thread-120236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:29.658 [DEBUG] [Thread-120236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:05:29.658 [INFO] [Thread-120236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:29.687 [DEBUG] [Thread-120236] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] Compression: none
2025-09-28T09:05:29.688 [DEBUG] [Thread-120236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:29.771 [DEBUG] [Thread-120236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:29.771 [DEBUG] [Thread-120236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:29.772 [DEBUG] [Thread-120236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:05:29.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:05:29.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:29.833 [DEBUG] [Thread-120236] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:29.833 [DEBUG] [Thread-120236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:29.833 [DEBUG] [Thread-120236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:29.833 [DEBUG] [Thread-120236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:05:29.833 [DEBUG] [Thread-120236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:29.849 [INFO] [Thread-120236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:29.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:05:29.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:30.840 [DEBUG] [Thread-120236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:30.840 [DEBUG] [Thread-120236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:30.891 [DEBUG] [Thread-120236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:30.891 [DEBUG] [Thread-120236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:30.913 [DEBUG] [Thread-120236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:30.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:30.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-28T09:05:30.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-28T09:05:30.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:30.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:30.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:30.978 [DEBUG] [Thread-120236] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:39.101 [DEBUG] [Thread-120238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:40.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:05:40.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:05:40.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-28T09:05:41.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 5, 35), 8.95, 54.62, 0.0, 10.04, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:05:41.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:05:35
2025-09-28T09:05:41.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:05:41.797 [DEBUG] [Thread-120239] [transport.py] [_log()] starting thread (client mode): 0x2e3f9360
2025-09-28T09:05:41.797 [DEBUG] [Thread-120239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:41.817 [DEBUG] [Thread-120239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:05:41.818 [INFO] [Thread-120239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:05:41.821 [DEBUG] [Thread-120239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:41.821 [DEBUG] [Thread-120239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:05:41.821 [DEBUG] [Thread-120239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:41.821 [DEBUG] [Thread-120239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:41.822 [DEBUG] [Thread-120239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:41.823 [DEBUG] [Thread-120239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:41.823 [DEBUG] [Thread-120239] [transport.py] [_log()] Compression: none
2025-09-28T09:05:41.823 [DEBUG] [Thread-120239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:41.843 [DEBUG] [Thread-120239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:41.843 [DEBUG] [Thread-120239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:41.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:05:41.845 [DEBUG] [Thread-120239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:05:41.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:41.847 [DEBUG] [Thread-120239] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:41.847 [DEBUG] [Thread-120239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:41.847 [DEBUG] [Thread-120239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:41.847 [DEBUG] [Thread-120239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:05:41.848 [DEBUG] [Thread-120239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:41.871 [INFO] [Thread-120239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:41.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:42.633 [DEBUG] [Thread-120239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:42.633 [DEBUG] [Thread-120239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:42.634 [DEBUG] [Thread-120239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:05:42.674 [DEBUG] [Thread-120239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:42.675 [DEBUG] [Thread-120239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:42.677 [DEBUG] [Thread-120239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:42.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:42.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:05:42.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:05:42.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:05:42.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:42.695 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:05:42.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:42.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:42.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:05:42.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.294873 -999.00  +14.10   6.94     59   +6.30 1 1 1 1 1   888    0 8.43 13.95 ----- 2.4 6.9 208.2 11.3 20.5 -25.6 19.3 -24.1 17.7 -24.2 18.7 -24.2
2025-09-28T09:05:42.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:05:42.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:05:42.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.294873
2025-09-28T09:05:42.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:05:42.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:05:42.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:05:42.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:05:42.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:05:42.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:05:35', tmtdew=8.95, humidity=54.62, cloud=0.0, wind=10.04, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:04:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:05:42.698 [DEBUG] [Thread-120239] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:42.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-28T09:05:42.794 [DEBUG] [Thread-120242] [transport.py] [_log()] starting thread (client mode): 0x30ddfcd0
2025-09-28T09:05:42.794 [DEBUG] [Thread-120242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:42.809 [DEBUG] [Thread-120242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:05:42.809 [INFO] [Thread-120242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:05:42.816 [DEBUG] [Thread-120242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:42.817 [DEBUG] [Thread-120242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:42.818 [DEBUG] [Thread-120242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:42.819 [DEBUG] [Thread-120242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:42.819 [DEBUG] [Thread-120242] [transport.py] [_log()] Compression: none
2025-09-28T09:05:42.819 [DEBUG] [Thread-120242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:42.881 [DEBUG] [Thread-120242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:42.881 [DEBUG] [Thread-120242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:42.882 [DEBUG] [Thread-120242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:05:42.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:05:42.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:42.940 [DEBUG] [Thread-120242] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:42.940 [DEBUG] [Thread-120242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:42.940 [DEBUG] [Thread-120242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:42.940 [DEBUG] [Thread-120242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:05:42.941 [DEBUG] [Thread-120242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:42.961 [INFO] [Thread-120242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:42.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-28T09:05:42.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:43.961 [DEBUG] [Thread-120242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:43.962 [DEBUG] [Thread-120242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:44.009 [DEBUG] [Thread-120242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:44.009 [DEBUG] [Thread-120242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:44.018 [DEBUG] [Thread-120242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:44.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:44.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-28T09:05:44.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-28T09:05:44.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:44.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:44.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:44.053 [DEBUG] [Thread-120242] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:54.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:05:54.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:05:54.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-28T09:05:54.129 [DEBUG] [Thread-120244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:05:54.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 5, 35), 8.95, 54.62, 0.0, 10.04, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:05:54.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:05:35
2025-09-28T09:05:54.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:05:54.900 [DEBUG] [Thread-120245] [transport.py] [_log()] starting thread (client mode): 0x2e3f8280
2025-09-28T09:05:54.900 [DEBUG] [Thread-120245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:54.919 [DEBUG] [Thread-120245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:05:54.919 [INFO] [Thread-120245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] Compression: none
2025-09-28T09:05:54.923 [DEBUG] [Thread-120245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:54.940 [DEBUG] [Thread-120245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:54.940 [DEBUG] [Thread-120245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:54.941 [DEBUG] [Thread-120245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:05:54.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:05:54.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:54.943 [DEBUG] [Thread-120245] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:54.943 [DEBUG] [Thread-120245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:54.943 [DEBUG] [Thread-120245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:54.943 [DEBUG] [Thread-120245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:05:54.943 [DEBUG] [Thread-120245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:54.967 [INFO] [Thread-120245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:54.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:55.539 [DEBUG] [Thread-120245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:55.539 [DEBUG] [Thread-120245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:55.540 [DEBUG] [Thread-120245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:05:55.580 [DEBUG] [Thread-120245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:55.580 [DEBUG] [Thread-120245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:55.583 [DEBUG] [Thread-120245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:55.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:55.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:05:55.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:05:55.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:05:55.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:55.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:05:55.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:55.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:55.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:05:55.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.295567 -999.00  +14.50   7.97     57   +6.10 1 1 1 1 1   888    0 8.29 11.67 ----- 9.7 8.0 223.6 17.8 20.6 -25.8 19.2 -25.6 17.8 -24.4 18.8 -25.0
2025-09-28T09:05:55.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:05:55.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:05:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.295567
2025-09-28T09:05:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:05:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:05:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:05:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:05:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:05:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:05:35', tmtdew=8.95, humidity=54.62, cloud=0.0, wind=10.04, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:05:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:05:55.602 [DEBUG] [Thread-120245] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:55.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-28T09:05:55.697 [DEBUG] [Thread-120248] [transport.py] [_log()] starting thread (client mode): 0x2b9ce5c0
2025-09-28T09:05:55.697 [DEBUG] [Thread-120248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:05:55.711 [DEBUG] [Thread-120248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:05:55.711 [INFO] [Thread-120248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] client lang: <none>
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] server lang: <none>
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] kex follows: False
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] Compression: none
2025-09-28T09:05:55.719 [DEBUG] [Thread-120248] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:05:55.776 [DEBUG] [Thread-120248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:05:55.776 [DEBUG] [Thread-120248] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:05:55.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:05:55.777 [DEBUG] [Thread-120248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:05:55.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:05:55.832 [DEBUG] [Thread-120248] [transport.py] [_log()] userauth is OK
2025-09-28T09:05:55.832 [DEBUG] [Thread-120248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:05:55.832 [DEBUG] [Thread-120248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:05:55.833 [DEBUG] [Thread-120248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:05:55.833 [DEBUG] [Thread-120248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:05:55.851 [INFO] [Thread-120248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:05:55.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-28T09:05:55.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:05:56.815 [DEBUG] [Thread-120248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:05:56.815 [DEBUG] [Thread-120248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:05:56.863 [DEBUG] [Thread-120248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:05:56.863 [DEBUG] [Thread-120248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:05:56.872 [DEBUG] [Thread-120248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:05:56.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:05:56.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-28T09:05:56.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-28T09:05:56.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:05:56.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:05:56.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:05:56.908 [DEBUG] [Thread-120248] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:05:58.658 [DEBUG] [Thread-120250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:06.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:06:06.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:06:06.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-28T09:06:07.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 5, 35), 8.95, 54.62, 0.0, 10.04, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:06:07.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:05:35
2025-09-28T09:06:07.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:06:07.768 [DEBUG] [Thread-120251] [transport.py] [_log()] starting thread (client mode): 0x30ddfe20
2025-09-28T09:06:07.768 [DEBUG] [Thread-120251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:07.786 [DEBUG] [Thread-120251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:06:07.786 [INFO] [Thread-120251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:06:07.789 [DEBUG] [Thread-120251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:07.789 [DEBUG] [Thread-120251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:06:07.789 [DEBUG] [Thread-120251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:07.789 [DEBUG] [Thread-120251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:07.789 [DEBUG] [Thread-120251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] Compression: none
2025-09-28T09:06:07.790 [DEBUG] [Thread-120251] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:07.810 [DEBUG] [Thread-120251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:07.810 [DEBUG] [Thread-120251] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:07.810 [DEBUG] [Thread-120251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:06:07.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:06:07.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:07.811 [DEBUG] [Thread-120251] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:07.811 [DEBUG] [Thread-120251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:07.811 [DEBUG] [Thread-120251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:07.811 [DEBUG] [Thread-120251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:06:07.811 [DEBUG] [Thread-120251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:07.826 [INFO] [Thread-120251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:07.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:08.625 [DEBUG] [Thread-120251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:08.625 [DEBUG] [Thread-120251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:08.625 [DEBUG] [Thread-120251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:06:08.666 [DEBUG] [Thread-120251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:08.666 [DEBUG] [Thread-120251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:08.668 [DEBUG] [Thread-120251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:08.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:08.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:06:08.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:06:08.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:08.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:06:08.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.295567 -999.00  +14.50   7.97     57   +6.10 1 1 1 1 1   888    0 8.29 11.67 ----- 9.7 8.0 223.6 17.8 20.6 -25.8 19.2 -25.6 17.8 -24.4 18.8 -25.0
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:06:08.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.295567
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:06:08.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:05:35', tmtdew=8.95, humidity=54.62, cloud=0.0, wind=10.04, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:05:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:06:08.681 [DEBUG] [Thread-120251] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:08.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-28T09:06:08.767 [DEBUG] [Thread-120254] [transport.py] [_log()] starting thread (client mode): 0x30ddd3c0
2025-09-28T09:06:08.767 [DEBUG] [Thread-120254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:08.782 [DEBUG] [Thread-120254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:06:08.782 [INFO] [Thread-120254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] Compression: none
2025-09-28T09:06:08.790 [DEBUG] [Thread-120254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:08.847 [DEBUG] [Thread-120254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:08.848 [DEBUG] [Thread-120254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:08.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:06:08.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:08.848 [DEBUG] [Thread-120254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:06:08.905 [DEBUG] [Thread-120254] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:08.905 [DEBUG] [Thread-120254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:08.905 [DEBUG] [Thread-120254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:08.905 [DEBUG] [Thread-120254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:06:08.905 [DEBUG] [Thread-120254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:08.920 [INFO] [Thread-120254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:08.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:06:08.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:09.163 [DEBUG] [Thread-120256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:09.933 [DEBUG] [Thread-120254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:09.933 [DEBUG] [Thread-120254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:09.981 [DEBUG] [Thread-120254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:09.981 [DEBUG] [Thread-120254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:09.989 [DEBUG] [Thread-120254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:09.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:09.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:06:10.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') -> 00000000
2025-09-28T09:06:10.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:10.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:10.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:10.020 [DEBUG] [Thread-120254] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:17.280 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:17.281 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:20.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:06:20.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:06:20.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-28T09:06:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 6, 7), 9.15, 53.87, 0.0, 12.16, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:06:20.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:06:07
2025-09-28T09:06:20.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:06:20.844 [DEBUG] [Thread-120257] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T09:06:20.844 [DEBUG] [Thread-120257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:20.866 [DEBUG] [Thread-120257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:06:20.866 [INFO] [Thread-120257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:06:20.869 [DEBUG] [Thread-120257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:20.870 [DEBUG] [Thread-120257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] Compression: none
2025-09-28T09:06:20.871 [DEBUG] [Thread-120257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:20.891 [DEBUG] [Thread-120257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:20.891 [DEBUG] [Thread-120257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:20.892 [DEBUG] [Thread-120257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:06:20.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:06:20.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:20.894 [DEBUG] [Thread-120257] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:20.894 [DEBUG] [Thread-120257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:20.894 [DEBUG] [Thread-120257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:20.894 [DEBUG] [Thread-120257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:06:20.894 [DEBUG] [Thread-120257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:20.911 [INFO] [Thread-120257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:20.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:21.495 [DEBUG] [Thread-120257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:21.495 [DEBUG] [Thread-120257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:21.495 [DEBUG] [Thread-120257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:06:21.536 [DEBUG] [Thread-120257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:21.536 [DEBUG] [Thread-120257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:21.539 [DEBUG] [Thread-120257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:21.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:21.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:06:21.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:06:21.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:06:21.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:21.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:06:21.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:21.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:21.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:06:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.295915 -999.00  +14.50   2.81     56   +6.00 1 1 1 1 1   888    0 8.55 12.63 ----- 6.6 2.8 169.4 14.8 20.6 -25.7 19.3 -25.0 17.8 -24.2 18.9 -25.7
2025-09-28T09:06:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:06:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:06:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.295915
2025-09-28T09:06:21.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:06:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:06:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:06:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:06:21.555 [DEBUG] [Thread-120257] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:06:21.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:06:07', tmtdew=9.15, humidity=53.87, cloud=0.0, wind=12.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:06:21.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:06:21.650 [DEBUG] [Thread-120260] [transport.py] [_log()] starting thread (client mode): 0x30ddc550
2025-09-28T09:06:21.650 [DEBUG] [Thread-120260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:21.664 [DEBUG] [Thread-120260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:06:21.664 [INFO] [Thread-120260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:06:21.673 [DEBUG] [Thread-120260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:21.673 [DEBUG] [Thread-120260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:06:21.673 [DEBUG] [Thread-120260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:21.673 [DEBUG] [Thread-120260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:21.673 [DEBUG] [Thread-120260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] Compression: none
2025-09-28T09:06:21.674 [DEBUG] [Thread-120260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:21.733 [DEBUG] [Thread-120260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:21.733 [DEBUG] [Thread-120260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:21.734 [DEBUG] [Thread-120260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:06:21.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:06:21.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:21.793 [DEBUG] [Thread-120260] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:21.793 [DEBUG] [Thread-120260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:21.793 [DEBUG] [Thread-120260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:21.793 [DEBUG] [Thread-120260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:06:21.793 [DEBUG] [Thread-120260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:21.818 [INFO] [Thread-120260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:21.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:06:21.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:22.817 [DEBUG] [Thread-120260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:22.817 [DEBUG] [Thread-120260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:22.882 [DEBUG] [Thread-120260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:22.882 [DEBUG] [Thread-120260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:22.914 [DEBUG] [Thread-120260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:22.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:22.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-28T09:06:22.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-28T09:06:22.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:22.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:22.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:22.962 [DEBUG] [Thread-120260] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:24.196 [DEBUG] [Thread-120262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:32.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:06:32.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:06:32.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-28T09:06:33.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 6, 7), 9.15, 53.87, 0.0, 12.16, 13.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:06:33.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:06:07
2025-09-28T09:06:33.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:06:33.795 [DEBUG] [Thread-120263] [transport.py] [_log()] starting thread (client mode): 0x30ddd1e0
2025-09-28T09:06:33.795 [DEBUG] [Thread-120263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:33.815 [DEBUG] [Thread-120263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:06:33.815 [INFO] [Thread-120263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:06:33.817 [DEBUG] [Thread-120263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:33.817 [DEBUG] [Thread-120263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:06:33.817 [DEBUG] [Thread-120263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:33.817 [DEBUG] [Thread-120263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:33.817 [DEBUG] [Thread-120263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] Compression: none
2025-09-28T09:06:33.818 [DEBUG] [Thread-120263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:33.832 [DEBUG] [Thread-120263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:33.832 [DEBUG] [Thread-120263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:33.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:06:33.833 [DEBUG] [Thread-120263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:06:33.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:33.836 [DEBUG] [Thread-120263] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:33.836 [DEBUG] [Thread-120263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:33.836 [DEBUG] [Thread-120263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:33.836 [DEBUG] [Thread-120263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:06:33.836 [DEBUG] [Thread-120263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:33.855 [INFO] [Thread-120263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:33.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:34.438 [DEBUG] [Thread-120263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:34.438 [DEBUG] [Thread-120263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:34.438 [DEBUG] [Thread-120263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:06:34.477 [DEBUG] [Thread-120263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:34.477 [DEBUG] [Thread-120263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:34.481 [DEBUG] [Thread-120263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:34.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:34.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:06:34.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:06:34.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:06:34.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:34.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:06:34.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:34.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:34.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:06:34.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.295915 -999.00  +14.50   2.81     56   +6.00 1 1 1 1 1   888    0 8.55 12.63 ----- 6.6 2.8 169.4 14.8 20.6 -25.7 19.3 -25.0 17.8 -24.2 18.9 -25.7
2025-09-28T09:06:34.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:06:34.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:06:34.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.295915
2025-09-28T09:06:34.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:06:34.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:06:34.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:06:34.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:06:34.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:06:34.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:06:07', tmtdew=9.15, humidity=53.87, cloud=0.0, wind=12.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:06:34.507 [DEBUG] [Thread-120263] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:34.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-28T09:06:34.605 [DEBUG] [Thread-120266] [transport.py] [_log()] starting thread (client mode): 0x2b945840
2025-09-28T09:06:34.605 [DEBUG] [Thread-120266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:34.620 [DEBUG] [Thread-120266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:06:34.620 [INFO] [Thread-120266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:06:34.627 [DEBUG] [Thread-120266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:34.627 [DEBUG] [Thread-120266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] Compression: none
2025-09-28T09:06:34.628 [DEBUG] [Thread-120266] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:34.685 [DEBUG] [Thread-120266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:34.686 [DEBUG] [Thread-120266] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:34.686 [DEBUG] [Thread-120266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:06:34.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:06:34.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:34.742 [DEBUG] [Thread-120266] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:34.742 [DEBUG] [Thread-120266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:34.742 [DEBUG] [Thread-120266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:34.742 [DEBUG] [Thread-120266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:06:34.743 [DEBUG] [Thread-120266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:34.762 [INFO] [Thread-120266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:34.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-28T09:06:34.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:35.741 [DEBUG] [Thread-120266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:35.741 [DEBUG] [Thread-120266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:35.790 [DEBUG] [Thread-120266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:35.790 [DEBUG] [Thread-120266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:35.798 [DEBUG] [Thread-120266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:35.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:35.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-28T09:06:35.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-28T09:06:35.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:35.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:35.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:35.831 [DEBUG] [Thread-120266] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:39.246 [DEBUG] [Thread-120268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:45.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:06:45.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:06:45.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-28T09:06:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 6, 39), 9.28, 53.44, 0.0, 12.21, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:06:46.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:06:39
2025-09-28T09:06:46.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:06:46.693 [DEBUG] [Thread-120269] [transport.py] [_log()] starting thread (client mode): 0x30ddd9c0
2025-09-28T09:06:46.693 [DEBUG] [Thread-120269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:46.713 [DEBUG] [Thread-120269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:06:46.713 [INFO] [Thread-120269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:46.716 [DEBUG] [Thread-120269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:46.717 [DEBUG] [Thread-120269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:46.717 [DEBUG] [Thread-120269] [transport.py] [_log()] Compression: none
2025-09-28T09:06:46.717 [DEBUG] [Thread-120269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:46.736 [DEBUG] [Thread-120269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:46.736 [DEBUG] [Thread-120269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:06:46.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:06:46.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:06:46.737 [DEBUG] [Thread-120269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:46.753 [INFO] [Thread-120269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:46.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:47.523 [DEBUG] [Thread-120269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:47.523 [DEBUG] [Thread-120269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:47.523 [DEBUG] [Thread-120269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:06:47.564 [DEBUG] [Thread-120269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:47.564 [DEBUG] [Thread-120269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:47.566 [DEBUG] [Thread-120269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:47.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:47.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:06:47.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:06:47.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:06:47.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:47.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:06:47.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.295915 -999.00  +14.50   2.81     56   +6.00 1 1 1 1 1   888    0 8.55 12.63 ----- 6.6 2.8 169.4 14.8 20.6 -25.7 19.3 -25.0 17.8 -24.2 18.9 -25.7
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.295915
2025-09-28T09:06:47.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:06:47.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:06:47.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:06:47.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:06:47.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:06:47.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:06:39', tmtdew=9.28, humidity=53.44, cloud=0.0, wind=12.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:06:47.585 [DEBUG] [Thread-120269] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:47.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-28T09:06:47.667 [DEBUG] [Thread-120272] [transport.py] [_log()] starting thread (client mode): 0x30ddee30
2025-09-28T09:06:47.667 [DEBUG] [Thread-120272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:47.683 [DEBUG] [Thread-120272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:06:47.683 [INFO] [Thread-120272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] Compression: none
2025-09-28T09:06:47.691 [DEBUG] [Thread-120272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:47.753 [DEBUG] [Thread-120272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:47.753 [DEBUG] [Thread-120272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:47.753 [DEBUG] [Thread-120272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:06:47.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:06:47.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:47.814 [DEBUG] [Thread-120272] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:47.814 [DEBUG] [Thread-120272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:47.814 [DEBUG] [Thread-120272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:47.814 [DEBUG] [Thread-120272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:06:47.814 [DEBUG] [Thread-120272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:47.828 [INFO] [Thread-120272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:47.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-28T09:06:47.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:06:48.809 [DEBUG] [Thread-120272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:06:48.809 [DEBUG] [Thread-120272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:06:48.857 [DEBUG] [Thread-120272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:06:48.857 [DEBUG] [Thread-120272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:06:48.865 [DEBUG] [Thread-120272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:06:48.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:06:48.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')
2025-09-28T09:06:48.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') -> 00000000
2025-09-28T09:06:48.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:06:48.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:06:48.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:06:48.896 [DEBUG] [Thread-120272] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:06:54.277 [DEBUG] [Thread-120274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:58.708 [DEBUG] [Thread-120275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:06:58.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:06:58.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:06:58.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-28T09:06:59.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 6, 39), 9.28, 53.44, 0.0, 12.21, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:06:59.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:06:39
2025-09-28T09:06:59.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:06:59.732 [DEBUG] [Thread-120276] [transport.py] [_log()] starting thread (client mode): 0x2e38d840
2025-09-28T09:06:59.732 [DEBUG] [Thread-120276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:06:59.751 [DEBUG] [Thread-120276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:06:59.752 [INFO] [Thread-120276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:06:59.753 [DEBUG] [Thread-120276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:06:59.753 [DEBUG] [Thread-120276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:06:59.753 [DEBUG] [Thread-120276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:06:59.753 [DEBUG] [Thread-120276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:59.753 [DEBUG] [Thread-120276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] client lang: <none>
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] server lang: <none>
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] kex follows: False
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] Compression: none
2025-09-28T09:06:59.754 [DEBUG] [Thread-120276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:06:59.772 [DEBUG] [Thread-120276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:06:59.772 [DEBUG] [Thread-120276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:06:59.773 [DEBUG] [Thread-120276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:06:59.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:06:59.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:06:59.775 [DEBUG] [Thread-120276] [transport.py] [_log()] userauth is OK
2025-09-28T09:06:59.775 [DEBUG] [Thread-120276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:06:59.775 [DEBUG] [Thread-120276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:06:59.775 [DEBUG] [Thread-120276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:06:59.775 [DEBUG] [Thread-120276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:06:59.800 [INFO] [Thread-120276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:06:59.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:00.401 [DEBUG] [Thread-120276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:00.402 [DEBUG] [Thread-120276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:00.402 [DEBUG] [Thread-120276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:07:00.442 [DEBUG] [Thread-120276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:00.442 [DEBUG] [Thread-120276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:00.445 [DEBUG] [Thread-120276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:00.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:00.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:07:00.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:07:00.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:07:00.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:00.469 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:07:00.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:00.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:07:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296262 -999.00  +14.60   4.89     55   +5.80 1 1 1 1 1   888    0 8.51 14.40 ----- 7.3 4.9 204.4 9.4 20.7 -26.2 19.4 -25.1 17.9 -25.0 18.9 -25.6
2025-09-28T09:07:00.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:07:00.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:07:00.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296262
2025-09-28T09:07:00.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:07:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:07:00.472 [DEBUG] [Thread-120276] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:07:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:07:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:07:00.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:06:39', tmtdew=9.28, humidity=53.44, cloud=0.0, wind=12.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:07:00.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-28T09:07:00.579 [DEBUG] [Thread-120279] [transport.py] [_log()] starting thread (client mode): 0x2e38cbe0
2025-09-28T09:07:00.579 [DEBUG] [Thread-120279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:00.595 [DEBUG] [Thread-120279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:07:00.595 [INFO] [Thread-120279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:07:00.603 [DEBUG] [Thread-120279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:00.604 [DEBUG] [Thread-120279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:00.605 [DEBUG] [Thread-120279] [transport.py] [_log()] Compression: none
2025-09-28T09:07:00.605 [DEBUG] [Thread-120279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:00.685 [DEBUG] [Thread-120279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:00.686 [DEBUG] [Thread-120279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:00.686 [DEBUG] [Thread-120279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:07:00.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:07:00.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:00.785 [DEBUG] [Thread-120279] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:00.785 [DEBUG] [Thread-120279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:00.785 [DEBUG] [Thread-120279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:00.785 [DEBUG] [Thread-120279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:07:00.785 [DEBUG] [Thread-120279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:00.816 [INFO] [Thread-120279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:00.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-28T09:07:00.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:01.828 [DEBUG] [Thread-120279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:01.829 [DEBUG] [Thread-120279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:01.895 [DEBUG] [Thread-120279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:01.895 [DEBUG] [Thread-120279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:01.928 [DEBUG] [Thread-120279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:01.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:01.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-28T09:07:01.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-28T09:07:01.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:01.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:01.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:02.029 [DEBUG] [Thread-120279] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:09.326 [DEBUG] [Thread-120281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:12.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:07:12.004 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:07:12.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-28T09:07:12.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 6, 39), 9.28, 53.44, 0.0, 12.21, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:07:12.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:06:39
2025-09-28T09:07:12.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:07:12.872 [DEBUG] [Thread-120282] [transport.py] [_log()] starting thread (client mode): 0x30dde050
2025-09-28T09:07:12.872 [DEBUG] [Thread-120282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:12.892 [DEBUG] [Thread-120282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:07:12.892 [INFO] [Thread-120282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] Compression: none
2025-09-28T09:07:12.896 [DEBUG] [Thread-120282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:12.910 [DEBUG] [Thread-120282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:12.910 [DEBUG] [Thread-120282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:12.910 [DEBUG] [Thread-120282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:07:12.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:07:12.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:12.911 [DEBUG] [Thread-120282] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:12.911 [DEBUG] [Thread-120282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:12.911 [DEBUG] [Thread-120282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:12.911 [DEBUG] [Thread-120282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:07:12.911 [DEBUG] [Thread-120282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:12.920 [INFO] [Thread-120282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:12.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:13.705 [DEBUG] [Thread-120282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:13.705 [DEBUG] [Thread-120282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:13.706 [DEBUG] [Thread-120282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:07:13.746 [DEBUG] [Thread-120282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:13.746 [DEBUG] [Thread-120282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:13.749 [DEBUG] [Thread-120282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:13.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:13.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:07:13.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:07:13.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:07:13.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:13.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:07:13.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:13.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:13.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:07:13.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296262 -999.00  +14.60   4.89     55   +5.80 1 1 1 1 1   888    0 8.51 14.40 ----- 7.3 4.9 204.4 9.4 20.7 -26.2 19.4 -25.1 17.9 -25.0 18.9 -25.6
2025-09-28T09:07:13.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:07:13.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:07:13.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296262
2025-09-28T09:07:13.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:07:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:07:13.774 [DEBUG] [Thread-120282] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:07:13.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:07:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:07:13.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:06:39', tmtdew=9.28, humidity=53.44, cloud=0.0, wind=12.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:07:13.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:07:13.900 [DEBUG] [Thread-120285] [transport.py] [_log()] starting thread (client mode): 0x2b947fd0
2025-09-28T09:07:13.901 [DEBUG] [Thread-120285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:13.945 [DEBUG] [Thread-120285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:07:13.945 [INFO] [Thread-120285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:07:13.972 [DEBUG] [Thread-120285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:13.973 [DEBUG] [Thread-120285] [transport.py] [_log()] Compression: none
2025-09-28T09:07:13.974 [DEBUG] [Thread-120285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:14.024 [DEBUG] [Thread-120285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:14.025 [DEBUG] [Thread-120285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:14.025 [DEBUG] [Thread-120285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:07:14.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:07:14.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:14.088 [DEBUG] [Thread-120285] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:14.089 [DEBUG] [Thread-120285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:14.089 [DEBUG] [Thread-120285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:14.089 [DEBUG] [Thread-120285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:07:14.089 [DEBUG] [Thread-120285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:14.112 [INFO] [Thread-120285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:14.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:07:14.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:15.159 [DEBUG] [Thread-120285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:15.159 [DEBUG] [Thread-120285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:15.236 [DEBUG] [Thread-120285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:15.236 [DEBUG] [Thread-120285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:15.249 [DEBUG] [Thread-120285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:15.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:15.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-28T09:07:15.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-28T09:07:15.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:15.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:15.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:15.386 [DEBUG] [Thread-120285] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:17.420 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:17.422 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:24.367 [DEBUG] [Thread-120287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:25.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:07:25.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:07: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-28T09:07:25.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 7, 11), 9.27, 53.47, 0.0, 15.12, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:07:25.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:07:11
2025-09-28T09:07:26.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:07:26.225 [DEBUG] [Thread-120288] [transport.py] [_log()] starting thread (client mode): 0x30ddd750
2025-09-28T09:07:26.225 [DEBUG] [Thread-120288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:26.245 [DEBUG] [Thread-120288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:07:26.246 [INFO] [Thread-120288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] Compression: none
2025-09-28T09:07:26.249 [DEBUG] [Thread-120288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:26.266 [DEBUG] [Thread-120288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:26.266 [DEBUG] [Thread-120288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:26.266 [DEBUG] [Thread-120288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:07:26.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:07:26.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:26.267 [DEBUG] [Thread-120288] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:26.268 [DEBUG] [Thread-120288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:26.268 [DEBUG] [Thread-120288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:26.268 [DEBUG] [Thread-120288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:07:26.268 [DEBUG] [Thread-120288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:26.297 [INFO] [Thread-120288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:26.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:27.027 [DEBUG] [Thread-120288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:27.027 [DEBUG] [Thread-120288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:27.027 [DEBUG] [Thread-120288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:07:27.067 [DEBUG] [Thread-120288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:27.068 [DEBUG] [Thread-120288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:27.069 [DEBUG] [Thread-120288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:27.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:27.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:07:27.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:07:27.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:07:27.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:27.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:07:27.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296262 -999.00  +14.60   4.89     55   +5.80 1 1 1 1 1   888    0 8.51 14.40 ----- 7.3 4.9 204.4 9.4 20.7 -26.2 19.4 -25.1 17.9 -25.0 18.9 -25.6
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296262
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:07:27.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:07:27.088 [DEBUG] [Thread-120288] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:27.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:07:11', tmtdew=9.27, humidity=53.47, cloud=0.0, wind=15.12, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:06:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:07:27.166 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:07:27.204 [DEBUG] [Thread-120291] [transport.py] [_log()] starting thread (client mode): 0x2b945f60
2025-09-28T09:07:27.204 [DEBUG] [Thread-120291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:27.246 [DEBUG] [Thread-120291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:07:27.246 [INFO] [Thread-120291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] Compression: none
2025-09-28T09:07:27.279 [DEBUG] [Thread-120291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:27.353 [DEBUG] [Thread-120291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:27.354 [DEBUG] [Thread-120291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:27.354 [DEBUG] [Thread-120291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:07:27.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:07:27.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:27.445 [DEBUG] [Thread-120291] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:27.445 [DEBUG] [Thread-120291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:27.445 [DEBUG] [Thread-120291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:27.445 [DEBUG] [Thread-120291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:07:27.445 [DEBUG] [Thread-120291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:27.486 [INFO] [Thread-120291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:27.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-28T09:07:27.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:28.482 [DEBUG] [Thread-120291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:28.482 [DEBUG] [Thread-120291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:28.559 [DEBUG] [Thread-120291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:28.559 [DEBUG] [Thread-120291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:28.597 [DEBUG] [Thread-120291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:28.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07: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')
2025-09-28T09:07:28.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-28T09:07:28.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:28.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:28.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:28.722 [DEBUG] [Thread-120291] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:38.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:07:38.702 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:07:38.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-28T09:07:39.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 7, 11), 9.27, 53.47, 0.0, 15.12, 13.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:07:39.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:07:11
2025-09-28T09:07:39.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:07:39.392 [DEBUG] [Thread-120293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:39.530 [DEBUG] [Thread-120294] [transport.py] [_log()] starting thread (client mode): 0x30ddfac0
2025-09-28T09:07:39.530 [DEBUG] [Thread-120294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:39.541 [DEBUG] [Thread-120294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:07:39.541 [INFO] [Thread-120294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] Compression: none
2025-09-28T09:07:39.542 [DEBUG] [Thread-120294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:39.549 [DEBUG] [Thread-120294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:39.550 [DEBUG] [Thread-120294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:39.550 [DEBUG] [Thread-120294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:07:39.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:07:39.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:39.551 [DEBUG] [Thread-120294] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:39.551 [DEBUG] [Thread-120294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:39.551 [DEBUG] [Thread-120294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:39.551 [DEBUG] [Thread-120294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:07:39.551 [DEBUG] [Thread-120294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:39.568 [INFO] [Thread-120294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:39.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:40.155 [DEBUG] [Thread-120294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:40.155 [DEBUG] [Thread-120294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:40.155 [DEBUG] [Thread-120294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:07:40.196 [DEBUG] [Thread-120294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:40.196 [DEBUG] [Thread-120294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:40.199 [DEBUG] [Thread-120294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:40.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:40.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:07:40.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:07:40.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:07:40.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:40.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:07:40.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296609 -999.00  +14.70   3.65     55   +6.00 1 1 1 1 1   888    0 8.60 15.12 ----- 4.2 3.6 172.9 15.0 20.7 -25.7 19.3 -24.6 17.9 -24.4 19.0 -25.6
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:07:40.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296609
2025-09-28T09:07:40.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:07:40.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:07:40.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:07:40.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:07:40.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:07:40.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:07:11', tmtdew=9.27, humidity=53.47, cloud=0.0, wind=15.12, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:07:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:07:40.227 [DEBUG] [Thread-120294] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:40.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-28T09:07:40.355 [DEBUG] [Thread-120297] [transport.py] [_log()] starting thread (client mode): 0x2b9cc130
2025-09-28T09:07:40.356 [DEBUG] [Thread-120297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:40.377 [DEBUG] [Thread-120297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:07:40.377 [INFO] [Thread-120297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:07:40.406 [DEBUG] [Thread-120297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:40.406 [DEBUG] [Thread-120297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:07:40.406 [DEBUG] [Thread-120297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:40.406 [DEBUG] [Thread-120297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] Compression: none
2025-09-28T09:07:40.407 [DEBUG] [Thread-120297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:40.478 [DEBUG] [Thread-120297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:40.479 [DEBUG] [Thread-120297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:40.479 [DEBUG] [Thread-120297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:07:40.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:07:40.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:40.593 [DEBUG] [Thread-120297] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:40.593 [DEBUG] [Thread-120297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:40.593 [DEBUG] [Thread-120297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:40.593 [DEBUG] [Thread-120297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:07:40.593 [DEBUG] [Thread-120297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:40.619 [INFO] [Thread-120297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:40.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-28T09:07:40.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:41.617 [DEBUG] [Thread-120297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:41.618 [DEBUG] [Thread-120297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:41.693 [DEBUG] [Thread-120297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:41.693 [DEBUG] [Thread-120297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:41.730 [DEBUG] [Thread-120297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:41.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:41.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-28T09:07:41.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-28T09:07:41.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:41.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:41.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:41.857 [DEBUG] [Thread-120297] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:51.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:07:51.833 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:07:51.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-28T09:07:52.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 7, 43), 9.51, 52.84, 0.0, 11.75, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:07:52.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:07:43
2025-09-28T09:07:52.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:07:52.663 [DEBUG] [Thread-120299] [transport.py] [_log()] starting thread (client mode): 0x2e3ddcf0
2025-09-28T09:07:52.663 [DEBUG] [Thread-120299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:52.677 [DEBUG] [Thread-120299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:07:52.678 [INFO] [Thread-120299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] Compression: none
2025-09-28T09:07:52.679 [DEBUG] [Thread-120299] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:52.686 [DEBUG] [Thread-120299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:52.686 [DEBUG] [Thread-120299] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:52.687 [DEBUG] [Thread-120299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:07:52.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:07:52.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:52.688 [DEBUG] [Thread-120299] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:52.688 [DEBUG] [Thread-120299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:52.688 [DEBUG] [Thread-120299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:52.688 [DEBUG] [Thread-120299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:07:52.688 [DEBUG] [Thread-120299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:52.701 [INFO] [Thread-120299] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:52.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:53.275 [DEBUG] [Thread-120299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:53.275 [DEBUG] [Thread-120299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:53.275 [DEBUG] [Thread-120299] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:07:53.317 [DEBUG] [Thread-120299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:53.317 [DEBUG] [Thread-120299] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:53.320 [DEBUG] [Thread-120299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:53.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:53.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:07:53.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:07:53.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:07:53.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:53.342 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:07:53.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:53.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:53.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:07:53.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296609 -999.00  +14.70   3.65     55   +6.00 1 1 1 1 1   888    0 8.60 15.12 ----- 4.2 3.6 172.9 15.0 20.7 -25.7 19.3 -24.6 17.9 -24.4 19.0 -25.6
2025-09-28T09:07:53.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:07:53.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:07:53.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296609
2025-09-28T09:07:53.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:07:53.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:07:53.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:07:53.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:07:53.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:07:53.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:07:43', tmtdew=9.51, humidity=52.84, cloud=0.0, wind=11.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:07:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:07:53.344 [DEBUG] [Thread-120299] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:53.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-28T09:07:53.472 [DEBUG] [Thread-120302] [transport.py] [_log()] starting thread (client mode): 0x2e38de40
2025-09-28T09:07:53.472 [DEBUG] [Thread-120302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:07:53.511 [DEBUG] [Thread-120302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:07:53.511 [INFO] [Thread-120302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:07:53.520 [DEBUG] [Thread-120302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] client lang: <none>
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] server lang: <none>
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] kex follows: False
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] Compression: none
2025-09-28T09:07:53.521 [DEBUG] [Thread-120302] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:07:53.582 [DEBUG] [Thread-120302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:07:53.583 [DEBUG] [Thread-120302] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:07:53.583 [DEBUG] [Thread-120302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:07:53.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:07:53.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:07:53.649 [DEBUG] [Thread-120302] [transport.py] [_log()] userauth is OK
2025-09-28T09:07:53.649 [DEBUG] [Thread-120302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:07:53.649 [DEBUG] [Thread-120302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:07:53.649 [DEBUG] [Thread-120302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:07:53.649 [DEBUG] [Thread-120302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:07:53.684 [INFO] [Thread-120302] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:07:53.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:07:53.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:07:54.427 [DEBUG] [Thread-120304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:07:54.673 [DEBUG] [Thread-120302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:07:54.673 [DEBUG] [Thread-120302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:07:54.750 [DEBUG] [Thread-120302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:07:54.750 [DEBUG] [Thread-120302] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:07:54.788 [DEBUG] [Thread-120302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:07:54.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:07:54.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')
2025-09-28T09:07:54.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-28T09:07:54.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:07:54.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:07:54.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:07:54.937 [DEBUG] [Thread-120302] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:07:58.764 [DEBUG] [Thread-120305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:04.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:08:04.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:08:04.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-28T09:08:05.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 7, 43), 9.51, 52.84, 0.0, 11.75, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:08:05.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:07:43
2025-09-28T09:08:05.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:08:05.744 [DEBUG] [Thread-120306] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a80
2025-09-28T09:08:05.744 [DEBUG] [Thread-120306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:08:05.765 [DEBUG] [Thread-120306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:08:05.765 [INFO] [Thread-120306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] client lang: <none>
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] server lang: <none>
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] kex follows: False
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] Compression: none
2025-09-28T09:08:05.768 [DEBUG] [Thread-120306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:08:05.785 [DEBUG] [Thread-120306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:08:05.786 [DEBUG] [Thread-120306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:08:05.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:08:05.787 [DEBUG] [Thread-120306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:08:05.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:08:05.788 [DEBUG] [Thread-120306] [transport.py] [_log()] userauth is OK
2025-09-28T09:08:05.788 [DEBUG] [Thread-120306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:08:05.788 [DEBUG] [Thread-120306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:08:05.788 [DEBUG] [Thread-120306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:08:05.788 [DEBUG] [Thread-120306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:08:05.803 [INFO] [Thread-120306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:08:05.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:08:06.373 [DEBUG] [Thread-120306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:08:06.374 [DEBUG] [Thread-120306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:08:06.374 [DEBUG] [Thread-120306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:08:06.414 [DEBUG] [Thread-120306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:08:06.414 [DEBUG] [Thread-120306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:08:06.418 [DEBUG] [Thread-120306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:08:06.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:08:06.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:08:06.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:08:06.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:08:06.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:08:06.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:08:06.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:08:06.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:08:06.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:08:06.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296956 -999.00  +14.70  11.04     55   +5.80 1 1 1 1 1   888    0 8.94 18.16 ----- 8.5 11.0 216.3 14.6 20.6 -26.1 19.4 -25.1 17.9 -24.9 18.9 -26.2
2025-09-28T09:08:06.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:08:06.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:08:06.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296956
2025-09-28T09:08:06.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:08:06.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:08:06.443 [DEBUG] [Thread-120306] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:08:06.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:08:06.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:08:06.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:08:06.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:07:43', tmtdew=9.51, humidity=52.84, cloud=0.0, wind=11.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:07:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:08:06.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-28T09:08:06.556 [DEBUG] [Thread-120309] [transport.py] [_log()] starting thread (client mode): 0x2b94dd20
2025-09-28T09:08:06.557 [DEBUG] [Thread-120309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:08:06.600 [DEBUG] [Thread-120309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:08:06.601 [INFO] [Thread-120309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:08:06.636 [DEBUG] [Thread-120309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] client lang: <none>
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] server lang: <none>
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] kex follows: False
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:08:06.637 [DEBUG] [Thread-120309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:08:06.638 [DEBUG] [Thread-120309] [transport.py] [_log()] Compression: none
2025-09-28T09:08:06.638 [DEBUG] [Thread-120309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:08:06.717 [DEBUG] [Thread-120309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:08:06.717 [DEBUG] [Thread-120309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:08:06.718 [DEBUG] [Thread-120309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:08:06.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:08:06.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:08:06.832 [DEBUG] [Thread-120309] [transport.py] [_log()] userauth is OK
2025-09-28T09:08:06.833 [DEBUG] [Thread-120309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:08:06.833 [DEBUG] [Thread-120309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:08:06.833 [DEBUG] [Thread-120309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:08:06.833 [DEBUG] [Thread-120309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:08:06.876 [INFO] [Thread-120309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:08:06.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-28T09:08:06.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:08:07.836 [DEBUG] [Thread-120309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:08:07.845 [DEBUG] [Thread-120309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:08:07.893 [DEBUG] [Thread-120309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:08:07.893 [DEBUG] [Thread-120309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:08:07.920 [DEBUG] [Thread-120309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:08:07.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:08:07.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-28T09:08:07.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-28T09:08:07.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:08:07.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:08:07.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:08:08.020 [DEBUG] [Thread-120309] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:08:09.465 [DEBUG] [Thread-120311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:17.563 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:17.565 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:18.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:08:18.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:08:18.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-28T09:08:18.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 8, 15), 9.52, 52.78, 0.0, 12.55, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:08:18.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:08:15
2025-09-28T09:08:18.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:08:18.862 [DEBUG] [Thread-120312] [transport.py] [_log()] starting thread (client mode): 0x2e3c1090
2025-09-28T09:08:18.862 [DEBUG] [Thread-120312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:08:18.878 [DEBUG] [Thread-120312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:08:18.878 [INFO] [Thread-120312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] client lang: <none>
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] server lang: <none>
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] kex follows: False
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:08:18.881 [DEBUG] [Thread-120312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:08:18.882 [DEBUG] [Thread-120312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:08:18.882 [DEBUG] [Thread-120312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:08:18.882 [DEBUG] [Thread-120312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:08:18.882 [DEBUG] [Thread-120312] [transport.py] [_log()] Compression: none
2025-09-28T09:08:18.882 [DEBUG] [Thread-120312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:08:18.897 [DEBUG] [Thread-120312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:08:18.897 [DEBUG] [Thread-120312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:08:18.898 [DEBUG] [Thread-120312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:08:18.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:08:18.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:08:18.900 [DEBUG] [Thread-120312] [transport.py] [_log()] userauth is OK
2025-09-28T09:08:18.900 [DEBUG] [Thread-120312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:08:18.900 [DEBUG] [Thread-120312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:08:18.900 [DEBUG] [Thread-120312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:08:18.900 [DEBUG] [Thread-120312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:08:18.925 [INFO] [Thread-120312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:08:18.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:08:19.502 [DEBUG] [Thread-120312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:08:19.502 [DEBUG] [Thread-120312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:08:19.502 [DEBUG] [Thread-120312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:08:19.543 [DEBUG] [Thread-120312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:08:19.543 [DEBUG] [Thread-120312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:08:19.545 [DEBUG] [Thread-120312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:08:19.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:08:19.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:08:19.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:08:19.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:08:19.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:08:19.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:08:19.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.296956 -999.00  +14.70  11.04     55   +5.80 1 1 1 1 1   888    0 8.94 18.16 ----- 8.5 11.0 216.3 14.6 20.6 -26.1 19.4 -25.1 17.9 -24.9 18.9 -26.2
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.296956
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:08:19.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:08:19.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:08:15', tmtdew=9.52, humidity=52.78, cloud=0.0, wind=12.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:07:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:08:19.568 [DEBUG] [Thread-120312] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:08:19.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:08:24.510 [DEBUG] [Thread-120315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:39.561 [DEBUG] [Thread-120316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:54.586 [DEBUG] [Thread-120317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:08:58.821 [DEBUG] [Thread-120318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:09.622 [DEBUG] [Thread-120319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:17.703 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:17.704 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:24.650 [DEBUG] [Thread-120320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:39.681 [DEBUG] [Thread-120321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:54.708 [DEBUG] [Thread-120322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:09:58.872 [DEBUG] [Thread-120323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:09.732 [DEBUG] [Thread-120324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:17.853 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:17.854 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:24.761 [DEBUG] [Thread-120325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:31.611 [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-28T09:10:39.791 [DEBUG] [Thread-120326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:41.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:10:41.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:10:41.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-28T09:10:42.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 10, 23), 9.4, 53.19, 0.0, 9.79, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:10:42.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:10:23
2025-09-28T09:10:42.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:10:42.488 [DEBUG] [Thread-120327] [transport.py] [_log()] starting thread (client mode): 0x2e38dff0
2025-09-28T09:10:42.488 [DEBUG] [Thread-120327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:10:42.508 [DEBUG] [Thread-120327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:10:42.508 [INFO] [Thread-120327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] client lang: <none>
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] server lang: <none>
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] kex follows: False
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:10:42.511 [DEBUG] [Thread-120327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:10:42.512 [DEBUG] [Thread-120327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:10:42.512 [DEBUG] [Thread-120327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:10:42.512 [DEBUG] [Thread-120327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:10:42.512 [DEBUG] [Thread-120327] [transport.py] [_log()] Compression: none
2025-09-28T09:10:42.512 [DEBUG] [Thread-120327] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:10:42.534 [DEBUG] [Thread-120327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:10:42.534 [DEBUG] [Thread-120327] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:10:42.535 [DEBUG] [Thread-120327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:10:42.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:10:42.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:10:42.537 [DEBUG] [Thread-120327] [transport.py] [_log()] userauth is OK
2025-09-28T09:10:42.537 [DEBUG] [Thread-120327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:10:42.537 [DEBUG] [Thread-120327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:10:42.538 [DEBUG] [Thread-120327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:10:42.538 [DEBUG] [Thread-120327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:10:42.560 [INFO] [Thread-120327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:10:42.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:10:43.166 [DEBUG] [Thread-120327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:10:43.166 [DEBUG] [Thread-120327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:10:43.167 [DEBUG] [Thread-120327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:10:43.207 [DEBUG] [Thread-120327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:10:43.207 [DEBUG] [Thread-120327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:10:43.210 [DEBUG] [Thread-120327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:10:43.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:10:43.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:10:43.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:10:43.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:10:43.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:10:43.233 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:10:43.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.298692 -999.00  +14.20   8.19     56   +5.80 1 1 1 1 1   888    0 8.59 9.27 ----- 4.7 8.2 191.0 10.1 21.0 -26.1 19.8 -24.2 18.1 -24.6 19.1 -25.6
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:10:43.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.298692
2025-09-28T09:10:43.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:10:43.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:10:43.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:10:43.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:10:43.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:10:43.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:10:23', tmtdew=9.4, humidity=53.19, cloud=0.0, wind=9.79, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:10:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:10:43.236 [DEBUG] [Thread-120327] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:10:43.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-28T09:10:43.341 [DEBUG] [Thread-120330] [transport.py] [_log()] starting thread (client mode): 0x2e38e8f0
2025-09-28T09:10:43.341 [DEBUG] [Thread-120330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:10:43.358 [DEBUG] [Thread-120330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:10:43.359 [INFO] [Thread-120330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] client lang: <none>
2025-09-28T09:10:43.367 [DEBUG] [Thread-120330] [transport.py] [_log()] server lang: <none>
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] kex follows: False
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] Compression: none
2025-09-28T09:10:43.368 [DEBUG] [Thread-120330] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:10:43.622 [DEBUG] [Thread-120330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:10:43.623 [DEBUG] [Thread-120330] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:10:43.623 [DEBUG] [Thread-120330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:10:43.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:10:43.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:10:43.679 [DEBUG] [Thread-120330] [transport.py] [_log()] userauth is OK
2025-09-28T09:10:43.679 [DEBUG] [Thread-120330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:10:43.680 [DEBUG] [Thread-120330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:10:43.680 [DEBUG] [Thread-120330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:10:43.680 [DEBUG] [Thread-120330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:10:43.699 [INFO] [Thread-120330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:10: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-28T09:10:43.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:10:44.693 [DEBUG] [Thread-120330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:10:44.693 [DEBUG] [Thread-120330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:10:44.742 [DEBUG] [Thread-120330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:10:44.742 [DEBUG] [Thread-120330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:10:44.753 [DEBUG] [Thread-120330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:10:44.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:10:44.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-28T09:10:44.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-28T09:10:44.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:10:44.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:10:44.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:10:44.803 [DEBUG] [Thread-120330] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:10:54.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:10:54.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:10:54.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-28T09:10:54.823 [DEBUG] [Thread-120332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:10:55.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 10, 23), 9.4, 53.19, 0.0, 9.79, 13.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:10:55.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:10:23
2025-09-28T09:10:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:10:55.695 [DEBUG] [Thread-120333] [transport.py] [_log()] starting thread (client mode): 0x2b945630
2025-09-28T09:10:55.695 [DEBUG] [Thread-120333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:10:55.714 [DEBUG] [Thread-120333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:10:55.714 [INFO] [Thread-120333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] client lang: <none>
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] server lang: <none>
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] kex follows: False
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] Compression: none
2025-09-28T09:10:55.718 [DEBUG] [Thread-120333] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:10:55.734 [DEBUG] [Thread-120333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:10:55.734 [DEBUG] [Thread-120333] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:10:55.734 [DEBUG] [Thread-120333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:10:55.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:10:55.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:10:55.735 [DEBUG] [Thread-120333] [transport.py] [_log()] userauth is OK
2025-09-28T09:10:55.735 [DEBUG] [Thread-120333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:10:55.735 [DEBUG] [Thread-120333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:10:55.735 [DEBUG] [Thread-120333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:10:55.735 [DEBUG] [Thread-120333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:10:55.752 [INFO] [Thread-120333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:10:55.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:10:56.408 [DEBUG] [Thread-120333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:10:56.408 [DEBUG] [Thread-120333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:10:56.408 [DEBUG] [Thread-120333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:10:56.449 [DEBUG] [Thread-120333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:10:56.449 [DEBUG] [Thread-120333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:10:56.451 [DEBUG] [Thread-120333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:10:56.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:10:56.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:10:56.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:10:56.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:10:56.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:10:56.469 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:10:56.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:10:56.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299040 -999.00  +14.40  10.38     56   +5.80 1 1 1 1 1   888    0 8.30 6.80 ----- 9.7 10.4 210.7 14.8 21.0 -26.5 19.7 -25.0 18.1 -25.7 19.1 -26.2
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299040
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:10:56.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:10:23', tmtdew=9.4, humidity=53.19, cloud=0.0, wind=9.79, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:10:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:10:56.470 [DEBUG] [Thread-120333] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:10:56.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:10:56.569 [DEBUG] [Thread-120336] [transport.py] [_log()] starting thread (client mode): 0x2e3c14e0
2025-09-28T09:10:56.569 [DEBUG] [Thread-120336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:10:56.597 [DEBUG] [Thread-120336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:10:56.597 [INFO] [Thread-120336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] client lang: <none>
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] server lang: <none>
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] kex follows: False
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] Compression: none
2025-09-28T09:10:56.626 [DEBUG] [Thread-120336] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:10:56.700 [DEBUG] [Thread-120336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:10:56.701 [DEBUG] [Thread-120336] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:10:56.701 [DEBUG] [Thread-120336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:10:56.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:10:56.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:10:56.815 [DEBUG] [Thread-120336] [transport.py] [_log()] userauth is OK
2025-09-28T09:10:56.815 [DEBUG] [Thread-120336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:10:56.815 [DEBUG] [Thread-120336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:10:56.816 [DEBUG] [Thread-120336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:10:56.816 [DEBUG] [Thread-120336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:10:56.840 [INFO] [Thread-120336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:10:56.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-28T09:10:56.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:10:57.847 [DEBUG] [Thread-120336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:10:57.847 [DEBUG] [Thread-120336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:10:57.898 [DEBUG] [Thread-120336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:10:57.898 [DEBUG] [Thread-120336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:10:57.910 [DEBUG] [Thread-120336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:10:57.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:10:57.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-28T09:10:57.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-28T09:10:57.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:10:57.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:10:57.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:10:57.983 [DEBUG] [Thread-120336] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:10:58.927 [DEBUG] [Thread-120338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:07.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:11:07.964 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:11:07.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-28T09:11:08.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 10, 54), 9.42, 53.08, 0.0, 10.8, 13.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:11:08.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:10:54
2025-09-28T09:11:08.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:11:08.834 [DEBUG] [Thread-120339] [transport.py] [_log()] starting thread (client mode): 0x2e3c3e80
2025-09-28T09:11:08.834 [DEBUG] [Thread-120339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:08.858 [DEBUG] [Thread-120339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:11:08.858 [INFO] [Thread-120339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:11:08.861 [DEBUG] [Thread-120339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:08.862 [DEBUG] [Thread-120339] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] Compression: none
2025-09-28T09:11:08.863 [DEBUG] [Thread-120339] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:08.881 [DEBUG] [Thread-120339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:08.881 [DEBUG] [Thread-120339] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:08.882 [DEBUG] [Thread-120339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:11:08.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:11:08.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:08.883 [DEBUG] [Thread-120339] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:08.884 [DEBUG] [Thread-120339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:08.884 [DEBUG] [Thread-120339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:08.884 [DEBUG] [Thread-120339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:11:08.884 [DEBUG] [Thread-120339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:08.917 [INFO] [Thread-120339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:08.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:09.567 [DEBUG] [Thread-120339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:09.568 [DEBUG] [Thread-120339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:09.568 [DEBUG] [Thread-120339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:11:09.609 [DEBUG] [Thread-120339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:09.609 [DEBUG] [Thread-120339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:09.611 [DEBUG] [Thread-120339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:09.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:09.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:11:09.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:11:09.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:11:09.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:09.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:11:09.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:09.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299040 -999.00  +14.40  10.38     56   +5.80 1 1 1 1 1   888    0 8.30 6.80 ----- 9.7 10.4 210.7 14.8 21.0 -26.5 19.7 -25.0 18.1 -25.7 19.1 -26.2
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299040
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:11:09.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:10:54', tmtdew=9.42, humidity=53.08, cloud=0.0, wind=10.8, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:10:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:11:09.629 [DEBUG] [Thread-120339] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:09.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-28T09:11:09.713 [DEBUG] [Thread-120342] [transport.py] [_log()] starting thread (client mode): 0x2b96fbe0
2025-09-28T09:11:09.714 [DEBUG] [Thread-120342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:09.730 [DEBUG] [Thread-120342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:11:09.730 [INFO] [Thread-120342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:11:09.737 [DEBUG] [Thread-120342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:09.737 [DEBUG] [Thread-120342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:11:09.737 [DEBUG] [Thread-120342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:09.737 [DEBUG] [Thread-120342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:09.738 [DEBUG] [Thread-120342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:09.739 [DEBUG] [Thread-120342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:09.739 [DEBUG] [Thread-120342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:09.739 [DEBUG] [Thread-120342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:09.739 [DEBUG] [Thread-120342] [transport.py] [_log()] Compression: none
2025-09-28T09:11:09.739 [DEBUG] [Thread-120342] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:09.795 [DEBUG] [Thread-120342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:09.796 [DEBUG] [Thread-120342] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:09.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:11:09.796 [DEBUG] [Thread-120342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:11:09.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:09.854 [DEBUG] [Thread-120342] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:09.854 [DEBUG] [Thread-120342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:09.854 [DEBUG] [Thread-120342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:09.854 [DEBUG] [Thread-120342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:11:09.855 [DEBUG] [Thread-120342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:09.868 [INFO] [Thread-120342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:09.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-28T09:11:09.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:09.871 [DEBUG] [Thread-120344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:10.875 [DEBUG] [Thread-120342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:10.875 [DEBUG] [Thread-120342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:10.923 [DEBUG] [Thread-120342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:10.923 [DEBUG] [Thread-120342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:10.931 [DEBUG] [Thread-120342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:10.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:10.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-28T09:11:10.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') -> 00000000
2025-09-28T09:11:10.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:10.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:10.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:10.964 [DEBUG] [Thread-120342] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:17.995 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:17.996 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:20.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:11:20.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:11:20.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-28T09:11:21.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 10, 54), 9.42, 53.08, 0.0, 10.8, 13.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:11:21.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:10:54
2025-09-28T09:11:21.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:11:21.819 [DEBUG] [Thread-120345] [transport.py] [_log()] starting thread (client mode): 0x2b96ee90
2025-09-28T09:11:21.820 [DEBUG] [Thread-120345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:21.839 [DEBUG] [Thread-120345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:11:21.839 [INFO] [Thread-120345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:21.842 [DEBUG] [Thread-120345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:21.843 [DEBUG] [Thread-120345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:21.843 [DEBUG] [Thread-120345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:21.843 [DEBUG] [Thread-120345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:21.843 [DEBUG] [Thread-120345] [transport.py] [_log()] Compression: none
2025-09-28T09:11:21.843 [DEBUG] [Thread-120345] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:21.857 [DEBUG] [Thread-120345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:21.857 [DEBUG] [Thread-120345] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:21.857 [DEBUG] [Thread-120345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:11:21.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:11:21.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:21.858 [DEBUG] [Thread-120345] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:21.858 [DEBUG] [Thread-120345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:21.858 [DEBUG] [Thread-120345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:21.858 [DEBUG] [Thread-120345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:11:21.858 [DEBUG] [Thread-120345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:21.867 [INFO] [Thread-120345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:21.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:22.512 [DEBUG] [Thread-120345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:22.512 [DEBUG] [Thread-120345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:22.513 [DEBUG] [Thread-120345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:11:22.553 [DEBUG] [Thread-120345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:22.553 [DEBUG] [Thread-120345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:22.556 [DEBUG] [Thread-120345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:22.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:22.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:11:22.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:11:22.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:11:22.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:22.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:11:22.578 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:22.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:22.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:11:22.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299040 -999.00  +14.40  10.38     56   +5.80 1 1 1 1 1   888    0 8.30 6.80 ----- 9.7 10.4 210.7 14.8 21.0 -26.5 19.7 -25.0 18.1 -25.7 19.1 -26.2
2025-09-28T09:11:22.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:11:22.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:11:22.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299040
2025-09-28T09:11:22.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:11:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:11:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:11:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:11:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:11:22.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:10:54', tmtdew=9.42, humidity=53.08, cloud=0.0, wind=10.8, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:10:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:11:22.580 [DEBUG] [Thread-120345] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:22.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-28T09:11:22.700 [DEBUG] [Thread-120348] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T09:11:22.700 [DEBUG] [Thread-120348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:22.731 [DEBUG] [Thread-120348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:11:22.731 [INFO] [Thread-120348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:22.761 [DEBUG] [Thread-120348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:22.762 [DEBUG] [Thread-120348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:22.762 [DEBUG] [Thread-120348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:22.762 [DEBUG] [Thread-120348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:22.762 [DEBUG] [Thread-120348] [transport.py] [_log()] Compression: none
2025-09-28T09:11:22.762 [DEBUG] [Thread-120348] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:22.855 [DEBUG] [Thread-120348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:22.856 [DEBUG] [Thread-120348] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:22.856 [DEBUG] [Thread-120348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:11:22.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:11:22.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:22.948 [DEBUG] [Thread-120348] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:22.948 [DEBUG] [Thread-120348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:22.948 [DEBUG] [Thread-120348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:22.948 [DEBUG] [Thread-120348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:11:22.948 [DEBUG] [Thread-120348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:22.996 [INFO] [Thread-120348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:22.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-28T09:11:22.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:23.976 [DEBUG] [Thread-120348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:23.976 [DEBUG] [Thread-120348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:24.052 [DEBUG] [Thread-120348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:24.053 [DEBUG] [Thread-120348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:24.090 [DEBUG] [Thread-120348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:24.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:24.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-28T09:11:24.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') -> 00000000
2025-09-28T09:11:24.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:24.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:24.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:24.244 [DEBUG] [Thread-120348] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:24.907 [DEBUG] [Thread-120350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:34.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:11:34.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:11:34.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-28T09:11:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 11, 26), 9.3, 53.52, 0.0, 12.65, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:11:34.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:11:26
2025-09-28T09:11:34.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:11:35.082 [DEBUG] [Thread-120351] [transport.py] [_log()] starting thread (client mode): 0x2b96f820
2025-09-28T09:11:35.083 [DEBUG] [Thread-120351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:35.102 [DEBUG] [Thread-120351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:11:35.102 [INFO] [Thread-120351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:11:35.105 [DEBUG] [Thread-120351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:35.105 [DEBUG] [Thread-120351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] Compression: none
2025-09-28T09:11:35.106 [DEBUG] [Thread-120351] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:35.121 [DEBUG] [Thread-120351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:35.122 [DEBUG] [Thread-120351] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:35.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:11:35.123 [DEBUG] [Thread-120351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:11:35.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:35.125 [DEBUG] [Thread-120351] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:35.125 [DEBUG] [Thread-120351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:35.125 [DEBUG] [Thread-120351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:35.125 [DEBUG] [Thread-120351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:11:35.125 [DEBUG] [Thread-120351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:35.150 [INFO] [Thread-120351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:35.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:35.798 [DEBUG] [Thread-120351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:35.799 [DEBUG] [Thread-120351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:35.799 [DEBUG] [Thread-120351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:11:35.839 [DEBUG] [Thread-120351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:35.840 [DEBUG] [Thread-120351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:35.843 [DEBUG] [Thread-120351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:35.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:35.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:11:35.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:11:35.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:11:35.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:35.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:11:35.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:35.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:11:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299387 -999.00  +14.60   7.49     56   +5.90 1 1 1 1 1   888    0 8.43 5.96 ----- 4.8 7.5 205.7 11.6 21.0 -25.8 19.7 -26.1 18.2 -24.4 19.2 -25.0
2025-09-28T09:11:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:11:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:11:35.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299387
2025-09-28T09:11:35.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:11:35.868 [DEBUG] [Thread-120351] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:35.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:11:35.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:11:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:11:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:11:35.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:11:26', tmtdew=9.3, humidity=53.52, cloud=0.0, wind=12.65, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:11:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:11:35.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:11:35.959 [DEBUG] [Thread-120354] [transport.py] [_log()] starting thread (client mode): 0x2b96f0a0
2025-09-28T09:11:35.959 [DEBUG] [Thread-120354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:35.973 [DEBUG] [Thread-120354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:11:35.974 [INFO] [Thread-120354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:11:35.981 [DEBUG] [Thread-120354] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] Compression: none
2025-09-28T09:11:35.982 [DEBUG] [Thread-120354] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:36.043 [DEBUG] [Thread-120354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:36.043 [DEBUG] [Thread-120354] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:36.044 [DEBUG] [Thread-120354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:11:36.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:11:36.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:36.099 [DEBUG] [Thread-120354] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:36.099 [DEBUG] [Thread-120354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:36.100 [DEBUG] [Thread-120354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:36.100 [DEBUG] [Thread-120354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:11:36.100 [DEBUG] [Thread-120354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:36.119 [INFO] [Thread-120354] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:36.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:11:36.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:37.077 [DEBUG] [Thread-120354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:37.077 [DEBUG] [Thread-120354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:37.125 [DEBUG] [Thread-120354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:37.125 [DEBUG] [Thread-120354] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:37.134 [DEBUG] [Thread-120354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:37.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:37.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-28T09:11:37.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-28T09:11:37.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:37.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:37.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:37.169 [DEBUG] [Thread-120354] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:39.939 [DEBUG] [Thread-120356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:47.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:11:47.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:11:47.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-28T09:11:47.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 11, 26), 9.3, 53.52, 0.0, 12.65, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:11:47.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:11:26
2025-09-28T09:11:47.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:11:48.043 [DEBUG] [Thread-120357] [transport.py] [_log()] starting thread (client mode): 0x2b96c310
2025-09-28T09:11:48.044 [DEBUG] [Thread-120357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:48.065 [DEBUG] [Thread-120357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:11:48.065 [INFO] [Thread-120357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:48.068 [DEBUG] [Thread-120357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:48.069 [DEBUG] [Thread-120357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:48.069 [DEBUG] [Thread-120357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:48.069 [DEBUG] [Thread-120357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:48.069 [DEBUG] [Thread-120357] [transport.py] [_log()] Compression: none
2025-09-28T09:11:48.069 [DEBUG] [Thread-120357] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:48.084 [DEBUG] [Thread-120357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:48.084 [DEBUG] [Thread-120357] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:48.085 [DEBUG] [Thread-120357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:11:48.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:11:48.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:48.086 [DEBUG] [Thread-120357] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:48.086 [DEBUG] [Thread-120357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:48.086 [DEBUG] [Thread-120357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:48.086 [DEBUG] [Thread-120357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:11:48.086 [DEBUG] [Thread-120357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:48.100 [INFO] [Thread-120357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:48.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:48.745 [DEBUG] [Thread-120357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:48.746 [DEBUG] [Thread-120357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:48.746 [DEBUG] [Thread-120357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:11:48.787 [DEBUG] [Thread-120357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:48.787 [DEBUG] [Thread-120357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:48.789 [DEBUG] [Thread-120357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:48.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:48.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:11:48.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:11:48.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:11:48.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:48.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:11:48.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299387 -999.00  +14.60   7.49     56   +5.90 1 1 1 1 1   888    0 8.43 5.96 ----- 4.8 7.5 205.7 11.6 21.0 -25.8 19.7 -26.1 18.2 -24.4 19.2 -25.0
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299387
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:11:48.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:11:26', tmtdew=9.3, humidity=53.52, cloud=0.0, wind=12.65, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:11:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:11:48.809 [DEBUG] [Thread-120357] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:48.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-28T09:11:48.906 [DEBUG] [Thread-120360] [transport.py] [_log()] starting thread (client mode): 0x2e3c3550
2025-09-28T09:11:48.906 [DEBUG] [Thread-120360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:11:48.951 [DEBUG] [Thread-120360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:11:48.952 [INFO] [Thread-120360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] client lang: <none>
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] server lang: <none>
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] kex follows: False
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] Compression: none
2025-09-28T09:11:48.989 [DEBUG] [Thread-120360] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:11:49.076 [DEBUG] [Thread-120360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:11:49.076 [DEBUG] [Thread-120360] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:11:49.076 [DEBUG] [Thread-120360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:11:49.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:11:49.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:11:49.192 [DEBUG] [Thread-120360] [transport.py] [_log()] userauth is OK
2025-09-28T09:11:49.192 [DEBUG] [Thread-120360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:11:49.192 [DEBUG] [Thread-120360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:11:49.192 [DEBUG] [Thread-120360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:11:49.192 [DEBUG] [Thread-120360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:11:49.221 [INFO] [Thread-120360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:11:49.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-28T09:11:49.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:11:50.211 [DEBUG] [Thread-120360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:11:50.211 [DEBUG] [Thread-120360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:11:50.288 [DEBUG] [Thread-120360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:11:50.288 [DEBUG] [Thread-120360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:11:50.326 [DEBUG] [Thread-120360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:11:50.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:11:50.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-28T09:11:50.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') -> 00000000
2025-09-28T09:11:50.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:11:50.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:11:50.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:11:50.469 [DEBUG] [Thread-120360] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:11:54.993 [DEBUG] [Thread-120362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:11:58.981 [DEBUG] [Thread-120363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:00.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:12:00.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:12:00.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-28T09:12:01.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 11, 26), 9.3, 53.52, 0.0, 12.65, 13.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:12:01.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:11:26
2025-09-28T09:12:01.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:12:01.319 [DEBUG] [Thread-120364] [transport.py] [_log()] starting thread (client mode): 0x2e3c2ce0
2025-09-28T09:12:01.319 [DEBUG] [Thread-120364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:01.332 [DEBUG] [Thread-120364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:12:01.332 [INFO] [Thread-120364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:12:01.334 [DEBUG] [Thread-120364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] Compression: none
2025-09-28T09:12:01.335 [DEBUG] [Thread-120364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:01.348 [DEBUG] [Thread-120364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:01.348 [DEBUG] [Thread-120364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:01.349 [DEBUG] [Thread-120364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:12:01.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:12:01.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:01.350 [DEBUG] [Thread-120364] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:01.350 [DEBUG] [Thread-120364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:01.350 [DEBUG] [Thread-120364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:01.350 [DEBUG] [Thread-120364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:12:01.350 [DEBUG] [Thread-120364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:01.372 [INFO] [Thread-120364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:01.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:01.913 [DEBUG] [Thread-120364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:01.913 [DEBUG] [Thread-120364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:01.913 [DEBUG] [Thread-120364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:12:01.954 [DEBUG] [Thread-120364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:01.954 [DEBUG] [Thread-120364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:01.956 [DEBUG] [Thread-120364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:01.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:01.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:12:01.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:12:01.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:12:01.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:01.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:12:01.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299734 -999.00  +14.90   4.59     55   +6.10 1 1 1 1 1   888    0 8.45 6.33 ----- 8.6 4.6 168.0 11.2 21.1 -25.9 19.8 -24.3 18.2 -23.9 19.3 -25.0
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299734
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:12:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:11:26', tmtdew=9.3, humidity=53.52, cloud=0.0, wind=12.65, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:11:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:12:01.975 [DEBUG] [Thread-120364] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:02.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-28T09:12:02.061 [DEBUG] [Thread-120367] [transport.py] [_log()] starting thread (client mode): 0x2e3c1780
2025-09-28T09:12:02.061 [DEBUG] [Thread-120367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:02.078 [DEBUG] [Thread-120367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:12:02.079 [INFO] [Thread-120367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:02.086 [DEBUG] [Thread-120367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] Compression: none
2025-09-28T09:12:02.087 [DEBUG] [Thread-120367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:02.143 [DEBUG] [Thread-120367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:02.143 [DEBUG] [Thread-120367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:02.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:12:02.143 [DEBUG] [Thread-120367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:12:02.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:02.200 [DEBUG] [Thread-120367] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:02.200 [DEBUG] [Thread-120367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:02.200 [DEBUG] [Thread-120367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:02.200 [DEBUG] [Thread-120367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:12:02.201 [DEBUG] [Thread-120367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:02.220 [INFO] [Thread-120367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:02.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-28T09:12:02.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:03.230 [DEBUG] [Thread-120367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:03.230 [DEBUG] [Thread-120367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:03.278 [DEBUG] [Thread-120367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:03.278 [DEBUG] [Thread-120367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:03.288 [DEBUG] [Thread-120367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:03.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:03.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:12:03.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-28T09:12:03.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:03.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:03.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:03.323 [DEBUG] [Thread-120367] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:10.023 [DEBUG] [Thread-120369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:13.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:12:13.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:12:13.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-28T09:12:13.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 11, 58), 9.4, 53.37, 0.0, 10.55, 13.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:12:13.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:11:58
2025-09-28T09:12:14.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:12:14.180 [DEBUG] [Thread-120370] [transport.py] [_log()] starting thread (client mode): 0x2e3c0340
2025-09-28T09:12:14.180 [DEBUG] [Thread-120370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:14.202 [DEBUG] [Thread-120370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:12:14.203 [INFO] [Thread-120370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:12:14.206 [DEBUG] [Thread-120370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:14.206 [DEBUG] [Thread-120370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:12:14.206 [DEBUG] [Thread-120370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:14.206 [DEBUG] [Thread-120370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:14.206 [DEBUG] [Thread-120370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] Compression: none
2025-09-28T09:12:14.207 [DEBUG] [Thread-120370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:14.224 [DEBUG] [Thread-120370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:14.224 [DEBUG] [Thread-120370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:14.225 [DEBUG] [Thread-120370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:12:14.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:12:14.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:14.227 [DEBUG] [Thread-120370] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:14.227 [DEBUG] [Thread-120370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:14.227 [DEBUG] [Thread-120370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:14.227 [DEBUG] [Thread-120370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:12:14.227 [DEBUG] [Thread-120370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:14.252 [INFO] [Thread-120370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:14.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:14.887 [DEBUG] [Thread-120370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:14.887 [DEBUG] [Thread-120370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:14.888 [DEBUG] [Thread-120370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:12:14.928 [DEBUG] [Thread-120370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:14.928 [DEBUG] [Thread-120370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:14.931 [DEBUG] [Thread-120370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:14.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:14.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:12:14.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:12:14.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:12:14.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:14.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:12:14.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299734 -999.00  +14.90   4.59     55   +6.10 1 1 1 1 1   888    0 8.45 6.33 ----- 8.6 4.6 168.0 11.2 21.1 -25.9 19.8 -24.3 18.2 -23.9 19.3 -25.0
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:12:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299734
2025-09-28T09:12:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:12:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:12:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:12:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:12:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:12:14.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:11:58', tmtdew=9.4, humidity=53.37, cloud=0.0, wind=10.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:11:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:12:14.958 [DEBUG] [Thread-120370] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:15.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-28T09:12:15.052 [DEBUG] [Thread-120373] [transport.py] [_log()] starting thread (client mode): 0x2b945630
2025-09-28T09:12:15.053 [DEBUG] [Thread-120373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:15.068 [DEBUG] [Thread-120373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:12:15.068 [INFO] [Thread-120373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:12:15.075 [DEBUG] [Thread-120373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] Compression: none
2025-09-28T09:12:15.076 [DEBUG] [Thread-120373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:15.132 [DEBUG] [Thread-120373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:15.132 [DEBUG] [Thread-120373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:15.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:12:15.133 [DEBUG] [Thread-120373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:12:15.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:15.188 [DEBUG] [Thread-120373] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:15.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:15.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:15.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:12:15.188 [DEBUG] [Thread-120373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:15.207 [INFO] [Thread-120373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:15.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-28T09:12:15.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:16.210 [DEBUG] [Thread-120373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:16.210 [DEBUG] [Thread-120373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:16.259 [DEBUG] [Thread-120373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:16.259 [DEBUG] [Thread-120373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:16.268 [DEBUG] [Thread-120373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:16.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:16.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')
2025-09-28T09:12:16.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-28T09:12:16.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:16.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:16.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:16.303 [DEBUG] [Thread-120373] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:18.142 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:18.143 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:25.068 [DEBUG] [Thread-120375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:26.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:12:26.298 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:12:26.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-28T09:12:26.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 11, 58), 9.4, 53.37, 0.0, 10.55, 13.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:12:26.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:11:58
2025-09-28T09:12:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:12:27.185 [DEBUG] [Thread-120376] [transport.py] [_log()] starting thread (client mode): 0x2b96dc00
2025-09-28T09:12:27.185 [DEBUG] [Thread-120376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:27.207 [DEBUG] [Thread-120376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:12:27.207 [INFO] [Thread-120376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] Compression: none
2025-09-28T09:12:27.210 [DEBUG] [Thread-120376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:27.226 [DEBUG] [Thread-120376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:27.226 [DEBUG] [Thread-120376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:27.226 [DEBUG] [Thread-120376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:12:27.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:12:27.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:27.227 [DEBUG] [Thread-120376] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:27.227 [DEBUG] [Thread-120376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:27.227 [DEBUG] [Thread-120376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:27.227 [DEBUG] [Thread-120376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:12:27.227 [DEBUG] [Thread-120376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:27.242 [INFO] [Thread-120376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:27.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:27.884 [DEBUG] [Thread-120376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:27.884 [DEBUG] [Thread-120376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:27.884 [DEBUG] [Thread-120376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:12:27.925 [DEBUG] [Thread-120376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:27.925 [DEBUG] [Thread-120376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:27.927 [DEBUG] [Thread-120376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:27.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:27.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:12:27.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:12:27.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:12:27.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:27.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:12:27.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.299734 -999.00  +14.90   4.59     55   +6.10 1 1 1 1 1   888    0 8.45 6.33 ----- 8.6 4.6 168.0 11.2 21.1 -25.9 19.8 -24.3 18.2 -23.9 19.3 -25.0
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.299734
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:12:27.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:12:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:12:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:12:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:12:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:11:58', tmtdew=9.4, humidity=53.37, cloud=0.0, wind=10.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:11:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:12:27.946 [DEBUG] [Thread-120376] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:28.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-28T09:12:28.046 [DEBUG] [Thread-120379] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T09:12:28.046 [DEBUG] [Thread-120379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:28.061 [DEBUG] [Thread-120379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:12:28.061 [INFO] [Thread-120379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:28.068 [DEBUG] [Thread-120379] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] Compression: none
2025-09-28T09:12:28.069 [DEBUG] [Thread-120379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:28.127 [DEBUG] [Thread-120379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:28.127 [DEBUG] [Thread-120379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:28.127 [DEBUG] [Thread-120379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:12:28.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:12:28.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:28.184 [DEBUG] [Thread-120379] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:28.184 [DEBUG] [Thread-120379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:28.184 [DEBUG] [Thread-120379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:28.184 [DEBUG] [Thread-120379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:12:28.184 [DEBUG] [Thread-120379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:28.198 [INFO] [Thread-120379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:28.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:12:28.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:29.270 [DEBUG] [Thread-120379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:29.270 [DEBUG] [Thread-120379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:29.318 [DEBUG] [Thread-120379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:29.318 [DEBUG] [Thread-120379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:29.326 [DEBUG] [Thread-120379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:29.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:29.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-28T09:12:29.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-28T09:12:29.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:29.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:29.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:29.357 [DEBUG] [Thread-120379] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:39.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:12:39.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:12:39.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-28T09:12:39.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 12, 30), 9.54, 52.86, 0.0, 12.88, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:12:39.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:12:30
2025-09-28T09:12:40.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:12:40.118 [DEBUG] [Thread-120381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:40.209 [DEBUG] [Thread-120382] [transport.py] [_log()] starting thread (client mode): 0x2b94edd0
2025-09-28T09:12:40.209 [DEBUG] [Thread-120382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:40.230 [DEBUG] [Thread-120382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:12:40.230 [INFO] [Thread-120382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:40.233 [DEBUG] [Thread-120382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:40.234 [DEBUG] [Thread-120382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:40.234 [DEBUG] [Thread-120382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:40.234 [DEBUG] [Thread-120382] [transport.py] [_log()] Compression: none
2025-09-28T09:12:40.234 [DEBUG] [Thread-120382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:40.251 [DEBUG] [Thread-120382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:40.252 [DEBUG] [Thread-120382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:40.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:12:40.252 [DEBUG] [Thread-120382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:12:40.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:40.255 [DEBUG] [Thread-120382] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:40.255 [DEBUG] [Thread-120382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:40.255 [DEBUG] [Thread-120382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:40.255 [DEBUG] [Thread-120382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:12:40.255 [DEBUG] [Thread-120382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:40.279 [INFO] [Thread-120382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:40.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:40.939 [DEBUG] [Thread-120382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:40.939 [DEBUG] [Thread-120382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:40.939 [DEBUG] [Thread-120382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:12:40.980 [DEBUG] [Thread-120382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:40.980 [DEBUG] [Thread-120382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:40.983 [DEBUG] [Thread-120382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:40.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:40.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:12:40.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:12:40.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:12:41.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:41.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:12:41.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:41.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:41.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:12:41.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.300081 -999.00  +14.80   6.72     54   +5.80 1 1 1 1 1   888    0 8.48 8.38 ----- 6.0 6.7 200.8 12.8 21.2 -26.9 19.8 -25.4 18.3 -24.6 19.4 -25.9
2025-09-28T09:12:41.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:12:41.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:12:41.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.300081
2025-09-28T09:12:41.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:12:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:12:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:12:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:12:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:12:41.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:12:30', tmtdew=9.54, humidity=52.86, cloud=0.0, wind=12.88, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:12:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:12:41.005 [DEBUG] [Thread-120382] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:41.084 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:12:41.096 [DEBUG] [Thread-120385] [transport.py] [_log()] starting thread (client mode): 0x2e3c2a10
2025-09-28T09:12:41.096 [DEBUG] [Thread-120385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:41.111 [DEBUG] [Thread-120385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:12:41.111 [INFO] [Thread-120385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:12:41.118 [DEBUG] [Thread-120385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:41.118 [DEBUG] [Thread-120385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:12:41.118 [DEBUG] [Thread-120385] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:41.118 [DEBUG] [Thread-120385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:41.118 [DEBUG] [Thread-120385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] Compression: none
2025-09-28T09:12:41.119 [DEBUG] [Thread-120385] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:41.178 [DEBUG] [Thread-120385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:41.178 [DEBUG] [Thread-120385] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:41.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:12:41.180 [DEBUG] [Thread-120385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:12:41.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:41.236 [DEBUG] [Thread-120385] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:41.237 [DEBUG] [Thread-120385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:41.237 [DEBUG] [Thread-120385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:41.237 [DEBUG] [Thread-120385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:12:41.237 [DEBUG] [Thread-120385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:41.255 [INFO] [Thread-120385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:41.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-28T09:12:41.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:42.218 [DEBUG] [Thread-120385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:42.218 [DEBUG] [Thread-120385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:42.266 [DEBUG] [Thread-120385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:42.266 [DEBUG] [Thread-120385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:42.275 [DEBUG] [Thread-120385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:42.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12: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-28T09:12: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-28T09:12:42.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:42.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:42.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:42.309 [DEBUG] [Thread-120385] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:52.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:12:52.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:12: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-28T09:12:52.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 12, 30), 9.54, 52.86, 0.0, 12.88, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:12:52.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:12:30
2025-09-28T09:12:53.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:12:53.156 [DEBUG] [Thread-120387] [transport.py] [_log()] starting thread (client mode): 0x2e3c2710
2025-09-28T09:12:53.156 [DEBUG] [Thread-120387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:53.177 [DEBUG] [Thread-120387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:12:53.177 [INFO] [Thread-120387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:12:53.180 [DEBUG] [Thread-120387] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:53.181 [DEBUG] [Thread-120387] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] Compression: none
2025-09-28T09:12:53.182 [DEBUG] [Thread-120387] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:53.197 [DEBUG] [Thread-120387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:53.197 [DEBUG] [Thread-120387] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:53.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:12:53.198 [DEBUG] [Thread-120387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:12:53.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:53.200 [DEBUG] [Thread-120387] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:53.201 [DEBUG] [Thread-120387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:53.201 [DEBUG] [Thread-120387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:53.201 [DEBUG] [Thread-120387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:12:53.201 [DEBUG] [Thread-120387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:53.221 [INFO] [Thread-120387] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:53.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:53.875 [DEBUG] [Thread-120387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:53.875 [DEBUG] [Thread-120387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:53.875 [DEBUG] [Thread-120387] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:12:53.916 [DEBUG] [Thread-120387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:53.917 [DEBUG] [Thread-120387] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:53.919 [DEBUG] [Thread-120387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:53.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:53.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:12:53.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:12:53.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:12:53.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:53.942 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:12:53.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:53.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.300081 -999.00  +14.80   6.72     54   +5.80 1 1 1 1 1   888    0 8.48 8.38 ----- 6.0 6.7 200.8 12.8 21.2 -26.9 19.8 -25.4 18.3 -24.6 19.4 -25.9
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.300081
2025-09-28T09:12:53.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:12:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:12:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:12:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:12:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:12:53.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:12:30', tmtdew=9.54, humidity=52.86, cloud=0.0, wind=12.88, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:12:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:12:53.945 [DEBUG] [Thread-120387] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:54.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-28T09:12:54.073 [DEBUG] [Thread-120390] [transport.py] [_log()] starting thread (client mode): 0x2e38d0c0
2025-09-28T09:12:54.074 [DEBUG] [Thread-120390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:12:54.119 [DEBUG] [Thread-120390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:12:54.119 [INFO] [Thread-120390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] client lang: <none>
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] server lang: <none>
2025-09-28T09:12:54.158 [DEBUG] [Thread-120390] [transport.py] [_log()] kex follows: False
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] Compression: none
2025-09-28T09:12:54.159 [DEBUG] [Thread-120390] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:12:54.249 [DEBUG] [Thread-120390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:12:54.249 [DEBUG] [Thread-120390] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:12:54.250 [DEBUG] [Thread-120390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:12:54.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:12:54.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:12:54.368 [DEBUG] [Thread-120390] [transport.py] [_log()] userauth is OK
2025-09-28T09:12:54.368 [DEBUG] [Thread-120390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:12:54.368 [DEBUG] [Thread-120390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:12:54.369 [DEBUG] [Thread-120390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:12:54.369 [DEBUG] [Thread-120390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:12:54.419 [INFO] [Thread-120390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:12:54.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-28T09:12:54.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:12:55.147 [DEBUG] [Thread-120392 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:12:55.404 [DEBUG] [Thread-120390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:12:55.404 [DEBUG] [Thread-120390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:12:55.483 [DEBUG] [Thread-120390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:12:55.484 [DEBUG] [Thread-120390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:12:55.525 [DEBUG] [Thread-120390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:12:55.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:12:55.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-28T09:12:55.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-28T09:12:55.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:12:55.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:12:55.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:12:55.686 [DEBUG] [Thread-120390] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:12:59.036 [DEBUG] [Thread-120393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:05.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:13:05.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:13:05.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-28T09:13:06.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 13, 2), 9.41, 53.31, 0.0, 13.55, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:13:06.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:13:02
2025-09-28T09:13:06.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:13:06.542 [DEBUG] [Thread-120394] [transport.py] [_log()] starting thread (client mode): 0x2b9469e0
2025-09-28T09:13:06.542 [DEBUG] [Thread-120394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:06.563 [DEBUG] [Thread-120394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:13:06.563 [INFO] [Thread-120394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] Compression: none
2025-09-28T09:13:06.565 [DEBUG] [Thread-120394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:06.572 [DEBUG] [Thread-120394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:06.572 [DEBUG] [Thread-120394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:06.572 [DEBUG] [Thread-120394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:13:06.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:13:06.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:06.573 [DEBUG] [Thread-120394] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:06.573 [DEBUG] [Thread-120394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:06.573 [DEBUG] [Thread-120394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:06.573 [DEBUG] [Thread-120394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:13:06.573 [DEBUG] [Thread-120394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:06.589 [INFO] [Thread-120394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:06.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:07.208 [DEBUG] [Thread-120394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:07.208 [DEBUG] [Thread-120394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:07.208 [DEBUG] [Thread-120394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:13:07.249 [DEBUG] [Thread-120394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:07.249 [DEBUG] [Thread-120394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:07.251 [DEBUG] [Thread-120394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:07.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:07.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:13:07.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:13:07.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:13:07.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:07.267 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:13:07.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.300081 -999.00  +14.80   6.72     54   +5.80 1 1 1 1 1   888    0 8.48 8.38 ----- 6.0 6.7 200.8 12.8 21.2 -26.9 19.8 -25.4 18.3 -24.6 19.4 -25.9
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.300081
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:13:07.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:13:02', tmtdew=9.41, humidity=53.31, cloud=0.0, wind=13.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:12:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:13:07.269 [DEBUG] [Thread-120394] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:07.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-28T09:13:07.386 [DEBUG] [Thread-120397] [transport.py] [_log()] starting thread (client mode): 0x2b96c3a0
2025-09-28T09:13:07.386 [DEBUG] [Thread-120397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:07.428 [DEBUG] [Thread-120397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:13:07.428 [INFO] [Thread-120397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] Compression: none
2025-09-28T09:13:07.469 [DEBUG] [Thread-120397] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:07.557 [DEBUG] [Thread-120397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:07.557 [DEBUG] [Thread-120397] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:07.557 [DEBUG] [Thread-120397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:13:07.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:13:07.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:07.682 [DEBUG] [Thread-120397] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:07.682 [DEBUG] [Thread-120397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:07.682 [DEBUG] [Thread-120397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:07.682 [DEBUG] [Thread-120397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:13:07.682 [DEBUG] [Thread-120397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:07.728 [INFO] [Thread-120397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:07.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:13:07.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:08.724 [DEBUG] [Thread-120397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:08.724 [DEBUG] [Thread-120397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:08.806 [DEBUG] [Thread-120397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:08.807 [DEBUG] [Thread-120397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:08.848 [DEBUG] [Thread-120397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:08.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:08.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-28T09:13:08.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-28T09:13:08.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:08.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:08.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:09.012 [DEBUG] [Thread-120397] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:10.195 [DEBUG] [Thread-120399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:18.284 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:18.285 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:18.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:13:18.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:13:18.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-28T09:13:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 13, 2), 9.41, 53.31, 0.0, 13.55, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:13:19.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:13:02
2025-09-28T09:13:19.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:13:19.829 [DEBUG] [Thread-120400] [transport.py] [_log()] starting thread (client mode): 0x2e361090
2025-09-28T09:13:19.829 [DEBUG] [Thread-120400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:19.848 [DEBUG] [Thread-120400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:13:19.848 [INFO] [Thread-120400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:19.851 [DEBUG] [Thread-120400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] Compression: none
2025-09-28T09:13:19.852 [DEBUG] [Thread-120400] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:19.869 [DEBUG] [Thread-120400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:19.869 [DEBUG] [Thread-120400] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:19.870 [DEBUG] [Thread-120400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:13:19.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:13:19.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:19.871 [DEBUG] [Thread-120400] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:19.872 [DEBUG] [Thread-120400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:19.872 [DEBUG] [Thread-120400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:19.872 [DEBUG] [Thread-120400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:13:19.872 [DEBUG] [Thread-120400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:19.896 [INFO] [Thread-120400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:19.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:20.546 [DEBUG] [Thread-120400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:20.546 [DEBUG] [Thread-120400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:20.546 [DEBUG] [Thread-120400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:13:20.587 [DEBUG] [Thread-120400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:20.587 [DEBUG] [Thread-120400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:20.590 [DEBUG] [Thread-120400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:20.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:20.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:13:20.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:13:20.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:13:20.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:20.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:13:20.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:20.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.300428 -999.00  +15.10   6.90     54   +6.10 1 1 1 1 1   888    0 8.64 10.92 ----- 15.7 6.9 178.8 13.5 21.2 -25.6 19.8 -24.6 18.4 -24.5 19.4 -26.1
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.300428
2025-09-28T09:13:20.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:13:20.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:13:20.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:13:20.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:13:20.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:13:20.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:13:02', tmtdew=9.41, humidity=53.31, cloud=0.0, wind=13.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:12:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:13:20.616 [DEBUG] [Thread-120400] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:20.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-28T09:13:20.740 [DEBUG] [Thread-120403] [transport.py] [_log()] starting thread (client mode): 0x2b9bbbb0
2025-09-28T09:13:20.740 [DEBUG] [Thread-120403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:20.787 [DEBUG] [Thread-120403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:13:20.788 [INFO] [Thread-120403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:13:20.829 [DEBUG] [Thread-120403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:20.829 [DEBUG] [Thread-120403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:13:20.829 [DEBUG] [Thread-120403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:20.829 [DEBUG] [Thread-120403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:20.830 [DEBUG] [Thread-120403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:20.831 [DEBUG] [Thread-120403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:20.831 [DEBUG] [Thread-120403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:20.831 [DEBUG] [Thread-120403] [transport.py] [_log()] Compression: none
2025-09-28T09:13:20.831 [DEBUG] [Thread-120403] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:20.927 [DEBUG] [Thread-120403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:20.927 [DEBUG] [Thread-120403] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:20.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:13:20.929 [DEBUG] [Thread-120403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:13:20.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:21.051 [DEBUG] [Thread-120403] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:21.051 [DEBUG] [Thread-120403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:21.051 [DEBUG] [Thread-120403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:21.051 [DEBUG] [Thread-120403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:13:21.052 [DEBUG] [Thread-120403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:21.107 [INFO] [Thread-120403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:21.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-28T09:13:21.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:22.118 [DEBUG] [Thread-120403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:22.118 [DEBUG] [Thread-120403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:22.192 [DEBUG] [Thread-120403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:22.192 [DEBUG] [Thread-120403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:22.232 [DEBUG] [Thread-120403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:22.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:22.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')
2025-09-28T09:13: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-28T09:13:22.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:22.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:22.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:22.404 [DEBUG] [Thread-120403] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:25.242 [DEBUG] [Thread-120405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:32.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:13:32.367 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:13: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-28T09:13:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 13, 2), 9.41, 53.31, 0.0, 13.55, 13.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:13:32.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:13:02
2025-09-28T09:13:33.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:13:33.191 [DEBUG] [Thread-120406] [transport.py] [_log()] starting thread (client mode): 0x2b9449d0
2025-09-28T09:13:33.192 [DEBUG] [Thread-120406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:33.211 [DEBUG] [Thread-120406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:13:33.211 [INFO] [Thread-120406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:13:33.214 [DEBUG] [Thread-120406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:33.214 [DEBUG] [Thread-120406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:13:33.214 [DEBUG] [Thread-120406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:33.214 [DEBUG] [Thread-120406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] Compression: none
2025-09-28T09:13:33.215 [DEBUG] [Thread-120406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:33.233 [DEBUG] [Thread-120406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:33.234 [DEBUG] [Thread-120406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:33.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:13:33.235 [DEBUG] [Thread-120406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:13:33.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:33.237 [DEBUG] [Thread-120406] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:33.238 [DEBUG] [Thread-120406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:33.238 [DEBUG] [Thread-120406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:33.238 [DEBUG] [Thread-120406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:13:33.238 [DEBUG] [Thread-120406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:33.262 [INFO] [Thread-120406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:33.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:33.899 [DEBUG] [Thread-120406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:33.899 [DEBUG] [Thread-120406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:33.900 [DEBUG] [Thread-120406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:13:33.940 [DEBUG] [Thread-120406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:33.941 [DEBUG] [Thread-120406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:33.944 [DEBUG] [Thread-120406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:33.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:33.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:13:33.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:13:33.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:13:33.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:33.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:13:33.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.300428 -999.00  +15.10   6.90     54   +6.10 1 1 1 1 1   888    0 8.64 10.92 ----- 15.7 6.9 178.8 13.5 21.2 -25.6 19.8 -24.6 18.4 -24.5 19.4 -26.1
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:13:33.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.300428
2025-09-28T09:13:33.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:13:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:13:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:13:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:13:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:13:33.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:13:02', tmtdew=9.41, humidity=53.31, cloud=0.0, wind=13.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:12:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:13:33.970 [DEBUG] [Thread-120406] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:34.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-28T09:13:34.094 [DEBUG] [Thread-120409] [transport.py] [_log()] starting thread (client mode): 0x2e3c1750
2025-09-28T09:13:34.095 [DEBUG] [Thread-120409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:34.135 [DEBUG] [Thread-120409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:13:34.135 [INFO] [Thread-120409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:34.170 [DEBUG] [Thread-120409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] Compression: none
2025-09-28T09:13:34.171 [DEBUG] [Thread-120409] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:34.259 [DEBUG] [Thread-120409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:34.260 [DEBUG] [Thread-120409] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:34.260 [DEBUG] [Thread-120409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:13:34.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:13:34.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:34.371 [DEBUG] [Thread-120409] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:34.372 [DEBUG] [Thread-120409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:34.372 [DEBUG] [Thread-120409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:34.372 [DEBUG] [Thread-120409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:13:34.372 [DEBUG] [Thread-120409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:34.414 [INFO] [Thread-120409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:34.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-28T09:13:34.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:35.408 [DEBUG] [Thread-120409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:35.408 [DEBUG] [Thread-120409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:35.462 [DEBUG] [Thread-120409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:35.462 [DEBUG] [Thread-120409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:35.497 [DEBUG] [Thread-120409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:35.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:35.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-28T09:13:35.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-28T09:13:35.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:35.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:35.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:35.617 [DEBUG] [Thread-120409] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:40.287 [DEBUG] [Thread-120411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:45.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:13:45.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:13:45.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-28T09:13:46.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 13, 34), 9.69, 52.06, 0.0, 12.72, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:13:46.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:13:34
2025-09-28T09:13:46.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:13:46.465 [DEBUG] [Thread-120412] [transport.py] [_log()] starting thread (client mode): 0x2e3607f0
2025-09-28T09:13:46.465 [DEBUG] [Thread-120412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:46.486 [DEBUG] [Thread-120412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:13:46.486 [INFO] [Thread-120412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:46.489 [DEBUG] [Thread-120412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] Compression: none
2025-09-28T09:13:46.490 [DEBUG] [Thread-120412] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:46.506 [DEBUG] [Thread-120412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:46.506 [DEBUG] [Thread-120412] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:46.506 [DEBUG] [Thread-120412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:13:46.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:13:46.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:46.507 [DEBUG] [Thread-120412] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:46.507 [DEBUG] [Thread-120412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:46.508 [DEBUG] [Thread-120412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:46.508 [DEBUG] [Thread-120412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:13:46.508 [DEBUG] [Thread-120412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:46.521 [INFO] [Thread-120412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:46.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:47.177 [DEBUG] [Thread-120412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:47.177 [DEBUG] [Thread-120412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:47.178 [DEBUG] [Thread-120412] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:13:47.218 [DEBUG] [Thread-120412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:47.218 [DEBUG] [Thread-120412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:47.221 [DEBUG] [Thread-120412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:47.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:47.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:13:47.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:13:47.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:13:47.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:47.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:13:47.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.301123 -999.00  +14.70   9.60     54   +5.60 1 1 1 1 1   888    0 8.88 16.17 ----- 9.1 9.6 200.6 17.5 21.1 -27.2 19.7 -27.0 18.4 -25.2 19.4 -26.4
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:13:47.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.301123
2025-09-28T09:13:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:13:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:13:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:13:47.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:13:47.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:13:47.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:13:34', tmtdew=9.69, humidity=52.06, cloud=0.0, wind=12.72, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:13:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:13:47.245 [DEBUG] [Thread-120412] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13: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-28T09:13:47.365 [DEBUG] [Thread-120415] [transport.py] [_log()] starting thread (client mode): 0x2e38ce20
2025-09-28T09:13:47.366 [DEBUG] [Thread-120415] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:47.413 [DEBUG] [Thread-120415] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:13:47.414 [INFO] [Thread-120415] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:47.454 [DEBUG] [Thread-120415] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] Compression: none
2025-09-28T09:13:47.455 [DEBUG] [Thread-120415] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:47.542 [DEBUG] [Thread-120415] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:47.543 [DEBUG] [Thread-120415] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:47.543 [DEBUG] [Thread-120415] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:13:47.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:13:47.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:47.662 [DEBUG] [Thread-120415] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:47.662 [DEBUG] [Thread-120415] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:47.662 [DEBUG] [Thread-120415] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:47.662 [DEBUG] [Thread-120415] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:13:47.662 [DEBUG] [Thread-120415] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:47.714 [INFO] [Thread-120415] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:47.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-28T09:13:47.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:13:48.698 [DEBUG] [Thread-120415] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:13:48.698 [DEBUG] [Thread-120415] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:13:48.776 [DEBUG] [Thread-120415] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:13:48.776 [DEBUG] [Thread-120415] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:13:48.804 [DEBUG] [Thread-120415] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:13:48.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:13:48.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-28T09:13:48.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-28T09:13:48.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:13:48.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:13:48.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:13:48.913 [DEBUG] [Thread-120415] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:13:55.318 [DEBUG] [Thread-120417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:58.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:13:58.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:13:58.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-28T09:13:59.084 [DEBUG] [Thread-120418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:13:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 13, 34), 9.69, 52.06, 0.0, 12.72, 13.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:13:59.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:13:34
2025-09-28T09:13:59.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:13:59.744 [DEBUG] [Thread-120419] [transport.py] [_log()] starting thread (client mode): 0x2b947010
2025-09-28T09:13:59.744 [DEBUG] [Thread-120419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:13:59.764 [DEBUG] [Thread-120419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:13:59.764 [INFO] [Thread-120419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] client lang: <none>
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] server lang: <none>
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] kex follows: False
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:13:59.766 [DEBUG] [Thread-120419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:13:59.767 [DEBUG] [Thread-120419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:13:59.767 [DEBUG] [Thread-120419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:13:59.767 [DEBUG] [Thread-120419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:13:59.767 [DEBUG] [Thread-120419] [transport.py] [_log()] Compression: none
2025-09-28T09:13:59.767 [DEBUG] [Thread-120419] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:13:59.779 [DEBUG] [Thread-120419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:13:59.779 [DEBUG] [Thread-120419] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:13:59.779 [DEBUG] [Thread-120419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:13:59.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:13:59.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:13:59.780 [DEBUG] [Thread-120419] [transport.py] [_log()] userauth is OK
2025-09-28T09:13:59.780 [DEBUG] [Thread-120419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:13:59.780 [DEBUG] [Thread-120419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:13:59.780 [DEBUG] [Thread-120419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:13:59.780 [DEBUG] [Thread-120419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:13:59.789 [INFO] [Thread-120419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:13:59.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:00.433 [DEBUG] [Thread-120419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:00.433 [DEBUG] [Thread-120419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:00.433 [DEBUG] [Thread-120419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:14:00.474 [DEBUG] [Thread-120419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:00.475 [DEBUG] [Thread-120419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:00.477 [DEBUG] [Thread-120419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:00.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:00.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:14:00.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:14:00.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:14:00.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:00.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:14:00.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:00.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:00.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:14:00.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.301123 -999.00  +14.70   9.60     54   +5.60 1 1 1 1 1   888    0 8.88 16.17 ----- 9.1 9.6 200.6 17.5 21.1 -27.2 19.7 -27.0 18.4 -25.2 19.4 -26.4
2025-09-28T09:14:00.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:14:00.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:14:00.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.301123
2025-09-28T09:14:00.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:14:00.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:14:00.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:14:00.501 [DEBUG] [Thread-120419] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:00.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:14:00.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:14:00.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:13:34', tmtdew=9.69, humidity=52.06, cloud=0.0, wind=12.72, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:13:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:14:00.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-28T09:14:00.626 [DEBUG] [Thread-120422] [transport.py] [_log()] starting thread (client mode): 0x2b946710
2025-09-28T09:14:00.627 [DEBUG] [Thread-120422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:00.671 [DEBUG] [Thread-120422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:14:00.672 [INFO] [Thread-120422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:00.708 [DEBUG] [Thread-120422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] Compression: none
2025-09-28T09:14:00.709 [DEBUG] [Thread-120422] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:00.803 [DEBUG] [Thread-120422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:00.803 [DEBUG] [Thread-120422] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:00.804 [DEBUG] [Thread-120422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:14:00.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:14:00.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:00.923 [DEBUG] [Thread-120422] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:00.923 [DEBUG] [Thread-120422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:00.923 [DEBUG] [Thread-120422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:00.923 [DEBUG] [Thread-120422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:14:00.923 [DEBUG] [Thread-120422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:00.974 [INFO] [Thread-120422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:00.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-28T09:14:00.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:01.987 [DEBUG] [Thread-120422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:01.987 [DEBUG] [Thread-120422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:02.067 [DEBUG] [Thread-120422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:02.067 [DEBUG] [Thread-120422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:02.107 [DEBUG] [Thread-120422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:02.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:02.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-28T09:14:02.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-28T09:14:02.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:02.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:02.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:02.265 [DEBUG] [Thread-120422] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:10.365 [DEBUG] [Thread-120424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:12.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:14:12.236 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:14:12.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-28T09:14:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 14, 6), 9.64, 52.22, 0.0, 10.98, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:14:12.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:14:06
2025-09-28T09:14:12.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:14:13.070 [DEBUG] [Thread-120425] [transport.py] [_log()] starting thread (client mode): 0x2b9ba830
2025-09-28T09:14:13.070 [DEBUG] [Thread-120425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:13.090 [DEBUG] [Thread-120425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:14:13.091 [INFO] [Thread-120425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:14:13.094 [DEBUG] [Thread-120425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:13.094 [DEBUG] [Thread-120425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:14:13.094 [DEBUG] [Thread-120425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:13.094 [DEBUG] [Thread-120425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:13.094 [DEBUG] [Thread-120425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] Compression: none
2025-09-28T09:14:13.095 [DEBUG] [Thread-120425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:13.112 [DEBUG] [Thread-120425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:13.112 [DEBUG] [Thread-120425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:13.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:14:13.113 [DEBUG] [Thread-120425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:14:13.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:13.115 [DEBUG] [Thread-120425] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:13.115 [DEBUG] [Thread-120425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:13.115 [DEBUG] [Thread-120425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:13.115 [DEBUG] [Thread-120425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:14:13.115 [DEBUG] [Thread-120425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:13.130 [INFO] [Thread-120425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:13.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:13.752 [DEBUG] [Thread-120425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:13.752 [DEBUG] [Thread-120425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:13.753 [DEBUG] [Thread-120425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:14:13.793 [DEBUG] [Thread-120425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:13.794 [DEBUG] [Thread-120425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:13.796 [DEBUG] [Thread-120425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:13.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:13.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:14:13.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:14:13.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:14:13.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:13.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:14:13.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:13.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:14:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.301123 -999.00  +14.70   9.60     54   +5.60 1 1 1 1 1   888    0 8.88 16.17 ----- 9.1 9.6 200.6 17.5 21.1 -27.2 19.7 -27.0 18.4 -25.2 19.4 -26.4
2025-09-28T09:14:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:14:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:14:13.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.301123
2025-09-28T09:14:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:14:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:14:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:14:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:14:13.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:14:13.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:14:06', tmtdew=9.64, humidity=52.22, cloud=0.0, wind=10.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:13:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:14:13.823 [DEBUG] [Thread-120425] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:13.906 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:14:13.917 [DEBUG] [Thread-120428] [transport.py] [_log()] starting thread (client mode): 0x2b946b30
2025-09-28T09:14:13.917 [DEBUG] [Thread-120428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:13.933 [DEBUG] [Thread-120428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:14:13.933 [INFO] [Thread-120428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:14:13.940 [DEBUG] [Thread-120428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:13.940 [DEBUG] [Thread-120428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] Compression: none
2025-09-28T09:14:13.941 [DEBUG] [Thread-120428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:13.998 [DEBUG] [Thread-120428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:13.999 [DEBUG] [Thread-120428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:13.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:14:13.999 [DEBUG] [Thread-120428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:14:14.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:14.058 [DEBUG] [Thread-120428] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:14.058 [DEBUG] [Thread-120428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:14.058 [DEBUG] [Thread-120428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:14.059 [DEBUG] [Thread-120428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:14:14.059 [DEBUG] [Thread-120428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:14.078 [INFO] [Thread-120428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:14.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-28T09:14:14.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:15.068 [DEBUG] [Thread-120428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:15.068 [DEBUG] [Thread-120428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:15.116 [DEBUG] [Thread-120428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:15.116 [DEBUG] [Thread-120428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:15.125 [DEBUG] [Thread-120428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:15.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:15.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-28T09:14:15.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-28T09:14:15.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:15.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:15.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:15.158 [DEBUG] [Thread-120428] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:18.425 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:18.427 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:25.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:14:25.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:14:25.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:14:25.396 [DEBUG] [Thread-120430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 14, 6), 9.64, 52.22, 0.0, 10.98, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:14:25.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:14:06
2025-09-28T09:14:25.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:14:25.989 [DEBUG] [Thread-120431] [transport.py] [_log()] starting thread (client mode): 0x2b94d5d0
2025-09-28T09:14:25.989 [DEBUG] [Thread-120431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:26.009 [DEBUG] [Thread-120431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:14:26.010 [INFO] [Thread-120431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] Compression: none
2025-09-28T09:14:26.013 [DEBUG] [Thread-120431] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:26.029 [DEBUG] [Thread-120431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:26.029 [DEBUG] [Thread-120431] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:26.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:14:26.030 [DEBUG] [Thread-120431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:14:26.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:26.031 [DEBUG] [Thread-120431] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:26.031 [DEBUG] [Thread-120431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:26.031 [DEBUG] [Thread-120431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:26.031 [DEBUG] [Thread-120431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:14:26.031 [DEBUG] [Thread-120431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:26.045 [INFO] [Thread-120431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:26.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:26.687 [DEBUG] [Thread-120431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:26.687 [DEBUG] [Thread-120431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:26.688 [DEBUG] [Thread-120431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:14:26.728 [DEBUG] [Thread-120431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:26.728 [DEBUG] [Thread-120431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:26.731 [DEBUG] [Thread-120431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:26.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:26.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:14:26.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:14:26.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:14:26.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:26.751 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:14:26.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.301470 -999.00  +14.50   7.12     55   +5.60 1 1 1 1 1   888    0 8.90 18.88 ----- 4.2 7.1 219.2 8.0 21.2 -25.4 19.7 -24.4 18.5 -25.2 19.5 -26.1
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:14:26.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.301470
2025-09-28T09:14:26.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:14:26.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:14:26.754 [DEBUG] [Thread-120431] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:14:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:14:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:14:26.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:14:06', tmtdew=9.64, humidity=52.22, cloud=0.0, wind=10.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:14:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:14:26.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-28T09:14:26.853 [DEBUG] [Thread-120434] [transport.py] [_log()] starting thread (client mode): 0x2b9cc9a0
2025-09-28T09:14:26.853 [DEBUG] [Thread-120434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:26.889 [DEBUG] [Thread-120434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:14:26.889 [INFO] [Thread-120434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:14:26.918 [DEBUG] [Thread-120434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:26.918 [DEBUG] [Thread-120434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] Compression: none
2025-09-28T09:14:26.919 [DEBUG] [Thread-120434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:26.995 [DEBUG] [Thread-120434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:26.996 [DEBUG] [Thread-120434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:26.996 [DEBUG] [Thread-120434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:14:26.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:14:26.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:27.091 [DEBUG] [Thread-120434] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:27.091 [DEBUG] [Thread-120434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:27.091 [DEBUG] [Thread-120434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:27.091 [DEBUG] [Thread-120434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:14:27.091 [DEBUG] [Thread-120434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:27.132 [INFO] [Thread-120434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:27.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-28T09:14:27.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:28.227 [DEBUG] [Thread-120434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:28.227 [DEBUG] [Thread-120434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:28.298 [DEBUG] [Thread-120434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:28.299 [DEBUG] [Thread-120434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:28.331 [DEBUG] [Thread-120434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:28.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:28.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-28T09:14:28.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-28T09:14:28.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:28.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:28.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:28.463 [DEBUG] [Thread-120434] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:38.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:14:38.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:14:38.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-28T09:14:39.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 14, 6), 9.64, 52.22, 0.0, 10.98, 13.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:14:39.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:14:06
2025-09-28T09:14:39.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:14:39.351 [DEBUG] [Thread-120436] [transport.py] [_log()] starting thread (client mode): 0x2e3c3af0
2025-09-28T09:14:39.351 [DEBUG] [Thread-120436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:14:39.369 [DEBUG] [Thread-120436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:14:39.369 [INFO] [Thread-120436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:14:39.372 [DEBUG] [Thread-120436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] client lang: <none>
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] server lang: <none>
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] kex follows: False
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] Compression: none
2025-09-28T09:14:39.373 [DEBUG] [Thread-120436] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:14:39.390 [DEBUG] [Thread-120436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:14:39.390 [DEBUG] [Thread-120436] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:14:39.390 [DEBUG] [Thread-120436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:14:39.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:14:39.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:14:39.391 [DEBUG] [Thread-120436] [transport.py] [_log()] userauth is OK
2025-09-28T09:14:39.391 [DEBUG] [Thread-120436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:14:39.392 [DEBUG] [Thread-120436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:14:39.392 [DEBUG] [Thread-120436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:14:39.392 [DEBUG] [Thread-120436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:14:39.409 [INFO] [Thread-120436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:14:39.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:14:40.038 [DEBUG] [Thread-120436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:14:40.038 [DEBUG] [Thread-120436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:14:40.038 [DEBUG] [Thread-120436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:14:40.079 [DEBUG] [Thread-120436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:14:40.079 [DEBUG] [Thread-120436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:14:40.081 [DEBUG] [Thread-120436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:14:40.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:14:40.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:14:40.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:14:40.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:14:40.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:14:40.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:14:40.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.301470 -999.00  +14.50   7.12     55   +5.60 1 1 1 1 1   888    0 8.90 18.88 ----- 4.2 7.1 219.2 8.0 21.2 -25.4 19.7 -24.4 18.5 -25.2 19.5 -26.1
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:14:40.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.301470
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:14:40.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:14:06', tmtdew=9.64, humidity=52.22, cloud=0.0, wind=10.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:14:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:14:40.101 [DEBUG] [Thread-120436] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:14:40.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-28T09:14:40.433 [DEBUG] [Thread-120439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:55.470 [DEBUG] [Thread-120440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:14:59.118 [DEBUG] [Thread-120441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:10.500 [DEBUG] [Thread-120442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:18.568 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:18.569 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:25.530 [DEBUG] [Thread-120443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:40.560 [DEBUG] [Thread-120444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:55.590 [DEBUG] [Thread-120445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:15:59.176 [DEBUG] [Thread-120446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:10.624 [DEBUG] [Thread-120447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:18.709 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:18.710 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:25.652 [DEBUG] [Thread-120448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:40.683 [DEBUG] [Thread-120449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:52.538 [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-28T09:16:55.711 [DEBUG] [Thread-120450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:16:59.224 [DEBUG] [Thread-120451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:02.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:17:02.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:17:02.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-28T09:17:03.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 16, 45), 9.8, 51.68, 0.0, 10.54, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:17:03.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:16:45
2025-09-28T09:17:03.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:17:03.428 [DEBUG] [Thread-120452] [transport.py] [_log()] starting thread (client mode): 0x2e38c340
2025-09-28T09:17:03.428 [DEBUG] [Thread-120452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:17:03.450 [DEBUG] [Thread-120452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:17:03.450 [INFO] [Thread-120452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] client lang: <none>
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] server lang: <none>
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] kex follows: False
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:17:03.453 [DEBUG] [Thread-120452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:17:03.454 [DEBUG] [Thread-120452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:17:03.454 [DEBUG] [Thread-120452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:17:03.454 [DEBUG] [Thread-120452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:17:03.454 [DEBUG] [Thread-120452] [transport.py] [_log()] Compression: none
2025-09-28T09:17:03.454 [DEBUG] [Thread-120452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:17:03.470 [DEBUG] [Thread-120452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:17:03.471 [DEBUG] [Thread-120452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:17:03.471 [DEBUG] [Thread-120452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:17:03.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:17:03.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:17:03.474 [DEBUG] [Thread-120452] [transport.py] [_log()] userauth is OK
2025-09-28T09:17:03.474 [DEBUG] [Thread-120452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:17:03.474 [DEBUG] [Thread-120452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:17:03.474 [DEBUG] [Thread-120452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:17:03.474 [DEBUG] [Thread-120452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:17:03.498 [INFO] [Thread-120452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:17:03.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:17:04.139 [DEBUG] [Thread-120452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:17:04.139 [DEBUG] [Thread-120452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:17:04.140 [DEBUG] [Thread-120452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:17:04.180 [DEBUG] [Thread-120452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:17:04.181 [DEBUG] [Thread-120452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:17:04.184 [DEBUG] [Thread-120452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:17:04.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:17:04.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:17:04.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:17:04.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:17:04.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:17:04.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:17:04.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:17:04.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:17:04.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:17:04.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.302859 -999.00  +15.10   8.75     54   +6.00 1 1 1 1 1   888    0 9.27 28.71 ----- 7.8 8.8 187.0 17.7 21.5 -25.7 19.9 -25.0 18.7 -25.3 19.8 -26.4
2025-09-28T09:17:04.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:17:04.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:17:04.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.302859
2025-09-28T09:17:04.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:17:04.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:17:04.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:17:04.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:17:04.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:17:04.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:16:45', tmtdew=9.8, humidity=51.68, cloud=0.0, wind=10.54, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:16:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:17:04.211 [DEBUG] [Thread-120452] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:17:04.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-28T09:17:04.310 [DEBUG] [Thread-120455] [transport.py] [_log()] starting thread (client mode): 0x2e38dd20
2025-09-28T09:17:04.310 [DEBUG] [Thread-120455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:17:04.325 [DEBUG] [Thread-120455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:17:04.325 [INFO] [Thread-120455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:17:04.332 [DEBUG] [Thread-120455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:17:04.332 [DEBUG] [Thread-120455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:17:04.332 [DEBUG] [Thread-120455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] client lang: <none>
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] server lang: <none>
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] kex follows: False
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] Compression: none
2025-09-28T09:17:04.333 [DEBUG] [Thread-120455] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:17:04.393 [DEBUG] [Thread-120455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:17:04.393 [DEBUG] [Thread-120455] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:17:04.394 [DEBUG] [Thread-120455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:17:04.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:17:04.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:17:04.452 [DEBUG] [Thread-120455] [transport.py] [_log()] userauth is OK
2025-09-28T09:17:04.452 [DEBUG] [Thread-120455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:17:04.452 [DEBUG] [Thread-120455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:17:04.452 [DEBUG] [Thread-120455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:17:04.453 [DEBUG] [Thread-120455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:17:04.471 [INFO] [Thread-120455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:17:04.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:17:04.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:17:05.490 [DEBUG] [Thread-120455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:17:05.490 [DEBUG] [Thread-120455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:17:05.538 [DEBUG] [Thread-120455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:17:05.538 [DEBUG] [Thread-120455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:17:05.549 [DEBUG] [Thread-120455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:17:05.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:17:05.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-28T09:17:05.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-28T09:17:05.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:17:05.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:17:05.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:17:05.583 [DEBUG] [Thread-120455] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:17:10.740 [DEBUG] [Thread-120457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:15.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:17:15.584 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:17:15.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:17:16.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 16, 45), 9.8, 51.68, 0.0, 10.54, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:17:16.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:16:45
2025-09-28T09:17:16.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:17:16.455 [DEBUG] [Thread-120458] [transport.py] [_log()] starting thread (client mode): 0x2e3f9960
2025-09-28T09:17:16.455 [DEBUG] [Thread-120458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:17:16.475 [DEBUG] [Thread-120458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:17:16.475 [INFO] [Thread-120458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:17:16.478 [DEBUG] [Thread-120458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] client lang: <none>
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] server lang: <none>
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] kex follows: False
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:17:16.479 [DEBUG] [Thread-120458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:17:16.480 [DEBUG] [Thread-120458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:17:16.480 [DEBUG] [Thread-120458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:17:16.480 [DEBUG] [Thread-120458] [transport.py] [_log()] Compression: none
2025-09-28T09:17:16.480 [DEBUG] [Thread-120458] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:17:16.500 [DEBUG] [Thread-120458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:17:16.500 [DEBUG] [Thread-120458] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:17:16.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:17:16.501 [DEBUG] [Thread-120458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:17:16.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:17:16.504 [DEBUG] [Thread-120458] [transport.py] [_log()] userauth is OK
2025-09-28T09:17:16.504 [DEBUG] [Thread-120458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:17:16.504 [DEBUG] [Thread-120458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:17:16.504 [DEBUG] [Thread-120458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:17:16.505 [DEBUG] [Thread-120458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:17:16.529 [INFO] [Thread-120458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:17:16.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:17:18.851 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:18.852 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:25.794 [DEBUG] [Thread-120460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:40.825 [DEBUG] [Thread-120461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:55.852 [DEBUG] [Thread-120462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:17:59.275 [DEBUG] [Thread-120463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:10.882 [DEBUG] [Thread-120464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:18.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:18.995 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:25.917 [DEBUG] [Thread-120465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:40.953 [DEBUG] [Thread-120466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:55.987 [DEBUG] [Thread-120467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:18:59.324 [DEBUG] [Thread-120468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:11.019 [DEBUG] [Thread-120469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:19.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:19.139 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:26.046 [DEBUG] [Thread-120470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:41.075 [DEBUG] [Thread-120471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:56.107 [DEBUG] [Thread-120472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:19:59.377 [DEBUG] [Thread-120473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:11.132 [DEBUG] [Thread-120474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:19.277 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:19.278 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:26.163 [DEBUG] [Thread-120475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:41.192 [DEBUG] [Thread-120476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:56.229 [DEBUG] [Thread-120477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:20:59.434 [DEBUG] [Thread-120478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:11.259 [DEBUG] [Thread-120479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:19.421 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:19.421 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:26.288 [DEBUG] [Thread-120480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:41.322 [DEBUG] [Thread-120481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:56.353 [DEBUG] [Thread-120482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:21:59.491 [DEBUG] [Thread-120483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:11.379 [DEBUG] [Thread-120484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:19.565 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:19.566 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:26.416 [DEBUG] [Thread-120485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:41.444 [DEBUG] [Thread-120486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:56.476 [DEBUG] [Thread-120487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:22:59.545 [DEBUG] [Thread-120488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:11.503 [DEBUG] [Thread-120489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:19.717 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:19.718 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:26.529 [DEBUG] [Thread-120490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:31.599 [DEBUG] [Thread-120458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:23:31.599 [DEBUG] [Thread-120458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:23:31.599 [DEBUG] [Thread-120458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:23:31.640 [DEBUG] [Thread-120458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:23:31.641 [DEBUG] [Thread-120458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:23:31.643 [DEBUG] [Thread-120458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:23:31.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:23:31.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:23:31.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:23:31.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:23:31.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:23:31.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:23:31.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:23:31.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:23:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:23:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.303206 -999.00  +15.10   5.26     54   +6.00 1 1 1 1 1   888    0 9.42 33.11 ----- 3.5 5.3 191.9 8.1 21.6 -26.3 20.1 -24.1 18.7 -25.7 19.8 -26.6
2025-09-28T09:23:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:23:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:23:31.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.303206
2025-09-28T09:23:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:23:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:23:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:23:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:23:31.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:23:31.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:16:45', tmtdew=9.8, humidity=51.68, cloud=0.0, wind=10.54, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:16:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:23:31.662 [DEBUG] [Thread-120458] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:23:31.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-28T09:23:31.797 [DEBUG] [Thread-120492] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c80
2025-09-28T09:23:31.797 [DEBUG] [Thread-120492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:23:31.838 [DEBUG] [Thread-120492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:23:31.838 [INFO] [Thread-120492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:23:31.872 [DEBUG] [Thread-120492] [transport.py] [_log()] client lang: <none>
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] server lang: <none>
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] kex follows: False
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] Compression: none
2025-09-28T09:23:31.873 [DEBUG] [Thread-120492] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:23:31.957 [DEBUG] [Thread-120492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:23:31.957 [DEBUG] [Thread-120492] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:23:31.958 [DEBUG] [Thread-120492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:23:31.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:23:31.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:23:32.069 [DEBUG] [Thread-120492] [transport.py] [_log()] userauth is OK
2025-09-28T09:23:32.069 [DEBUG] [Thread-120492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:23:32.069 [DEBUG] [Thread-120492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:23:32.069 [DEBUG] [Thread-120492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:23:32.069 [DEBUG] [Thread-120492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:23:32.115 [INFO] [Thread-120492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:23:32.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-28T09:23:32.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:23:33.068 [DEBUG] [Thread-120492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:23:33.069 [DEBUG] [Thread-120492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:23:33.143 [DEBUG] [Thread-120492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:23:33.143 [DEBUG] [Thread-120492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:23:33.154 [DEBUG] [Thread-120492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:23:33.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:23:33.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-28T09:23:33.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-28T09:23:33.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:23:33.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:23:33.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:23:33.191 [DEBUG] [Thread-120492] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:23:41.554 [DEBUG] [Thread-120494 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:43.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:23:43.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:23:43.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:23:43.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 23, 40), 10.68, 48.73, 0.0, 15.46, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:23:43.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:23:40
2025-09-28T09:23:43.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:23:44.061 [DEBUG] [Thread-120495] [transport.py] [_log()] starting thread (client mode): 0x30ddefb0
2025-09-28T09:23:44.061 [DEBUG] [Thread-120495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:23:44.081 [DEBUG] [Thread-120495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:23:44.081 [INFO] [Thread-120495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] client lang: <none>
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] server lang: <none>
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] kex follows: False
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] Compression: none
2025-09-28T09:23:44.085 [DEBUG] [Thread-120495] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:23:44.102 [DEBUG] [Thread-120495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:23:44.103 [DEBUG] [Thread-120495] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:23:44.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:23:44.104 [DEBUG] [Thread-120495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:23:44.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:23:44.105 [DEBUG] [Thread-120495] [transport.py] [_log()] userauth is OK
2025-09-28T09:23:44.105 [DEBUG] [Thread-120495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:23:44.105 [DEBUG] [Thread-120495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:23:44.106 [DEBUG] [Thread-120495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:23:44.106 [DEBUG] [Thread-120495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:23:44.121 [INFO] [Thread-120495] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:23:44.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:23:48.265 [DEBUG] [Thread-120495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:23:48.265 [DEBUG] [Thread-120495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:23:48.265 [DEBUG] [Thread-120495] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:23:48.306 [DEBUG] [Thread-120495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:23:48.306 [DEBUG] [Thread-120495] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:23:48.309 [DEBUG] [Thread-120495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:23:48.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:23:48.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:23:48.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:23:48.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:23:48.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:23:48.490 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:23:48.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.303206 -999.00  +15.10   5.26     54   +6.00 1 1 1 1 1   888    0 9.42 33.11 ----- 3.5 5.3 191.9 8.1 21.6 -26.3 20.1 -24.1 18.7 -25.7 19.8 -26.6
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:23:48.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.303206
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:23:48.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:23:40', tmtdew=10.68, humidity=48.73, cloud=0.0, wind=15.46, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:16:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:23:48.492 [DEBUG] [Thread-120495] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:23:48.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-28T09:23:48.602 [DEBUG] [Thread-120498] [transport.py] [_log()] starting thread (client mode): 0x30ddd7e0
2025-09-28T09:23:48.602 [DEBUG] [Thread-120498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:23:48.643 [DEBUG] [Thread-120498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:23:48.643 [INFO] [Thread-120498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:23:48.677 [DEBUG] [Thread-120498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:23:48.677 [DEBUG] [Thread-120498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] client lang: <none>
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] server lang: <none>
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] kex follows: False
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:23:48.678 [DEBUG] [Thread-120498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:23:48.679 [DEBUG] [Thread-120498] [transport.py] [_log()] Compression: none
2025-09-28T09:23:48.679 [DEBUG] [Thread-120498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:23:48.760 [DEBUG] [Thread-120498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:23:48.760 [DEBUG] [Thread-120498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:23:48.760 [DEBUG] [Thread-120498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:23:48.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:23:48.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:23:48.872 [DEBUG] [Thread-120498] [transport.py] [_log()] userauth is OK
2025-09-28T09:23:48.872 [DEBUG] [Thread-120498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:23:48.872 [DEBUG] [Thread-120498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:23:48.873 [DEBUG] [Thread-120498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:23:48.873 [DEBUG] [Thread-120498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:23:48.909 [INFO] [Thread-120498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:23:48.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-28T09:23:48.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:23:49.867 [DEBUG] [Thread-120498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:23:49.868 [DEBUG] [Thread-120498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:23:49.948 [DEBUG] [Thread-120498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:23:49.948 [DEBUG] [Thread-120498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:23:49.984 [DEBUG] [Thread-120498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:23:50.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:23:50.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-28T09:23:50.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-28T09:23:50.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:23:50.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:23:50.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:23:50.128 [DEBUG] [Thread-120498] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:23:56.595 [DEBUG] [Thread-120500 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:23:59.600 [DEBUG] [Thread-120501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:00.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:24:00.103 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:24:00.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-28T09:24:00.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 23, 40), 10.68, 48.73, 0.0, 15.46, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:24:00.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:23:40
2025-09-28T09:24:00.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:24:00.974 [DEBUG] [Thread-120502] [transport.py] [_log()] starting thread (client mode): 0x2b9cce50
2025-09-28T09:24:00.974 [DEBUG] [Thread-120502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:00.994 [DEBUG] [Thread-120502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:24:00.994 [INFO] [Thread-120502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] Compression: none
2025-09-28T09:24:00.997 [DEBUG] [Thread-120502] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:01.014 [DEBUG] [Thread-120502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:01.014 [DEBUG] [Thread-120502] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:01.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:24:01.015 [DEBUG] [Thread-120502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:24:01.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:01.017 [DEBUG] [Thread-120502] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:01.017 [DEBUG] [Thread-120502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:01.017 [DEBUG] [Thread-120502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:01.017 [DEBUG] [Thread-120502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:24:01.017 [DEBUG] [Thread-120502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:01.053 [INFO] [Thread-120502] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:01.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:01.227 [DEBUG] [Thread-120502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:01.227 [DEBUG] [Thread-120502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:01.227 [DEBUG] [Thread-120502] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:24:01.268 [DEBUG] [Thread-120502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:01.268 [DEBUG] [Thread-120502] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:01.271 [DEBUG] [Thread-120502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:01.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:01.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:24:01.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:24:01.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:24:01.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:01.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:24:01.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:01.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:24:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.303206 -999.00  +15.10   5.26     54   +6.00 1 1 1 1 1   888    0 9.42 33.11 ----- 3.5 5.3 191.9 8.1 21.6 -26.3 20.1 -24.1 18.7 -25.7 19.8 -26.6
2025-09-28T09:24:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:24:01.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:24:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.303206
2025-09-28T09:24:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:24:01.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:24:01.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:24:01.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:24:01.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:24:01.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:23:40', tmtdew=10.68, humidity=48.73, cloud=0.0, wind=15.46, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:16:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:24:01.297 [DEBUG] [Thread-120502] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:01.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-28T09:24:01.436 [DEBUG] [Thread-120505] [transport.py] [_log()] starting thread (client mode): 0x2e3c1570
2025-09-28T09:24:01.437 [DEBUG] [Thread-120505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:01.485 [DEBUG] [Thread-120505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:24:01.485 [INFO] [Thread-120505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:01.526 [DEBUG] [Thread-120505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] Compression: none
2025-09-28T09:24:01.527 [DEBUG] [Thread-120505] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:01.617 [DEBUG] [Thread-120505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:01.618 [DEBUG] [Thread-120505] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:01.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:24:01.618 [DEBUG] [Thread-120505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:24:01.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:01.743 [DEBUG] [Thread-120505] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:01.743 [DEBUG] [Thread-120505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:01.743 [DEBUG] [Thread-120505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:01.743 [DEBUG] [Thread-120505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:24:01.744 [DEBUG] [Thread-120505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:01.797 [INFO] [Thread-120505] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:01.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-28T09:24:01.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:02.834 [DEBUG] [Thread-120505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:02.834 [DEBUG] [Thread-120505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:02.916 [DEBUG] [Thread-120505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:02.916 [DEBUG] [Thread-120505] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:02.958 [DEBUG] [Thread-120505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:03.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:03.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')
2025-09-28T09:24:03.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-28T09:24:03.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:03.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:03.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:03.128 [DEBUG] [Thread-120505] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:11.632 [DEBUG] [Thread-120507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:24:13.096 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:24:13.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-28T09:24:13.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 23, 40), 10.68, 48.73, 0.0, 15.46, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:24:13.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:23:40
2025-09-28T09:24:13.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:24:14.006 [DEBUG] [Thread-120508] [transport.py] [_log()] starting thread (client mode): 0x2e363940
2025-09-28T09:24:14.006 [DEBUG] [Thread-120508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:14.020 [DEBUG] [Thread-120508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:24:14.020 [INFO] [Thread-120508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] Compression: none
2025-09-28T09:24:14.022 [DEBUG] [Thread-120508] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:14.032 [DEBUG] [Thread-120508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:14.032 [DEBUG] [Thread-120508] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:14.033 [DEBUG] [Thread-120508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:24:14.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:24:14.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:14.034 [DEBUG] [Thread-120508] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:14.034 [DEBUG] [Thread-120508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:14.034 [DEBUG] [Thread-120508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:14.034 [DEBUG] [Thread-120508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:24:14.034 [DEBUG] [Thread-120508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:14.047 [INFO] [Thread-120508] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:14.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:14.300 [DEBUG] [Thread-120508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:14.300 [DEBUG] [Thread-120508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:14.300 [DEBUG] [Thread-120508] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:24:14.341 [DEBUG] [Thread-120508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:14.341 [DEBUG] [Thread-120508] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:14.344 [DEBUG] [Thread-120508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:14.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:14.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:24:14.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:24:14.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:24:14.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:14.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:24:14.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.308067 -999.00  +14.30  11.69     54   +5.40 1 1 1 1 1   888    0 10.48 61.08 ----- 9.3 11.7 256.8 14.2 21.2 -27.5 20.1 -24.6 18.8 -24.5 19.7 -26.9
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.308067
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:24:14.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:24:14.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:23:40', tmtdew=10.68, humidity=48.73, cloud=0.0, wind=15.46, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:23:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:24:14.363 [DEBUG] [Thread-120508] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:14.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-28T09:24:14.477 [DEBUG] [Thread-120511] [transport.py] [_log()] starting thread (client mode): 0x2b94c2e0
2025-09-28T09:24:14.477 [DEBUG] [Thread-120511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:14.497 [DEBUG] [Thread-120511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:24:14.497 [INFO] [Thread-120511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:14.517 [DEBUG] [Thread-120511] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] Compression: none
2025-09-28T09:24:14.518 [DEBUG] [Thread-120511] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:14.619 [DEBUG] [Thread-120511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:14.619 [DEBUG] [Thread-120511] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:14.619 [DEBUG] [Thread-120511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:24:14.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:24:14.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:14.732 [DEBUG] [Thread-120511] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:14.732 [DEBUG] [Thread-120511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:14.732 [DEBUG] [Thread-120511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:14.732 [DEBUG] [Thread-120511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:24:14.732 [DEBUG] [Thread-120511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:14.776 [INFO] [Thread-120511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:14.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-28T09:24:14.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:15.729 [DEBUG] [Thread-120511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:15.730 [DEBUG] [Thread-120511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:15.806 [DEBUG] [Thread-120511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:15.806 [DEBUG] [Thread-120511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:15.843 [DEBUG] [Thread-120511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:15.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:15.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-28T09:24:15.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-28T09:24:15.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:15.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:15.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:15.992 [DEBUG] [Thread-120511] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:19.861 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:19.862 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:25.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:24:25.966 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:24:25.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:24:26.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 24, 12), 9.68, 52.26, 0.0, 10.69, 13.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:24:26.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:24:12
2025-09-28T09:24:26.659 [DEBUG] [Thread-120513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:26.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:24:26.817 [DEBUG] [Thread-120514] [transport.py] [_log()] starting thread (client mode): 0x2b94e200
2025-09-28T09:24:26.817 [DEBUG] [Thread-120514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:26.837 [DEBUG] [Thread-120514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:24:26.838 [INFO] [Thread-120514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:26.840 [DEBUG] [Thread-120514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] Compression: none
2025-09-28T09:24:26.841 [DEBUG] [Thread-120514] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:26.857 [DEBUG] [Thread-120514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:26.858 [DEBUG] [Thread-120514] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:26.858 [DEBUG] [Thread-120514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:24:26.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:24:26.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:26.860 [DEBUG] [Thread-120514] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:26.860 [DEBUG] [Thread-120514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:26.860 [DEBUG] [Thread-120514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:26.860 [DEBUG] [Thread-120514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:24:26.861 [DEBUG] [Thread-120514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:26.884 [INFO] [Thread-120514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:26.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:27.120 [DEBUG] [Thread-120514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:27.121 [DEBUG] [Thread-120514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:27.121 [DEBUG] [Thread-120514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:24:27.161 [DEBUG] [Thread-120514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:27.162 [DEBUG] [Thread-120514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:27.164 [DEBUG] [Thread-120514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:27.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:27.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:24:27.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:24:27.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:24:27.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:27.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:24:27.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:27.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:24:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.308067 -999.00  +14.30  11.69     54   +5.40 1 1 1 1 1   888    0 10.48 61.08 ----- 9.3 11.7 256.8 14.2 21.2 -27.5 20.1 -24.6 18.8 -24.5 19.7 -26.9
2025-09-28T09:24:27.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:24:27.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:24:27.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.308067
2025-09-28T09:24:27.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:24:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:24:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:24:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:24:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:24:27.190 [DEBUG] [Thread-120514] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:27.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:24:12', tmtdew=9.68, humidity=52.26, cloud=0.0, wind=10.69, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:23:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:24:27.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-28T09:24:27.284 [DEBUG] [Thread-120517] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb00
2025-09-28T09:24:27.284 [DEBUG] [Thread-120517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:27.299 [DEBUG] [Thread-120517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:24:27.299 [INFO] [Thread-120517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:27.307 [DEBUG] [Thread-120517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] Compression: none
2025-09-28T09:24:27.308 [DEBUG] [Thread-120517] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:27.366 [DEBUG] [Thread-120517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:27.367 [DEBUG] [Thread-120517] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:27.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:24:27.368 [DEBUG] [Thread-120517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:24:27.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:27.423 [DEBUG] [Thread-120517] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:27.423 [DEBUG] [Thread-120517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:27.423 [DEBUG] [Thread-120517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:27.423 [DEBUG] [Thread-120517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:24:27.423 [DEBUG] [Thread-120517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:27.442 [INFO] [Thread-120517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:27.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-28T09:24:27.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:28.393 [DEBUG] [Thread-120517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:28.394 [DEBUG] [Thread-120517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:28.441 [DEBUG] [Thread-120517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:28.441 [DEBUG] [Thread-120517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:28.450 [DEBUG] [Thread-120517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:28.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:28.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-28T09:24:28.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-28T09:24:28.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:28.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:28.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:28.486 [DEBUG] [Thread-120517] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:24:38.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:24:38.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-28T09:24:39.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 24, 12), 9.68, 52.26, 0.0, 10.69, 13.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:24:39.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:24:12
2025-09-28T09:24:39.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:24:39.353 [DEBUG] [Thread-120519] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T09:24:39.353 [DEBUG] [Thread-120519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:39.370 [DEBUG] [Thread-120519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:24:39.370 [INFO] [Thread-120519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:39.374 [DEBUG] [Thread-120519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:39.375 [DEBUG] [Thread-120519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:39.375 [DEBUG] [Thread-120519] [transport.py] [_log()] Compression: none
2025-09-28T09:24:39.375 [DEBUG] [Thread-120519] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:39.391 [DEBUG] [Thread-120519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:39.392 [DEBUG] [Thread-120519] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:39.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:24:39.394 [DEBUG] [Thread-120519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:24:39.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:39.396 [DEBUG] [Thread-120519] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:39.396 [DEBUG] [Thread-120519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:39.396 [DEBUG] [Thread-120519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:39.396 [DEBUG] [Thread-120519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:24:39.396 [DEBUG] [Thread-120519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:39.416 [INFO] [Thread-120519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:39.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:39.638 [DEBUG] [Thread-120519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:39.638 [DEBUG] [Thread-120519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:39.638 [DEBUG] [Thread-120519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:24:39.679 [DEBUG] [Thread-120519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:39.679 [DEBUG] [Thread-120519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:39.682 [DEBUG] [Thread-120519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:39.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:39.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:24:39.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:24:39.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:24:39.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:39.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:24:39.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:39.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:24:39.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.308414 -999.00  +14.20   8.31     56   +5.70 1 1 1 1 1   888    0 10.38 59.51 ----- 9.6 8.3 186.4 10.9 21.5 -25.7 20.2 -23.7 18.8 -24.8 19.9 -25.5
2025-09-28T09:24:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:24:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:24:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.308414
2025-09-28T09:24:39.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:24:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:24:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:24:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:24:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:24:39.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:24:12', tmtdew=9.68, humidity=52.26, cloud=0.0, wind=10.69, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:24:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:24:39.707 [DEBUG] [Thread-120519] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:39.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-28T09:24:39.812 [DEBUG] [Thread-120522] [transport.py] [_log()] starting thread (client mode): 0x2b9cf640
2025-09-28T09:24:39.812 [DEBUG] [Thread-120522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:39.838 [DEBUG] [Thread-120522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:24:39.838 [INFO] [Thread-120522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:24:39.877 [DEBUG] [Thread-120522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:39.877 [DEBUG] [Thread-120522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:39.878 [DEBUG] [Thread-120522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:39.879 [DEBUG] [Thread-120522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:39.879 [DEBUG] [Thread-120522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:39.879 [DEBUG] [Thread-120522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:39.879 [DEBUG] [Thread-120522] [transport.py] [_log()] Compression: none
2025-09-28T09:24:39.879 [DEBUG] [Thread-120522] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:39.940 [DEBUG] [Thread-120522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:39.940 [DEBUG] [Thread-120522] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:39.941 [DEBUG] [Thread-120522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:24:39.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:24:39.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:40.060 [DEBUG] [Thread-120522] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:40.060 [DEBUG] [Thread-120522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:40.061 [DEBUG] [Thread-120522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:40.061 [DEBUG] [Thread-120522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:24:40.061 [DEBUG] [Thread-120522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:40.108 [INFO] [Thread-120522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:40.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-28T09:24:40.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:41.054 [DEBUG] [Thread-120522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:41.054 [DEBUG] [Thread-120522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:41.133 [DEBUG] [Thread-120522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:41.134 [DEBUG] [Thread-120522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:41.174 [DEBUG] [Thread-120522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:41.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:41.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-28T09:24:41.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-28T09:24:41.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:41.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:41.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:41.338 [DEBUG] [Thread-120522] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:41.695 [DEBUG] [Thread-120524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:51.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:24:51.309 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:24:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:24:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 24, 44), 9.97, 51.31, 0.0, 11.95, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:24:51.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:24:44
2025-09-28T09:24:52.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:24:52.168 [DEBUG] [Thread-120525] [transport.py] [_log()] starting thread (client mode): 0x30ddf310
2025-09-28T09:24:52.169 [DEBUG] [Thread-120525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:24:52.189 [DEBUG] [Thread-120525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:24:52.189 [INFO] [Thread-120525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] client lang: <none>
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] server lang: <none>
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] kex follows: False
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:24:52.192 [DEBUG] [Thread-120525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:24:52.193 [DEBUG] [Thread-120525] [transport.py] [_log()] Compression: none
2025-09-28T09:24:52.193 [DEBUG] [Thread-120525] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:24:52.209 [DEBUG] [Thread-120525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:24:52.210 [DEBUG] [Thread-120525] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:24:52.211 [DEBUG] [Thread-120525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:24:52.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:24:52.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:24:52.212 [DEBUG] [Thread-120525] [transport.py] [_log()] userauth is OK
2025-09-28T09:24:52.213 [DEBUG] [Thread-120525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:24:52.213 [DEBUG] [Thread-120525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:24:52.213 [DEBUG] [Thread-120525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:24:52.213 [DEBUG] [Thread-120525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:24:52.237 [INFO] [Thread-120525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:24:52.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:24:55.721 [DEBUG] [Thread-120525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:24:55.721 [DEBUG] [Thread-120525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:24:55.722 [DEBUG] [Thread-120525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:24:55.762 [DEBUG] [Thread-120525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:24:55.762 [DEBUG] [Thread-120525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:24:55.765 [DEBUG] [Thread-120525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:24:55.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:24:55.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:24:55.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:24:55.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:24:55.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:24:55.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:24:55.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:24:55.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.308414 -999.00  +14.20   8.31     56   +5.70 1 1 1 1 1   888    0 10.38 59.51 ----- 9.6 8.3 186.4 10.9 21.5 -25.7 20.2 -23.7 18.8 -24.8 19.9 -25.5
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.308414
2025-09-28T09:24:55.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:24:55.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:24:55.792 [DEBUG] [Thread-120525] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:24:55.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:24:55.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:24:55.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:24:55.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:24:44', tmtdew=9.97, humidity=51.31, cloud=0.0, wind=11.95, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:24:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:24:55.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-28T09:24:56.742 [DEBUG] [Thread-120528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:24:59.650 [DEBUG] [Thread-120529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:11.786 [DEBUG] [Thread-120530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:20.003 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:20.004 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:26.811 [DEBUG] [Thread-120531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:41.837 [DEBUG] [Thread-120532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:56.859 [DEBUG] [Thread-120533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:25:59.714 [DEBUG] [Thread-120534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:11.889 [DEBUG] [Thread-120535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:20.154 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:20.155 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:26.920 [DEBUG] [Thread-120536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:41.949 [DEBUG] [Thread-120537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:56.983 [DEBUG] [Thread-120538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:26:59.768 [DEBUG] [Thread-120539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:11.034 [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-28T09:27:12.011 [DEBUG] [Thread-120540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:20.304 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:20.305 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:21.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:27:21.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:27:21.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-28T09:27:21.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 26, 52), 10.25, 50.18, 0.0, 9.11, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:27:21.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:26:52
2025-09-28T09:27:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:27:21.911 [DEBUG] [Thread-120541] [transport.py] [_log()] starting thread (client mode): 0x2b946b90
2025-09-28T09:27:21.912 [DEBUG] [Thread-120541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:27:21.933 [DEBUG] [Thread-120541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:27:21.933 [INFO] [Thread-120541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:27:21.936 [DEBUG] [Thread-120541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:27:21.936 [DEBUG] [Thread-120541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] client lang: <none>
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] server lang: <none>
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] kex follows: False
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:27:21.937 [DEBUG] [Thread-120541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:27:21.938 [DEBUG] [Thread-120541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:27:21.938 [DEBUG] [Thread-120541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:27:21.938 [DEBUG] [Thread-120541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:27:21.938 [DEBUG] [Thread-120541] [transport.py] [_log()] Compression: none
2025-09-28T09:27:21.938 [DEBUG] [Thread-120541] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:27:21.957 [DEBUG] [Thread-120541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:27:21.958 [DEBUG] [Thread-120541] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:27:21.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:27:21.959 [DEBUG] [Thread-120541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:27:21.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:27:21.961 [DEBUG] [Thread-120541] [transport.py] [_log()] userauth is OK
2025-09-28T09:27:21.961 [DEBUG] [Thread-120541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:27:21.961 [DEBUG] [Thread-120541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:27:21.961 [DEBUG] [Thread-120541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:27:21.961 [DEBUG] [Thread-120541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:27:21.979 [INFO] [Thread-120541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:27:21.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:27:22.631 [DEBUG] [Thread-120541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:27:22.631 [DEBUG] [Thread-120541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:27:22.631 [DEBUG] [Thread-120541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:27:22.672 [DEBUG] [Thread-120541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:27:22.672 [DEBUG] [Thread-120541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:27:22.674 [DEBUG] [Thread-120541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:27:22.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:27:22.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:27:22.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:27:22.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:27:22.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:27:22.691 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:27:22.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.310151 -999.00  +14.60   4.42     54   +5.50 1 1 1 1 1   888    0 10.36 56.89 ----- 7.9 4.4 176.8 10.5 21.8 -25.5 20.1 -28.2 19.1 -24.5 20.3 -24.8
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.310151
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:27:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:26:52', tmtdew=10.25, humidity=50.18, cloud=0.0, wind=9.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:26:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:27:22.692 [DEBUG] [Thread-120541] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:27:22.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-28T09:27:22.775 [DEBUG] [Thread-120544] [transport.py] [_log()] starting thread (client mode): 0x2b94d5d0
2025-09-28T09:27:22.775 [DEBUG] [Thread-120544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:27:22.790 [DEBUG] [Thread-120544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:27:22.790 [INFO] [Thread-120544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:22.797 [DEBUG] [Thread-120544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] client lang: <none>
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] server lang: <none>
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] kex follows: False
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] Compression: none
2025-09-28T09:27:22.798 [DEBUG] [Thread-120544] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:27:22.855 [DEBUG] [Thread-120544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:27:22.855 [DEBUG] [Thread-120544] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:27:22.856 [DEBUG] [Thread-120544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:27:22.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:27:22.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:27:22.911 [DEBUG] [Thread-120544] [transport.py] [_log()] userauth is OK
2025-09-28T09:27:22.911 [DEBUG] [Thread-120544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:27:22.912 [DEBUG] [Thread-120544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:27:22.912 [DEBUG] [Thread-120544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:27:22.912 [DEBUG] [Thread-120544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:27:22.930 [INFO] [Thread-120544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:27:22.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-28T09:27:22.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:27:23.891 [DEBUG] [Thread-120544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:27:23.892 [DEBUG] [Thread-120544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:27:23.939 [DEBUG] [Thread-120544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:27:23.939 [DEBUG] [Thread-120544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:27:23.948 [DEBUG] [Thread-120544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:27:23.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:27:23.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-28T09:27:23.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-28T09:27:23.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:27:23.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:27:23.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:27:23.982 [DEBUG] [Thread-120544] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:27:27.041 [DEBUG] [Thread-120546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:33.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:27:33.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:27:33.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-28T09:27:34.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 27, 24), 10.3, 49.98, 0.0, 7.46, 14.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:27:34.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:27:24
2025-09-28T09:27:34.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:27:34.860 [DEBUG] [Thread-120547] [transport.py] [_log()] starting thread (client mode): 0x30dddd20
2025-09-28T09:27:34.860 [DEBUG] [Thread-120547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:27:34.882 [DEBUG] [Thread-120547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:27:34.882 [INFO] [Thread-120547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] client lang: <none>
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] server lang: <none>
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] kex follows: False
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:27:34.884 [DEBUG] [Thread-120547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:27:34.885 [DEBUG] [Thread-120547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:27:34.885 [DEBUG] [Thread-120547] [transport.py] [_log()] Compression: none
2025-09-28T09:27:34.885 [DEBUG] [Thread-120547] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:27:34.896 [DEBUG] [Thread-120547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:27:34.896 [DEBUG] [Thread-120547] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:27:34.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:27:34.897 [DEBUG] [Thread-120547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:27:34.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:27:34.899 [DEBUG] [Thread-120547] [transport.py] [_log()] userauth is OK
2025-09-28T09:27:34.899 [DEBUG] [Thread-120547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:27:34.899 [DEBUG] [Thread-120547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:27:34.899 [DEBUG] [Thread-120547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:27:34.900 [DEBUG] [Thread-120547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:27:34.917 [INFO] [Thread-120547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:27:34.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:27:35.564 [DEBUG] [Thread-120547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:27:35.564 [DEBUG] [Thread-120547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:27:35.564 [DEBUG] [Thread-120547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:27:35.605 [DEBUG] [Thread-120547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:27:35.605 [DEBUG] [Thread-120547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:27:35.608 [DEBUG] [Thread-120547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:27:35.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:27:35.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:27:35.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:27:35.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:27:35.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:27:35.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:27:35.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:27:35.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.310498 -999.00  +14.70   6.65     54   +5.70 1 1 1 1 1   888    0 10.18 55.16 ----- 6.1 6.7 193.0 12.8 21.9 -25.7 20.4 -24.6 19.1 -24.1 20.3 -24.9
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.310498
2025-09-28T09:27:35.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:27:35.629 [DEBUG] [Thread-120547] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:27:35.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:27:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:27:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:27:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:27:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:27:24', tmtdew=10.3, humidity=49.98, cloud=0.0, wind=7.46, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:27:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:27:35.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-28T09:27:42.087 [DEBUG] [Thread-120550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:57.123 [DEBUG] [Thread-120551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:27:59.819 [DEBUG] [Thread-120552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:12.150 [DEBUG] [Thread-120553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:20.451 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:20.452 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:27.178 [DEBUG] [Thread-120554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:42.206 [DEBUG] [Thread-120555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:57.238 [DEBUG] [Thread-120556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:28:59.874 [DEBUG] [Thread-120557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:12.265 [DEBUG] [Thread-120558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:20.593 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:20.594 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:27.297 [DEBUG] [Thread-120559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:42.326 [DEBUG] [Thread-120560 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:50.778 [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-28T09:29:57.357 [DEBUG] [Thread-120561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:29:59.927 [DEBUG] [Thread-120562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:00.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:30:00.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:30:00.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-28T09:30:01.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 29, 31), 9.92, 51.11, 0.0, 13.97, 13.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:30:01.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:29:31
2025-09-28T09:30:01.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:30:01.651 [DEBUG] [Thread-120563] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd30
2025-09-28T09:30:01.651 [DEBUG] [Thread-120563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:01.666 [DEBUG] [Thread-120563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:30:01.666 [INFO] [Thread-120563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] Compression: none
2025-09-28T09:30:01.668 [DEBUG] [Thread-120563] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:01.679 [DEBUG] [Thread-120563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:01.680 [DEBUG] [Thread-120563] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:01.680 [DEBUG] [Thread-120563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:30:01.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:30:01.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:01.681 [DEBUG] [Thread-120563] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:01.681 [DEBUG] [Thread-120563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:01.681 [DEBUG] [Thread-120563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:01.681 [DEBUG] [Thread-120563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:30:01.681 [DEBUG] [Thread-120563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:01.693 [INFO] [Thread-120563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:01.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:02.524 [DEBUG] [Thread-120563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:02.524 [DEBUG] [Thread-120563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:02.524 [DEBUG] [Thread-120563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:30:02.566 [DEBUG] [Thread-120563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:02.566 [DEBUG] [Thread-120563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:02.568 [DEBUG] [Thread-120563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:02.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:02.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:30:02.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:30:02.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:30:02.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:02.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:30:02.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312240 -999.00  +14.90   8.88     54   +5.80 1 1 1 1 1   888    0 10.29 51.78 ----- 6.7 8.9 172.6 13.5 21.9 -26.1 20.1 -28.5 19.2 -25.0 20.3 -26.8
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312240
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:30:02.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:30:02.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:29:31', tmtdew=9.92, humidity=51.11, cloud=0.0, wind=13.97, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:29:37.536', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:30:02.594 [DEBUG] [Thread-120563] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:02.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-28T09:30:02.687 [DEBUG] [Thread-120566] [transport.py] [_log()] starting thread (client mode): 0x2b9cd270
2025-09-28T09:30:02.687 [DEBUG] [Thread-120566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:02.702 [DEBUG] [Thread-120566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:30:02.702 [INFO] [Thread-120566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:30:02.709 [DEBUG] [Thread-120566] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:02.709 [DEBUG] [Thread-120566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:30:02.709 [DEBUG] [Thread-120566] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] Compression: none
2025-09-28T09:30:02.710 [DEBUG] [Thread-120566] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:02.766 [DEBUG] [Thread-120566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:02.766 [DEBUG] [Thread-120566] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:02.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:30:02.766 [DEBUG] [Thread-120566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:30:02.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:02.823 [DEBUG] [Thread-120566] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:02.823 [DEBUG] [Thread-120566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:02.823 [DEBUG] [Thread-120566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:02.823 [DEBUG] [Thread-120566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:30:02.824 [DEBUG] [Thread-120566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:02.842 [INFO] [Thread-120566] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:02.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-28T09:30:02.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:03.831 [DEBUG] [Thread-120566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:03.831 [DEBUG] [Thread-120566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:03.879 [DEBUG] [Thread-120566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:03.879 [DEBUG] [Thread-120566] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:03.887 [DEBUG] [Thread-120566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:03.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:03.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-28T09:30:03.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-28T09:30:03.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:03.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:03.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:03.919 [DEBUG] [Thread-120566] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:12.385 [DEBUG] [Thread-120568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:13.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:30:13.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:30:13.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-28T09:30:14.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 30, 3), 9.99, 50.88, 0.0, 12.74, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:30:14.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:30:03
2025-09-28T09:30:14.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:30:14.785 [DEBUG] [Thread-120569] [transport.py] [_log()] starting thread (client mode): 0x2b9cfbe0
2025-09-28T09:30:14.786 [DEBUG] [Thread-120569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:14.807 [DEBUG] [Thread-120569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:30:14.807 [INFO] [Thread-120569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:30:14.810 [DEBUG] [Thread-120569] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:14.811 [DEBUG] [Thread-120569] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] Compression: none
2025-09-28T09:30:14.812 [DEBUG] [Thread-120569] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:14.829 [DEBUG] [Thread-120569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:14.829 [DEBUG] [Thread-120569] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:14.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:30:14.830 [DEBUG] [Thread-120569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:30:14.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:14.832 [DEBUG] [Thread-120569] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:14.832 [DEBUG] [Thread-120569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:14.832 [DEBUG] [Thread-120569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:14.832 [DEBUG] [Thread-120569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:30:14.832 [DEBUG] [Thread-120569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:14.848 [INFO] [Thread-120569] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:14.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:16.746 [DEBUG] [Thread-120569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:16.746 [DEBUG] [Thread-120569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:16.746 [DEBUG] [Thread-120569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:30:16.787 [DEBUG] [Thread-120569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:16.788 [DEBUG] [Thread-120569] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:16.791 [DEBUG] [Thread-120569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:16.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:16.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:30:16.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:30:16.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:30:16.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:16.814 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:30:16.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312240 -999.00  +14.90   8.88     54   +5.80 1 1 1 1 1   888    0 10.29 51.78 ----- 6.7 8.9 172.6 13.5 21.9 -26.1 20.1 -28.5 19.2 -25.0 20.3 -26.8
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:30:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312240
2025-09-28T09:30:16.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:30:16.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:30:16.817 [DEBUG] [Thread-120569] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:16.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:30:16.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:30:16.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:30:16.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:30:03', tmtdew=9.99, humidity=50.88, cloud=0.0, wind=12.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:29:37.536', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:30:16.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-28T09:30:16.942 [DEBUG] [Thread-120572] [transport.py] [_log()] starting thread (client mode): 0x2b944700
2025-09-28T09:30:16.942 [DEBUG] [Thread-120572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:16.989 [DEBUG] [Thread-120572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:30:16.989 [INFO] [Thread-120572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] Compression: none
2025-09-28T09:30:17.031 [DEBUG] [Thread-120572] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:17.126 [DEBUG] [Thread-120572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:17.126 [DEBUG] [Thread-120572] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:17.126 [DEBUG] [Thread-120572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:30:17.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:30:17.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:17.249 [DEBUG] [Thread-120572] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:17.249 [DEBUG] [Thread-120572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:17.249 [DEBUG] [Thread-120572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:17.249 [DEBUG] [Thread-120572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:30:17.249 [DEBUG] [Thread-120572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:17.296 [INFO] [Thread-120572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:17.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:30:17.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:18.261 [DEBUG] [Thread-120572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:18.262 [DEBUG] [Thread-120572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:18.342 [DEBUG] [Thread-120572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:18.342 [DEBUG] [Thread-120572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:18.383 [DEBUG] [Thread-120572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:18.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:18.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-28T09:30:18.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-28T09:30:18.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:18.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:18.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:18.542 [DEBUG] [Thread-120572] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:20.736 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:20.737 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:27.435 [DEBUG] [Thread-120574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:28.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:30:28.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:30:28.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-28T09:30:29.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 30, 3), 9.99, 50.88, 0.0, 12.74, 14.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:30:29.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:30:03
2025-09-28T09:30:29.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:30:29.392 [DEBUG] [Thread-120575] [transport.py] [_log()] starting thread (client mode): 0x2e3f9c90
2025-09-28T09:30:29.393 [DEBUG] [Thread-120575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:29.412 [DEBUG] [Thread-120575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:30:29.412 [INFO] [Thread-120575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:29.415 [DEBUG] [Thread-120575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] Compression: none
2025-09-28T09:30:29.416 [DEBUG] [Thread-120575] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:29.433 [DEBUG] [Thread-120575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:29.433 [DEBUG] [Thread-120575] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:29.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:30:29.434 [DEBUG] [Thread-120575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:30:29.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:29.436 [DEBUG] [Thread-120575] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:29.436 [DEBUG] [Thread-120575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:29.437 [DEBUG] [Thread-120575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:29.437 [DEBUG] [Thread-120575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:30:29.437 [DEBUG] [Thread-120575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:29.452 [INFO] [Thread-120575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:29.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:30.099 [DEBUG] [Thread-120575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:30.099 [DEBUG] [Thread-120575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:30.099 [DEBUG] [Thread-120575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:30:30.140 [DEBUG] [Thread-120575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:30.140 [DEBUG] [Thread-120575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:30.143 [DEBUG] [Thread-120575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:30.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:30.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:30:30.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:30:30.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:30:30.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:30.165 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:30:30.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:30.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:30:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312586 -999.00  +14.80  10.00     54   +5.80 1 1 1 1 1   888    0 10.43 51.26 ----- 10.5 10.0 164.2 11.9 22.0 -25.4 20.2 -24.3 19.3 -24.6 20.4 -25.5
2025-09-28T09:30:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:30:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:30:30.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312586
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:30:30.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:30:03', tmtdew=9.99, humidity=50.88, cloud=0.0, wind=12.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:30:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:30:30.168 [DEBUG] [Thread-120575] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:30.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-28T09:30:30.264 [DEBUG] [Thread-120578] [transport.py] [_log()] starting thread (client mode): 0x2e362020
2025-09-28T09:30:30.264 [DEBUG] [Thread-120578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:30.284 [DEBUG] [Thread-120578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:30:30.284 [INFO] [Thread-120578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:30.292 [DEBUG] [Thread-120578] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] Compression: none
2025-09-28T09:30:30.293 [DEBUG] [Thread-120578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:30.351 [DEBUG] [Thread-120578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:30.351 [DEBUG] [Thread-120578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:30.352 [DEBUG] [Thread-120578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:30:30.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:30:30.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:30.407 [DEBUG] [Thread-120578] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:30.407 [DEBUG] [Thread-120578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:30.408 [DEBUG] [Thread-120578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:30.408 [DEBUG] [Thread-120578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:30:30.408 [DEBUG] [Thread-120578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:30.426 [INFO] [Thread-120578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:30.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-28T09:30:30.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:31.454 [DEBUG] [Thread-120578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:31.454 [DEBUG] [Thread-120578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:31.502 [DEBUG] [Thread-120578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:31.502 [DEBUG] [Thread-120578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:31.514 [DEBUG] [Thread-120578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:31.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:31.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-28T09:30:31.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-28T09:30:31.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:31.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:31.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:31.548 [DEBUG] [Thread-120578] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:41.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:30:41.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:30:41.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:30:42.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 30, 35), 9.9, 51.33, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:30:42.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:30:35
2025-09-28T09:30:42.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:30:42.402 [DEBUG] [Thread-120580] [transport.py] [_log()] starting thread (client mode): 0x2e38dea0
2025-09-28T09:30:42.402 [DEBUG] [Thread-120580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:42.422 [DEBUG] [Thread-120580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:30:42.422 [INFO] [Thread-120580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:42.424 [DEBUG] [Thread-120580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] Compression: none
2025-09-28T09:30:42.425 [DEBUG] [Thread-120580] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:42.433 [DEBUG] [Thread-120580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:42.434 [DEBUG] [Thread-120580] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:42.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:30:42.435 [DEBUG] [Thread-120580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:30:42.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:42.436 [DEBUG] [Thread-120580] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:42.436 [DEBUG] [Thread-120580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:42.436 [DEBUG] [Thread-120580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:42.436 [DEBUG] [Thread-120580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:30:42.437 [DEBUG] [Thread-120580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:42.457 [INFO] [Thread-120580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:42.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:42.477 [DEBUG] [Thread-120582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:43.112 [DEBUG] [Thread-120580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:43.112 [DEBUG] [Thread-120580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:43.113 [DEBUG] [Thread-120580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:30:43.153 [DEBUG] [Thread-120580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:43.153 [DEBUG] [Thread-120580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:43.157 [DEBUG] [Thread-120580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:43.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:43.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:30:43.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:30:43.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:30:43.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:43.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:30:43.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312586 -999.00  +14.80  10.00     54   +5.80 1 1 1 1 1   888    0 10.43 51.26 ----- 10.5 10.0 164.2 11.9 22.0 -25.4 20.2 -24.3 19.3 -24.6 20.4 -25.5
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:30:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312586
2025-09-28T09:30:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:30:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:30:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:30:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:30:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:30:43.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:30:35', tmtdew=9.9, humidity=51.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:30:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:30:43.182 [DEBUG] [Thread-120580] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:43.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-28T09:30:43.279 [DEBUG] [Thread-120584] [transport.py] [_log()] starting thread (client mode): 0x2b9b8280
2025-09-28T09:30:43.279 [DEBUG] [Thread-120584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:43.293 [DEBUG] [Thread-120584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:30:43.294 [INFO] [Thread-120584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:43.301 [DEBUG] [Thread-120584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] Compression: none
2025-09-28T09:30:43.302 [DEBUG] [Thread-120584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:43.359 [DEBUG] [Thread-120584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:43.360 [DEBUG] [Thread-120584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:43.360 [DEBUG] [Thread-120584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:30:43.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:30:43.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:43.419 [DEBUG] [Thread-120584] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:43.420 [DEBUG] [Thread-120584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:43.420 [DEBUG] [Thread-120584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:43.420 [DEBUG] [Thread-120584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:30:43.420 [DEBUG] [Thread-120584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:43.438 [INFO] [Thread-120584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:43.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-28T09:30:43.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:44.412 [DEBUG] [Thread-120584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:44.412 [DEBUG] [Thread-120584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:44.460 [DEBUG] [Thread-120584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:44.460 [DEBUG] [Thread-120584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:44.470 [DEBUG] [Thread-120584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:44.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:44.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-28T09:30:44.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-28T09:30:44.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:44.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:44.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:44.507 [DEBUG] [Thread-120584] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:54.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:30:54.510 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:30:54.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-28T09:30:55.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 30, 35), 9.9, 51.33, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:30:55.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:30:35
2025-09-28T09:30:55.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:30:55.389 [DEBUG] [Thread-120586] [transport.py] [_log()] starting thread (client mode): 0x30ddcfa0
2025-09-28T09:30:55.389 [DEBUG] [Thread-120586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:55.409 [DEBUG] [Thread-120586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:30:55.409 [INFO] [Thread-120586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:30:55.412 [DEBUG] [Thread-120586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:55.412 [DEBUG] [Thread-120586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] Compression: none
2025-09-28T09:30:55.413 [DEBUG] [Thread-120586] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:55.429 [DEBUG] [Thread-120586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:55.429 [DEBUG] [Thread-120586] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:55.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:30:55.430 [DEBUG] [Thread-120586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:30:55.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:55.430 [DEBUG] [Thread-120586] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:55.430 [DEBUG] [Thread-120586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:55.430 [DEBUG] [Thread-120586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:55.430 [DEBUG] [Thread-120586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:30:55.431 [DEBUG] [Thread-120586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:55.451 [INFO] [Thread-120586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:55.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:56.075 [DEBUG] [Thread-120586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:56.075 [DEBUG] [Thread-120586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:56.075 [DEBUG] [Thread-120586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:30:56.117 [DEBUG] [Thread-120586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:56.117 [DEBUG] [Thread-120586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:56.119 [DEBUG] [Thread-120586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:56.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:56.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:30:56.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:30:56.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:30:56.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:56.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:30:56.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:56.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312586 -999.00  +14.80  10.00     54   +5.80 1 1 1 1 1   888    0 10.43 51.26 ----- 10.5 10.0 164.2 11.9 22.0 -25.4 20.2 -24.3 19.3 -24.6 20.4 -25.5
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312586
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:30:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:30:35', tmtdew=9.9, humidity=51.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:30:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:30:56.137 [DEBUG] [Thread-120586] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:56.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-28T09:30:56.253 [DEBUG] [Thread-120589] [transport.py] [_log()] starting thread (client mode): 0x2e348250
2025-09-28T09:30:56.253 [DEBUG] [Thread-120589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:30:56.299 [DEBUG] [Thread-120589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:30:56.299 [INFO] [Thread-120589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] client lang: <none>
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] server lang: <none>
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] kex follows: False
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] Compression: none
2025-09-28T09:30:56.339 [DEBUG] [Thread-120589] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:30:56.424 [DEBUG] [Thread-120589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:30:56.424 [DEBUG] [Thread-120589] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:30:56.424 [DEBUG] [Thread-120589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:30:56.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:30:56.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:30:56.542 [DEBUG] [Thread-120589] [transport.py] [_log()] userauth is OK
2025-09-28T09:30:56.542 [DEBUG] [Thread-120589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:30:56.542 [DEBUG] [Thread-120589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:30:56.542 [DEBUG] [Thread-120589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:30:56.542 [DEBUG] [Thread-120589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:30:56.588 [INFO] [Thread-120589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:30:56.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-28T09:30:56.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:30:57.522 [DEBUG] [Thread-120591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:30:57.528 [DEBUG] [Thread-120589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:30:57.528 [DEBUG] [Thread-120589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:30:57.607 [DEBUG] [Thread-120589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:30:57.607 [DEBUG] [Thread-120589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:30:57.646 [DEBUG] [Thread-120589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:30:57.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:30:57.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-28T09:30:57.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-28T09:30:57.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:30:57.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:30:57.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:30:57.803 [DEBUG] [Thread-120589] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:30:59.973 [DEBUG] [Thread-120592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:31:07.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:31:07.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-28T09:31:08.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 30, 35), 9.9, 51.33, 0.0, 12.32, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:31:08.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:30:35
2025-09-28T09:31:08.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:31:08.658 [DEBUG] [Thread-120593] [transport.py] [_log()] starting thread (client mode): 0x2b9ba3e0
2025-09-28T09:31:08.659 [DEBUG] [Thread-120593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:08.680 [DEBUG] [Thread-120593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:31:08.680 [INFO] [Thread-120593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] Compression: none
2025-09-28T09:31:08.683 [DEBUG] [Thread-120593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:08.699 [DEBUG] [Thread-120593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:08.699 [DEBUG] [Thread-120593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:08.699 [DEBUG] [Thread-120593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:31:08.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:31:08.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:08.700 [DEBUG] [Thread-120593] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:08.700 [DEBUG] [Thread-120593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:08.700 [DEBUG] [Thread-120593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:08.700 [DEBUG] [Thread-120593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:31:08.700 [DEBUG] [Thread-120593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:08.719 [INFO] [Thread-120593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:08.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:09.358 [DEBUG] [Thread-120593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:09.358 [DEBUG] [Thread-120593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:09.358 [DEBUG] [Thread-120593] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:31:09.399 [DEBUG] [Thread-120593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:09.399 [DEBUG] [Thread-120593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:09.401 [DEBUG] [Thread-120593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:09.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:09.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:31:09.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:31:09.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:31:09.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:09.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:31:09.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312934 -999.00  +14.80   9.57     53   +5.60 1 1 1 1 1   888    0 10.03 44.84 ----- 7.9 9.6 152.0 12.1 22.1 -25.9 20.5 -24.3 19.3 -25.1 20.4 -26.4
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312934
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:31:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:30:35', tmtdew=9.9, humidity=51.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:30:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:31:09.419 [DEBUG] [Thread-120593] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:09.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-28T09:31:09.506 [DEBUG] [Thread-120596] [transport.py] [_log()] starting thread (client mode): 0x2e3dc0d0
2025-09-28T09:31:09.506 [DEBUG] [Thread-120596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:09.525 [DEBUG] [Thread-120596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:31:09.525 [INFO] [Thread-120596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:09.532 [DEBUG] [Thread-120596] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] Compression: none
2025-09-28T09:31:09.533 [DEBUG] [Thread-120596] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:09.590 [DEBUG] [Thread-120596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:09.590 [DEBUG] [Thread-120596] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:09.590 [DEBUG] [Thread-120596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:31:09.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:31:09.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:09.647 [DEBUG] [Thread-120596] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:09.647 [DEBUG] [Thread-120596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:09.647 [DEBUG] [Thread-120596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:09.647 [DEBUG] [Thread-120596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:31:09.647 [DEBUG] [Thread-120596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:09.661 [INFO] [Thread-120596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:09.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:31:09.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:10.627 [DEBUG] [Thread-120596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:10.627 [DEBUG] [Thread-120596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:10.675 [DEBUG] [Thread-120596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:10.675 [DEBUG] [Thread-120596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:10.685 [DEBUG] [Thread-120596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:10.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:10.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-28T09:31:10.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-28T09:31:10.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:10.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:10.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:10.721 [DEBUG] [Thread-120596] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:12.560 [DEBUG] [Thread-120598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:20.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:31:20.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:31:20.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-28T09:31:20.876 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:20.877 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:21.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 31, 7), 10.09, 50.71, 0.0, 11.82, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:31:21.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:31:07
2025-09-28T09:31:21.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:31:21.570 [DEBUG] [Thread-120599] [transport.py] [_log()] starting thread (client mode): 0x2e3fa860
2025-09-28T09:31:21.570 [DEBUG] [Thread-120599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:21.592 [DEBUG] [Thread-120599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:31:21.592 [INFO] [Thread-120599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:31:21.595 [DEBUG] [Thread-120599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:21.596 [DEBUG] [Thread-120599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] Compression: none
2025-09-28T09:31:21.597 [DEBUG] [Thread-120599] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:21.613 [DEBUG] [Thread-120599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:21.614 [DEBUG] [Thread-120599] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:21.614 [DEBUG] [Thread-120599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:31:21.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:31:21.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:21.616 [DEBUG] [Thread-120599] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:21.616 [DEBUG] [Thread-120599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:21.616 [DEBUG] [Thread-120599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:21.616 [DEBUG] [Thread-120599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:31:21.617 [DEBUG] [Thread-120599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:21.650 [INFO] [Thread-120599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:21.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:22.290 [DEBUG] [Thread-120599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:22.290 [DEBUG] [Thread-120599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:22.291 [DEBUG] [Thread-120599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:31:22.331 [DEBUG] [Thread-120599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:22.332 [DEBUG] [Thread-120599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:22.334 [DEBUG] [Thread-120599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:22.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:22.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:31:22.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:31:22.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:31:22.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:22.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:31:22.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:22.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:22.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:31:22.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.312934 -999.00  +14.80   9.57     53   +5.60 1 1 1 1 1   888    0 10.03 44.84 ----- 7.9 9.6 152.0 12.1 22.1 -25.9 20.5 -24.3 19.3 -25.1 20.4 -26.4
2025-09-28T09:31:22.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:31:22.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:31:22.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.312934
2025-09-28T09:31:22.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:31:22.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:31:22.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:31:22.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:31:22.359 [DEBUG] [Thread-120599] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:22.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:31:22.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:31:07', tmtdew=10.09, humidity=50.71, cloud=0.0, wind=11.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:30:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:31:22.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-28T09:31:22.487 [DEBUG] [Thread-120602] [transport.py] [_log()] starting thread (client mode): 0x2b945990
2025-09-28T09:31:22.487 [DEBUG] [Thread-120602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:22.538 [DEBUG] [Thread-120602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:31:22.538 [INFO] [Thread-120602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:31:22.580 [DEBUG] [Thread-120602] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:22.580 [DEBUG] [Thread-120602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:31:22.580 [DEBUG] [Thread-120602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:22.580 [DEBUG] [Thread-120602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] Compression: none
2025-09-28T09:31:22.581 [DEBUG] [Thread-120602] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:22.673 [DEBUG] [Thread-120602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:22.674 [DEBUG] [Thread-120602] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:22.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:31:22.675 [DEBUG] [Thread-120602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:31:22.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:22.801 [DEBUG] [Thread-120602] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:22.802 [DEBUG] [Thread-120602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:22.802 [DEBUG] [Thread-120602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:22.802 [DEBUG] [Thread-120602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:31:22.802 [DEBUG] [Thread-120602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:22.855 [INFO] [Thread-120602] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:22.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-28T09:31:22.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:23.790 [DEBUG] [Thread-120602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:23.790 [DEBUG] [Thread-120602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:23.872 [DEBUG] [Thread-120602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:23.872 [DEBUG] [Thread-120602] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:23.914 [DEBUG] [Thread-120602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:23.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:23.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-28T09:31:23.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') -> 00000000
2025-09-28T09:31:24.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:24.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:24.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:24.083 [DEBUG] [Thread-120602] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:27.606 [DEBUG] [Thread-120604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:34.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:31:34.051 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:31:34.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-28T09:31:34.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 31, 7), 10.09, 50.71, 0.0, 11.82, 14.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:31:34.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:31:07
2025-09-28T09:31:34.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:31:34.943 [DEBUG] [Thread-120605] [transport.py] [_log()] starting thread (client mode): 0x2e38df60
2025-09-28T09:31:34.943 [DEBUG] [Thread-120605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:34.963 [DEBUG] [Thread-120605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:31:34.963 [INFO] [Thread-120605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:34.966 [DEBUG] [Thread-120605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] Compression: none
2025-09-28T09:31:34.967 [DEBUG] [Thread-120605] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:34.984 [DEBUG] [Thread-120605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:34.984 [DEBUG] [Thread-120605] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:34.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:31:34.985 [DEBUG] [Thread-120605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:31:34.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:34.985 [DEBUG] [Thread-120605] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:34.985 [DEBUG] [Thread-120605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:34.986 [DEBUG] [Thread-120605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:34.986 [DEBUG] [Thread-120605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:31:34.986 [DEBUG] [Thread-120605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:35.001 [INFO] [Thread-120605] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:35.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:35.632 [DEBUG] [Thread-120605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:35.632 [DEBUG] [Thread-120605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:35.632 [DEBUG] [Thread-120605] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:31:35.673 [DEBUG] [Thread-120605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:35.673 [DEBUG] [Thread-120605] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:35.675 [DEBUG] [Thread-120605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:35.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:35.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:31:35.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:31:35.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:31:35.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:35.693 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:31:35.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313281 -999.00  +14.70   6.37     54   +5.60 1 1 1 1 1   888    0 10.42 46.69 ----- 5.4 6.4 136.6 10.6 22.2 -26.0 20.6 -24.7 19.4 -24.7 -999.0 -999.0
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313281
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:31:35.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:31:07', tmtdew=10.09, humidity=50.71, cloud=0.0, wind=11.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:31:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:31:35.694 [DEBUG] [Thread-120605] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:35.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-28T09:31:35.816 [DEBUG] [Thread-120608] [transport.py] [_log()] starting thread (client mode): 0x2b947820
2025-09-28T09:31:35.816 [DEBUG] [Thread-120608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:35.863 [DEBUG] [Thread-120608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:31:35.863 [INFO] [Thread-120608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:35.904 [DEBUG] [Thread-120608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] Compression: none
2025-09-28T09:31:35.905 [DEBUG] [Thread-120608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:35.993 [DEBUG] [Thread-120608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:35.993 [DEBUG] [Thread-120608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:35.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:31:35.993 [DEBUG] [Thread-120608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:31:35.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:36.118 [DEBUG] [Thread-120608] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:36.118 [DEBUG] [Thread-120608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:36.118 [DEBUG] [Thread-120608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:36.118 [DEBUG] [Thread-120608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:31:36.118 [DEBUG] [Thread-120608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:36.165 [INFO] [Thread-120608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:36.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-28T09:31:36.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:37.150 [DEBUG] [Thread-120608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:37.150 [DEBUG] [Thread-120608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:37.230 [DEBUG] [Thread-120608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:37.230 [DEBUG] [Thread-120608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:37.273 [DEBUG] [Thread-120608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:37.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:37.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-28T09:31:37.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-28T09:31:37.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:37.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:37.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:37.438 [DEBUG] [Thread-120608] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:42.650 [DEBUG] [Thread-120610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:31:47.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:31:47.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:31:47.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-28T09:31:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 31, 39), 10.19, 50.72, 0.0, 8.81, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:31:47.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:31:39
2025-09-28T09:31:48.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:31:48.253 [DEBUG] [Thread-120611] [transport.py] [_log()] starting thread (client mode): 0x2e3487c0
2025-09-28T09:31:48.254 [DEBUG] [Thread-120611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:48.275 [DEBUG] [Thread-120611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:31:48.275 [INFO] [Thread-120611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:31:48.278 [DEBUG] [Thread-120611] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:48.278 [DEBUG] [Thread-120611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:31:48.278 [DEBUG] [Thread-120611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] Compression: none
2025-09-28T09:31:48.279 [DEBUG] [Thread-120611] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:48.296 [DEBUG] [Thread-120611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:48.297 [DEBUG] [Thread-120611] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:48.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:31:48.298 [DEBUG] [Thread-120611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:31:48.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:48.300 [DEBUG] [Thread-120611] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:48.300 [DEBUG] [Thread-120611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:48.301 [DEBUG] [Thread-120611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:48.301 [DEBUG] [Thread-120611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:31:48.301 [DEBUG] [Thread-120611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:48.325 [INFO] [Thread-120611] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:48.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:48.962 [DEBUG] [Thread-120611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:48.962 [DEBUG] [Thread-120611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:48.963 [DEBUG] [Thread-120611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:31:49.003 [DEBUG] [Thread-120611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:49.004 [DEBUG] [Thread-120611] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:49.006 [DEBUG] [Thread-120611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:49.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:49.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:31:49.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:31:49.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:31:49.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:49.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:31:49.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:49.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313281 -999.00  +14.70   6.37     54   +5.60 1 1 1 1 1   888    0 10.42 46.69 ----- 5.4 6.4 136.6 10.6 22.2 -26.0 20.6 -24.7 19.4 -24.7 -999.0 -999.0
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313281
2025-09-28T09:31:49.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:31:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:31:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:31:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:31:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:31:49.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:31:39', tmtdew=10.19, humidity=50.72, cloud=0.0, wind=8.81, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:31:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:31:49.034 [DEBUG] [Thread-120611] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:49.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-28T09:31:49.130 [DEBUG] [Thread-120614] [transport.py] [_log()] starting thread (client mode): 0x30ddff10
2025-09-28T09:31:49.130 [DEBUG] [Thread-120614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:31:49.149 [DEBUG] [Thread-120614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:31:49.149 [INFO] [Thread-120614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:31:49.156 [DEBUG] [Thread-120614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:31:49.156 [DEBUG] [Thread-120614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:31:49.156 [DEBUG] [Thread-120614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:31:49.156 [DEBUG] [Thread-120614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:49.156 [DEBUG] [Thread-120614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] client lang: <none>
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] server lang: <none>
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] kex follows: False
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] Compression: none
2025-09-28T09:31:49.157 [DEBUG] [Thread-120614] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:31:49.215 [DEBUG] [Thread-120614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:31:49.215 [DEBUG] [Thread-120614] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:31:49.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:31:49.216 [DEBUG] [Thread-120614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:31:49.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:31:49.271 [DEBUG] [Thread-120614] [transport.py] [_log()] userauth is OK
2025-09-28T09:31:49.271 [DEBUG] [Thread-120614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:31:49.272 [DEBUG] [Thread-120614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:31:49.272 [DEBUG] [Thread-120614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:31:49.272 [DEBUG] [Thread-120614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:31:49.291 [INFO] [Thread-120614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:31:49.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-28T09:31:49.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:31:50.256 [DEBUG] [Thread-120614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:31:50.256 [DEBUG] [Thread-120614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:31:50.304 [DEBUG] [Thread-120614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:31:50.304 [DEBUG] [Thread-120614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:31:50.313 [DEBUG] [Thread-120614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:31:50.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:31:50.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:31:50.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-28T09:31:50.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:31:50.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:31:50.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:31:50.347 [DEBUG] [Thread-120614] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:31:57.698 [DEBUG] [Thread-120616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:00.028 [DEBUG] [Thread-120617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:00.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:32:00.343 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:32:00.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:32:00.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 31, 39), 10.19, 50.72, 0.0, 8.81, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:32:00.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:31:39
2025-09-28T09:32:01.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:32:01.205 [DEBUG] [Thread-120618] [transport.py] [_log()] starting thread (client mode): 0x2b9cd120
2025-09-28T09:32:01.205 [DEBUG] [Thread-120618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:01.218 [DEBUG] [Thread-120618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:32:01.218 [INFO] [Thread-120618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:32:01.221 [DEBUG] [Thread-120618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] Compression: none
2025-09-28T09:32:01.222 [DEBUG] [Thread-120618] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:01.242 [DEBUG] [Thread-120618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:01.242 [DEBUG] [Thread-120618] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:01.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:32:01.243 [DEBUG] [Thread-120618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:32:01.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:01.245 [DEBUG] [Thread-120618] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:01.246 [DEBUG] [Thread-120618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:01.246 [DEBUG] [Thread-120618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:01.246 [DEBUG] [Thread-120618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:32:01.246 [DEBUG] [Thread-120618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:01.270 [INFO] [Thread-120618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:01.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:01.930 [DEBUG] [Thread-120618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:01.930 [DEBUG] [Thread-120618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:01.930 [DEBUG] [Thread-120618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:32:01.971 [DEBUG] [Thread-120618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:01.972 [DEBUG] [Thread-120618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:01.975 [DEBUG] [Thread-120618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:01.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:01.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:32:01.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:32:01.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:32:01.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:01.998 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:32:01.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:01.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:01.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:32:01.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313281 -999.00  +14.70   6.37     54   +5.60 1 1 1 1 1   888    0 10.42 46.69 ----- 5.4 6.4 136.6 10.6 22.2 -26.0 20.6 -24.7 19.4 -24.7 -999.0 -999.0
2025-09-28T09:32:01.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:32:01.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:32:01.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313281
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:32:02.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:31:39', tmtdew=10.19, humidity=50.72, cloud=0.0, wind=8.81, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:31:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:32:02.001 [DEBUG] [Thread-120618] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:02.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-28T09:32:02.097 [DEBUG] [Thread-120621] [transport.py] [_log()] starting thread (client mode): 0x2e3ddfc0
2025-09-28T09:32:02.097 [DEBUG] [Thread-120621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:02.113 [DEBUG] [Thread-120621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:32:02.113 [INFO] [Thread-120621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:32:02.120 [DEBUG] [Thread-120621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] Compression: none
2025-09-28T09:32:02.121 [DEBUG] [Thread-120621] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:02.184 [DEBUG] [Thread-120621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:02.184 [DEBUG] [Thread-120621] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:02.184 [DEBUG] [Thread-120621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:32:02.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:32:02.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:02.254 [DEBUG] [Thread-120621] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:02.254 [DEBUG] [Thread-120621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:02.254 [DEBUG] [Thread-120621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:02.254 [DEBUG] [Thread-120621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:32:02.254 [DEBUG] [Thread-120621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:02.278 [INFO] [Thread-120621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:02.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:32:02.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:03.348 [DEBUG] [Thread-120621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:03.348 [DEBUG] [Thread-120621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:03.395 [DEBUG] [Thread-120621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:03.395 [DEBUG] [Thread-120621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:03.404 [DEBUG] [Thread-120621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:03.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:03.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-28T09:32:03.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-28T09:32:03.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:03.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:03.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:03.439 [DEBUG] [Thread-120621] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:12.741 [DEBUG] [Thread-120623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:32:13.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:32:13.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:32:14.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 31, 39), 10.19, 50.72, 0.0, 8.81, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:32:14.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:31:39
2025-09-28T09:32:14.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:32:14.345 [DEBUG] [Thread-120624] [transport.py] [_log()] starting thread (client mode): 0x2e3df3a0
2025-09-28T09:32:14.345 [DEBUG] [Thread-120624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:14.365 [DEBUG] [Thread-120624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:32:14.366 [INFO] [Thread-120624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:14.367 [DEBUG] [Thread-120624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:14.368 [DEBUG] [Thread-120624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:14.368 [DEBUG] [Thread-120624] [transport.py] [_log()] Compression: none
2025-09-28T09:32:14.368 [DEBUG] [Thread-120624] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:14.375 [DEBUG] [Thread-120624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:14.375 [DEBUG] [Thread-120624] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:14.376 [DEBUG] [Thread-120624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:32:14.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:32:14.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:14.376 [DEBUG] [Thread-120624] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:14.376 [DEBUG] [Thread-120624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:14.376 [DEBUG] [Thread-120624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:14.377 [DEBUG] [Thread-120624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:32:14.377 [DEBUG] [Thread-120624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:14.387 [INFO] [Thread-120624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:14.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:15.014 [DEBUG] [Thread-120624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:15.014 [DEBUG] [Thread-120624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:15.014 [DEBUG] [Thread-120624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:32:15.055 [DEBUG] [Thread-120624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:15.055 [DEBUG] [Thread-120624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:15.057 [DEBUG] [Thread-120624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:15.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:15.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:32:15.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:32:15.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:32:15.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:15.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:32:15.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313628 -999.00  +14.80   7.62     54   +5.70 1 1 1 1 1   888    0 10.25 47.63 ----- 9.5 7.6 174.2 9.6 22.3 -26.0 20.8 -24.2 19.5 -25.0 20.6 -25.8
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313628
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:32:15.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:31:39', tmtdew=10.19, humidity=50.72, cloud=0.0, wind=8.81, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:31:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:32:15.078 [DEBUG] [Thread-120624] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:15.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:32:15.161 [DEBUG] [Thread-120627] [transport.py] [_log()] starting thread (client mode): 0x2e38ebf0
2025-09-28T09:32:15.161 [DEBUG] [Thread-120627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:15.176 [DEBUG] [Thread-120627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:32:15.176 [INFO] [Thread-120627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:15.183 [DEBUG] [Thread-120627] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] Compression: none
2025-09-28T09:32:15.184 [DEBUG] [Thread-120627] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:15.242 [DEBUG] [Thread-120627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:15.242 [DEBUG] [Thread-120627] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:15.242 [DEBUG] [Thread-120627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:32:15.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:32:15.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:15.299 [DEBUG] [Thread-120627] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:15.299 [DEBUG] [Thread-120627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:15.299 [DEBUG] [Thread-120627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:15.299 [DEBUG] [Thread-120627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:32:15.299 [DEBUG] [Thread-120627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:15.313 [INFO] [Thread-120627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:15.313 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:32:15.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:16.261 [DEBUG] [Thread-120627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:16.261 [DEBUG] [Thread-120627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:16.309 [DEBUG] [Thread-120627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:16.309 [DEBUG] [Thread-120627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:16.317 [DEBUG] [Thread-120627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:16.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:16.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')
2025-09-28T09:32:16.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-28T09:32:16.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:16.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:16.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:16.348 [DEBUG] [Thread-120627] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:21.016 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:21.017 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:26.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:32:26.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:32:26.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-28T09:32:26.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 32, 12), 10.12, 50.92, 0.0, 7.71, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:32:26.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:32:12
2025-09-28T09:32:27.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:32:27.178 [DEBUG] [Thread-120629] [transport.py] [_log()] starting thread (client mode): 0x2e38ddb0
2025-09-28T09:32:27.178 [DEBUG] [Thread-120629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:27.198 [DEBUG] [Thread-120629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:32:27.198 [INFO] [Thread-120629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:32:27.201 [DEBUG] [Thread-120629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:27.201 [DEBUG] [Thread-120629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:27.202 [DEBUG] [Thread-120629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:27.203 [DEBUG] [Thread-120629] [transport.py] [_log()] Compression: none
2025-09-28T09:32:27.203 [DEBUG] [Thread-120629] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:27.220 [DEBUG] [Thread-120629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:27.220 [DEBUG] [Thread-120629] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:27.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:32:27.221 [DEBUG] [Thread-120629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:32:27.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:27.224 [DEBUG] [Thread-120629] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:27.224 [DEBUG] [Thread-120629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:27.224 [DEBUG] [Thread-120629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:27.224 [DEBUG] [Thread-120629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:32:27.224 [DEBUG] [Thread-120629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:27.247 [INFO] [Thread-120629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:27.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:27.769 [DEBUG] [Thread-120631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:27.880 [DEBUG] [Thread-120629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:27.881 [DEBUG] [Thread-120629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:27.881 [DEBUG] [Thread-120629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:32:27.921 [DEBUG] [Thread-120629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:27.921 [DEBUG] [Thread-120629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:27.924 [DEBUG] [Thread-120629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:27.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:27.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:32:27.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:32:27.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:32:27.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:27.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:32:27.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313628 -999.00  +14.80   7.62     54   +5.70 1 1 1 1 1   888    0 10.25 47.63 ----- 9.5 7.6 174.2 9.6 22.3 -26.0 20.8 -24.2 19.5 -25.0 20.6 -25.8
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313628
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:32:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:32:27.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:32:12', tmtdew=10.12, humidity=50.92, cloud=0.0, wind=7.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:31:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:32:27.944 [DEBUG] [Thread-120629] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32: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-28T09:32:28.028 [DEBUG] [Thread-120633] [transport.py] [_log()] starting thread (client mode): 0x2b96d780
2025-09-28T09:32:28.028 [DEBUG] [Thread-120633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:28.043 [DEBUG] [Thread-120633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:32:28.043 [INFO] [Thread-120633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:28.050 [DEBUG] [Thread-120633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:28.051 [DEBUG] [Thread-120633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:28.051 [DEBUG] [Thread-120633] [transport.py] [_log()] Compression: none
2025-09-28T09:32:28.051 [DEBUG] [Thread-120633] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:28.106 [DEBUG] [Thread-120633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:28.107 [DEBUG] [Thread-120633] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:28.107 [DEBUG] [Thread-120633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:32:28.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:32:28.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:28.163 [DEBUG] [Thread-120633] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:28.163 [DEBUG] [Thread-120633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:28.163 [DEBUG] [Thread-120633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:28.163 [DEBUG] [Thread-120633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:32:28.163 [DEBUG] [Thread-120633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:28.182 [INFO] [Thread-120633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:28.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-28T09:32:28.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:29.151 [DEBUG] [Thread-120633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:29.152 [DEBUG] [Thread-120633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:29.199 [DEBUG] [Thread-120633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:29.199 [DEBUG] [Thread-120633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:29.208 [DEBUG] [Thread-120633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:29.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:29.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-28T09:32:29.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-28T09:32:29.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:29.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:29.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:29.243 [DEBUG] [Thread-120633] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:39.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:32:39.246 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:32:39.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:32:39.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 32, 12), 10.12, 50.92, 0.0, 7.71, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:32:39.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:32:12
2025-09-28T09:32:39.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:32:40.096 [DEBUG] [Thread-120635] [transport.py] [_log()] starting thread (client mode): 0x2e38cb20
2025-09-28T09:32:40.096 [DEBUG] [Thread-120635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:40.116 [DEBUG] [Thread-120635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:32:40.116 [INFO] [Thread-120635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:40.117 [DEBUG] [Thread-120635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:40.118 [DEBUG] [Thread-120635] [transport.py] [_log()] Compression: none
2025-09-28T09:32:40.118 [DEBUG] [Thread-120635] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:40.131 [DEBUG] [Thread-120635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:40.131 [DEBUG] [Thread-120635] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:40.132 [DEBUG] [Thread-120635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:32:40.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:32:40.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:40.134 [DEBUG] [Thread-120635] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:40.134 [DEBUG] [Thread-120635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:40.134 [DEBUG] [Thread-120635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:40.134 [DEBUG] [Thread-120635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:32:40.134 [DEBUG] [Thread-120635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:40.159 [INFO] [Thread-120635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:40.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:40.748 [DEBUG] [Thread-120635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:40.748 [DEBUG] [Thread-120635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:40.749 [DEBUG] [Thread-120635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:32:40.789 [DEBUG] [Thread-120635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:40.790 [DEBUG] [Thread-120635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:40.792 [DEBUG] [Thread-120635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:40.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:40.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:32:40.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:32:40.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:32:40.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:40.811 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:32:40.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:40.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:32:40.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313976 -999.00  +14.90   9.34     54   +5.90 1 1 1 1 1   888    0 10.11 47.43 ----- 9.0 9.3 171.0 12.5 22.4 -26.0 20.8 -24.4 19.6 -24.4 20.8 -25.7
2025-09-28T09:32:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:32:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:32:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313976
2025-09-28T09:32:40.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:32:40.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:32:40.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:32:40.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:32:40.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:32:40.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:32:12', tmtdew=10.12, humidity=50.92, cloud=0.0, wind=7.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:32:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:32:40.814 [DEBUG] [Thread-120635] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:40.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-28T09:32:40.912 [DEBUG] [Thread-120638] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdf0
2025-09-28T09:32:40.912 [DEBUG] [Thread-120638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:40.928 [DEBUG] [Thread-120638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:32:40.929 [INFO] [Thread-120638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:32:40.936 [DEBUG] [Thread-120638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:40.936 [DEBUG] [Thread-120638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:32:40.936 [DEBUG] [Thread-120638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:40.936 [DEBUG] [Thread-120638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:40.936 [DEBUG] [Thread-120638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] Compression: none
2025-09-28T09:32:40.937 [DEBUG] [Thread-120638] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:40.999 [DEBUG] [Thread-120638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:40.999 [DEBUG] [Thread-120638] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:41.000 [DEBUG] [Thread-120638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:32:41.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:32:41.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:41.055 [DEBUG] [Thread-120638] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:41.055 [DEBUG] [Thread-120638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:41.055 [DEBUG] [Thread-120638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:41.056 [DEBUG] [Thread-120638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:32:41.056 [DEBUG] [Thread-120638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:41.074 [INFO] [Thread-120638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:41.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-28T09:32:41.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:42.054 [DEBUG] [Thread-120638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:42.054 [DEBUG] [Thread-120638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:42.102 [DEBUG] [Thread-120638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:42.102 [DEBUG] [Thread-120638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:42.111 [DEBUG] [Thread-120638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:42.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:42.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-28T09:32:42.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-28T09:32:42.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:42.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:42.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:42.147 [DEBUG] [Thread-120638] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:42.815 [DEBUG] [Thread-120640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:32:52.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:32:52.150 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:32:52.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:32:52.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 32, 44), 9.99, 51.21, 0.0, 9.0, 14.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:32:52.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:32:44
2025-09-28T09:32:52.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:32:53.024 [DEBUG] [Thread-120641] [transport.py] [_log()] starting thread (client mode): 0x2b96e6e0
2025-09-28T09:32:53.024 [DEBUG] [Thread-120641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:53.043 [DEBUG] [Thread-120641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:32:53.043 [INFO] [Thread-120641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:53.046 [DEBUG] [Thread-120641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] Compression: none
2025-09-28T09:32:53.047 [DEBUG] [Thread-120641] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:53.065 [DEBUG] [Thread-120641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:53.065 [DEBUG] [Thread-120641] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:53.065 [DEBUG] [Thread-120641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:32:53.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:32:53.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:53.065 [DEBUG] [Thread-120641] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:53.066 [DEBUG] [Thread-120641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:53.066 [DEBUG] [Thread-120641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:53.066 [DEBUG] [Thread-120641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:32:53.066 [DEBUG] [Thread-120641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:53.082 [INFO] [Thread-120641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:53.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:53.718 [DEBUG] [Thread-120641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:53.718 [DEBUG] [Thread-120641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:53.718 [DEBUG] [Thread-120641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:32:53.759 [DEBUG] [Thread-120641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:53.759 [DEBUG] [Thread-120641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:53.761 [DEBUG] [Thread-120641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:53.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:53.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:32:53.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:32:53.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:32:53.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:53.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:32:53.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313976 -999.00  +14.90   9.34     54   +5.90 1 1 1 1 1   888    0 10.11 47.43 ----- 9.0 9.3 171.0 12.5 22.4 -26.0 20.8 -24.4 19.6 -24.4 20.8 -25.7
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313976
2025-09-28T09:32:53.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:32:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:32:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:32:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:32:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:32:53.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:32:44', tmtdew=9.99, humidity=51.21, cloud=0.0, wind=9.0, temperature=14.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:32:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:32:53.779 [DEBUG] [Thread-120641] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:53.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-28T09:32:53.897 [DEBUG] [Thread-120644] [transport.py] [_log()] starting thread (client mode): 0x30ddd780
2025-09-28T09:32:53.897 [DEBUG] [Thread-120644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:32:53.945 [DEBUG] [Thread-120644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:32:53.945 [INFO] [Thread-120644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] client lang: <none>
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] server lang: <none>
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] kex follows: False
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:32:53.986 [DEBUG] [Thread-120644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:32:53.987 [DEBUG] [Thread-120644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:32:53.987 [DEBUG] [Thread-120644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:32:53.987 [DEBUG] [Thread-120644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:32:53.987 [DEBUG] [Thread-120644] [transport.py] [_log()] Compression: none
2025-09-28T09:32:53.987 [DEBUG] [Thread-120644] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:32:54.077 [DEBUG] [Thread-120644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:32:54.077 [DEBUG] [Thread-120644] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:32:54.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:32:54.078 [DEBUG] [Thread-120644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:32:54.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:32:54.203 [DEBUG] [Thread-120644] [transport.py] [_log()] userauth is OK
2025-09-28T09:32:54.203 [DEBUG] [Thread-120644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:32:54.203 [DEBUG] [Thread-120644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:32:54.203 [DEBUG] [Thread-120644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:32:54.203 [DEBUG] [Thread-120644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:32:54.250 [INFO] [Thread-120644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:32:54.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-28T09:32:54.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:32:55.211 [DEBUG] [Thread-120644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:32:55.211 [DEBUG] [Thread-120644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:32:55.291 [DEBUG] [Thread-120644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:32:55.291 [DEBUG] [Thread-120644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:32:55.334 [DEBUG] [Thread-120644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:32:55.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:32:55.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-28T09:32:55.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-28T09:32:55.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:32:55.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:32:55.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:32:55.501 [DEBUG] [Thread-120644] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:32:57.861 [DEBUG] [Thread-120646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:00.082 [DEBUG] [Thread-120647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:05.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:33:05.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:33:05.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:33:06.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 32, 44), 9.99, 51.21, 0.0, 9.0, 14.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:33:06.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:32:44
2025-09-28T09:33:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:33:06.331 [DEBUG] [Thread-120648] [transport.py] [_log()] starting thread (client mode): 0x2b946350
2025-09-28T09:33:06.331 [DEBUG] [Thread-120648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:06.351 [DEBUG] [Thread-120648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:33:06.351 [INFO] [Thread-120648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:06.354 [DEBUG] [Thread-120648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] Compression: none
2025-09-28T09:33:06.355 [DEBUG] [Thread-120648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:06.372 [DEBUG] [Thread-120648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:06.372 [DEBUG] [Thread-120648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:06.373 [DEBUG] [Thread-120648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:33:06.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:33:06.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:06.416 [DEBUG] [Thread-120648] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:06.417 [DEBUG] [Thread-120648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:06.417 [DEBUG] [Thread-120648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:06.417 [DEBUG] [Thread-120648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:33:06.417 [DEBUG] [Thread-120648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:06.437 [INFO] [Thread-120648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:06.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:07.086 [DEBUG] [Thread-120648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:07.087 [DEBUG] [Thread-120648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:07.087 [DEBUG] [Thread-120648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:33:07.127 [DEBUG] [Thread-120648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:07.127 [DEBUG] [Thread-120648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:07.130 [DEBUG] [Thread-120648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:07.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:07.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:33:07.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:33:07.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:33:07.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:07.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:33:07.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.313976 -999.00  +14.90   9.34     54   +5.90 1 1 1 1 1   888    0 10.11 47.43 ----- 9.0 9.3 171.0 12.5 22.4 -26.0 20.8 -24.4 19.6 -24.4 20.8 -25.7
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:33:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.313976
2025-09-28T09:33:07.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:33:07.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:33:07.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:33:07.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:33:07.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:33:07.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:32:44', tmtdew=9.99, humidity=51.21, cloud=0.0, wind=9.0, temperature=14.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:32:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:33:07.156 [DEBUG] [Thread-120648] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:07.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:33:07.282 [DEBUG] [Thread-120651] [transport.py] [_log()] starting thread (client mode): 0x2e38e860
2025-09-28T09:33:07.283 [DEBUG] [Thread-120651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:07.326 [DEBUG] [Thread-120651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:33:07.326 [INFO] [Thread-120651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:07.363 [DEBUG] [Thread-120651] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] Compression: none
2025-09-28T09:33:07.364 [DEBUG] [Thread-120651] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:07.449 [DEBUG] [Thread-120651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:07.449 [DEBUG] [Thread-120651] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:07.450 [DEBUG] [Thread-120651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:33:07.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:33:07.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:07.565 [DEBUG] [Thread-120651] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:07.565 [DEBUG] [Thread-120651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:07.566 [DEBUG] [Thread-120651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:07.566 [DEBUG] [Thread-120651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:33:07.566 [DEBUG] [Thread-120651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:07.614 [INFO] [Thread-120651] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:07.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-28T09:33:07.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:08.561 [DEBUG] [Thread-120651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:08.561 [DEBUG] [Thread-120651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:08.637 [DEBUG] [Thread-120651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:08.637 [DEBUG] [Thread-120651] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:08.674 [DEBUG] [Thread-120651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:08.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:08.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-28T09:33:08.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-28T09:33:08.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:08.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:08.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:08.821 [DEBUG] [Thread-120651] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:12.904 [DEBUG] [Thread-120653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:18.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:33:18.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:33:18.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-28T09:33:19.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 33, 15), 10.0, 51.18, 0.0, 9.69, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:33:19.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:33:15
2025-09-28T09:33:19.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:33:19.638 [DEBUG] [Thread-120654] [transport.py] [_log()] starting thread (client mode): 0x2b94e950
2025-09-28T09:33:19.638 [DEBUG] [Thread-120654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:19.658 [DEBUG] [Thread-120654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:33:19.659 [INFO] [Thread-120654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:19.662 [DEBUG] [Thread-120654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] Compression: none
2025-09-28T09:33:19.663 [DEBUG] [Thread-120654] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:19.680 [DEBUG] [Thread-120654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:19.681 [DEBUG] [Thread-120654] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:19.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:33:19.682 [DEBUG] [Thread-120654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:33:19.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:19.684 [DEBUG] [Thread-120654] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:19.684 [DEBUG] [Thread-120654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:19.684 [DEBUG] [Thread-120654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:19.684 [DEBUG] [Thread-120654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:33:19.684 [DEBUG] [Thread-120654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:19.708 [INFO] [Thread-120654] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:19.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:20.316 [DEBUG] [Thread-120654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:20.316 [DEBUG] [Thread-120654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:20.317 [DEBUG] [Thread-120654] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:33:20.357 [DEBUG] [Thread-120654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:20.358 [DEBUG] [Thread-120654] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:20.361 [DEBUG] [Thread-120654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:20.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:20.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:33:20.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:33:20.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:33:20.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:20.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:33:20.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.314665 -999.00  +15.10   5.54     54   +5.90 1 1 1 1 1   888    0 9.94 39.95 ----- 7.5 5.5 158.6 8.3 22.6 -26.0 21.1 -24.8 19.8 -24.4 20.9 -25.6
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:33:20.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.314665
2025-09-28T09:33:20.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:33:20.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:33:20.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:33:20.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:33:20.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:33:20.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:33:15', tmtdew=10.0, humidity=51.18, cloud=0.0, wind=9.69, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:33:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:33:20.385 [DEBUG] [Thread-120654] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:20.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-28T09:33:20.478 [DEBUG] [Thread-120657] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-28T09:33:20.478 [DEBUG] [Thread-120657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:20.493 [DEBUG] [Thread-120657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:33:20.493 [INFO] [Thread-120657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:33:20.501 [DEBUG] [Thread-120657] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:20.501 [DEBUG] [Thread-120657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:33:20.501 [DEBUG] [Thread-120657] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] Compression: none
2025-09-28T09:33:20.502 [DEBUG] [Thread-120657] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:20.559 [DEBUG] [Thread-120657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:20.560 [DEBUG] [Thread-120657] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:20.560 [DEBUG] [Thread-120657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:33:20.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:33:20.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:20.615 [DEBUG] [Thread-120657] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:20.615 [DEBUG] [Thread-120657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:20.616 [DEBUG] [Thread-120657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:20.616 [DEBUG] [Thread-120657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:33:20.616 [DEBUG] [Thread-120657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:20.635 [INFO] [Thread-120657] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:20.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-28T09:33:20.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:21.159 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:21.160 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:21.630 [DEBUG] [Thread-120657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:21.630 [DEBUG] [Thread-120657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:21.678 [DEBUG] [Thread-120657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:21.678 [DEBUG] [Thread-120657] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:21.687 [DEBUG] [Thread-120657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:21.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:21.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-28T09:33:21.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-28T09:33:21.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:21.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:21.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:21.722 [DEBUG] [Thread-120657] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:27.932 [DEBUG] [Thread-120659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:31.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:33:31.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:33:31.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-28T09:33:32.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 33, 15), 10.0, 51.18, 0.0, 9.69, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:33:32.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:33:15
2025-09-28T09:33:32.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:33:32.569 [DEBUG] [Thread-120660] [transport.py] [_log()] starting thread (client mode): 0x2b9ba830
2025-09-28T09:33:32.570 [DEBUG] [Thread-120660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:32.591 [DEBUG] [Thread-120660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:33:32.591 [INFO] [Thread-120660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:32.593 [DEBUG] [Thread-120660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] Compression: none
2025-09-28T09:33:32.594 [DEBUG] [Thread-120660] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:32.607 [DEBUG] [Thread-120660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:32.608 [DEBUG] [Thread-120660] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:32.609 [DEBUG] [Thread-120660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:33:32.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:33:32.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:32.611 [DEBUG] [Thread-120660] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:32.611 [DEBUG] [Thread-120660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:32.611 [DEBUG] [Thread-120660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:32.612 [DEBUG] [Thread-120660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:33:32.612 [DEBUG] [Thread-120660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:32.635 [INFO] [Thread-120660] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:32.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:33.282 [DEBUG] [Thread-120660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:33.282 [DEBUG] [Thread-120660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:33.283 [DEBUG] [Thread-120660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:33:33.323 [DEBUG] [Thread-120660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:33.323 [DEBUG] [Thread-120660] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:33.326 [DEBUG] [Thread-120660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:33.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:33.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:33:33.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:33:33.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:33:33.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:33.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:33:33.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:33.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:33:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.314665 -999.00  +15.10   5.54     54   +5.90 1 1 1 1 1   888    0 9.94 39.95 ----- 7.5 5.5 158.6 8.3 22.6 -26.0 21.1 -24.8 19.8 -24.4 20.9 -25.6
2025-09-28T09:33:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:33:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:33:33.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.314665
2025-09-28T09:33:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:33:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:33:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:33:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:33:33.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:33:33.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:33:15', tmtdew=10.0, humidity=51.18, cloud=0.0, wind=9.69, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:33:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:33:33.352 [DEBUG] [Thread-120660] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:33.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-28T09:33:33.447 [DEBUG] [Thread-120663] [transport.py] [_log()] starting thread (client mode): 0x2b94c220
2025-09-28T09:33:33.447 [DEBUG] [Thread-120663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:33.462 [DEBUG] [Thread-120663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:33:33.462 [INFO] [Thread-120663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:33:33.470 [DEBUG] [Thread-120663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:33.470 [DEBUG] [Thread-120663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:33:33.470 [DEBUG] [Thread-120663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:33.470 [DEBUG] [Thread-120663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] Compression: none
2025-09-28T09:33:33.471 [DEBUG] [Thread-120663] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:33.527 [DEBUG] [Thread-120663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:33.528 [DEBUG] [Thread-120663] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:33.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:33:33.528 [DEBUG] [Thread-120663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:33:33.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:33.590 [DEBUG] [Thread-120663] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:33.590 [DEBUG] [Thread-120663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:33.590 [DEBUG] [Thread-120663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:33.590 [DEBUG] [Thread-120663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:33:33.590 [DEBUG] [Thread-120663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:33.610 [INFO] [Thread-120663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33: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-28T09:33:33.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:34.574 [DEBUG] [Thread-120663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:34.575 [DEBUG] [Thread-120663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:34.622 [DEBUG] [Thread-120663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:34.622 [DEBUG] [Thread-120663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:34.631 [DEBUG] [Thread-120663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:34.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:34.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-28T09:33:34.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-28T09:33:34.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:34.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:34.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:34.666 [DEBUG] [Thread-120663] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:42.968 [DEBUG] [Thread-120665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:44.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:33:44.660 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:33:44.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-28T09:33:45.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 33, 15), 10.0, 51.18, 0.0, 9.69, 14.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:33:45.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:33:15
2025-09-28T09:33:45.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:33:45.498 [DEBUG] [Thread-120666] [transport.py] [_log()] starting thread (client mode): 0x2b96e170
2025-09-28T09:33:45.498 [DEBUG] [Thread-120666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:45.514 [DEBUG] [Thread-120666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:33:45.514 [INFO] [Thread-120666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] Compression: none
2025-09-28T09:33:45.516 [DEBUG] [Thread-120666] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:45.527 [DEBUG] [Thread-120666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:45.528 [DEBUG] [Thread-120666] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:45.528 [DEBUG] [Thread-120666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:33:45.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:33:45.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:45.529 [DEBUG] [Thread-120666] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:45.530 [DEBUG] [Thread-120666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:45.530 [DEBUG] [Thread-120666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:45.530 [DEBUG] [Thread-120666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:33:45.530 [DEBUG] [Thread-120666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:45.546 [INFO] [Thread-120666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:45.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:46.092 [DEBUG] [Thread-120666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:46.092 [DEBUG] [Thread-120666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:46.092 [DEBUG] [Thread-120666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:33:46.133 [DEBUG] [Thread-120666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:46.133 [DEBUG] [Thread-120666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:46.136 [DEBUG] [Thread-120666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:46.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:46.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:33:46.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:33:46.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:33:46.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:46.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:33:46.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:46.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:33:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315017 -999.00  +15.10  11.07     53   +5.80 1 1 1 1 1   888    0 10.02 36.98 ----- 9.5 11.1 194.0 12.9 22.7 -27.0 21.1 -25.7 19.8 -24.7 21.0 -26.1
2025-09-28T09:33:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:33:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:33:46.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315017
2025-09-28T09:33:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:33:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:33:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:33:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:33:46.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:33:46.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:33:15', tmtdew=10.0, humidity=51.18, cloud=0.0, wind=9.69, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:33:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:33:46.155 [DEBUG] [Thread-120666] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:46.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-28T09:33:46.282 [DEBUG] [Thread-120669] [transport.py] [_log()] starting thread (client mode): 0x2b96dff0
2025-09-28T09:33:46.282 [DEBUG] [Thread-120669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:46.322 [DEBUG] [Thread-120669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:33:46.322 [INFO] [Thread-120669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:33:46.356 [DEBUG] [Thread-120669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:46.356 [DEBUG] [Thread-120669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:33:46.356 [DEBUG] [Thread-120669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:46.356 [DEBUG] [Thread-120669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] Compression: none
2025-09-28T09:33:46.357 [DEBUG] [Thread-120669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:46.440 [DEBUG] [Thread-120669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:46.440 [DEBUG] [Thread-120669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:46.441 [DEBUG] [Thread-120669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:33:46.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:33:46.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:46.549 [DEBUG] [Thread-120669] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:46.549 [DEBUG] [Thread-120669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:46.549 [DEBUG] [Thread-120669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:46.549 [DEBUG] [Thread-120669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:33:46.549 [DEBUG] [Thread-120669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:46.586 [INFO] [Thread-120669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:46.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-28T09:33:46.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:47.586 [DEBUG] [Thread-120669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:47.586 [DEBUG] [Thread-120669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:47.670 [DEBUG] [Thread-120669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:47.671 [DEBUG] [Thread-120669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:47.709 [DEBUG] [Thread-120669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:47.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:47.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-28T09:33:47.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-28T09:33:47.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:47.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:47.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:47.853 [DEBUG] [Thread-120669] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:57.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:33:57.819 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:33:57.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-28T09:33:57.997 [DEBUG] [Thread-120671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:33:58.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 33, 47), 10.27, 50.31, 0.0, 14.06, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:33:58.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:33:47
2025-09-28T09:33:58.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:33:58.656 [DEBUG] [Thread-120672] [transport.py] [_log()] starting thread (client mode): 0x2b94dff0
2025-09-28T09:33:58.656 [DEBUG] [Thread-120672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:58.677 [DEBUG] [Thread-120672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:33:58.677 [INFO] [Thread-120672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:33:58.680 [DEBUG] [Thread-120672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:58.681 [DEBUG] [Thread-120672] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] Compression: none
2025-09-28T09:33:58.682 [DEBUG] [Thread-120672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:58.699 [DEBUG] [Thread-120672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:58.700 [DEBUG] [Thread-120672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:58.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:33:58.701 [DEBUG] [Thread-120672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:33:58.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:58.703 [DEBUG] [Thread-120672] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:58.703 [DEBUG] [Thread-120672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:58.704 [DEBUG] [Thread-120672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:58.704 [DEBUG] [Thread-120672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:33:58.704 [DEBUG] [Thread-120672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:58.727 [INFO] [Thread-120672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:58.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:33:59.347 [DEBUG] [Thread-120672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:33:59.347 [DEBUG] [Thread-120672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:33:59.347 [DEBUG] [Thread-120672] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:33:59.388 [DEBUG] [Thread-120672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:33:59.388 [DEBUG] [Thread-120672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:33:59.391 [DEBUG] [Thread-120672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:33:59.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:33:59.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:33:59.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:33:59.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:33:59.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:33:59.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:33:59.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315017 -999.00  +15.10  11.07     53   +5.80 1 1 1 1 1   888    0 10.02 36.98 ----- 9.5 11.1 194.0 12.9 22.7 -27.0 21.1 -25.7 19.8 -24.7 21.0 -26.1
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315017
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:33:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:33:47', tmtdew=10.27, humidity=50.31, cloud=0.0, wind=14.06, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:33:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:33:59.405 [DEBUG] [Thread-120672] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:33:59.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-28T09:33:59.486 [DEBUG] [Thread-120675] [transport.py] [_log()] starting thread (client mode): 0x2e3c2830
2025-09-28T09:33:59.486 [DEBUG] [Thread-120675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:33:59.501 [DEBUG] [Thread-120675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:33:59.501 [INFO] [Thread-120675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:33:59.508 [DEBUG] [Thread-120675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] client lang: <none>
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] server lang: <none>
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] kex follows: False
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] Compression: none
2025-09-28T09:33:59.509 [DEBUG] [Thread-120675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:33:59.566 [DEBUG] [Thread-120675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:33:59.567 [DEBUG] [Thread-120675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:33:59.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:33:59.568 [DEBUG] [Thread-120675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:33:59.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:33:59.623 [DEBUG] [Thread-120675] [transport.py] [_log()] userauth is OK
2025-09-28T09:33:59.623 [DEBUG] [Thread-120675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:33:59.624 [DEBUG] [Thread-120675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:33:59.624 [DEBUG] [Thread-120675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:33:59.624 [DEBUG] [Thread-120675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:33:59.643 [INFO] [Thread-120675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:33:59.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-28T09:33:59.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:00.137 [DEBUG] [Thread-120677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:00.617 [DEBUG] [Thread-120675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:00.617 [DEBUG] [Thread-120675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:00.665 [DEBUG] [Thread-120675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:00.665 [DEBUG] [Thread-120675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:00.674 [DEBUG] [Thread-120675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:00.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:00.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-28T09:34:00.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-28T09:34:00.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:00.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:00.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:00.707 [DEBUG] [Thread-120675] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:10.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:34:10.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:34:10.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-28T09:34:11.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 33, 47), 10.27, 50.31, 0.0, 14.06, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:34:11.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:33:47
2025-09-28T09:34:11.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:34:11.554 [DEBUG] [Thread-120678] [transport.py] [_log()] starting thread (client mode): 0x2e3c0af0
2025-09-28T09:34:11.554 [DEBUG] [Thread-120678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:11.574 [DEBUG] [Thread-120678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:34:11.574 [INFO] [Thread-120678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] Compression: none
2025-09-28T09:34:11.578 [DEBUG] [Thread-120678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:11.594 [DEBUG] [Thread-120678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:11.595 [DEBUG] [Thread-120678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:11.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:34:11.596 [DEBUG] [Thread-120678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:34:11.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:11.598 [DEBUG] [Thread-120678] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:11.598 [DEBUG] [Thread-120678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:11.598 [DEBUG] [Thread-120678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:11.598 [DEBUG] [Thread-120678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:34:11.599 [DEBUG] [Thread-120678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:11.616 [INFO] [Thread-120678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:11.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:12.247 [DEBUG] [Thread-120678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:12.247 [DEBUG] [Thread-120678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:12.248 [DEBUG] [Thread-120678] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:34:12.288 [DEBUG] [Thread-120678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:12.288 [DEBUG] [Thread-120678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:12.291 [DEBUG] [Thread-120678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:12.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:12.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:34:12.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:34:12.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:34:12.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:12.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:34:12.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315017 -999.00  +15.10  11.07     53   +5.80 1 1 1 1 1   888    0 10.02 36.98 ----- 9.5 11.1 194.0 12.9 22.7 -27.0 21.1 -25.7 19.8 -24.7 21.0 -26.1
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:34:12.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315017
2025-09-28T09:34:12.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:34:12.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:34:12.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:34:12.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:34:12.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:34:12.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:33:47', tmtdew=10.27, humidity=50.31, cloud=0.0, wind=14.06, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:33:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:34:12.314 [DEBUG] [Thread-120678] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:12.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-28T09:34:12.408 [DEBUG] [Thread-120681] [transport.py] [_log()] starting thread (client mode): 0x2b96c700
2025-09-28T09:34:12.408 [DEBUG] [Thread-120681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:12.423 [DEBUG] [Thread-120681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:34:12.423 [INFO] [Thread-120681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:34:12.430 [DEBUG] [Thread-120681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] Compression: none
2025-09-28T09:34:12.431 [DEBUG] [Thread-120681] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:12.486 [DEBUG] [Thread-120681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:12.487 [DEBUG] [Thread-120681] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:12.487 [DEBUG] [Thread-120681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:34:12.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:34:12.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:12.543 [DEBUG] [Thread-120681] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:12.543 [DEBUG] [Thread-120681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:12.543 [DEBUG] [Thread-120681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:12.544 [DEBUG] [Thread-120681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:34:12.544 [DEBUG] [Thread-120681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:12.563 [INFO] [Thread-120681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:12.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-28T09:34:12.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:13.034 [DEBUG] [Thread-120683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:13.545 [DEBUG] [Thread-120681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:13.546 [DEBUG] [Thread-120681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:13.593 [DEBUG] [Thread-120681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:13.593 [DEBUG] [Thread-120681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:13.602 [DEBUG] [Thread-120681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:13.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:13.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-28T09:34:13.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-28T09:34:13.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:13.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:13.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:13.637 [DEBUG] [Thread-120681] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:21.300 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:21.301 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:23.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:34:23.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:34:23.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-28T09:34:24.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 34, 19), 10.32, 50.16, 0.0, 15.03, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:34:24.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:34:19
2025-09-28T09:34:24.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:34:24.464 [DEBUG] [Thread-120684] [transport.py] [_log()] starting thread (client mode): 0x2b94fe50
2025-09-28T09:34:24.465 [DEBUG] [Thread-120684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:24.485 [DEBUG] [Thread-120684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:34:24.486 [INFO] [Thread-120684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:24.489 [DEBUG] [Thread-120684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:24.490 [DEBUG] [Thread-120684] [transport.py] [_log()] Compression: none
2025-09-28T09:34:24.490 [DEBUG] [Thread-120684] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:24.505 [DEBUG] [Thread-120684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:24.505 [DEBUG] [Thread-120684] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:24.505 [DEBUG] [Thread-120684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:34:24.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:34:24.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:24.506 [DEBUG] [Thread-120684] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:24.506 [DEBUG] [Thread-120684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:24.507 [DEBUG] [Thread-120684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:24.507 [DEBUG] [Thread-120684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:34:24.507 [DEBUG] [Thread-120684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:24.519 [INFO] [Thread-120684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:24.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:25.163 [DEBUG] [Thread-120684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:25.163 [DEBUG] [Thread-120684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:25.163 [DEBUG] [Thread-120684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:34:25.204 [DEBUG] [Thread-120684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:25.204 [DEBUG] [Thread-120684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:25.207 [DEBUG] [Thread-120684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:25.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:25.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:34:25.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:34:25.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:34:25.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:25.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:34:25.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:25.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315365 -999.00  +15.10  10.31     53   +5.60 1 1 1 1 1   888    0 9.79 31.87 ----- 9.5 10.3 189.4 14.4 22.6 -26.7 21.0 -26.1 19.8 -25.4 20.9 -26.3
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315365
2025-09-28T09:34:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:34:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:34:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:34:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:34:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:34:25.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:34:19', tmtdew=10.32, humidity=50.16, cloud=0.0, wind=15.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:34:07.536', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:34:25.234 [DEBUG] [Thread-120684] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:25.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-28T09:34:25.364 [DEBUG] [Thread-120687] [transport.py] [_log()] starting thread (client mode): 0x2b96fbe0
2025-09-28T09:34:25.364 [DEBUG] [Thread-120687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:25.406 [DEBUG] [Thread-120687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:34:25.406 [INFO] [Thread-120687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:34:25.440 [DEBUG] [Thread-120687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:25.440 [DEBUG] [Thread-120687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:34:25.440 [DEBUG] [Thread-120687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:25.440 [DEBUG] [Thread-120687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:25.441 [DEBUG] [Thread-120687] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] Compression: none
2025-09-28T09:34:25.442 [DEBUG] [Thread-120687] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:25.525 [DEBUG] [Thread-120687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:25.526 [DEBUG] [Thread-120687] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:25.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:34:25.527 [DEBUG] [Thread-120687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:34:25.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:25.638 [DEBUG] [Thread-120687] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:25.638 [DEBUG] [Thread-120687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:25.638 [DEBUG] [Thread-120687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:25.639 [DEBUG] [Thread-120687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:34:25.639 [DEBUG] [Thread-120687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:25.686 [INFO] [Thread-120687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:25.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-28T09:34:25.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:26.668 [DEBUG] [Thread-120687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:26.668 [DEBUG] [Thread-120687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:26.745 [DEBUG] [Thread-120687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:26.745 [DEBUG] [Thread-120687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:26.784 [DEBUG] [Thread-120687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:26.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:26.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-28T09:34:26.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-28T09:34:26.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:26.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:26.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:26.936 [DEBUG] [Thread-120687] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:28.090 [DEBUG] [Thread-120689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:36.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:34:36.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:34:36.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-28T09:34:37.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 34, 19), 10.32, 50.16, 0.0, 15.03, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:34:37.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:34:19
2025-09-28T09:34:37.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:34:37.726 [DEBUG] [Thread-120690] [transport.py] [_log()] starting thread (client mode): 0x2b9b97b0
2025-09-28T09:34:37.726 [DEBUG] [Thread-120690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:37.747 [DEBUG] [Thread-120690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:34:37.747 [INFO] [Thread-120690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:34:37.750 [DEBUG] [Thread-120690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:37.750 [DEBUG] [Thread-120690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:34:37.750 [DEBUG] [Thread-120690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:37.750 [DEBUG] [Thread-120690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] Compression: none
2025-09-28T09:34:37.751 [DEBUG] [Thread-120690] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:37.768 [DEBUG] [Thread-120690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:37.769 [DEBUG] [Thread-120690] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:37.769 [DEBUG] [Thread-120690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:34:37.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:34:37.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:37.771 [DEBUG] [Thread-120690] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:37.771 [DEBUG] [Thread-120690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:37.771 [DEBUG] [Thread-120690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:37.771 [DEBUG] [Thread-120690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:34:37.771 [DEBUG] [Thread-120690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:37.796 [INFO] [Thread-120690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:37.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:38.433 [DEBUG] [Thread-120690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:38.434 [DEBUG] [Thread-120690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:38.434 [DEBUG] [Thread-120690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:34:38.474 [DEBUG] [Thread-120690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:38.474 [DEBUG] [Thread-120690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:38.477 [DEBUG] [Thread-120690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:38.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:38.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:34:38.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:34:38.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:34:38.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:38.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:34:38.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:38.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315365 -999.00  +15.10  10.31     53   +5.60 1 1 1 1 1   888    0 9.79 31.87 ----- 9.5 10.3 189.4 14.4 22.6 -26.7 21.0 -26.1 19.8 -25.4 20.9 -26.3
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315365
2025-09-28T09:34:38.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:34:38.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:34:38.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:34:38.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:34:38.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:34:38.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:34:19', tmtdew=10.32, humidity=50.16, cloud=0.0, wind=15.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:34:07.536', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:34:38.500 [DEBUG] [Thread-120690] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:38.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-28T09:34:38.633 [DEBUG] [Thread-120693] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb50
2025-09-28T09:34:38.633 [DEBUG] [Thread-120693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:38.678 [DEBUG] [Thread-120693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:34:38.678 [INFO] [Thread-120693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:34:38.720 [DEBUG] [Thread-120693] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:38.721 [DEBUG] [Thread-120693] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:38.722 [DEBUG] [Thread-120693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:38.722 [DEBUG] [Thread-120693] [transport.py] [_log()] Compression: none
2025-09-28T09:34:38.722 [DEBUG] [Thread-120693] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:38.809 [DEBUG] [Thread-120693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:38.809 [DEBUG] [Thread-120693] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:38.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:34:38.810 [DEBUG] [Thread-120693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:34:38.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:38.936 [DEBUG] [Thread-120693] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:38.936 [DEBUG] [Thread-120693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:38.945 [DEBUG] [Thread-120693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:38.945 [DEBUG] [Thread-120693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:34:38.945 [DEBUG] [Thread-120693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:39.002 [INFO] [Thread-120693] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:39.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-28T09:34:39.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:39.968 [DEBUG] [Thread-120693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:39.968 [DEBUG] [Thread-120693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:40.050 [DEBUG] [Thread-120693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:40.050 [DEBUG] [Thread-120693] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:40.093 [DEBUG] [Thread-120693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:40.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:40.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-28T09:34:40.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') -> 00000000
2025-09-28T09:34:40.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:40.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:40.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:40.260 [DEBUG] [Thread-120693] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:43.138 [DEBUG] [Thread-120695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:34:50.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:34:50.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:34:50.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:34:50.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 34, 19), 10.32, 50.16, 0.0, 15.03, 14.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:34:50.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:34:19
2025-09-28T09:34:50.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:34:51.045 [DEBUG] [Thread-120696] [transport.py] [_log()] starting thread (client mode): 0x30ddd8d0
2025-09-28T09:34:51.045 [DEBUG] [Thread-120696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:51.065 [DEBUG] [Thread-120696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:34:51.065 [INFO] [Thread-120696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] Compression: none
2025-09-28T09:34:51.068 [DEBUG] [Thread-120696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:51.085 [DEBUG] [Thread-120696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:51.086 [DEBUG] [Thread-120696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:51.086 [DEBUG] [Thread-120696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:34:51.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:34:51.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:51.088 [DEBUG] [Thread-120696] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:51.089 [DEBUG] [Thread-120696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:51.089 [DEBUG] [Thread-120696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:51.089 [DEBUG] [Thread-120696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:34:51.089 [DEBUG] [Thread-120696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:51.114 [INFO] [Thread-120696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:51.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:51.742 [DEBUG] [Thread-120696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:51.742 [DEBUG] [Thread-120696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:51.742 [DEBUG] [Thread-120696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:34:51.783 [DEBUG] [Thread-120696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:51.783 [DEBUG] [Thread-120696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:51.786 [DEBUG] [Thread-120696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:51.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:51.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:34:51.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:34:51.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:34:51.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:51.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:34:51.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315365 -999.00  +15.10  10.31     53   +5.60 1 1 1 1 1   888    0 9.79 31.87 ----- 9.5 10.3 189.4 14.4 22.6 -26.7 21.0 -26.1 19.8 -25.4 20.9 -26.3
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:34:51.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315365
2025-09-28T09:34:51.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:34:51.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:34:51.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:34:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:34:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:34:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:34:19', tmtdew=10.32, humidity=50.16, cloud=0.0, wind=15.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:34:07.536', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:34:51.812 [DEBUG] [Thread-120696] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:51.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-28T09:34:51.943 [DEBUG] [Thread-120699] [transport.py] [_log()] starting thread (client mode): 0x2b96f3d0
2025-09-28T09:34:51.943 [DEBUG] [Thread-120699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:34:51.994 [DEBUG] [Thread-120699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:34:51.994 [INFO] [Thread-120699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:34:52.036 [DEBUG] [Thread-120699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] client lang: <none>
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] server lang: <none>
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] kex follows: False
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] Compression: none
2025-09-28T09:34:52.037 [DEBUG] [Thread-120699] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:34:52.132 [DEBUG] [Thread-120699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:34:52.132 [DEBUG] [Thread-120699] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:34:52.132 [DEBUG] [Thread-120699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:34:52.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:34:52.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:34:52.260 [DEBUG] [Thread-120699] [transport.py] [_log()] userauth is OK
2025-09-28T09:34:52.260 [DEBUG] [Thread-120699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:34:52.260 [DEBUG] [Thread-120699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:34:52.260 [DEBUG] [Thread-120699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:34:52.260 [DEBUG] [Thread-120699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:34:52.309 [INFO] [Thread-120699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:34:52.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-28T09:34:52.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:34:53.252 [DEBUG] [Thread-120699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:34:53.252 [DEBUG] [Thread-120699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:34:53.334 [DEBUG] [Thread-120699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:34:53.334 [DEBUG] [Thread-120699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:34:53.380 [DEBUG] [Thread-120699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:34:53.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:34:53.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')
2025-09-28T09:34:53.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-28T09:34:53.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:34:53.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:34:53.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:34:53.556 [DEBUG] [Thread-120699] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:34:58.167 [DEBUG] [Thread-120701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:00.193 [DEBUG] [Thread-120702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:03.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:35:03.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:35:03.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-28T09:35:04.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 34, 51), 10.29, 50.03, 0.0, 10.41, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:35:04.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:34:51
2025-09-28T09:35:04.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:35:04.337 [DEBUG] [Thread-120703] [transport.py] [_log()] starting thread (client mode): 0x2e3deda0
2025-09-28T09:35:04.337 [DEBUG] [Thread-120703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:04.362 [DEBUG] [Thread-120703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:35:04.362 [INFO] [Thread-120703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:04.366 [DEBUG] [Thread-120703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] Compression: none
2025-09-28T09:35:04.367 [DEBUG] [Thread-120703] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:04.383 [DEBUG] [Thread-120703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:04.384 [DEBUG] [Thread-120703] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:04.384 [DEBUG] [Thread-120703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:35:04.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:35:04.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:04.386 [DEBUG] [Thread-120703] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:04.387 [DEBUG] [Thread-120703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:04.387 [DEBUG] [Thread-120703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:04.387 [DEBUG] [Thread-120703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:35:04.387 [DEBUG] [Thread-120703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:04.410 [INFO] [Thread-120703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:04.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:13.200 [DEBUG] [Thread-120705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:14.073 [DEBUG] [Thread-120703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:14.074 [DEBUG] [Thread-120703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:14.074 [DEBUG] [Thread-120703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:35:14.114 [DEBUG] [Thread-120703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:14.115 [DEBUG] [Thread-120703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:14.118 [DEBUG] [Thread-120703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:14.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:14.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:35:14.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:35:14.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:35:14.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:14.411 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:35:14.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:14.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.315712 -999.00  +15.10  15.93     53   +5.70 1 1 1 1 1   888    0 9.75 28.53 ----- 16.4 15.9 175.8 19.2 22.6 -26.2 20.9 -28.5 19.8 -25.1 20.9 -26.6
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.315712
2025-09-28T09:35:14.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:35:14.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:35:14.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:35:14.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:35:14.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:35:14.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:34:51', tmtdew=10.29, humidity=50.03, cloud=0.0, wind=10.41, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:34:37.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:35:14.413 [DEBUG] [Thread-120703] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:14.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-28T09:35:14.546 [DEBUG] [Thread-120707] [transport.py] [_log()] starting thread (client mode): 0x2b96f9d0
2025-09-28T09:35:14.547 [DEBUG] [Thread-120707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:14.585 [DEBUG] [Thread-120707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:35:14.585 [INFO] [Thread-120707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:35:14.617 [DEBUG] [Thread-120707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:14.618 [DEBUG] [Thread-120707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:14.619 [DEBUG] [Thread-120707] [transport.py] [_log()] Compression: none
2025-09-28T09:35:14.619 [DEBUG] [Thread-120707] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:14.700 [DEBUG] [Thread-120707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:14.701 [DEBUG] [Thread-120707] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:14.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:35:14.701 [DEBUG] [Thread-120707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:35:14.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:14.809 [DEBUG] [Thread-120707] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:14.809 [DEBUG] [Thread-120707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:14.809 [DEBUG] [Thread-120707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:14.809 [DEBUG] [Thread-120707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:35:14.809 [DEBUG] [Thread-120707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:14.855 [INFO] [Thread-120707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35: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-28T09:35:14.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:15.822 [DEBUG] [Thread-120707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:15.822 [DEBUG] [Thread-120707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:15.895 [DEBUG] [Thread-120707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:15.895 [DEBUG] [Thread-120707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:15.929 [DEBUG] [Thread-120707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:15.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:15.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-28T09:35:15.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-28T09:35:16.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:16.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:16.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:16.061 [DEBUG] [Thread-120707] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:21.442 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:21.443 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:26.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:35:26.039 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:35:26.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-28T09:35:26.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 35, 23), 10.12, 50.63, 0.0, 13.15, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:35:26.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:35:23
2025-09-28T09:35:26.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:35:26.871 [DEBUG] [Thread-120709] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e70
2025-09-28T09:35:26.871 [DEBUG] [Thread-120709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:26.892 [DEBUG] [Thread-120709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:35:26.892 [INFO] [Thread-120709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:26.896 [DEBUG] [Thread-120709] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] Compression: none
2025-09-28T09:35:26.897 [DEBUG] [Thread-120709] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:26.914 [DEBUG] [Thread-120709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:26.914 [DEBUG] [Thread-120709] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:26.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:35:26.915 [DEBUG] [Thread-120709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:35:26.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:26.917 [DEBUG] [Thread-120709] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:26.917 [DEBUG] [Thread-120709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:26.917 [DEBUG] [Thread-120709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:26.917 [DEBUG] [Thread-120709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:35:26.917 [DEBUG] [Thread-120709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:26.941 [INFO] [Thread-120709] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:26.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:28.233 [DEBUG] [Thread-120711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:28.424 [DEBUG] [Thread-120709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:28.424 [DEBUG] [Thread-120709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:28.424 [DEBUG] [Thread-120709] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:35:28.464 [DEBUG] [Thread-120709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:28.464 [DEBUG] [Thread-120709] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:28.467 [DEBUG] [Thread-120709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:28.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:28.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:35:28.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:35:28.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:35:28.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:28.494 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:35:28.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:28.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:28.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:35:28.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316059 -999.00  +14.90   9.88     53   +5.60 1 1 1 1 1   888    0 9.62 26.20 ----- 11.2 9.9 189.0 16.7 22.5 -27.4 20.7 -29.1 19.7 -26.6 20.9 -26.7
2025-09-28T09:35:28.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:35:28.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:35:28.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316059
2025-09-28T09:35:28.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:35:28.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:35:28.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:35:28.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:35:28.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:35:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:35:23', tmtdew=10.12, humidity=50.63, cloud=0.0, wind=13.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:07.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:35:28.497 [DEBUG] [Thread-120709] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:28.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-28T09:35:28.617 [DEBUG] [Thread-120713] [transport.py] [_log()] starting thread (client mode): 0x30dde140
2025-09-28T09:35:28.618 [DEBUG] [Thread-120713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:28.658 [DEBUG] [Thread-120713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:35:28.658 [INFO] [Thread-120713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:28.692 [DEBUG] [Thread-120713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] Compression: none
2025-09-28T09:35:28.693 [DEBUG] [Thread-120713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:28.775 [DEBUG] [Thread-120713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:28.775 [DEBUG] [Thread-120713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:28.776 [DEBUG] [Thread-120713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:35:28.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:35:28.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:28.884 [DEBUG] [Thread-120713] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:28.884 [DEBUG] [Thread-120713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:28.884 [DEBUG] [Thread-120713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:28.885 [DEBUG] [Thread-120713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:35:28.885 [DEBUG] [Thread-120713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:28.929 [INFO] [Thread-120713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:28.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:35:28.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:29.901 [DEBUG] [Thread-120713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:29.902 [DEBUG] [Thread-120713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:29.975 [DEBUG] [Thread-120713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:29.975 [DEBUG] [Thread-120713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:30.010 [DEBUG] [Thread-120713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:30.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:30.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-28T09:35:30.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-28T09:35:30.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:30.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:30.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:30.143 [DEBUG] [Thread-120713] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:35:40.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:35:40.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-28T09:35:40.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 35, 23), 10.12, 50.63, 0.0, 13.15, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:35:40.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:35:23
2025-09-28T09:35:40.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:35:40.938 [DEBUG] [Thread-120715] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd60
2025-09-28T09:35:40.939 [DEBUG] [Thread-120715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:40.958 [DEBUG] [Thread-120715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:35:40.958 [INFO] [Thread-120715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:35:40.961 [DEBUG] [Thread-120715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:40.962 [DEBUG] [Thread-120715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:40.963 [DEBUG] [Thread-120715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:40.963 [DEBUG] [Thread-120715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:40.963 [DEBUG] [Thread-120715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:40.963 [DEBUG] [Thread-120715] [transport.py] [_log()] Compression: none
2025-09-28T09:35:40.963 [DEBUG] [Thread-120715] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:40.980 [DEBUG] [Thread-120715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:40.980 [DEBUG] [Thread-120715] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:40.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:35:40.982 [DEBUG] [Thread-120715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:35:40.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:40.984 [DEBUG] [Thread-120715] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:40.984 [DEBUG] [Thread-120715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:40.984 [DEBUG] [Thread-120715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:40.984 [DEBUG] [Thread-120715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:35:40.984 [DEBUG] [Thread-120715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:41.008 [INFO] [Thread-120715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:41.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:41.596 [DEBUG] [Thread-120715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:41.596 [DEBUG] [Thread-120715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:41.596 [DEBUG] [Thread-120715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:35:41.636 [DEBUG] [Thread-120715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:41.637 [DEBUG] [Thread-120715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:41.640 [DEBUG] [Thread-120715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:41.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:41.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:35:41.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:35:41.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:35:41.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:41.664 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:35:41.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:41.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316059 -999.00  +14.90   9.88     53   +5.60 1 1 1 1 1   888    0 9.62 26.20 ----- 11.2 9.9 189.0 16.7 22.5 -27.4 20.7 -29.1 19.7 -26.6 20.9 -26.7
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316059
2025-09-28T09:35:41.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:35:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:35:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:35:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:35:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:35:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:35:23', tmtdew=10.12, humidity=50.63, cloud=0.0, wind=13.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:07.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:35:41.667 [DEBUG] [Thread-120715] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:41.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-28T09:35:41.768 [DEBUG] [Thread-120718] [transport.py] [_log()] starting thread (client mode): 0x30ddcbe0
2025-09-28T09:35:41.768 [DEBUG] [Thread-120718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:41.784 [DEBUG] [Thread-120718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:35:41.784 [INFO] [Thread-120718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:35:41.792 [DEBUG] [Thread-120718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:41.793 [DEBUG] [Thread-120718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:41.794 [DEBUG] [Thread-120718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:41.794 [DEBUG] [Thread-120718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:41.794 [DEBUG] [Thread-120718] [transport.py] [_log()] Compression: none
2025-09-28T09:35:41.794 [DEBUG] [Thread-120718] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:41.850 [DEBUG] [Thread-120718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:41.851 [DEBUG] [Thread-120718] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:41.851 [DEBUG] [Thread-120718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:35:41.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:35:41.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:41.907 [DEBUG] [Thread-120718] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:41.907 [DEBUG] [Thread-120718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:41.907 [DEBUG] [Thread-120718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:41.907 [DEBUG] [Thread-120718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:35:41.907 [DEBUG] [Thread-120718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:41.926 [INFO] [Thread-120718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:41.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-28T09:35:41.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:42.853 [DEBUG] [Thread-120718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:42.853 [DEBUG] [Thread-120718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:42.901 [DEBUG] [Thread-120718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:42.901 [DEBUG] [Thread-120718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:42.910 [DEBUG] [Thread-120718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:42.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:42.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-28T09:35:42.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-28T09:35:42.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:42.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:42.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:42.945 [DEBUG] [Thread-120718] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:43.283 [DEBUG] [Thread-120720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:35:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:35:52.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:35:52.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-28T09:35:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 35, 23), 10.12, 50.63, 0.0, 13.15, 14.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:35:53.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:35:23
2025-09-28T09:35:53.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:35:53.780 [DEBUG] [Thread-120721] [transport.py] [_log()] starting thread (client mode): 0x2e38ccd0
2025-09-28T09:35:53.780 [DEBUG] [Thread-120721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:53.799 [DEBUG] [Thread-120721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:35:53.799 [INFO] [Thread-120721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:53.802 [DEBUG] [Thread-120721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] Compression: none
2025-09-28T09:35:53.803 [DEBUG] [Thread-120721] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:53.819 [DEBUG] [Thread-120721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:53.819 [DEBUG] [Thread-120721] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:53.820 [DEBUG] [Thread-120721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:35:53.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:35:53.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:53.822 [DEBUG] [Thread-120721] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:53.822 [DEBUG] [Thread-120721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:53.823 [DEBUG] [Thread-120721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:53.823 [DEBUG] [Thread-120721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:35:53.823 [DEBUG] [Thread-120721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:53.858 [INFO] [Thread-120721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:53.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:54.581 [DEBUG] [Thread-120721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:54.581 [DEBUG] [Thread-120721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:54.582 [DEBUG] [Thread-120721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:35:54.622 [DEBUG] [Thread-120721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:54.623 [DEBUG] [Thread-120721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:54.626 [DEBUG] [Thread-120721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:54.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:54.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:35:54.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:35:54.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:35:54.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:54.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:35:54.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:54.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:54.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:35:54.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316059 -999.00  +14.90   9.88     53   +5.60 1 1 1 1 1   888    0 9.62 26.20 ----- 11.2 9.9 189.0 16.7 22.5 -27.4 20.7 -29.1 19.7 -26.6 20.9 -26.7
2025-09-28T09:35:54.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:35:54.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:35:54.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316059
2025-09-28T09:35:54.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:35:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:35:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:35:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:35:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:35:54.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:35:23', tmtdew=10.12, humidity=50.63, cloud=0.0, wind=13.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:07.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:35:54.650 [DEBUG] [Thread-120721] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:54.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:35:54.774 [DEBUG] [Thread-120724] [transport.py] [_log()] starting thread (client mode): 0x2e362530
2025-09-28T09:35:54.774 [DEBUG] [Thread-120724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:35:54.798 [DEBUG] [Thread-120724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:35:54.798 [INFO] [Thread-120724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:35:54.806 [DEBUG] [Thread-120724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:35:54.806 [DEBUG] [Thread-120724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] client lang: <none>
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] server lang: <none>
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] kex follows: False
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] Compression: none
2025-09-28T09:35:54.807 [DEBUG] [Thread-120724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:35:55.123 [DEBUG] [Thread-120724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:35:55.123 [DEBUG] [Thread-120724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:35:55.124 [DEBUG] [Thread-120724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:35:55.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:35:55.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:35:55.236 [DEBUG] [Thread-120724] [transport.py] [_log()] userauth is OK
2025-09-28T09:35:55.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:35:55.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:35:55.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:35:55.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:35:55.284 [INFO] [Thread-120724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:35:55.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-28T09:35:55.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:35:56.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:35:56.237 [DEBUG] [Thread-120724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:35:56.314 [DEBUG] [Thread-120724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:35:56.314 [DEBUG] [Thread-120724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:35:56.351 [DEBUG] [Thread-120724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:35:56.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:35:56.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-28T09:35:56.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-28T09:35:56.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:35:56.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:35:56.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:35:56.499 [DEBUG] [Thread-120724] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:35:58.317 [DEBUG] [Thread-120726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:00.237 [DEBUG] [Thread-120727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:06.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:36:06.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:36:06.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:36:07.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 35, 55), 10.12, 50.84, 0.0, 14.08, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:36:07.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:35:55
2025-09-28T09:36:07.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:36:07.303 [DEBUG] [Thread-120728] [transport.py] [_log()] starting thread (client mode): 0x2e38d510
2025-09-28T09:36:07.304 [DEBUG] [Thread-120728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:07.323 [DEBUG] [Thread-120728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:36:07.323 [INFO] [Thread-120728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:36:07.326 [DEBUG] [Thread-120728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:07.326 [DEBUG] [Thread-120728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:36:07.326 [DEBUG] [Thread-120728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:07.326 [DEBUG] [Thread-120728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] Compression: none
2025-09-28T09:36:07.327 [DEBUG] [Thread-120728] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:07.336 [DEBUG] [Thread-120728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:07.337 [DEBUG] [Thread-120728] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:07.337 [DEBUG] [Thread-120728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:36:07.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:36:07.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:07.339 [DEBUG] [Thread-120728] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:07.339 [DEBUG] [Thread-120728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:07.339 [DEBUG] [Thread-120728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:07.340 [DEBUG] [Thread-120728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:36:07.340 [DEBUG] [Thread-120728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:07.357 [INFO] [Thread-120728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:07.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:07.979 [DEBUG] [Thread-120728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:07.979 [DEBUG] [Thread-120728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:07.979 [DEBUG] [Thread-120728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:36:08.020 [DEBUG] [Thread-120728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:08.020 [DEBUG] [Thread-120728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:08.023 [DEBUG] [Thread-120728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:08.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:08.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:36:08.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:36:08.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:36:08.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:08.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:36:08.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:08.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:08.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:36:08.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316406 -999.00  +14.70  10.68     53   +5.50 1 1 1 1 1   888    0 9.79 25.22 ----- 8.3 10.7 174.6 13.9 22.4 -26.0 20.6 -28.7 19.7 -25.0 20.9 -26.6
2025-09-28T09:36:08.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:36:08.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:36:08.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316406
2025-09-28T09:36:08.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:36:08.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:35:55', tmtdew=10.12, humidity=50.84, cloud=0.0, wind=14.08, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:36:08.045 [DEBUG] [Thread-120728] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:08.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-28T09:36:08.153 [DEBUG] [Thread-120731] [transport.py] [_log()] starting thread (client mode): 0x30ddff10
2025-09-28T09:36:08.153 [DEBUG] [Thread-120731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:08.169 [DEBUG] [Thread-120731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:36:08.169 [INFO] [Thread-120731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:36:08.177 [DEBUG] [Thread-120731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:08.177 [DEBUG] [Thread-120731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:36:08.177 [DEBUG] [Thread-120731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:08.177 [DEBUG] [Thread-120731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:08.177 [DEBUG] [Thread-120731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:08.178 [DEBUG] [Thread-120731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:08.179 [DEBUG] [Thread-120731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:08.179 [DEBUG] [Thread-120731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:08.179 [DEBUG] [Thread-120731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:08.179 [DEBUG] [Thread-120731] [transport.py] [_log()] Compression: none
2025-09-28T09:36:08.179 [DEBUG] [Thread-120731] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:08.235 [DEBUG] [Thread-120731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:08.236 [DEBUG] [Thread-120731] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:08.236 [DEBUG] [Thread-120731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:36:08.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:36:08.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:08.291 [DEBUG] [Thread-120731] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:08.291 [DEBUG] [Thread-120731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:08.291 [DEBUG] [Thread-120731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:08.291 [DEBUG] [Thread-120731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:36:08.291 [DEBUG] [Thread-120731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:08.312 [INFO] [Thread-120731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:08.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-28T09:36:08.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:09.296 [DEBUG] [Thread-120731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:09.296 [DEBUG] [Thread-120731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:09.344 [DEBUG] [Thread-120731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:09.344 [DEBUG] [Thread-120731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:09.353 [DEBUG] [Thread-120731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:09.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:09.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-28T09:36:09.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-28T09:36:09.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:09.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:09.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:09.387 [DEBUG] [Thread-120731] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:13.345 [DEBUG] [Thread-120733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:19.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:36:19.390 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:36:19.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-28T09:36:19.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 35, 55), 10.12, 50.84, 0.0, 14.08, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:36:19.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:35:55
2025-09-28T09:36:20.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:36:20.222 [DEBUG] [Thread-120734] [transport.py] [_log()] starting thread (client mode): 0x2e38d8a0
2025-09-28T09:36:20.222 [DEBUG] [Thread-120734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:20.243 [DEBUG] [Thread-120734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:36:20.243 [INFO] [Thread-120734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:20.246 [DEBUG] [Thread-120734] [transport.py] [_log()] Compression: none
2025-09-28T09:36:20.247 [DEBUG] [Thread-120734] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:20.259 [DEBUG] [Thread-120734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:20.259 [DEBUG] [Thread-120734] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:20.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:36:20.260 [DEBUG] [Thread-120734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:36:20.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:20.262 [DEBUG] [Thread-120734] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:20.269 [DEBUG] [Thread-120734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:20.269 [DEBUG] [Thread-120734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:20.270 [DEBUG] [Thread-120734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:36:20.270 [DEBUG] [Thread-120734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:20.293 [INFO] [Thread-120734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:20.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:20.916 [DEBUG] [Thread-120734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:20.917 [DEBUG] [Thread-120734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:20.917 [DEBUG] [Thread-120734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:36:20.957 [DEBUG] [Thread-120734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:20.958 [DEBUG] [Thread-120734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:20.960 [DEBUG] [Thread-120734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:20.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:20.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:36:20.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:36:20.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:36:20.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:20.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:36:20.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:20.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:20.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:36:20.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316406 -999.00  +14.70  10.68     53   +5.50 1 1 1 1 1   888    0 9.79 25.22 ----- 8.3 10.7 174.6 13.9 22.4 -26.0 20.6 -28.7 19.7 -25.0 20.9 -26.6
2025-09-28T09:36:20.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:36:20.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:36:20.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316406
2025-09-28T09:36:20.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:36:20.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:35:55', tmtdew=10.12, humidity=50.84, cloud=0.0, wind=14.08, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:36:20.987 [DEBUG] [Thread-120734] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:21.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-28T09:36:21.082 [DEBUG] [Thread-120737] [transport.py] [_log()] starting thread (client mode): 0x2e3f8b20
2025-09-28T09:36:21.082 [DEBUG] [Thread-120737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:21.098 [DEBUG] [Thread-120737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:36:21.098 [INFO] [Thread-120737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:36:21.105 [DEBUG] [Thread-120737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:21.105 [DEBUG] [Thread-120737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:36:21.105 [DEBUG] [Thread-120737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:21.105 [DEBUG] [Thread-120737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:21.105 [DEBUG] [Thread-120737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] Compression: none
2025-09-28T09:36:21.106 [DEBUG] [Thread-120737] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:21.162 [DEBUG] [Thread-120737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:21.162 [DEBUG] [Thread-120737] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:21.162 [DEBUG] [Thread-120737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:36:21.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:36:21.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:21.219 [DEBUG] [Thread-120737] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:21.219 [DEBUG] [Thread-120737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:21.219 [DEBUG] [Thread-120737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:21.220 [DEBUG] [Thread-120737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:36:21.220 [DEBUG] [Thread-120737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:21.239 [INFO] [Thread-120737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:21.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-28T09:36:21.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:21.585 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:21.586 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:22.179 [DEBUG] [Thread-120737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:22.179 [DEBUG] [Thread-120737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:22.227 [DEBUG] [Thread-120737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:22.227 [DEBUG] [Thread-120737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:22.236 [DEBUG] [Thread-120737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:22.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:22.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-28T09:36:22.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-28T09:36:22.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:22.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:22.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:22.270 [DEBUG] [Thread-120737] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:28.387 [DEBUG] [Thread-120739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:32.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:36:32.268 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:36:32.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-28T09:36:32.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 36, 27), 10.42, 49.87, 0.0, 14.54, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:36:32.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:36:27
2025-09-28T09:36:32.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:36:33.098 [DEBUG] [Thread-120740] [transport.py] [_log()] starting thread (client mode): 0x2b96cdf0
2025-09-28T09:36:33.099 [DEBUG] [Thread-120740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:33.118 [DEBUG] [Thread-120740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:36:33.118 [INFO] [Thread-120740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:33.121 [DEBUG] [Thread-120740] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] Compression: none
2025-09-28T09:36:33.122 [DEBUG] [Thread-120740] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:33.138 [DEBUG] [Thread-120740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:33.138 [DEBUG] [Thread-120740] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:33.138 [DEBUG] [Thread-120740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:36:33.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:36:33.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:33.139 [DEBUG] [Thread-120740] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:33.139 [DEBUG] [Thread-120740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:33.139 [DEBUG] [Thread-120740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:33.139 [DEBUG] [Thread-120740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:36:33.139 [DEBUG] [Thread-120740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:33.151 [INFO] [Thread-120740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:33.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:33.866 [DEBUG] [Thread-120740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:33.866 [DEBUG] [Thread-120740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:33.866 [DEBUG] [Thread-120740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:36:33.907 [DEBUG] [Thread-120740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:33.907 [DEBUG] [Thread-120740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:33.909 [DEBUG] [Thread-120740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:33.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:33.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:36:33.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:36:33.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:36:33.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:33.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:36:33.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316406 -999.00  +14.70  10.68     53   +5.50 1 1 1 1 1   888    0 9.79 25.22 ----- 8.3 10.7 174.6 13.9 22.4 -26.0 20.6 -28.7 19.7 -25.0 20.9 -26.6
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316406
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:36:33.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:36:27', tmtdew=10.42, humidity=49.87, cloud=0.0, wind=14.54, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:35:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:36:33.928 [DEBUG] [Thread-120740] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:34.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-28T09:36:34.013 [DEBUG] [Thread-120743] [transport.py] [_log()] starting thread (client mode): 0x2e38f400
2025-09-28T09:36:34.013 [DEBUG] [Thread-120743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:34.028 [DEBUG] [Thread-120743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:36:34.028 [INFO] [Thread-120743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] Compression: none
2025-09-28T09:36:34.036 [DEBUG] [Thread-120743] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:34.094 [DEBUG] [Thread-120743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:34.094 [DEBUG] [Thread-120743] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:34.094 [DEBUG] [Thread-120743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:36:34.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:36:34.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:34.151 [DEBUG] [Thread-120743] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:34.151 [DEBUG] [Thread-120743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:34.151 [DEBUG] [Thread-120743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:34.151 [DEBUG] [Thread-120743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:36:34.151 [DEBUG] [Thread-120743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:34.169 [INFO] [Thread-120743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:34.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-28T09:36:34.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:35.125 [DEBUG] [Thread-120743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:35.125 [DEBUG] [Thread-120743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:35.173 [DEBUG] [Thread-120743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:35.173 [DEBUG] [Thread-120743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:35.181 [DEBUG] [Thread-120743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:35.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:35.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-28T09:36:35.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-28T09:36:35.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:35.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:35.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:35.212 [DEBUG] [Thread-120743] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:43.413 [DEBUG] [Thread-120745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:45.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:36:45.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:36:45.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-28T09:36:45.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 36, 27), 10.42, 49.87, 0.0, 14.54, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:36:45.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:36:27
2025-09-28T09:36:45.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:36:46.050 [DEBUG] [Thread-120746] [transport.py] [_log()] starting thread (client mode): 0x2b96ece0
2025-09-28T09:36:46.050 [DEBUG] [Thread-120746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:46.070 [DEBUG] [Thread-120746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:36:46.070 [INFO] [Thread-120746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:36:46.073 [DEBUG] [Thread-120746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:46.073 [DEBUG] [Thread-120746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:36:46.073 [DEBUG] [Thread-120746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:46.073 [DEBUG] [Thread-120746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:46.074 [DEBUG] [Thread-120746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:46.075 [DEBUG] [Thread-120746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:46.075 [DEBUG] [Thread-120746] [transport.py] [_log()] Compression: none
2025-09-28T09:36:46.075 [DEBUG] [Thread-120746] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:46.093 [DEBUG] [Thread-120746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:46.093 [DEBUG] [Thread-120746] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:46.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:36:46.094 [DEBUG] [Thread-120746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:36:46.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:46.097 [DEBUG] [Thread-120746] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:46.097 [DEBUG] [Thread-120746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:46.097 [DEBUG] [Thread-120746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:46.097 [DEBUG] [Thread-120746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:36:46.097 [DEBUG] [Thread-120746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:46.115 [INFO] [Thread-120746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:46.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:46.738 [DEBUG] [Thread-120746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:46.738 [DEBUG] [Thread-120746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:46.739 [DEBUG] [Thread-120746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:36:46.779 [DEBUG] [Thread-120746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:46.779 [DEBUG] [Thread-120746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:46.782 [DEBUG] [Thread-120746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:46.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:46.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:36:46.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:36:46.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:36:46.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:46.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:36:46.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316748 -999.00  +14.90  12.13     53   +5.60 1 1 1 1 1   888    0 9.66 25.51 ----- 11.0 12.1 200.6 14.2 22.4 -27.6 20.8 -28.1 19.8 -25.9 20.9 -27.0
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:36:46.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316748
2025-09-28T09:36:46.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:36:46.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:36:46.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:36:46.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:36:46.804 [DEBUG] [Thread-120746] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:46.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:36:46.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:36:27', tmtdew=10.42, humidity=49.87, cloud=0.0, wind=14.54, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:36:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:36:46.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-28T09:36:46.897 [DEBUG] [Thread-120749] [transport.py] [_log()] starting thread (client mode): 0x2b946b90
2025-09-28T09:36:46.897 [DEBUG] [Thread-120749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:46.912 [DEBUG] [Thread-120749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:36:46.912 [INFO] [Thread-120749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:36:46.919 [DEBUG] [Thread-120749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:46.919 [DEBUG] [Thread-120749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] Compression: none
2025-09-28T09:36:46.920 [DEBUG] [Thread-120749] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:46.983 [DEBUG] [Thread-120749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:46.984 [DEBUG] [Thread-120749] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:46.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:36:46.985 [DEBUG] [Thread-120749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:36:46.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:47.039 [DEBUG] [Thread-120749] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:47.039 [DEBUG] [Thread-120749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:47.039 [DEBUG] [Thread-120749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:47.040 [DEBUG] [Thread-120749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:36:47.040 [DEBUG] [Thread-120749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:47.059 [INFO] [Thread-120749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:47.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-28T09:36:47.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:48.011 [DEBUG] [Thread-120749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:48.011 [DEBUG] [Thread-120749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:48.059 [DEBUG] [Thread-120749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:48.059 [DEBUG] [Thread-120749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:48.068 [DEBUG] [Thread-120749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:48.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:48.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-28T09:36:48.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-28T09:36:48.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:48.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:48.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:48.102 [DEBUG] [Thread-120749] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:58.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:36:58.105 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:36:58.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-28T09:36:58.458 [DEBUG] [Thread-120751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:36:58.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 36, 27), 10.42, 49.87, 0.0, 14.54, 14.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:36:58.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:36:27
2025-09-28T09:36:58.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:36:58.923 [DEBUG] [Thread-120752] [transport.py] [_log()] starting thread (client mode): 0x2e3fbc40
2025-09-28T09:36:58.924 [DEBUG] [Thread-120752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:58.944 [DEBUG] [Thread-120752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:36:58.944 [INFO] [Thread-120752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] Compression: none
2025-09-28T09:36:58.947 [DEBUG] [Thread-120752] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:58.962 [DEBUG] [Thread-120752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:58.962 [DEBUG] [Thread-120752] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:58.963 [DEBUG] [Thread-120752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:36:58.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:36:58.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:36:58.963 [DEBUG] [Thread-120752] [transport.py] [_log()] userauth is OK
2025-09-28T09:36:58.963 [DEBUG] [Thread-120752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:36:58.963 [DEBUG] [Thread-120752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:36:58.964 [DEBUG] [Thread-120752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:36:58.964 [DEBUG] [Thread-120752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:36:58.991 [INFO] [Thread-120752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:36:58.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:36:59.736 [DEBUG] [Thread-120752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:36:59.736 [DEBUG] [Thread-120752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:36:59.736 [DEBUG] [Thread-120752] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:36:59.777 [DEBUG] [Thread-120752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:36:59.777 [DEBUG] [Thread-120752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:36:59.778 [DEBUG] [Thread-120752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:36:59.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:36:59.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:36:59.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:36:59.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:36:59.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:36:59.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:36:59.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.316748 -999.00  +14.90  12.13     53   +5.60 1 1 1 1 1   888    0 9.66 25.51 ----- 11.0 12.1 200.6 14.2 22.4 -27.6 20.8 -28.1 19.8 -25.9 20.9 -27.0
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.316748
2025-09-28T09:36:59.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:36:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:36:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:36:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:36:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:36:59.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:36:27', tmtdew=10.42, humidity=49.87, cloud=0.0, wind=14.54, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:36:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:36:59.797 [DEBUG] [Thread-120752] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:36:59.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-28T09:36:59.883 [DEBUG] [Thread-120755] [transport.py] [_log()] starting thread (client mode): 0x2e362920
2025-09-28T09:36:59.883 [DEBUG] [Thread-120755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:36:59.897 [DEBUG] [Thread-120755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:36:59.897 [INFO] [Thread-120755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] client lang: <none>
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] server lang: <none>
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] kex follows: False
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] Compression: none
2025-09-28T09:36:59.905 [DEBUG] [Thread-120755] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:36:59.961 [DEBUG] [Thread-120755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:36:59.962 [DEBUG] [Thread-120755] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:36:59.962 [DEBUG] [Thread-120755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:36:59.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:36:59.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:00.019 [DEBUG] [Thread-120755] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:00.019 [DEBUG] [Thread-120755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:00.019 [DEBUG] [Thread-120755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:00.019 [DEBUG] [Thread-120755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:37:00.019 [DEBUG] [Thread-120755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:00.033 [INFO] [Thread-120755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:00.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-28T09:37:00.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:00.287 [DEBUG] [Thread-120757 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:01.002 [DEBUG] [Thread-120755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:01.002 [DEBUG] [Thread-120755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:01.051 [DEBUG] [Thread-120755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:01.051 [DEBUG] [Thread-120755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:01.059 [DEBUG] [Thread-120755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:01.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:01.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')
2025-09-28T09:37:01.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-28T09:37:01.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:01.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:01.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:01.090 [DEBUG] [Thread-120755] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:11.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:37:11.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:37:11.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-28T09:37:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 36, 59), 10.47, 49.55, 0.0, 12.26, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:37:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:36:59
2025-09-28T09:37:11.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:37:11.969 [DEBUG] [Thread-120758] [transport.py] [_log()] starting thread (client mode): 0x2e3fb970
2025-09-28T09:37:11.969 [DEBUG] [Thread-120758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:11.980 [DEBUG] [Thread-120758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:37:11.980 [INFO] [Thread-120758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] Compression: none
2025-09-28T09:37:11.981 [DEBUG] [Thread-120758] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:11.989 [DEBUG] [Thread-120758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:11.989 [DEBUG] [Thread-120758] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:11.989 [DEBUG] [Thread-120758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:37:11.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:37:11.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:11.990 [DEBUG] [Thread-120758] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:11.990 [DEBUG] [Thread-120758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:11.990 [DEBUG] [Thread-120758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:11.990 [DEBUG] [Thread-120758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:37:11.990 [DEBUG] [Thread-120758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:11.999 [INFO] [Thread-120758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:11.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:12.588 [DEBUG] [Thread-120758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:12.588 [DEBUG] [Thread-120758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:12.588 [DEBUG] [Thread-120758] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:37:12.629 [DEBUG] [Thread-120758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:12.629 [DEBUG] [Thread-120758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:12.633 [DEBUG] [Thread-120758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:12.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:12.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:37:12.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:37:12.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:37:12.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:12.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:37:12.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317448 -999.00  +15.00   8.15     53   +5.60 1 1 1 1 1   888    0 9.74 25.33 ----- 8.3 8.2 190.8 13.3 22.5 -26.5 20.8 -25.4 19.8 -25.1 20.9 -25.9
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:37:12.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317448
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:37:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:36:59', tmtdew=10.47, humidity=49.55, cloud=0.0, wind=12.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:07.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:37:12.652 [DEBUG] [Thread-120758] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:12.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:37:12.758 [DEBUG] [Thread-120761] [transport.py] [_log()] starting thread (client mode): 0x2e34af80
2025-09-28T09:37:12.758 [DEBUG] [Thread-120761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:12.801 [DEBUG] [Thread-120761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:37:12.801 [INFO] [Thread-120761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] Compression: none
2025-09-28T09:37:12.836 [DEBUG] [Thread-120761] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:12.921 [DEBUG] [Thread-120761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:12.921 [DEBUG] [Thread-120761] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:12.921 [DEBUG] [Thread-120761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:37:12.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:37:12.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:13.017 [DEBUG] [Thread-120761] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:13.017 [DEBUG] [Thread-120761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:13.017 [DEBUG] [Thread-120761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:13.017 [DEBUG] [Thread-120761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:37:13.017 [DEBUG] [Thread-120761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:13.057 [INFO] [Thread-120761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:13.058 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:37:13.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:13.491 [DEBUG] [Thread-120763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:14.099 [DEBUG] [Thread-120761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:14.099 [DEBUG] [Thread-120761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:14.175 [DEBUG] [Thread-120761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:14.175 [DEBUG] [Thread-120761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:14.212 [DEBUG] [Thread-120761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:14.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:14.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')
2025-09-28T09:37:14.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-28T09:37:14.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:14.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:14.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:14.356 [DEBUG] [Thread-120761] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:21.726 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:21.727 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:24.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:37:24.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:37:24.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-28T09:37:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 36, 59), 10.47, 49.55, 0.0, 12.26, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:37:24.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:36:59
2025-09-28T09:37:25.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:37:25.174 [DEBUG] [Thread-120764] [transport.py] [_log()] starting thread (client mode): 0x2e3480d0
2025-09-28T09:37:25.174 [DEBUG] [Thread-120764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:25.185 [DEBUG] [Thread-120764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:37:25.185 [INFO] [Thread-120764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:37:25.186 [DEBUG] [Thread-120764] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:25.186 [DEBUG] [Thread-120764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] Compression: none
2025-09-28T09:37:25.187 [DEBUG] [Thread-120764] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:25.198 [DEBUG] [Thread-120764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:25.198 [DEBUG] [Thread-120764] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:25.198 [DEBUG] [Thread-120764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:37:25.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:37:25.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:25.200 [DEBUG] [Thread-120764] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:25.200 [DEBUG] [Thread-120764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:25.200 [DEBUG] [Thread-120764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:25.200 [DEBUG] [Thread-120764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:37:25.200 [DEBUG] [Thread-120764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:25.213 [INFO] [Thread-120764] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:25.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:25.950 [DEBUG] [Thread-120764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:25.951 [DEBUG] [Thread-120764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:25.951 [DEBUG] [Thread-120764] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:37:25.991 [DEBUG] [Thread-120764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:25.991 [DEBUG] [Thread-120764] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:25.994 [DEBUG] [Thread-120764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:26.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:26.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:37:26.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:37:26.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:37:26.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:26.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:37:26.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:26.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:37:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317448 -999.00  +15.00   8.15     53   +5.60 1 1 1 1 1   888    0 9.74 25.33 ----- 8.3 8.2 190.8 13.3 22.5 -26.5 20.8 -25.4 19.8 -25.1 20.9 -25.9
2025-09-28T09:37:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:37:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:37:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317448
2025-09-28T09:37:26.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:37:26.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:37:26.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:37:26.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:37:26.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:37:26.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:36:59', tmtdew=10.47, humidity=49.55, cloud=0.0, wind=12.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:07.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:37:26.020 [DEBUG] [Thread-120764] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:26.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-28T09:37:26.116 [DEBUG] [Thread-120767] [transport.py] [_log()] starting thread (client mode): 0x2e3f9780
2025-09-28T09:37:26.117 [DEBUG] [Thread-120767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:26.132 [DEBUG] [Thread-120767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:37:26.132 [INFO] [Thread-120767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:37:26.139 [DEBUG] [Thread-120767] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:26.139 [DEBUG] [Thread-120767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:37:26.139 [DEBUG] [Thread-120767] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:26.139 [DEBUG] [Thread-120767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] Compression: none
2025-09-28T09:37:26.140 [DEBUG] [Thread-120767] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:26.198 [DEBUG] [Thread-120767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:26.199 [DEBUG] [Thread-120767] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:26.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:37:26.200 [DEBUG] [Thread-120767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:37:26.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:26.254 [DEBUG] [Thread-120767] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:26.255 [DEBUG] [Thread-120767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:26.255 [DEBUG] [Thread-120767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:26.255 [DEBUG] [Thread-120767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:37:26.255 [DEBUG] [Thread-120767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:26.274 [INFO] [Thread-120767] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:26.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-28T09:37:26.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:27.217 [DEBUG] [Thread-120767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:27.217 [DEBUG] [Thread-120767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:27.268 [DEBUG] [Thread-120767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:27.268 [DEBUG] [Thread-120767] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:27.281 [DEBUG] [Thread-120767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:27.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37: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')
2025-09-28T09:37:27.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') -> 00000000
2025-09-28T09:37:27.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:27.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:27.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:27.315 [DEBUG] [Thread-120767] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:28.538 [DEBUG] [Thread-120769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:37.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:37:37.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:37:37.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-28T09:37:37.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 37, 31), 10.55, 49.25, 0.0, 9.14, 14.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:37:37.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:37:31
2025-09-28T09:37:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:37:38.145 [DEBUG] [Thread-120770] [transport.py] [_log()] starting thread (client mode): 0x30ddd4e0
2025-09-28T09:37:38.145 [DEBUG] [Thread-120770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:38.165 [DEBUG] [Thread-120770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:37:38.166 [INFO] [Thread-120770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:37:38.169 [DEBUG] [Thread-120770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:38.169 [DEBUG] [Thread-120770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:37:38.169 [DEBUG] [Thread-120770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:38.169 [DEBUG] [Thread-120770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:38.169 [DEBUG] [Thread-120770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] Compression: none
2025-09-28T09:37:38.170 [DEBUG] [Thread-120770] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:38.187 [DEBUG] [Thread-120770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:38.188 [DEBUG] [Thread-120770] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:38.188 [DEBUG] [Thread-120770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:37:38.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:37:38.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:38.190 [DEBUG] [Thread-120770] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:38.190 [DEBUG] [Thread-120770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:38.190 [DEBUG] [Thread-120770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:38.190 [DEBUG] [Thread-120770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:37:38.190 [DEBUG] [Thread-120770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:38.214 [INFO] [Thread-120770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:38.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:38.948 [DEBUG] [Thread-120770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:38.948 [DEBUG] [Thread-120770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:38.948 [DEBUG] [Thread-120770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:37:38.989 [DEBUG] [Thread-120770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:38.989 [DEBUG] [Thread-120770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:38.992 [DEBUG] [Thread-120770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:39.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:39.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:37:39.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:37:39.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:37:39.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:39.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:37:39.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:39.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:37:39.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317448 -999.00  +15.00   8.15     53   +5.60 1 1 1 1 1   888    0 9.74 25.33 ----- 8.3 8.2 190.8 13.3 22.5 -26.5 20.8 -25.4 19.8 -25.1 20.9 -25.9
2025-09-28T09:37:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:37:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:37:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317448
2025-09-28T09:37:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:37:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:37:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:37:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:37:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:37:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:37:31', tmtdew=10.55, humidity=49.25, cloud=0.0, wind=9.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:07.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:37:39.014 [DEBUG] [Thread-120770] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:39.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-28T09:37:39.111 [DEBUG] [Thread-120773] [transport.py] [_log()] starting thread (client mode): 0x2e3c0340
2025-09-28T09:37:39.111 [DEBUG] [Thread-120773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:39.126 [DEBUG] [Thread-120773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:37:39.126 [INFO] [Thread-120773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:37:39.134 [DEBUG] [Thread-120773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:39.134 [DEBUG] [Thread-120773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:37:39.134 [DEBUG] [Thread-120773] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:39.135 [DEBUG] [Thread-120773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] Compression: none
2025-09-28T09:37:39.136 [DEBUG] [Thread-120773] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:39.190 [DEBUG] [Thread-120773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:39.191 [DEBUG] [Thread-120773] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:39.191 [DEBUG] [Thread-120773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:37:39.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:37:39.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:39.247 [DEBUG] [Thread-120773] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:39.247 [DEBUG] [Thread-120773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:39.248 [DEBUG] [Thread-120773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:39.248 [DEBUG] [Thread-120773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:37:39.248 [DEBUG] [Thread-120773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:39.272 [INFO] [Thread-120773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:39.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-28T09:37:39.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:40.290 [DEBUG] [Thread-120773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:40.290 [DEBUG] [Thread-120773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:40.351 [DEBUG] [Thread-120773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:40.351 [DEBUG] [Thread-120773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:40.389 [DEBUG] [Thread-120773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:40.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37: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')
2025-09-28T09:37: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-28T09:37:40.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:40.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:40.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:40.530 [DEBUG] [Thread-120773] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:43.566 [DEBUG] [Thread-120775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:37:50.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:37:50.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:37:50.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:37:51.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 37, 31), 10.55, 49.25, 0.0, 9.14, 14.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:37:51.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:37:31
2025-09-28T09:37:51.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:37:51.358 [DEBUG] [Thread-120776] [transport.py] [_log()] starting thread (client mode): 0x2e3f9660
2025-09-28T09:37:51.358 [DEBUG] [Thread-120776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:51.377 [DEBUG] [Thread-120776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:37:51.377 [INFO] [Thread-120776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:37:51.379 [DEBUG] [Thread-120776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] Compression: none
2025-09-28T09:37:51.380 [DEBUG] [Thread-120776] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:51.392 [DEBUG] [Thread-120776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:51.392 [DEBUG] [Thread-120776] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:51.392 [DEBUG] [Thread-120776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:37:51.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:37:51.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:51.393 [DEBUG] [Thread-120776] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:51.393 [DEBUG] [Thread-120776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:51.393 [DEBUG] [Thread-120776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:51.393 [DEBUG] [Thread-120776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:37:51.393 [DEBUG] [Thread-120776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:51.419 [INFO] [Thread-120776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:51.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:51.966 [DEBUG] [Thread-120776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:51.966 [DEBUG] [Thread-120776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:51.967 [DEBUG] [Thread-120776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:37:52.007 [DEBUG] [Thread-120776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:52.007 [DEBUG] [Thread-120776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:52.010 [DEBUG] [Thread-120776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:52.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:52.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:37:52.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:37:52.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:37:52.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:52.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:37:52.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:52.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317795 -999.00  +15.00  10.20     52   +5.40 1 1 1 1 1   888    0 9.81 26.66 ----- 7.3 10.2 203.0 13.4 22.5 -26.7 20.9 -26.9 19.9 -25.3 21.0 -26.2
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317795
2025-09-28T09:37:52.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:37:52.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:37:52.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:37:52.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:37:52.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:37:52.033 [DEBUG] [Thread-120776] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:52.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:37:31', tmtdew=10.55, humidity=49.25, cloud=0.0, wind=9.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:37:52.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:37:52.128 [DEBUG] [Thread-120779] [transport.py] [_log()] starting thread (client mode): 0x2b9b9cc0
2025-09-28T09:37:52.128 [DEBUG] [Thread-120779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:37:52.144 [DEBUG] [Thread-120779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:37:52.145 [INFO] [Thread-120779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:37:52.154 [DEBUG] [Thread-120779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] client lang: <none>
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] server lang: <none>
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] kex follows: False
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] Compression: none
2025-09-28T09:37:52.155 [DEBUG] [Thread-120779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:37:52.215 [DEBUG] [Thread-120779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:37:52.216 [DEBUG] [Thread-120779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:37:52.216 [DEBUG] [Thread-120779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:37:52.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:37:52.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:37:52.324 [DEBUG] [Thread-120779] [transport.py] [_log()] userauth is OK
2025-09-28T09:37:52.324 [DEBUG] [Thread-120779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:37:52.324 [DEBUG] [Thread-120779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:37:52.324 [DEBUG] [Thread-120779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:37:52.324 [DEBUG] [Thread-120779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:37:52.372 [INFO] [Thread-120779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:37:52.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:37:52.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:37:53.340 [DEBUG] [Thread-120779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:37:53.340 [DEBUG] [Thread-120779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:37:53.411 [DEBUG] [Thread-120779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:37:53.411 [DEBUG] [Thread-120779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:37:53.441 [DEBUG] [Thread-120779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:37:53.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:37:53.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-28T09:37:53.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-28T09:37:53.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:37:53.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:37:53.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:37:53.575 [DEBUG] [Thread-120779] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:37:58.610 [DEBUG] [Thread-120781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:00.323 [DEBUG] [Thread-120782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:03.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:38:03.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:38:03.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-28T09:38:04.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 37, 31), 10.55, 49.25, 0.0, 9.14, 14.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:38:04.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:37:31
2025-09-28T09:38:04.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:38:04.423 [DEBUG] [Thread-120783] [transport.py] [_log()] starting thread (client mode): 0x2b944880
2025-09-28T09:38:04.423 [DEBUG] [Thread-120783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:04.438 [DEBUG] [Thread-120783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:38:04.438 [INFO] [Thread-120783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] Compression: none
2025-09-28T09:38:04.440 [DEBUG] [Thread-120783] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:04.447 [DEBUG] [Thread-120783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:04.448 [DEBUG] [Thread-120783] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:04.448 [DEBUG] [Thread-120783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:38:04.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:38:04.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:04.449 [DEBUG] [Thread-120783] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:04.449 [DEBUG] [Thread-120783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:04.449 [DEBUG] [Thread-120783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:04.449 [DEBUG] [Thread-120783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:38:04.449 [DEBUG] [Thread-120783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:04.467 [INFO] [Thread-120783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:04.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:05.088 [DEBUG] [Thread-120783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:05.088 [DEBUG] [Thread-120783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:05.088 [DEBUG] [Thread-120783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:38:05.129 [DEBUG] [Thread-120783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:05.129 [DEBUG] [Thread-120783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:05.131 [DEBUG] [Thread-120783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:05.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:05.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:38:05.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:38:05.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:38:05.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:05.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:38:05.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317795 -999.00  +15.00  10.20     52   +5.40 1 1 1 1 1   888    0 9.81 26.66 ----- 7.3 10.2 203.0 13.4 22.5 -26.7 20.9 -26.9 19.9 -25.3 21.0 -26.2
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317795
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:38:05.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:37:31', tmtdew=10.55, humidity=49.25, cloud=0.0, wind=9.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:38:05.149 [DEBUG] [Thread-120783] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:05.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-28T09:38:05.234 [DEBUG] [Thread-120786] [transport.py] [_log()] starting thread (client mode): 0x2b945960
2025-09-28T09:38:05.235 [DEBUG] [Thread-120786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:05.249 [DEBUG] [Thread-120786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:38:05.249 [INFO] [Thread-120786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:05.256 [DEBUG] [Thread-120786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] Compression: none
2025-09-28T09:38:05.257 [DEBUG] [Thread-120786] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:05.312 [DEBUG] [Thread-120786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:05.313 [DEBUG] [Thread-120786] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:05.313 [DEBUG] [Thread-120786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:38:05.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:38:05.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:05.373 [DEBUG] [Thread-120786] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:05.373 [DEBUG] [Thread-120786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:05.373 [DEBUG] [Thread-120786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:05.374 [DEBUG] [Thread-120786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:38:05.374 [DEBUG] [Thread-120786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:05.392 [INFO] [Thread-120786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:05.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-28T09:38:05.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:06.396 [DEBUG] [Thread-120786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:06.397 [DEBUG] [Thread-120786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:06.444 [DEBUG] [Thread-120786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:06.444 [DEBUG] [Thread-120786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:06.453 [DEBUG] [Thread-120786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:06.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:06.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-28T09:38:06.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-28T09:38:06.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:06.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:06.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:06.488 [DEBUG] [Thread-120786] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:13.651 [DEBUG] [Thread-120788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:16.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:38:16.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:38: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-28T09:38:17.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 38, 3), 10.66, 48.87, 0.0, 9.19, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:38:17.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:38:03
2025-09-28T09:38:17.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:38:17.337 [DEBUG] [Thread-120789] [transport.py] [_log()] starting thread (client mode): 0x2e3f8940
2025-09-28T09:38:17.337 [DEBUG] [Thread-120789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:17.357 [DEBUG] [Thread-120789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:38:17.357 [INFO] [Thread-120789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] Compression: none
2025-09-28T09:38:17.360 [DEBUG] [Thread-120789] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:17.379 [DEBUG] [Thread-120789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:17.379 [DEBUG] [Thread-120789] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:17.388 [DEBUG] [Thread-120789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:38:17.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:38:17.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:17.390 [DEBUG] [Thread-120789] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:17.390 [DEBUG] [Thread-120789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:17.390 [DEBUG] [Thread-120789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:17.390 [DEBUG] [Thread-120789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:38:17.391 [DEBUG] [Thread-120789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:17.414 [INFO] [Thread-120789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:17.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:18.137 [DEBUG] [Thread-120789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:18.137 [DEBUG] [Thread-120789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:18.138 [DEBUG] [Thread-120789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:38:18.178 [DEBUG] [Thread-120789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:18.178 [DEBUG] [Thread-120789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:18.181 [DEBUG] [Thread-120789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:18.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:18.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:38:18.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:38:18.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:38:18.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:18.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:38:18.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:18.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:38:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.317795 -999.00  +15.00  10.20     52   +5.40 1 1 1 1 1   888    0 9.81 26.66 ----- 7.3 10.2 203.0 13.4 22.5 -26.7 20.9 -26.9 19.9 -25.3 21.0 -26.2
2025-09-28T09:38:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:38:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:38:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.317795
2025-09-28T09:38:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:38:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:38:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:38:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:38:18.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:38:18.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:38:03', tmtdew=10.66, humidity=48.87, cloud=0.0, wind=9.19, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:37:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:38:18.205 [DEBUG] [Thread-120789] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:18.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-28T09:38:18.301 [DEBUG] [Thread-120792] [transport.py] [_log()] starting thread (client mode): 0x2b9ba830
2025-09-28T09:38:18.301 [DEBUG] [Thread-120792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:18.315 [DEBUG] [Thread-120792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:38:18.316 [INFO] [Thread-120792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:38:18.323 [DEBUG] [Thread-120792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:18.323 [DEBUG] [Thread-120792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] Compression: none
2025-09-28T09:38:18.324 [DEBUG] [Thread-120792] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:18.380 [DEBUG] [Thread-120792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:18.381 [DEBUG] [Thread-120792] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:18.381 [DEBUG] [Thread-120792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:38:18.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:38:18.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:18.443 [DEBUG] [Thread-120792] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:18.443 [DEBUG] [Thread-120792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:18.443 [DEBUG] [Thread-120792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:18.443 [DEBUG] [Thread-120792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:38:18.444 [DEBUG] [Thread-120792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:18.462 [INFO] [Thread-120792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:18.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-28T09:38:18.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:19.416 [DEBUG] [Thread-120792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:19.416 [DEBUG] [Thread-120792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:19.464 [DEBUG] [Thread-120792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:19.464 [DEBUG] [Thread-120792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:19.474 [DEBUG] [Thread-120792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:19.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:19.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-28T09:38: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-28T09:38:19.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:19.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:19.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:19.508 [DEBUG] [Thread-120792] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:21.869 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:21.870 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:28.680 [DEBUG] [Thread-120794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:38:29.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:38: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-28T09:38:30.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 38, 3), 10.66, 48.87, 0.0, 9.19, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:38:30.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:38:03
2025-09-28T09:38:30.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:38:30.340 [DEBUG] [Thread-120795] [transport.py] [_log()] starting thread (client mode): 0x2b947fd0
2025-09-28T09:38:30.340 [DEBUG] [Thread-120795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:30.359 [DEBUG] [Thread-120795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:38:30.360 [INFO] [Thread-120795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:30.363 [DEBUG] [Thread-120795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:30.364 [DEBUG] [Thread-120795] [transport.py] [_log()] Compression: none
2025-09-28T09:38:30.365 [DEBUG] [Thread-120795] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:30.383 [DEBUG] [Thread-120795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:30.384 [DEBUG] [Thread-120795] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:30.384 [DEBUG] [Thread-120795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:38:30.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:38:30.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:30.387 [DEBUG] [Thread-120795] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:30.387 [DEBUG] [Thread-120795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:30.388 [DEBUG] [Thread-120795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:30.388 [DEBUG] [Thread-120795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:38:30.388 [DEBUG] [Thread-120795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:30.403 [INFO] [Thread-120795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:30.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:31.020 [DEBUG] [Thread-120795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:31.021 [DEBUG] [Thread-120795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:31.021 [DEBUG] [Thread-120795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:38:31.061 [DEBUG] [Thread-120795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:31.062 [DEBUG] [Thread-120795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:31.064 [DEBUG] [Thread-120795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:31.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:31.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:38:31.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:38:31.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:38:31.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:31.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:38:31.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:31.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318142 -999.00  +15.00   7.83     52   +5.30 1 1 1 1 1   888    0 10.04 28.66 ----- 7.0 7.8 188.4 8.9 22.6 -26.2 21.1 -24.5 19.9 -25.0 21.1 -25.8
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318142
2025-09-28T09:38:31.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:38:31.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:38:31.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:38:31.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:38:31.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:38:31.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:38:03', tmtdew=10.66, humidity=48.87, cloud=0.0, wind=9.19, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:38:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:38:31.088 [DEBUG] [Thread-120795] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:31.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-28T09:38:31.184 [DEBUG] [Thread-120798] [transport.py] [_log()] starting thread (client mode): 0x2e38e2f0
2025-09-28T09:38:31.184 [DEBUG] [Thread-120798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:31.201 [DEBUG] [Thread-120798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:38:31.201 [INFO] [Thread-120798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:31.214 [DEBUG] [Thread-120798] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] Compression: none
2025-09-28T09:38:31.215 [DEBUG] [Thread-120798] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:31.286 [DEBUG] [Thread-120798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:31.286 [DEBUG] [Thread-120798] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:31.287 [DEBUG] [Thread-120798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:38:31.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:38:31.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:31.373 [DEBUG] [Thread-120798] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:31.373 [DEBUG] [Thread-120798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:31.373 [DEBUG] [Thread-120798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:31.373 [DEBUG] [Thread-120798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:38:31.373 [DEBUG] [Thread-120798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:31.400 [INFO] [Thread-120798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38: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-28T09:38:31.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:32.364 [DEBUG] [Thread-120798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:32.364 [DEBUG] [Thread-120798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:32.413 [DEBUG] [Thread-120798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:32.413 [DEBUG] [Thread-120798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:32.422 [DEBUG] [Thread-120798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:32.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:32.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-28T09:38:32.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-28T09:38:32.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:32.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:32.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:32.460 [DEBUG] [Thread-120798] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:42.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:38:42.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:38:42.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-28T09:38:43.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 38, 35), 10.53, 49.3, 0.0, 10.15, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:38:43.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:38:35
2025-09-28T09:38:43.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:38:43.290 [DEBUG] [Thread-120800] [transport.py] [_log()] starting thread (client mode): 0x2e38c4f0
2025-09-28T09:38:43.290 [DEBUG] [Thread-120800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:43.310 [DEBUG] [Thread-120800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:38:43.310 [INFO] [Thread-120800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:43.313 [DEBUG] [Thread-120800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] Compression: none
2025-09-28T09:38:43.314 [DEBUG] [Thread-120800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:43.331 [DEBUG] [Thread-120800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:43.332 [DEBUG] [Thread-120800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:43.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:38:43.333 [DEBUG] [Thread-120800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:38:43.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:43.334 [DEBUG] [Thread-120800] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:43.335 [DEBUG] [Thread-120800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:43.335 [DEBUG] [Thread-120800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:43.335 [DEBUG] [Thread-120800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:38:43.335 [DEBUG] [Thread-120800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:43.352 [INFO] [Thread-120800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:43.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:43.733 [DEBUG] [Thread-120802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:38:44.091 [DEBUG] [Thread-120800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:44.091 [DEBUG] [Thread-120800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:44.092 [DEBUG] [Thread-120800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:38:44.132 [DEBUG] [Thread-120800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:44.132 [DEBUG] [Thread-120800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:44.135 [DEBUG] [Thread-120800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:44.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:44.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:38:44.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:38:44.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:38:44.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:44.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:38:44.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:44.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318142 -999.00  +15.00   7.83     52   +5.30 1 1 1 1 1   888    0 10.04 28.66 ----- 7.0 7.8 188.4 8.9 22.6 -26.2 21.1 -24.5 19.9 -25.0 21.1 -25.8
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318142
2025-09-28T09:38:44.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:38:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:38:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:38:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:38:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:38:44.160 [DEBUG] [Thread-120800] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:44.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:38:35', tmtdew=10.53, humidity=49.3, cloud=0.0, wind=10.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:38:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:38:44.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:38:44.258 [DEBUG] [Thread-120804] [transport.py] [_log()] starting thread (client mode): 0x2b9cc940
2025-09-28T09:38:44.258 [DEBUG] [Thread-120804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:44.273 [DEBUG] [Thread-120804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:38:44.273 [INFO] [Thread-120804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:38:44.282 [DEBUG] [Thread-120804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:44.282 [DEBUG] [Thread-120804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:38:44.282 [DEBUG] [Thread-120804] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] Compression: none
2025-09-28T09:38:44.283 [DEBUG] [Thread-120804] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:44.341 [DEBUG] [Thread-120804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:44.342 [DEBUG] [Thread-120804] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:44.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:38:44.342 [DEBUG] [Thread-120804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:38:44.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:44.398 [DEBUG] [Thread-120804] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:44.398 [DEBUG] [Thread-120804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:44.398 [DEBUG] [Thread-120804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:44.399 [DEBUG] [Thread-120804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:38:44.399 [DEBUG] [Thread-120804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:44.417 [INFO] [Thread-120804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:44.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-28T09:38:44.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:45.366 [DEBUG] [Thread-120804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:45.367 [DEBUG] [Thread-120804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:45.414 [DEBUG] [Thread-120804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:45.414 [DEBUG] [Thread-120804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:45.424 [DEBUG] [Thread-120804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:45.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38: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')
2025-09-28T09:38:45.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T09:38:45.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:45.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:45.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:45.462 [DEBUG] [Thread-120804] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:55.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:38:55.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:38:55.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-28T09:38:56.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 38, 35), 10.53, 49.3, 0.0, 10.15, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:38:56.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:38:35
2025-09-28T09:38:56.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:38:56.277 [DEBUG] [Thread-120806] [transport.py] [_log()] starting thread (client mode): 0x2b9cd300
2025-09-28T09:38:56.278 [DEBUG] [Thread-120806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:56.298 [DEBUG] [Thread-120806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:38:56.298 [INFO] [Thread-120806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:56.301 [DEBUG] [Thread-120806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] Compression: none
2025-09-28T09:38:56.302 [DEBUG] [Thread-120806] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:56.319 [DEBUG] [Thread-120806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:56.320 [DEBUG] [Thread-120806] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:56.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:38:56.321 [DEBUG] [Thread-120806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:38:56.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:56.324 [DEBUG] [Thread-120806] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:56.324 [DEBUG] [Thread-120806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:56.324 [DEBUG] [Thread-120806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:56.324 [DEBUG] [Thread-120806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:38:56.325 [DEBUG] [Thread-120806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:56.360 [INFO] [Thread-120806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:56.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:56.967 [DEBUG] [Thread-120806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:56.967 [DEBUG] [Thread-120806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:56.967 [DEBUG] [Thread-120806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:38:57.008 [DEBUG] [Thread-120806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:57.008 [DEBUG] [Thread-120806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:57.011 [DEBUG] [Thread-120806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:57.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:57.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:38:57.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:38:57.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:38:57.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:57.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:38:57.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:57.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:38:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318489 -999.00  +15.00   5.54     52   +5.40 1 1 1 1 1   888    0 9.89 30.05 ----- 4.4 5.5 186.8 7.1 22.8 -26.2 21.1 -27.6 20.0 -25.1 21.2 -26.1
2025-09-28T09:38:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:38:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:38:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318489
2025-09-28T09:38:57.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:38:57.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:38:57.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:38:57.035 [DEBUG] [Thread-120806] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:38:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:38:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:38:35', tmtdew=10.53, humidity=49.3, cloud=0.0, wind=10.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:38:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:38:57.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-28T09:38:57.156 [DEBUG] [Thread-120809] [transport.py] [_log()] starting thread (client mode): 0x2e3623e0
2025-09-28T09:38:57.156 [DEBUG] [Thread-120809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:38:57.187 [DEBUG] [Thread-120809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:38:57.187 [INFO] [Thread-120809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:38:57.218 [DEBUG] [Thread-120809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] client lang: <none>
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] server lang: <none>
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] kex follows: False
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:38:57.219 [DEBUG] [Thread-120809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:38:57.220 [DEBUG] [Thread-120809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:38:57.220 [DEBUG] [Thread-120809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:38:57.220 [DEBUG] [Thread-120809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:38:57.220 [DEBUG] [Thread-120809] [transport.py] [_log()] Compression: none
2025-09-28T09:38:57.220 [DEBUG] [Thread-120809] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:38:57.299 [DEBUG] [Thread-120809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:38:57.300 [DEBUG] [Thread-120809] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:38:57.300 [DEBUG] [Thread-120809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:38:57.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:38:57.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:38:57.405 [DEBUG] [Thread-120809] [transport.py] [_log()] userauth is OK
2025-09-28T09:38:57.406 [DEBUG] [Thread-120809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:38:57.406 [DEBUG] [Thread-120809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:38:57.406 [DEBUG] [Thread-120809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:38:57.406 [DEBUG] [Thread-120809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:38:57.449 [INFO] [Thread-120809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:38:57.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-28T09:38:57.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:38:58.461 [DEBUG] [Thread-120809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:38:58.461 [DEBUG] [Thread-120809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:38:58.533 [DEBUG] [Thread-120809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:38:58.533 [DEBUG] [Thread-120809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:38:58.565 [DEBUG] [Thread-120809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:38:58.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:38:58.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')
2025-09-28T09:38:58.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-28T09:38:58.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:38:58.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:38:58.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:38:58.693 [DEBUG] [Thread-120809] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:38:58.784 [DEBUG] [Thread-120811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:00.373 [DEBUG] [Thread-120812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:08.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:39:08.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:39:08.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-28T09:39:09.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 38, 35), 10.53, 49.3, 0.0, 10.15, 14.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:39:09.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:38:35
2025-09-28T09:39:09.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:39:09.525 [DEBUG] [Thread-120813] [transport.py] [_log()] starting thread (client mode): 0x2e38d090
2025-09-28T09:39:09.525 [DEBUG] [Thread-120813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:09.546 [DEBUG] [Thread-120813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:39:09.546 [INFO] [Thread-120813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:09.550 [DEBUG] [Thread-120813] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] Compression: none
2025-09-28T09:39:09.551 [DEBUG] [Thread-120813] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:09.569 [DEBUG] [Thread-120813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:09.570 [DEBUG] [Thread-120813] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:09.570 [DEBUG] [Thread-120813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:39:09.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:39:09.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:09.572 [DEBUG] [Thread-120813] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:09.573 [DEBUG] [Thread-120813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:09.573 [DEBUG] [Thread-120813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:09.573 [DEBUG] [Thread-120813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:39:09.573 [DEBUG] [Thread-120813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:09.595 [INFO] [Thread-120813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:09.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:10.305 [DEBUG] [Thread-120813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:10.306 [DEBUG] [Thread-120813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:10.306 [DEBUG] [Thread-120813] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:39:10.346 [DEBUG] [Thread-120813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:10.346 [DEBUG] [Thread-120813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:10.349 [DEBUG] [Thread-120813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:10.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:10.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:39:10.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:39:10.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:39:10.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:10.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:39:10.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:10.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:39:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318489 -999.00  +15.00   5.54     52   +5.40 1 1 1 1 1   888    0 9.89 30.05 ----- 4.4 5.5 186.8 7.1 22.8 -26.2 21.1 -27.6 20.0 -25.1 21.2 -26.1
2025-09-28T09:39:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:39:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:39:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318489
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:39:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:38:35', tmtdew=10.53, humidity=49.3, cloud=0.0, wind=10.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:38:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:39:10.373 [DEBUG] [Thread-120813] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:10.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:39:10.468 [DEBUG] [Thread-120816] [transport.py] [_log()] starting thread (client mode): 0x2b96da20
2025-09-28T09:39:10.469 [DEBUG] [Thread-120816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:10.484 [DEBUG] [Thread-120816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:39:10.484 [INFO] [Thread-120816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:39:10.491 [DEBUG] [Thread-120816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:10.492 [DEBUG] [Thread-120816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:10.493 [DEBUG] [Thread-120816] [transport.py] [_log()] Compression: none
2025-09-28T09:39:10.493 [DEBUG] [Thread-120816] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:10.548 [DEBUG] [Thread-120816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:10.549 [DEBUG] [Thread-120816] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:10.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:39:10.550 [DEBUG] [Thread-120816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:39:10.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:10.605 [DEBUG] [Thread-120816] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:10.605 [DEBUG] [Thread-120816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:10.605 [DEBUG] [Thread-120816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:10.605 [DEBUG] [Thread-120816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:39:10.605 [DEBUG] [Thread-120816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:10.625 [INFO] [Thread-120816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:10.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:39:10.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:11.589 [DEBUG] [Thread-120816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:11.589 [DEBUG] [Thread-120816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:11.638 [DEBUG] [Thread-120816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:11.638 [DEBUG] [Thread-120816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:11.647 [DEBUG] [Thread-120816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:11.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:11.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-28T09:39:11.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-28T09:39:11.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:11.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:11.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:11.682 [DEBUG] [Thread-120816] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:13.829 [DEBUG] [Thread-120818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:21.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:39:21.686 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:39:21.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-28T09:39:22.011 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:22.012 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:22.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 39, 7), 10.73, 48.64, 0.0, 8.35, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:39:22.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:39:07
2025-09-28T09:39:22.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:39:22.507 [DEBUG] [Thread-120819] [transport.py] [_log()] starting thread (client mode): 0x2e3f9840
2025-09-28T09:39:22.507 [DEBUG] [Thread-120819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:22.523 [DEBUG] [Thread-120819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:39:22.523 [INFO] [Thread-120819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:22.526 [DEBUG] [Thread-120819] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] Compression: none
2025-09-28T09:39:22.527 [DEBUG] [Thread-120819] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:22.544 [DEBUG] [Thread-120819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:22.544 [DEBUG] [Thread-120819] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:22.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:39:22.545 [DEBUG] [Thread-120819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:39:22.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:22.547 [DEBUG] [Thread-120819] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:22.547 [DEBUG] [Thread-120819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:22.548 [DEBUG] [Thread-120819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:22.548 [DEBUG] [Thread-120819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:39:22.548 [DEBUG] [Thread-120819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:22.571 [INFO] [Thread-120819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:22.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:23.271 [DEBUG] [Thread-120819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:23.272 [DEBUG] [Thread-120819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:23.272 [DEBUG] [Thread-120819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:39:23.312 [DEBUG] [Thread-120819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:23.312 [DEBUG] [Thread-120819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:23.315 [DEBUG] [Thread-120819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:23.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:23.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:39:23.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:39:23.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:39:23.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:23.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:39:23.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:23.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:39:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318489 -999.00  +15.00   5.54     52   +5.40 1 1 1 1 1   888    0 9.89 30.05 ----- 4.4 5.5 186.8 7.1 22.8 -26.2 21.1 -27.6 20.0 -25.1 21.2 -26.1
2025-09-28T09:39:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:39:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:39:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318489
2025-09-28T09:39:23.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:39:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:39:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:39:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:39:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:39:23.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:39:07', tmtdew=10.73, humidity=48.64, cloud=0.0, wind=8.35, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:38:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:39:23.340 [DEBUG] [Thread-120819] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:23.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-28T09:39:23.462 [DEBUG] [Thread-120822] [transport.py] [_log()] starting thread (client mode): 0x2e38d900
2025-09-28T09:39:23.463 [DEBUG] [Thread-120822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:23.503 [DEBUG] [Thread-120822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:39:23.503 [INFO] [Thread-120822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:23.526 [DEBUG] [Thread-120822] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] Compression: none
2025-09-28T09:39:23.527 [DEBUG] [Thread-120822] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:23.622 [DEBUG] [Thread-120822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:23.623 [DEBUG] [Thread-120822] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:23.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:39:23.624 [DEBUG] [Thread-120822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:39:23.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:23.733 [DEBUG] [Thread-120822] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:23.733 [DEBUG] [Thread-120822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:23.733 [DEBUG] [Thread-120822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:23.734 [DEBUG] [Thread-120822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:39:23.734 [DEBUG] [Thread-120822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:23.774 [INFO] [Thread-120822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:23.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-28T09:39:23.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:24.739 [DEBUG] [Thread-120822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:24.740 [DEBUG] [Thread-120822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:24.814 [DEBUG] [Thread-120822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:24.814 [DEBUG] [Thread-120822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:24.851 [DEBUG] [Thread-120822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:24.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:24.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-28T09:39:24.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-28T09:39:24.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:24.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:24.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:24.991 [DEBUG] [Thread-120822] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:28.858 [DEBUG] [Thread-120824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:34.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:39:34.966 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:39:34.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-28T09:39:35.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 39, 7), 10.73, 48.64, 0.0, 8.35, 14.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:39:35.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:39:07
2025-09-28T09:39:35.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:39:35.787 [DEBUG] [Thread-120825] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T09:39:35.788 [DEBUG] [Thread-120825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:35.806 [DEBUG] [Thread-120825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:39:35.806 [INFO] [Thread-120825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:35.808 [DEBUG] [Thread-120825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:35.809 [DEBUG] [Thread-120825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:35.809 [DEBUG] [Thread-120825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:35.809 [DEBUG] [Thread-120825] [transport.py] [_log()] Compression: none
2025-09-28T09:39:35.809 [DEBUG] [Thread-120825] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:35.818 [DEBUG] [Thread-120825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:35.818 [DEBUG] [Thread-120825] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:35.818 [DEBUG] [Thread-120825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:39:35.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:39:35.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:35.819 [DEBUG] [Thread-120825] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:35.820 [DEBUG] [Thread-120825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:35.820 [DEBUG] [Thread-120825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:35.820 [DEBUG] [Thread-120825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:39:35.820 [DEBUG] [Thread-120825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:35.841 [INFO] [Thread-120825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:35.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:36.424 [DEBUG] [Thread-120825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:36.424 [DEBUG] [Thread-120825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:36.425 [DEBUG] [Thread-120825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:39:36.465 [DEBUG] [Thread-120825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:36.465 [DEBUG] [Thread-120825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:36.468 [DEBUG] [Thread-120825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:36.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:36.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:39:36.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:39:36.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:39:36.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:36.488 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:39:36.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:36.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318837 -999.00  +15.10   4.03     52   +5.40 1 1 1 1 1   888    0 10.09 29.39 ----- 3.7 4.0 178.0 5.5 23.0 -25.4 21.2 -24.7 20.2 -24.8 21.4 -25.7
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318837
2025-09-28T09:39:36.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:39:36.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:39:36.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:39:36.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:39:36.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:39:36.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:39:07', tmtdew=10.73, humidity=48.64, cloud=0.0, wind=8.35, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:07.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:39:36.490 [DEBUG] [Thread-120825] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:36.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-28T09:39:36.611 [DEBUG] [Thread-120828] [transport.py] [_log()] starting thread (client mode): 0x2e38c4f0
2025-09-28T09:39:36.612 [DEBUG] [Thread-120828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:36.654 [DEBUG] [Thread-120828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:39:36.654 [INFO] [Thread-120828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] Compression: none
2025-09-28T09:39:36.690 [DEBUG] [Thread-120828] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:36.744 [DEBUG] [Thread-120828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:36.745 [DEBUG] [Thread-120828] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:36.745 [DEBUG] [Thread-120828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:39:36.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:39:36.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:36.845 [DEBUG] [Thread-120828] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:36.845 [DEBUG] [Thread-120828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:36.845 [DEBUG] [Thread-120828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:36.845 [DEBUG] [Thread-120828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:39:36.845 [DEBUG] [Thread-120828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:36.886 [INFO] [Thread-120828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:36.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:39:36.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:37.824 [DEBUG] [Thread-120828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:37.824 [DEBUG] [Thread-120828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:37.876 [DEBUG] [Thread-120828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:37.876 [DEBUG] [Thread-120828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:37.885 [DEBUG] [Thread-120828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:37.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:37.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')
2025-09-28T09:39:37.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-28T09:39:37.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:37.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:37.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:37.918 [DEBUG] [Thread-120828] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:43.901 [DEBUG] [Thread-120830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:39:47.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:39:47.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:39:47.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-28T09:39:48.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 39, 39), 10.78, 48.12, 0.0, 7.78, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:39:48.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:39:39
2025-09-28T09:39:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:39:48.746 [DEBUG] [Thread-120831] [transport.py] [_log()] starting thread (client mode): 0x2b944f40
2025-09-28T09:39:48.746 [DEBUG] [Thread-120831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:48.766 [DEBUG] [Thread-120831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:39:48.766 [INFO] [Thread-120831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:48.769 [DEBUG] [Thread-120831] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] Compression: none
2025-09-28T09:39:48.770 [DEBUG] [Thread-120831] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:48.788 [DEBUG] [Thread-120831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:48.788 [DEBUG] [Thread-120831] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:48.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:39:48.790 [DEBUG] [Thread-120831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:39:48.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:48.792 [DEBUG] [Thread-120831] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:48.792 [DEBUG] [Thread-120831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:48.792 [DEBUG] [Thread-120831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:48.792 [DEBUG] [Thread-120831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:39:48.793 [DEBUG] [Thread-120831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:48.815 [INFO] [Thread-120831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:48.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:49.551 [DEBUG] [Thread-120831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:49.551 [DEBUG] [Thread-120831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:49.551 [DEBUG] [Thread-120831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:39:49.592 [DEBUG] [Thread-120831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:49.593 [DEBUG] [Thread-120831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:49.596 [DEBUG] [Thread-120831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:49.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:49.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:39:49.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:39:49.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:39:49.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:49.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:39:49.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:49.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.318837 -999.00  +15.10   4.03     52   +5.40 1 1 1 1 1   888    0 10.09 29.39 ----- 3.7 4.0 178.0 5.5 23.0 -25.4 21.2 -24.7 20.2 -24.8 21.4 -25.7
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.318837
2025-09-28T09:39:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:39:49.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:39:49.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:39:49.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:39:49.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:39:49.623 [DEBUG] [Thread-120831] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:49.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:39:39', tmtdew=10.78, humidity=48.12, cloud=0.0, wind=7.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:07.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:39:49.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-28T09:39:49.728 [DEBUG] [Thread-120834] [transport.py] [_log()] starting thread (client mode): 0x2b96dd80
2025-09-28T09:39:49.728 [DEBUG] [Thread-120834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:39:49.743 [DEBUG] [Thread-120834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:39:49.743 [INFO] [Thread-120834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:39:49.751 [DEBUG] [Thread-120834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:39:49.751 [DEBUG] [Thread-120834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:39:49.751 [DEBUG] [Thread-120834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:39:49.751 [DEBUG] [Thread-120834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:49.751 [DEBUG] [Thread-120834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] client lang: <none>
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] server lang: <none>
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] kex follows: False
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] Compression: none
2025-09-28T09:39:49.752 [DEBUG] [Thread-120834] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:39:49.812 [DEBUG] [Thread-120834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:39:49.812 [DEBUG] [Thread-120834] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:39:49.813 [DEBUG] [Thread-120834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:39:49.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:39:49.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:39:49.868 [DEBUG] [Thread-120834] [transport.py] [_log()] userauth is OK
2025-09-28T09:39:49.868 [DEBUG] [Thread-120834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:39:49.868 [DEBUG] [Thread-120834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:39:49.868 [DEBUG] [Thread-120834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:39:49.868 [DEBUG] [Thread-120834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:39:49.887 [INFO] [Thread-120834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:39:49.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:39:49.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:39:50.832 [DEBUG] [Thread-120834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:39:50.832 [DEBUG] [Thread-120834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:39:50.880 [DEBUG] [Thread-120834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:39:50.880 [DEBUG] [Thread-120834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:39:50.889 [DEBUG] [Thread-120834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:39:50.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:39:50.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-28T09:39: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') -> 00000000
2025-09-28T09:39:50.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:39:50.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:39:50.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:39:50.924 [DEBUG] [Thread-120834] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:39:58.947 [DEBUG] [Thread-120836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:00.429 [DEBUG] [Thread-120837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:00.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:40:00.927 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:40:00.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-28T09:40:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 39, 39), 10.78, 48.12, 0.0, 7.78, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:40:01.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:39:39
2025-09-28T09:40:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:40:01.759 [DEBUG] [Thread-120838] [transport.py] [_log()] starting thread (client mode): 0x2e38c880
2025-09-28T09:40:01.759 [DEBUG] [Thread-120838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:01.780 [DEBUG] [Thread-120838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:40:01.780 [INFO] [Thread-120838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:40:01.781 [DEBUG] [Thread-120838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:01.781 [DEBUG] [Thread-120838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:40:01.781 [DEBUG] [Thread-120838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:01.781 [DEBUG] [Thread-120838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] Compression: none
2025-09-28T09:40:01.782 [DEBUG] [Thread-120838] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:01.789 [DEBUG] [Thread-120838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:01.789 [DEBUG] [Thread-120838] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:01.790 [DEBUG] [Thread-120838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:40:01.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:40:01.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:01.790 [DEBUG] [Thread-120838] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:01.790 [DEBUG] [Thread-120838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:01.791 [DEBUG] [Thread-120838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:01.791 [DEBUG] [Thread-120838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:40:01.791 [DEBUG] [Thread-120838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:01.803 [INFO] [Thread-120838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:01.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:02.514 [DEBUG] [Thread-120838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:02.515 [DEBUG] [Thread-120838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:02.516 [DEBUG] [Thread-120838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:40:02.556 [DEBUG] [Thread-120838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:02.556 [DEBUG] [Thread-120838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:02.557 [DEBUG] [Thread-120838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:02.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:02.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:40:02.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:40:02.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:40:02.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:02.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:40:02.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319184 -999.00  +15.30   4.61     52   +5.50 1 1 1 1 1   888    0 10.07 30.45 ----- 2.1 4.6 181.5 5.9 23.1 -26.6 21.5 -24.8 20.2 -25.3 21.5 -25.8
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:40:02.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319184
2025-09-28T09:40:02.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:40:02.571 [DEBUG] [Thread-120838] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:02.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:40:02.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:40:02.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:40:02.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:40:02.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:39:39', tmtdew=10.78, humidity=48.12, cloud=0.0, wind=7.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:40:02.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-28T09:40:02.706 [DEBUG] [Thread-120841] [transport.py] [_log()] starting thread (client mode): 0x2b945990
2025-09-28T09:40:02.706 [DEBUG] [Thread-120841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:02.751 [DEBUG] [Thread-120841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:40:02.751 [INFO] [Thread-120841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:40:02.787 [DEBUG] [Thread-120841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:02.788 [DEBUG] [Thread-120841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:02.789 [DEBUG] [Thread-120841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:02.789 [DEBUG] [Thread-120841] [transport.py] [_log()] Compression: none
2025-09-28T09:40:02.789 [DEBUG] [Thread-120841] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:02.874 [DEBUG] [Thread-120841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:02.874 [DEBUG] [Thread-120841] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:02.875 [DEBUG] [Thread-120841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:40:02.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:40:02.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:02.990 [DEBUG] [Thread-120841] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:02.990 [DEBUG] [Thread-120841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:02.990 [DEBUG] [Thread-120841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:02.990 [DEBUG] [Thread-120841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:40:02.990 [DEBUG] [Thread-120841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:03.039 [INFO] [Thread-120841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:03.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-28T09:40:03.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:04.051 [DEBUG] [Thread-120841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:04.052 [DEBUG] [Thread-120841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:04.129 [DEBUG] [Thread-120841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:04.129 [DEBUG] [Thread-120841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:04.168 [DEBUG] [Thread-120841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:04.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:04.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-28T09:40:04.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-28T09:40:04.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:04.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:04.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:04.323 [DEBUG] [Thread-120841] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:13.991 [DEBUG] [Thread-120843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:14.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:40:14.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:40:14.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-28T09:40:14.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 40, 11), 10.7, 48.38, 0.0, 7.82, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:40:14.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:40:11
2025-09-28T09:40:15.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:40:15.154 [DEBUG] [Thread-120844] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd00
2025-09-28T09:40:15.154 [DEBUG] [Thread-120844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:15.172 [DEBUG] [Thread-120844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:40:15.172 [INFO] [Thread-120844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] Compression: none
2025-09-28T09:40:15.173 [DEBUG] [Thread-120844] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:15.183 [DEBUG] [Thread-120844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:15.183 [DEBUG] [Thread-120844] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:15.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:40:15.183 [DEBUG] [Thread-120844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:40:15.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:15.183 [DEBUG] [Thread-120844] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:15.184 [DEBUG] [Thread-120844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:15.184 [DEBUG] [Thread-120844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:15.184 [DEBUG] [Thread-120844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:40:15.184 [DEBUG] [Thread-120844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:15.193 [INFO] [Thread-120844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:15.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:15.755 [DEBUG] [Thread-120844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:15.755 [DEBUG] [Thread-120844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:15.755 [DEBUG] [Thread-120844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:40:15.796 [DEBUG] [Thread-120844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:15.796 [DEBUG] [Thread-120844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:15.798 [DEBUG] [Thread-120844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:15.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:15.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:40:15.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:40:15.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:40:15.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:15.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:40:15.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319184 -999.00  +15.30   4.61     52   +5.50 1 1 1 1 1   888    0 10.07 30.45 ----- 2.1 4.6 181.5 5.9 23.1 -26.6 21.5 -24.8 20.2 -25.3 21.5 -25.8
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319184
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:40:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:40:11', tmtdew=10.7, humidity=48.38, cloud=0.0, wind=7.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:40:15.818 [DEBUG] [Thread-120844] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:15.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-28T09:40:15.903 [DEBUG] [Thread-120847] [transport.py] [_log()] starting thread (client mode): 0x2b96c160
2025-09-28T09:40:15.903 [DEBUG] [Thread-120847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:15.917 [DEBUG] [Thread-120847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:40:15.917 [INFO] [Thread-120847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:15.924 [DEBUG] [Thread-120847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] Compression: none
2025-09-28T09:40:15.925 [DEBUG] [Thread-120847] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:15.982 [DEBUG] [Thread-120847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:15.982 [DEBUG] [Thread-120847] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:15.982 [DEBUG] [Thread-120847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:40:15.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:40:15.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:16.039 [DEBUG] [Thread-120847] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:16.039 [DEBUG] [Thread-120847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:16.039 [DEBUG] [Thread-120847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:16.039 [DEBUG] [Thread-120847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:40:16.039 [DEBUG] [Thread-120847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:16.053 [INFO] [Thread-120847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:16.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-28T09:40:16.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:17.029 [DEBUG] [Thread-120847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:17.029 [DEBUG] [Thread-120847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:17.078 [DEBUG] [Thread-120847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:17.078 [DEBUG] [Thread-120847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:17.087 [DEBUG] [Thread-120847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:17.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:17.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-28T09:40: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') -> 00000000
2025-09-28T09:40:17.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:17.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:17.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:17.119 [DEBUG] [Thread-120847] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:22.153 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:22.154 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:27.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:40:27.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:40:27.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-28T09:40:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 40, 11), 10.7, 48.38, 0.0, 7.82, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:40:27.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:40:11
2025-09-28T09:40:27.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:40:27.942 [DEBUG] [Thread-120849] [transport.py] [_log()] starting thread (client mode): 0x2e360f70
2025-09-28T09:40:27.942 [DEBUG] [Thread-120849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:27.965 [DEBUG] [Thread-120849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:40:27.965 [INFO] [Thread-120849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:40:27.967 [DEBUG] [Thread-120849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:27.967 [DEBUG] [Thread-120849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] Compression: none
2025-09-28T09:40:27.968 [DEBUG] [Thread-120849] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:27.987 [DEBUG] [Thread-120849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:27.987 [DEBUG] [Thread-120849] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:27.988 [DEBUG] [Thread-120849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:40:27.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:40:27.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:27.989 [DEBUG] [Thread-120849] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:27.990 [DEBUG] [Thread-120849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:27.990 [DEBUG] [Thread-120849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:27.990 [DEBUG] [Thread-120849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:40:27.990 [DEBUG] [Thread-120849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:28.025 [INFO] [Thread-120849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:28.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:29.024 [DEBUG] [Thread-120851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:30.292 [DEBUG] [Thread-120849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:30.292 [DEBUG] [Thread-120849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:30.292 [DEBUG] [Thread-120849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:40:30.332 [DEBUG] [Thread-120849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:30.332 [DEBUG] [Thread-120849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:30.335 [DEBUG] [Thread-120849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:30.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:30.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:40:30.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:40:30.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:40:30.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:30.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:40:30.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319184 -999.00  +15.30   4.61     52   +5.50 1 1 1 1 1   888    0 10.07 30.45 ----- 2.1 4.6 181.5 5.9 23.1 -26.6 21.5 -24.8 20.2 -25.3 21.5 -25.8
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:40:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319184
2025-09-28T09:40:30.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:40:30.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:40:30.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:40:30.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:40:30.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:40:30.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:40:11', tmtdew=10.7, humidity=48.38, cloud=0.0, wind=7.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:40:30.360 [DEBUG] [Thread-120849] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:30.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-28T09:40:30.455 [DEBUG] [Thread-120853] [transport.py] [_log()] starting thread (client mode): 0x2e3df340
2025-09-28T09:40:30.455 [DEBUG] [Thread-120853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:30.469 [DEBUG] [Thread-120853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:40:30.470 [INFO] [Thread-120853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:40:30.477 [DEBUG] [Thread-120853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:30.477 [DEBUG] [Thread-120853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:40:30.477 [DEBUG] [Thread-120853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:30.477 [DEBUG] [Thread-120853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:30.477 [DEBUG] [Thread-120853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:30.478 [DEBUG] [Thread-120853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:30.479 [DEBUG] [Thread-120853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:30.479 [DEBUG] [Thread-120853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:30.479 [DEBUG] [Thread-120853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:30.479 [DEBUG] [Thread-120853] [transport.py] [_log()] Compression: none
2025-09-28T09:40:30.479 [DEBUG] [Thread-120853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:30.535 [DEBUG] [Thread-120853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:30.535 [DEBUG] [Thread-120853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:30.536 [DEBUG] [Thread-120853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:40:30.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:40:30.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:30.591 [DEBUG] [Thread-120853] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:30.591 [DEBUG] [Thread-120853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:30.592 [DEBUG] [Thread-120853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:30.592 [DEBUG] [Thread-120853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:40:30.592 [DEBUG] [Thread-120853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:30.610 [INFO] [Thread-120853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:30.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-28T09:40:30.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:31.577 [DEBUG] [Thread-120853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:31.577 [DEBUG] [Thread-120853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:31.625 [DEBUG] [Thread-120853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:31.625 [DEBUG] [Thread-120853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:31.634 [DEBUG] [Thread-120853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:31.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:31.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-28T09:40:31.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-28T09:40:31.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:31.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:31.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:31.669 [DEBUG] [Thread-120853] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:41.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:40:41.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:40:41.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-28T09:40:42.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 40, 11), 10.7, 48.38, 0.0, 7.82, 14.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:40:42.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:40:11
2025-09-28T09:40:42.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:40:42.498 [DEBUG] [Thread-120855] [transport.py] [_log()] starting thread (client mode): 0x30ddf850
2025-09-28T09:40:42.498 [DEBUG] [Thread-120855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:42.518 [DEBUG] [Thread-120855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:40:42.518 [INFO] [Thread-120855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] Compression: none
2025-09-28T09:40:42.520 [DEBUG] [Thread-120855] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:42.536 [DEBUG] [Thread-120855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:42.536 [DEBUG] [Thread-120855] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:42.536 [DEBUG] [Thread-120855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:40:42.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:40:42.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:42.537 [DEBUG] [Thread-120855] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:42.537 [DEBUG] [Thread-120855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:42.537 [DEBUG] [Thread-120855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:42.537 [DEBUG] [Thread-120855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:40:42.537 [DEBUG] [Thread-120855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:42.546 [INFO] [Thread-120855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:42.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:43.293 [DEBUG] [Thread-120855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:43.293 [DEBUG] [Thread-120855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:43.293 [DEBUG] [Thread-120855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:40:43.335 [DEBUG] [Thread-120855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:43.335 [DEBUG] [Thread-120855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:43.336 [DEBUG] [Thread-120855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:43.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:43.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:40:43.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:40:43.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:40:43.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:43.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:40:43.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319184 -999.00  +15.30   4.61     52   +5.50 1 1 1 1 1   888    0 10.07 30.45 ----- 2.1 4.6 181.5 5.9 23.1 -26.6 21.5 -24.8 20.2 -25.3 21.5 -25.8
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319184
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:40:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:40:11', tmtdew=10.7, humidity=48.38, cloud=0.0, wind=7.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:39:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:40:43.346 [DEBUG] [Thread-120855] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:43.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-28T09:40:43.433 [DEBUG] [Thread-120858] [transport.py] [_log()] starting thread (client mode): 0x2e363e20
2025-09-28T09:40:43.433 [DEBUG] [Thread-120858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:43.450 [DEBUG] [Thread-120858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:40:43.450 [INFO] [Thread-120858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] Compression: none
2025-09-28T09:40:43.458 [DEBUG] [Thread-120858] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:43.514 [DEBUG] [Thread-120858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:43.514 [DEBUG] [Thread-120858] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:43.514 [DEBUG] [Thread-120858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:40:43.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:40:43.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:43.573 [DEBUG] [Thread-120858] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:43.573 [DEBUG] [Thread-120858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:43.573 [DEBUG] [Thread-120858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:43.573 [DEBUG] [Thread-120858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:40:43.573 [DEBUG] [Thread-120858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:43.591 [INFO] [Thread-120858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:43.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-28T09:40:43.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:44.064 [DEBUG] [Thread-120860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:40:44.531 [DEBUG] [Thread-120858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:44.531 [DEBUG] [Thread-120858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:44.579 [DEBUG] [Thread-120858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:44.579 [DEBUG] [Thread-120858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:44.587 [DEBUG] [Thread-120858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:44.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:44.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')
2025-09-28T09:40:44.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-28T09:40:44.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:44.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:44.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:44.621 [DEBUG] [Thread-120858] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:54.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:40:54.624 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:40:54.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-28T09:40:55.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 40, 42), 10.73, 48.58, 0.0, 7.08, 14.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:40:55.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:40:42
2025-09-28T09:40:55.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:40:55.452 [DEBUG] [Thread-120861] [transport.py] [_log()] starting thread (client mode): 0x30dde380
2025-09-28T09:40:55.452 [DEBUG] [Thread-120861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:55.472 [DEBUG] [Thread-120861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:40:55.472 [INFO] [Thread-120861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:40:55.475 [DEBUG] [Thread-120861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] Compression: none
2025-09-28T09:40:55.476 [DEBUG] [Thread-120861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:55.493 [DEBUG] [Thread-120861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:40:55.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:40:55.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:40:55.494 [DEBUG] [Thread-120861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:55.504 [INFO] [Thread-120861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:55.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:56.117 [DEBUG] [Thread-120861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:56.118 [DEBUG] [Thread-120861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:56.118 [DEBUG] [Thread-120861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:40:56.159 [DEBUG] [Thread-120861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:56.159 [DEBUG] [Thread-120861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:56.160 [DEBUG] [Thread-120861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:56.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:56.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:40:56.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:40:56.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:40:56.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:56.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:40:56.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:56.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:56.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:40:56.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319878 -999.00  +15.10   5.81     51   +5.10 1 1 1 1 1   888    0 10.48 38.34 ----- 4.2 5.8 201.9 9.5 23.1 -28.3 21.7 -26.4 20.2 -26.2 21.3 -27.5
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319878
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:40:56.178 [DEBUG] [Thread-120861] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:56.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:40:42', tmtdew=10.73, humidity=48.58, cloud=0.0, wind=7.08, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:40:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:40:56.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-28T09:40:56.282 [DEBUG] [Thread-120864] [transport.py] [_log()] starting thread (client mode): 0x2b96f1c0
2025-09-28T09:40:56.282 [DEBUG] [Thread-120864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:40:56.314 [DEBUG] [Thread-120864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:40:56.314 [INFO] [Thread-120864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:40:56.338 [DEBUG] [Thread-120864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:40:56.339 [DEBUG] [Thread-120864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:40:56.339 [DEBUG] [Thread-120864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:40:56.339 [DEBUG] [Thread-120864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:56.339 [DEBUG] [Thread-120864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:40:56.339 [DEBUG] [Thread-120864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] client lang: <none>
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] server lang: <none>
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] kex follows: False
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] Compression: none
2025-09-28T09:40:56.340 [DEBUG] [Thread-120864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:40:56.414 [DEBUG] [Thread-120864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:40:56.415 [DEBUG] [Thread-120864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:40:56.415 [DEBUG] [Thread-120864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:40:56.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:40:56.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:40:56.508 [DEBUG] [Thread-120864] [transport.py] [_log()] userauth is OK
2025-09-28T09:40:56.508 [DEBUG] [Thread-120864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:40:56.508 [DEBUG] [Thread-120864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:40:56.509 [DEBUG] [Thread-120864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:40:56.509 [DEBUG] [Thread-120864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:40:56.546 [INFO] [Thread-120864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:40:56.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-28T09:40:56.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:40:57.499 [DEBUG] [Thread-120864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:40:57.500 [DEBUG] [Thread-120864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:40:57.568 [DEBUG] [Thread-120864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:40:57.568 [DEBUG] [Thread-120864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:40:57.598 [DEBUG] [Thread-120864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:40:57.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:40:57.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-28T09:40:57.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-28T09:40:57.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:40:57.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:40:57.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:40:57.716 [DEBUG] [Thread-120864] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:40:59.087 [DEBUG] [Thread-120866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:00.483 [DEBUG] [Thread-120867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:07.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:41:07.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:41:07.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-28T09:41:08.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 40, 42), 10.73, 48.58, 0.0, 7.08, 14.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:41:08.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:40:42
2025-09-28T09:41:08.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:41:08.520 [DEBUG] [Thread-120868] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ac0
2025-09-28T09:41:08.520 [DEBUG] [Thread-120868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:08.542 [DEBUG] [Thread-120868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:41:08.542 [INFO] [Thread-120868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:08.545 [DEBUG] [Thread-120868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] Compression: none
2025-09-28T09:41:08.546 [DEBUG] [Thread-120868] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:08.563 [DEBUG] [Thread-120868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:08.563 [DEBUG] [Thread-120868] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:08.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:41:08.564 [DEBUG] [Thread-120868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:41:08.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:08.566 [DEBUG] [Thread-120868] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:08.566 [DEBUG] [Thread-120868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:08.566 [DEBUG] [Thread-120868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:08.566 [DEBUG] [Thread-120868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:41:08.566 [DEBUG] [Thread-120868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:08.590 [INFO] [Thread-120868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:08.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:09.316 [DEBUG] [Thread-120868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:09.316 [DEBUG] [Thread-120868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:09.316 [DEBUG] [Thread-120868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:41:09.357 [DEBUG] [Thread-120868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:09.357 [DEBUG] [Thread-120868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:09.360 [DEBUG] [Thread-120868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:09.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:09.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:41:09.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:41:09.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:41:09.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:09.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:41:09.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:09.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:09.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:41:09.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.319878 -999.00  +15.10   5.81     51   +5.10 1 1 1 1 1   888    0 10.48 38.34 ----- 4.2 5.8 201.9 9.5 23.1 -28.3 21.7 -26.4 20.2 -26.2 21.3 -27.5
2025-09-28T09:41:09.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:41:09.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:41:09.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.319878
2025-09-28T09:41:09.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:41:09.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:41:09.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:41:09.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:41:09.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:41:09.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:40:42', tmtdew=10.73, humidity=48.58, cloud=0.0, wind=7.08, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:40:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:41:09.385 [DEBUG] [Thread-120868] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:09.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-28T09:41:09.508 [DEBUG] [Thread-120871] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-28T09:41:09.509 [DEBUG] [Thread-120871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:09.553 [DEBUG] [Thread-120871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:41:09.553 [INFO] [Thread-120871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:09.589 [DEBUG] [Thread-120871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] Compression: none
2025-09-28T09:41:09.590 [DEBUG] [Thread-120871] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:09.674 [DEBUG] [Thread-120871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:09.674 [DEBUG] [Thread-120871] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:09.675 [DEBUG] [Thread-120871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:41:09.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:41:09.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:09.790 [DEBUG] [Thread-120871] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:09.791 [DEBUG] [Thread-120871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:09.791 [DEBUG] [Thread-120871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:09.791 [DEBUG] [Thread-120871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:41:09.791 [DEBUG] [Thread-120871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:09.838 [INFO] [Thread-120871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:09.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:41:09.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:10.912 [DEBUG] [Thread-120871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:10.912 [DEBUG] [Thread-120871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:10.986 [DEBUG] [Thread-120871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:10.987 [DEBUG] [Thread-120871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:11.011 [DEBUG] [Thread-120871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:11.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:11.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-28T09:41:11.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-28T09:41:11.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:11.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:11.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:11.153 [DEBUG] [Thread-120871] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:14.131 [DEBUG] [Thread-120873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:21.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:41:21.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:41:21.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-28T09:41:21.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 41, 14), 10.74, 48.53, 0.0, 6.37, 14.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:41:21.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:41:14
2025-09-28T09:41:21.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:41:21.941 [DEBUG] [Thread-120874] [transport.py] [_log()] starting thread (client mode): 0x2e3c35e0
2025-09-28T09:41:21.942 [DEBUG] [Thread-120874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:21.960 [DEBUG] [Thread-120874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:41:21.960 [INFO] [Thread-120874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:21.962 [DEBUG] [Thread-120874] [transport.py] [_log()] Compression: none
2025-09-28T09:41:21.963 [DEBUG] [Thread-120874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:21.977 [DEBUG] [Thread-120874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:21.978 [DEBUG] [Thread-120874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:21.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:41:21.979 [DEBUG] [Thread-120874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:41:21.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:21.981 [DEBUG] [Thread-120874] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:21.981 [DEBUG] [Thread-120874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:21.981 [DEBUG] [Thread-120874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:21.981 [DEBUG] [Thread-120874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:41:21.981 [DEBUG] [Thread-120874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:21.999 [INFO] [Thread-120874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:22.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:22.297 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:22.298 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:22.614 [DEBUG] [Thread-120874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:22.614 [DEBUG] [Thread-120874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:22.614 [DEBUG] [Thread-120874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:41:22.655 [DEBUG] [Thread-120874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:22.655 [DEBUG] [Thread-120874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:22.658 [DEBUG] [Thread-120874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:22.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:22.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:41:22.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:41:22.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:41:22.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:22.680 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:41:22.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:22.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:22.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:41:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320226 -999.00  +15.10   5.21     51   +5.00 1 1 1 1 1   888    0 10.17 38.87 ----- 5.8 5.2 252.4 6.5 23.2 -26.9 21.8 -25.3 20.2 -25.5 21.4 -27.6
2025-09-28T09:41:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:41:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:41:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320226
2025-09-28T09:41:22.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:41:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:41:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:41:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:41:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:41:22.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:41:14', tmtdew=10.74, humidity=48.53, cloud=0.0, wind=6.37, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:41:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:41:22.684 [DEBUG] [Thread-120874] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:22.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-28T09:41:22.777 [DEBUG] [Thread-120877] [transport.py] [_log()] starting thread (client mode): 0x2b9449d0
2025-09-28T09:41:22.777 [DEBUG] [Thread-120877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:22.792 [DEBUG] [Thread-120877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:41:22.792 [INFO] [Thread-120877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:41:22.800 [DEBUG] [Thread-120877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:22.800 [DEBUG] [Thread-120877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:41:22.800 [DEBUG] [Thread-120877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:22.800 [DEBUG] [Thread-120877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] Compression: none
2025-09-28T09:41:22.801 [DEBUG] [Thread-120877] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:22.858 [DEBUG] [Thread-120877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:22.859 [DEBUG] [Thread-120877] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:22.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:41:22.860 [DEBUG] [Thread-120877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:41:22.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:22.915 [DEBUG] [Thread-120877] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:22.915 [DEBUG] [Thread-120877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:22.915 [DEBUG] [Thread-120877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:22.915 [DEBUG] [Thread-120877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:41:22.915 [DEBUG] [Thread-120877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:22.934 [INFO] [Thread-120877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:22.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-28T09:41:22.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:23.909 [DEBUG] [Thread-120877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:23.909 [DEBUG] [Thread-120877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:23.958 [DEBUG] [Thread-120877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:23.958 [DEBUG] [Thread-120877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:23.968 [DEBUG] [Thread-120877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:23.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:23.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-28T09:41:23.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-28T09:41:23.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:23.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:23.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:24.003 [DEBUG] [Thread-120877] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:29.161 [DEBUG] [Thread-120879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:34.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:41:34.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:41:34.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-28T09:41:34.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 41, 14), 10.74, 48.53, 0.0, 6.37, 14.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:41:34.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:41:14
2025-09-28T09:41:34.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:41:34.825 [DEBUG] [Thread-120880] [transport.py] [_log()] starting thread (client mode): 0x2e3c3760
2025-09-28T09:41:34.826 [DEBUG] [Thread-120880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:34.848 [DEBUG] [Thread-120880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:41:34.848 [INFO] [Thread-120880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:41:34.850 [DEBUG] [Thread-120880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:34.850 [DEBUG] [Thread-120880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:34.851 [DEBUG] [Thread-120880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:34.852 [DEBUG] [Thread-120880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:34.852 [DEBUG] [Thread-120880] [transport.py] [_log()] Compression: none
2025-09-28T09:41:34.852 [DEBUG] [Thread-120880] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:34.861 [DEBUG] [Thread-120880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:34.862 [DEBUG] [Thread-120880] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:34.862 [DEBUG] [Thread-120880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:41:34.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:41:34.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:34.865 [DEBUG] [Thread-120880] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:34.865 [DEBUG] [Thread-120880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:34.865 [DEBUG] [Thread-120880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:34.865 [DEBUG] [Thread-120880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:41:34.865 [DEBUG] [Thread-120880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:34.878 [INFO] [Thread-120880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:34.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:35.534 [DEBUG] [Thread-120880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:35.534 [DEBUG] [Thread-120880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:35.534 [DEBUG] [Thread-120880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:41:35.575 [DEBUG] [Thread-120880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:35.575 [DEBUG] [Thread-120880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:35.578 [DEBUG] [Thread-120880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:35.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:35.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:41:35.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:41:35.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:41:35.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:35.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:41:35.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320226 -999.00  +15.10   5.21     51   +5.00 1 1 1 1 1   888    0 10.17 38.87 ----- 5.8 5.2 252.4 6.5 23.2 -26.9 21.8 -25.3 20.2 -25.5 21.4 -27.6
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:41:35.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320226
2025-09-28T09:41:35.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:41:35.603 [DEBUG] [Thread-120880] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:41:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:41:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:41:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:41:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:41:14', tmtdew=10.74, humidity=48.53, cloud=0.0, wind=6.37, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:41:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:41:35.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-28T09:41:35.699 [DEBUG] [Thread-120883] [transport.py] [_log()] starting thread (client mode): 0x30dde5c0
2025-09-28T09:41:35.699 [DEBUG] [Thread-120883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:35.716 [DEBUG] [Thread-120883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:41:35.716 [INFO] [Thread-120883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:35.724 [DEBUG] [Thread-120883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:35.725 [DEBUG] [Thread-120883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:35.725 [DEBUG] [Thread-120883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:35.725 [DEBUG] [Thread-120883] [transport.py] [_log()] Compression: none
2025-09-28T09:41:35.725 [DEBUG] [Thread-120883] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:35.782 [DEBUG] [Thread-120883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:35.783 [DEBUG] [Thread-120883] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:35.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:41:35.784 [DEBUG] [Thread-120883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:41:35.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:35.842 [DEBUG] [Thread-120883] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:35.842 [DEBUG] [Thread-120883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:35.842 [DEBUG] [Thread-120883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:35.843 [DEBUG] [Thread-120883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:41:35.843 [DEBUG] [Thread-120883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:35.862 [INFO] [Thread-120883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:35.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-28T09:41:35.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:36.848 [DEBUG] [Thread-120883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:36.848 [DEBUG] [Thread-120883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:36.896 [DEBUG] [Thread-120883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:36.896 [DEBUG] [Thread-120883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:36.906 [DEBUG] [Thread-120883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:36.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:36.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-28T09:41: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') -> 00000000
2025-09-28T09:41:36.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:36.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:36.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:36.941 [DEBUG] [Thread-120883] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:44.196 [DEBUG] [Thread-120885 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:41:46.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:41:46.944 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:41:46.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-28T09:41:47.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 41, 14), 10.74, 48.53, 0.0, 6.37, 14.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:41:47.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:41:14
2025-09-28T09:41:47.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:41:47.803 [DEBUG] [Thread-120886] [transport.py] [_log()] starting thread (client mode): 0x2e38c4f0
2025-09-28T09:41:47.803 [DEBUG] [Thread-120886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:47.823 [DEBUG] [Thread-120886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:41:47.823 [INFO] [Thread-120886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:47.826 [DEBUG] [Thread-120886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] Compression: none
2025-09-28T09:41:47.827 [DEBUG] [Thread-120886] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:47.844 [DEBUG] [Thread-120886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:47.844 [DEBUG] [Thread-120886] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:47.844 [DEBUG] [Thread-120886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:41:47.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:41:47.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:47.888 [DEBUG] [Thread-120886] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:47.888 [DEBUG] [Thread-120886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:47.888 [DEBUG] [Thread-120886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:47.888 [DEBUG] [Thread-120886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:41:47.888 [DEBUG] [Thread-120886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:47.904 [INFO] [Thread-120886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:47.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:48.630 [DEBUG] [Thread-120886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:48.630 [DEBUG] [Thread-120886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:48.630 [DEBUG] [Thread-120886] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:41:48.671 [DEBUG] [Thread-120886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:48.671 [DEBUG] [Thread-120886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:48.673 [DEBUG] [Thread-120886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:48.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41:48.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:41:48.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:41:48.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:41:48.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:48.686 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:41:48.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320226 -999.00  +15.10   5.21     51   +5.00 1 1 1 1 1   888    0 10.17 38.87 ----- 5.8 5.2 252.4 6.5 23.2 -26.9 21.8 -25.3 20.2 -25.5 21.4 -27.6
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320226
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:41:48.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:41:14', tmtdew=10.74, humidity=48.53, cloud=0.0, wind=6.37, temperature=14.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:41:07.526', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:41:48.687 [DEBUG] [Thread-120886] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:48.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-28T09:41:48.798 [DEBUG] [Thread-120889] [transport.py] [_log()] starting thread (client mode): 0x30dde0b0
2025-09-28T09:41:48.798 [DEBUG] [Thread-120889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:41:48.827 [DEBUG] [Thread-120889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:41:48.827 [INFO] [Thread-120889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:41:48.862 [DEBUG] [Thread-120889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] client lang: <none>
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] server lang: <none>
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] kex follows: False
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] Compression: none
2025-09-28T09:41:48.863 [DEBUG] [Thread-120889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:41:48.947 [DEBUG] [Thread-120889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:41:48.947 [DEBUG] [Thread-120889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:41:48.947 [DEBUG] [Thread-120889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:41:48.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:41:48.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:41:49.054 [DEBUG] [Thread-120889] [transport.py] [_log()] userauth is OK
2025-09-28T09:41:49.055 [DEBUG] [Thread-120889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:41:49.055 [DEBUG] [Thread-120889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:41:49.055 [DEBUG] [Thread-120889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:41:49.055 [DEBUG] [Thread-120889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:41:49.102 [INFO] [Thread-120889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:41:49.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-28T09:41:49.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:41:50.051 [DEBUG] [Thread-120889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:41:50.051 [DEBUG] [Thread-120889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:41:50.127 [DEBUG] [Thread-120889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:41:50.127 [DEBUG] [Thread-120889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:41:50.162 [DEBUG] [Thread-120889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:41:50.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:41: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-28T09:41:50.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-28T09:41:50.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:41:50.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:41:50.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:41:50.308 [DEBUG] [Thread-120889] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:41:59.230 [DEBUG] [Thread-120891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:00.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:42:00.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:42: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-28T09:42:00.527 [DEBUG] [Thread-120892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 41, 46), 10.78, 48.57, 0.0, 5.33, 14.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:42:00.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:41:46
2025-09-28T09:42:00.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:42:01.107 [DEBUG] [Thread-120893] [transport.py] [_log()] starting thread (client mode): 0x2e38e2f0
2025-09-28T09:42:01.107 [DEBUG] [Thread-120893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:01.117 [DEBUG] [Thread-120893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:42:01.117 [INFO] [Thread-120893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] Compression: none
2025-09-28T09:42:01.119 [DEBUG] [Thread-120893] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:01.127 [DEBUG] [Thread-120893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:01.127 [DEBUG] [Thread-120893] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:01.127 [DEBUG] [Thread-120893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:42:01.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:42:01.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:01.128 [DEBUG] [Thread-120893] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:01.128 [DEBUG] [Thread-120893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:01.128 [DEBUG] [Thread-120893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:01.128 [DEBUG] [Thread-120893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:42:01.128 [DEBUG] [Thread-120893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:01.137 [INFO] [Thread-120893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:01.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:01.748 [DEBUG] [Thread-120893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:01.749 [DEBUG] [Thread-120893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:01.749 [DEBUG] [Thread-120893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:42:01.789 [DEBUG] [Thread-120893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:01.790 [DEBUG] [Thread-120893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:01.793 [DEBUG] [Thread-120893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:01.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:01.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:42:01.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:42:01.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:42:01.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:01.814 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:42:01.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:01.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320573 -999.00  +15.00   2.40     51   +5.10 1 1 1 1 1   888    0 10.36 39.55 ----- 1.9 2.4 276.6 5.9 23.4 -26.9 21.9 -25.1 20.3 -25.3 21.5 -26.2
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320573
2025-09-28T09:42:01.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:42:01.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:42:01.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:42:01.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:42:01.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:42:01.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:41:46', tmtdew=10.78, humidity=48.57, cloud=0.0, wind=5.33, temperature=14.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:41:37.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:42:01.816 [DEBUG] [Thread-120893] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:01.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-28T09:42:01.952 [DEBUG] [Thread-120896] [transport.py] [_log()] starting thread (client mode): 0x2b945e40
2025-09-28T09:42:01.953 [DEBUG] [Thread-120896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:01.997 [DEBUG] [Thread-120896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:42:01.997 [INFO] [Thread-120896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:42:02.033 [DEBUG] [Thread-120896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] Compression: none
2025-09-28T09:42:02.034 [DEBUG] [Thread-120896] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:02.120 [DEBUG] [Thread-120896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:02.121 [DEBUG] [Thread-120896] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:02.121 [DEBUG] [Thread-120896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:42:02.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:42:02.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:02.237 [DEBUG] [Thread-120896] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:02.237 [DEBUG] [Thread-120896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:02.237 [DEBUG] [Thread-120896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:02.237 [DEBUG] [Thread-120896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:42:02.237 [DEBUG] [Thread-120896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:02.272 [INFO] [Thread-120896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:02.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-28T09:42:02.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:03.246 [DEBUG] [Thread-120896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:03.247 [DEBUG] [Thread-120896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:03.329 [DEBUG] [Thread-120896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:03.329 [DEBUG] [Thread-120896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:03.368 [DEBUG] [Thread-120896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:03.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:03.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')
2025-09-28T09:42:03.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-28T09:42:03.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:03.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:03.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:03.521 [DEBUG] [Thread-120896] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:13.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:42:13.486 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:42:13.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-28T09:42:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 41, 46), 10.78, 48.57, 0.0, 5.33, 14.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:42:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:41:46
2025-09-28T09:42:14.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:42:14.256 [DEBUG] [Thread-120898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:14.320 [DEBUG] [Thread-120899] [transport.py] [_log()] starting thread (client mode): 0x2b945450
2025-09-28T09:42:14.320 [DEBUG] [Thread-120899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:14.342 [DEBUG] [Thread-120899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:42:14.342 [INFO] [Thread-120899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] Compression: none
2025-09-28T09:42:14.344 [DEBUG] [Thread-120899] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:14.356 [DEBUG] [Thread-120899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:14.356 [DEBUG] [Thread-120899] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:14.357 [DEBUG] [Thread-120899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:42:14.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:42:14.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:14.359 [DEBUG] [Thread-120899] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:14.359 [DEBUG] [Thread-120899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:14.359 [DEBUG] [Thread-120899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:14.359 [DEBUG] [Thread-120899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:42:14.359 [DEBUG] [Thread-120899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:14.377 [INFO] [Thread-120899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:14.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:14.942 [DEBUG] [Thread-120899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:14.942 [DEBUG] [Thread-120899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:14.943 [DEBUG] [Thread-120899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:42:14.983 [DEBUG] [Thread-120899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:14.984 [DEBUG] [Thread-120899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:14.986 [DEBUG] [Thread-120899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:15.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:15.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:42:15.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:42:15.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:42:15.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:15.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:42:15.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320573 -999.00  +15.00   2.40     51   +5.10 1 1 1 1 1   888    0 10.36 39.55 ----- 1.9 2.4 276.6 5.9 23.4 -26.9 21.9 -25.1 20.3 -25.3 21.5 -26.2
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:42:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320573
2025-09-28T09:42:15.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:42:15.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:42:15.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:42:15.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:42:15.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:42:15.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:41:46', tmtdew=10.78, humidity=48.57, cloud=0.0, wind=5.33, temperature=14.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:41:37.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:42:15.013 [DEBUG] [Thread-120899] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:15.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-28T09:42:15.139 [DEBUG] [Thread-120902] [transport.py] [_log()] starting thread (client mode): 0x2b947820
2025-09-28T09:42:15.139 [DEBUG] [Thread-120902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:15.186 [DEBUG] [Thread-120902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:42:15.186 [INFO] [Thread-120902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:42:15.225 [DEBUG] [Thread-120902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:15.225 [DEBUG] [Thread-120902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:42:15.225 [DEBUG] [Thread-120902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:15.225 [DEBUG] [Thread-120902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:15.226 [DEBUG] [Thread-120902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:15.227 [DEBUG] [Thread-120902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:15.227 [DEBUG] [Thread-120902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:15.227 [DEBUG] [Thread-120902] [transport.py] [_log()] Compression: none
2025-09-28T09:42:15.227 [DEBUG] [Thread-120902] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:15.318 [DEBUG] [Thread-120902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:15.318 [DEBUG] [Thread-120902] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:15.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:42:15.319 [DEBUG] [Thread-120902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:42:15.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:15.441 [DEBUG] [Thread-120902] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:15.442 [DEBUG] [Thread-120902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:15.442 [DEBUG] [Thread-120902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:15.442 [DEBUG] [Thread-120902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:42:15.442 [DEBUG] [Thread-120902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:15.493 [INFO] [Thread-120902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:15.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-28T09:42:15.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:16.548 [DEBUG] [Thread-120902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:16.548 [DEBUG] [Thread-120902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:16.628 [DEBUG] [Thread-120902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:16.628 [DEBUG] [Thread-120902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:16.669 [DEBUG] [Thread-120902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:16.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:16.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-28T09:42:16.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-28T09:42:16.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:16.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:16.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:16.833 [DEBUG] [Thread-120902] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:22.440 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:22.441 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:26.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:42:26.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:42:26.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-28T09:42:27.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 42, 18), 10.78, 48.57, 0.0, 4.82, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:42:27.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:42:18
2025-09-28T09:42:27.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:42:27.643 [DEBUG] [Thread-120904] [transport.py] [_log()] starting thread (client mode): 0x2b9462c0
2025-09-28T09:42:27.643 [DEBUG] [Thread-120904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:27.653 [DEBUG] [Thread-120904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:42:27.653 [INFO] [Thread-120904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:27.654 [DEBUG] [Thread-120904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:27.655 [DEBUG] [Thread-120904] [transport.py] [_log()] Compression: none
2025-09-28T09:42:27.655 [DEBUG] [Thread-120904] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:27.661 [DEBUG] [Thread-120904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:27.661 [DEBUG] [Thread-120904] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:42:27.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:42:27.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:42:27.662 [DEBUG] [Thread-120904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:27.673 [INFO] [Thread-120904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:27.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:28.256 [DEBUG] [Thread-120904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:28.256 [DEBUG] [Thread-120904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:28.256 [DEBUG] [Thread-120904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:42:28.297 [DEBUG] [Thread-120904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:28.298 [DEBUG] [Thread-120904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:28.300 [DEBUG] [Thread-120904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:28.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:28.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:42:28.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:42:28.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:42:28.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:28.324 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:42:28.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:28.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:42:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320920 -999.00  +15.10   4.54     51   +5.20 1 1 1 1 1   888    0 10.52 43.49 ----- 4.1 4.5 255.0 4.9 23.6 -27.0 22.0 -25.3 20.4 -24.9 21.6 -25.5
2025-09-28T09:42:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:42:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:42:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320920
2025-09-28T09:42:28.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:42:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:42:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:42:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:42:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:42:28.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:42:18', tmtdew=10.78, humidity=48.57, cloud=0.0, wind=4.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:07.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:42:28.327 [DEBUG] [Thread-120904] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:28.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-28T09:42:28.444 [DEBUG] [Thread-120907] [transport.py] [_log()] starting thread (client mode): 0x2b9469e0
2025-09-28T09:42:28.444 [DEBUG] [Thread-120907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:28.478 [DEBUG] [Thread-120907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:42:28.478 [INFO] [Thread-120907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:42:28.503 [DEBUG] [Thread-120907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:28.504 [DEBUG] [Thread-120907] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] Compression: none
2025-09-28T09:42:28.505 [DEBUG] [Thread-120907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:28.582 [DEBUG] [Thread-120907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:28.583 [DEBUG] [Thread-120907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:28.584 [DEBUG] [Thread-120907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:42:28.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:42:28.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:28.678 [DEBUG] [Thread-120907] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:28.678 [DEBUG] [Thread-120907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:28.678 [DEBUG] [Thread-120907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:28.679 [DEBUG] [Thread-120907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:42:28.679 [DEBUG] [Thread-120907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:28.716 [INFO] [Thread-120907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:28.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:42:28.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:29.304 [DEBUG] [Thread-120909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:29.685 [DEBUG] [Thread-120907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:29.685 [DEBUG] [Thread-120907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:29.752 [DEBUG] [Thread-120907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:29.753 [DEBUG] [Thread-120907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:29.781 [DEBUG] [Thread-120907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:29.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:29.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-28T09:42:29.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-28T09:42:29.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:29.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:29.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:29.893 [DEBUG] [Thread-120907] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:39.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:42:39.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:42: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-28T09:42:40.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 42, 18), 10.78, 48.57, 0.0, 4.82, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:42:40.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:42:18
2025-09-28T09:42:40.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:42:40.710 [DEBUG] [Thread-120910] [transport.py] [_log()] starting thread (client mode): 0x2e3c22f0
2025-09-28T09:42:40.710 [DEBUG] [Thread-120910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:40.730 [DEBUG] [Thread-120910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:42:40.730 [INFO] [Thread-120910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:42:40.733 [DEBUG] [Thread-120910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:40.733 [DEBUG] [Thread-120910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:42:40.733 [DEBUG] [Thread-120910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:40.733 [DEBUG] [Thread-120910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:40.733 [DEBUG] [Thread-120910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] Compression: none
2025-09-28T09:42:40.734 [DEBUG] [Thread-120910] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:40.751 [DEBUG] [Thread-120910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:40.752 [DEBUG] [Thread-120910] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:40.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:42:40.753 [DEBUG] [Thread-120910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:42:40.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:40.755 [DEBUG] [Thread-120910] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:40.756 [DEBUG] [Thread-120910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:40.756 [DEBUG] [Thread-120910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:40.756 [DEBUG] [Thread-120910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:42:40.756 [DEBUG] [Thread-120910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:40.779 [INFO] [Thread-120910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:40.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:41.418 [DEBUG] [Thread-120910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:41.419 [DEBUG] [Thread-120910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:41.419 [DEBUG] [Thread-120910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:42:41.459 [DEBUG] [Thread-120910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:41.460 [DEBUG] [Thread-120910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:41.463 [DEBUG] [Thread-120910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:41.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:41.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:42:41.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:42:41.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:42:41.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:41.491 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:42:41.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:41.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:41.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:42:41.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320920 -999.00  +15.10   4.54     51   +5.20 1 1 1 1 1   888    0 10.52 43.49 ----- 4.1 4.5 255.0 4.9 23.6 -27.0 22.0 -25.3 20.4 -24.9 21.6 -25.5
2025-09-28T09:42:41.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:42:41.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:42:41.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320920
2025-09-28T09:42:41.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:42:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:42:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:42:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:42:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:42:41.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:42:18', tmtdew=10.78, humidity=48.57, cloud=0.0, wind=4.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:07.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:42:41.494 [DEBUG] [Thread-120910] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:41.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-28T09:42:41.617 [DEBUG] [Thread-120913] [transport.py] [_log()] starting thread (client mode): 0x2e3c3f70
2025-09-28T09:42:41.618 [DEBUG] [Thread-120913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:41.657 [DEBUG] [Thread-120913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:42:41.657 [INFO] [Thread-120913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:41.691 [DEBUG] [Thread-120913] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] Compression: none
2025-09-28T09:42:41.692 [DEBUG] [Thread-120913] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:41.773 [DEBUG] [Thread-120913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:41.773 [DEBUG] [Thread-120913] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:41.774 [DEBUG] [Thread-120913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:42:41.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:42:41.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:41.882 [DEBUG] [Thread-120913] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:41.882 [DEBUG] [Thread-120913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:41.882 [DEBUG] [Thread-120913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:41.882 [DEBUG] [Thread-120913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:42:41.882 [DEBUG] [Thread-120913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:41.926 [INFO] [Thread-120913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:41.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-28T09:42:41.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:42.912 [DEBUG] [Thread-120913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:42.912 [DEBUG] [Thread-120913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:42.988 [DEBUG] [Thread-120913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:42.988 [DEBUG] [Thread-120913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:43.017 [DEBUG] [Thread-120913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:43.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:43.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-28T09:42:43.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') -> 00000000
2025-09-28T09:42:43.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:43.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:43.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:43.130 [DEBUG] [Thread-120913] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:44.360 [DEBUG] [Thread-120915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:42:53.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:42:53.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:42:53.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-28T09:42:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 42, 50), 10.4, 49.51, 0.0, 12.14, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:42:53.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:42:50
2025-09-28T09:42:53.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:42:53.964 [DEBUG] [Thread-120916] [transport.py] [_log()] starting thread (client mode): 0x2e3c2fb0
2025-09-28T09:42:53.964 [DEBUG] [Thread-120916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:53.984 [DEBUG] [Thread-120916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:42:53.985 [INFO] [Thread-120916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:53.988 [DEBUG] [Thread-120916] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] Compression: none
2025-09-28T09:42:53.989 [DEBUG] [Thread-120916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:54.010 [DEBUG] [Thread-120916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:54.010 [DEBUG] [Thread-120916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:54.010 [DEBUG] [Thread-120916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:42:54.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:42:54.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:54.012 [DEBUG] [Thread-120916] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:54.013 [DEBUG] [Thread-120916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:54.013 [DEBUG] [Thread-120916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:54.013 [DEBUG] [Thread-120916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:42:54.013 [DEBUG] [Thread-120916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:54.036 [INFO] [Thread-120916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:54.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:54.672 [DEBUG] [Thread-120916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:54.672 [DEBUG] [Thread-120916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:54.672 [DEBUG] [Thread-120916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:42:54.714 [DEBUG] [Thread-120916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:54.714 [DEBUG] [Thread-120916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:54.716 [DEBUG] [Thread-120916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:54.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:54.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:42:54.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:42:54.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:42:54.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:54.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:42:54.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.320920 -999.00  +15.10   4.54     51   +5.20 1 1 1 1 1   888    0 10.52 43.49 ----- 4.1 4.5 255.0 4.9 23.6 -27.0 22.0 -25.3 20.4 -24.9 21.6 -25.5
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.320920
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:42:54.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:42:50', tmtdew=10.4, humidity=49.51, cloud=0.0, wind=12.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:07.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:42:54.735 [DEBUG] [Thread-120916] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:54.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-28T09:42:54.816 [DEBUG] [Thread-120919] [transport.py] [_log()] starting thread (client mode): 0x2e3c15a0
2025-09-28T09:42:54.816 [DEBUG] [Thread-120919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:42:54.831 [DEBUG] [Thread-120919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:42:54.831 [INFO] [Thread-120919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:42:54.838 [DEBUG] [Thread-120919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:42:54.838 [DEBUG] [Thread-120919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] client lang: <none>
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] server lang: <none>
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] kex follows: False
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] Compression: none
2025-09-28T09:42:54.839 [DEBUG] [Thread-120919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:42:54.900 [DEBUG] [Thread-120919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:42:54.901 [DEBUG] [Thread-120919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:42:54.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:42:54.902 [DEBUG] [Thread-120919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:42:54.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:42:54.957 [DEBUG] [Thread-120919] [transport.py] [_log()] userauth is OK
2025-09-28T09:42:54.958 [DEBUG] [Thread-120919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:42:54.958 [DEBUG] [Thread-120919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:42:54.958 [DEBUG] [Thread-120919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:42:54.958 [DEBUG] [Thread-120919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:42:54.976 [INFO] [Thread-120919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:42:54.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:42:54.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:42:56.039 [DEBUG] [Thread-120919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:42:56.039 [DEBUG] [Thread-120919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:42:56.087 [DEBUG] [Thread-120919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:42:56.087 [DEBUG] [Thread-120919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:42:56.097 [DEBUG] [Thread-120919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:42:56.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:42:56.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-28T09:42:56.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-28T09:42:56.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:42:56.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:42:56.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:42:56.135 [DEBUG] [Thread-120919] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:42:59.388 [DEBUG] [Thread-120921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:00.579 [DEBUG] [Thread-120922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:06.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:43:06.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:43:06.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-28T09:43:06.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 42, 50), 10.4, 49.51, 0.0, 12.14, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:43:06.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:42:50
2025-09-28T09:43:06.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:43:06.970 [DEBUG] [Thread-120923] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T09:43:06.970 [DEBUG] [Thread-120923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:06.990 [DEBUG] [Thread-120923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:43:06.990 [INFO] [Thread-120923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:43:06.993 [DEBUG] [Thread-120923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:06.993 [DEBUG] [Thread-120923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] Compression: none
2025-09-28T09:43:06.994 [DEBUG] [Thread-120923] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:07.010 [DEBUG] [Thread-120923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:07.011 [DEBUG] [Thread-120923] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:07.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:43:07.012 [DEBUG] [Thread-120923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:43:07.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:07.014 [DEBUG] [Thread-120923] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:07.014 [DEBUG] [Thread-120923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:07.014 [DEBUG] [Thread-120923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:07.014 [DEBUG] [Thread-120923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:43:07.014 [DEBUG] [Thread-120923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:07.028 [INFO] [Thread-120923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:07.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:07.675 [DEBUG] [Thread-120923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:07.675 [DEBUG] [Thread-120923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:07.675 [DEBUG] [Thread-120923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:43:07.716 [DEBUG] [Thread-120923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:07.717 [DEBUG] [Thread-120923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:07.720 [DEBUG] [Thread-120923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:07.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:07.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:43:07.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:43:07.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:43:07.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:07.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:43:07.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:07.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321267 -999.00  +15.30  10.06     52   +5.70 1 1 1 1 1   888    0 10.71 46.81 ----- 7.8 10.1 194.5 11.9 23.6 -27.3 21.9 -26.2 20.4 -25.5 21.6 -26.4
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321267
2025-09-28T09:43:07.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:43:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:43:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:43:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:43:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:43:07.745 [DEBUG] [Thread-120923] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:07.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:42:50', tmtdew=10.4, humidity=49.51, cloud=0.0, wind=12.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:43:07.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-28T09:43:07.872 [DEBUG] [Thread-120926] [transport.py] [_log()] starting thread (client mode): 0x2b947130
2025-09-28T09:43:07.872 [DEBUG] [Thread-120926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:07.914 [DEBUG] [Thread-120926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:43:07.914 [INFO] [Thread-120926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:43:07.950 [DEBUG] [Thread-120926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:07.951 [DEBUG] [Thread-120926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] Compression: none
2025-09-28T09:43:07.952 [DEBUG] [Thread-120926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:08.037 [DEBUG] [Thread-120926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:08.038 [DEBUG] [Thread-120926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:08.038 [DEBUG] [Thread-120926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:43:08.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:43:08.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:08.151 [DEBUG] [Thread-120926] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:08.151 [DEBUG] [Thread-120926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:08.151 [DEBUG] [Thread-120926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:08.151 [DEBUG] [Thread-120926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:43:08.151 [DEBUG] [Thread-120926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:08.201 [INFO] [Thread-120926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:08.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-28T09:43:08.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:09.160 [DEBUG] [Thread-120926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:09.161 [DEBUG] [Thread-120926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:09.239 [DEBUG] [Thread-120926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:09.239 [DEBUG] [Thread-120926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:09.278 [DEBUG] [Thread-120926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:09.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43: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-28T09:43:09.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-28T09:43:09.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:09.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:09.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:09.435 [DEBUG] [Thread-120926] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:14.435 [DEBUG] [Thread-120928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:19.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:43:19.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:43:19.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-28T09:43:19.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 42, 50), 10.4, 49.51, 0.0, 12.14, 14.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:43:19.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:42:50
2025-09-28T09:43:20.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:43:20.231 [DEBUG] [Thread-120929] [transport.py] [_log()] starting thread (client mode): 0x2b946350
2025-09-28T09:43:20.231 [DEBUG] [Thread-120929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:20.250 [DEBUG] [Thread-120929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:43:20.250 [INFO] [Thread-120929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:43:20.253 [DEBUG] [Thread-120929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:20.254 [DEBUG] [Thread-120929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:20.255 [DEBUG] [Thread-120929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:20.255 [DEBUG] [Thread-120929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:20.255 [DEBUG] [Thread-120929] [transport.py] [_log()] Compression: none
2025-09-28T09:43:20.255 [DEBUG] [Thread-120929] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:20.262 [DEBUG] [Thread-120929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:20.262 [DEBUG] [Thread-120929] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:20.263 [DEBUG] [Thread-120929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:43:20.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:43:20.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:20.264 [DEBUG] [Thread-120929] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:20.264 [DEBUG] [Thread-120929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:20.264 [DEBUG] [Thread-120929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:20.264 [DEBUG] [Thread-120929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:43:20.264 [DEBUG] [Thread-120929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:20.278 [INFO] [Thread-120929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:20.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:20.860 [DEBUG] [Thread-120929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:20.860 [DEBUG] [Thread-120929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:20.860 [DEBUG] [Thread-120929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:43:20.901 [DEBUG] [Thread-120929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:20.902 [DEBUG] [Thread-120929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:20.904 [DEBUG] [Thread-120929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:20.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:20.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:43:20.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:43:20.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:43:20.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:20.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:43:20.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:20.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321267 -999.00  +15.30  10.06     52   +5.70 1 1 1 1 1   888    0 10.71 46.81 ----- 7.8 10.1 194.5 11.9 23.6 -27.3 21.9 -26.2 20.4 -25.5 21.6 -26.4
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321267
2025-09-28T09:43:20.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:43:20.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:43:20.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:43:20.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:43:20.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:43:20.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:42:50', tmtdew=10.4, humidity=49.51, cloud=0.0, wind=12.14, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:43:20.930 [DEBUG] [Thread-120929] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:21.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-28T09:43:21.039 [DEBUG] [Thread-120932] [transport.py] [_log()] starting thread (client mode): 0x2b944880
2025-09-28T09:43:21.039 [DEBUG] [Thread-120932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:21.084 [DEBUG] [Thread-120932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:43:21.085 [INFO] [Thread-120932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:43:21.127 [DEBUG] [Thread-120932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:21.127 [DEBUG] [Thread-120932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:43:21.127 [DEBUG] [Thread-120932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:21.127 [DEBUG] [Thread-120932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:21.127 [DEBUG] [Thread-120932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] Compression: none
2025-09-28T09:43:21.128 [DEBUG] [Thread-120932] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:21.219 [DEBUG] [Thread-120932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:21.220 [DEBUG] [Thread-120932] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:21.220 [DEBUG] [Thread-120932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:43:21.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:43:21.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:21.349 [DEBUG] [Thread-120932] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:21.350 [DEBUG] [Thread-120932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:21.350 [DEBUG] [Thread-120932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:21.350 [DEBUG] [Thread-120932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:43:21.350 [DEBUG] [Thread-120932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:21.404 [INFO] [Thread-120932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:21.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-28T09:43:21.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:22.373 [DEBUG] [Thread-120932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:22.374 [DEBUG] [Thread-120932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:22.456 [DEBUG] [Thread-120932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:22.457 [DEBUG] [Thread-120932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:22.501 [DEBUG] [Thread-120932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:22.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:22.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-28T09:43:22.583 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:22.584 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:22.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') -> 00000000
2025-09-28T09:43:22.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:22.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:22.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:22.677 [DEBUG] [Thread-120932] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:29.478 [DEBUG] [Thread-120934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:32.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:43:32.643 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:43:32.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-28T09:43:33.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 43, 22), 10.35, 49.75, 0.0, 14.26, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:43:33.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:43:22
2025-09-28T09:43:33.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:43:33.477 [DEBUG] [Thread-120935] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ba0
2025-09-28T09:43:33.477 [DEBUG] [Thread-120935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:33.496 [DEBUG] [Thread-120935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:43:33.496 [INFO] [Thread-120935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:43:33.499 [DEBUG] [Thread-120935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:33.499 [DEBUG] [Thread-120935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:43:33.499 [DEBUG] [Thread-120935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:33.500 [DEBUG] [Thread-120935] [transport.py] [_log()] Compression: none
2025-09-28T09:43:33.501 [DEBUG] [Thread-120935] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:33.512 [DEBUG] [Thread-120935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:33.513 [DEBUG] [Thread-120935] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:33.514 [DEBUG] [Thread-120935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:43:33.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:43:33.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:33.516 [DEBUG] [Thread-120935] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:33.516 [DEBUG] [Thread-120935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:33.517 [DEBUG] [Thread-120935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:33.517 [DEBUG] [Thread-120935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:43:33.517 [DEBUG] [Thread-120935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:33.537 [INFO] [Thread-120935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:33.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:34.135 [DEBUG] [Thread-120935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:34.135 [DEBUG] [Thread-120935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:34.135 [DEBUG] [Thread-120935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:43:34.176 [DEBUG] [Thread-120935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:34.176 [DEBUG] [Thread-120935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:34.179 [DEBUG] [Thread-120935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:34.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:34.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:43:34.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:43:34.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:43:34.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:34.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:43:34.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321267 -999.00  +15.30  10.06     52   +5.70 1 1 1 1 1   888    0 10.71 46.81 ----- 7.8 10.1 194.5 11.9 23.6 -27.3 21.9 -26.2 20.4 -25.5 21.6 -26.4
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:43:34.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321267
2025-09-28T09:43:34.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:43:34.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:43:34.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:43:34.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:43:34.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:43:34.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:43:22', tmtdew=10.35, humidity=49.75, cloud=0.0, wind=14.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:42:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:43:34.212 [DEBUG] [Thread-120935] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:34.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:43:34.339 [DEBUG] [Thread-120938] [transport.py] [_log()] starting thread (client mode): 0x2e360880
2025-09-28T09:43:34.339 [DEBUG] [Thread-120938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:34.386 [DEBUG] [Thread-120938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:43:34.386 [INFO] [Thread-120938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:43:34.423 [DEBUG] [Thread-120938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:34.424 [DEBUG] [Thread-120938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:34.425 [DEBUG] [Thread-120938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:34.425 [DEBUG] [Thread-120938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:34.425 [DEBUG] [Thread-120938] [transport.py] [_log()] Compression: none
2025-09-28T09:43:34.425 [DEBUG] [Thread-120938] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:34.514 [DEBUG] [Thread-120938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:34.514 [DEBUG] [Thread-120938] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:34.515 [DEBUG] [Thread-120938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:43:34.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:43:34.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:34.629 [DEBUG] [Thread-120938] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:34.629 [DEBUG] [Thread-120938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:34.629 [DEBUG] [Thread-120938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:34.629 [DEBUG] [Thread-120938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:43:34.629 [DEBUG] [Thread-120938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:34.676 [INFO] [Thread-120938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:34.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-28T09:43:34.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:35.649 [DEBUG] [Thread-120938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:35.649 [DEBUG] [Thread-120938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:35.728 [DEBUG] [Thread-120938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:35.728 [DEBUG] [Thread-120938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:35.767 [DEBUG] [Thread-120938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:35.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:35.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-28T09:43:35.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') -> 00000000
2025-09-28T09:43:35.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:35.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:35.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:35.919 [DEBUG] [Thread-120938] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:44.510 [DEBUG] [Thread-120940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:45.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:43:45.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:43:45.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-28T09:43:46.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 43, 22), 10.35, 49.75, 0.0, 14.26, 14.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:43:46.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:43:22
2025-09-28T09:43:46.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:43:46.729 [DEBUG] [Thread-120941] [transport.py] [_log()] starting thread (client mode): 0x30ddc7c0
2025-09-28T09:43:46.730 [DEBUG] [Thread-120941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:46.745 [DEBUG] [Thread-120941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:43:46.745 [INFO] [Thread-120941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:43:46.748 [DEBUG] [Thread-120941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:46.749 [DEBUG] [Thread-120941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:46.750 [DEBUG] [Thread-120941] [transport.py] [_log()] Compression: none
2025-09-28T09:43:46.750 [DEBUG] [Thread-120941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:46.765 [DEBUG] [Thread-120941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:46.766 [DEBUG] [Thread-120941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:46.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:43:46.767 [DEBUG] [Thread-120941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:43:46.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:46.769 [DEBUG] [Thread-120941] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:46.769 [DEBUG] [Thread-120941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:46.769 [DEBUG] [Thread-120941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:46.769 [DEBUG] [Thread-120941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:43:46.769 [DEBUG] [Thread-120941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:46.794 [INFO] [Thread-120941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:46.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:47.433 [DEBUG] [Thread-120941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:47.433 [DEBUG] [Thread-120941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:47.434 [DEBUG] [Thread-120941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:43:47.474 [DEBUG] [Thread-120941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:47.474 [DEBUG] [Thread-120941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:47.477 [DEBUG] [Thread-120941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:47.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43:47.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:43:47.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:43:47.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:43:47.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:47.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:43:47.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:47.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:43:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321614 -999.00  +15.40  13.72     52   +5.80 1 1 1 1 1   888    0 10.48 45.53 ----- 13.7 13.7 181.6 18.2 23.5 -28.4 22.1 -25.9 20.4 -26.3 21.6 -28.1
2025-09-28T09:43:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:43:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:43:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321614
2025-09-28T09:43:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:43:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:43:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:43:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:43:47.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:43:47.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:43:22', tmtdew=10.35, humidity=49.75, cloud=0.0, wind=14.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:43:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:43:47.502 [DEBUG] [Thread-120941] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:47.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-28T09:43:47.599 [DEBUG] [Thread-120944] [transport.py] [_log()] starting thread (client mode): 0x30dddc60
2025-09-28T09:43:47.599 [DEBUG] [Thread-120944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:47.614 [DEBUG] [Thread-120944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:43:47.615 [INFO] [Thread-120944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:47.622 [DEBUG] [Thread-120944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] Compression: none
2025-09-28T09:43:47.623 [DEBUG] [Thread-120944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:47.686 [DEBUG] [Thread-120944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:47.687 [DEBUG] [Thread-120944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:47.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:43:47.688 [DEBUG] [Thread-120944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:43:47.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:47.745 [DEBUG] [Thread-120944] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:47.745 [DEBUG] [Thread-120944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:47.745 [DEBUG] [Thread-120944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:47.745 [DEBUG] [Thread-120944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:43:47.746 [DEBUG] [Thread-120944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:47.765 [INFO] [Thread-120944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:47.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-28T09:43:47.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:43:48.789 [DEBUG] [Thread-120944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:43:48.789 [DEBUG] [Thread-120944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:43:48.837 [DEBUG] [Thread-120944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:43:48.837 [DEBUG] [Thread-120944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:43:48.846 [DEBUG] [Thread-120944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:43:48.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:43: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-28T09:43: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-28T09:43:48.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:43:48.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:43:48.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:43:48.881 [DEBUG] [Thread-120944] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:43:58.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:43:58.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:43:58.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-28T09:43:59.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 43, 54), 10.37, 49.55, 0.0, 13.16, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:43:59.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:43:54
2025-09-28T09:43:59.551 [DEBUG] [Thread-120946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:43:59.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:43:59.719 [DEBUG] [Thread-120947] [transport.py] [_log()] starting thread (client mode): 0x30ddde40
2025-09-28T09:43:59.719 [DEBUG] [Thread-120947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:43:59.739 [DEBUG] [Thread-120947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:43:59.739 [INFO] [Thread-120947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:43:59.742 [DEBUG] [Thread-120947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] client lang: <none>
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] server lang: <none>
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] kex follows: False
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:43:59.743 [DEBUG] [Thread-120947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:43:59.744 [DEBUG] [Thread-120947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:43:59.744 [DEBUG] [Thread-120947] [transport.py] [_log()] Compression: none
2025-09-28T09:43:59.744 [DEBUG] [Thread-120947] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:43:59.761 [DEBUG] [Thread-120947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:43:59.762 [DEBUG] [Thread-120947] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:43:59.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:43:59.763 [DEBUG] [Thread-120947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:43:59.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:43:59.804 [DEBUG] [Thread-120947] [transport.py] [_log()] userauth is OK
2025-09-28T09:43:59.805 [DEBUG] [Thread-120947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:43:59.805 [DEBUG] [Thread-120947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:43:59.805 [DEBUG] [Thread-120947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:43:59.805 [DEBUG] [Thread-120947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:43:59.837 [INFO] [Thread-120947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:43:59.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:00.473 [DEBUG] [Thread-120947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:00.474 [DEBUG] [Thread-120947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:00.474 [DEBUG] [Thread-120947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:44:00.514 [DEBUG] [Thread-120947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:00.514 [DEBUG] [Thread-120947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:00.517 [DEBUG] [Thread-120947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:00.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:00.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:44:00.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:44:00.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:44:00.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:00.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:44:00.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:00.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:00.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:44:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321614 -999.00  +15.40  13.72     52   +5.80 1 1 1 1 1   888    0 10.48 45.53 ----- 13.7 13.7 181.6 18.2 23.5 -28.4 22.1 -25.9 20.4 -26.3 21.6 -28.1
2025-09-28T09:44:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:44:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:44:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321614
2025-09-28T09:44:00.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:44:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:44:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:44:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:44:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:44:00.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:43:54', tmtdew=10.37, humidity=49.55, cloud=0.0, wind=13.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:43:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:44:00.539 [DEBUG] [Thread-120947] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:00.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-28T09:44:00.623 [DEBUG] [Thread-120950] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-28T09:44:00.623 [DEBUG] [Thread-120950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:00.627 [DEBUG] [Thread-120951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:00.638 [DEBUG] [Thread-120950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:44:00.638 [INFO] [Thread-120950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] Compression: none
2025-09-28T09:44:00.646 [DEBUG] [Thread-120950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:00.703 [DEBUG] [Thread-120950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:00.703 [DEBUG] [Thread-120950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:00.704 [DEBUG] [Thread-120950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:44:00.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:44:00.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:00.760 [DEBUG] [Thread-120950] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:00.760 [DEBUG] [Thread-120950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:00.760 [DEBUG] [Thread-120950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:00.760 [DEBUG] [Thread-120950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:44:00.760 [DEBUG] [Thread-120950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:00.775 [INFO] [Thread-120950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:00.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-28T09:44:00.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:01.741 [DEBUG] [Thread-120950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:01.741 [DEBUG] [Thread-120950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:01.789 [DEBUG] [Thread-120950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:01.789 [DEBUG] [Thread-120950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:01.797 [DEBUG] [Thread-120950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:01.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:01.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-28T09:44:01.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-28T09:44:01.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:01.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:01.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:01.828 [DEBUG] [Thread-120950] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:11.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:44:11.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:44:11.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-28T09:44:12.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 43, 54), 10.37, 49.55, 0.0, 13.16, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:44:12.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:43:54
2025-09-28T09:44:12.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:44:12.654 [DEBUG] [Thread-120953] [transport.py] [_log()] starting thread (client mode): 0x2e3c15a0
2025-09-28T09:44:12.654 [DEBUG] [Thread-120953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:12.674 [DEBUG] [Thread-120953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:44:12.675 [INFO] [Thread-120953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:44:12.678 [DEBUG] [Thread-120953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:12.678 [DEBUG] [Thread-120953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:44:12.678 [DEBUG] [Thread-120953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:12.678 [DEBUG] [Thread-120953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:12.678 [DEBUG] [Thread-120953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] Compression: none
2025-09-28T09:44:12.679 [DEBUG] [Thread-120953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:12.696 [DEBUG] [Thread-120953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:12.697 [DEBUG] [Thread-120953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:12.697 [DEBUG] [Thread-120953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:44:12.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:44:12.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:12.699 [DEBUG] [Thread-120953] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:12.699 [DEBUG] [Thread-120953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:12.699 [DEBUG] [Thread-120953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:12.700 [DEBUG] [Thread-120953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:44:12.700 [DEBUG] [Thread-120953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:12.724 [INFO] [Thread-120953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:12.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:13.372 [DEBUG] [Thread-120953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:13.372 [DEBUG] [Thread-120953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:13.372 [DEBUG] [Thread-120953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:44:13.413 [DEBUG] [Thread-120953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:13.414 [DEBUG] [Thread-120953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:13.416 [DEBUG] [Thread-120953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:13.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:13.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:44:13.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:44:13.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:44:13.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:13.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:44:13.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:13.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:13.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:44:13.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321962 -999.00  +15.20  11.66     53   +5.80 1 1 1 1 1   888    0 10.76 46.08 ----- 11.0 11.7 183.2 15.2 23.5 -27.9 21.6 -26.8 20.4 -26.3 21.6 -27.8
2025-09-28T09:44:13.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:44:13.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:44:13.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321962
2025-09-28T09:44:13.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:44:13.441 [DEBUG] [Thread-120953] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:44:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:44:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:44:13.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:44:13.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:43:54', tmtdew=10.37, humidity=49.55, cloud=0.0, wind=13.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:43:37.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:44:13.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-28T09:44:13.581 [DEBUG] [Thread-120956] [transport.py] [_log()] starting thread (client mode): 0x30ddcd00
2025-09-28T09:44:13.582 [DEBUG] [Thread-120956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:13.628 [DEBUG] [Thread-120956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:44:13.628 [INFO] [Thread-120956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:13.667 [DEBUG] [Thread-120956] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] Compression: none
2025-09-28T09:44:13.668 [DEBUG] [Thread-120956] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:13.759 [DEBUG] [Thread-120956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:13.760 [DEBUG] [Thread-120956] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:13.760 [DEBUG] [Thread-120956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:44:13.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:44:13.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:13.884 [DEBUG] [Thread-120956] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:13.885 [DEBUG] [Thread-120956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:13.885 [DEBUG] [Thread-120956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:13.885 [DEBUG] [Thread-120956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:44:13.885 [DEBUG] [Thread-120956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:13.936 [INFO] [Thread-120956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:13.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-28T09:44:13.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:14.588 [DEBUG] [Thread-120958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:14.937 [DEBUG] [Thread-120956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:14.937 [DEBUG] [Thread-120956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:15.018 [DEBUG] [Thread-120956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:15.018 [DEBUG] [Thread-120956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:15.058 [DEBUG] [Thread-120956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:15.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:15.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-28T09:44:15.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') -> 00000000
2025-09-28T09:44:15.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:15.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:15.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:15.177 [DEBUG] [Thread-120956] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:22.727 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:22.728 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:25.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:44:25.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:44:25.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-28T09:44:25.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 43, 54), 10.37, 49.55, 0.0, 13.16, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:44:25.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:43:54
2025-09-28T09:44:25.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:44:26.009 [DEBUG] [Thread-120959] [transport.py] [_log()] starting thread (client mode): 0x2e361030
2025-09-28T09:44:26.009 [DEBUG] [Thread-120959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:26.029 [DEBUG] [Thread-120959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:44:26.029 [INFO] [Thread-120959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:44:26.031 [DEBUG] [Thread-120959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:26.032 [DEBUG] [Thread-120959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:26.033 [DEBUG] [Thread-120959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:26.033 [DEBUG] [Thread-120959] [transport.py] [_log()] Compression: none
2025-09-28T09:44:26.033 [DEBUG] [Thread-120959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:26.047 [DEBUG] [Thread-120959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:26.047 [DEBUG] [Thread-120959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:26.048 [DEBUG] [Thread-120959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:44:26.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:44:26.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:26.050 [DEBUG] [Thread-120959] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:26.050 [DEBUG] [Thread-120959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:26.050 [DEBUG] [Thread-120959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:26.050 [DEBUG] [Thread-120959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:44:26.050 [DEBUG] [Thread-120959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:26.069 [INFO] [Thread-120959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:26.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:26.716 [DEBUG] [Thread-120959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:26.716 [DEBUG] [Thread-120959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:26.717 [DEBUG] [Thread-120959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:44:26.757 [DEBUG] [Thread-120959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:26.757 [DEBUG] [Thread-120959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:26.760 [DEBUG] [Thread-120959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:26.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:26.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:44:26.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:44:26.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:44:26.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:26.783 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:44:26.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321962 -999.00  +15.20  11.66     53   +5.80 1 1 1 1 1   888    0 10.76 46.08 ----- 11.0 11.7 183.2 15.2 23.5 -27.9 21.6 -26.8 20.4 -26.3 21.6 -27.8
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:44:26.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321962
2025-09-28T09:44:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:44:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:44:26.785 [DEBUG] [Thread-120959] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:44:26.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:44:26.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:44:26.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:43:54', tmtdew=10.37, humidity=49.55, cloud=0.0, wind=13.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:43:37.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:44:26.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-28T09:44:26.873 [DEBUG] [Thread-120962] [transport.py] [_log()] starting thread (client mode): 0x30dde830
2025-09-28T09:44:26.873 [DEBUG] [Thread-120962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:26.888 [DEBUG] [Thread-120962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:44:26.888 [INFO] [Thread-120962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] Compression: none
2025-09-28T09:44:26.896 [DEBUG] [Thread-120962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:26.955 [DEBUG] [Thread-120962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:26.955 [DEBUG] [Thread-120962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:26.955 [DEBUG] [Thread-120962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:44:26.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:44:26.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:27.012 [DEBUG] [Thread-120962] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:27.012 [DEBUG] [Thread-120962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:27.012 [DEBUG] [Thread-120962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:27.012 [DEBUG] [Thread-120962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:44:27.012 [DEBUG] [Thread-120962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:27.026 [INFO] [Thread-120962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:27.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-28T09:44:27.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:28.006 [DEBUG] [Thread-120962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:28.007 [DEBUG] [Thread-120962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:28.055 [DEBUG] [Thread-120962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:28.055 [DEBUG] [Thread-120962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:28.063 [DEBUG] [Thread-120962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:28.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:28.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-28T09:44:28.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-28T09:44:28.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:28.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:28.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:28.094 [DEBUG] [Thread-120962] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:29.634 [DEBUG] [Thread-120964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:38.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:44:38.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:44:38.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-28T09:44:38.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 44, 26), 10.46, 49.23, 0.0, 14.2, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:44:38.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:44:26
2025-09-28T09:44:38.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:44:38.934 [DEBUG] [Thread-120965] [transport.py] [_log()] starting thread (client mode): 0x30ddec80
2025-09-28T09:44:38.934 [DEBUG] [Thread-120965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:38.954 [DEBUG] [Thread-120965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:44:38.954 [INFO] [Thread-120965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:44:38.956 [DEBUG] [Thread-120965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:38.956 [DEBUG] [Thread-120965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:44:38.956 [DEBUG] [Thread-120965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:38.956 [DEBUG] [Thread-120965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] Compression: none
2025-09-28T09:44:38.957 [DEBUG] [Thread-120965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:38.965 [DEBUG] [Thread-120965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:38.965 [DEBUG] [Thread-120965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:38.966 [DEBUG] [Thread-120965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:44:38.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:44:38.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:38.967 [DEBUG] [Thread-120965] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:38.967 [DEBUG] [Thread-120965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:38.967 [DEBUG] [Thread-120965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:38.967 [DEBUG] [Thread-120965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:44:38.968 [DEBUG] [Thread-120965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:38.991 [INFO] [Thread-120965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:38.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:39.593 [DEBUG] [Thread-120965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:39.593 [DEBUG] [Thread-120965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:39.593 [DEBUG] [Thread-120965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:44:39.634 [DEBUG] [Thread-120965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:39.634 [DEBUG] [Thread-120965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:39.636 [DEBUG] [Thread-120965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:39.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:39.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:44:39.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:44:39.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:44:39.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:39.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:44:39.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.321962 -999.00  +15.20  11.66     53   +5.80 1 1 1 1 1   888    0 10.76 46.08 ----- 11.0 11.7 183.2 15.2 23.5 -27.9 21.6 -26.8 20.4 -26.3 21.6 -27.8
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.321962
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:44:39.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:44:26', tmtdew=10.46, humidity=49.23, cloud=0.0, wind=14.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:43:37.517', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:44:39.655 [DEBUG] [Thread-120965] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:39.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:44:39.742 [DEBUG] [Thread-120968] [transport.py] [_log()] starting thread (client mode): 0x2e3dd840
2025-09-28T09:44:39.742 [DEBUG] [Thread-120968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:39.756 [DEBUG] [Thread-120968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:44:39.756 [INFO] [Thread-120968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] Compression: none
2025-09-28T09:44:39.764 [DEBUG] [Thread-120968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:39.819 [DEBUG] [Thread-120968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:39.819 [DEBUG] [Thread-120968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:39.819 [DEBUG] [Thread-120968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:44:39.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:44:39.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:39.876 [DEBUG] [Thread-120968] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:39.876 [DEBUG] [Thread-120968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:39.876 [DEBUG] [Thread-120968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:39.876 [DEBUG] [Thread-120968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:44:39.876 [DEBUG] [Thread-120968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:39.890 [INFO] [Thread-120968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:39.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-28T09:44:39.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:40.893 [DEBUG] [Thread-120968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:40.893 [DEBUG] [Thread-120968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:40.941 [DEBUG] [Thread-120968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:40.941 [DEBUG] [Thread-120968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:40.949 [DEBUG] [Thread-120968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:40.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:40.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-28T09:44:40.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-28T09:44:40.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:40.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:40.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:40.982 [DEBUG] [Thread-120968] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:44.664 [DEBUG] [Thread-120970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:44:50.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:44:50.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:44:50.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:44:51.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 44, 26), 10.46, 49.23, 0.0, 14.2, 14.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:44:51.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:44:26
2025-09-28T09:44:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:44:51.791 [DEBUG] [Thread-120971] [transport.py] [_log()] starting thread (client mode): 0x2e362770
2025-09-28T09:44:51.792 [DEBUG] [Thread-120971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:51.806 [DEBUG] [Thread-120971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:44:51.806 [INFO] [Thread-120971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:44:51.809 [DEBUG] [Thread-120971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:51.809 [DEBUG] [Thread-120971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:44:51.809 [DEBUG] [Thread-120971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:51.809 [DEBUG] [Thread-120971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:51.809 [DEBUG] [Thread-120971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] Compression: none
2025-09-28T09:44:51.810 [DEBUG] [Thread-120971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:51.818 [DEBUG] [Thread-120971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:51.818 [DEBUG] [Thread-120971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:51.819 [DEBUG] [Thread-120971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:44:51.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:44:51.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:51.820 [DEBUG] [Thread-120971] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:51.820 [DEBUG] [Thread-120971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:51.820 [DEBUG] [Thread-120971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:51.820 [DEBUG] [Thread-120971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:44:51.820 [DEBUG] [Thread-120971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:51.839 [INFO] [Thread-120971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:51.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:52.393 [DEBUG] [Thread-120971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:52.393 [DEBUG] [Thread-120971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:52.393 [DEBUG] [Thread-120971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:44:52.434 [DEBUG] [Thread-120971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:52.434 [DEBUG] [Thread-120971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:52.437 [DEBUG] [Thread-120971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:52.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:52.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:44:52.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:44:52.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:44:52.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:52.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:44:52.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:52.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.322656 -999.00  +15.20   5.41     52   +5.50 1 1 1 1 1   888    0 10.70 46.88 ----- 6.8 5.4 218.4 13.5 23.4 -27.3 21.8 -25.7 20.5 -25.8 21.7 -26.9
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.322656
2025-09-28T09:44:52.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:44:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:44:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:44:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:44:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:44:52.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:44:26', tmtdew=10.46, humidity=49.23, cloud=0.0, wind=14.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:44:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:44:52.462 [DEBUG] [Thread-120971] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:52.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-28T09:44:52.560 [DEBUG] [Thread-120974] [transport.py] [_log()] starting thread (client mode): 0x30dddea0
2025-09-28T09:44:52.560 [DEBUG] [Thread-120974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:44:52.574 [DEBUG] [Thread-120974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:44:52.575 [INFO] [Thread-120974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:52.582 [DEBUG] [Thread-120974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] client lang: <none>
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] server lang: <none>
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] kex follows: False
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:44:52.583 [DEBUG] [Thread-120974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:44:52.584 [DEBUG] [Thread-120974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:44:52.584 [DEBUG] [Thread-120974] [transport.py] [_log()] Compression: none
2025-09-28T09:44:52.584 [DEBUG] [Thread-120974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:44:52.642 [DEBUG] [Thread-120974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:44:52.642 [DEBUG] [Thread-120974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:44:52.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:44:52.644 [DEBUG] [Thread-120974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:44:52.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:44:52.700 [DEBUG] [Thread-120974] [transport.py] [_log()] userauth is OK
2025-09-28T09:44:52.701 [DEBUG] [Thread-120974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:44:52.701 [DEBUG] [Thread-120974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:44:52.701 [DEBUG] [Thread-120974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:44:52.701 [DEBUG] [Thread-120974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:44:52.728 [INFO] [Thread-120974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:44:52.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:44:52.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:44:53.697 [DEBUG] [Thread-120974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:44:53.697 [DEBUG] [Thread-120974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:44:53.745 [DEBUG] [Thread-120974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:44:53.745 [DEBUG] [Thread-120974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:44:53.754 [DEBUG] [Thread-120974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:44:53.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:44:53.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-28T09:44:53.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-28T09:44:53.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:44:53.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:44:53.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:44:53.789 [DEBUG] [Thread-120974] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:44:59.706 [DEBUG] [Thread-120976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:00.681 [DEBUG] [Thread-120977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:03.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:45:03.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:45:03.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-28T09:45:04.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 44, 58), 10.57, 49.2, 0.0, 10.69, 14.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:45:04.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:44:58
2025-09-28T09:45:04.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:45:04.630 [DEBUG] [Thread-120978] [transport.py] [_log()] starting thread (client mode): 0x2b9cdd20
2025-09-28T09:45:04.631 [DEBUG] [Thread-120978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:04.651 [DEBUG] [Thread-120978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:45:04.652 [INFO] [Thread-120978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:04.653 [DEBUG] [Thread-120978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] Compression: none
2025-09-28T09:45:04.654 [DEBUG] [Thread-120978] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:04.664 [DEBUG] [Thread-120978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:04.665 [DEBUG] [Thread-120978] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:04.666 [DEBUG] [Thread-120978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:45:04.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:45:04.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:04.668 [DEBUG] [Thread-120978] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:04.668 [DEBUG] [Thread-120978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:04.669 [DEBUG] [Thread-120978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:04.669 [DEBUG] [Thread-120978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:45:04.669 [DEBUG] [Thread-120978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:04.705 [INFO] [Thread-120978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:04.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:14.739 [DEBUG] [Thread-120980 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:16.033 [DEBUG] [Thread-120978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:16.033 [DEBUG] [Thread-120978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:16.033 [DEBUG] [Thread-120978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:45:16.074 [DEBUG] [Thread-120978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:16.075 [DEBUG] [Thread-120978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:16.078 [DEBUG] [Thread-120978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:16.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:16.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:45:16.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:45:16.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:45:16.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:16.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:45:16.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:16.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:16.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.322656 -999.00  +15.20   5.41     52   +5.50 1 1 1 1 1   888    0 10.70 46.88 ----- 6.8 5.4 218.4 13.5 23.4 -27.3 21.8 -25.7 20.5 -25.8 21.7 -26.9
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.322656
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:45:16.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:44:58', tmtdew=10.57, humidity=49.2, cloud=0.0, wind=10.69, temperature=14.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:44:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:45:16.234 [DEBUG] [Thread-120978] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:16.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-28T09:45:16.354 [DEBUG] [Thread-120982] [transport.py] [_log()] starting thread (client mode): 0x2e38f400
2025-09-28T09:45:16.354 [DEBUG] [Thread-120982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:16.401 [DEBUG] [Thread-120982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:45:16.401 [INFO] [Thread-120982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:45:16.441 [DEBUG] [Thread-120982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:16.441 [DEBUG] [Thread-120982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:16.442 [DEBUG] [Thread-120982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:16.443 [DEBUG] [Thread-120982] [transport.py] [_log()] Compression: none
2025-09-28T09:45:16.443 [DEBUG] [Thread-120982] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:16.497 [DEBUG] [Thread-120982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:16.497 [DEBUG] [Thread-120982] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:16.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:45:16.498 [DEBUG] [Thread-120982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:45:16.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:16.624 [DEBUG] [Thread-120982] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:16.625 [DEBUG] [Thread-120982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:16.625 [DEBUG] [Thread-120982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:16.625 [DEBUG] [Thread-120982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:45:16.625 [DEBUG] [Thread-120982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:16.676 [INFO] [Thread-120982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:16.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-28T09:45:16.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:17.645 [DEBUG] [Thread-120982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:17.645 [DEBUG] [Thread-120982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:17.727 [DEBUG] [Thread-120982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:17.727 [DEBUG] [Thread-120982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:17.770 [DEBUG] [Thread-120982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:17.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:17.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-28T09:45:17.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-28T09:45:17.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:17.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:17.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:17.949 [DEBUG] [Thread-120982] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:22.866 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:22.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:27.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:45:27.914 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:45:27.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-28T09:45:28.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 44, 58), 10.57, 49.2, 0.0, 10.69, 14.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:45:28.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:44:58
2025-09-28T09:45:28.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:45:28.724 [DEBUG] [Thread-120984] [transport.py] [_log()] starting thread (client mode): 0x2e38db70
2025-09-28T09:45:28.724 [DEBUG] [Thread-120984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:28.744 [DEBUG] [Thread-120984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:45:28.744 [INFO] [Thread-120984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] Compression: none
2025-09-28T09:45:28.748 [DEBUG] [Thread-120984] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:28.764 [DEBUG] [Thread-120984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:28.764 [DEBUG] [Thread-120984] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:28.765 [DEBUG] [Thread-120984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:45:28.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:45:28.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:28.765 [DEBUG] [Thread-120984] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:28.766 [DEBUG] [Thread-120984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:28.766 [DEBUG] [Thread-120984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:28.766 [DEBUG] [Thread-120984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:45:28.766 [DEBUG] [Thread-120984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:28.778 [INFO] [Thread-120984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:28.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:29.399 [DEBUG] [Thread-120984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:29.399 [DEBUG] [Thread-120984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:29.399 [DEBUG] [Thread-120984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:45:29.440 [DEBUG] [Thread-120984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:29.440 [DEBUG] [Thread-120984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:29.443 [DEBUG] [Thread-120984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:29.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:29.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:45:29.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:45:29.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:45:29.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:29.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:45:29.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323003 -999.00  +15.30   4.99     52   +5.50 1 1 1 1 1   888    0 10.45 45.50 ----- 11.9 5.0 195.0 10.3 23.5 -27.8 21.7 -25.3 20.4 -26.1 21.7 -27.4
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:45:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323003
2025-09-28T09:45:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:45:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:45:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:45:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:45:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:45:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:44:58', tmtdew=10.57, humidity=49.2, cloud=0.0, wind=10.69, temperature=14.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:45:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:45:29.470 [DEBUG] [Thread-120984] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:29.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-28T09:45:29.563 [DEBUG] [Thread-120987] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-28T09:45:29.563 [DEBUG] [Thread-120987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:29.577 [DEBUG] [Thread-120987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:45:29.578 [INFO] [Thread-120987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:45:29.585 [DEBUG] [Thread-120987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:29.585 [DEBUG] [Thread-120987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] Compression: none
2025-09-28T09:45:29.586 [DEBUG] [Thread-120987] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:29.644 [DEBUG] [Thread-120987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:29.644 [DEBUG] [Thread-120987] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:29.645 [DEBUG] [Thread-120987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:45:29.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:45:29.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:29.700 [DEBUG] [Thread-120987] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:29.700 [DEBUG] [Thread-120987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:29.700 [DEBUG] [Thread-120987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:29.700 [DEBUG] [Thread-120987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:45:29.700 [DEBUG] [Thread-120987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:29.719 [INFO] [Thread-120987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:29.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-28T09:45:29.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:29.767 [DEBUG] [Thread-120989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:30.707 [DEBUG] [Thread-120987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:30.707 [DEBUG] [Thread-120987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:30.756 [DEBUG] [Thread-120987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:30.756 [DEBUG] [Thread-120987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:30.764 [DEBUG] [Thread-120987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:30.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:30.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')
2025-09-28T09:45:30.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-28T09:45:30.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:30.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:30.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:30.796 [DEBUG] [Thread-120987] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:40.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:45:40.795 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:45:40.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-28T09:45:41.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 45, 30), 10.58, 49.15, 0.0, 8.17, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:45:41.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:45:30
2025-09-28T09:45:41.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:45:41.628 [DEBUG] [Thread-120990] [transport.py] [_log()] starting thread (client mode): 0x2e3dd840
2025-09-28T09:45:41.629 [DEBUG] [Thread-120990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:41.639 [DEBUG] [Thread-120990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:45:41.639 [INFO] [Thread-120990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] Compression: none
2025-09-28T09:45:41.640 [DEBUG] [Thread-120990] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:41.648 [DEBUG] [Thread-120990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:41.648 [DEBUG] [Thread-120990] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:41.648 [DEBUG] [Thread-120990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:45:41.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:45:41.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:41.649 [DEBUG] [Thread-120990] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:41.649 [DEBUG] [Thread-120990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:41.649 [DEBUG] [Thread-120990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:41.649 [DEBUG] [Thread-120990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:45:41.649 [DEBUG] [Thread-120990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:41.687 [INFO] [Thread-120990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:41.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:42.319 [DEBUG] [Thread-120990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:42.319 [DEBUG] [Thread-120990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:42.319 [DEBUG] [Thread-120990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:45:42.360 [DEBUG] [Thread-120990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:42.360 [DEBUG] [Thread-120990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:42.363 [DEBUG] [Thread-120990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:42.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:42.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:45:42.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:45:42.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:45:42.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:42.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:45:42.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:42.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323003 -999.00  +15.30   4.99     52   +5.50 1 1 1 1 1   888    0 10.45 45.50 ----- 11.9 5.0 195.0 10.3 23.5 -27.8 21.7 -25.3 20.4 -26.1 21.7 -27.4
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323003
2025-09-28T09:45:42.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:45:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:45:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:45:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:45:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:45:42.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:45:30', tmtdew=10.58, humidity=49.15, cloud=0.0, wind=8.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:45:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:45:42.389 [DEBUG] [Thread-120990] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:42.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-28T09:45:42.519 [DEBUG] [Thread-120993] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a30
2025-09-28T09:45:42.520 [DEBUG] [Thread-120993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:42.569 [DEBUG] [Thread-120993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:45:42.569 [INFO] [Thread-120993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:42.608 [DEBUG] [Thread-120993] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] Compression: none
2025-09-28T09:45:42.609 [DEBUG] [Thread-120993] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:42.701 [DEBUG] [Thread-120993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:42.701 [DEBUG] [Thread-120993] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:42.702 [DEBUG] [Thread-120993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:45:42.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:45:42.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:42.826 [DEBUG] [Thread-120993] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:42.826 [DEBUG] [Thread-120993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:42.826 [DEBUG] [Thread-120993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:42.826 [DEBUG] [Thread-120993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:45:42.826 [DEBUG] [Thread-120993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:42.876 [INFO] [Thread-120993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:42.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-28T09:45:42.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:43.922 [DEBUG] [Thread-120993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:43.922 [DEBUG] [Thread-120993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:43.983 [DEBUG] [Thread-120993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:43.983 [DEBUG] [Thread-120993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:44.023 [DEBUG] [Thread-120993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:44.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:44.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-28T09:45:44.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-28T09:45:44.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:44.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:44.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:44.192 [DEBUG] [Thread-120993] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:44.811 [DEBUG] [Thread-120995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:45:54.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:45:54.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:45:54.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-28T09:45:54.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 45, 30), 10.58, 49.15, 0.0, 8.17, 14.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:45:54.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:45:30
2025-09-28T09:45:54.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:45:55.013 [DEBUG] [Thread-120996] [transport.py] [_log()] starting thread (client mode): 0x2e3df0a0
2025-09-28T09:45:55.014 [DEBUG] [Thread-120996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:55.034 [DEBUG] [Thread-120996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:45:55.034 [INFO] [Thread-120996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] Compression: none
2025-09-28T09:45:55.037 [DEBUG] [Thread-120996] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:55.053 [DEBUG] [Thread-120996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:55.054 [DEBUG] [Thread-120996] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:55.054 [DEBUG] [Thread-120996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:45:55.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:45:55.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:55.055 [DEBUG] [Thread-120996] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:55.055 [DEBUG] [Thread-120996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:55.055 [DEBUG] [Thread-120996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:55.055 [DEBUG] [Thread-120996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:45:55.055 [DEBUG] [Thread-120996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:55.068 [INFO] [Thread-120996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:55.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:55.699 [DEBUG] [Thread-120996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:55.700 [DEBUG] [Thread-120996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:55.700 [DEBUG] [Thread-120996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:45:55.741 [DEBUG] [Thread-120996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:55.741 [DEBUG] [Thread-120996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:55.743 [DEBUG] [Thread-120996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:55.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:55.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:45:55.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:45:55.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:45:55.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:55.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:45:55.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323350 -999.00  +15.30   5.66     52   +5.50 1 1 1 1 1   888    0 10.93 49.02 ----- 7.4 5.7 168.9 10.4 23.5 -27.8 21.8 -25.2 20.5 -26.1 21.8 -27.2
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:45:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323350
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:45:55.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:45:30', tmtdew=10.58, humidity=49.15, cloud=0.0, wind=8.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:45:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:45:55.764 [DEBUG] [Thread-120996] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:55.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-28T09:45:55.879 [DEBUG] [Thread-120999] [transport.py] [_log()] starting thread (client mode): 0x2e3602b0
2025-09-28T09:45:55.879 [DEBUG] [Thread-120999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:45:55.925 [DEBUG] [Thread-120999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:45:55.926 [INFO] [Thread-120999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] client lang: <none>
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] server lang: <none>
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] kex follows: False
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:45:55.964 [DEBUG] [Thread-120999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:45:55.965 [DEBUG] [Thread-120999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:45:55.965 [DEBUG] [Thread-120999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:45:55.965 [DEBUG] [Thread-120999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:45:55.965 [DEBUG] [Thread-120999] [transport.py] [_log()] Compression: none
2025-09-28T09:45:55.965 [DEBUG] [Thread-120999] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:45:56.053 [DEBUG] [Thread-120999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:45:56.053 [DEBUG] [Thread-120999] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:45:56.053 [DEBUG] [Thread-120999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:45:56.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:45:56.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:45:56.175 [DEBUG] [Thread-120999] [transport.py] [_log()] userauth is OK
2025-09-28T09:45:56.175 [DEBUG] [Thread-120999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:45:56.175 [DEBUG] [Thread-120999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:45:56.175 [DEBUG] [Thread-120999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:45:56.175 [DEBUG] [Thread-120999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:45:56.220 [INFO] [Thread-120999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:45:56.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-28T09:45:56.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:45:57.158 [DEBUG] [Thread-120999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:45:57.158 [DEBUG] [Thread-120999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:45:57.237 [DEBUG] [Thread-120999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:45:57.237 [DEBUG] [Thread-120999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:45:57.276 [DEBUG] [Thread-120999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:45:57.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:45:57.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-28T09:45:57.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-28T09:45:57.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:45:57.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:45:57.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:45:57.432 [DEBUG] [Thread-120999] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:45:59.863 [DEBUG] [Thread-121001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:00.731 [DEBUG] [Thread-121002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:07.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:46:07.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:46:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:46:07.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 46, 2), 10.59, 49.1, 0.0, 8.52, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:46:07.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:46:02
2025-09-28T09:46:08.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:46:08.245 [DEBUG] [Thread-121003] [transport.py] [_log()] starting thread (client mode): 0x2e38e530
2025-09-28T09:46:08.245 [DEBUG] [Thread-121003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:08.272 [DEBUG] [Thread-121003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:46:08.272 [INFO] [Thread-121003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:46:08.274 [DEBUG] [Thread-121003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:08.274 [DEBUG] [Thread-121003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:08.275 [DEBUG] [Thread-121003] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] Compression: none
2025-09-28T09:46:08.276 [DEBUG] [Thread-121003] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:08.288 [DEBUG] [Thread-121003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:08.289 [DEBUG] [Thread-121003] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:08.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:46:08.290 [DEBUG] [Thread-121003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:46:08.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:08.292 [DEBUG] [Thread-121003] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:08.293 [DEBUG] [Thread-121003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:08.293 [DEBUG] [Thread-121003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:08.293 [DEBUG] [Thread-121003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:46:08.293 [DEBUG] [Thread-121003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:08.317 [INFO] [Thread-121003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:08.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:08.964 [DEBUG] [Thread-121003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:08.964 [DEBUG] [Thread-121003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:08.965 [DEBUG] [Thread-121003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:46:09.005 [DEBUG] [Thread-121003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:09.005 [DEBUG] [Thread-121003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:09.008 [DEBUG] [Thread-121003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:09.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:09.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:46:09.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:46:09.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:46:09.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:09.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:46:09.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:09.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:46:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323350 -999.00  +15.30   5.66     52   +5.50 1 1 1 1 1   888    0 10.93 49.02 ----- 7.4 5.7 168.9 10.4 23.5 -27.8 21.8 -25.2 20.5 -26.1 21.8 -27.2
2025-09-28T09:46:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:46:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:46:09.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323350
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:46:09.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:46:02', tmtdew=10.59, humidity=49.1, cloud=0.0, wind=8.52, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:45:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:46:09.035 [DEBUG] [Thread-121003] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:09.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:46:09.129 [DEBUG] [Thread-121006] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-28T09:46:09.129 [DEBUG] [Thread-121006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:09.144 [DEBUG] [Thread-121006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:46:09.144 [INFO] [Thread-121006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:46:09.151 [DEBUG] [Thread-121006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:09.152 [DEBUG] [Thread-121006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:09.153 [DEBUG] [Thread-121006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:09.154 [DEBUG] [Thread-121006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:09.154 [DEBUG] [Thread-121006] [transport.py] [_log()] Compression: none
2025-09-28T09:46:09.154 [DEBUG] [Thread-121006] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:09.211 [DEBUG] [Thread-121006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:09.212 [DEBUG] [Thread-121006] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:09.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:46:09.213 [DEBUG] [Thread-121006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:46:09.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:09.267 [DEBUG] [Thread-121006] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:09.268 [DEBUG] [Thread-121006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:09.268 [DEBUG] [Thread-121006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:09.268 [DEBUG] [Thread-121006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:46:09.268 [DEBUG] [Thread-121006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:09.287 [INFO] [Thread-121006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:09.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-28T09:46:09.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:10.246 [DEBUG] [Thread-121006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:10.246 [DEBUG] [Thread-121006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:10.293 [DEBUG] [Thread-121006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:10.293 [DEBUG] [Thread-121006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:10.302 [DEBUG] [Thread-121006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:10.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:10.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-28T09:46:10.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-28T09:46:10.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:10.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:10.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:10.338 [DEBUG] [Thread-121006] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:14.907 [DEBUG] [Thread-121008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:20.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:46:20.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:46:20.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-28T09:46:20.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 46, 2), 10.59, 49.1, 0.0, 8.52, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:46:20.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:46:02
2025-09-28T09:46:21.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:46:21.165 [DEBUG] [Thread-121009] [transport.py] [_log()] starting thread (client mode): 0x2b9dfdf0
2025-09-28T09:46:21.166 [DEBUG] [Thread-121009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:21.186 [DEBUG] [Thread-121009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:46:21.186 [INFO] [Thread-121009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:21.189 [DEBUG] [Thread-121009] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] Compression: none
2025-09-28T09:46:21.190 [DEBUG] [Thread-121009] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:21.203 [DEBUG] [Thread-121009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:21.204 [DEBUG] [Thread-121009] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:21.204 [DEBUG] [Thread-121009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:46:21.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:46:21.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:21.207 [DEBUG] [Thread-121009] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:21.207 [DEBUG] [Thread-121009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:21.207 [DEBUG] [Thread-121009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:21.207 [DEBUG] [Thread-121009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:46:21.207 [DEBUG] [Thread-121009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:21.242 [INFO] [Thread-121009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:21.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:21.864 [DEBUG] [Thread-121009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:21.865 [DEBUG] [Thread-121009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:21.865 [DEBUG] [Thread-121009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:46:21.905 [DEBUG] [Thread-121009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:21.906 [DEBUG] [Thread-121009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:21.909 [DEBUG] [Thread-121009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:21.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:21.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:46:21.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:46:21.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:46:21.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:21.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:46:21.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:21.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:46:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323350 -999.00  +15.30   5.66     52   +5.50 1 1 1 1 1   888    0 10.93 49.02 ----- 7.4 5.7 168.9 10.4 23.5 -27.8 21.8 -25.2 20.5 -26.1 21.8 -27.2
2025-09-28T09:46:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:46:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:46:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323350
2025-09-28T09:46:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:46:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:46:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:46:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:46:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:46:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:46:02', tmtdew=10.59, humidity=49.1, cloud=0.0, wind=8.52, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:45:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:46:21.938 [DEBUG] [Thread-121009] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:22.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-28T09:46:22.065 [DEBUG] [Thread-121012] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T09:46:22.066 [DEBUG] [Thread-121012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:22.113 [DEBUG] [Thread-121012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:46:22.114 [INFO] [Thread-121012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:46:22.153 [DEBUG] [Thread-121012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:22.154 [DEBUG] [Thread-121012] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] Compression: none
2025-09-28T09:46:22.155 [DEBUG] [Thread-121012] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:22.242 [DEBUG] [Thread-121012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:22.242 [DEBUG] [Thread-121012] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:22.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:46:22.243 [DEBUG] [Thread-121012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:46:22.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:22.366 [DEBUG] [Thread-121012] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:22.366 [DEBUG] [Thread-121012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:22.366 [DEBUG] [Thread-121012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:22.366 [DEBUG] [Thread-121012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:46:22.366 [DEBUG] [Thread-121012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:22.413 [INFO] [Thread-121012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:22.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-28T09:46:22.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:23.010 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:23.011 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:23.368 [DEBUG] [Thread-121012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:23.368 [DEBUG] [Thread-121012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:23.450 [DEBUG] [Thread-121012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:23.450 [DEBUG] [Thread-121012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:23.493 [DEBUG] [Thread-121012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:23.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:23.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-28T09:46:23.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-28T09:46:23.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:23.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:23.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:23.664 [DEBUG] [Thread-121012] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:29.954 [DEBUG] [Thread-121014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:33.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:46:33.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:46:33.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-28T09:46:34.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 46, 2), 10.59, 49.1, 0.0, 8.52, 14.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:46:34.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:46:02
2025-09-28T09:46:34.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:46:34.501 [DEBUG] [Thread-121015] [transport.py] [_log()] starting thread (client mode): 0x2b96d0f0
2025-09-28T09:46:34.501 [DEBUG] [Thread-121015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:34.522 [DEBUG] [Thread-121015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:46:34.522 [INFO] [Thread-121015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] Compression: none
2025-09-28T09:46:34.525 [DEBUG] [Thread-121015] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:34.541 [DEBUG] [Thread-121015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:34.541 [DEBUG] [Thread-121015] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:34.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:46:34.541 [DEBUG] [Thread-121015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:46:34.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:34.542 [DEBUG] [Thread-121015] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:34.542 [DEBUG] [Thread-121015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:34.542 [DEBUG] [Thread-121015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:34.542 [DEBUG] [Thread-121015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:46:34.542 [DEBUG] [Thread-121015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:34.559 [INFO] [Thread-121015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:34.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:35.199 [DEBUG] [Thread-121015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:35.199 [DEBUG] [Thread-121015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:35.199 [DEBUG] [Thread-121015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:46:35.240 [DEBUG] [Thread-121015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:35.240 [DEBUG] [Thread-121015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:35.242 [DEBUG] [Thread-121015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:35.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:35.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:46:35.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:46:35.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:46:35.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:35.258 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:46:35.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323698 -999.00  +15.20   2.14     51   +5.20 1 1 1 1 1   888    0 11.02 55.04 ----- 1.1 2.1 183.9 7.3 23.7 -26.2 21.9 -25.8 20.6 -25.7 22.0 -25.7
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:46:35.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323698
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:46:35.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:46:02', tmtdew=10.59, humidity=49.1, cloud=0.0, wind=8.52, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:46:07.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:46:35.260 [DEBUG] [Thread-121015] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:35.334 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:46:35.372 [DEBUG] [Thread-121018] [transport.py] [_log()] starting thread (client mode): 0x2e38d9c0
2025-09-28T09:46:35.372 [DEBUG] [Thread-121018] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:35.414 [DEBUG] [Thread-121018] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:46:35.414 [INFO] [Thread-121018] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:35.449 [DEBUG] [Thread-121018] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] Compression: none
2025-09-28T09:46:35.450 [DEBUG] [Thread-121018] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:35.533 [DEBUG] [Thread-121018] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:35.533 [DEBUG] [Thread-121018] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:35.533 [DEBUG] [Thread-121018] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:46:35.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:46:35.534 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:35.646 [DEBUG] [Thread-121018] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:35.646 [DEBUG] [Thread-121018] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:35.646 [DEBUG] [Thread-121018] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:35.646 [DEBUG] [Thread-121018] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:46:35.646 [DEBUG] [Thread-121018] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:35.690 [INFO] [Thread-121018] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:35.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-28T09:46:35.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:36.702 [DEBUG] [Thread-121018] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:36.702 [DEBUG] [Thread-121018] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:36.778 [DEBUG] [Thread-121018] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:36.778 [DEBUG] [Thread-121018] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:36.814 [DEBUG] [Thread-121018] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:36.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:36.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-28T09:46:36.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-28T09:46:36.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:36.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:36.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:36.963 [DEBUG] [Thread-121018] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:44.984 [DEBUG] [Thread-121020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:46:46.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:46:46.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:46:46.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-28T09:46:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 46, 34), 11.01, 47.55, 0.0, 5.81, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:46:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:46:34
2025-09-28T09:46:47.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:46:47.778 [DEBUG] [Thread-121021] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ac0
2025-09-28T09:46:47.778 [DEBUG] [Thread-121021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:47.796 [DEBUG] [Thread-121021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:46:47.797 [INFO] [Thread-121021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:47.800 [DEBUG] [Thread-121021] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] Compression: none
2025-09-28T09:46:47.801 [DEBUG] [Thread-121021] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:47.809 [DEBUG] [Thread-121021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:47.809 [DEBUG] [Thread-121021] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:47.810 [DEBUG] [Thread-121021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:46:47.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:46:47.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:47.811 [DEBUG] [Thread-121021] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:47.811 [DEBUG] [Thread-121021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:47.811 [DEBUG] [Thread-121021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:47.811 [DEBUG] [Thread-121021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:46:47.811 [DEBUG] [Thread-121021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:47.829 [INFO] [Thread-121021] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:47.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:48.436 [DEBUG] [Thread-121021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:48.437 [DEBUG] [Thread-121021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:48.437 [DEBUG] [Thread-121021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:46:48.477 [DEBUG] [Thread-121021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:48.477 [DEBUG] [Thread-121021] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:48.481 [DEBUG] [Thread-121021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:48.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:48.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:46:48.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:46:48.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:46:48.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:48.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:46:48.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.323698 -999.00  +15.20   2.14     51   +5.20 1 1 1 1 1   888    0 11.02 55.04 ----- 1.1 2.1 183.9 7.3 23.7 -26.2 21.9 -25.8 20.6 -25.7 22.0 -25.7
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:46:48.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.323698
2025-09-28T09:46:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:46:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:46:48.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:46:48.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:46:48.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:46:48.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:46:34', tmtdew=11.01, humidity=47.55, cloud=0.0, wind=5.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:46:07.507', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:46:48.508 [DEBUG] [Thread-121021] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:46:48.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-28T09:46:48.639 [DEBUG] [Thread-121024] [transport.py] [_log()] starting thread (client mode): 0x2e3fa350
2025-09-28T09:46:48.639 [DEBUG] [Thread-121024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:46:48.681 [DEBUG] [Thread-121024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:46:48.681 [INFO] [Thread-121024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] client lang: <none>
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] server lang: <none>
2025-09-28T09:46:48.716 [DEBUG] [Thread-121024] [transport.py] [_log()] kex follows: False
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] Compression: none
2025-09-28T09:46:48.717 [DEBUG] [Thread-121024] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:46:48.806 [DEBUG] [Thread-121024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:46:48.806 [DEBUG] [Thread-121024] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:46:48.807 [DEBUG] [Thread-121024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:46:48.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:46:48.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:46:48.921 [DEBUG] [Thread-121024] [transport.py] [_log()] userauth is OK
2025-09-28T09:46:48.921 [DEBUG] [Thread-121024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:46:48.921 [DEBUG] [Thread-121024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:46:48.921 [DEBUG] [Thread-121024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:46:48.921 [DEBUG] [Thread-121024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:46:48.971 [INFO] [Thread-121024] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:46:48.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-28T09:46:48.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:46:49.929 [DEBUG] [Thread-121024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:46:49.929 [DEBUG] [Thread-121024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:46:50.011 [DEBUG] [Thread-121024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:46:50.011 [DEBUG] [Thread-121024] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:46:50.054 [DEBUG] [Thread-121024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:46:50.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:46:50.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-28T09:46:50.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-28T09:46:50.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:46:50.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:46:50.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:46:50.220 [DEBUG] [Thread-121024] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:00.034 [DEBUG] [Thread-121026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:00.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:47:00.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:47:00.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-28T09:47:00.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 46, 34), 11.01, 47.55, 0.0, 5.81, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:47:00.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:46:34
2025-09-28T09:47:00.779 [DEBUG] [Thread-121027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:00.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:47:01.013 [DEBUG] [Thread-121028] [transport.py] [_log()] starting thread (client mode): 0x2e3f9c90
2025-09-28T09:47:01.013 [DEBUG] [Thread-121028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:01.030 [DEBUG] [Thread-121028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:47:01.030 [INFO] [Thread-121028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:01.033 [DEBUG] [Thread-121028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:01.034 [DEBUG] [Thread-121028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:01.034 [DEBUG] [Thread-121028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:01.034 [DEBUG] [Thread-121028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:01.034 [DEBUG] [Thread-121028] [transport.py] [_log()] Compression: none
2025-09-28T09:47:01.034 [DEBUG] [Thread-121028] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:01.045 [DEBUG] [Thread-121028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:01.045 [DEBUG] [Thread-121028] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:01.045 [DEBUG] [Thread-121028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:47:01.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:47:01.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:01.047 [DEBUG] [Thread-121028] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:01.047 [DEBUG] [Thread-121028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:01.047 [DEBUG] [Thread-121028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:01.047 [DEBUG] [Thread-121028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:47:01.047 [DEBUG] [Thread-121028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:01.071 [INFO] [Thread-121028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:01.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:01.628 [DEBUG] [Thread-121028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:01.628 [DEBUG] [Thread-121028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:01.629 [DEBUG] [Thread-121028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:47:01.669 [DEBUG] [Thread-121028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:01.669 [DEBUG] [Thread-121028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:01.672 [DEBUG] [Thread-121028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:01.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:01.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:47:01.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:47:01.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:47:01.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:01.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:47:01.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:01.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:01.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:47:01.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324045 -999.00  +15.30   6.39     51   +5.20 1 1 1 1 1   888    0 10.99 60.02 ----- 6.3 6.4 204.4 6.8 23.7 -27.2 22.0 -29.7 20.8 -24.9 22.0 -26.4
2025-09-28T09:47:01.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:47:01.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:47:01.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324045
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:47:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:46:34', tmtdew=11.01, humidity=47.55, cloud=0.0, wind=5.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:46:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:47:01.701 [DEBUG] [Thread-121028] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:01.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:47:01.826 [DEBUG] [Thread-121031] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-28T09:47:01.827 [DEBUG] [Thread-121031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:01.870 [DEBUG] [Thread-121031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:47:01.870 [INFO] [Thread-121031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:01.907 [DEBUG] [Thread-121031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] Compression: none
2025-09-28T09:47:01.908 [DEBUG] [Thread-121031] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:01.993 [DEBUG] [Thread-121031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:01.994 [DEBUG] [Thread-121031] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:01.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:47:01.995 [DEBUG] [Thread-121031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:47:01.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:02.109 [DEBUG] [Thread-121031] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:02.109 [DEBUG] [Thread-121031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:02.109 [DEBUG] [Thread-121031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:02.109 [DEBUG] [Thread-121031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:47:02.109 [DEBUG] [Thread-121031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:02.152 [INFO] [Thread-121031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:02.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-28T09:47:02.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:03.123 [DEBUG] [Thread-121031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:03.123 [DEBUG] [Thread-121031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:03.200 [DEBUG] [Thread-121031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:03.200 [DEBUG] [Thread-121031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:03.238 [DEBUG] [Thread-121031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:03.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:03.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-28T09:47:03.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-28T09:47:03.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:03.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:03.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:03.391 [DEBUG] [Thread-121031] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:13.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:47:13.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:47:13.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-28T09:47:13.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 47, 6), 11.16, 47.11, 0.0, 8.26, 14.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:47:13.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:47:06
2025-09-28T09:47:14.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:47:14.226 [DEBUG] [Thread-121033] [transport.py] [_log()] starting thread (client mode): 0x2b94c550
2025-09-28T09:47:14.226 [DEBUG] [Thread-121033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:14.245 [DEBUG] [Thread-121033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:47:14.245 [INFO] [Thread-121033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] Compression: none
2025-09-28T09:47:14.249 [DEBUG] [Thread-121033] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:14.256 [DEBUG] [Thread-121033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:14.257 [DEBUG] [Thread-121033] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:14.257 [DEBUG] [Thread-121033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:47:14.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:47:14.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:14.258 [DEBUG] [Thread-121033] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:14.258 [DEBUG] [Thread-121033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:14.258 [DEBUG] [Thread-121033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:14.258 [DEBUG] [Thread-121033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:47:14.258 [DEBUG] [Thread-121033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:14.288 [INFO] [Thread-121033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:14.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:14.951 [DEBUG] [Thread-121033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:14.951 [DEBUG] [Thread-121033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:14.951 [DEBUG] [Thread-121033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:47:14.992 [DEBUG] [Thread-121033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:14.992 [DEBUG] [Thread-121033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:14.994 [DEBUG] [Thread-121033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:15.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:15.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:47:15.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:47:15.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:47:15.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:15.011 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:47:15.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324045 -999.00  +15.30   6.39     51   +5.20 1 1 1 1 1   888    0 10.99 60.02 ----- 6.3 6.4 204.4 6.8 23.7 -27.2 22.0 -29.7 20.8 -24.9 22.0 -26.4
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324045
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:47:15.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:47:06', tmtdew=11.16, humidity=47.11, cloud=0.0, wind=8.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:46:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:47:15.012 [DEBUG] [Thread-121033] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:15.069 [DEBUG] [Thread-121036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:15.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-28T09:47:15.095 [DEBUG] [Thread-121037] [transport.py] [_log()] starting thread (client mode): 0x2b9bb580
2025-09-28T09:47:15.095 [DEBUG] [Thread-121037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:15.109 [DEBUG] [Thread-121037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:47:15.109 [INFO] [Thread-121037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:47:15.116 [DEBUG] [Thread-121037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:15.116 [DEBUG] [Thread-121037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] Compression: none
2025-09-28T09:47:15.117 [DEBUG] [Thread-121037] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:15.173 [DEBUG] [Thread-121037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:15.173 [DEBUG] [Thread-121037] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:15.174 [DEBUG] [Thread-121037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:47:15.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:47:15.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:15.230 [DEBUG] [Thread-121037] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:15.230 [DEBUG] [Thread-121037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:15.230 [DEBUG] [Thread-121037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:15.230 [DEBUG] [Thread-121037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:47:15.230 [DEBUG] [Thread-121037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:15.244 [INFO] [Thread-121037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:15.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-28T09:47:15.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:16.193 [DEBUG] [Thread-121037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:16.193 [DEBUG] [Thread-121037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:16.241 [DEBUG] [Thread-121037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:16.241 [DEBUG] [Thread-121037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:16.250 [DEBUG] [Thread-121037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:16.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:16.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-28T09:47:16.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-28T09:47:16.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:16.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:16.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:16.285 [DEBUG] [Thread-121037] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:23.152 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:23.153 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:47:26.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:47:26.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-28T09:47:26.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 47, 6), 11.16, 47.11, 0.0, 8.26, 14.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:47:26.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:47:06
2025-09-28T09:47:26.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:47:27.131 [DEBUG] [Thread-121039] [transport.py] [_log()] starting thread (client mode): 0x2e38de40
2025-09-28T09:47:27.132 [DEBUG] [Thread-121039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:27.150 [DEBUG] [Thread-121039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:47:27.151 [INFO] [Thread-121039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:47:27.153 [DEBUG] [Thread-121039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:27.154 [DEBUG] [Thread-121039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:27.155 [DEBUG] [Thread-121039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:27.155 [DEBUG] [Thread-121039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:27.155 [DEBUG] [Thread-121039] [transport.py] [_log()] Compression: none
2025-09-28T09:47:27.155 [DEBUG] [Thread-121039] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:27.170 [DEBUG] [Thread-121039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:27.170 [DEBUG] [Thread-121039] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:27.171 [DEBUG] [Thread-121039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:47:27.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:47:27.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:27.172 [DEBUG] [Thread-121039] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:27.173 [DEBUG] [Thread-121039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:27.173 [DEBUG] [Thread-121039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:27.173 [DEBUG] [Thread-121039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:47:27.173 [DEBUG] [Thread-121039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:27.187 [INFO] [Thread-121039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:27.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:27.774 [DEBUG] [Thread-121039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:27.774 [DEBUG] [Thread-121039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:27.775 [DEBUG] [Thread-121039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:47:27.815 [DEBUG] [Thread-121039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:27.815 [DEBUG] [Thread-121039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:27.818 [DEBUG] [Thread-121039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:27.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:27.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:47:27.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:47:27.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:47:27.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:27.839 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:47:27.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:27.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324045 -999.00  +15.30   6.39     51   +5.20 1 1 1 1 1   888    0 10.99 60.02 ----- 6.3 6.4 204.4 6.8 23.7 -27.2 22.0 -29.7 20.8 -24.9 22.0 -26.4
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324045
2025-09-28T09:47:27.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:47:27.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:47:27.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:47:27.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:47:27.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:47:27.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:47:06', tmtdew=11.16, humidity=47.11, cloud=0.0, wind=8.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:46:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:47:27.841 [DEBUG] [Thread-121039] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:27.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-28T09:47:27.937 [DEBUG] [Thread-121042] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdf0
2025-09-28T09:47:27.937 [DEBUG] [Thread-121042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:27.952 [DEBUG] [Thread-121042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:47:27.952 [INFO] [Thread-121042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:27.960 [DEBUG] [Thread-121042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] Compression: none
2025-09-28T09:47:27.961 [DEBUG] [Thread-121042] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:28.018 [DEBUG] [Thread-121042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:28.018 [DEBUG] [Thread-121042] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:28.019 [DEBUG] [Thread-121042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:47:28.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:47:28.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:28.074 [DEBUG] [Thread-121042] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:28.075 [DEBUG] [Thread-121042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:28.075 [DEBUG] [Thread-121042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:28.075 [DEBUG] [Thread-121042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:47:28.075 [DEBUG] [Thread-121042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:28.097 [INFO] [Thread-121042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:28.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-28T09:47:28.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:29.059 [DEBUG] [Thread-121042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:29.060 [DEBUG] [Thread-121042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:29.107 [DEBUG] [Thread-121042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:29.107 [DEBUG] [Thread-121042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:29.116 [DEBUG] [Thread-121042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:29.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:29.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-28T09:47:29.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-28T09:47:29.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:29.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:29.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:29.151 [DEBUG] [Thread-121042] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:30.103 [DEBUG] [Thread-121044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:39.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:47:39.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:47:39.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:47:39.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 47, 6), 11.16, 47.11, 0.0, 8.26, 14.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:47:39.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:47:06
2025-09-28T09:47:39.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:47:40.040 [DEBUG] [Thread-121045] [transport.py] [_log()] starting thread (client mode): 0x2b9dc550
2025-09-28T09:47:40.040 [DEBUG] [Thread-121045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:40.060 [DEBUG] [Thread-121045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:47:40.060 [INFO] [Thread-121045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] Compression: none
2025-09-28T09:47:40.064 [DEBUG] [Thread-121045] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:40.080 [DEBUG] [Thread-121045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:40.080 [DEBUG] [Thread-121045] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:40.080 [DEBUG] [Thread-121045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:47:40.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:47:40.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:40.081 [DEBUG] [Thread-121045] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:40.081 [DEBUG] [Thread-121045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:40.081 [DEBUG] [Thread-121045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:40.081 [DEBUG] [Thread-121045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:47:40.081 [DEBUG] [Thread-121045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:40.093 [INFO] [Thread-121045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:40.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:40.781 [DEBUG] [Thread-121045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:40.782 [DEBUG] [Thread-121045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:40.782 [DEBUG] [Thread-121045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:47:40.822 [DEBUG] [Thread-121045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:40.823 [DEBUG] [Thread-121045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:40.825 [DEBUG] [Thread-121045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:40.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:40.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:47:40.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:47:40.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:47:40.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:40.848 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:47:40.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324392 -999.00  +15.50   3.64     51   +5.60 1 1 1 1 1   888    0 11.28 66.60 ----- 4.6 3.6 168.6 6.4 23.8 -27.0 22.1 -25.3 20.7 -25.5 22.1 -27.5
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:47:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324392
2025-09-28T09:47:40.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:47:40.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:47:40.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:47:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:47:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:47:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:47:06', tmtdew=11.16, humidity=47.11, cloud=0.0, wind=8.26, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:47:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:47:40.851 [DEBUG] [Thread-121045] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:40.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-28T09:47:40.948 [DEBUG] [Thread-121048] [transport.py] [_log()] starting thread (client mode): 0x2b9dda20
2025-09-28T09:47:40.949 [DEBUG] [Thread-121048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:40.964 [DEBUG] [Thread-121048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:47:40.964 [INFO] [Thread-121048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:40.971 [DEBUG] [Thread-121048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:40.972 [DEBUG] [Thread-121048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:40.972 [DEBUG] [Thread-121048] [transport.py] [_log()] Compression: none
2025-09-28T09:47:40.972 [DEBUG] [Thread-121048] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:41.030 [DEBUG] [Thread-121048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:41.030 [DEBUG] [Thread-121048] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:41.030 [DEBUG] [Thread-121048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:47:41.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:47:41.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:41.086 [DEBUG] [Thread-121048] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:41.087 [DEBUG] [Thread-121048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:41.087 [DEBUG] [Thread-121048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:41.087 [DEBUG] [Thread-121048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:47:41.087 [DEBUG] [Thread-121048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:41.106 [INFO] [Thread-121048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:41.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-28T09:47:41.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:42.079 [DEBUG] [Thread-121048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:42.080 [DEBUG] [Thread-121048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:42.127 [DEBUG] [Thread-121048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:42.127 [DEBUG] [Thread-121048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:42.136 [DEBUG] [Thread-121048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:42.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:42.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-28T09:47:42.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-28T09:47:42.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:42.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:42.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:42.171 [DEBUG] [Thread-121048] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:45.135 [DEBUG] [Thread-121050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:47:52.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:47:52.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:47:52.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-28T09:47:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 47, 38), 11.51, 46.07, 0.0, 8.77, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:47:52.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:47:38
2025-09-28T09:47:52.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:47:53.040 [DEBUG] [Thread-121051] [transport.py] [_log()] starting thread (client mode): 0x2e38f190
2025-09-28T09:47:53.040 [DEBUG] [Thread-121051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:53.067 [DEBUG] [Thread-121051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:47:53.067 [INFO] [Thread-121051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] Compression: none
2025-09-28T09:47:53.068 [DEBUG] [Thread-121051] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:53.077 [DEBUG] [Thread-121051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:53.077 [DEBUG] [Thread-121051] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:53.077 [DEBUG] [Thread-121051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:47:53.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:47:53.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:53.078 [DEBUG] [Thread-121051] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:53.078 [DEBUG] [Thread-121051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:53.078 [DEBUG] [Thread-121051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:53.078 [DEBUG] [Thread-121051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:47:53.078 [DEBUG] [Thread-121051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:53.087 [INFO] [Thread-121051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:53.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:53.656 [DEBUG] [Thread-121051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:53.656 [DEBUG] [Thread-121051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:53.656 [DEBUG] [Thread-121051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:47:53.697 [DEBUG] [Thread-121051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:53.697 [DEBUG] [Thread-121051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:53.700 [DEBUG] [Thread-121051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:53.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:53.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:47:53.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:47:53.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:47:53.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:53.733 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:47:53.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:53.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324392 -999.00  +15.50   3.64     51   +5.60 1 1 1 1 1   888    0 11.28 66.60 ----- 4.6 3.6 168.6 6.4 23.8 -27.0 22.1 -25.3 20.7 -25.5 22.1 -27.5
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324392
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:47:53.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:47:38', tmtdew=11.51, humidity=46.07, cloud=0.0, wind=8.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:47:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:47:53.735 [DEBUG] [Thread-121051] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:47:53.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-28T09:47:53.846 [DEBUG] [Thread-121054] [transport.py] [_log()] starting thread (client mode): 0x2e3fa4d0
2025-09-28T09:47:53.846 [DEBUG] [Thread-121054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:47:53.887 [DEBUG] [Thread-121054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:47:53.887 [INFO] [Thread-121054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:47:53.920 [DEBUG] [Thread-121054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] client lang: <none>
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] server lang: <none>
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] kex follows: False
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:47:53.921 [DEBUG] [Thread-121054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:47:53.922 [DEBUG] [Thread-121054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:47:53.922 [DEBUG] [Thread-121054] [transport.py] [_log()] Compression: none
2025-09-28T09:47:53.922 [DEBUG] [Thread-121054] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:47:54.005 [DEBUG] [Thread-121054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:47:54.005 [DEBUG] [Thread-121054] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:47:54.006 [DEBUG] [Thread-121054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:47:54.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:47:54.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:47:54.115 [DEBUG] [Thread-121054] [transport.py] [_log()] userauth is OK
2025-09-28T09:47:54.115 [DEBUG] [Thread-121054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:47:54.115 [DEBUG] [Thread-121054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:47:54.115 [DEBUG] [Thread-121054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:47:54.115 [DEBUG] [Thread-121054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:47:54.165 [INFO] [Thread-121054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:47:54.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-28T09:47:54.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:47:55.148 [DEBUG] [Thread-121054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:47:55.148 [DEBUG] [Thread-121054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:47:55.223 [DEBUG] [Thread-121054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:47:55.223 [DEBUG] [Thread-121054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:47:55.260 [DEBUG] [Thread-121054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:47:55.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:47:55.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:47:55.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-28T09:47:55.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:47:55.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:47:55.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:47:55.346 [DEBUG] [Thread-121054] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:00.187 [DEBUG] [Thread-121056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:00.848 [DEBUG] [Thread-121057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:05.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:48:05.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:48:05.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-28T09:48:05.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 47, 38), 11.51, 46.07, 0.0, 8.77, 14.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:48:05.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:47:38
2025-09-28T09:48:06.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:48:06.189 [DEBUG] [Thread-121058] [transport.py] [_log()] starting thread (client mode): 0x2e3dd6f0
2025-09-28T09:48:06.190 [DEBUG] [Thread-121058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:06.206 [DEBUG] [Thread-121058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:48:06.206 [INFO] [Thread-121058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:06.208 [DEBUG] [Thread-121058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:06.209 [DEBUG] [Thread-121058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:06.209 [DEBUG] [Thread-121058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:06.209 [DEBUG] [Thread-121058] [transport.py] [_log()] Compression: none
2025-09-28T09:48:06.209 [DEBUG] [Thread-121058] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:06.216 [DEBUG] [Thread-121058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:06.216 [DEBUG] [Thread-121058] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:06.217 [DEBUG] [Thread-121058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:48:06.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:48:06.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:06.218 [DEBUG] [Thread-121058] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:06.218 [DEBUG] [Thread-121058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:06.218 [DEBUG] [Thread-121058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:06.218 [DEBUG] [Thread-121058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:48:06.218 [DEBUG] [Thread-121058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:06.240 [INFO] [Thread-121058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:06.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:06.834 [DEBUG] [Thread-121058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:06.834 [DEBUG] [Thread-121058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:06.835 [DEBUG] [Thread-121058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:48:06.875 [DEBUG] [Thread-121058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:06.875 [DEBUG] [Thread-121058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:06.879 [DEBUG] [Thread-121058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:06.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:06.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:48:06.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:48:06.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:48:06.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:06.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:48:06.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324392 -999.00  +15.50   3.64     51   +5.60 1 1 1 1 1   888    0 11.28 66.60 ----- 4.6 3.6 168.6 6.4 23.8 -27.0 22.1 -25.3 20.7 -25.5 22.1 -27.5
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:48:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324392
2025-09-28T09:48:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:48:06.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:48:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:48:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:48:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:48:06.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:47:38', tmtdew=11.51, humidity=46.07, cloud=0.0, wind=8.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:47:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:48:06.899 [DEBUG] [Thread-121058] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:06.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-28T09:48:07.029 [DEBUG] [Thread-121061] [transport.py] [_log()] starting thread (client mode): 0x2b96d2a0
2025-09-28T09:48:07.029 [DEBUG] [Thread-121061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:07.077 [DEBUG] [Thread-121061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:48:07.077 [INFO] [Thread-121061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:48:07.116 [DEBUG] [Thread-121061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:07.117 [DEBUG] [Thread-121061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:07.118 [DEBUG] [Thread-121061] [transport.py] [_log()] Compression: none
2025-09-28T09:48:07.118 [DEBUG] [Thread-121061] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:07.209 [DEBUG] [Thread-121061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:07.210 [DEBUG] [Thread-121061] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:07.210 [DEBUG] [Thread-121061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:48:07.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:48:07.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:07.333 [DEBUG] [Thread-121061] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:07.333 [DEBUG] [Thread-121061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:07.333 [DEBUG] [Thread-121061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:07.334 [DEBUG] [Thread-121061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:48:07.334 [DEBUG] [Thread-121061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:07.386 [INFO] [Thread-121061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:07.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-28T09:48:07.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:08.369 [DEBUG] [Thread-121061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:08.369 [DEBUG] [Thread-121061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:08.451 [DEBUG] [Thread-121061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:08.451 [DEBUG] [Thread-121061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:08.494 [DEBUG] [Thread-121061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:08.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:08.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-28T09:48:08.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-28T09:48:08.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:08.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:08.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:08.663 [DEBUG] [Thread-121061] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:15.230 [DEBUG] [Thread-121063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:18.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:48:18.631 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:48:18.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-28T09:48:19.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 48, 10), 11.74, 45.36, 0.0, 9.21, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:48:19.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:48:10
2025-09-28T09:48:19.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:48:19.460 [DEBUG] [Thread-121064] [transport.py] [_log()] starting thread (client mode): 0x2b96fb80
2025-09-28T09:48:19.461 [DEBUG] [Thread-121064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:19.481 [DEBUG] [Thread-121064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:48:19.481 [INFO] [Thread-121064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:48:19.484 [DEBUG] [Thread-121064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:19.484 [DEBUG] [Thread-121064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:19.485 [DEBUG] [Thread-121064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:19.486 [DEBUG] [Thread-121064] [transport.py] [_log()] Compression: none
2025-09-28T09:48:19.486 [DEBUG] [Thread-121064] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:19.504 [DEBUG] [Thread-121064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:19.504 [DEBUG] [Thread-121064] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:19.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:48:19.505 [DEBUG] [Thread-121064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:48:19.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:19.507 [DEBUG] [Thread-121064] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:19.507 [DEBUG] [Thread-121064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:19.507 [DEBUG] [Thread-121064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:19.508 [DEBUG] [Thread-121064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:48:19.508 [DEBUG] [Thread-121064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:19.526 [INFO] [Thread-121064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:19.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:20.177 [DEBUG] [Thread-121064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:20.177 [DEBUG] [Thread-121064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:20.178 [DEBUG] [Thread-121064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:48:20.218 [DEBUG] [Thread-121064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:20.218 [DEBUG] [Thread-121064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:20.221 [DEBUG] [Thread-121064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:20.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:20.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:48:20.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:48:20.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:48:20.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:20.243 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:48:20.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324739 -999.00  +15.50   6.53     49   +4.90 1 1 1 1 1   888    0 11.76 70.22 ----- 5.2 6.5 197.0 10.0 23.9 -27.0 22.2 -25.7 20.9 -25.7 22.1 -26.7
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:48:20.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324739
2025-09-28T09:48:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:48:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:48:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:48:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:48:20.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:48:20.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:48:10', tmtdew=11.74, humidity=45.36, cloud=0.0, wind=9.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:47:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:48:20.246 [DEBUG] [Thread-121064] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:20.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:48:20.341 [DEBUG] [Thread-121067] [transport.py] [_log()] starting thread (client mode): 0x2e3fabc0
2025-09-28T09:48:20.342 [DEBUG] [Thread-121067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:20.356 [DEBUG] [Thread-121067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:48:20.356 [INFO] [Thread-121067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] Compression: none
2025-09-28T09:48:20.364 [DEBUG] [Thread-121067] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:20.422 [DEBUG] [Thread-121067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:20.422 [DEBUG] [Thread-121067] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:20.423 [DEBUG] [Thread-121067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:48:20.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:48:20.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:20.478 [DEBUG] [Thread-121067] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:20.478 [DEBUG] [Thread-121067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:20.478 [DEBUG] [Thread-121067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:20.478 [DEBUG] [Thread-121067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:48:20.478 [DEBUG] [Thread-121067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:20.492 [INFO] [Thread-121067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:20.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-28T09:48:20.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:21.450 [DEBUG] [Thread-121067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:21.450 [DEBUG] [Thread-121067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:21.498 [DEBUG] [Thread-121067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:21.498 [DEBUG] [Thread-121067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:21.507 [DEBUG] [Thread-121067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:21.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:21.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-28T09:48:21.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-28T09:48:21.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:21.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:21.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:21.541 [DEBUG] [Thread-121067] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:23.296 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:23.297 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:30.263 [DEBUG] [Thread-121069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:31.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:48:31.543 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:48:31.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:48:32.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 48, 10), 11.74, 45.36, 0.0, 9.21, 14.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:48:32.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:48:10
2025-09-28T09:48:32.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:48:32.378 [DEBUG] [Thread-121070] [transport.py] [_log()] starting thread (client mode): 0x2b9dca60
2025-09-28T09:48:32.378 [DEBUG] [Thread-121070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:32.389 [DEBUG] [Thread-121070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:48:32.389 [INFO] [Thread-121070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:48:32.390 [DEBUG] [Thread-121070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:32.390 [DEBUG] [Thread-121070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] Compression: none
2025-09-28T09:48:32.391 [DEBUG] [Thread-121070] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:32.402 [DEBUG] [Thread-121070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:32.402 [DEBUG] [Thread-121070] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:32.402 [DEBUG] [Thread-121070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:48:32.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:48:32.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:32.404 [DEBUG] [Thread-121070] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:32.404 [DEBUG] [Thread-121070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:32.404 [DEBUG] [Thread-121070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:32.404 [DEBUG] [Thread-121070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:48:32.404 [DEBUG] [Thread-121070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:32.423 [INFO] [Thread-121070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:32.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:32.992 [DEBUG] [Thread-121070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:32.992 [DEBUG] [Thread-121070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:32.993 [DEBUG] [Thread-121070] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:48:33.033 [DEBUG] [Thread-121070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:33.034 [DEBUG] [Thread-121070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:33.037 [DEBUG] [Thread-121070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:33.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:33.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:48:33.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:48:33.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:48:33.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:33.062 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:48:33.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:33.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:33.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:48:33.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.324739 -999.00  +15.50   6.53     49   +4.90 1 1 1 1 1   888    0 11.76 70.22 ----- 5.2 6.5 197.0 10.0 23.9 -27.0 22.2 -25.7 20.9 -25.7 22.1 -26.7
2025-09-28T09:48:33.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:48:33.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:48:33.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.324739
2025-09-28T09:48:33.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:48:33.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:48:33.064 [DEBUG] [Thread-121070] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:33.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:48:33.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:48:33.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:48:33.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:48:10', tmtdew=11.74, humidity=45.36, cloud=0.0, wind=9.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:47:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:48:33.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-28T09:48:33.262 [DEBUG] [Thread-121073] [transport.py] [_log()] starting thread (client mode): 0x2e34b280
2025-09-28T09:48:33.263 [DEBUG] [Thread-121073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:33.298 [DEBUG] [Thread-121073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:48:33.298 [INFO] [Thread-121073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:48:33.326 [DEBUG] [Thread-121073] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:33.326 [DEBUG] [Thread-121073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:33.327 [DEBUG] [Thread-121073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:33.328 [DEBUG] [Thread-121073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:33.328 [DEBUG] [Thread-121073] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:33.328 [DEBUG] [Thread-121073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:33.328 [DEBUG] [Thread-121073] [transport.py] [_log()] Compression: none
2025-09-28T09:48:33.328 [DEBUG] [Thread-121073] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:33.406 [DEBUG] [Thread-121073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:33.407 [DEBUG] [Thread-121073] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:33.407 [DEBUG] [Thread-121073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:48:33.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:48:33.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:33.505 [DEBUG] [Thread-121073] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:33.505 [DEBUG] [Thread-121073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:33.505 [DEBUG] [Thread-121073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:33.505 [DEBUG] [Thread-121073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:48:33.505 [DEBUG] [Thread-121073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:33.546 [INFO] [Thread-121073] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:33.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-28T09:48:33.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:34.526 [DEBUG] [Thread-121073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:34.526 [DEBUG] [Thread-121073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:34.596 [DEBUG] [Thread-121073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:34.596 [DEBUG] [Thread-121073] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:34.627 [DEBUG] [Thread-121073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:34.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:34.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')
2025-09-28T09:48:34.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-28T09:48:34.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:34.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:34.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:34.753 [DEBUG] [Thread-121073] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:44.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:48:44.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:48:44.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-28T09:48:45.307 [DEBUG] [Thread-121075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:48:45.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 48, 42), 11.21, 46.89, 0.0, 7.98, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:48:45.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:48:42
2025-09-28T09:48:45.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:48:45.572 [DEBUG] [Thread-121076] [transport.py] [_log()] starting thread (client mode): 0x2e3fb8b0
2025-09-28T09:48:45.572 [DEBUG] [Thread-121076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:45.592 [DEBUG] [Thread-121076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:48:45.592 [INFO] [Thread-121076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:45.595 [DEBUG] [Thread-121076] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] Compression: none
2025-09-28T09:48:45.596 [DEBUG] [Thread-121076] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:45.612 [DEBUG] [Thread-121076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:45.613 [DEBUG] [Thread-121076] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:45.613 [DEBUG] [Thread-121076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:48:45.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:48:45.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:45.615 [DEBUG] [Thread-121076] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:45.616 [DEBUG] [Thread-121076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:45.616 [DEBUG] [Thread-121076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:45.616 [DEBUG] [Thread-121076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:48:45.616 [DEBUG] [Thread-121076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:45.640 [INFO] [Thread-121076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:45.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:46.252 [DEBUG] [Thread-121076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:46.252 [DEBUG] [Thread-121076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:46.253 [DEBUG] [Thread-121076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:48:46.294 [DEBUG] [Thread-121076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:46.294 [DEBUG] [Thread-121076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:46.297 [DEBUG] [Thread-121076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:46.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:46.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:48:46.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:48:46.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:48:46.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:46.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:48:46.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.325434 -999.00  +15.80   3.72     49   +5.20 1 1 1 1 1   888    0 12.34 88.55 ----- 8.7 3.7 179.5 10.8 23.9 -28.0 22.4 -25.8 20.9 -26.0 22.2 -28.0
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:48:46.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.325434
2025-09-28T09:48:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:48:46.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:48:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:48:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:48:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:48:46.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:48:42', tmtdew=11.21, humidity=46.89, cloud=0.0, wind=7.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:48:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:48:46.322 [DEBUG] [Thread-121076] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:46.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-28T09:48:46.419 [DEBUG] [Thread-121079] [transport.py] [_log()] starting thread (client mode): 0x2b9dc880
2025-09-28T09:48:46.420 [DEBUG] [Thread-121079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:46.436 [DEBUG] [Thread-121079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:48:46.436 [INFO] [Thread-121079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:48:46.445 [DEBUG] [Thread-121079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:46.445 [DEBUG] [Thread-121079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:48:46.445 [DEBUG] [Thread-121079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:46.445 [DEBUG] [Thread-121079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:46.446 [DEBUG] [Thread-121079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:46.447 [DEBUG] [Thread-121079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:46.447 [DEBUG] [Thread-121079] [transport.py] [_log()] Compression: none
2025-09-28T09:48:46.447 [DEBUG] [Thread-121079] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:46.502 [DEBUG] [Thread-121079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:46.502 [DEBUG] [Thread-121079] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:46.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:48:46.503 [DEBUG] [Thread-121079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:48:46.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:46.560 [DEBUG] [Thread-121079] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:46.560 [DEBUG] [Thread-121079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:46.560 [DEBUG] [Thread-121079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:46.560 [DEBUG] [Thread-121079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:48:46.561 [DEBUG] [Thread-121079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:46.580 [INFO] [Thread-121079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:46.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:48:46.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:47.541 [DEBUG] [Thread-121079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:47.541 [DEBUG] [Thread-121079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:47.590 [DEBUG] [Thread-121079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:47.590 [DEBUG] [Thread-121079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:47.599 [DEBUG] [Thread-121079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:47.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:47.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-28T09:48:47.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-28T09:48:47.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:47.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:47.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:47.641 [DEBUG] [Thread-121079] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:57.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:48:57.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:48:57.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:48:58.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 48, 42), 11.21, 46.89, 0.0, 7.98, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:48:58.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:48:42
2025-09-28T09:48:58.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:48:58.468 [DEBUG] [Thread-121081] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf70
2025-09-28T09:48:58.468 [DEBUG] [Thread-121081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:58.487 [DEBUG] [Thread-121081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:48:58.487 [INFO] [Thread-121081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:48:58.491 [DEBUG] [Thread-121081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:58.491 [DEBUG] [Thread-121081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:58.492 [DEBUG] [Thread-121081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:58.493 [DEBUG] [Thread-121081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:58.493 [DEBUG] [Thread-121081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:58.493 [DEBUG] [Thread-121081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:58.493 [DEBUG] [Thread-121081] [transport.py] [_log()] Compression: none
2025-09-28T09:48:58.493 [DEBUG] [Thread-121081] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:58.508 [DEBUG] [Thread-121081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:58.508 [DEBUG] [Thread-121081] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:58.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:48:58.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:58.510 [DEBUG] [Thread-121081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:48:58.512 [DEBUG] [Thread-121081] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:58.512 [DEBUG] [Thread-121081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:58.512 [DEBUG] [Thread-121081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:58.512 [DEBUG] [Thread-121081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:48:58.513 [DEBUG] [Thread-121081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:58.527 [INFO] [Thread-121081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:58.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:48:59.195 [DEBUG] [Thread-121081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:48:59.195 [DEBUG] [Thread-121081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:48:59.195 [DEBUG] [Thread-121081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:48:59.235 [DEBUG] [Thread-121081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:48:59.236 [DEBUG] [Thread-121081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:48:59.238 [DEBUG] [Thread-121081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:48:59.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:48:59.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:48:59.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:48:59.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:48:59.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:48:59.262 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:48:59.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:48:59.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.325434 -999.00  +15.80   3.72     49   +5.20 1 1 1 1 1   888    0 12.34 88.55 ----- 8.7 3.7 179.5 10.8 23.9 -28.0 22.4 -25.8 20.9 -26.0 22.2 -28.0
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.325434
2025-09-28T09:48:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:48:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:48:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:48:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:48:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:48:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:48:42', tmtdew=11.21, humidity=46.89, cloud=0.0, wind=7.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:48:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:48:59.264 [DEBUG] [Thread-121081] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:48:59.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-28T09:48:59.358 [DEBUG] [Thread-121084] [transport.py] [_log()] starting thread (client mode): 0x2b96f730
2025-09-28T09:48:59.358 [DEBUG] [Thread-121084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:48:59.372 [DEBUG] [Thread-121084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:48:59.372 [INFO] [Thread-121084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:48:59.380 [DEBUG] [Thread-121084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] client lang: <none>
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] server lang: <none>
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] kex follows: False
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] Compression: none
2025-09-28T09:48:59.381 [DEBUG] [Thread-121084] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:48:59.445 [DEBUG] [Thread-121084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:48:59.445 [DEBUG] [Thread-121084] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:48:59.446 [DEBUG] [Thread-121084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:48:59.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:48:59.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:48:59.503 [DEBUG] [Thread-121084] [transport.py] [_log()] userauth is OK
2025-09-28T09:48:59.503 [DEBUG] [Thread-121084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:48:59.503 [DEBUG] [Thread-121084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:48:59.503 [DEBUG] [Thread-121084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:48:59.503 [DEBUG] [Thread-121084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:48:59.521 [INFO] [Thread-121084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:48:59.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-28T09:48:59.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:00.335 [DEBUG] [Thread-121086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:00.541 [DEBUG] [Thread-121084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:00.541 [DEBUG] [Thread-121084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:00.589 [DEBUG] [Thread-121084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:00.589 [DEBUG] [Thread-121084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:00.599 [DEBUG] [Thread-121084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:00.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:00.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-28T09:49:00.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-28T09:49:00.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:00.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:00.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:00.637 [DEBUG] [Thread-121084] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:00.903 [DEBUG] [Thread-121087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:10.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:49:10.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:49:10.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-28T09:49:11.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 48, 42), 11.21, 46.89, 0.0, 7.98, 14.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:49:11.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:48:42
2025-09-28T09:49:11.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:49:11.476 [DEBUG] [Thread-121088] [transport.py] [_log()] starting thread (client mode): 0x2b9df040
2025-09-28T09:49:11.476 [DEBUG] [Thread-121088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:11.496 [DEBUG] [Thread-121088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:49:11.496 [INFO] [Thread-121088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:11.499 [DEBUG] [Thread-121088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:11.500 [DEBUG] [Thread-121088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:11.500 [DEBUG] [Thread-121088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:11.500 [DEBUG] [Thread-121088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:11.500 [DEBUG] [Thread-121088] [transport.py] [_log()] Compression: none
2025-09-28T09:49:11.500 [DEBUG] [Thread-121088] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:11.517 [DEBUG] [Thread-121088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:11.517 [DEBUG] [Thread-121088] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:11.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:49:11.518 [DEBUG] [Thread-121088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:49:11.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:11.520 [DEBUG] [Thread-121088] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:11.520 [DEBUG] [Thread-121088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:11.520 [DEBUG] [Thread-121088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:11.520 [DEBUG] [Thread-121088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:49:11.521 [DEBUG] [Thread-121088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:11.544 [INFO] [Thread-121088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:11.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:12.291 [DEBUG] [Thread-121088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:12.291 [DEBUG] [Thread-121088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:12.291 [DEBUG] [Thread-121088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:49:12.332 [DEBUG] [Thread-121088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:12.332 [DEBUG] [Thread-121088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:12.334 [DEBUG] [Thread-121088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:12.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:12.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:49:12.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:49:12.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:49:12.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:12.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:49:12.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:12.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.325434 -999.00  +15.80   3.72     49   +5.20 1 1 1 1 1   888    0 12.34 88.55 ----- 8.7 3.7 179.5 10.8 23.9 -28.0 22.4 -25.8 20.9 -26.0 22.2 -28.0
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.325434
2025-09-28T09:49:12.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:49:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:49:12.362 [DEBUG] [Thread-121088] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:49:12.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:49:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:49:12.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:48:42', tmtdew=11.21, humidity=46.89, cloud=0.0, wind=7.98, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:48:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:49:12.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-28T09:49:12.489 [DEBUG] [Thread-121091] [transport.py] [_log()] starting thread (client mode): 0x2b946200
2025-09-28T09:49:12.489 [DEBUG] [Thread-121091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:12.528 [DEBUG] [Thread-121091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:49:12.529 [INFO] [Thread-121091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:49:12.563 [DEBUG] [Thread-121091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:12.564 [DEBUG] [Thread-121091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:12.565 [DEBUG] [Thread-121091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:12.565 [DEBUG] [Thread-121091] [transport.py] [_log()] Compression: none
2025-09-28T09:49:12.565 [DEBUG] [Thread-121091] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:12.639 [DEBUG] [Thread-121091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:12.640 [DEBUG] [Thread-121091] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:12.640 [DEBUG] [Thread-121091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:49:12.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:49:12.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:12.732 [DEBUG] [Thread-121091] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:12.732 [DEBUG] [Thread-121091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:12.733 [DEBUG] [Thread-121091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:12.733 [DEBUG] [Thread-121091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:49:12.733 [DEBUG] [Thread-121091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:12.779 [INFO] [Thread-121091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:12.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-28T09:49:12.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:13.726 [DEBUG] [Thread-121091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:13.726 [DEBUG] [Thread-121091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:13.786 [DEBUG] [Thread-121091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:13.787 [DEBUG] [Thread-121091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:13.806 [DEBUG] [Thread-121091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:13.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:13.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-28T09:49:13.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-28T09:49:13.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:13.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:13.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:13.944 [DEBUG] [Thread-121091] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:15.387 [DEBUG] [Thread-121093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:23.438 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:23.439 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:23.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:49:23.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:49:23.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:49:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 49, 14), 11.25, 46.79, 0.0, 8.42, 14.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:49:24.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:49:14
2025-09-28T09:49:24.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:49:24.763 [DEBUG] [Thread-121094] [transport.py] [_log()] starting thread (client mode): 0x2e3fbc40
2025-09-28T09:49:24.763 [DEBUG] [Thread-121094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:24.782 [DEBUG] [Thread-121094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:49:24.782 [INFO] [Thread-121094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] Compression: none
2025-09-28T09:49:24.783 [DEBUG] [Thread-121094] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:24.791 [DEBUG] [Thread-121094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:24.791 [DEBUG] [Thread-121094] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:24.791 [DEBUG] [Thread-121094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:49:24.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:49:24.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:24.792 [DEBUG] [Thread-121094] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:24.792 [DEBUG] [Thread-121094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:24.792 [DEBUG] [Thread-121094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:24.792 [DEBUG] [Thread-121094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:49:24.792 [DEBUG] [Thread-121094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:24.803 [INFO] [Thread-121094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:24.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:25.352 [DEBUG] [Thread-121094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:25.352 [DEBUG] [Thread-121094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:25.352 [DEBUG] [Thread-121094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:49:25.393 [DEBUG] [Thread-121094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:25.393 [DEBUG] [Thread-121094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:25.397 [DEBUG] [Thread-121094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:25.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:25.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:49:25.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:49:25.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:49:25.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:25.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:49:25.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:25.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:49:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.325781 -999.00  +15.70   6.11     49   +5.20 1 1 1 1 1   888    0 12.53 101.33 ----- 3.4 6.1 231.8 14.8 23.9 -27.7 22.1 -26.7 20.9 -26.6 22.2 -27.1
2025-09-28T09:49:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:49:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:49:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.325781
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:49:25.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:49:14', tmtdew=11.25, humidity=46.79, cloud=0.0, wind=8.42, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:49:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:49:25.422 [DEBUG] [Thread-121094] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:25.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-28T09:49:25.516 [DEBUG] [Thread-121097] [transport.py] [_log()] starting thread (client mode): 0x2b96dc00
2025-09-28T09:49:25.516 [DEBUG] [Thread-121097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:25.531 [DEBUG] [Thread-121097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:49:25.531 [INFO] [Thread-121097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:25.539 [DEBUG] [Thread-121097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:25.540 [DEBUG] [Thread-121097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:25.541 [DEBUG] [Thread-121097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:25.541 [DEBUG] [Thread-121097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:25.541 [DEBUG] [Thread-121097] [transport.py] [_log()] Compression: none
2025-09-28T09:49:25.541 [DEBUG] [Thread-121097] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:25.597 [DEBUG] [Thread-121097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:25.597 [DEBUG] [Thread-121097] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:25.598 [DEBUG] [Thread-121097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:49:25.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:49:25.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:25.654 [DEBUG] [Thread-121097] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:25.654 [DEBUG] [Thread-121097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:25.654 [DEBUG] [Thread-121097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:25.654 [DEBUG] [Thread-121097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:49:25.654 [DEBUG] [Thread-121097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:25.673 [INFO] [Thread-121097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:25.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-28T09:49:25.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:26.721 [DEBUG] [Thread-121097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:26.722 [DEBUG] [Thread-121097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:26.769 [DEBUG] [Thread-121097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:26.769 [DEBUG] [Thread-121097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:26.778 [DEBUG] [Thread-121097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:26.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:26.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')
2025-09-28T09:49:26.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-28T09:49:26.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:26.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:26.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:26.814 [DEBUG] [Thread-121097] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:30.414 [DEBUG] [Thread-121099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:36.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:49:36.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:49:36.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-28T09:49:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 49, 14), 11.25, 46.79, 0.0, 8.42, 14.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:49:37.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:49:14
2025-09-28T09:49:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:49:37.653 [DEBUG] [Thread-121100] [transport.py] [_log()] starting thread (client mode): 0x30ddf550
2025-09-28T09:49:37.653 [DEBUG] [Thread-121100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:37.673 [DEBUG] [Thread-121100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:49:37.673 [INFO] [Thread-121100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:49:37.675 [DEBUG] [Thread-121100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:37.675 [DEBUG] [Thread-121100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:49:37.675 [DEBUG] [Thread-121100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:37.675 [DEBUG] [Thread-121100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] Compression: none
2025-09-28T09:49:37.676 [DEBUG] [Thread-121100] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:37.693 [DEBUG] [Thread-121100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:37.693 [DEBUG] [Thread-121100] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:37.694 [DEBUG] [Thread-121100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:49:37.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:49:37.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:37.696 [DEBUG] [Thread-121100] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:37.696 [DEBUG] [Thread-121100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:37.696 [DEBUG] [Thread-121100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:37.696 [DEBUG] [Thread-121100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:49:37.696 [DEBUG] [Thread-121100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:37.720 [INFO] [Thread-121100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:37.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:38.461 [DEBUG] [Thread-121100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:38.462 [DEBUG] [Thread-121100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:38.462 [DEBUG] [Thread-121100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:49:38.502 [DEBUG] [Thread-121100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:38.502 [DEBUG] [Thread-121100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:38.505 [DEBUG] [Thread-121100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:38.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:38.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:49:38.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:49:38.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:49:38.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:38.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:49:38.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:38.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.325781 -999.00  +15.70   6.11     49   +5.20 1 1 1 1 1   888    0 12.53 101.33 ----- 3.4 6.1 231.8 14.8 23.9 -27.7 22.1 -26.7 20.9 -26.6 22.2 -27.1
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.325781
2025-09-28T09:49:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:49:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:49:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:49:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:49:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:49:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:49:14', tmtdew=11.25, humidity=46.79, cloud=0.0, wind=8.42, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:49:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:49:38.530 [DEBUG] [Thread-121100] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:38.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-28T09:49:38.627 [DEBUG] [Thread-121103] [transport.py] [_log()] starting thread (client mode): 0x2e3f8eb0
2025-09-28T09:49:38.627 [DEBUG] [Thread-121103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:38.642 [DEBUG] [Thread-121103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:49:38.642 [INFO] [Thread-121103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:49:38.649 [DEBUG] [Thread-121103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:38.650 [DEBUG] [Thread-121103] [transport.py] [_log()] Compression: none
2025-09-28T09:49:38.651 [DEBUG] [Thread-121103] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:38.709 [DEBUG] [Thread-121103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:38.710 [DEBUG] [Thread-121103] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:38.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:49:38.711 [DEBUG] [Thread-121103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:49:38.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:38.765 [DEBUG] [Thread-121103] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:38.766 [DEBUG] [Thread-121103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:38.766 [DEBUG] [Thread-121103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:38.766 [DEBUG] [Thread-121103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:49:38.766 [DEBUG] [Thread-121103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:38.788 [INFO] [Thread-121103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:38.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-28T09:49:38.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:39.718 [DEBUG] [Thread-121103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:39.719 [DEBUG] [Thread-121103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:39.767 [DEBUG] [Thread-121103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:39.767 [DEBUG] [Thread-121103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:39.781 [DEBUG] [Thread-121103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:39.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:39.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T09:49:39.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-28T09:49:39.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:39.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:39.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:39.813 [DEBUG] [Thread-121103] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:45.458 [DEBUG] [Thread-121105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:49:49.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:49:49.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:49:49.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-28T09:49:50.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 49, 45), 11.32, 46.96, 0.0, 10.34, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:49:50.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:49:45
2025-09-28T09:49:50.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:49:50.637 [DEBUG] [Thread-121106] [transport.py] [_log()] starting thread (client mode): 0x2e3483d0
2025-09-28T09:49:50.637 [DEBUG] [Thread-121106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:50.656 [DEBUG] [Thread-121106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:49:50.656 [INFO] [Thread-121106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:50.659 [DEBUG] [Thread-121106] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] Compression: none
2025-09-28T09:49:50.660 [DEBUG] [Thread-121106] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:50.669 [DEBUG] [Thread-121106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:50.670 [DEBUG] [Thread-121106] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:50.670 [DEBUG] [Thread-121106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:49:50.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:49:50.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:50.672 [DEBUG] [Thread-121106] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:50.672 [DEBUG] [Thread-121106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:50.672 [DEBUG] [Thread-121106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:50.672 [DEBUG] [Thread-121106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:49:50.672 [DEBUG] [Thread-121106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:50.695 [INFO] [Thread-121106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:50.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:51.280 [DEBUG] [Thread-121106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:51.280 [DEBUG] [Thread-121106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:51.281 [DEBUG] [Thread-121106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:49:51.321 [DEBUG] [Thread-121106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:51.322 [DEBUG] [Thread-121106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:51.325 [DEBUG] [Thread-121106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:51.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:51.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:49:51.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:49:51.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:49:51.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:51.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:49:51.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:51.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:51.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:49:51.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326128 -999.00  +15.70   8.16     49   +5.20 1 1 1 1 1   888    0 12.81 101.55 ----- 9.5 8.2 196.8 12.5 23.9 -27.2 22.3 -25.8 20.9 -25.9 22.1 -27.2
2025-09-28T09:49:51.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:49:51.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:49:51.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326128
2025-09-28T09:49:51.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:49:51.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:49:51.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:49:51.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:49:51.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:49:51.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:49:45', tmtdew=11.32, humidity=46.96, cloud=0.0, wind=10.34, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:49:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:49:51.348 [DEBUG] [Thread-121106] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:49:51.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-28T09:49:51.470 [DEBUG] [Thread-121109] [transport.py] [_log()] starting thread (client mode): 0x30ddf880
2025-09-28T09:49:51.470 [DEBUG] [Thread-121109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:49:51.504 [DEBUG] [Thread-121109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:49:51.504 [INFO] [Thread-121109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:49:51.512 [DEBUG] [Thread-121109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:49:51.512 [DEBUG] [Thread-121109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:49:51.512 [DEBUG] [Thread-121109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] client lang: <none>
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] server lang: <none>
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] kex follows: False
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:49:51.513 [DEBUG] [Thread-121109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:49:51.514 [DEBUG] [Thread-121109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:49:51.514 [DEBUG] [Thread-121109] [transport.py] [_log()] Compression: none
2025-09-28T09:49:51.514 [DEBUG] [Thread-121109] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:49:51.569 [DEBUG] [Thread-121109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:49:51.570 [DEBUG] [Thread-121109] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:49:51.570 [DEBUG] [Thread-121109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:49:51.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:49:51.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:49:51.626 [DEBUG] [Thread-121109] [transport.py] [_log()] userauth is OK
2025-09-28T09:49:51.626 [DEBUG] [Thread-121109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:49:51.626 [DEBUG] [Thread-121109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:49:51.626 [DEBUG] [Thread-121109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:49:51.626 [DEBUG] [Thread-121109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:49:51.647 [INFO] [Thread-121109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:49:51.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-28T09:49:51.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:49:52.636 [DEBUG] [Thread-121109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:49:52.637 [DEBUG] [Thread-121109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:49:52.684 [DEBUG] [Thread-121109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:49:52.685 [DEBUG] [Thread-121109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:49:52.694 [DEBUG] [Thread-121109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:49:52.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:49:52.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-28T09:49:52.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-28T09:49:52.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:49:52.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:49:52.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:49:52.730 [DEBUG] [Thread-121109] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:00.487 [DEBUG] [Thread-121111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:00.957 [DEBUG] [Thread-121112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:02.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:50:02.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:50:02.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-28T09:50:03.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 49, 45), 11.32, 46.96, 0.0, 10.34, 14.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:50:03.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:49:45
2025-09-28T09:50:03.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:50:03.540 [DEBUG] [Thread-121113] [transport.py] [_log()] starting thread (client mode): 0x2e3dfdf0
2025-09-28T09:50:03.541 [DEBUG] [Thread-121113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:03.561 [DEBUG] [Thread-121113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:50:03.561 [INFO] [Thread-121113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:50:03.563 [DEBUG] [Thread-121113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:03.563 [DEBUG] [Thread-121113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:50:03.563 [DEBUG] [Thread-121113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:03.563 [DEBUG] [Thread-121113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:03.563 [DEBUG] [Thread-121113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:03.564 [DEBUG] [Thread-121113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:03.565 [DEBUG] [Thread-121113] [transport.py] [_log()] Compression: none
2025-09-28T09:50:03.565 [DEBUG] [Thread-121113] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:03.578 [DEBUG] [Thread-121113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:03.579 [DEBUG] [Thread-121113] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:03.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:50:03.580 [DEBUG] [Thread-121113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:50:03.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:03.582 [DEBUG] [Thread-121113] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:03.583 [DEBUG] [Thread-121113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:03.583 [DEBUG] [Thread-121113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:03.583 [DEBUG] [Thread-121113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:50:03.583 [DEBUG] [Thread-121113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:03.600 [INFO] [Thread-121113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:03.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:15.533 [DEBUG] [Thread-121115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:16.415 [DEBUG] [Thread-121113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:16.416 [DEBUG] [Thread-121113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:16.416 [DEBUG] [Thread-121113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:50:16.456 [DEBUG] [Thread-121113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:16.457 [DEBUG] [Thread-121113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:16.459 [DEBUG] [Thread-121113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:16.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:16.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:50:16.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:50:16.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:50:16.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:16.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:50:16.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:16.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:16.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:50:16.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326128 -999.00  +15.70   8.16     49   +5.20 1 1 1 1 1   888    0 12.81 101.55 ----- 9.5 8.2 196.8 12.5 23.9 -27.2 22.3 -25.8 20.9 -25.9 22.1 -27.2
2025-09-28T09:50:16.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:50:16.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:50:16.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326128
2025-09-28T09:50:16.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:50:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:50:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:50:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:50:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:50:16.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:49:45', tmtdew=11.32, humidity=46.96, cloud=0.0, wind=10.34, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:49:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:50:16.615 [DEBUG] [Thread-121113] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:16.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-28T09:50:16.712 [DEBUG] [Thread-121117] [transport.py] [_log()] starting thread (client mode): 0x30ddff40
2025-09-28T09:50:16.713 [DEBUG] [Thread-121117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:16.732 [DEBUG] [Thread-121117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:50:16.732 [INFO] [Thread-121117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:50:16.739 [DEBUG] [Thread-121117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:16.739 [DEBUG] [Thread-121117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:50:16.739 [DEBUG] [Thread-121117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:16.740 [DEBUG] [Thread-121117] [transport.py] [_log()] Compression: none
2025-09-28T09:50:16.741 [DEBUG] [Thread-121117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:16.797 [DEBUG] [Thread-121117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:16.797 [DEBUG] [Thread-121117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:16.798 [DEBUG] [Thread-121117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:50:16.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:50:16.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:16.853 [DEBUG] [Thread-121117] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:16.853 [DEBUG] [Thread-121117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:16.854 [DEBUG] [Thread-121117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:16.854 [DEBUG] [Thread-121117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:50:16.854 [DEBUG] [Thread-121117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:16.872 [INFO] [Thread-121117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:16.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-28T09:50:16.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:17.848 [DEBUG] [Thread-121117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:17.849 [DEBUG] [Thread-121117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:17.896 [DEBUG] [Thread-121117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:17.896 [DEBUG] [Thread-121117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:17.905 [DEBUG] [Thread-121117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:17.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:17.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-28T09:50:17.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-28T09:50:17.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:17.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:17.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:17.941 [DEBUG] [Thread-121117] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:23.580 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:23.581 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:27.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:50:27.944 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:50:27.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-28T09:50:28.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 50, 17), 11.35, 46.84, 0.0, 9.88, 14.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:50:28.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:50:17
2025-09-28T09:50:28.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:50:28.773 [DEBUG] [Thread-121119] [transport.py] [_log()] starting thread (client mode): 0x30ddd2d0
2025-09-28T09:50:28.773 [DEBUG] [Thread-121119] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:28.792 [DEBUG] [Thread-121119] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:50:28.792 [INFO] [Thread-121119] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:28.795 [DEBUG] [Thread-121119] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] Compression: none
2025-09-28T09:50:28.796 [DEBUG] [Thread-121119] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:28.814 [DEBUG] [Thread-121119] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:28.815 [DEBUG] [Thread-121119] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:28.815 [DEBUG] [Thread-121119] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:50:28.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:50:28.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:28.818 [DEBUG] [Thread-121119] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:28.818 [DEBUG] [Thread-121119] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:28.818 [DEBUG] [Thread-121119] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:28.818 [DEBUG] [Thread-121119] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:50:28.818 [DEBUG] [Thread-121119] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:28.835 [INFO] [Thread-121119] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:28.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:29.425 [DEBUG] [Thread-121119] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:29.425 [DEBUG] [Thread-121119] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:29.425 [DEBUG] [Thread-121119] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:50:29.466 [DEBUG] [Thread-121119] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:29.466 [DEBUG] [Thread-121119] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:29.468 [DEBUG] [Thread-121119] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:29.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:29.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:50:29.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:50:29.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:50:29.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:29.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:50:29.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326475 -999.00  +15.90   2.88     50   +5.60 1 1 1 1 1   888    0 12.22 87.51 ----- 8.5 2.9 344.3 8.0 23.9 -27.2 22.3 -25.2 21.0 -25.6 22.2 -26.8
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326475
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:50:29.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:50:17', tmtdew=11.35, humidity=46.84, cloud=0.0, wind=9.88, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:50:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:50:29.482 [DEBUG] [Thread-121119] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:29.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-28T09:50:29.563 [DEBUG] [Thread-121122] [transport.py] [_log()] starting thread (client mode): 0x2e363be0
2025-09-28T09:50:29.564 [DEBUG] [Thread-121122] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:29.582 [DEBUG] [Thread-121122] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:50:29.582 [INFO] [Thread-121122] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:29.590 [DEBUG] [Thread-121122] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] Compression: none
2025-09-28T09:50:29.591 [DEBUG] [Thread-121122] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:29.649 [DEBUG] [Thread-121122] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:29.650 [DEBUG] [Thread-121122] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:29.650 [DEBUG] [Thread-121122] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:50:29.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:50:29.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:29.711 [DEBUG] [Thread-121122] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:29.711 [DEBUG] [Thread-121122] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:29.711 [DEBUG] [Thread-121122] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:29.711 [DEBUG] [Thread-121122] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:50:29.711 [DEBUG] [Thread-121122] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:29.730 [INFO] [Thread-121122] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:29.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-28T09:50:29.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:30.564 [DEBUG] [Thread-121124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:30.738 [DEBUG] [Thread-121122] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:30.738 [DEBUG] [Thread-121122] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:30.787 [DEBUG] [Thread-121122] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:30.787 [DEBUG] [Thread-121122] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:30.797 [DEBUG] [Thread-121122] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:30.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:30.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-28T09:50:30.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-28T09:50:30.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:30.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:30.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:30.840 [DEBUG] [Thread-121122] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:40.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:50:40.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:50:40.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-28T09:50:41.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 50, 17), 11.35, 46.84, 0.0, 9.88, 14.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:50:41.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:50:17
2025-09-28T09:50:41.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:50:41.664 [DEBUG] [Thread-121125] [transport.py] [_log()] starting thread (client mode): 0x2b946b30
2025-09-28T09:50:41.664 [DEBUG] [Thread-121125] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:41.685 [DEBUG] [Thread-121125] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:50:41.685 [INFO] [Thread-121125] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] Compression: none
2025-09-28T09:50:41.687 [DEBUG] [Thread-121125] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:41.701 [DEBUG] [Thread-121125] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:41.701 [DEBUG] [Thread-121125] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:41.702 [DEBUG] [Thread-121125] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:50:41.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:50:41.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:41.704 [DEBUG] [Thread-121125] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:41.704 [DEBUG] [Thread-121125] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:41.704 [DEBUG] [Thread-121125] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:41.704 [DEBUG] [Thread-121125] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:50:41.704 [DEBUG] [Thread-121125] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:41.728 [INFO] [Thread-121125] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:41.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:42.455 [DEBUG] [Thread-121125] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:42.456 [DEBUG] [Thread-121125] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:42.456 [DEBUG] [Thread-121125] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:50:42.496 [DEBUG] [Thread-121125] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:42.497 [DEBUG] [Thread-121125] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:42.499 [DEBUG] [Thread-121125] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:42.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:42.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:50:42.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:50:42.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:50:42.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:42.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:50:42.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:42.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:42.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:50:42.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326475 -999.00  +15.90   2.88     50   +5.60 1 1 1 1 1   888    0 12.22 87.51 ----- 8.5 2.9 344.3 8.0 23.9 -27.2 22.3 -25.2 21.0 -25.6 22.2 -26.8
2025-09-28T09:50:42.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:50:42.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:50:42.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326475
2025-09-28T09:50:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:50:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:50:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:50:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:50:42.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:50:42.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:50:17', tmtdew=11.35, humidity=46.84, cloud=0.0, wind=9.88, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:50:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:50:42.527 [DEBUG] [Thread-121125] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:42.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-28T09:50:42.626 [DEBUG] [Thread-121128] [transport.py] [_log()] starting thread (client mode): 0x30ddf790
2025-09-28T09:50:42.626 [DEBUG] [Thread-121128] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:42.641 [DEBUG] [Thread-121128] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:50:42.642 [INFO] [Thread-121128] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:50:42.649 [DEBUG] [Thread-121128] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:42.649 [DEBUG] [Thread-121128] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:42.650 [DEBUG] [Thread-121128] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:42.651 [DEBUG] [Thread-121128] [transport.py] [_log()] Compression: none
2025-09-28T09:50:42.651 [DEBUG] [Thread-121128] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:42.711 [DEBUG] [Thread-121128] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:42.711 [DEBUG] [Thread-121128] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:42.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:50:42.712 [DEBUG] [Thread-121128] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:50:42.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:42.772 [DEBUG] [Thread-121128] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:42.772 [DEBUG] [Thread-121128] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:42.772 [DEBUG] [Thread-121128] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:42.772 [DEBUG] [Thread-121128] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:50:42.772 [DEBUG] [Thread-121128] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:42.793 [INFO] [Thread-121128] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:42.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-28T09:50:42.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:43.765 [DEBUG] [Thread-121128] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:43.765 [DEBUG] [Thread-121128] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:43.815 [DEBUG] [Thread-121128] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:43.815 [DEBUG] [Thread-121128] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:43.826 [DEBUG] [Thread-121128] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:43.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:43.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')
2025-09-28T09:50:43.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') -> 00000000
2025-09-28T09:50:43.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:43.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:43.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:43.862 [DEBUG] [Thread-121128] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:45.611 [DEBUG] [Thread-121130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:50:53.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:50:53.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:50:53.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:50:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 50, 49), 11.68, 45.46, 0.0, 12.44, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:50:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:50:49
2025-09-28T09:50:54.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:50:54.683 [DEBUG] [Thread-121131] [transport.py] [_log()] starting thread (client mode): 0x2e3c27a0
2025-09-28T09:50:54.683 [DEBUG] [Thread-121131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:54.702 [DEBUG] [Thread-121131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:50:54.702 [INFO] [Thread-121131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:54.706 [DEBUG] [Thread-121131] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] Compression: none
2025-09-28T09:50:54.707 [DEBUG] [Thread-121131] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:54.722 [DEBUG] [Thread-121131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:54.723 [DEBUG] [Thread-121131] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:54.723 [DEBUG] [Thread-121131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:50:54.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:50:54.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:54.764 [DEBUG] [Thread-121131] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:54.764 [DEBUG] [Thread-121131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:54.764 [DEBUG] [Thread-121131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:54.765 [DEBUG] [Thread-121131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:50:54.765 [DEBUG] [Thread-121131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:54.797 [INFO] [Thread-121131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:54.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:55.539 [DEBUG] [Thread-121131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:55.539 [DEBUG] [Thread-121131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:55.539 [DEBUG] [Thread-121131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:50:55.580 [DEBUG] [Thread-121131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:55.580 [DEBUG] [Thread-121131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:55.583 [DEBUG] [Thread-121131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:55.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:55.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:50:55.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:50:55.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:50:55.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:55.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:50:55.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:55.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326475 -999.00  +15.90   2.88     50   +5.60 1 1 1 1 1   888    0 12.22 87.51 ----- 8.5 2.9 344.3 8.0 23.9 -27.2 22.3 -25.2 21.0 -25.6 22.2 -26.8
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326475
2025-09-28T09:50:55.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:50:55.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:50:55.608 [DEBUG] [Thread-121131] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:50:55.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:50:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:50:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:50:55.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:50:49', tmtdew=11.68, humidity=45.46, cloud=0.0, wind=12.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:50:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:50:55.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-28T09:50:55.692 [DEBUG] [Thread-121134] [transport.py] [_log()] starting thread (client mode): 0x30ddd3c0
2025-09-28T09:50:55.692 [DEBUG] [Thread-121134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:50:55.707 [DEBUG] [Thread-121134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:50:55.707 [INFO] [Thread-121134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:50:55.714 [DEBUG] [Thread-121134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] client lang: <none>
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] server lang: <none>
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] kex follows: False
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] Compression: none
2025-09-28T09:50:55.715 [DEBUG] [Thread-121134] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:50:55.773 [DEBUG] [Thread-121134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:50:55.773 [DEBUG] [Thread-121134] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:50:55.774 [DEBUG] [Thread-121134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:50:55.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:50:55.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:50:55.829 [DEBUG] [Thread-121134] [transport.py] [_log()] userauth is OK
2025-09-28T09:50:55.829 [DEBUG] [Thread-121134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:50:55.829 [DEBUG] [Thread-121134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:50:55.829 [DEBUG] [Thread-121134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:50:55.829 [DEBUG] [Thread-121134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:50:55.849 [INFO] [Thread-121134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:50:55.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:50:55.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:50:56.847 [DEBUG] [Thread-121134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:50:56.848 [DEBUG] [Thread-121134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:50:56.895 [DEBUG] [Thread-121134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:50:56.895 [DEBUG] [Thread-121134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:50:57.122 [DEBUG] [Thread-121134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:50:57.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:50:57.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-28T09:50:57.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-28T09:50:57.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:50:57.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:50:57.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:50:57.158 [DEBUG] [Thread-121134] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:51:00.636 [DEBUG] [Thread-121136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:00.985 [DEBUG] [Thread-121137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:07.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:51:07.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:51:07.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:51:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 50, 49), 11.68, 45.46, 0.0, 12.44, 14.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:51:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:50:49
2025-09-28T09:51:07.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:51:07.988 [DEBUG] [Thread-121138] [transport.py] [_log()] starting thread (client mode): 0x2e3dc310
2025-09-28T09:51:07.988 [DEBUG] [Thread-121138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:51:08.007 [DEBUG] [Thread-121138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:51:08.007 [INFO] [Thread-121138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:51:08.008 [DEBUG] [Thread-121138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] client lang: <none>
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] server lang: <none>
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] kex follows: False
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] Compression: none
2025-09-28T09:51:08.009 [DEBUG] [Thread-121138] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:51:08.021 [DEBUG] [Thread-121138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:51:08.022 [DEBUG] [Thread-121138] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:51:08.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:51:08.023 [DEBUG] [Thread-121138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:51:08.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:51:08.025 [DEBUG] [Thread-121138] [transport.py] [_log()] userauth is OK
2025-09-28T09:51:08.025 [DEBUG] [Thread-121138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:51:08.025 [DEBUG] [Thread-121138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:51:08.025 [DEBUG] [Thread-121138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:51:08.025 [DEBUG] [Thread-121138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:51:08.039 [INFO] [Thread-121138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:51:08.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:51:08.628 [DEBUG] [Thread-121138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:51:08.629 [DEBUG] [Thread-121138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:51:08.629 [DEBUG] [Thread-121138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:51:08.669 [DEBUG] [Thread-121138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:51:08.669 [DEBUG] [Thread-121138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:51:08.672 [DEBUG] [Thread-121138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:51:08.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:51:08.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:51:08.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:51:08.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:51:08.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:51:08.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:51:08.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.326822 -999.00  +16.00  11.29     49   +5.50 1 1 1 1 1   888    0 12.16 91.06 ----- 7.0 11.3 204.0 16.1 23.8 -28.4 22.2 -28.4 21.0 -26.0 22.2 -27.3
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.326822
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:51:08.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:50:49', tmtdew=11.68, humidity=45.46, cloud=0.0, wind=12.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:50:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:51:08.700 [DEBUG] [Thread-121138] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:51:08.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:51:15.671 [DEBUG] [Thread-121141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:23.734 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:23.735 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:30.716 [DEBUG] [Thread-121142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:51:45.747 [DEBUG] [Thread-121143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:00.773 [DEBUG] [Thread-121144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:01.050 [DEBUG] [Thread-121145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:15.804 [DEBUG] [Thread-121146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:23.875 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:23.877 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:30.834 [DEBUG] [Thread-121147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:52:45.866 [DEBUG] [Thread-121148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:00.897 [DEBUG] [Thread-121149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:01.106 [DEBUG] [Thread-121150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:15.928 [DEBUG] [Thread-121151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:23.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-28T09:53:24.026 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:24.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:30.957 [DEBUG] [Thread-121152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:33.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:53:33.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:53:33.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-28T09:53:34.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 53, 29), 11.38, 46.39, 0.0, 7.75, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:53:34.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:53:29
2025-09-28T09:53:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:53:34.819 [DEBUG] [Thread-121153] [transport.py] [_log()] starting thread (client mode): 0x2b9de890
2025-09-28T09:53:34.820 [DEBUG] [Thread-121153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:53:34.847 [DEBUG] [Thread-121153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:53:34.847 [INFO] [Thread-121153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] client lang: <none>
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] server lang: <none>
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] kex follows: False
2025-09-28T09:53:34.850 [DEBUG] [Thread-121153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] Compression: none
2025-09-28T09:53:34.851 [DEBUG] [Thread-121153] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:53:34.870 [DEBUG] [Thread-121153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:53:34.870 [DEBUG] [Thread-121153] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:53:34.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:53:34.870 [DEBUG] [Thread-121153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:53:34.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:53:34.871 [DEBUG] [Thread-121153] [transport.py] [_log()] userauth is OK
2025-09-28T09:53:34.871 [DEBUG] [Thread-121153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:53:34.871 [DEBUG] [Thread-121153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:53:34.871 [DEBUG] [Thread-121153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:53:34.871 [DEBUG] [Thread-121153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:53:34.880 [INFO] [Thread-121153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:53:34.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:53:35.540 [DEBUG] [Thread-121153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:53:35.540 [DEBUG] [Thread-121153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:53:35.540 [DEBUG] [Thread-121153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:53:35.581 [DEBUG] [Thread-121153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:53:35.581 [DEBUG] [Thread-121153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:53:35.585 [DEBUG] [Thread-121153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:53:35.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:53:35.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:53:35.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:53:35.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:53:35.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:53:35.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:53:35.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:53:35.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:53:35.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:53:35.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.328559 -999.00  +15.70   6.39     48   +4.80 1 1 1 1 1   888    0 12.21 89.19 ----- 5.4 6.4 176.2 12.0 23.9 -26.6 22.0 -30.0 21.0 -26.2 22.2 -26.8
2025-09-28T09:53:35.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:53:35.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:53:35.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.328559
2025-09-28T09:53:35.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:53:35.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:53:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:53:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:53:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:53:35.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:53:29', tmtdew=11.38, humidity=46.39, cloud=0.0, wind=7.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:53:07.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:53:35.611 [DEBUG] [Thread-121153] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:53:35.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-28T09:53:35.702 [DEBUG] [Thread-121156] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T09:53:35.702 [DEBUG] [Thread-121156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:53:35.721 [DEBUG] [Thread-121156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:53:35.722 [INFO] [Thread-121156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] client lang: <none>
2025-09-28T09:53:35.730 [DEBUG] [Thread-121156] [transport.py] [_log()] server lang: <none>
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] kex follows: False
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] Compression: none
2025-09-28T09:53:35.731 [DEBUG] [Thread-121156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:53:35.788 [DEBUG] [Thread-121156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:53:35.788 [DEBUG] [Thread-121156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:53:35.789 [DEBUG] [Thread-121156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:53:35.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:53:35.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:53:35.844 [DEBUG] [Thread-121156] [transport.py] [_log()] userauth is OK
2025-09-28T09:53:35.845 [DEBUG] [Thread-121156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:53:35.845 [DEBUG] [Thread-121156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:53:35.845 [DEBUG] [Thread-121156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:53:35.845 [DEBUG] [Thread-121156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:53:35.865 [INFO] [Thread-121156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:53:35.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-28T09:53:35.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:53:36.848 [DEBUG] [Thread-121156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:53:36.848 [DEBUG] [Thread-121156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:53:36.897 [DEBUG] [Thread-121156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:53:36.897 [DEBUG] [Thread-121156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:53:36.905 [DEBUG] [Thread-121156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:53:36.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:53:36.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-28T09:53: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') -> 00000000
2025-09-28T09:53:36.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:53:36.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:53:36.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:53:36.940 [DEBUG] [Thread-121156] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:53:45.985 [DEBUG] [Thread-121158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:53:46.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:53:46.943 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:53:46.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-28T09:53:47.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 53, 29), 11.38, 46.39, 0.0, 7.75, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:53:47.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:53:29
2025-09-28T09:53:47.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:53:47.802 [DEBUG] [Thread-121159] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ea0
2025-09-28T09:53:47.802 [DEBUG] [Thread-121159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:53:47.816 [DEBUG] [Thread-121159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:53:47.816 [INFO] [Thread-121159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] client lang: <none>
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] server lang: <none>
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] kex follows: False
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:53:47.820 [DEBUG] [Thread-121159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:53:47.821 [DEBUG] [Thread-121159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:53:47.821 [DEBUG] [Thread-121159] [transport.py] [_log()] Compression: none
2025-09-28T09:53:47.821 [DEBUG] [Thread-121159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:53:47.837 [DEBUG] [Thread-121159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:53:47.837 [DEBUG] [Thread-121159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:53:47.838 [DEBUG] [Thread-121159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:53:47.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:53:47.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:53:47.840 [DEBUG] [Thread-121159] [transport.py] [_log()] userauth is OK
2025-09-28T09:53:47.840 [DEBUG] [Thread-121159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:53:47.840 [DEBUG] [Thread-121159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:53:47.840 [DEBUG] [Thread-121159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:53:47.840 [DEBUG] [Thread-121159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:53:47.858 [INFO] [Thread-121159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:53:47.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:53:48.432 [DEBUG] [Thread-121159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:53:48.433 [DEBUG] [Thread-121159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:53:48.433 [DEBUG] [Thread-121159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:53:48.473 [DEBUG] [Thread-121159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:53:48.474 [DEBUG] [Thread-121159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:53:48.477 [DEBUG] [Thread-121159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:53:48.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:53:48.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:53:48.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:53:48.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:53:48.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:53:48.500 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:53:48.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.328906 -999.00  +15.90   4.35     48   +5.10 1 1 1 1 1   888    0 12.44 92.69 ----- 6.5 4.3 161.4 12.3 23.9 -27.3 22.2 -27.1 21.1 -25.4 22.4 -26.1
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:53:48.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.328906
2025-09-28T09:53:48.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:53:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:53:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:53:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:53:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:53:48.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:53:29', tmtdew=11.38, humidity=46.39, cloud=0.0, wind=7.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:53:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:53:48.503 [DEBUG] [Thread-121159] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:53:48.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-28T09:53:48.597 [DEBUG] [Thread-121162] [transport.py] [_log()] starting thread (client mode): 0x2e3c30d0
2025-09-28T09:53:48.598 [DEBUG] [Thread-121162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:53:48.612 [DEBUG] [Thread-121162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:53:48.612 [INFO] [Thread-121162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:48.619 [DEBUG] [Thread-121162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] client lang: <none>
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] server lang: <none>
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] kex follows: False
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] Compression: none
2025-09-28T09:53:48.620 [DEBUG] [Thread-121162] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:53:48.679 [DEBUG] [Thread-121162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:53:48.680 [DEBUG] [Thread-121162] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:53:48.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:53:48.681 [DEBUG] [Thread-121162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:53:48.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:53:48.736 [DEBUG] [Thread-121162] [transport.py] [_log()] userauth is OK
2025-09-28T09:53:48.736 [DEBUG] [Thread-121162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:53:48.736 [DEBUG] [Thread-121162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:53:48.736 [DEBUG] [Thread-121162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:53:48.737 [DEBUG] [Thread-121162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:53:48.756 [INFO] [Thread-121162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:53:48.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:53:48.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:53:49.697 [DEBUG] [Thread-121162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:53:49.698 [DEBUG] [Thread-121162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:53:49.745 [DEBUG] [Thread-121162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:53:49.745 [DEBUG] [Thread-121162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:53:49.754 [DEBUG] [Thread-121162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:53:49.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:53:49.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-28T09:53:49.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-28T09:53:49.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:53:49.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:53:49.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:53:49.788 [DEBUG] [Thread-121162] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:53:59.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:53:59.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:53:59.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:54:00.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 53, 29), 11.38, 46.39, 0.0, 7.75, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:54:00.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:53:29
2025-09-28T09:54:00.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:54:00.655 [DEBUG] [Thread-121164] [transport.py] [_log()] starting thread (client mode): 0x2e3c3670
2025-09-28T09:54:00.656 [DEBUG] [Thread-121164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:00.675 [DEBUG] [Thread-121164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:54:00.675 [INFO] [Thread-121164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:54:00.678 [DEBUG] [Thread-121164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:00.678 [DEBUG] [Thread-121164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:54:00.678 [DEBUG] [Thread-121164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:00.678 [DEBUG] [Thread-121164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:00.678 [DEBUG] [Thread-121164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] Compression: none
2025-09-28T09:54:00.679 [DEBUG] [Thread-121164] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:00.688 [DEBUG] [Thread-121164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:00.689 [DEBUG] [Thread-121164] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:00.689 [DEBUG] [Thread-121164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:54:00.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:54:00.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:00.691 [DEBUG] [Thread-121164] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:00.691 [DEBUG] [Thread-121164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:00.691 [DEBUG] [Thread-121164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:00.691 [DEBUG] [Thread-121164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:54:00.691 [DEBUG] [Thread-121164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:00.714 [INFO] [Thread-121164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:00.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:01.025 [DEBUG] [Thread-121166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:01.166 [DEBUG] [Thread-121167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:01.346 [DEBUG] [Thread-121164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:01.346 [DEBUG] [Thread-121164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:01.346 [DEBUG] [Thread-121164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:54:01.387 [DEBUG] [Thread-121164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:01.387 [DEBUG] [Thread-121164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:01.389 [DEBUG] [Thread-121164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:01.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:01.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:54:01.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:54:01.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:54:01.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:01.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:54:01.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:01.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:01.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:54:01.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.328906 -999.00  +15.90   4.35     48   +5.10 1 1 1 1 1   888    0 12.44 92.69 ----- 6.5 4.3 161.4 12.3 23.9 -27.3 22.2 -27.1 21.1 -25.4 22.4 -26.1
2025-09-28T09:54:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:54:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:54:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.328906
2025-09-28T09:54:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:54:01.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:54:01.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:54:01.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:54:01.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:54:01.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:53:29', tmtdew=11.38, humidity=46.39, cloud=0.0, wind=7.75, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:53:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:54:01.412 [DEBUG] [Thread-121164] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:01.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-28T09:54:01.508 [DEBUG] [Thread-121169] [transport.py] [_log()] starting thread (client mode): 0x2e3de470
2025-09-28T09:54:01.509 [DEBUG] [Thread-121169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:01.523 [DEBUG] [Thread-121169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:54:01.523 [INFO] [Thread-121169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:54:01.530 [DEBUG] [Thread-121169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:01.531 [DEBUG] [Thread-121169] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] Compression: none
2025-09-28T09:54:01.532 [DEBUG] [Thread-121169] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:01.592 [DEBUG] [Thread-121169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:01.592 [DEBUG] [Thread-121169] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:01.593 [DEBUG] [Thread-121169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:54:01.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:54:01.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:01.647 [DEBUG] [Thread-121169] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:01.647 [DEBUG] [Thread-121169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:01.648 [DEBUG] [Thread-121169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:01.648 [DEBUG] [Thread-121169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:54:01.648 [DEBUG] [Thread-121169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:01.666 [INFO] [Thread-121169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:01.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-28T09:54:01.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:02.764 [DEBUG] [Thread-121169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:02.765 [DEBUG] [Thread-121169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:02.813 [DEBUG] [Thread-121169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:02.813 [DEBUG] [Thread-121169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:02.822 [DEBUG] [Thread-121169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:02.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:02.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-28T09:54:02.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-28T09:54:02.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:02.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:02.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:02.853 [DEBUG] [Thread-121169] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:12.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:54:12.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:54:12.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-28T09:54:13.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 54, 1), 11.47, 46.11, 0.0, 8.33, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:54:13.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:54:01
2025-09-28T09:54:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:54:13.742 [DEBUG] [Thread-121171] [transport.py] [_log()] starting thread (client mode): 0x2e3df670
2025-09-28T09:54:13.743 [DEBUG] [Thread-121171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:13.753 [DEBUG] [Thread-121171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:54:13.753 [INFO] [Thread-121171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] Compression: none
2025-09-28T09:54:13.757 [DEBUG] [Thread-121171] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:13.773 [DEBUG] [Thread-121171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:13.774 [DEBUG] [Thread-121171] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:13.774 [DEBUG] [Thread-121171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:54:13.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:54:13.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:13.775 [DEBUG] [Thread-121171] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:13.776 [DEBUG] [Thread-121171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:13.776 [DEBUG] [Thread-121171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:13.776 [DEBUG] [Thread-121171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:54:13.776 [DEBUG] [Thread-121171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:13.796 [INFO] [Thread-121171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:13.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:14.418 [DEBUG] [Thread-121171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:14.418 [DEBUG] [Thread-121171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:14.418 [DEBUG] [Thread-121171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:54:14.459 [DEBUG] [Thread-121171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:14.459 [DEBUG] [Thread-121171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:14.461 [DEBUG] [Thread-121171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:14.473 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:54:14.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:54:14.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:54:14.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:14.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:54:14.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.328906 -999.00  +15.90   4.35     48   +5.10 1 1 1 1 1   888    0 12.44 92.69 ----- 6.5 4.3 161.4 12.3 23.9 -27.3 22.2 -27.1 21.1 -25.4 22.4 -26.1
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.328906
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:54:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:54:01', tmtdew=11.47, humidity=46.11, cloud=0.0, wind=8.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:53:37.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:54:14.483 [DEBUG] [Thread-121171] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:14.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-28T09:54:14.566 [DEBUG] [Thread-121174] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-28T09:54:14.566 [DEBUG] [Thread-121174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:14.580 [DEBUG] [Thread-121174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:54:14.580 [INFO] [Thread-121174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] Compression: none
2025-09-28T09:54:14.588 [DEBUG] [Thread-121174] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:14.649 [DEBUG] [Thread-121174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:14.649 [DEBUG] [Thread-121174] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:14.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:54:14.650 [DEBUG] [Thread-121174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:54:14.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:14.708 [DEBUG] [Thread-121174] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:14.708 [DEBUG] [Thread-121174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:14.708 [DEBUG] [Thread-121174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:14.708 [DEBUG] [Thread-121174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:54:14.708 [DEBUG] [Thread-121174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:14.727 [INFO] [Thread-121174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54: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-28T09:54:14.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:15.684 [DEBUG] [Thread-121174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:15.684 [DEBUG] [Thread-121174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:15.731 [DEBUG] [Thread-121174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:15.732 [DEBUG] [Thread-121174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:15.741 [DEBUG] [Thread-121174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:15.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:15.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-28T09:54:15.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-28T09:54:15.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:15.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:15.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:15.777 [DEBUG] [Thread-121174] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:16.079 [DEBUG] [Thread-121176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:24.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:24.173 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:25.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:54:25.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:54:25.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-28T09:54:26.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 54, 1), 11.47, 46.11, 0.0, 8.33, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:54:26.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:54:01
2025-09-28T09:54:26.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:54:26.646 [DEBUG] [Thread-121177] [transport.py] [_log()] starting thread (client mode): 0x2b9b97b0
2025-09-28T09:54:26.646 [DEBUG] [Thread-121177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:26.662 [DEBUG] [Thread-121177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:54:26.662 [INFO] [Thread-121177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:26.665 [DEBUG] [Thread-121177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] Compression: none
2025-09-28T09:54:26.666 [DEBUG] [Thread-121177] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:26.680 [DEBUG] [Thread-121177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:26.680 [DEBUG] [Thread-121177] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:26.681 [DEBUG] [Thread-121177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:54:26.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:54:26.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:26.683 [DEBUG] [Thread-121177] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:26.683 [DEBUG] [Thread-121177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:26.683 [DEBUG] [Thread-121177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:26.683 [DEBUG] [Thread-121177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:54:26.683 [DEBUG] [Thread-121177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:26.707 [INFO] [Thread-121177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:26.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:27.334 [DEBUG] [Thread-121177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:27.334 [DEBUG] [Thread-121177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:27.334 [DEBUG] [Thread-121177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:54:27.375 [DEBUG] [Thread-121177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:27.375 [DEBUG] [Thread-121177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:27.378 [DEBUG] [Thread-121177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:27.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:27.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:54:27.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:54:27.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:54:27.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:27.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:54:27.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:27.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:27.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:54:27.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.329253 -999.00  +16.00   3.92     47   +5.00 1 1 1 1 1   888    0 12.51 89.79 ----- 6.3 3.9 163.2 6.8 24.0 -26.5 22.4 -26.8 21.1 -26.5 22.4 -25.8
2025-09-28T09:54:27.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:54:27.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:54:27.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.329253
2025-09-28T09:54:27.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:54:27.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:54:27.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:54:27.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:54:27.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:54:27.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:54:01', tmtdew=11.47, humidity=46.11, cloud=0.0, wind=8.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:54:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:54:27.404 [DEBUG] [Thread-121177] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:27.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-28T09:54:27.500 [DEBUG] [Thread-121180] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-28T09:54:27.500 [DEBUG] [Thread-121180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:27.515 [DEBUG] [Thread-121180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:54:27.515 [INFO] [Thread-121180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:27.523 [DEBUG] [Thread-121180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:27.524 [DEBUG] [Thread-121180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:27.525 [DEBUG] [Thread-121180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:27.525 [DEBUG] [Thread-121180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:27.525 [DEBUG] [Thread-121180] [transport.py] [_log()] Compression: none
2025-09-28T09:54:27.525 [DEBUG] [Thread-121180] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:27.580 [DEBUG] [Thread-121180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:27.580 [DEBUG] [Thread-121180] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:27.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:54:27.582 [DEBUG] [Thread-121180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:54:27.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:27.636 [DEBUG] [Thread-121180] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:27.636 [DEBUG] [Thread-121180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:27.636 [DEBUG] [Thread-121180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:27.636 [DEBUG] [Thread-121180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:54:27.636 [DEBUG] [Thread-121180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:27.655 [INFO] [Thread-121180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:27.655 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:54:27.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:28.643 [DEBUG] [Thread-121180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:28.643 [DEBUG] [Thread-121180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:28.691 [DEBUG] [Thread-121180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:28.691 [DEBUG] [Thread-121180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:28.700 [DEBUG] [Thread-121180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:28.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:28.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-28T09:54:28.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-28T09:54:28.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:28.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:28.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:28.735 [DEBUG] [Thread-121180] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:31.120 [DEBUG] [Thread-121182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:38.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:54:38.738 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:54:38.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-28T09:54:39.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 54, 33), 11.47, 46.11, 0.0, 6.74, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:54:39.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:54:33
2025-09-28T09:54:39.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:54:39.597 [DEBUG] [Thread-121183] [transport.py] [_log()] starting thread (client mode): 0x2e3480d0
2025-09-28T09:54:39.597 [DEBUG] [Thread-121183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:39.619 [DEBUG] [Thread-121183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:54:39.619 [INFO] [Thread-121183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:39.621 [DEBUG] [Thread-121183] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] Compression: none
2025-09-28T09:54:39.622 [DEBUG] [Thread-121183] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:39.638 [DEBUG] [Thread-121183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:39.639 [DEBUG] [Thread-121183] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:39.640 [DEBUG] [Thread-121183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:54:39.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:54:39.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:39.642 [DEBUG] [Thread-121183] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:39.643 [DEBUG] [Thread-121183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:39.643 [DEBUG] [Thread-121183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:39.643 [DEBUG] [Thread-121183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:54:39.643 [DEBUG] [Thread-121183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:39.665 [INFO] [Thread-121183] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:39.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:40.308 [DEBUG] [Thread-121183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:40.308 [DEBUG] [Thread-121183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:40.309 [DEBUG] [Thread-121183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:54:40.349 [DEBUG] [Thread-121183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:40.349 [DEBUG] [Thread-121183] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:40.352 [DEBUG] [Thread-121183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:40.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:40.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:54:40.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:54:40.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:54:40.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:40.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:54:40.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:40.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:40.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:54:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.329253 -999.00  +16.00   3.92     47   +5.00 1 1 1 1 1   888    0 12.51 89.79 ----- 6.3 3.9 163.2 6.8 24.0 -26.5 22.4 -26.8 21.1 -26.5 22.4 -25.8
2025-09-28T09:54:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:54:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:54:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.329253
2025-09-28T09:54:40.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:54:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:54:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:54:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:54:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:54:40.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:54:33', tmtdew=11.47, humidity=46.11, cloud=0.0, wind=6.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:54:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:54:40.377 [DEBUG] [Thread-121183] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:40.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-28T09:54:40.474 [DEBUG] [Thread-121186] [transport.py] [_log()] starting thread (client mode): 0x30ddd2d0
2025-09-28T09:54:40.474 [DEBUG] [Thread-121186] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:40.489 [DEBUG] [Thread-121186] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:54:40.489 [INFO] [Thread-121186] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:40.497 [DEBUG] [Thread-121186] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:40.498 [DEBUG] [Thread-121186] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:40.498 [DEBUG] [Thread-121186] [transport.py] [_log()] Compression: none
2025-09-28T09:54:40.498 [DEBUG] [Thread-121186] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:40.555 [DEBUG] [Thread-121186] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:40.555 [DEBUG] [Thread-121186] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:40.556 [DEBUG] [Thread-121186] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:54:40.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:54:40.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:40.611 [DEBUG] [Thread-121186] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:40.612 [DEBUG] [Thread-121186] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:40.612 [DEBUG] [Thread-121186] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:40.612 [DEBUG] [Thread-121186] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:54:40.612 [DEBUG] [Thread-121186] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:40.631 [INFO] [Thread-121186] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:40.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-28T09:54:40.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:41.617 [DEBUG] [Thread-121186] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:41.617 [DEBUG] [Thread-121186] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:41.665 [DEBUG] [Thread-121186] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:41.665 [DEBUG] [Thread-121186] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:41.674 [DEBUG] [Thread-121186] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:41.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:41.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-28T09:54:41.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T09:54:41.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:41.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:41.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:41.709 [DEBUG] [Thread-121186] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:46.170 [DEBUG] [Thread-121188 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:54:51.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:54:51.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:54:51.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-28T09:54:52.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 54, 33), 11.47, 46.11, 0.0, 6.74, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:54:52.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:54:33
2025-09-28T09:54:52.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:54:52.583 [DEBUG] [Thread-121189] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T09:54:52.583 [DEBUG] [Thread-121189] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:52.603 [DEBUG] [Thread-121189] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:54:52.603 [INFO] [Thread-121189] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:54:52.606 [DEBUG] [Thread-121189] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] Compression: none
2025-09-28T09:54:52.607 [DEBUG] [Thread-121189] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:52.615 [DEBUG] [Thread-121189] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:52.615 [DEBUG] [Thread-121189] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:52.616 [DEBUG] [Thread-121189] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:54:52.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:54:52.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:52.617 [DEBUG] [Thread-121189] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:52.618 [DEBUG] [Thread-121189] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:52.618 [DEBUG] [Thread-121189] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:52.618 [DEBUG] [Thread-121189] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:54:52.618 [DEBUG] [Thread-121189] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:52.636 [INFO] [Thread-121189] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:52.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:53.217 [DEBUG] [Thread-121189] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:53.217 [DEBUG] [Thread-121189] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:53.218 [DEBUG] [Thread-121189] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:54:53.258 [DEBUG] [Thread-121189] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:53.259 [DEBUG] [Thread-121189] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:53.261 [DEBUG] [Thread-121189] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:53.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:53.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:54:53.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:54:53.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:54:53.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:53.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:54:53.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:53.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:54:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.329253 -999.00  +16.00   3.92     47   +5.00 1 1 1 1 1   888    0 12.51 89.79 ----- 6.3 3.9 163.2 6.8 24.0 -26.5 22.4 -26.8 21.1 -26.5 22.4 -25.8
2025-09-28T09:54:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:54:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:54:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.329253
2025-09-28T09:54:53.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:54:53.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:54:53.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:54:53.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:54:53.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:54:53.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:54:33', tmtdew=11.47, humidity=46.11, cloud=0.0, wind=6.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:54:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:54:53.288 [DEBUG] [Thread-121189] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:54:53.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-28T09:54:53.386 [DEBUG] [Thread-121192] [transport.py] [_log()] starting thread (client mode): 0x2e348790
2025-09-28T09:54:53.386 [DEBUG] [Thread-121192] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:54:53.400 [DEBUG] [Thread-121192] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:54:53.401 [INFO] [Thread-121192] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] client lang: <none>
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] server lang: <none>
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] kex follows: False
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] Compression: none
2025-09-28T09:54:53.408 [DEBUG] [Thread-121192] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:54:53.467 [DEBUG] [Thread-121192] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:54:53.467 [DEBUG] [Thread-121192] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:54:53.467 [DEBUG] [Thread-121192] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:54:53.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:54:53.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:54:53.523 [DEBUG] [Thread-121192] [transport.py] [_log()] userauth is OK
2025-09-28T09:54:53.523 [DEBUG] [Thread-121192] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:54:53.524 [DEBUG] [Thread-121192] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:54:53.524 [DEBUG] [Thread-121192] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:54:53.524 [DEBUG] [Thread-121192] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:54:53.542 [INFO] [Thread-121192] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:54:53.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-28T09:54:53.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:54:54.530 [DEBUG] [Thread-121192] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:54:54.531 [DEBUG] [Thread-121192] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:54:54.579 [DEBUG] [Thread-121192] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:54:54.579 [DEBUG] [Thread-121192] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:54:54.588 [DEBUG] [Thread-121192] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:54:54.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:54:54.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-28T09:54:54.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-28T09:54:54.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:54:54.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:54:54.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:54:54.622 [DEBUG] [Thread-121192] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:55:01.216 [DEBUG] [Thread-121194 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:01.219 [DEBUG] [Thread-121195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:04.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:55:04.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:55:04.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-28T09:55:05.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 54, 33), 11.47, 46.11, 0.0, 6.74, 14.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:55:05.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:54:33
2025-09-28T09:55:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:55:05.488 [DEBUG] [Thread-121196] [transport.py] [_log()] starting thread (client mode): 0x2e3c0f40
2025-09-28T09:55:05.488 [DEBUG] [Thread-121196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:55:05.509 [DEBUG] [Thread-121196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:55:05.509 [INFO] [Thread-121196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] client lang: <none>
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] server lang: <none>
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] kex follows: False
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:55:05.511 [DEBUG] [Thread-121196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:55:05.512 [DEBUG] [Thread-121196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:55:05.512 [DEBUG] [Thread-121196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:55:05.512 [DEBUG] [Thread-121196] [transport.py] [_log()] Compression: none
2025-09-28T09:55:05.512 [DEBUG] [Thread-121196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:55:05.519 [DEBUG] [Thread-121196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:55:05.520 [DEBUG] [Thread-121196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:55:05.520 [DEBUG] [Thread-121196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:55:05.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:55:05.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:55:05.521 [DEBUG] [Thread-121196] [transport.py] [_log()] userauth is OK
2025-09-28T09:55:05.521 [DEBUG] [Thread-121196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:55:05.521 [DEBUG] [Thread-121196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:55:05.521 [DEBUG] [Thread-121196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:55:05.521 [DEBUG] [Thread-121196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:55:05.538 [INFO] [Thread-121196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:55:05.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:55:14.445 [DEBUG] [Thread-121196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:55:14.445 [DEBUG] [Thread-121196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:55:14.446 [DEBUG] [Thread-121196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:55:14.486 [DEBUG] [Thread-121196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:55:14.487 [DEBUG] [Thread-121196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:55:14.490 [DEBUG] [Thread-121196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:55:14.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:55:14.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:55:14.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:55:14.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:55:14.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:55:14.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:55:14.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.329600 -999.00  +16.00   5.00     49   +5.60 1 1 1 1 1   888    0 12.53 90.50 ----- 5.6 5.0 141.8 8.4 24.3 -26.2 22.5 -25.1 21.2 -25.4 22.4 -26.0
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:55:14.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.329600
2025-09-28T09:55:14.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:55:14.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:55:14.553 [DEBUG] [Thread-121196] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:55:14.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:55:14.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:55:14.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:55:14.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:54:33', tmtdew=11.47, humidity=46.11, cloud=0.0, wind=6.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:54:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:55:14.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-28T09:55:16.242 [DEBUG] [Thread-121199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:24.314 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:24.315 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:31.284 [DEBUG] [Thread-121200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:55:46.316 [DEBUG] [Thread-121201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:01.280 [DEBUG] [Thread-121202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:01.351 [DEBUG] [Thread-121203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:16.381 [DEBUG] [Thread-121204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:24.455 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:24.456 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:31.412 [DEBUG] [Thread-121205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:56:46.441 [DEBUG] [Thread-121206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:01.349 [DEBUG] [Thread-121207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:01.467 [DEBUG] [Thread-121208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:16.495 [DEBUG] [Thread-121209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:24.599 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:24.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:29.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-28T09:57:31.524 [DEBUG] [Thread-121210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:39.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:57:39.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:57:39.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-28T09:57:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 57, 12), 11.4, 46.47, 0.0, 11.42, 15.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:57:40.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:57:12
2025-09-28T09:57:40.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:57:40.525 [DEBUG] [Thread-121211] [transport.py] [_log()] starting thread (client mode): 0x2e361ae0
2025-09-28T09:57:40.525 [DEBUG] [Thread-121211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:57:40.538 [DEBUG] [Thread-121211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:57:40.538 [INFO] [Thread-121211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] client lang: <none>
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] server lang: <none>
2025-09-28T09:57:40.539 [DEBUG] [Thread-121211] [transport.py] [_log()] kex follows: False
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] Compression: none
2025-09-28T09:57:40.540 [DEBUG] [Thread-121211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:57:40.547 [DEBUG] [Thread-121211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:57:40.547 [DEBUG] [Thread-121211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:57:40.547 [DEBUG] [Thread-121211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:57:40.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:57:40.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:57:40.548 [DEBUG] [Thread-121211] [transport.py] [_log()] userauth is OK
2025-09-28T09:57:40.548 [DEBUG] [Thread-121211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:57:40.548 [DEBUG] [Thread-121211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:57:40.548 [DEBUG] [Thread-121211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:57:40.548 [DEBUG] [Thread-121211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:57:40.560 [INFO] [Thread-121211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:57:40.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:57:41.179 [DEBUG] [Thread-121211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:57:41.179 [DEBUG] [Thread-121211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:57:41.180 [DEBUG] [Thread-121211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:57:41.220 [DEBUG] [Thread-121211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:57:41.220 [DEBUG] [Thread-121211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:57:41.223 [DEBUG] [Thread-121211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:57:41.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:57:41.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:57:41.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:57:41.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:57:41.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:57:41.244 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:57:41.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:57:41.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:57:41.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:57:41.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.331336 -999.00  +15.90  11.66     50   +5.60 1 1 1 1 1   888    0 13.52 111.95 ----- 12.2 11.7 181.0 14.3 23.9 -27.1 22.1 -27.1 21.2 -25.8 22.4 -27.7
2025-09-28T09:57:41.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:57:41.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:57:41.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.331336
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:57:41.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:57:12', tmtdew=11.4, humidity=46.47, cloud=0.0, wind=11.42, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:57:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:57:41.247 [DEBUG] [Thread-121211] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:57:41.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T09:57:41.346 [DEBUG] [Thread-121214] [transport.py] [_log()] starting thread (client mode): 0x2b9cd360
2025-09-28T09:57:41.346 [DEBUG] [Thread-121214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:57:41.360 [DEBUG] [Thread-121214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:57:41.360 [INFO] [Thread-121214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] client lang: <none>
2025-09-28T09:57:41.368 [DEBUG] [Thread-121214] [transport.py] [_log()] server lang: <none>
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] kex follows: False
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] Compression: none
2025-09-28T09:57:41.369 [DEBUG] [Thread-121214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:57:41.426 [DEBUG] [Thread-121214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:57:41.426 [DEBUG] [Thread-121214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:57:41.427 [DEBUG] [Thread-121214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:57:41.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:57:41.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:57:41.482 [DEBUG] [Thread-121214] [transport.py] [_log()] userauth is OK
2025-09-28T09:57:41.482 [DEBUG] [Thread-121214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:57:41.483 [DEBUG] [Thread-121214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:57:41.483 [DEBUG] [Thread-121214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:57:41.483 [DEBUG] [Thread-121214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:57:41.501 [INFO] [Thread-121214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:57:41.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-28T09:57:41.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:57:42.467 [DEBUG] [Thread-121214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:57:42.467 [DEBUG] [Thread-121214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:57:42.515 [DEBUG] [Thread-121214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:57:42.515 [DEBUG] [Thread-121214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:57:42.524 [DEBUG] [Thread-121214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:57:42.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:57:42.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-28T09:57:42.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') -> 00000000
2025-09-28T09:57:42.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:57:42.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:57:42.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:57:42.559 [DEBUG] [Thread-121214] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:57:46.553 [DEBUG] [Thread-121216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:57:52.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:57:52.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:57:52.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-28T09:57:53.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 57, 44), 11.54, 45.72, 0.0, 10.11, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:57:53.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:57:44
2025-09-28T09:57:53.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:57:53.432 [DEBUG] [Thread-121217] [transport.py] [_log()] starting thread (client mode): 0x2e362800
2025-09-28T09:57:53.433 [DEBUG] [Thread-121217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:57:53.454 [DEBUG] [Thread-121217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:57:53.454 [INFO] [Thread-121217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] client lang: <none>
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] server lang: <none>
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] kex follows: False
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] Compression: none
2025-09-28T09:57:53.457 [DEBUG] [Thread-121217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:57:53.474 [DEBUG] [Thread-121217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:57:53.474 [DEBUG] [Thread-121217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:57:53.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:57:53.475 [DEBUG] [Thread-121217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:57:53.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:57:53.477 [DEBUG] [Thread-121217] [transport.py] [_log()] userauth is OK
2025-09-28T09:57:53.477 [DEBUG] [Thread-121217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:57:53.477 [DEBUG] [Thread-121217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:57:53.477 [DEBUG] [Thread-121217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:57:53.477 [DEBUG] [Thread-121217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:57:53.491 [INFO] [Thread-121217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:57:53.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:57:54.062 [DEBUG] [Thread-121217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:57:54.062 [DEBUG] [Thread-121217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:57:54.063 [DEBUG] [Thread-121217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:57:54.103 [DEBUG] [Thread-121217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:57:54.103 [DEBUG] [Thread-121217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:57:54.106 [DEBUG] [Thread-121217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:57:54.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:57:54.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:57:54.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:57:54.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:57:54.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:57:54.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:57:54.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:57:54.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:57:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:57:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.331684 -999.00  +15.70  11.04     50   +5.40 1 1 1 1 1   888    0 12.49 90.47 ----- 11.5 11.0 178.2 15.6 23.8 -27.2 22.1 -26.3 21.1 -26.6 22.4 -28.4
2025-09-28T09:57:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:57:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:57:54.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.331684
2025-09-28T09:57:54.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:57:54.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:57:54.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:57:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:57:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:57:54.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:57:44', tmtdew=11.54, humidity=45.72, cloud=0.0, wind=10.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:57:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:57:54.127 [DEBUG] [Thread-121217] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:57:54.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-28T09:57:54.223 [DEBUG] [Thread-121220] [transport.py] [_log()] starting thread (client mode): 0x30ddd7b0
2025-09-28T09:57:54.223 [DEBUG] [Thread-121220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:57:54.237 [DEBUG] [Thread-121220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:57:54.238 [INFO] [Thread-121220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] client lang: <none>
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] server lang: <none>
2025-09-28T09:57:54.246 [DEBUG] [Thread-121220] [transport.py] [_log()] kex follows: False
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] Compression: none
2025-09-28T09:57:54.247 [DEBUG] [Thread-121220] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:57:54.304 [DEBUG] [Thread-121220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:57:54.305 [DEBUG] [Thread-121220] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:57:54.305 [DEBUG] [Thread-121220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:57:54.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:57:54.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:57:54.372 [DEBUG] [Thread-121220] [transport.py] [_log()] userauth is OK
2025-09-28T09:57:54.373 [DEBUG] [Thread-121220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:57:54.373 [DEBUG] [Thread-121220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:57:54.373 [DEBUG] [Thread-121220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:57:54.373 [DEBUG] [Thread-121220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:57:54.398 [INFO] [Thread-121220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:57:54.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-28T09:57:54.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:57:55.382 [DEBUG] [Thread-121220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:57:55.383 [DEBUG] [Thread-121220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:57:55.437 [DEBUG] [Thread-121220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:57:55.437 [DEBUG] [Thread-121220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:57:55.450 [DEBUG] [Thread-121220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:57:55.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:57:55.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-28T09:57:55.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-28T09:57:55.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:57:55.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:57:55.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:57:55.508 [DEBUG] [Thread-121220] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:01.395 [DEBUG] [Thread-121222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:01.582 [DEBUG] [Thread-121223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:05.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:58:05.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:58:05.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-28T09:58:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 57, 44), 11.54, 45.72, 0.0, 10.11, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:58:06.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:57:44
2025-09-28T09:58:06.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:58:06.379 [DEBUG] [Thread-121224] [transport.py] [_log()] starting thread (client mode): 0x2e34b460
2025-09-28T09:58:06.379 [DEBUG] [Thread-121224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:06.400 [DEBUG] [Thread-121224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:58:06.401 [INFO] [Thread-121224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:06.402 [DEBUG] [Thread-121224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] Compression: none
2025-09-28T09:58:06.403 [DEBUG] [Thread-121224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:06.417 [DEBUG] [Thread-121224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:06.417 [DEBUG] [Thread-121224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:06.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:58:06.418 [DEBUG] [Thread-121224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:58:06.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:06.420 [DEBUG] [Thread-121224] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:06.420 [DEBUG] [Thread-121224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:06.421 [DEBUG] [Thread-121224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:06.421 [DEBUG] [Thread-121224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:58:06.421 [DEBUG] [Thread-121224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:06.445 [INFO] [Thread-121224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:06.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:07.162 [DEBUG] [Thread-121224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:07.162 [DEBUG] [Thread-121224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:07.162 [DEBUG] [Thread-121224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:58:07.203 [DEBUG] [Thread-121224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:07.203 [DEBUG] [Thread-121224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:07.206 [DEBUG] [Thread-121224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:07.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:07.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:58:07.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:58:07.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:58:07.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:07.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:58:07.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:07.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.331684 -999.00  +15.70  11.04     50   +5.40 1 1 1 1 1   888    0 12.49 90.47 ----- 11.5 11.0 178.2 15.6 23.8 -27.2 22.1 -26.3 21.1 -26.6 22.4 -28.4
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.331684
2025-09-28T09:58:07.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:58:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:58:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:58:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:58:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:58:07.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:57:44', tmtdew=11.54, humidity=45.72, cloud=0.0, wind=10.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:57:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:58:07.233 [DEBUG] [Thread-121224] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:07.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-28T09:58:07.329 [DEBUG] [Thread-121227] [transport.py] [_log()] starting thread (client mode): 0x2b9cd0c0
2025-09-28T09:58:07.329 [DEBUG] [Thread-121227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:07.344 [DEBUG] [Thread-121227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:58:07.344 [INFO] [Thread-121227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:07.352 [DEBUG] [Thread-121227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:07.353 [DEBUG] [Thread-121227] [transport.py] [_log()] Compression: none
2025-09-28T09:58:07.353 [DEBUG] [Thread-121227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:07.408 [DEBUG] [Thread-121227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:07.408 [DEBUG] [Thread-121227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:07.408 [DEBUG] [Thread-121227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:58:07.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:58:07.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:07.466 [DEBUG] [Thread-121227] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:07.466 [DEBUG] [Thread-121227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:07.466 [DEBUG] [Thread-121227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:07.466 [DEBUG] [Thread-121227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:58:07.466 [DEBUG] [Thread-121227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:07.480 [INFO] [Thread-121227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:07.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-28T09:58:07.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:08.462 [DEBUG] [Thread-121227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:08.462 [DEBUG] [Thread-121227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:08.510 [DEBUG] [Thread-121227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:08.510 [DEBUG] [Thread-121227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:08.519 [DEBUG] [Thread-121227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:08.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:08.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-28T09:58:08.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-28T09:58:08.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:08.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:08.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:08.553 [DEBUG] [Thread-121227] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:16.617 [DEBUG] [Thread-121229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:18.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:58:18.556 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:58:18.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-28T09:58:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 57, 44), 11.54, 45.72, 0.0, 10.11, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:58:19.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:57:44
2025-09-28T09:58:19.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:58:19.429 [DEBUG] [Thread-121230] [transport.py] [_log()] starting thread (client mode): 0x2b96d1b0
2025-09-28T09:58:19.429 [DEBUG] [Thread-121230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:19.448 [DEBUG] [Thread-121230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:58:19.448 [INFO] [Thread-121230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:58:19.451 [DEBUG] [Thread-121230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:19.452 [DEBUG] [Thread-121230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:19.453 [DEBUG] [Thread-121230] [transport.py] [_log()] Compression: none
2025-09-28T09:58:19.453 [DEBUG] [Thread-121230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:19.462 [DEBUG] [Thread-121230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:19.463 [DEBUG] [Thread-121230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:19.463 [DEBUG] [Thread-121230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:58:19.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:58:19.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:19.464 [DEBUG] [Thread-121230] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:19.465 [DEBUG] [Thread-121230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:19.465 [DEBUG] [Thread-121230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:19.465 [DEBUG] [Thread-121230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:58:19.465 [DEBUG] [Thread-121230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:19.488 [INFO] [Thread-121230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:19.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:20.079 [DEBUG] [Thread-121230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:20.079 [DEBUG] [Thread-121230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:20.080 [DEBUG] [Thread-121230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:58:20.120 [DEBUG] [Thread-121230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:20.120 [DEBUG] [Thread-121230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:20.122 [DEBUG] [Thread-121230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:20.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:20.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:58:20.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:58:20.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:58:20.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:20.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:58:20.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332031 -999.00  +15.60   8.90     49   +5.00 1 1 1 1 1   888    0 12.74 94.25 ----- 9.7 8.9 173.6 13.2 23.8 -27.1 21.9 -31.1 21.2 -27.2 22.4 -26.8
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332031
2025-09-28T09:58:20.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:58:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:58:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:58:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:58:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:58:20.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:57:44', tmtdew=11.54, humidity=45.72, cloud=0.0, wind=10.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:58:20.133 [DEBUG] [Thread-121230] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:20.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-28T09:58:20.249 [DEBUG] [Thread-121233] [transport.py] [_log()] starting thread (client mode): 0x2e361ba0
2025-09-28T09:58:20.250 [DEBUG] [Thread-121233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:20.292 [DEBUG] [Thread-121233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:58:20.293 [INFO] [Thread-121233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:58:20.328 [DEBUG] [Thread-121233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:20.328 [DEBUG] [Thread-121233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:58:20.328 [DEBUG] [Thread-121233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] Compression: none
2025-09-28T09:58:20.329 [DEBUG] [Thread-121233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:20.411 [DEBUG] [Thread-121233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:20.412 [DEBUG] [Thread-121233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:20.412 [DEBUG] [Thread-121233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:58:20.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:58:20.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:20.487 [DEBUG] [Thread-121233] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:20.487 [DEBUG] [Thread-121233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:20.487 [DEBUG] [Thread-121233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:20.488 [DEBUG] [Thread-121233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:58:20.488 [DEBUG] [Thread-121233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:20.506 [INFO] [Thread-121233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:20.507 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:58:20.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:21.490 [DEBUG] [Thread-121233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:21.490 [DEBUG] [Thread-121233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:21.538 [DEBUG] [Thread-121233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:21.539 [DEBUG] [Thread-121233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:21.548 [DEBUG] [Thread-121233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:21.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:21.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-28T09:58:21.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-28T09:58:21.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:21.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:21.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:21.583 [DEBUG] [Thread-121233] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:24.740 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:24.741 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:31.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:58:31.585 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:58:31.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-28T09:58:31.645 [DEBUG] [Thread-121235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 58, 16), 11.71, 45.19, 0.0, 8.44, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:58:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:58:16
2025-09-28T09:58:32.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:58:32.445 [DEBUG] [Thread-121236] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-28T09:58:32.445 [DEBUG] [Thread-121236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:32.462 [DEBUG] [Thread-121236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:58:32.462 [INFO] [Thread-121236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:32.464 [DEBUG] [Thread-121236] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] Compression: none
2025-09-28T09:58:32.465 [DEBUG] [Thread-121236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:32.484 [DEBUG] [Thread-121236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:32.485 [DEBUG] [Thread-121236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:32.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:58:32.486 [DEBUG] [Thread-121236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:58:32.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:32.488 [DEBUG] [Thread-121236] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:32.488 [DEBUG] [Thread-121236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:32.488 [DEBUG] [Thread-121236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:32.488 [DEBUG] [Thread-121236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:58:32.489 [DEBUG] [Thread-121236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:32.523 [INFO] [Thread-121236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:32.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:33.099 [DEBUG] [Thread-121236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:33.099 [DEBUG] [Thread-121236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:33.100 [DEBUG] [Thread-121236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:58:33.140 [DEBUG] [Thread-121236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:33.141 [DEBUG] [Thread-121236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:33.145 [DEBUG] [Thread-121236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:33.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:33.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:58:33.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:58:33.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:58:33.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:33.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:58:33.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332031 -999.00  +15.60   8.90     49   +5.00 1 1 1 1 1   888    0 12.74 94.25 ----- 9.7 8.9 173.6 13.2 23.8 -27.1 21.9 -31.1 21.2 -27.2 22.4 -26.8
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:58:33.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332031
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:58:33.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:58:16', tmtdew=11.71, humidity=45.19, cloud=0.0, wind=8.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:58:33.161 [DEBUG] [Thread-121236] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:33.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-28T09:58:33.252 [DEBUG] [Thread-121239] [transport.py] [_log()] starting thread (client mode): 0x2e3c3460
2025-09-28T09:58:33.252 [DEBUG] [Thread-121239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:33.272 [DEBUG] [Thread-121239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:58:33.272 [INFO] [Thread-121239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:33.279 [DEBUG] [Thread-121239] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] Compression: none
2025-09-28T09:58:33.280 [DEBUG] [Thread-121239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:33.336 [DEBUG] [Thread-121239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:33.336 [DEBUG] [Thread-121239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:33.336 [DEBUG] [Thread-121239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:58:33.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:58:33.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:33.394 [DEBUG] [Thread-121239] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:33.394 [DEBUG] [Thread-121239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:33.394 [DEBUG] [Thread-121239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:33.395 [DEBUG] [Thread-121239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:58:33.395 [DEBUG] [Thread-121239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:33.418 [INFO] [Thread-121239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:33.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-28T09:58:33.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:34.383 [DEBUG] [Thread-121239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:34.384 [DEBUG] [Thread-121239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:34.431 [DEBUG] [Thread-121239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:34.431 [DEBUG] [Thread-121239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:34.440 [DEBUG] [Thread-121239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:34.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:34.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-28T09:58:34.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-28T09:58:34.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:34.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:34.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:34.474 [DEBUG] [Thread-121239] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:44.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:58:44.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:58:44.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T09:58:45.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 58, 16), 11.71, 45.19, 0.0, 8.44, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:58:45.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:58:16
2025-09-28T09:58:45.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:58:45.336 [DEBUG] [Thread-121241] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T09:58:45.337 [DEBUG] [Thread-121241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:45.356 [DEBUG] [Thread-121241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:58:45.357 [INFO] [Thread-121241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] Compression: none
2025-09-28T09:58:45.360 [DEBUG] [Thread-121241] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:45.369 [DEBUG] [Thread-121241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:45.370 [DEBUG] [Thread-121241] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:45.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:58:45.371 [DEBUG] [Thread-121241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:58:45.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:45.373 [DEBUG] [Thread-121241] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:45.373 [DEBUG] [Thread-121241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:45.373 [DEBUG] [Thread-121241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:45.373 [DEBUG] [Thread-121241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:58:45.373 [DEBUG] [Thread-121241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:45.408 [INFO] [Thread-121241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:45.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:46.175 [DEBUG] [Thread-121241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:46.175 [DEBUG] [Thread-121241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:46.176 [DEBUG] [Thread-121241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:58:46.216 [DEBUG] [Thread-121241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:46.216 [DEBUG] [Thread-121241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:46.219 [DEBUG] [Thread-121241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:46.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:46.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:58:46.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:58:46.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:58:46.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:46.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:58:46.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332031 -999.00  +15.60   8.90     49   +5.00 1 1 1 1 1   888    0 12.74 94.25 ----- 9.7 8.9 173.6 13.2 23.8 -27.1 21.9 -31.1 21.2 -27.2 22.4 -26.8
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:58:46.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332031
2025-09-28T09:58:46.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:58:46.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:58:46.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:58:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:58:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:58:46.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:58:16', tmtdew=11.71, humidity=45.19, cloud=0.0, wind=8.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:58:46.241 [DEBUG] [Thread-121241] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:46.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-28T09:58:46.338 [DEBUG] [Thread-121244] [transport.py] [_log()] starting thread (client mode): 0x30ddd810
2025-09-28T09:58:46.338 [DEBUG] [Thread-121244] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:46.353 [DEBUG] [Thread-121244] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:58:46.354 [INFO] [Thread-121244] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:46.361 [DEBUG] [Thread-121244] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] Compression: none
2025-09-28T09:58:46.362 [DEBUG] [Thread-121244] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:46.417 [DEBUG] [Thread-121244] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:46.418 [DEBUG] [Thread-121244] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:46.418 [DEBUG] [Thread-121244] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:58:46.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:58:46.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:46.474 [DEBUG] [Thread-121244] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:46.475 [DEBUG] [Thread-121244] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:46.475 [DEBUG] [Thread-121244] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:46.475 [DEBUG] [Thread-121244] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:58:46.475 [DEBUG] [Thread-121244] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:46.494 [INFO] [Thread-121244] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:46.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-28T09:58:46.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:46.687 [DEBUG] [Thread-121246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:58:47.551 [DEBUG] [Thread-121244] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:47.551 [DEBUG] [Thread-121244] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:47.599 [DEBUG] [Thread-121244] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:47.599 [DEBUG] [Thread-121244] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:47.608 [DEBUG] [Thread-121244] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:47.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:47.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-28T09:58:47.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-28T09:58:47.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:47.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:47.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:47.643 [DEBUG] [Thread-121244] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:58:57.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:58:57.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-28T09:58:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 58, 48), 11.3, 46.5, 0.0, 7.8, 15.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:58:58.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:58:48
2025-09-28T09:58:58.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:58:58.513 [DEBUG] [Thread-121247] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c20
2025-09-28T09:58:58.513 [DEBUG] [Thread-121247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:58.532 [DEBUG] [Thread-121247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:58:58.533 [INFO] [Thread-121247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:58.536 [DEBUG] [Thread-121247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] Compression: none
2025-09-28T09:58:58.537 [DEBUG] [Thread-121247] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:58.555 [DEBUG] [Thread-121247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:58.555 [DEBUG] [Thread-121247] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:58.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:58:58.556 [DEBUG] [Thread-121247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:58:58.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:58.558 [DEBUG] [Thread-121247] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:58.558 [DEBUG] [Thread-121247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:58.559 [DEBUG] [Thread-121247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:58.559 [DEBUG] [Thread-121247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:58:58.559 [DEBUG] [Thread-121247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:58.582 [INFO] [Thread-121247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:58.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:58:59.199 [DEBUG] [Thread-121247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:58:59.200 [DEBUG] [Thread-121247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:58:59.200 [DEBUG] [Thread-121247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:58:59.240 [DEBUG] [Thread-121247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:58:59.241 [DEBUG] [Thread-121247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:58:59.244 [DEBUG] [Thread-121247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:58:59.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:58:59.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:58:59.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:58:59.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:58:59.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:58:59.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:58:59.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:58:59.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:58:59.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:58:59.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332378 -999.00  +15.40   5.77     50   +5.10 1 1 1 1 1   888    0 12.82 88.19 ----- 3.6 5.8 178.6 11.2 23.9 -26.0 22.2 -25.4 21.2 -25.8 22.4 -26.6
2025-09-28T09:58:59.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:58:59.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:58:59.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332378
2025-09-28T09:58:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:58:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:58:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:58:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:58:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:58:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:58:48', tmtdew=11.3, humidity=46.5, cloud=0.0, wind=7.8, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:58:59.264 [DEBUG] [Thread-121247] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:58:59.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-28T09:58:59.359 [DEBUG] [Thread-121250] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T09:58:59.359 [DEBUG] [Thread-121250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:58:59.374 [DEBUG] [Thread-121250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:58:59.374 [INFO] [Thread-121250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:58:59.382 [DEBUG] [Thread-121250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:58:59.382 [DEBUG] [Thread-121250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:58:59.382 [DEBUG] [Thread-121250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:58:59.382 [DEBUG] [Thread-121250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] client lang: <none>
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] server lang: <none>
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] kex follows: False
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:58:59.383 [DEBUG] [Thread-121250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:58:59.384 [DEBUG] [Thread-121250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:58:59.384 [DEBUG] [Thread-121250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:58:59.384 [DEBUG] [Thread-121250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:58:59.384 [DEBUG] [Thread-121250] [transport.py] [_log()] Compression: none
2025-09-28T09:58:59.384 [DEBUG] [Thread-121250] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:58:59.442 [DEBUG] [Thread-121250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:58:59.442 [DEBUG] [Thread-121250] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:58:59.443 [DEBUG] [Thread-121250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:58:59.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:58:59.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:58:59.498 [DEBUG] [Thread-121250] [transport.py] [_log()] userauth is OK
2025-09-28T09:58:59.498 [DEBUG] [Thread-121250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:58:59.498 [DEBUG] [Thread-121250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:58:59.498 [DEBUG] [Thread-121250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:58:59.498 [DEBUG] [Thread-121250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:58:59.520 [INFO] [Thread-121250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:58:59.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-28T09:58:59.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:00.477 [DEBUG] [Thread-121250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:00.477 [DEBUG] [Thread-121250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:00.528 [DEBUG] [Thread-121250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:00.528 [DEBUG] [Thread-121250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:00.540 [DEBUG] [Thread-121250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:00.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:00.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-28T09:59:00.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') -> 00000000
2025-09-28T09:59:00.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:00.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:00.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:00.576 [DEBUG] [Thread-121250] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:01.449 [DEBUG] [Thread-121252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:01.730 [DEBUG] [Thread-121253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:10.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:59:10.578 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:59:10.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-28T09:59:11.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 58, 48), 11.3, 46.5, 0.0, 7.8, 15.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:59:11.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:58:48
2025-09-28T09:59:11.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:59:11.440 [DEBUG] [Thread-121254] [transport.py] [_log()] starting thread (client mode): 0x30dde590
2025-09-28T09:59:11.440 [DEBUG] [Thread-121254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:11.461 [DEBUG] [Thread-121254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:59:11.461 [INFO] [Thread-121254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] Compression: none
2025-09-28T09:59:11.463 [DEBUG] [Thread-121254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:11.476 [DEBUG] [Thread-121254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:11.477 [DEBUG] [Thread-121254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:11.477 [DEBUG] [Thread-121254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:59:11.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:59:11.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:11.479 [DEBUG] [Thread-121254] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:11.479 [DEBUG] [Thread-121254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:11.479 [DEBUG] [Thread-121254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:11.480 [DEBUG] [Thread-121254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:59:11.480 [DEBUG] [Thread-121254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:11.497 [INFO] [Thread-121254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:11.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:12.310 [DEBUG] [Thread-121254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:12.310 [DEBUG] [Thread-121254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:12.310 [DEBUG] [Thread-121254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:59:12.351 [DEBUG] [Thread-121254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:12.352 [DEBUG] [Thread-121254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:12.355 [DEBUG] [Thread-121254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:12.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:12.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:59:12.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:59:12.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:59:12.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:12.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:59:12.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:12.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:12.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:59:12.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332378 -999.00  +15.40   5.77     50   +5.10 1 1 1 1 1   888    0 12.82 88.19 ----- 3.6 5.8 178.6 11.2 23.9 -26.0 22.2 -25.4 21.2 -25.8 22.4 -26.6
2025-09-28T09:59:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:59:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:59:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332378
2025-09-28T09:59:12.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:59:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:59:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:59:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:59:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:59:12.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:58:48', tmtdew=11.3, humidity=46.5, cloud=0.0, wind=7.8, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:59:12.374 [DEBUG] [Thread-121254] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:12.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-28T09:59:12.472 [DEBUG] [Thread-121257] [transport.py] [_log()] starting thread (client mode): 0x2b96e440
2025-09-28T09:59:12.472 [DEBUG] [Thread-121257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:12.488 [DEBUG] [Thread-121257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:59:12.488 [INFO] [Thread-121257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:59:12.506 [DEBUG] [Thread-121257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:12.507 [DEBUG] [Thread-121257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:12.508 [DEBUG] [Thread-121257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:12.508 [DEBUG] [Thread-121257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:12.508 [DEBUG] [Thread-121257] [transport.py] [_log()] Compression: none
2025-09-28T09:59:12.508 [DEBUG] [Thread-121257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:12.578 [DEBUG] [Thread-121257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:12.578 [DEBUG] [Thread-121257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:12.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:59:12.579 [DEBUG] [Thread-121257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:59:12.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:12.672 [DEBUG] [Thread-121257] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:12.672 [DEBUG] [Thread-121257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:12.673 [DEBUG] [Thread-121257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:12.673 [DEBUG] [Thread-121257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:59:12.673 [DEBUG] [Thread-121257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:12.720 [INFO] [Thread-121257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:12.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-28T09:59:12.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:13.720 [DEBUG] [Thread-121257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:13.720 [DEBUG] [Thread-121257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:13.797 [DEBUG] [Thread-121257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:13.797 [DEBUG] [Thread-121257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:13.830 [DEBUG] [Thread-121257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:13.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:13.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-28T09:59:13.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-28T09:59:13.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:13.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:13.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:13.925 [DEBUG] [Thread-121257] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:16.775 [DEBUG] [Thread-121259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:23.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:59:23.906 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:59:23.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-28T09:59:24.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 59, 20), 11.4, 46.19, 0.0, 8.59, 15.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:59:24.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:59:20
2025-09-28T09:59:24.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:59:24.759 [DEBUG] [Thread-121260] [transport.py] [_log()] starting thread (client mode): 0x2e38e980
2025-09-28T09:59:24.759 [DEBUG] [Thread-121260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:24.780 [DEBUG] [Thread-121260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:59:24.780 [INFO] [Thread-121260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:24.783 [DEBUG] [Thread-121260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] Compression: none
2025-09-28T09:59:24.784 [DEBUG] [Thread-121260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:24.799 [DEBUG] [Thread-121260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:24.800 [DEBUG] [Thread-121260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:24.800 [DEBUG] [Thread-121260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:59:24.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:59:24.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:24.802 [DEBUG] [Thread-121260] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:24.803 [DEBUG] [Thread-121260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:24.803 [DEBUG] [Thread-121260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:24.803 [DEBUG] [Thread-121260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:59:24.803 [DEBUG] [Thread-121260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:24.838 [INFO] [Thread-121260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:24.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:24.883 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:24.884 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:25.579 [DEBUG] [Thread-121260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:25.579 [DEBUG] [Thread-121260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:25.579 [DEBUG] [Thread-121260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:59:25.619 [DEBUG] [Thread-121260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:25.620 [DEBUG] [Thread-121260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:25.622 [DEBUG] [Thread-121260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:25.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:25.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:59:25.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:59:25.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:59:25.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:25.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:59:25.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:25.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332378 -999.00  +15.40   5.77     50   +5.10 1 1 1 1 1   888    0 12.82 88.19 ----- 3.6 5.8 178.6 11.2 23.9 -26.0 22.2 -25.4 21.2 -25.8 22.4 -26.6
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332378
2025-09-28T09:59:25.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:59:25.649 [DEBUG] [Thread-121260] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:25.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:59:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:59:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:59:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:59:25.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:59:20', tmtdew=11.4, humidity=46.19, cloud=0.0, wind=8.59, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:58:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:59:25.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-28T09:59:25.741 [DEBUG] [Thread-121263] [transport.py] [_log()] starting thread (client mode): 0x2b96c550
2025-09-28T09:59:25.741 [DEBUG] [Thread-121263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:25.755 [DEBUG] [Thread-121263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:59:25.755 [INFO] [Thread-121263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:59:25.763 [DEBUG] [Thread-121263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:25.763 [DEBUG] [Thread-121263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] Compression: none
2025-09-28T09:59:25.764 [DEBUG] [Thread-121263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:25.821 [DEBUG] [Thread-121263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:25.822 [DEBUG] [Thread-121263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:25.822 [DEBUG] [Thread-121263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:59:25.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:59:25.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:25.878 [DEBUG] [Thread-121263] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:25.878 [DEBUG] [Thread-121263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:25.878 [DEBUG] [Thread-121263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:25.878 [DEBUG] [Thread-121263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:59:25.878 [DEBUG] [Thread-121263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:25.898 [INFO] [Thread-121263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:25.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-28T09:59:25.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:26.890 [DEBUG] [Thread-121263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:26.890 [DEBUG] [Thread-121263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:26.938 [DEBUG] [Thread-121263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:26.938 [DEBUG] [Thread-121263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:26.947 [DEBUG] [Thread-121263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:26.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:26.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-28T09:59:26.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-28T09:59:26.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:26.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:26.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:26.982 [DEBUG] [Thread-121263] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:31.802 [DEBUG] [Thread-121265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:36.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:59:36.985 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:59:36.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-28T09:59:37.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 59, 20), 11.4, 46.19, 0.0, 8.59, 15.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:59:37.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:59:20
2025-09-28T09:59:37.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:59:37.837 [DEBUG] [Thread-121266] [transport.py] [_log()] starting thread (client mode): 0x2b9cc130
2025-09-28T09:59:37.837 [DEBUG] [Thread-121266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:37.858 [DEBUG] [Thread-121266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:59:37.858 [INFO] [Thread-121266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] Compression: none
2025-09-28T09:59:37.861 [DEBUG] [Thread-121266] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:37.877 [DEBUG] [Thread-121266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:37.877 [DEBUG] [Thread-121266] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:37.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:59:37.878 [DEBUG] [Thread-121266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:59:37.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:37.879 [DEBUG] [Thread-121266] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:37.879 [DEBUG] [Thread-121266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:37.879 [DEBUG] [Thread-121266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:37.879 [DEBUG] [Thread-121266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:59:37.879 [DEBUG] [Thread-121266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:37.893 [INFO] [Thread-121266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:37.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:38.464 [DEBUG] [Thread-121266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:38.464 [DEBUG] [Thread-121266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:38.465 [DEBUG] [Thread-121266] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:59:38.505 [DEBUG] [Thread-121266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:38.506 [DEBUG] [Thread-121266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:38.508 [DEBUG] [Thread-121266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:38.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:38.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:59:38.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:59:38.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:59:38.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:38.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:59:38.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:38.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:38.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:59:38.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332725 -999.00  +15.50   5.30     50   +5.40 1 1 1 1 1   888    0 12.55 85.93 ----- 5.0 5.3 179.4 7.3 24.1 -26.1 22.3 -28.1 21.3 -25.0 22.5 -25.7
2025-09-28T09:59:38.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:59:38.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:59:38.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332725
2025-09-28T09:59:38.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:59:38.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:59:38.533 [DEBUG] [Thread-121266] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:38.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:59:38.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:59:38.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:59:38.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:59:20', tmtdew=11.4, humidity=46.19, cloud=0.0, wind=8.59, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:59:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:59:38.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-28T09:59:39.651 [DEBUG] [Thread-121269] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T09:59:39.652 [DEBUG] [Thread-121269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:39.665 [DEBUG] [Thread-121269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:59:39.666 [INFO] [Thread-121269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:59:39.673 [DEBUG] [Thread-121269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:39.673 [DEBUG] [Thread-121269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:59:39.673 [DEBUG] [Thread-121269] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:39.674 [DEBUG] [Thread-121269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:39.675 [DEBUG] [Thread-121269] [transport.py] [_log()] Compression: none
2025-09-28T09:59:39.675 [DEBUG] [Thread-121269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:39.733 [DEBUG] [Thread-121269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:39.733 [DEBUG] [Thread-121269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:39.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:59:39.735 [DEBUG] [Thread-121269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:59:39.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:39.790 [DEBUG] [Thread-121269] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:39.790 [DEBUG] [Thread-121269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:39.790 [DEBUG] [Thread-121269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:39.790 [DEBUG] [Thread-121269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:59:39.790 [DEBUG] [Thread-121269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:39.809 [INFO] [Thread-121269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:39.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T09:59:39.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:40.745 [DEBUG] [Thread-121269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:40.745 [DEBUG] [Thread-121269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:40.793 [DEBUG] [Thread-121269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:40.793 [DEBUG] [Thread-121269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:40.802 [DEBUG] [Thread-121269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:40.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:40.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-28T09:59:40.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-28T09:59:40.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:40.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:40.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:40.836 [DEBUG] [Thread-121269] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:46.847 [DEBUG] [Thread-121271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T09:59:50.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T09:59:50.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T09:59:50.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-28T09:59:51.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 59, 20), 11.4, 46.19, 0.0, 8.59, 15.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T09:59:51.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:59:20
2025-09-28T09:59:51.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T09:59:51.683 [DEBUG] [Thread-121272] [transport.py] [_log()] starting thread (client mode): 0x2e3c18a0
2025-09-28T09:59:51.683 [DEBUG] [Thread-121272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:51.696 [DEBUG] [Thread-121272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T09:59:51.696 [INFO] [Thread-121272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] Compression: none
2025-09-28T09:59:51.698 [DEBUG] [Thread-121272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:51.709 [DEBUG] [Thread-121272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:51.709 [DEBUG] [Thread-121272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:51.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T09:59:51.709 [DEBUG] [Thread-121272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T09:59:51.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:51.710 [DEBUG] [Thread-121272] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:51.710 [DEBUG] [Thread-121272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:51.710 [DEBUG] [Thread-121272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:51.710 [DEBUG] [Thread-121272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T09:59:51.710 [DEBUG] [Thread-121272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:51.720 [INFO] [Thread-121272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:51.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:52.380 [DEBUG] [Thread-121272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:52.380 [DEBUG] [Thread-121272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:52.381 [DEBUG] [Thread-121272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T09:59:52.421 [DEBUG] [Thread-121272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:52.422 [DEBUG] [Thread-121272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:52.425 [DEBUG] [Thread-121272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:52.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:52.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T09:59:52.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T09:59:52.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T09:59:52.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:52.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T09:59:52.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.332725 -999.00  +15.50   5.30     50   +5.40 1 1 1 1 1   888    0 12.55 85.93 ----- 5.0 5.3 179.4 7.3 24.1 -26.1 22.3 -28.1 21.3 -25.0 22.5 -25.7
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T09:59:52.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.332725
2025-09-28T09:59:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T09:59:52.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T09:59:52.449 [DEBUG] [Thread-121272] [transport.py] [_log()] EOF in transport thread
2025-09-28T09:59:52.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T09:59:52.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T09:59:52.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T09:59:52.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:59:20', tmtdew=11.4, humidity=46.19, cloud=0.0, wind=8.59, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:59:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T09:59:52.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-28T09:59:52.538 [DEBUG] [Thread-121275] [transport.py] [_log()] starting thread (client mode): 0x2e38f8e0
2025-09-28T09:59:52.538 [DEBUG] [Thread-121275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T09:59:52.553 [DEBUG] [Thread-121275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T09:59:52.553 [INFO] [Thread-121275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] client lang: <none>
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] server lang: <none>
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] kex follows: False
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] Compression: none
2025-09-28T09:59:52.561 [DEBUG] [Thread-121275] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T09:59:52.622 [DEBUG] [Thread-121275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T09:59:52.622 [DEBUG] [Thread-121275] [transport.py] [_log()] Switch to new keys ...
2025-09-28T09:59:52.622 [DEBUG] [Thread-121275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T09:59:52.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T09:59:52.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T09:59:52.698 [DEBUG] [Thread-121275] [transport.py] [_log()] userauth is OK
2025-09-28T09:59:52.698 [DEBUG] [Thread-121275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T09:59:52.698 [DEBUG] [Thread-121275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T09:59:52.698 [DEBUG] [Thread-121275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T09:59:52.698 [DEBUG] [Thread-121275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T09:59:52.712 [INFO] [Thread-121275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T09:59:52.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-28T09:59:52.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T09:59:53.690 [DEBUG] [Thread-121275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T09:59:53.690 [DEBUG] [Thread-121275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T09:59:53.738 [DEBUG] [Thread-121275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T09:59:53.738 [DEBUG] [Thread-121275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T09:59:53.746 [DEBUG] [Thread-121275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T09:59:53.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T09:59:53.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-28T09:59:53.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-28T09:59:53.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T09:59:53.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T09:59:53.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T09:59:53.789 [DEBUG] [Thread-121275] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:01.495 [DEBUG] [Thread-121277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:01.898 [DEBUG] [Thread-121278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:00:03.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:00:03.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-28T10:00:04.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 59, 52), 11.34, 46.9, 0.0, 8.93, 15.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:00:04.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:59:52
2025-09-28T10:00:04.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:00:04.647 [DEBUG] [Thread-121279] [transport.py] [_log()] starting thread (client mode): 0x2b96ea10
2025-09-28T10:00:04.647 [DEBUG] [Thread-121279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:04.661 [DEBUG] [Thread-121279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:00:04.661 [INFO] [Thread-121279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:04.663 [DEBUG] [Thread-121279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] Compression: none
2025-09-28T10:00:04.664 [DEBUG] [Thread-121279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:04.674 [DEBUG] [Thread-121279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:04.674 [DEBUG] [Thread-121279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:04.675 [DEBUG] [Thread-121279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:00:04.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:00:04.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:04.676 [DEBUG] [Thread-121279] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:04.676 [DEBUG] [Thread-121279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:04.676 [DEBUG] [Thread-121279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:04.676 [DEBUG] [Thread-121279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:00:04.676 [DEBUG] [Thread-121279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:04.707 [INFO] [Thread-121279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:04.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:10.590 [DEBUG] [Thread-121279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:10.591 [DEBUG] [Thread-121279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:10.591 [DEBUG] [Thread-121279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:00:10.631 [DEBUG] [Thread-121279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:10.631 [DEBUG] [Thread-121279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:10.635 [DEBUG] [Thread-121279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:10.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:10.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:00:10.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:00:10.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:00:10.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:10.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:00:10.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:10.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:10.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:00:10.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.333072 -999.00  +15.70   4.90     51   +5.70 1 1 1 1 1   888    0 12.84 87.62 ----- 2.6 4.9 195.6 10.2 24.1 -26.5 22.5 -25.2 21.4 -25.3 22.6 -26.5
2025-09-28T10:00:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:00:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:00:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.333072
2025-09-28T10:00:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:00:10.733 [DEBUG] [Thread-121279] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:59:52', tmtdew=11.34, humidity=46.9, cloud=0.0, wind=8.93, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:59:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:00:10.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-28T10:00:10.821 [DEBUG] [Thread-121282] [transport.py] [_log()] starting thread (client mode): 0x2e362560
2025-09-28T10:00:10.821 [DEBUG] [Thread-121282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:10.835 [DEBUG] [Thread-121282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:00:10.835 [INFO] [Thread-121282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:00:10.843 [DEBUG] [Thread-121282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:10.843 [DEBUG] [Thread-121282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:00:10.843 [DEBUG] [Thread-121282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:10.843 [DEBUG] [Thread-121282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:10.843 [DEBUG] [Thread-121282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:10.844 [DEBUG] [Thread-121282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:10.845 [DEBUG] [Thread-121282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:10.845 [DEBUG] [Thread-121282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:10.845 [DEBUG] [Thread-121282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:10.845 [DEBUG] [Thread-121282] [transport.py] [_log()] Compression: none
2025-09-28T10:00:10.845 [DEBUG] [Thread-121282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:10.903 [DEBUG] [Thread-121282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:10.903 [DEBUG] [Thread-121282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:10.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:00:10.904 [DEBUG] [Thread-121282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:00:10.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:10.963 [DEBUG] [Thread-121282] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:10.964 [DEBUG] [Thread-121282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:10.964 [DEBUG] [Thread-121282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:10.964 [DEBUG] [Thread-121282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:00:10.964 [DEBUG] [Thread-121282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:10.984 [INFO] [Thread-121282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:10.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:00:10.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:12.039 [DEBUG] [Thread-121282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:12.039 [DEBUG] [Thread-121282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:12.087 [DEBUG] [Thread-121282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:12.088 [DEBUG] [Thread-121282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:12.097 [DEBUG] [Thread-121282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:12.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:12.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-28T10:00:12.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') -> 00000000
2025-09-28T10:00:12.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:12.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:12.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:12.150 [DEBUG] [Thread-121282] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:16.932 [DEBUG] [Thread-121284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:22.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:00:22.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:00:22.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-28T10:00:22.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 9, 59, 52), 11.34, 46.9, 0.0, 8.93, 15.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:00:22.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 09:59:52
2025-09-28T10:00:22.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:00:23.019 [DEBUG] [Thread-121285] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-28T10:00:23.019 [DEBUG] [Thread-121285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:23.040 [DEBUG] [Thread-121285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:00:23.040 [INFO] [Thread-121285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:00:23.043 [DEBUG] [Thread-121285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:23.043 [DEBUG] [Thread-121285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:00:23.043 [DEBUG] [Thread-121285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:23.044 [DEBUG] [Thread-121285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:23.045 [DEBUG] [Thread-121285] [transport.py] [_log()] Compression: none
2025-09-28T10:00:23.045 [DEBUG] [Thread-121285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:23.063 [DEBUG] [Thread-121285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:23.064 [DEBUG] [Thread-121285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:23.065 [DEBUG] [Thread-121285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:00:23.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:00:23.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:23.066 [DEBUG] [Thread-121285] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:23.067 [DEBUG] [Thread-121285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:23.067 [DEBUG] [Thread-121285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:23.067 [DEBUG] [Thread-121285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:00:23.067 [DEBUG] [Thread-121285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:23.089 [INFO] [Thread-121285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:23.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:25.023 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:25.024 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:27.068 [DEBUG] [Thread-121285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:27.068 [DEBUG] [Thread-121285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:27.069 [DEBUG] [Thread-121285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:00:27.109 [DEBUG] [Thread-121285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:27.109 [DEBUG] [Thread-121285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:27.112 [DEBUG] [Thread-121285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:27.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:27.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:00:27.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:00:27.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:00:27.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:27.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:00:27.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.333072 -999.00  +15.70   4.90     51   +5.70 1 1 1 1 1   888    0 12.84 87.62 ----- 2.6 4.9 195.6 10.2 24.1 -26.5 22.5 -25.2 21.4 -25.3 22.6 -26.5
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:00:27.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.333072
2025-09-28T10:00:27.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:00:27.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:00:27.135 [DEBUG] [Thread-121285] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:27.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:00:27.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:00:27.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:00:27.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T09:59:52', tmtdew=11.34, humidity=46.9, cloud=0.0, wind=8.93, temperature=15.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:59:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:00:27.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:00:27.227 [DEBUG] [Thread-121288] [transport.py] [_log()] starting thread (client mode): 0x2b9dc760
2025-09-28T10:00:27.227 [DEBUG] [Thread-121288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:27.243 [DEBUG] [Thread-121288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:00:27.243 [INFO] [Thread-121288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:27.250 [DEBUG] [Thread-121288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:27.251 [DEBUG] [Thread-121288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:27.251 [DEBUG] [Thread-121288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:27.251 [DEBUG] [Thread-121288] [transport.py] [_log()] Compression: none
2025-09-28T10:00:27.251 [DEBUG] [Thread-121288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:27.309 [DEBUG] [Thread-121288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:27.309 [DEBUG] [Thread-121288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:27.310 [DEBUG] [Thread-121288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:00:27.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:00:27.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:27.365 [DEBUG] [Thread-121288] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:27.365 [DEBUG] [Thread-121288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:27.365 [DEBUG] [Thread-121288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:27.366 [DEBUG] [Thread-121288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:00:27.366 [DEBUG] [Thread-121288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:27.390 [INFO] [Thread-121288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:27.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-28T10:00:27.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:28.398 [DEBUG] [Thread-121288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:28.398 [DEBUG] [Thread-121288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:28.476 [DEBUG] [Thread-121288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:28.477 [DEBUG] [Thread-121288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:28.516 [DEBUG] [Thread-121288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:28.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:28.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')
2025-09-28T10:00:28.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') -> 00000000
2025-09-28T10:00:28.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:28.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:28.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:28.669 [DEBUG] [Thread-121288] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:31.978 [DEBUG] [Thread-121290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:38.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:00:38.641 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:00:38.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:00:39.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 0, 24), 11.44, 46.59, 0.0, 7.61, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:00:39.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:00:24
2025-09-28T10:00:39.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:00:39.477 [DEBUG] [Thread-121291] [transport.py] [_log()] starting thread (client mode): 0x2b94ded0
2025-09-28T10:00:39.477 [DEBUG] [Thread-121291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:39.496 [DEBUG] [Thread-121291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:00:39.496 [INFO] [Thread-121291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:00:39.498 [DEBUG] [Thread-121291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:39.498 [DEBUG] [Thread-121291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:00:39.498 [DEBUG] [Thread-121291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:39.498 [DEBUG] [Thread-121291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] Compression: none
2025-09-28T10:00:39.499 [DEBUG] [Thread-121291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:39.509 [DEBUG] [Thread-121291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:39.509 [DEBUG] [Thread-121291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:39.510 [DEBUG] [Thread-121291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:00:39.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:00:39.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:39.512 [DEBUG] [Thread-121291] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:39.512 [DEBUG] [Thread-121291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:39.512 [DEBUG] [Thread-121291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:39.512 [DEBUG] [Thread-121291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:00:39.512 [DEBUG] [Thread-121291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:39.548 [INFO] [Thread-121291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:39.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:40.244 [DEBUG] [Thread-121291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:40.244 [DEBUG] [Thread-121291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:40.244 [DEBUG] [Thread-121291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:00:40.285 [DEBUG] [Thread-121291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:40.286 [DEBUG] [Thread-121291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:40.288 [DEBUG] [Thread-121291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:40.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:40.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:00:40.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:00:40.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:00:40.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:40.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:00:40.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:40.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:00:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.333072 -999.00  +15.70   4.90     51   +5.70 1 1 1 1 1   888    0 12.84 87.62 ----- 2.6 4.9 195.6 10.2 24.1 -26.5 22.5 -25.2 21.4 -25.3 22.6 -26.5
2025-09-28T10:00:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:00:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:00:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.333072
2025-09-28T10:00:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:00:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:00:40.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:00:40.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:00:40.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:00:40.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:00:24', tmtdew=11.44, humidity=46.59, cloud=0.0, wind=7.61, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T07:59:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:00:40.324 [DEBUG] [Thread-121291] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:40.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-28T10:00:40.416 [DEBUG] [Thread-121294] [transport.py] [_log()] starting thread (client mode): 0x2b96e110
2025-09-28T10:00:40.416 [DEBUG] [Thread-121294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:40.434 [DEBUG] [Thread-121294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:00:40.434 [INFO] [Thread-121294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:40.448 [DEBUG] [Thread-121294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] Compression: none
2025-09-28T10:00:40.449 [DEBUG] [Thread-121294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:40.511 [DEBUG] [Thread-121294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:40.511 [DEBUG] [Thread-121294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:40.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:00:40.512 [DEBUG] [Thread-121294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:00:40.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:40.577 [DEBUG] [Thread-121294] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:40.578 [DEBUG] [Thread-121294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:40.578 [DEBUG] [Thread-121294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:40.578 [DEBUG] [Thread-121294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:00:40.578 [DEBUG] [Thread-121294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:40.602 [INFO] [Thread-121294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:40.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-28T10:00:40.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:41.597 [DEBUG] [Thread-121294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:41.597 [DEBUG] [Thread-121294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:41.673 [DEBUG] [Thread-121294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:41.673 [DEBUG] [Thread-121294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:41.711 [DEBUG] [Thread-121294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:41.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:41.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-28T10:00:41.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-28T10:00:41.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:41.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:41.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:41.788 [DEBUG] [Thread-121294] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:47.008 [DEBUG] [Thread-121296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:00:51.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:00:51.788 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:00:51.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-28T10:00:52.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 0, 24), 11.44, 46.59, 0.0, 7.61, 15.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:00:52.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:00:24
2025-09-28T10:00:52.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:00:52.623 [DEBUG] [Thread-121297] [transport.py] [_log()] starting thread (client mode): 0x2b988d90
2025-09-28T10:00:52.624 [DEBUG] [Thread-121297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:52.643 [DEBUG] [Thread-121297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:00:52.644 [INFO] [Thread-121297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:52.647 [DEBUG] [Thread-121297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] Compression: none
2025-09-28T10:00:52.648 [DEBUG] [Thread-121297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:52.658 [DEBUG] [Thread-121297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:52.658 [DEBUG] [Thread-121297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:52.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:00:52.659 [DEBUG] [Thread-121297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:00:52.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:52.660 [DEBUG] [Thread-121297] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:52.661 [DEBUG] [Thread-121297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:52.661 [DEBUG] [Thread-121297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:52.661 [DEBUG] [Thread-121297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:00:52.661 [DEBUG] [Thread-121297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:52.697 [INFO] [Thread-121297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:52.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:53.258 [DEBUG] [Thread-121297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:53.258 [DEBUG] [Thread-121297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:53.258 [DEBUG] [Thread-121297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:00:53.299 [DEBUG] [Thread-121297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:53.299 [DEBUG] [Thread-121297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:53.302 [DEBUG] [Thread-121297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:53.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:53.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:00:53.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:00:53.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:00:53.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:53.329 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:00:53.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:53.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.333767 -999.00  +15.90   9.41     51   +5.80 1 1 1 1 1   888    0 12.35 75.80 ----- 6.5 9.4 180.2 11.0 24.2 -26.5 22.2 -29.6 21.4 -26.3 22.6 -27.9
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.333767
2025-09-28T10:00:53.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:00:53.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:00:53.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:00:53.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:00:53.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:00:53.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:00:24', tmtdew=11.44, humidity=46.59, cloud=0.0, wind=7.61, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:00:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:00:53.331 [DEBUG] [Thread-121297] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:00:53.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-28T10:00:53.432 [DEBUG] [Thread-121300] [transport.py] [_log()] starting thread (client mode): 0x2b98b880
2025-09-28T10:00:53.432 [DEBUG] [Thread-121300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:00:53.447 [DEBUG] [Thread-121300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:00:53.447 [INFO] [Thread-121300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] client lang: <none>
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] server lang: <none>
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] kex follows: False
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] Compression: none
2025-09-28T10:00:53.454 [DEBUG] [Thread-121300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:00:53.513 [DEBUG] [Thread-121300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:00:53.513 [DEBUG] [Thread-121300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:00:53.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:00:53.515 [DEBUG] [Thread-121300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:00:53.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:00:53.569 [DEBUG] [Thread-121300] [transport.py] [_log()] userauth is OK
2025-09-28T10:00:53.569 [DEBUG] [Thread-121300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:00:53.570 [DEBUG] [Thread-121300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:00:53.570 [DEBUG] [Thread-121300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:00:53.570 [DEBUG] [Thread-121300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:00:53.588 [INFO] [Thread-121300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:00:53.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-28T10:00:53.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:00:54.552 [DEBUG] [Thread-121300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:00:54.552 [DEBUG] [Thread-121300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:00:54.600 [DEBUG] [Thread-121300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:00:54.600 [DEBUG] [Thread-121300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:00:54.610 [DEBUG] [Thread-121300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:00:54.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:00:54.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-28T10:00:54.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-28T10:00:54.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:00:54.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:00:54.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:00:54.644 [DEBUG] [Thread-121300] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:01.549 [DEBUG] [Thread-121302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:02.060 [DEBUG] [Thread-121303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:04.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:01:04.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:01:04.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-28T10:01:05.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 0, 56), 11.09, 47.55, 0.0, 7.01, 15.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:01:05.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:00:56
2025-09-28T10:01:05.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:01:05.488 [DEBUG] [Thread-121304] [transport.py] [_log()] starting thread (client mode): 0x2e363e20
2025-09-28T10:01:05.488 [DEBUG] [Thread-121304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:05.508 [DEBUG] [Thread-121304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:01:05.508 [INFO] [Thread-121304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] Compression: none
2025-09-28T10:01:05.512 [DEBUG] [Thread-121304] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:05.531 [DEBUG] [Thread-121304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:05.531 [DEBUG] [Thread-121304] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:05.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:01:05.532 [DEBUG] [Thread-121304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:01:05.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:05.533 [DEBUG] [Thread-121304] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:05.534 [DEBUG] [Thread-121304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:05.534 [DEBUG] [Thread-121304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:05.534 [DEBUG] [Thread-121304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:01:05.534 [DEBUG] [Thread-121304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:05.554 [INFO] [Thread-121304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:05.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:06.291 [DEBUG] [Thread-121304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:06.291 [DEBUG] [Thread-121304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:06.291 [DEBUG] [Thread-121304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:01:06.332 [DEBUG] [Thread-121304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:06.332 [DEBUG] [Thread-121304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:06.335 [DEBUG] [Thread-121304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:06.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:06.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:01:06.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:01:06.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:01:06.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:06.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:01:06.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.333767 -999.00  +15.90   9.41     51   +5.80 1 1 1 1 1   888    0 12.35 75.80 ----- 6.5 9.4 180.2 11.0 24.2 -26.5 22.2 -29.6 21.4 -26.3 22.6 -27.9
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:01:06.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.333767
2025-09-28T10:01:06.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:01:06.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:01:06.360 [DEBUG] [Thread-121304] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:01:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:01:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:01:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:00:56', tmtdew=11.09, humidity=47.55, cloud=0.0, wind=7.01, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:00:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:01:06.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-28T10:01:06.480 [DEBUG] [Thread-121307] [transport.py] [_log()] starting thread (client mode): 0x2b9b9cc0
2025-09-28T10:01:06.480 [DEBUG] [Thread-121307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:06.522 [DEBUG] [Thread-121307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:01:06.522 [INFO] [Thread-121307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:01:06.557 [DEBUG] [Thread-121307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:06.557 [DEBUG] [Thread-121307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:01:06.557 [DEBUG] [Thread-121307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] Compression: none
2025-09-28T10:01:06.558 [DEBUG] [Thread-121307] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:06.644 [DEBUG] [Thread-121307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:06.645 [DEBUG] [Thread-121307] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:06.645 [DEBUG] [Thread-121307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:01:06.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:01:06.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:06.743 [DEBUG] [Thread-121307] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:06.743 [DEBUG] [Thread-121307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:06.743 [DEBUG] [Thread-121307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:06.743 [DEBUG] [Thread-121307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:01:06.743 [DEBUG] [Thread-121307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:06.760 [INFO] [Thread-121307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:06.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-28T10:01:06.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:07.741 [DEBUG] [Thread-121307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:07.741 [DEBUG] [Thread-121307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:07.818 [DEBUG] [Thread-121307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:07.819 [DEBUG] [Thread-121307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:07.832 [DEBUG] [Thread-121307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:07.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:07.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-28T10:01:07.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-28T10:01:07.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:07.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:07.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:07.865 [DEBUG] [Thread-121307] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:17.104 [DEBUG] [Thread-121309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:01:17.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:01:17.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-28T10:01:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 0, 56), 11.09, 47.55, 0.0, 7.01, 15.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:01:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:00:56
2025-09-28T10:01:18.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:01:18.704 [DEBUG] [Thread-121310] [transport.py] [_log()] starting thread (client mode): 0x2b9b9150
2025-09-28T10:01:18.704 [DEBUG] [Thread-121310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:18.716 [DEBUG] [Thread-121310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:01:18.716 [INFO] [Thread-121310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:18.717 [DEBUG] [Thread-121310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:18.718 [DEBUG] [Thread-121310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:18.718 [DEBUG] [Thread-121310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:18.718 [DEBUG] [Thread-121310] [transport.py] [_log()] Compression: none
2025-09-28T10:01:18.718 [DEBUG] [Thread-121310] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:18.725 [DEBUG] [Thread-121310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:18.726 [DEBUG] [Thread-121310] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:18.726 [DEBUG] [Thread-121310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:01:18.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:01:18.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:18.727 [DEBUG] [Thread-121310] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:18.727 [DEBUG] [Thread-121310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:18.727 [DEBUG] [Thread-121310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:18.727 [DEBUG] [Thread-121310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:01:18.727 [DEBUG] [Thread-121310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:18.739 [INFO] [Thread-121310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:18.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:19.352 [DEBUG] [Thread-121310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:19.352 [DEBUG] [Thread-121310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:19.352 [DEBUG] [Thread-121310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:01:19.393 [DEBUG] [Thread-121310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:19.393 [DEBUG] [Thread-121310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:19.395 [DEBUG] [Thread-121310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:19.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:19.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:01:19.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:01:19.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:01:19.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:19.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:01:19.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:19.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:01:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334114 -999.00  +16.00   8.89     51   +5.90 1 1 1 1 1   888    0 12.28 75.46 ----- 10.2 8.9 165.0 10.4 24.4 -26.5 22.5 -27.4 21.5 -25.5 22.7 -27.3
2025-09-28T10:01:19.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:01:19.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:01:19.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334114
2025-09-28T10:01:19.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:01:19.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:01:19.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:01:19.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:01:19.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:01:19.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:00:56', tmtdew=11.09, humidity=47.55, cloud=0.0, wind=7.01, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:01:19.420 [DEBUG] [Thread-121310] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:19.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-28T10:01:19.509 [DEBUG] [Thread-121313] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-28T10:01:19.510 [DEBUG] [Thread-121313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:19.527 [DEBUG] [Thread-121313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:01:19.528 [INFO] [Thread-121313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] Compression: none
2025-09-28T10:01:19.535 [DEBUG] [Thread-121313] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:19.593 [DEBUG] [Thread-121313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:19.594 [DEBUG] [Thread-121313] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:19.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:01:19.595 [DEBUG] [Thread-121313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:01:19.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:19.649 [DEBUG] [Thread-121313] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:19.649 [DEBUG] [Thread-121313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:19.649 [DEBUG] [Thread-121313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:19.649 [DEBUG] [Thread-121313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:01:19.649 [DEBUG] [Thread-121313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:19.669 [INFO] [Thread-121313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:19.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-28T10:01:19.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:20.665 [DEBUG] [Thread-121313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:20.665 [DEBUG] [Thread-121313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:20.713 [DEBUG] [Thread-121313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:20.713 [DEBUG] [Thread-121313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:20.722 [DEBUG] [Thread-121313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:20.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:20.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-28T10:01:20.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') -> 00000000
2025-09-28T10:01:20.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:20.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:20.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:20.756 [DEBUG] [Thread-121313] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:25.164 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:25.165 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:30.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:01:30.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:01:30.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-28T10:01:31.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 1, 28), 11.0, 47.83, 0.0, 10.3, 15.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:01:31.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:01:28
2025-09-28T10:01:31.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:01:31.606 [DEBUG] [Thread-121315] [transport.py] [_log()] starting thread (client mode): 0x2e34b460
2025-09-28T10:01:31.607 [DEBUG] [Thread-121315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:31.627 [DEBUG] [Thread-121315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:01:31.627 [INFO] [Thread-121315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:31.630 [DEBUG] [Thread-121315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] Compression: none
2025-09-28T10:01:31.631 [DEBUG] [Thread-121315] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:31.648 [DEBUG] [Thread-121315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:31.648 [DEBUG] [Thread-121315] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:31.649 [DEBUG] [Thread-121315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:01:31.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:01:31.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:31.692 [DEBUG] [Thread-121315] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:31.692 [DEBUG] [Thread-121315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:31.692 [DEBUG] [Thread-121315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:31.692 [DEBUG] [Thread-121315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:01:31.693 [DEBUG] [Thread-121315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:31.727 [INFO] [Thread-121315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:31.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:32.155 [DEBUG] [Thread-121317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:32.490 [DEBUG] [Thread-121315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:32.490 [DEBUG] [Thread-121315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:32.491 [DEBUG] [Thread-121315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:01:32.531 [DEBUG] [Thread-121315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:32.531 [DEBUG] [Thread-121315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:32.534 [DEBUG] [Thread-121315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:32.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:32.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:01:32.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:01:32.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:01:32.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:32.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:01:32.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334114 -999.00  +16.00   8.89     51   +5.90 1 1 1 1 1   888    0 12.28 75.46 ----- 10.2 8.9 165.0 10.4 24.4 -26.5 22.5 -27.4 21.5 -25.5 22.7 -27.3
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:01:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334114
2025-09-28T10:01:32.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:01:32.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:01:32.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:01:32.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:01:32.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:01:32.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:01:28', tmtdew=11.0, humidity=47.83, cloud=0.0, wind=10.3, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:01:32.557 [DEBUG] [Thread-121315] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:32.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-28T10:01:32.650 [DEBUG] [Thread-121319] [transport.py] [_log()] starting thread (client mode): 0x2b9892d0
2025-09-28T10:01:32.651 [DEBUG] [Thread-121319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:32.665 [DEBUG] [Thread-121319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:01:32.665 [INFO] [Thread-121319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:32.673 [DEBUG] [Thread-121319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] Compression: none
2025-09-28T10:01:32.674 [DEBUG] [Thread-121319] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:32.729 [DEBUG] [Thread-121319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:32.730 [DEBUG] [Thread-121319] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:32.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:01:32.731 [DEBUG] [Thread-121319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:01:32.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:32.789 [DEBUG] [Thread-121319] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:32.789 [DEBUG] [Thread-121319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:32.790 [DEBUG] [Thread-121319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:32.790 [DEBUG] [Thread-121319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:01:32.790 [DEBUG] [Thread-121319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:32.808 [INFO] [Thread-121319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:32.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-28T10:01:32.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:33.766 [DEBUG] [Thread-121319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:33.767 [DEBUG] [Thread-121319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:33.814 [DEBUG] [Thread-121319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:33.815 [DEBUG] [Thread-121319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:33.824 [DEBUG] [Thread-121319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:33.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:33.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')
2025-09-28T10:01:33.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-28T10:01:33.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:33.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:33.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:33.868 [DEBUG] [Thread-121319] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:43.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:01:43.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:01:43.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:01:44.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 1, 28), 11.0, 47.83, 0.0, 10.3, 15.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:01:44.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:01:28
2025-09-28T10:01:44.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:01:44.683 [DEBUG] [Thread-121321] [transport.py] [_log()] starting thread (client mode): 0x2e360a00
2025-09-28T10:01:44.683 [DEBUG] [Thread-121321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:44.702 [DEBUG] [Thread-121321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:01:44.702 [INFO] [Thread-121321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:01:44.705 [DEBUG] [Thread-121321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:44.705 [DEBUG] [Thread-121321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:01:44.705 [DEBUG] [Thread-121321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] Compression: none
2025-09-28T10:01:44.706 [DEBUG] [Thread-121321] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:44.720 [DEBUG] [Thread-121321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:44.720 [DEBUG] [Thread-121321] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:44.720 [DEBUG] [Thread-121321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:01:44.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:01:44.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:44.721 [DEBUG] [Thread-121321] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:44.721 [DEBUG] [Thread-121321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:44.721 [DEBUG] [Thread-121321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:44.721 [DEBUG] [Thread-121321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:01:44.721 [DEBUG] [Thread-121321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:44.735 [INFO] [Thread-121321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:44.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:45.458 [DEBUG] [Thread-121321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:45.458 [DEBUG] [Thread-121321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:45.459 [DEBUG] [Thread-121321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:01:45.499 [DEBUG] [Thread-121321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:45.500 [DEBUG] [Thread-121321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:45.503 [DEBUG] [Thread-121321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:45.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:45.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:01:45.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:01:45.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:01:45.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:45.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:01:45.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334114 -999.00  +16.00   8.89     51   +5.90 1 1 1 1 1   888    0 12.28 75.46 ----- 10.2 8.9 165.0 10.4 24.4 -26.5 22.5 -27.4 21.5 -25.5 22.7 -27.3
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:01:45.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334114
2025-09-28T10:01:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:01:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:01:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:01:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:01:45.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:01:45.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:01:28', tmtdew=11.0, humidity=47.83, cloud=0.0, wind=10.3, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:01:45.520 [DEBUG] [Thread-121321] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:45.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-28T10:01:45.618 [DEBUG] [Thread-121324] [transport.py] [_log()] starting thread (client mode): 0x2b96fbe0
2025-09-28T10:01:45.618 [DEBUG] [Thread-121324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:45.638 [DEBUG] [Thread-121324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:01:45.638 [INFO] [Thread-121324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:01:45.646 [DEBUG] [Thread-121324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:45.646 [DEBUG] [Thread-121324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:01:45.646 [DEBUG] [Thread-121324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:45.646 [DEBUG] [Thread-121324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:45.647 [DEBUG] [Thread-121324] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] Compression: none
2025-09-28T10:01:45.648 [DEBUG] [Thread-121324] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:45.705 [DEBUG] [Thread-121324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:45.706 [DEBUG] [Thread-121324] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:45.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:01:45.707 [DEBUG] [Thread-121324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:01:45.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:45.761 [DEBUG] [Thread-121324] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:45.761 [DEBUG] [Thread-121324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:45.761 [DEBUG] [Thread-121324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:45.761 [DEBUG] [Thread-121324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:01:45.761 [DEBUG] [Thread-121324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:45.776 [INFO] [Thread-121324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:45.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-28T10:01:45.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:46.807 [DEBUG] [Thread-121324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:46.807 [DEBUG] [Thread-121324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:46.855 [DEBUG] [Thread-121324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:46.855 [DEBUG] [Thread-121324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:46.864 [DEBUG] [Thread-121324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:46.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:46.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-28T10:01:46.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-28T10:01:46.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:46.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:46.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:46.898 [DEBUG] [Thread-121324] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:47.185 [DEBUG] [Thread-121326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:01:56.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:01:56.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:01:56.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-28T10:01:57.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 1, 28), 11.0, 47.83, 0.0, 10.3, 15.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:01:57.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:01:28
2025-09-28T10:01:57.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:01:57.728 [DEBUG] [Thread-121327] [transport.py] [_log()] starting thread (client mode): 0x2b98aa10
2025-09-28T10:01:57.728 [DEBUG] [Thread-121327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:57.748 [DEBUG] [Thread-121327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:01:57.748 [INFO] [Thread-121327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:01:57.749 [DEBUG] [Thread-121327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:57.749 [DEBUG] [Thread-121327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:57.750 [DEBUG] [Thread-121327] [transport.py] [_log()] Compression: none
2025-09-28T10:01:57.751 [DEBUG] [Thread-121327] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:57.761 [DEBUG] [Thread-121327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:57.761 [DEBUG] [Thread-121327] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:57.762 [DEBUG] [Thread-121327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:01:57.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:01:57.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:57.763 [DEBUG] [Thread-121327] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:57.764 [DEBUG] [Thread-121327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:57.764 [DEBUG] [Thread-121327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:57.764 [DEBUG] [Thread-121327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:01:57.764 [DEBUG] [Thread-121327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:57.781 [INFO] [Thread-121327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:57.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:58.386 [DEBUG] [Thread-121327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:58.387 [DEBUG] [Thread-121327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:58.387 [DEBUG] [Thread-121327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:01:58.427 [DEBUG] [Thread-121327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:58.428 [DEBUG] [Thread-121327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:58.433 [DEBUG] [Thread-121327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:58.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:58.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:01:58.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:01:58.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:01:58.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:58.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:01:58.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:58.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334461 -999.00  +16.00   8.37     51   +6.00 1 1 1 1 1   888    0 12.38 73.97 ----- 10.7 8.4 160.5 11.3 24.3 -27.1 22.7 -25.4 21.5 -26.0 22.8 -27.5
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334461
2025-09-28T10:01:58.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:01:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:01:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:01:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:01:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:01:58.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:01:28', tmtdew=11.0, humidity=47.83, cloud=0.0, wind=10.3, temperature=15.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:01:58.458 [DEBUG] [Thread-121327] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:01:58.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-28T10:01:58.552 [DEBUG] [Thread-121330] [transport.py] [_log()] starting thread (client mode): 0x2e361ba0
2025-09-28T10:01:58.552 [DEBUG] [Thread-121330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:01:58.567 [DEBUG] [Thread-121330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:01:58.567 [INFO] [Thread-121330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:01:58.574 [DEBUG] [Thread-121330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] client lang: <none>
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] server lang: <none>
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] kex follows: False
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] Compression: none
2025-09-28T10:01:58.575 [DEBUG] [Thread-121330] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:01:58.635 [DEBUG] [Thread-121330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:01:58.636 [DEBUG] [Thread-121330] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:01:58.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:01:58.637 [DEBUG] [Thread-121330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:01:58.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:01:58.693 [DEBUG] [Thread-121330] [transport.py] [_log()] userauth is OK
2025-09-28T10:01:58.693 [DEBUG] [Thread-121330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:01:58.693 [DEBUG] [Thread-121330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:01:58.693 [DEBUG] [Thread-121330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:01:58.693 [DEBUG] [Thread-121330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:01:58.716 [INFO] [Thread-121330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:01:58.716 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:01:58.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:01:59.627 [DEBUG] [Thread-121330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:01:59.627 [DEBUG] [Thread-121330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:01:59.675 [DEBUG] [Thread-121330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:01:59.675 [DEBUG] [Thread-121330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:01:59.684 [DEBUG] [Thread-121330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:01:59.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:01:59.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-28T10:01:59.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-28T10:01:59.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:01:59.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:01:59.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:01:59.721 [DEBUG] [Thread-121330] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:01.604 [DEBUG] [Thread-121332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:02.222 [DEBUG] [Thread-121333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:09.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:02:09.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:02:09.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-28T10:02:10.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 1, 28), 10.9, 47.83, 0.0, 12.11, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:02:10.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:01:28
2025-09-28T10:02:10.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:02:10.541 [DEBUG] [Thread-121334] [transport.py] [_log()] starting thread (client mode): 0x2e349b10
2025-09-28T10:02:10.542 [DEBUG] [Thread-121334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:02:10.561 [DEBUG] [Thread-121334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:02:10.561 [INFO] [Thread-121334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:02:10.564 [DEBUG] [Thread-121334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:02:10.564 [DEBUG] [Thread-121334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:02:10.564 [DEBUG] [Thread-121334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:02:10.564 [DEBUG] [Thread-121334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:10.564 [DEBUG] [Thread-121334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] client lang: <none>
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] server lang: <none>
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] kex follows: False
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] Compression: none
2025-09-28T10:02:10.565 [DEBUG] [Thread-121334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:02:10.578 [DEBUG] [Thread-121334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:02:10.578 [DEBUG] [Thread-121334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:02:10.579 [DEBUG] [Thread-121334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:02:10.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:02:10.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:02:10.581 [DEBUG] [Thread-121334] [transport.py] [_log()] userauth is OK
2025-09-28T10:02:10.581 [DEBUG] [Thread-121334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:02:10.581 [DEBUG] [Thread-121334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:02:10.581 [DEBUG] [Thread-121334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:02:10.581 [DEBUG] [Thread-121334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:02:10.605 [INFO] [Thread-121334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:02:10.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:02:11.401 [DEBUG] [Thread-121334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:02:11.401 [DEBUG] [Thread-121334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:02:11.401 [DEBUG] [Thread-121334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:02:11.442 [DEBUG] [Thread-121334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:02:11.442 [DEBUG] [Thread-121334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:02:11.444 [DEBUG] [Thread-121334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:02:11.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:02:11.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:02:11.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:02:11.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:02:11.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:02:11.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:02:11.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334461 -999.00  +16.00   8.37     51   +6.00 1 1 1 1 1   888    0 12.38 73.97 ----- 10.7 8.4 160.5 11.3 24.3 -27.1 22.7 -25.4 21.5 -26.0 22.8 -27.5
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334461
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:02:11.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:01:28', tmtdew=10.9, humidity=47.83, cloud=0.0, wind=12.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:02:11.463 [DEBUG] [Thread-121334] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:11.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-28T10:02:11.545 [DEBUG] [Thread-121337] [transport.py] [_log()] starting thread (client mode): 0x2e362710
2025-09-28T10:02:11.545 [DEBUG] [Thread-121337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:02:11.560 [DEBUG] [Thread-121337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:02:11.560 [INFO] [Thread-121337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:02:11.567 [DEBUG] [Thread-121337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:02:11.567 [DEBUG] [Thread-121337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] client lang: <none>
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] server lang: <none>
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] kex follows: False
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] Compression: none
2025-09-28T10:02:11.568 [DEBUG] [Thread-121337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:02:11.624 [DEBUG] [Thread-121337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:02:11.625 [DEBUG] [Thread-121337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:02:11.625 [DEBUG] [Thread-121337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:02:11.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:02:11.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:02:11.681 [DEBUG] [Thread-121337] [transport.py] [_log()] userauth is OK
2025-09-28T10:02:11.681 [DEBUG] [Thread-121337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:02:11.681 [DEBUG] [Thread-121337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:02:11.681 [DEBUG] [Thread-121337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:02:11.681 [DEBUG] [Thread-121337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:02:11.695 [INFO] [Thread-121337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:02:11.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-28T10:02:11.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:02:12.637 [DEBUG] [Thread-121337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:02:12.637 [DEBUG] [Thread-121337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:02:12.685 [DEBUG] [Thread-121337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:02:12.685 [DEBUG] [Thread-121337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:02:12.694 [DEBUG] [Thread-121337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:02:12.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:02:12.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-28T10:02:12.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-28T10:02:12.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:02:12.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:02:12.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:02:12.727 [DEBUG] [Thread-121337] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:17.269 [DEBUG] [Thread-121339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:22.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:02:22.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:02:22.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-28T10:02:23.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 1, 28), 10.9, 47.83, 0.0, 12.11, 15.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:02:23.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:01:28
2025-09-28T10:02:23.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:02:23.550 [DEBUG] [Thread-121340] [transport.py] [_log()] starting thread (client mode): 0x2b9b9cc0
2025-09-28T10:02:23.550 [DEBUG] [Thread-121340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:02:23.562 [DEBUG] [Thread-121340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:02:23.562 [INFO] [Thread-121340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] client lang: <none>
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] server lang: <none>
2025-09-28T10:02:23.563 [DEBUG] [Thread-121340] [transport.py] [_log()] kex follows: False
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] Compression: none
2025-09-28T10:02:23.564 [DEBUG] [Thread-121340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:02:23.571 [DEBUG] [Thread-121340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:02:23.571 [DEBUG] [Thread-121340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:02:23.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:02:23.572 [DEBUG] [Thread-121340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:02:23.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:02:23.573 [DEBUG] [Thread-121340] [transport.py] [_log()] userauth is OK
2025-09-28T10:02:23.573 [DEBUG] [Thread-121340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:02:23.573 [DEBUG] [Thread-121340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:02:23.573 [DEBUG] [Thread-121340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:02:23.573 [DEBUG] [Thread-121340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:02:23.585 [INFO] [Thread-121340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:02:23.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:02:24.271 [DEBUG] [Thread-121340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:02:24.271 [DEBUG] [Thread-121340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:02:24.271 [DEBUG] [Thread-121340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:02:24.312 [DEBUG] [Thread-121340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:02:24.312 [DEBUG] [Thread-121340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:02:24.314 [DEBUG] [Thread-121340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:02:24.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:02:24.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:02:24.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:02:24.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:02:24.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:02:24.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:02:24.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:02:24.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:02:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:02:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334461 -999.00  +16.00   8.37     51   +6.00 1 1 1 1 1   888    0 12.38 73.97 ----- 10.7 8.4 160.5 11.3 24.3 -27.1 22.7 -25.4 21.5 -26.0 22.8 -27.5
2025-09-28T10:02:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:02:24.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:02:24.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334461
2025-09-28T10:02:24.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:02:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:02:24.339 [DEBUG] [Thread-121340] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:02:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:02:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:02:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:01:28', tmtdew=10.9, humidity=47.83, cloud=0.0, wind=12.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:01:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:02:24.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-28T10:02:24.432 [DEBUG] [Thread-121343] [transport.py] [_log()] starting thread (client mode): 0x2b9cd2a0
2025-09-28T10:02:24.432 [DEBUG] [Thread-121343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:02:24.446 [DEBUG] [Thread-121343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:02:24.446 [INFO] [Thread-121343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:02:24.453 [DEBUG] [Thread-121343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] client lang: <none>
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] server lang: <none>
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] kex follows: False
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:02:24.454 [DEBUG] [Thread-121343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:02:24.455 [DEBUG] [Thread-121343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:02:24.455 [DEBUG] [Thread-121343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:02:24.455 [DEBUG] [Thread-121343] [transport.py] [_log()] Compression: none
2025-09-28T10:02:24.455 [DEBUG] [Thread-121343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:02:24.512 [DEBUG] [Thread-121343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:02:24.513 [DEBUG] [Thread-121343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:02:24.513 [DEBUG] [Thread-121343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:02:24.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:02:24.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:02:24.569 [DEBUG] [Thread-121343] [transport.py] [_log()] userauth is OK
2025-09-28T10:02:24.569 [DEBUG] [Thread-121343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:02:24.569 [DEBUG] [Thread-121343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:02:24.569 [DEBUG] [Thread-121343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:02:24.569 [DEBUG] [Thread-121343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:02:24.588 [INFO] [Thread-121343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:02:24.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-28T10:02:24.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:02:25.307 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:25.308 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:25.573 [DEBUG] [Thread-121343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:02:25.573 [DEBUG] [Thread-121343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:02:25.621 [DEBUG] [Thread-121343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:02:25.621 [DEBUG] [Thread-121343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:02:25.629 [DEBUG] [Thread-121343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:02:25.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:02:25.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-28T10:02:25.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-28T10:02:25.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:02:25.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:02:25.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:02:25.660 [DEBUG] [Thread-121343] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:32.313 [DEBUG] [Thread-121345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:02:35.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:02:35.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:02:35.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:02:36.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 2, 31), 11.15, 47.07, 0.0, 10.48, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:02:36.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:02:31
2025-09-28T10:02:36.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:02:36.505 [DEBUG] [Thread-121346] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-28T10:02:36.505 [DEBUG] [Thread-121346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:02:36.524 [DEBUG] [Thread-121346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:02:36.524 [INFO] [Thread-121346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:02:36.527 [DEBUG] [Thread-121346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:02:36.527 [DEBUG] [Thread-121346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:02:36.527 [DEBUG] [Thread-121346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:02:36.527 [DEBUG] [Thread-121346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] client lang: <none>
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] server lang: <none>
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] kex follows: False
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:02:36.528 [DEBUG] [Thread-121346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:02:36.529 [DEBUG] [Thread-121346] [transport.py] [_log()] Compression: none
2025-09-28T10:02:36.529 [DEBUG] [Thread-121346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:02:36.544 [DEBUG] [Thread-121346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:02:36.544 [DEBUG] [Thread-121346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:02:36.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:02:36.545 [DEBUG] [Thread-121346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:02:36.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:02:36.547 [DEBUG] [Thread-121346] [transport.py] [_log()] userauth is OK
2025-09-28T10:02:36.547 [DEBUG] [Thread-121346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:02:36.547 [DEBUG] [Thread-121346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:02:36.547 [DEBUG] [Thread-121346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:02:36.547 [DEBUG] [Thread-121346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:02:36.571 [INFO] [Thread-121346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:02:36.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:02:37.145 [DEBUG] [Thread-121346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:02:37.145 [DEBUG] [Thread-121346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:02:37.145 [DEBUG] [Thread-121346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:02:37.186 [DEBUG] [Thread-121346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:02:37.186 [DEBUG] [Thread-121346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:02:37.189 [DEBUG] [Thread-121346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:02:37.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:02:37.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:02:37.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:02:37.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:02:37.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:02:37.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:02:37.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.334809 -999.00  +15.70   7.19     51   +5.90 1 1 1 1 1   888    0 12.00 63.81 ----- 6.6 7.2 188.6 10.0 24.4 -26.7 22.8 -26.5 21.6 -25.7 22.8 -26.9
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:02:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.334809
2025-09-28T10:02:37.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:02:37.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:02:37.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:02:37.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:02:37.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:02:37.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:02:31', tmtdew=11.15, humidity=47.07, cloud=0.0, wind=10.48, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:02:07.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:02:37.211 [DEBUG] [Thread-121346] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:02:37.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-28T10:02:47.341 [DEBUG] [Thread-121349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:01.678 [DEBUG] [Thread-121350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:02.386 [DEBUG] [Thread-121351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:17.418 [DEBUG] [Thread-121352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:25.447 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:25.448 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:32.451 [DEBUG] [Thread-121353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:03:47.478 [DEBUG] [Thread-121354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:01.723 [DEBUG] [Thread-121355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:02.506 [DEBUG] [Thread-121356 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:17.532 [DEBUG] [Thread-121357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:25.589 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:25.590 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:32.562 [DEBUG] [Thread-121358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:47.591 [DEBUG] [Thread-121359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:04:52.026 [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-28T10:05:01.768 [DEBUG] [Thread-121360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:02.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:05:02.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:05:02.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-28T10:05:02.621 [DEBUG] [Thread-121361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:02.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 4, 40), 10.99, 48.07, 0.0, 8.65, 15.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:05:02.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:04:40
2025-09-28T10:05:02.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:05:02.948 [DEBUG] [Thread-121362] [transport.py] [_log()] starting thread (client mode): 0x2b9de3b0
2025-09-28T10:05:02.948 [DEBUG] [Thread-121362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:05:02.968 [DEBUG] [Thread-121362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:05:02.969 [INFO] [Thread-121362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] client lang: <none>
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] server lang: <none>
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] kex follows: False
2025-09-28T10:05:02.970 [DEBUG] [Thread-121362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] Compression: none
2025-09-28T10:05:02.971 [DEBUG] [Thread-121362] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:05:02.978 [DEBUG] [Thread-121362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:05:02.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:05:02.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] userauth is OK
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:05:02.979 [DEBUG] [Thread-121362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:05:02.988 [INFO] [Thread-121362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:05:02.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:05:07.043 [DEBUG] [Thread-121362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:05:07.044 [DEBUG] [Thread-121362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:05:07.044 [DEBUG] [Thread-121362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:05:07.085 [DEBUG] [Thread-121362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:05:07.085 [DEBUG] [Thread-121362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:05:07.088 [DEBUG] [Thread-121362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:05:07.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:05:07.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:05:07.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:05:07.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:05:07.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:05:07.358 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:05:07.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:05:07.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:05:07.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:05:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.336545 -999.00  +16.10   7.20     51   +6.00 1 1 1 1 1   888    0 11.50 42.30 ----- 5.6 7.2 128.0 10.6 24.9 -26.7 23.3 -25.8 22.0 -25.2 23.3 -26.7
2025-09-28T10:05:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:05:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:05:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.336545
2025-09-28T10:05:07.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:05:07.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:05:07.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:05:07.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:05:07.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:05:07.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:04:40', tmtdew=10.99, humidity=48.07, cloud=0.0, wind=8.65, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:04:37.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:05:07.360 [DEBUG] [Thread-121362] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:05:07.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-28T10:05:17.652 [DEBUG] [Thread-121365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:25.732 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:25.734 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:32.722 [DEBUG] [Thread-121366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:05:47.753 [DEBUG] [Thread-121367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:01.830 [DEBUG] [Thread-121368 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:02.779 [DEBUG] [Thread-121369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:17.804 [DEBUG] [Thread-121370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:25.875 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:25.876 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:32.830 [DEBUG] [Thread-121371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:06:47.861 [DEBUG] [Thread-121372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:01.882 [DEBUG] [Thread-121373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:02.887 [DEBUG] [Thread-121374 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:17.915 [DEBUG] [Thread-121375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:19.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-28T10:07:26.025 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:26.026 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:29.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:07:29.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:07:29.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-28T10:07:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 7, 20), 11.33, 46.49, 0.0, 11.22, 15.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:07:30.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:07:20
2025-09-28T10:07:30.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:07:30.425 [DEBUG] [Thread-121376] [transport.py] [_log()] starting thread (client mode): 0x2e34a6b0
2025-09-28T10:07:30.425 [DEBUG] [Thread-121376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:30.446 [DEBUG] [Thread-121376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:07:30.446 [INFO] [Thread-121376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] Compression: none
2025-09-28T10:07:30.449 [DEBUG] [Thread-121376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:30.465 [DEBUG] [Thread-121376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:30.465 [DEBUG] [Thread-121376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:30.465 [DEBUG] [Thread-121376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:07:30.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:07:30.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:30.466 [DEBUG] [Thread-121376] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:30.466 [DEBUG] [Thread-121376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:30.467 [DEBUG] [Thread-121376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:30.467 [DEBUG] [Thread-121376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:07:30.467 [DEBUG] [Thread-121376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:30.485 [INFO] [Thread-121376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:30.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:31.082 [DEBUG] [Thread-121376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:31.082 [DEBUG] [Thread-121376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:31.082 [DEBUG] [Thread-121376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:07:31.123 [DEBUG] [Thread-121376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:31.123 [DEBUG] [Thread-121376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:31.125 [DEBUG] [Thread-121376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:31.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:31.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:07:31.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:07:31.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:07:31.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:31.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:07:31.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.337934 -999.00  +16.40   4.33     50   +6.10 1 1 1 1 1   888    0 10.94 29.59 ----- 7.8 4.3 178.2 9.8 25.1 -26.8 23.5 -25.5 22.3 -25.2 23.6 -26.7
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.337934
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:07:31.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:07:20', tmtdew=11.33, humidity=46.49, cloud=0.0, wind=11.22, temperature=15.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:06:37.498', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:07:31.142 [DEBUG] [Thread-121376] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:07:31.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-28T10:07:31.259 [DEBUG] [Thread-121379] [transport.py] [_log()] starting thread (client mode): 0x2b96d1e0
2025-09-28T10:07:31.259 [DEBUG] [Thread-121379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:31.308 [DEBUG] [Thread-121379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:07:31.308 [INFO] [Thread-121379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:07:31.344 [DEBUG] [Thread-121379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] Compression: none
2025-09-28T10:07:31.345 [DEBUG] [Thread-121379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:31.432 [DEBUG] [Thread-121379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:31.432 [DEBUG] [Thread-121379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:31.432 [DEBUG] [Thread-121379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:07:31.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:07:31.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:31.549 [DEBUG] [Thread-121379] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:31.550 [DEBUG] [Thread-121379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:31.550 [DEBUG] [Thread-121379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:31.550 [DEBUG] [Thread-121379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:07:31.550 [DEBUG] [Thread-121379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:31.593 [INFO] [Thread-121379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:31.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-28T10:07:31.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:32.553 [DEBUG] [Thread-121379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:32.553 [DEBUG] [Thread-121379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:32.631 [DEBUG] [Thread-121379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:32.631 [DEBUG] [Thread-121379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:32.669 [DEBUG] [Thread-121379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:32.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:32.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-28T10:07: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') -> 00000000
2025-09-28T10:07:32.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:32.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:32.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:32.818 [DEBUG] [Thread-121379] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:07:32.940 [DEBUG] [Thread-121381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:42.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:07:42.792 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:07:42.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-28T10:07:43.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 7, 20), 11.33, 46.49, 0.0, 11.22, 15.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:07:43.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:07:20
2025-09-28T10:07:43.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:07:43.659 [DEBUG] [Thread-121382] [transport.py] [_log()] starting thread (client mode): 0x2b98b2b0
2025-09-28T10:07:43.659 [DEBUG] [Thread-121382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:43.679 [DEBUG] [Thread-121382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:07:43.679 [INFO] [Thread-121382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:07:43.682 [DEBUG] [Thread-121382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:43.683 [DEBUG] [Thread-121382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:43.684 [DEBUG] [Thread-121382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:43.684 [DEBUG] [Thread-121382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:43.684 [DEBUG] [Thread-121382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:43.684 [DEBUG] [Thread-121382] [transport.py] [_log()] Compression: none
2025-09-28T10:07:43.684 [DEBUG] [Thread-121382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:43.702 [DEBUG] [Thread-121382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:43.703 [DEBUG] [Thread-121382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:43.703 [DEBUG] [Thread-121382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:07:43.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:07:43.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:43.704 [DEBUG] [Thread-121382] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:43.704 [DEBUG] [Thread-121382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:43.704 [DEBUG] [Thread-121382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:43.704 [DEBUG] [Thread-121382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:07:43.704 [DEBUG] [Thread-121382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:43.719 [INFO] [Thread-121382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:43.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:44.338 [DEBUG] [Thread-121382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:44.338 [DEBUG] [Thread-121382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:44.339 [DEBUG] [Thread-121382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:07:44.380 [DEBUG] [Thread-121382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:44.380 [DEBUG] [Thread-121382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:44.383 [DEBUG] [Thread-121382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:44.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:44.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:07:44.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:07:44.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:07:44.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:44.405 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:07:44.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:44.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.338281 -999.00  +16.40  10.04     48   +5.60 1 1 1 1 1   888    0 11.07 27.43 ----- 10.0 10.0 183.5 16.0 25.1 -28.2 23.3 -30.0 22.2 -26.9 23.5 -27.6
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.338281
2025-09-28T10:07:44.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:07:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:07:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:07:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:07:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:07:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:07:20', tmtdew=11.33, humidity=46.49, cloud=0.0, wind=11.22, temperature=15.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:07:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:07:44.407 [DEBUG] [Thread-121382] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:07:44.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-28T10:07:44.531 [DEBUG] [Thread-121385] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-28T10:07:44.531 [DEBUG] [Thread-121385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:44.569 [DEBUG] [Thread-121385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:07:44.570 [INFO] [Thread-121385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:07:44.603 [DEBUG] [Thread-121385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:44.603 [DEBUG] [Thread-121385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:44.604 [DEBUG] [Thread-121385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:44.605 [DEBUG] [Thread-121385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:44.605 [DEBUG] [Thread-121385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:44.605 [DEBUG] [Thread-121385] [transport.py] [_log()] Compression: none
2025-09-28T10:07:44.605 [DEBUG] [Thread-121385] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:44.696 [DEBUG] [Thread-121385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:44.696 [DEBUG] [Thread-121385] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:44.697 [DEBUG] [Thread-121385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:07:44.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:07:44.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:44.802 [DEBUG] [Thread-121385] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:44.802 [DEBUG] [Thread-121385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:44.802 [DEBUG] [Thread-121385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:44.802 [DEBUG] [Thread-121385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:07:44.802 [DEBUG] [Thread-121385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:44.845 [INFO] [Thread-121385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:44.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-28T10:07:44.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:45.909 [DEBUG] [Thread-121385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:45.909 [DEBUG] [Thread-121385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:45.989 [DEBUG] [Thread-121385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:45.989 [DEBUG] [Thread-121385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:46.025 [DEBUG] [Thread-121385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:46.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:46.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-28T10:07:46.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-28T10:07:46.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:46.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:46.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:46.169 [DEBUG] [Thread-121385] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:07:47.974 [DEBUG] [Thread-121387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:07:56.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:07:56.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:07:56.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-28T10:07:56.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 7, 52), 11.97, 44.6, 0.0, 12.74, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:07:56.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:07:52
2025-09-28T10:07:56.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:07:57.023 [DEBUG] [Thread-121388] [transport.py] [_log()] starting thread (client mode): 0x2e362800
2025-09-28T10:07:57.023 [DEBUG] [Thread-121388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:57.043 [DEBUG] [Thread-121388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:07:57.043 [INFO] [Thread-121388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:57.046 [DEBUG] [Thread-121388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] Compression: none
2025-09-28T10:07:57.047 [DEBUG] [Thread-121388] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:57.062 [DEBUG] [Thread-121388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:57.063 [DEBUG] [Thread-121388] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:57.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:07:57.064 [DEBUG] [Thread-121388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:07:57.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:57.065 [DEBUG] [Thread-121388] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:57.066 [DEBUG] [Thread-121388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:57.066 [DEBUG] [Thread-121388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:57.066 [DEBUG] [Thread-121388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:07:57.066 [DEBUG] [Thread-121388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:57.087 [INFO] [Thread-121388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:57.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:57.837 [DEBUG] [Thread-121388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:57.837 [DEBUG] [Thread-121388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:57.837 [DEBUG] [Thread-121388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:07:57.878 [DEBUG] [Thread-121388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:57.878 [DEBUG] [Thread-121388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:57.881 [DEBUG] [Thread-121388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:57.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:57.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:07:57.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:07:57.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:07:57.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:57.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:07:57.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.338281 -999.00  +16.40  10.04     48   +5.60 1 1 1 1 1   888    0 11.07 27.43 ----- 10.0 10.0 183.5 16.0 25.1 -28.2 23.3 -30.0 22.2 -26.9 23.5 -27.6
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:07:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.338281
2025-09-28T10:07:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:07:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:07:57.903 [DEBUG] [Thread-121388] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:07:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:07:57.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:07:57.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:07:57.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:07:52', tmtdew=11.97, humidity=44.6, cloud=0.0, wind=12.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:07:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:07:57.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:07:57.999 [DEBUG] [Thread-121391] [transport.py] [_log()] starting thread (client mode): 0x2b9dc910
2025-09-28T10:07:57.999 [DEBUG] [Thread-121391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:07:58.014 [DEBUG] [Thread-121391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:07:58.014 [INFO] [Thread-121391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] client lang: <none>
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] server lang: <none>
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] kex follows: False
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:07:58.022 [DEBUG] [Thread-121391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:07:58.023 [DEBUG] [Thread-121391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:07:58.023 [DEBUG] [Thread-121391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:07:58.023 [DEBUG] [Thread-121391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:07:58.023 [DEBUG] [Thread-121391] [transport.py] [_log()] Compression: none
2025-09-28T10:07:58.023 [DEBUG] [Thread-121391] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:07:58.079 [DEBUG] [Thread-121391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:07:58.080 [DEBUG] [Thread-121391] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:07:58.080 [DEBUG] [Thread-121391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:07:58.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:07:58.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:07:58.135 [DEBUG] [Thread-121391] [transport.py] [_log()] userauth is OK
2025-09-28T10:07:58.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:07:58.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:07:58.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:07:58.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:07:58.156 [INFO] [Thread-121391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:07:58.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:07:58.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:07:59.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:07:59.135 [DEBUG] [Thread-121391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:07:59.183 [DEBUG] [Thread-121391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:07:59.183 [DEBUG] [Thread-121391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:07:59.191 [DEBUG] [Thread-121391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:07:59.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:07:59.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-28T10:07:59.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-28T10:07:59.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:07:59.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:07:59.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:07:59.223 [DEBUG] [Thread-121391] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:01.930 [DEBUG] [Thread-121393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:03.007 [DEBUG] [Thread-121394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:09.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:08:09.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:08:09.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:08:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 7, 52), 11.97, 44.6, 0.0, 12.74, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:08:09.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:07:52
2025-09-28T10:08:09.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:08:10.085 [DEBUG] [Thread-121395] [transport.py] [_log()] starting thread (client mode): 0x2b9dd360
2025-09-28T10:08:10.085 [DEBUG] [Thread-121395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:10.107 [DEBUG] [Thread-121395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:08:10.107 [INFO] [Thread-121395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] Compression: none
2025-09-28T10:08:10.110 [DEBUG] [Thread-121395] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:10.125 [DEBUG] [Thread-121395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:10.126 [DEBUG] [Thread-121395] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:10.126 [DEBUG] [Thread-121395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:08:10.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:08:10.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:10.127 [DEBUG] [Thread-121395] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:10.127 [DEBUG] [Thread-121395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:10.127 [DEBUG] [Thread-121395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:10.127 [DEBUG] [Thread-121395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:08:10.127 [DEBUG] [Thread-121395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:10.139 [INFO] [Thread-121395] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:10.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:10.791 [DEBUG] [Thread-121395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:10.791 [DEBUG] [Thread-121395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:10.791 [DEBUG] [Thread-121395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:08:10.832 [DEBUG] [Thread-121395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:10.833 [DEBUG] [Thread-121395] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:10.836 [DEBUG] [Thread-121395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:10.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:10.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:08:10.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:08:10.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:08:10.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:10.857 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:08:10.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.338281 -999.00  +16.40  10.04     48   +5.60 1 1 1 1 1   888    0 11.07 27.43 ----- 10.0 10.0 183.5 16.0 25.1 -28.2 23.3 -30.0 22.2 -26.9 23.5 -27.6
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:08:10.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.338281
2025-09-28T10:08:10.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:08:10.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:08:10.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:08:10.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:08:10.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:08:10.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:07:52', tmtdew=11.97, humidity=44.6, cloud=0.0, wind=12.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:07:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:08:10.860 [DEBUG] [Thread-121395] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:10.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-28T10:08:10.992 [DEBUG] [Thread-121398] [transport.py] [_log()] starting thread (client mode): 0x2e38f220
2025-09-28T10:08:10.993 [DEBUG] [Thread-121398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:11.041 [DEBUG] [Thread-121398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:08:11.041 [INFO] [Thread-121398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:08:11.082 [DEBUG] [Thread-121398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:11.083 [DEBUG] [Thread-121398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:11.084 [DEBUG] [Thread-121398] [transport.py] [_log()] Compression: none
2025-09-28T10:08:11.084 [DEBUG] [Thread-121398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:11.172 [DEBUG] [Thread-121398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:11.172 [DEBUG] [Thread-121398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:11.173 [DEBUG] [Thread-121398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:08:11.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:08:11.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:11.297 [DEBUG] [Thread-121398] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:11.297 [DEBUG] [Thread-121398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:11.298 [DEBUG] [Thread-121398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:11.298 [DEBUG] [Thread-121398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:08:11.298 [DEBUG] [Thread-121398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:11.350 [INFO] [Thread-121398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08: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-28T10:08:11.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:12.298 [DEBUG] [Thread-121398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:12.298 [DEBUG] [Thread-121398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:12.377 [DEBUG] [Thread-121398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:12.377 [DEBUG] [Thread-121398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:12.420 [DEBUG] [Thread-121398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:12.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:12.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-28T10:08:12.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-28T10:08:12.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:12.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:12.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:12.583 [DEBUG] [Thread-121398] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:18.039 [DEBUG] [Thread-121400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:22.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:08:22.554 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:08:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:08:23.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 7, 52), 11.97, 44.6, 0.0, 12.74, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:08:23.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:07:52
2025-09-28T10:08:23.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:08:23.418 [DEBUG] [Thread-121401] [transport.py] [_log()] starting thread (client mode): 0x2e362770
2025-09-28T10:08:23.418 [DEBUG] [Thread-121401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:23.438 [DEBUG] [Thread-121401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:08:23.439 [INFO] [Thread-121401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:23.440 [DEBUG] [Thread-121401] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] Compression: none
2025-09-28T10:08:23.441 [DEBUG] [Thread-121401] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:23.460 [DEBUG] [Thread-121401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:23.460 [DEBUG] [Thread-121401] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:23.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:08:23.461 [DEBUG] [Thread-121401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:08:23.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:23.463 [DEBUG] [Thread-121401] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:23.464 [DEBUG] [Thread-121401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:23.464 [DEBUG] [Thread-121401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:23.464 [DEBUG] [Thread-121401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:08:23.464 [DEBUG] [Thread-121401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:23.498 [INFO] [Thread-121401] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:23.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:24.136 [DEBUG] [Thread-121401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:24.137 [DEBUG] [Thread-121401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:24.137 [DEBUG] [Thread-121401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:08:24.177 [DEBUG] [Thread-121401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:24.177 [DEBUG] [Thread-121401] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:24.180 [DEBUG] [Thread-121401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:24.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:24.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:08:24.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:08:24.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:08:24.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:24.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:08:24.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.338975 -999.00  +16.60  13.62     46   +5.20 1 1 1 1 1   888    0 11.24 28.75 ----- 8.7 13.6 220.0 18.9 24.9 -28.3 23.1 -26.6 22.1 -26.6 23.4 -28.6
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:08:24.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.338975
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:08:24.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:07:52', tmtdew=11.97, humidity=44.6, cloud=0.0, wind=12.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:08:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:08:24.203 [DEBUG] [Thread-121401] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:24.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-28T10:08:24.329 [DEBUG] [Thread-121404] [transport.py] [_log()] starting thread (client mode): 0x2b9dfee0
2025-09-28T10:08:24.329 [DEBUG] [Thread-121404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:24.378 [DEBUG] [Thread-121404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:08:24.378 [INFO] [Thread-121404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:24.418 [DEBUG] [Thread-121404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:24.419 [DEBUG] [Thread-121404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:24.419 [DEBUG] [Thread-121404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:24.419 [DEBUG] [Thread-121404] [transport.py] [_log()] Compression: none
2025-09-28T10:08:24.419 [DEBUG] [Thread-121404] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:24.509 [DEBUG] [Thread-121404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:24.509 [DEBUG] [Thread-121404] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:24.509 [DEBUG] [Thread-121404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:08:24.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:08:24.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:24.634 [DEBUG] [Thread-121404] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:24.634 [DEBUG] [Thread-121404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:24.634 [DEBUG] [Thread-121404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:24.634 [DEBUG] [Thread-121404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:08:24.634 [DEBUG] [Thread-121404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:24.683 [INFO] [Thread-121404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:24.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-28T10:08:24.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:25.671 [DEBUG] [Thread-121404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:25.671 [DEBUG] [Thread-121404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:25.756 [DEBUG] [Thread-121404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:25.756 [DEBUG] [Thread-121404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:25.797 [DEBUG] [Thread-121404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:25.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:25.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-28T10:08:25.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-28T10:08:25.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:25.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:25.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:25.969 [DEBUG] [Thread-121404] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:26.173 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:26.174 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:33.064 [DEBUG] [Thread-121406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:35.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:08:35.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:08:35.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-28T10:08:36.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 8, 24), 12.17, 43.97, 0.0, 10.87, 15.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:08:36.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:08:24
2025-09-28T10:08:36.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:08:36.802 [DEBUG] [Thread-121407] [transport.py] [_log()] starting thread (client mode): 0x2b96f2e0
2025-09-28T10:08:36.803 [DEBUG] [Thread-121407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:36.822 [DEBUG] [Thread-121407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:08:36.823 [INFO] [Thread-121407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:36.826 [DEBUG] [Thread-121407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] Compression: none
2025-09-28T10:08:36.827 [DEBUG] [Thread-121407] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:36.843 [DEBUG] [Thread-121407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:36.844 [DEBUG] [Thread-121407] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:36.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:08:36.845 [DEBUG] [Thread-121407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:08:36.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:36.888 [DEBUG] [Thread-121407] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:36.888 [DEBUG] [Thread-121407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:36.888 [DEBUG] [Thread-121407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:36.888 [DEBUG] [Thread-121407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:08:36.888 [DEBUG] [Thread-121407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:36.915 [INFO] [Thread-121407] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:36.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:37.554 [DEBUG] [Thread-121407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:37.554 [DEBUG] [Thread-121407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:37.555 [DEBUG] [Thread-121407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:08:37.595 [DEBUG] [Thread-121407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:37.595 [DEBUG] [Thread-121407] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:37.598 [DEBUG] [Thread-121407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:37.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:37.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:08:37.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:08:37.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:08:37.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:37.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:08:37.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.338975 -999.00  +16.60  13.62     46   +5.20 1 1 1 1 1   888    0 11.24 28.75 ----- 8.7 13.6 220.0 18.9 24.9 -28.3 23.1 -26.6 22.1 -26.6 23.4 -28.6
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:08:37.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.338975
2025-09-28T10:08:37.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:08:37.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:08:37.622 [DEBUG] [Thread-121407] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:37.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:08:37.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:08:37.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:08:37.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:08:24', tmtdew=12.17, humidity=43.97, cloud=0.0, wind=10.87, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:08:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:08:37.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-28T10:08:37.755 [DEBUG] [Thread-121410] [transport.py] [_log()] starting thread (client mode): 0x2b9de380
2025-09-28T10:08:37.755 [DEBUG] [Thread-121410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:37.808 [DEBUG] [Thread-121410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:08:37.809 [INFO] [Thread-121410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:08:37.854 [DEBUG] [Thread-121410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:37.854 [DEBUG] [Thread-121410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:08:37.854 [DEBUG] [Thread-121410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:37.854 [DEBUG] [Thread-121410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] Compression: none
2025-09-28T10:08:37.855 [DEBUG] [Thread-121410] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:37.953 [DEBUG] [Thread-121410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:37.954 [DEBUG] [Thread-121410] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:37.954 [DEBUG] [Thread-121410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:08:37.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:08:37.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:38.087 [DEBUG] [Thread-121410] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:38.087 [DEBUG] [Thread-121410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:38.087 [DEBUG] [Thread-121410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:38.087 [DEBUG] [Thread-121410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:08:38.087 [DEBUG] [Thread-121410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:38.144 [INFO] [Thread-121410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:38.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:08:38.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:39.094 [DEBUG] [Thread-121410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:39.094 [DEBUG] [Thread-121410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:39.165 [DEBUG] [Thread-121410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:39.165 [DEBUG] [Thread-121410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:39.197 [DEBUG] [Thread-121410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:39.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:39.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-28T10:08:39.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-28T10:08:39.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:39.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:39.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:39.324 [DEBUG] [Thread-121410] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:48.103 [DEBUG] [Thread-121412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:08:49.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:08:49.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:08:49.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-28T10:08:49.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 8, 24), 12.17, 43.97, 0.0, 10.87, 15.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:08:49.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:08:24
2025-09-28T10:08:50.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:08:50.170 [DEBUG] [Thread-121413] [transport.py] [_log()] starting thread (client mode): 0x2e363e20
2025-09-28T10:08:50.170 [DEBUG] [Thread-121413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:50.190 [DEBUG] [Thread-121413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:08:50.190 [INFO] [Thread-121413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:50.194 [DEBUG] [Thread-121413] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] Compression: none
2025-09-28T10:08:50.195 [DEBUG] [Thread-121413] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:50.209 [DEBUG] [Thread-121413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:50.209 [DEBUG] [Thread-121413] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:50.210 [DEBUG] [Thread-121413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:08:50.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:08:50.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:50.211 [DEBUG] [Thread-121413] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:50.212 [DEBUG] [Thread-121413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:50.212 [DEBUG] [Thread-121413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:50.212 [DEBUG] [Thread-121413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:08:50.212 [DEBUG] [Thread-121413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:50.229 [INFO] [Thread-121413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:50.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:50.842 [DEBUG] [Thread-121413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:50.843 [DEBUG] [Thread-121413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:50.843 [DEBUG] [Thread-121413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:08:50.884 [DEBUG] [Thread-121413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:50.884 [DEBUG] [Thread-121413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:50.886 [DEBUG] [Thread-121413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:50.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:50.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:08:50.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:08:50.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:08:50.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:50.903 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:08:50.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.339322 -999.00  +16.50   9.31     46   +4.90 1 1 1 1 1   888    0 11.23 30.76 ----- 11.3 9.3 218.9 15.7 24.9 -28.1 23.3 -26.9 22.1 -27.7 23.5 -27.3
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.339322
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:08:50.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:08:50.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:08:24', tmtdew=12.17, humidity=43.97, cloud=0.0, wind=10.87, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:08:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:08:50.904 [DEBUG] [Thread-121413] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:08:50.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:08:51.019 [DEBUG] [Thread-121416] [transport.py] [_log()] starting thread (client mode): 0x2e38f220
2025-09-28T10:08:51.019 [DEBUG] [Thread-121416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:08:51.067 [DEBUG] [Thread-121416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:08:51.067 [INFO] [Thread-121416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] client lang: <none>
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] server lang: <none>
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] kex follows: False
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] Compression: none
2025-09-28T10:08:51.108 [DEBUG] [Thread-121416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:08:51.195 [DEBUG] [Thread-121416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:08:51.195 [DEBUG] [Thread-121416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:08:51.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:08:51.195 [DEBUG] [Thread-121416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:08:51.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:08:51.314 [DEBUG] [Thread-121416] [transport.py] [_log()] userauth is OK
2025-09-28T10:08:51.314 [DEBUG] [Thread-121416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:08:51.314 [DEBUG] [Thread-121416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:08:51.314 [DEBUG] [Thread-121416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:08:51.314 [DEBUG] [Thread-121416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:08:51.360 [INFO] [Thread-121416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:08:51.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:08:51.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:08:52.322 [DEBUG] [Thread-121416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:08:52.322 [DEBUG] [Thread-121416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:08:52.398 [DEBUG] [Thread-121416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:08:52.398 [DEBUG] [Thread-121416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:08:52.435 [DEBUG] [Thread-121416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:08:52.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:08:52.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-28T10:08:52.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-28T10:08:52.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:08:52.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:08:52.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:08:52.580 [DEBUG] [Thread-121416] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:01.974 [DEBUG] [Thread-121418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:02.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:09:02.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:09:02.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:09:03.137 [DEBUG] [Thread-121419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 8, 55), 12.38, 43.56, 0.0, 7.78, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:09:03.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:08:55
2025-09-28T10:09:03.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:09:03.418 [DEBUG] [Thread-121420] [transport.py] [_log()] starting thread (client mode): 0x2b944eb0
2025-09-28T10:09:03.418 [DEBUG] [Thread-121420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:03.439 [DEBUG] [Thread-121420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:09:03.439 [INFO] [Thread-121420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] Compression: none
2025-09-28T10:09:03.443 [DEBUG] [Thread-121420] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:03.459 [DEBUG] [Thread-121420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:03.459 [DEBUG] [Thread-121420] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:03.459 [DEBUG] [Thread-121420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:09:03.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:09:03.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:03.460 [DEBUG] [Thread-121420] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:03.460 [DEBUG] [Thread-121420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:03.460 [DEBUG] [Thread-121420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:03.460 [DEBUG] [Thread-121420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:09:03.460 [DEBUG] [Thread-121420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:03.470 [INFO] [Thread-121420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:03.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:04.276 [DEBUG] [Thread-121420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:04.276 [DEBUG] [Thread-121420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:04.276 [DEBUG] [Thread-121420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:09:04.317 [DEBUG] [Thread-121420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:04.317 [DEBUG] [Thread-121420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:04.319 [DEBUG] [Thread-121420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:04.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:04.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:09:04.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:09:04.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:09:04.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:04.339 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:09:04.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.339322 -999.00  +16.50   9.31     46   +4.90 1 1 1 1 1   888    0 11.23 30.76 ----- 11.3 9.3 218.9 15.7 24.9 -28.1 23.3 -26.9 22.1 -27.7 23.5 -27.3
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:09:04.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.339322
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:09:04.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:08:55', tmtdew=12.38, humidity=43.56, cloud=0.0, wind=7.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:08:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:09:04.341 [DEBUG] [Thread-121420] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:04.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:09:04.459 [DEBUG] [Thread-121423] [transport.py] [_log()] starting thread (client mode): 0x2b9cc820
2025-09-28T10:09:04.459 [DEBUG] [Thread-121423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:04.507 [DEBUG] [Thread-121423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:09:04.508 [INFO] [Thread-121423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] Compression: none
2025-09-28T10:09:04.548 [DEBUG] [Thread-121423] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:04.640 [DEBUG] [Thread-121423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:04.640 [DEBUG] [Thread-121423] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:04.640 [DEBUG] [Thread-121423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:09:04.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:09:04.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:04.765 [DEBUG] [Thread-121423] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:04.765 [DEBUG] [Thread-121423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:04.765 [DEBUG] [Thread-121423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:04.765 [DEBUG] [Thread-121423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:09:04.765 [DEBUG] [Thread-121423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:04.795 [INFO] [Thread-121423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:04.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-28T10:09:04.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:05.780 [DEBUG] [Thread-121423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:05.780 [DEBUG] [Thread-121423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:05.867 [DEBUG] [Thread-121423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:05.868 [DEBUG] [Thread-121423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:05.907 [DEBUG] [Thread-121423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:05.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:05.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-28T10:09:05.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-28T10:09:06.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:06.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:06.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:06.061 [DEBUG] [Thread-121423] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:16.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:09:16.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:09:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:09:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 8, 55), 12.38, 43.56, 0.0, 7.78, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:09:16.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:08:55
2025-09-28T10:09:16.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:09:16.880 [DEBUG] [Thread-121425] [transport.py] [_log()] starting thread (client mode): 0x2b96ea10
2025-09-28T10:09:16.880 [DEBUG] [Thread-121425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:16.902 [DEBUG] [Thread-121425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:09:16.902 [INFO] [Thread-121425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:16.906 [DEBUG] [Thread-121425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:16.907 [DEBUG] [Thread-121425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:16.907 [DEBUG] [Thread-121425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:16.907 [DEBUG] [Thread-121425] [transport.py] [_log()] Compression: none
2025-09-28T10:09:16.907 [DEBUG] [Thread-121425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:16.921 [DEBUG] [Thread-121425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:16.921 [DEBUG] [Thread-121425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:16.921 [DEBUG] [Thread-121425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:09:16.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:09:16.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:16.922 [DEBUG] [Thread-121425] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:16.922 [DEBUG] [Thread-121425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:16.922 [DEBUG] [Thread-121425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:16.922 [DEBUG] [Thread-121425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:09:16.922 [DEBUG] [Thread-121425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:16.950 [INFO] [Thread-121425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:16.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:17.769 [DEBUG] [Thread-121425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:17.769 [DEBUG] [Thread-121425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:17.769 [DEBUG] [Thread-121425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:09:17.810 [DEBUG] [Thread-121425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:17.810 [DEBUG] [Thread-121425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:17.812 [DEBUG] [Thread-121425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:17.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:17.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:09:17.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:09:17.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:09:17.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:17.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:09:17.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:17.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.339322 -999.00  +16.50   9.31     46   +4.90 1 1 1 1 1   888    0 11.23 30.76 ----- 11.3 9.3 218.9 15.7 24.9 -28.1 23.3 -26.9 22.1 -27.7 23.5 -27.3
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.339322
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:09:17.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:08:55', tmtdew=12.38, humidity=43.56, cloud=0.0, wind=7.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:08:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:09:17.832 [DEBUG] [Thread-121425] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:17.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:09:17.940 [DEBUG] [Thread-121428] [transport.py] [_log()] starting thread (client mode): 0x2b98b910
2025-09-28T10:09:17.940 [DEBUG] [Thread-121428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:17.980 [DEBUG] [Thread-121428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:09:17.980 [INFO] [Thread-121428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:09:18.014 [DEBUG] [Thread-121428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:18.014 [DEBUG] [Thread-121428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:09:18.014 [DEBUG] [Thread-121428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:18.014 [DEBUG] [Thread-121428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:18.014 [DEBUG] [Thread-121428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] Compression: none
2025-09-28T10:09:18.015 [DEBUG] [Thread-121428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:18.102 [DEBUG] [Thread-121428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:18.102 [DEBUG] [Thread-121428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:18.102 [DEBUG] [Thread-121428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:09:18.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:09:18.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:18.167 [DEBUG] [Thread-121430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:18.221 [DEBUG] [Thread-121428] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:18.221 [DEBUG] [Thread-121428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:18.221 [DEBUG] [Thread-121428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:18.221 [DEBUG] [Thread-121428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:09:18.221 [DEBUG] [Thread-121428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:18.266 [INFO] [Thread-121428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:18.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-28T10:09:18.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:19.250 [DEBUG] [Thread-121428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:19.250 [DEBUG] [Thread-121428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:19.329 [DEBUG] [Thread-121428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:19.329 [DEBUG] [Thread-121428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:19.368 [DEBUG] [Thread-121428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:19.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:19.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')
2025-09-28T10:09:19.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-28T10:09:19.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:19.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:19.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:19.527 [DEBUG] [Thread-121428] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:26.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:26.332 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:29.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:09:29.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:09:29.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-28T10:09:30.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 8, 55), 12.38, 43.56, 0.0, 7.78, 15.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:09:30.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:08:55
2025-09-28T10:09:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:09:30.385 [DEBUG] [Thread-121431] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c00
2025-09-28T10:09:30.385 [DEBUG] [Thread-121431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:30.404 [DEBUG] [Thread-121431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:09:30.405 [INFO] [Thread-121431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:09:30.407 [DEBUG] [Thread-121431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] Compression: none
2025-09-28T10:09:30.408 [DEBUG] [Thread-121431] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:30.422 [DEBUG] [Thread-121431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:09:30.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:09:30.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:09:30.423 [DEBUG] [Thread-121431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:30.433 [INFO] [Thread-121431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:30.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:31.052 [DEBUG] [Thread-121431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:31.052 [DEBUG] [Thread-121431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:31.052 [DEBUG] [Thread-121431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:09:31.093 [DEBUG] [Thread-121431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:31.093 [DEBUG] [Thread-121431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:31.095 [DEBUG] [Thread-121431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:31.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:31.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:09:31.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:09:31.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:09:31.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:31.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:09:31.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.339670 -999.00  +16.50   9.55     46   +5.10 1 1 1 1 1   888    0 11.12 32.19 ----- 6.3 9.6 199.8 14.9 24.8 -28.1 23.1 -26.4 22.1 -26.4 23.4 -28.0
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.339670
2025-09-28T10:09:31.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:09:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:09:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:09:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:09:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:09:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:08:55', tmtdew=12.38, humidity=43.56, cloud=0.0, wind=7.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:09:07.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:09:31.113 [DEBUG] [Thread-121431] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:31.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-28T10:09:31.197 [DEBUG] [Thread-121434] [transport.py] [_log()] starting thread (client mode): 0x2e3c3c70
2025-09-28T10:09:31.197 [DEBUG] [Thread-121434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:31.211 [DEBUG] [Thread-121434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:09:31.211 [INFO] [Thread-121434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:31.219 [DEBUG] [Thread-121434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:31.220 [DEBUG] [Thread-121434] [transport.py] [_log()] Compression: none
2025-09-28T10:09:31.220 [DEBUG] [Thread-121434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:31.277 [DEBUG] [Thread-121434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:31.277 [DEBUG] [Thread-121434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:31.277 [DEBUG] [Thread-121434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:09:31.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:09:31.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:31.334 [DEBUG] [Thread-121434] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:31.334 [DEBUG] [Thread-121434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:31.334 [DEBUG] [Thread-121434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:31.334 [DEBUG] [Thread-121434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:09:31.334 [DEBUG] [Thread-121434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:31.348 [INFO] [Thread-121434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:31.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-28T10:09:31.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:32.314 [DEBUG] [Thread-121434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:32.314 [DEBUG] [Thread-121434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:32.363 [DEBUG] [Thread-121434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:32.363 [DEBUG] [Thread-121434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:32.371 [DEBUG] [Thread-121434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:32.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:32.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-28T10:09:32.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-28T10:09:32.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:32.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:32.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:32.403 [DEBUG] [Thread-121434] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:33.198 [DEBUG] [Thread-121436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:42.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:09:42.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:09:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:09:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 9, 27), 12.18, 44.15, 0.0, 8.81, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:09:43.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:09:27
2025-09-28T10:09:43.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:09:43.263 [DEBUG] [Thread-121437] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T10:09:43.263 [DEBUG] [Thread-121437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:43.283 [DEBUG] [Thread-121437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:09:43.283 [INFO] [Thread-121437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:43.286 [DEBUG] [Thread-121437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] Compression: none
2025-09-28T10:09:43.287 [DEBUG] [Thread-121437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:43.302 [DEBUG] [Thread-121437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:43.302 [DEBUG] [Thread-121437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:09:43.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:09:43.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:09:43.303 [DEBUG] [Thread-121437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:43.313 [INFO] [Thread-121437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:43.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:44.065 [DEBUG] [Thread-121437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:44.065 [DEBUG] [Thread-121437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:44.065 [DEBUG] [Thread-121437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:09:44.106 [DEBUG] [Thread-121437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:44.106 [DEBUG] [Thread-121437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:44.109 [DEBUG] [Thread-121437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:44.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:44.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:09:44.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:09:44.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:09:44.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:44.131 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:09:44.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.339670 -999.00  +16.50   9.55     46   +5.10 1 1 1 1 1   888    0 11.12 32.19 ----- 6.3 9.6 199.8 14.9 24.8 -28.1 23.1 -26.4 22.1 -26.4 23.4 -28.0
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.339670
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:09:44.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:09:44.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:09:44.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:09:27', tmtdew=12.18, humidity=44.15, cloud=0.0, wind=8.81, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:09:07.488', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:09:44.133 [DEBUG] [Thread-121437] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:44.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:09:44.252 [DEBUG] [Thread-121440] [transport.py] [_log()] starting thread (client mode): 0x2e34b670
2025-09-28T10:09:44.252 [DEBUG] [Thread-121440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:44.300 [DEBUG] [Thread-121440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:09:44.300 [INFO] [Thread-121440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:44.342 [DEBUG] [Thread-121440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] Compression: none
2025-09-28T10:09:44.343 [DEBUG] [Thread-121440] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:44.432 [DEBUG] [Thread-121440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:44.433 [DEBUG] [Thread-121440] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:44.433 [DEBUG] [Thread-121440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:09:44.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:09:44.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:44.557 [DEBUG] [Thread-121440] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:44.558 [DEBUG] [Thread-121440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:44.558 [DEBUG] [Thread-121440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:44.558 [DEBUG] [Thread-121440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:09:44.558 [DEBUG] [Thread-121440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:44.605 [INFO] [Thread-121440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:44.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-28T10:09:44.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:45.601 [DEBUG] [Thread-121440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:45.601 [DEBUG] [Thread-121440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:45.683 [DEBUG] [Thread-121440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:45.683 [DEBUG] [Thread-121440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:45.726 [DEBUG] [Thread-121440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:45.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:45.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-28T10:09:45.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-28T10:09:45.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:45.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:45.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:45.896 [DEBUG] [Thread-121440] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:48.227 [DEBUG] [Thread-121442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:09:55.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:09:55.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:09:55.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-28T10:09:56.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 9, 27), 12.18, 44.15, 0.0, 8.81, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:09:56.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:09:27
2025-09-28T10:09:56.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:09:56.763 [DEBUG] [Thread-121443] [transport.py] [_log()] starting thread (client mode): 0x2e3c1420
2025-09-28T10:09:56.763 [DEBUG] [Thread-121443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:56.781 [DEBUG] [Thread-121443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:09:56.781 [INFO] [Thread-121443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] Compression: none
2025-09-28T10:09:56.783 [DEBUG] [Thread-121443] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:56.791 [DEBUG] [Thread-121443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:56.791 [DEBUG] [Thread-121443] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:56.791 [DEBUG] [Thread-121443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:09:56.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:09:56.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:56.791 [DEBUG] [Thread-121443] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:56.792 [DEBUG] [Thread-121443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:56.792 [DEBUG] [Thread-121443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:56.792 [DEBUG] [Thread-121443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:09:56.792 [DEBUG] [Thread-121443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:56.806 [INFO] [Thread-121443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:56.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:57.370 [DEBUG] [Thread-121443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:57.370 [DEBUG] [Thread-121443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:57.370 [DEBUG] [Thread-121443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:09:57.411 [DEBUG] [Thread-121443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:57.411 [DEBUG] [Thread-121443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:57.413 [DEBUG] [Thread-121443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:57.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09:57.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:09:57.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:09:57.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:09:57.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:57.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:09:57.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.340017 -999.00  +16.60   9.12     46   +5.00 1 1 1 1 1   888    0 11.53 37.47 ----- 9.1 9.1 229.1 13.3 24.8 -28.0 23.1 -26.4 22.1 -26.2 23.4 -27.9
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.340017
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:09:57.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:09:27', tmtdew=12.18, humidity=44.15, cloud=0.0, wind=8.81, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:09:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:09:57.435 [DEBUG] [Thread-121443] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:09:57.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-28T10:09:57.518 [DEBUG] [Thread-121446] [transport.py] [_log()] starting thread (client mode): 0x2b945150
2025-09-28T10:09:57.518 [DEBUG] [Thread-121446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:09:57.532 [DEBUG] [Thread-121446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:09:57.532 [INFO] [Thread-121446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] client lang: <none>
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] server lang: <none>
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] kex follows: False
2025-09-28T10:09:57.540 [DEBUG] [Thread-121446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] Compression: none
2025-09-28T10:09:57.541 [DEBUG] [Thread-121446] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:09:57.596 [DEBUG] [Thread-121446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:09:57.597 [DEBUG] [Thread-121446] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:09:57.597 [DEBUG] [Thread-121446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:09:57.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:09:57.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:09:57.654 [DEBUG] [Thread-121446] [transport.py] [_log()] userauth is OK
2025-09-28T10:09:57.654 [DEBUG] [Thread-121446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:09:57.654 [DEBUG] [Thread-121446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:09:57.654 [DEBUG] [Thread-121446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:09:57.654 [DEBUG] [Thread-121446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:09:57.669 [INFO] [Thread-121446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:09:57.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-28T10:09:57.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:09:58.598 [DEBUG] [Thread-121446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:09:58.598 [DEBUG] [Thread-121446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:09:58.646 [DEBUG] [Thread-121446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:09:58.646 [DEBUG] [Thread-121446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:09:58.654 [DEBUG] [Thread-121446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:09:58.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:09: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')
2025-09-28T10:09:58.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-28T10:09:58.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:09:58.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:09:58.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:09:58.689 [DEBUG] [Thread-121446] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:02.020 [DEBUG] [Thread-121448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:03.259 [DEBUG] [Thread-121449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:08.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:10:08.689 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:10:08.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-28T10:10:09.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 9, 59), 12.33, 43.49, 0.0, 8.66, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:10:09.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:09:59
2025-09-28T10:10:09.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:10:09.551 [DEBUG] [Thread-121450] [transport.py] [_log()] starting thread (client mode): 0x2b947820
2025-09-28T10:10:09.551 [DEBUG] [Thread-121450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:10:09.568 [DEBUG] [Thread-121450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:10:09.568 [INFO] [Thread-121450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] client lang: <none>
2025-09-28T10:10:09.569 [DEBUG] [Thread-121450] [transport.py] [_log()] server lang: <none>
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] kex follows: False
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] Compression: none
2025-09-28T10:10:09.570 [DEBUG] [Thread-121450] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:10:09.579 [DEBUG] [Thread-121450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:10:09.579 [DEBUG] [Thread-121450] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:10:09.579 [DEBUG] [Thread-121450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:10:09.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:10:09.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:10:09.579 [DEBUG] [Thread-121450] [transport.py] [_log()] userauth is OK
2025-09-28T10:10:09.579 [DEBUG] [Thread-121450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:10:09.580 [DEBUG] [Thread-121450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:10:09.580 [DEBUG] [Thread-121450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:10:09.580 [DEBUG] [Thread-121450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:10:09.588 [INFO] [Thread-121450] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:10:09.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:10:18.290 [DEBUG] [Thread-121452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:18.678 [DEBUG] [Thread-121450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:10:18.678 [DEBUG] [Thread-121450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:10:18.679 [DEBUG] [Thread-121450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:10:18.720 [DEBUG] [Thread-121450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:10:18.720 [DEBUG] [Thread-121450] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:10:18.722 [DEBUG] [Thread-121450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:10:18.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:10:18.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:10:18.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:10:18.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:10:18.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:10:18.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:10:18.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.340017 -999.00  +16.60   9.12     46   +5.00 1 1 1 1 1   888    0 11.53 37.47 ----- 9.1 9.1 229.1 13.3 24.8 -28.0 23.1 -26.4 22.1 -26.2 23.4 -27.9
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:10:18.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.340017
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:10:18.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:09:59', tmtdew=12.33, humidity=43.49, cloud=0.0, wind=8.66, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:09:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:10:18.810 [DEBUG] [Thread-121450] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:18.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-28T10:10:18.926 [DEBUG] [Thread-121454] [transport.py] [_log()] starting thread (client mode): 0x2e3c10f0
2025-09-28T10:10:18.926 [DEBUG] [Thread-121454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:10:18.975 [DEBUG] [Thread-121454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:10:18.975 [INFO] [Thread-121454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] client lang: <none>
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] server lang: <none>
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] kex follows: False
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] Compression: none
2025-09-28T10:10:19.016 [DEBUG] [Thread-121454] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:10:19.081 [DEBUG] [Thread-121454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:10:19.081 [DEBUG] [Thread-121454] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:10:19.081 [DEBUG] [Thread-121454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:10:19.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:10:19.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:10:19.164 [DEBUG] [Thread-121454] [transport.py] [_log()] userauth is OK
2025-09-28T10:10:19.164 [DEBUG] [Thread-121454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:10:19.164 [DEBUG] [Thread-121454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:10:19.164 [DEBUG] [Thread-121454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:10:19.164 [DEBUG] [Thread-121454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:10:19.199 [INFO] [Thread-121454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:10:19.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-28T10:10:19.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:10:20.222 [DEBUG] [Thread-121454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:10:20.223 [DEBUG] [Thread-121454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:10:20.303 [DEBUG] [Thread-121454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:10:20.303 [DEBUG] [Thread-121454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:10:20.340 [DEBUG] [Thread-121454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:10:20.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:10:20.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-28T10:10:20.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-28T10:10:20.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:10:20.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:10:20.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:10:20.485 [DEBUG] [Thread-121454] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:26.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:26.475 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:30.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:10:30.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:10:30.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:10:31.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 9, 59), 12.33, 43.49, 0.0, 8.66, 15.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:10:31.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:09:59
2025-09-28T10:10:31.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:10:31.480 [DEBUG] [Thread-121456] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-28T10:10:31.480 [DEBUG] [Thread-121456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:10:31.493 [DEBUG] [Thread-121456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:10:31.493 [INFO] [Thread-121456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] client lang: <none>
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] server lang: <none>
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] kex follows: False
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] Compression: none
2025-09-28T10:10:31.497 [DEBUG] [Thread-121456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:10:31.511 [DEBUG] [Thread-121456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:10:31.511 [DEBUG] [Thread-121456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:10:31.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:10:31.512 [DEBUG] [Thread-121456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:10:31.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:10:31.513 [DEBUG] [Thread-121456] [transport.py] [_log()] userauth is OK
2025-09-28T10:10:31.513 [DEBUG] [Thread-121456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:10:31.513 [DEBUG] [Thread-121456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:10:31.513 [DEBUG] [Thread-121456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:10:31.513 [DEBUG] [Thread-121456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:10:31.524 [INFO] [Thread-121456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:10:31.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:10:32.219 [DEBUG] [Thread-121456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:10:32.219 [DEBUG] [Thread-121456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:10:32.219 [DEBUG] [Thread-121456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:10:32.260 [DEBUG] [Thread-121456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:10:32.260 [DEBUG] [Thread-121456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:10:32.262 [DEBUG] [Thread-121456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:10:32.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:10:32.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:10:32.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:10:32.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:10:32.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:10:32.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:10:32.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:10:32.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.340364 -999.00  +16.40   8.32     46   +5.00 1 1 1 1 1   888    0 11.59 41.32 ----- 7.3 8.3 255.6 13.0 24.6 -27.8 23.1 -25.9 22.0 -26.8 23.3 -27.5
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.340364
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:10:32.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:09:59', tmtdew=12.33, humidity=43.49, cloud=0.0, wind=8.66, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:10:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:10:32.282 [DEBUG] [Thread-121456] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:32.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-28T10:10:32.377 [DEBUG] [Thread-121459] [transport.py] [_log()] starting thread (client mode): 0x2e3ddcf0
2025-09-28T10:10:32.377 [DEBUG] [Thread-121459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:10:32.392 [DEBUG] [Thread-121459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:10:32.392 [INFO] [Thread-121459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] client lang: <none>
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] server lang: <none>
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] kex follows: False
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:10:32.399 [DEBUG] [Thread-121459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:10:32.400 [DEBUG] [Thread-121459] [transport.py] [_log()] Compression: none
2025-09-28T10:10:32.400 [DEBUG] [Thread-121459] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:10:32.456 [DEBUG] [Thread-121459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:10:32.457 [DEBUG] [Thread-121459] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:10:32.457 [DEBUG] [Thread-121459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:10:32.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:10:32.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:10:32.514 [DEBUG] [Thread-121459] [transport.py] [_log()] userauth is OK
2025-09-28T10:10:32.514 [DEBUG] [Thread-121459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:10:32.514 [DEBUG] [Thread-121459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:10:32.514 [DEBUG] [Thread-121459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:10:32.514 [DEBUG] [Thread-121459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:10:32.530 [INFO] [Thread-121459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:10:32.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-28T10:10:32.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:10:33.315 [DEBUG] [Thread-121461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:10:33.502 [DEBUG] [Thread-121459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:10:33.502 [DEBUG] [Thread-121459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:10:33.550 [DEBUG] [Thread-121459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:10:33.550 [DEBUG] [Thread-121459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:10:33.558 [DEBUG] [Thread-121459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:10:33.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:10: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')
2025-09-28T10:10:33.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-28T10:10:33.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:10:33.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:10:33.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:10:33.589 [DEBUG] [Thread-121459] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:43.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:10:43.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:10:43.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-28T10:10:44.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 10, 31), 12.58, 42.78, 0.0, 10.53, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:10:44.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:10:31
2025-09-28T10:10:44.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:10:44.441 [DEBUG] [Thread-121462] [transport.py] [_log()] starting thread (client mode): 0x2e3dc5b0
2025-09-28T10:10:44.442 [DEBUG] [Thread-121462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:10:44.467 [DEBUG] [Thread-121462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:10:44.467 [INFO] [Thread-121462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:10:44.470 [DEBUG] [Thread-121462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] client lang: <none>
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] server lang: <none>
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] kex follows: False
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] Compression: none
2025-09-28T10:10:44.471 [DEBUG] [Thread-121462] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:10:44.480 [DEBUG] [Thread-121462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:10:44.480 [DEBUG] [Thread-121462] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:10:44.480 [DEBUG] [Thread-121462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:10:44.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:10:44.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:10:44.481 [DEBUG] [Thread-121462] [transport.py] [_log()] userauth is OK
2025-09-28T10:10:44.481 [DEBUG] [Thread-121462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:10:44.481 [DEBUG] [Thread-121462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:10:44.481 [DEBUG] [Thread-121462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:10:44.481 [DEBUG] [Thread-121462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:10:44.494 [INFO] [Thread-121462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:10:44.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:10:45.066 [DEBUG] [Thread-121462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:10:45.066 [DEBUG] [Thread-121462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:10:45.066 [DEBUG] [Thread-121462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:10:45.107 [DEBUG] [Thread-121462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:10:45.107 [DEBUG] [Thread-121462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:10:45.110 [DEBUG] [Thread-121462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:10:45.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:10:45.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:10:45.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:10:45.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:10:45.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:10:45.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:10:45.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.340364 -999.00  +16.40   8.32     46   +5.00 1 1 1 1 1   888    0 11.59 41.32 ----- 7.3 8.3 255.6 13.0 24.6 -27.8 23.1 -25.9 22.0 -26.8 23.3 -27.5
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.340364
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:10:45.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:10:45.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:10:31', tmtdew=12.58, humidity=42.78, cloud=0.0, wind=10.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:10:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:10:45.122 [DEBUG] [Thread-121462] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:10:45.195 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:10:48.348 [DEBUG] [Thread-121465 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:02.074 [DEBUG] [Thread-121466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:03.389 [DEBUG] [Thread-121467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:18.411 [DEBUG] [Thread-121468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:26.630 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:26.631 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:33.436 [DEBUG] [Thread-121469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:11:48.458 [DEBUG] [Thread-121470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:02.120 [DEBUG] [Thread-121471 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:03.481 [DEBUG] [Thread-121472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:18.500 [DEBUG] [Thread-121473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:26.770 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:26.771 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:33.518 [DEBUG] [Thread-121474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:48.540 [DEBUG] [Thread-121475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:12:59.450 [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-28T10:13:02.170 [DEBUG] [Thread-121476 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:03.564 [DEBUG] [Thread-121477 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:09.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:13:09.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:13:09.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-28T10:13:10.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 12, 39), 12.74, 42.48, 0.0, 12.37, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:13:10.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:12:39
2025-09-28T10:13:10.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:13:10.350 [DEBUG] [Thread-121478] [transport.py] [_log()] starting thread (client mode): 0x2e3dcd00
2025-09-28T10:13:10.351 [DEBUG] [Thread-121478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:10.370 [DEBUG] [Thread-121478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:13:10.370 [INFO] [Thread-121478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] Compression: none
2025-09-28T10:13:10.374 [DEBUG] [Thread-121478] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:10.389 [DEBUG] [Thread-121478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:10.389 [DEBUG] [Thread-121478] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:10.389 [DEBUG] [Thread-121478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:13:10.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:13:10.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:10.391 [DEBUG] [Thread-121478] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:10.391 [DEBUG] [Thread-121478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:10.391 [DEBUG] [Thread-121478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:10.391 [DEBUG] [Thread-121478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:13:10.391 [DEBUG] [Thread-121478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:10.406 [INFO] [Thread-121478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:10.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:11.058 [DEBUG] [Thread-121478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:11.058 [DEBUG] [Thread-121478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:11.058 [DEBUG] [Thread-121478] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:13:11.100 [DEBUG] [Thread-121478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:11.100 [DEBUG] [Thread-121478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:11.102 [DEBUG] [Thread-121478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:11.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:11.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:13:11.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:13:11.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:13:11.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:11.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:13:11.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:11.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:11.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:13:11.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342100 -999.00  +16.60   8.65     46   +5.20 1 1 1 1 1   888    0 11.88 44.15 ----- 10.7 8.7 249.4 11.8 24.6 -27.0 23.2 -25.1 22.0 -25.1 23.3 -26.6
2025-09-28T10:13:11.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:13:11.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342100
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:13:11.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:12:39', tmtdew=12.74, humidity=42.48, cloud=0.0, wind=12.37, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:12:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:13:11.122 [DEBUG] [Thread-121478] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:11.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-28T10:13:11.247 [DEBUG] [Thread-121481] [transport.py] [_log()] starting thread (client mode): 0x2b945db0
2025-09-28T10:13:11.247 [DEBUG] [Thread-121481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:11.290 [DEBUG] [Thread-121481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:13:11.290 [INFO] [Thread-121481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:11.326 [DEBUG] [Thread-121481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:11.327 [DEBUG] [Thread-121481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:11.327 [DEBUG] [Thread-121481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:11.327 [DEBUG] [Thread-121481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:11.327 [DEBUG] [Thread-121481] [transport.py] [_log()] Compression: none
2025-09-28T10:13:11.327 [DEBUG] [Thread-121481] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:11.411 [DEBUG] [Thread-121481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:11.411 [DEBUG] [Thread-121481] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:11.411 [DEBUG] [Thread-121481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:13:11.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:13:11.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:11.530 [DEBUG] [Thread-121481] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:11.530 [DEBUG] [Thread-121481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:11.530 [DEBUG] [Thread-121481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:11.531 [DEBUG] [Thread-121481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:13:11.531 [DEBUG] [Thread-121481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:11.576 [INFO] [Thread-121481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:11.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-28T10:13:11.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:12.545 [DEBUG] [Thread-121481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:12.545 [DEBUG] [Thread-121481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:12.622 [DEBUG] [Thread-121481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:12.622 [DEBUG] [Thread-121481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:12.654 [DEBUG] [Thread-121481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:12.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:12.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-28T10:13:12.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-28T10:13:12.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:12.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:12.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:12.806 [DEBUG] [Thread-121481] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:18.587 [DEBUG] [Thread-121483 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:22.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:13:22.783 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:13:22.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-28T10:13:23.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 13, 11), 12.71, 42.55, 0.0, 12.99, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:13:23.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:13:11
2025-09-28T10:13:23.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:13:23.638 [DEBUG] [Thread-121484] [transport.py] [_log()] starting thread (client mode): 0x2e3c0250
2025-09-28T10:13:23.638 [DEBUG] [Thread-121484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:23.661 [DEBUG] [Thread-121484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:13:23.661 [INFO] [Thread-121484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:23.665 [DEBUG] [Thread-121484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:23.666 [DEBUG] [Thread-121484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:23.667 [DEBUG] [Thread-121484] [transport.py] [_log()] Compression: none
2025-09-28T10:13:23.667 [DEBUG] [Thread-121484] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:23.685 [DEBUG] [Thread-121484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:23.685 [DEBUG] [Thread-121484] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:23.686 [DEBUG] [Thread-121484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:13:23.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:13:23.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:23.688 [DEBUG] [Thread-121484] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:23.688 [DEBUG] [Thread-121484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:23.689 [DEBUG] [Thread-121484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:23.689 [DEBUG] [Thread-121484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:13:23.689 [DEBUG] [Thread-121484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:23.723 [INFO] [Thread-121484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:23.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:24.364 [DEBUG] [Thread-121484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:24.364 [DEBUG] [Thread-121484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:24.364 [DEBUG] [Thread-121484] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:13:24.405 [DEBUG] [Thread-121484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:24.405 [DEBUG] [Thread-121484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:24.407 [DEBUG] [Thread-121484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:24.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:24.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:13:24.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:13:24.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:13:24.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:24.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:13:24.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:24.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342447 -999.00  +16.30  10.63     46   +4.90 1 1 1 1 1   888    0 12.01 49.08 ----- 7.7 10.6 233.3 15.1 24.5 -28.2 23.2 -25.4 21.9 -25.6 23.1 -27.5
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342447
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:13:24.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:13:11', tmtdew=12.71, humidity=42.55, cloud=0.0, wind=12.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:13:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:13:24.427 [DEBUG] [Thread-121484] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:24.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-28T10:13:24.509 [DEBUG] [Thread-121487] [transport.py] [_log()] starting thread (client mode): 0x2e3dd720
2025-09-28T10:13:24.509 [DEBUG] [Thread-121487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:24.525 [DEBUG] [Thread-121487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:13:24.525 [INFO] [Thread-121487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:24.532 [DEBUG] [Thread-121487] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] Compression: none
2025-09-28T10:13:24.533 [DEBUG] [Thread-121487] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:24.590 [DEBUG] [Thread-121487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:24.590 [DEBUG] [Thread-121487] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:24.590 [DEBUG] [Thread-121487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:13:24.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:13:24.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:24.647 [DEBUG] [Thread-121487] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:24.647 [DEBUG] [Thread-121487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:24.647 [DEBUG] [Thread-121487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:24.647 [DEBUG] [Thread-121487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:13:24.647 [DEBUG] [Thread-121487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:24.661 [INFO] [Thread-121487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:24.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:13:24.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:25.663 [DEBUG] [Thread-121487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:25.663 [DEBUG] [Thread-121487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:25.711 [DEBUG] [Thread-121487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:25.711 [DEBUG] [Thread-121487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:25.720 [DEBUG] [Thread-121487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:25.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:25.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-28T10:13:25.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-28T10:13:25.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:25.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:25.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:25.753 [DEBUG] [Thread-121487] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:26.912 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:26.912 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:33.624 [DEBUG] [Thread-121489 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:35.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:13:35.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:13:35.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-28T10:13:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 13, 11), 12.71, 42.55, 0.0, 12.99, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:13:36.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:13:11
2025-09-28T10:13:36.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:13:36.654 [DEBUG] [Thread-121490] [transport.py] [_log()] starting thread (client mode): 0x2e363c10
2025-09-28T10:13:36.655 [DEBUG] [Thread-121490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:36.675 [DEBUG] [Thread-121490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:13:36.675 [INFO] [Thread-121490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] Compression: none
2025-09-28T10:13:36.679 [DEBUG] [Thread-121490] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:36.695 [DEBUG] [Thread-121490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:36.695 [DEBUG] [Thread-121490] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:36.695 [DEBUG] [Thread-121490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:13:36.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:13:36.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:36.697 [DEBUG] [Thread-121490] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:36.697 [DEBUG] [Thread-121490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:36.697 [DEBUG] [Thread-121490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:36.697 [DEBUG] [Thread-121490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:13:36.697 [DEBUG] [Thread-121490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:36.710 [INFO] [Thread-121490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:36.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:37.383 [DEBUG] [Thread-121490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:37.383 [DEBUG] [Thread-121490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:37.383 [DEBUG] [Thread-121490] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:13:37.424 [DEBUG] [Thread-121490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:37.424 [DEBUG] [Thread-121490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:37.427 [DEBUG] [Thread-121490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:37.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:37.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:13:37.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:13:37.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:13:37.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:37.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:13:37.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342447 -999.00  +16.30  10.63     46   +4.90 1 1 1 1 1   888    0 12.01 49.08 ----- 7.7 10.6 233.3 15.1 24.5 -28.2 23.2 -25.4 21.9 -25.6 23.1 -27.5
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342447
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:13:37.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:13:11', tmtdew=12.71, humidity=42.55, cloud=0.0, wind=12.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:13:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:13:37.446 [DEBUG] [Thread-121490] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:37.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-28T10:13:37.568 [DEBUG] [Thread-121493] [transport.py] [_log()] starting thread (client mode): 0x2e360eb0
2025-09-28T10:13:37.568 [DEBUG] [Thread-121493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:37.614 [DEBUG] [Thread-121493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:13:37.614 [INFO] [Thread-121493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] Compression: none
2025-09-28T10:13:37.652 [DEBUG] [Thread-121493] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:37.738 [DEBUG] [Thread-121493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:37.739 [DEBUG] [Thread-121493] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:37.739 [DEBUG] [Thread-121493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:13:37.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:13:37.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:37.855 [DEBUG] [Thread-121493] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:37.855 [DEBUG] [Thread-121493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:37.855 [DEBUG] [Thread-121493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:37.855 [DEBUG] [Thread-121493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:13:37.855 [DEBUG] [Thread-121493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:37.899 [INFO] [Thread-121493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:37.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-28T10:13:37.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:38.866 [DEBUG] [Thread-121493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:38.866 [DEBUG] [Thread-121493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:38.945 [DEBUG] [Thread-121493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:38.945 [DEBUG] [Thread-121493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:38.984 [DEBUG] [Thread-121493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:39.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:39.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-28T10:13:39.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-28T10:13:39.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:39.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:39.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:39.141 [DEBUG] [Thread-121493] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:48.674 [DEBUG] [Thread-121495 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:13:49.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:13:49.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:13:49.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-28T10:13:49.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 13, 43), 12.86, 42.07, 0.0, 10.18, 15.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:13:49.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:13:43
2025-09-28T10:13:49.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:13:49.979 [DEBUG] [Thread-121496] [transport.py] [_log()] starting thread (client mode): 0x2e3df340
2025-09-28T10:13:49.979 [DEBUG] [Thread-121496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:50.001 [DEBUG] [Thread-121496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:13:50.002 [INFO] [Thread-121496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:13:50.004 [DEBUG] [Thread-121496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] Compression: none
2025-09-28T10:13:50.005 [DEBUG] [Thread-121496] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:50.023 [DEBUG] [Thread-121496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:50.023 [DEBUG] [Thread-121496] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:50.023 [DEBUG] [Thread-121496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:13:50.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:13:50.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:50.024 [DEBUG] [Thread-121496] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:50.025 [DEBUG] [Thread-121496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:50.025 [DEBUG] [Thread-121496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:50.025 [DEBUG] [Thread-121496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:13:50.025 [DEBUG] [Thread-121496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:50.041 [INFO] [Thread-121496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:50.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:50.667 [DEBUG] [Thread-121496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:50.667 [DEBUG] [Thread-121496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:50.667 [DEBUG] [Thread-121496] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:13:50.708 [DEBUG] [Thread-121496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:50.708 [DEBUG] [Thread-121496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:50.711 [DEBUG] [Thread-121496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:50.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:50.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:13:50.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:13:50.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:13:50.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:50.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:13:50.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:50.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342447 -999.00  +16.30  10.63     46   +4.90 1 1 1 1 1   888    0 12.01 49.08 ----- 7.7 10.6 233.3 15.1 24.5 -28.2 23.2 -25.4 21.9 -25.6 23.1 -27.5
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342447
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:13:50.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:13:43', tmtdew=12.86, humidity=42.07, cloud=0.0, wind=10.18, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:13:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:13:50.732 [DEBUG] [Thread-121496] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:13:50.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-28T10:13:50.843 [DEBUG] [Thread-121499] [transport.py] [_log()] starting thread (client mode): 0x2e3ddab0
2025-09-28T10:13:50.843 [DEBUG] [Thread-121499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:13:50.886 [DEBUG] [Thread-121499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:13:50.886 [INFO] [Thread-121499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:50.922 [DEBUG] [Thread-121499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] client lang: <none>
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] server lang: <none>
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] kex follows: False
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] Compression: none
2025-09-28T10:13:50.923 [DEBUG] [Thread-121499] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:13:51.007 [DEBUG] [Thread-121499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:13:51.008 [DEBUG] [Thread-121499] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:13:51.008 [DEBUG] [Thread-121499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:13:51.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:13:51.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:13:51.126 [DEBUG] [Thread-121499] [transport.py] [_log()] userauth is OK
2025-09-28T10:13:51.126 [DEBUG] [Thread-121499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:13:51.126 [DEBUG] [Thread-121499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:13:51.126 [DEBUG] [Thread-121499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:13:51.126 [DEBUG] [Thread-121499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:13:51.170 [INFO] [Thread-121499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:13:51.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-28T10:13:51.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:13:52.204 [DEBUG] [Thread-121499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:13:52.204 [DEBUG] [Thread-121499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:13:52.281 [DEBUG] [Thread-121499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:13:52.281 [DEBUG] [Thread-121499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:13:52.319 [DEBUG] [Thread-121499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:13:52.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:13:52.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-28T10:13:52.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-28T10:13:52.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:13:52.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:13:52.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:13:52.472 [DEBUG] [Thread-121499] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:02.219 [DEBUG] [Thread-121501 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:02.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:14:02.441 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:14:02.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-28T10:14:03.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 13, 43), 12.86, 42.07, 0.0, 10.18, 15.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:14:03.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:13:43
2025-09-28T10:14:03.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:14:03.323 [DEBUG] [Thread-121502] [transport.py] [_log()] starting thread (client mode): 0x2e348790
2025-09-28T10:14:03.323 [DEBUG] [Thread-121502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:03.344 [DEBUG] [Thread-121502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:14:03.344 [INFO] [Thread-121502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:14:03.346 [DEBUG] [Thread-121502] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] Compression: none
2025-09-28T10:14:03.347 [DEBUG] [Thread-121502] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:03.360 [DEBUG] [Thread-121502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:03.360 [DEBUG] [Thread-121502] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:03.361 [DEBUG] [Thread-121502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:14:03.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:14:03.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:03.362 [DEBUG] [Thread-121502] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:03.362 [DEBUG] [Thread-121502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:03.362 [DEBUG] [Thread-121502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:03.362 [DEBUG] [Thread-121502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:14:03.362 [DEBUG] [Thread-121502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:03.379 [INFO] [Thread-121502] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:03.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:03.702 [DEBUG] [Thread-121504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:04.014 [DEBUG] [Thread-121502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:04.014 [DEBUG] [Thread-121502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:04.014 [DEBUG] [Thread-121502] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:14:04.055 [DEBUG] [Thread-121502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:04.055 [DEBUG] [Thread-121502] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:04.057 [DEBUG] [Thread-121502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:04.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:04.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:14:04.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:14:04.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:14:04.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:04.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:14:04.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342794 -999.00  +16.60   6.15     46   +5.10 1 1 1 1 1   888    0 12.03 48.51 ----- 10.1 6.2 194.9 11.5 24.6 -27.6 23.1 -25.3 21.9 -26.0 23.1 -27.0
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342794
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:14:04.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:13:43', tmtdew=12.86, humidity=42.07, cloud=0.0, wind=10.18, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:13:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:14:04.076 [DEBUG] [Thread-121502] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:04.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-28T10:14:04.160 [DEBUG] [Thread-121506] [transport.py] [_log()] starting thread (client mode): 0x2e3c3250
2025-09-28T10:14:04.160 [DEBUG] [Thread-121506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:04.175 [DEBUG] [Thread-121506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:14:04.175 [INFO] [Thread-121506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:04.182 [DEBUG] [Thread-121506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:04.183 [DEBUG] [Thread-121506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:04.183 [DEBUG] [Thread-121506] [transport.py] [_log()] Compression: none
2025-09-28T10:14:04.183 [DEBUG] [Thread-121506] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:04.242 [DEBUG] [Thread-121506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:04.242 [DEBUG] [Thread-121506] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:04.243 [DEBUG] [Thread-121506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:14:04.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:14:04.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:04.298 [DEBUG] [Thread-121506] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:04.298 [DEBUG] [Thread-121506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:04.298 [DEBUG] [Thread-121506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:04.298 [DEBUG] [Thread-121506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:14:04.298 [DEBUG] [Thread-121506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:04.315 [INFO] [Thread-121506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:04.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-28T10:14:04.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:05.310 [DEBUG] [Thread-121506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:05.311 [DEBUG] [Thread-121506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:05.359 [DEBUG] [Thread-121506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:05.359 [DEBUG] [Thread-121506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:05.367 [DEBUG] [Thread-121506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:05.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:05.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')
2025-09-28T10:14:05.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-28T10:14:05.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:05.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:05.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:05.402 [DEBUG] [Thread-121506] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:15.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:14:15.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:14:15.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-28T10:14:16.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 13, 43), 12.86, 42.07, 0.0, 10.18, 15.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:14:16.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:13:43
2025-09-28T10:14:16.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:14:16.323 [DEBUG] [Thread-121508] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-28T10:14:16.323 [DEBUG] [Thread-121508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:16.344 [DEBUG] [Thread-121508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:14:16.344 [INFO] [Thread-121508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:16.345 [DEBUG] [Thread-121508] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] Compression: none
2025-09-28T10:14:16.346 [DEBUG] [Thread-121508] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:16.353 [DEBUG] [Thread-121508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:16.353 [DEBUG] [Thread-121508] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:16.353 [DEBUG] [Thread-121508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:14:16.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:14:16.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:16.354 [DEBUG] [Thread-121508] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:16.354 [DEBUG] [Thread-121508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:16.354 [DEBUG] [Thread-121508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:16.354 [DEBUG] [Thread-121508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:14:16.354 [DEBUG] [Thread-121508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:16.373 [INFO] [Thread-121508] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:16.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:17.022 [DEBUG] [Thread-121508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:17.022 [DEBUG] [Thread-121508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:17.022 [DEBUG] [Thread-121508] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:14:17.063 [DEBUG] [Thread-121508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:17.063 [DEBUG] [Thread-121508] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:17.065 [DEBUG] [Thread-121508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:17.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:17.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:14:17.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:14:17.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:14:17.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:17.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:14:17.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.342794 -999.00  +16.60   6.15     46   +5.10 1 1 1 1 1   888    0 12.03 48.51 ----- 10.1 6.2 194.9 11.5 24.6 -27.6 23.1 -25.3 21.9 -26.0 23.1 -27.0
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.342794
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:14:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:13:43', tmtdew=12.86, humidity=42.07, cloud=0.0, wind=10.18, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:13:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:14:17.082 [DEBUG] [Thread-121508] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:17.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-28T10:14:17.165 [DEBUG] [Thread-121511] [transport.py] [_log()] starting thread (client mode): 0x2e362560
2025-09-28T10:14:17.165 [DEBUG] [Thread-121511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:17.179 [DEBUG] [Thread-121511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:14:17.179 [INFO] [Thread-121511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:14:17.186 [DEBUG] [Thread-121511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:17.186 [DEBUG] [Thread-121511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] Compression: none
2025-09-28T10:14:17.187 [DEBUG] [Thread-121511] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:17.244 [DEBUG] [Thread-121511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:17.244 [DEBUG] [Thread-121511] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:17.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:14:17.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:17.245 [DEBUG] [Thread-121511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:14:17.301 [DEBUG] [Thread-121511] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:17.301 [DEBUG] [Thread-121511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:17.301 [DEBUG] [Thread-121511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:17.301 [DEBUG] [Thread-121511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:14:17.302 [DEBUG] [Thread-121511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:17.319 [INFO] [Thread-121511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:17.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-28T10:14:17.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:18.261 [DEBUG] [Thread-121511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:18.261 [DEBUG] [Thread-121511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:18.309 [DEBUG] [Thread-121511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:18.309 [DEBUG] [Thread-121511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:18.317 [DEBUG] [Thread-121511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:18.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:18.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')
2025-09-28T10:14:18.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-28T10:14:18.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:18.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:18.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:18.348 [DEBUG] [Thread-121511] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:18.732 [DEBUG] [Thread-121513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:27.064 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:27.065 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:28.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:14:28.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:14:28.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-28T10:14:28.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 14, 14), 12.85, 42.1, 0.0, 11.45, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:14:28.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:14:14
2025-09-28T10:14:29.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:14:29.206 [DEBUG] [Thread-121514] [transport.py] [_log()] starting thread (client mode): 0x2b96da80
2025-09-28T10:14:29.206 [DEBUG] [Thread-121514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:29.226 [DEBUG] [Thread-121514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:14:29.226 [INFO] [Thread-121514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:29.227 [DEBUG] [Thread-121514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] Compression: none
2025-09-28T10:14:29.228 [DEBUG] [Thread-121514] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:29.235 [DEBUG] [Thread-121514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:14:29.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:14:29.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:14:29.236 [DEBUG] [Thread-121514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:29.245 [INFO] [Thread-121514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:29.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:29.802 [DEBUG] [Thread-121514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:29.802 [DEBUG] [Thread-121514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:29.802 [DEBUG] [Thread-121514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:14:29.843 [DEBUG] [Thread-121514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:29.843 [DEBUG] [Thread-121514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:29.845 [DEBUG] [Thread-121514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:29.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:29.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:14:29.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:14:29.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:14:29.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:29.862 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:14:29.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343142 -999.00  +16.60   8.33     46   +5.00 1 1 1 1 1   888    0 11.91 48.36 ----- 6.2 8.3 232.8 12.5 24.6 -27.4 23.2 -25.1 22.0 -25.0 23.2 -26.2
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343142
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:14:29.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:14:14', tmtdew=12.85, humidity=42.1, cloud=0.0, wind=11.45, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:14:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:14:29.863 [DEBUG] [Thread-121514] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:29.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-28T10:14:29.947 [DEBUG] [Thread-121517] [transport.py] [_log()] starting thread (client mode): 0x2e3c1360
2025-09-28T10:14:29.947 [DEBUG] [Thread-121517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:29.962 [DEBUG] [Thread-121517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:14:29.962 [INFO] [Thread-121517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] Compression: none
2025-09-28T10:14:29.970 [DEBUG] [Thread-121517] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:30.033 [DEBUG] [Thread-121517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:30.033 [DEBUG] [Thread-121517] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:30.033 [DEBUG] [Thread-121517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:14:30.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:14:30.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:30.089 [DEBUG] [Thread-121517] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:30.090 [DEBUG] [Thread-121517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:30.090 [DEBUG] [Thread-121517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:30.090 [DEBUG] [Thread-121517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:14:30.090 [DEBUG] [Thread-121517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:30.103 [INFO] [Thread-121517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10: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-28T10:14:30.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:31.062 [DEBUG] [Thread-121517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:31.062 [DEBUG] [Thread-121517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:31.110 [DEBUG] [Thread-121517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:31.110 [DEBUG] [Thread-121517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:31.118 [DEBUG] [Thread-121517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:31.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:31.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-28T10:14:31.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-28T10:14:31.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:31.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:31.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:31.150 [DEBUG] [Thread-121517] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:33.763 [DEBUG] [Thread-121519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:41.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:14:41.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:14:41.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-28T10:14:41.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 14, 14), 12.85, 42.1, 0.0, 11.45, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:14:41.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:14:14
2025-09-28T10:14:41.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:14:42.140 [DEBUG] [Thread-121520] [transport.py] [_log()] starting thread (client mode): 0x2b9dd3c0
2025-09-28T10:14:42.141 [DEBUG] [Thread-121520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:42.154 [DEBUG] [Thread-121520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:14:42.154 [INFO] [Thread-121520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] Compression: none
2025-09-28T10:14:42.156 [DEBUG] [Thread-121520] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:42.166 [DEBUG] [Thread-121520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:42.167 [DEBUG] [Thread-121520] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:42.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:14:42.167 [DEBUG] [Thread-121520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:14:42.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:42.168 [DEBUG] [Thread-121520] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:42.168 [DEBUG] [Thread-121520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:42.168 [DEBUG] [Thread-121520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:42.169 [DEBUG] [Thread-121520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:14:42.169 [DEBUG] [Thread-121520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:42.188 [INFO] [Thread-121520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:42.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:42.839 [DEBUG] [Thread-121520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:42.839 [DEBUG] [Thread-121520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:42.840 [DEBUG] [Thread-121520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:14:42.880 [DEBUG] [Thread-121520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:42.880 [DEBUG] [Thread-121520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:42.883 [DEBUG] [Thread-121520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:42.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:42.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:14:42.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:14:42.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:14:42.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:42.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:14:42.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:42.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343142 -999.00  +16.60   8.33     46   +5.00 1 1 1 1 1   888    0 11.91 48.36 ----- 6.2 8.3 232.8 12.5 24.6 -27.4 23.2 -25.1 22.0 -25.0 23.2 -26.2
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343142
2025-09-28T10:14:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:14:42.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:14:42.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:14:42.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:14:42.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:14:42.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:14:14', tmtdew=12.85, humidity=42.1, cloud=0.0, wind=11.45, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:14:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:14:42.909 [DEBUG] [Thread-121520] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:42.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:14:43.026 [DEBUG] [Thread-121523] [transport.py] [_log()] starting thread (client mode): 0x2b9dd7b0
2025-09-28T10:14:43.026 [DEBUG] [Thread-121523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:43.062 [DEBUG] [Thread-121523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:14:43.063 [INFO] [Thread-121523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] Compression: none
2025-09-28T10:14:43.091 [DEBUG] [Thread-121523] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:43.171 [DEBUG] [Thread-121523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:43.171 [DEBUG] [Thread-121523] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:43.171 [DEBUG] [Thread-121523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:14:43.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:14:43.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:43.275 [DEBUG] [Thread-121523] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:43.275 [DEBUG] [Thread-121523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:43.275 [DEBUG] [Thread-121523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:43.275 [DEBUG] [Thread-121523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:14:43.275 [DEBUG] [Thread-121523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:43.314 [INFO] [Thread-121523] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:43.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-28T10:14:43.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:44.302 [DEBUG] [Thread-121523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:44.302 [DEBUG] [Thread-121523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:44.371 [DEBUG] [Thread-121523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:44.371 [DEBUG] [Thread-121523] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:44.401 [DEBUG] [Thread-121523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:44.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:44.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-28T10:14:44.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-28T10:14:44.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:44.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:44.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:44.517 [DEBUG] [Thread-121523] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:48.795 [DEBUG] [Thread-121525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:14:54.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:14:54.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:14:54.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:14:55.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 14, 46), 12.82, 42.18, 0.0, 11.03, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:14:55.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:14:46
2025-09-28T10:14:55.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:14:55.353 [DEBUG] [Thread-121526] [transport.py] [_log()] starting thread (client mode): 0x2e3c0520
2025-09-28T10:14:55.353 [DEBUG] [Thread-121526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:55.373 [DEBUG] [Thread-121526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:14:55.373 [INFO] [Thread-121526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] Compression: none
2025-09-28T10:14:55.377 [DEBUG] [Thread-121526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:55.384 [DEBUG] [Thread-121526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:55.384 [DEBUG] [Thread-121526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:55.384 [DEBUG] [Thread-121526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:14:55.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:14:55.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:55.385 [DEBUG] [Thread-121526] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:55.385 [DEBUG] [Thread-121526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:55.385 [DEBUG] [Thread-121526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:55.385 [DEBUG] [Thread-121526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:14:55.385 [DEBUG] [Thread-121526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:55.400 [INFO] [Thread-121526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:55.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:55.973 [DEBUG] [Thread-121526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:55.973 [DEBUG] [Thread-121526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:55.973 [DEBUG] [Thread-121526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:14:56.014 [DEBUG] [Thread-121526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:56.014 [DEBUG] [Thread-121526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:56.016 [DEBUG] [Thread-121526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:56.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:56.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:14:56.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:14:56.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:14:56.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:56.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:14:56.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343142 -999.00  +16.60   8.33     46   +5.00 1 1 1 1 1   888    0 11.91 48.36 ----- 6.2 8.3 232.8 12.5 24.6 -27.4 23.2 -25.1 22.0 -25.0 23.2 -26.2
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343142
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:14:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:14:46', tmtdew=12.82, humidity=42.18, cloud=0.0, wind=11.03, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:14:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:14:56.037 [DEBUG] [Thread-121526] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:14:56.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:14:56.121 [DEBUG] [Thread-121529] [transport.py] [_log()] starting thread (client mode): 0x2e3c0760
2025-09-28T10:14:56.121 [DEBUG] [Thread-121529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:14:56.136 [DEBUG] [Thread-121529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:14:56.136 [INFO] [Thread-121529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] client lang: <none>
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] server lang: <none>
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] kex follows: False
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] Compression: none
2025-09-28T10:14:56.144 [DEBUG] [Thread-121529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:14:56.199 [DEBUG] [Thread-121529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:14:56.199 [DEBUG] [Thread-121529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:14:56.199 [DEBUG] [Thread-121529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:14:56.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:14:56.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:14:56.257 [DEBUG] [Thread-121529] [transport.py] [_log()] userauth is OK
2025-09-28T10:14:56.257 [DEBUG] [Thread-121529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:14:56.257 [DEBUG] [Thread-121529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:14:56.257 [DEBUG] [Thread-121529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:14:56.257 [DEBUG] [Thread-121529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:14:56.271 [INFO] [Thread-121529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:14:56.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-28T10:14:56.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:14:57.303 [DEBUG] [Thread-121529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:14:57.303 [DEBUG] [Thread-121529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:14:57.351 [DEBUG] [Thread-121529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:14:57.351 [DEBUG] [Thread-121529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:14:57.362 [DEBUG] [Thread-121529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:14:57.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:14:57.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:14:57.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-28T10:14:57.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:14:57.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:14:57.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:14:57.404 [DEBUG] [Thread-121529] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:02.267 [DEBUG] [Thread-121531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:03.816 [DEBUG] [Thread-121532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:07.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:15:07.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:15:07.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:15:07.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 14, 46), 12.82, 42.18, 0.0, 11.03, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:15:07.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:14:46
2025-09-28T10:15:08.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:15:08.254 [DEBUG] [Thread-121533] [transport.py] [_log()] starting thread (client mode): 0x2e38c0a0
2025-09-28T10:15:08.255 [DEBUG] [Thread-121533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:08.275 [DEBUG] [Thread-121533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:15:08.275 [INFO] [Thread-121533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:08.278 [DEBUG] [Thread-121533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:08.279 [DEBUG] [Thread-121533] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:08.279 [DEBUG] [Thread-121533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:08.279 [DEBUG] [Thread-121533] [transport.py] [_log()] Compression: none
2025-09-28T10:15:08.279 [DEBUG] [Thread-121533] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:08.294 [DEBUG] [Thread-121533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:08.294 [DEBUG] [Thread-121533] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:08.294 [DEBUG] [Thread-121533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:15:08.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:15:08.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:08.295 [DEBUG] [Thread-121533] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:08.295 [DEBUG] [Thread-121533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:08.295 [DEBUG] [Thread-121533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:08.295 [DEBUG] [Thread-121533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:15:08.295 [DEBUG] [Thread-121533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:08.310 [INFO] [Thread-121533] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:08.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:14.227 [DEBUG] [Thread-121533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:14.227 [DEBUG] [Thread-121533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:14.228 [DEBUG] [Thread-121533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:15:14.268 [DEBUG] [Thread-121533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:14.268 [DEBUG] [Thread-121533] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:14.271 [DEBUG] [Thread-121533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:14.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:14.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:15:14.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:15:14.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:15:14.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:14.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:15:14.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343489 -999.00  +16.20  10.06     46   +4.80 1 1 1 1 1   888    0 12.21 48.85 ----- 9.8 10.1 252.4 12.7 24.7 -27.1 23.2 -26.2 22.0 -25.4 23.1 -27.2
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:15:14.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343489
2025-09-28T10:15:14.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:15:14.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:15:14.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:15:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:15:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:15:14.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:14:46', tmtdew=12.82, humidity=42.18, cloud=0.0, wind=11.03, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:14:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:15:14.397 [DEBUG] [Thread-121533] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:14.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-28T10:15:14.496 [DEBUG] [Thread-121536] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-28T10:15:14.496 [DEBUG] [Thread-121536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:14.510 [DEBUG] [Thread-121536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:15:14.510 [INFO] [Thread-121536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:14.518 [DEBUG] [Thread-121536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:14.519 [DEBUG] [Thread-121536] [transport.py] [_log()] Compression: none
2025-09-28T10:15:14.519 [DEBUG] [Thread-121536] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:14.575 [DEBUG] [Thread-121536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:14.575 [DEBUG] [Thread-121536] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:14.575 [DEBUG] [Thread-121536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:15:14.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:15:14.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:14.633 [DEBUG] [Thread-121536] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:14.633 [DEBUG] [Thread-121536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:14.633 [DEBUG] [Thread-121536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:14.633 [DEBUG] [Thread-121536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:15:14.633 [DEBUG] [Thread-121536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:14.646 [INFO] [Thread-121536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:14.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-28T10:15:14.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:15.605 [DEBUG] [Thread-121536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:15.605 [DEBUG] [Thread-121536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:15.653 [DEBUG] [Thread-121536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:15.653 [DEBUG] [Thread-121536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:15.661 [DEBUG] [Thread-121536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:15.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:15.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-28T10:15:15.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-28T10:15:15.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:15.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:15.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:15.692 [DEBUG] [Thread-121536] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:18.846 [DEBUG] [Thread-121538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:25.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:15:25.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:15:25.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-28T10:15:26.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 15, 19), 12.85, 42.08, 0.0, 11.28, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:15:26.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:15:19
2025-09-28T10:15:26.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:15:26.537 [DEBUG] [Thread-121539] [transport.py] [_log()] starting thread (client mode): 0x2e38cac0
2025-09-28T10:15:26.537 [DEBUG] [Thread-121539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:26.557 [DEBUG] [Thread-121539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:15:26.557 [INFO] [Thread-121539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] Compression: none
2025-09-28T10:15:26.558 [DEBUG] [Thread-121539] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:26.565 [DEBUG] [Thread-121539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:26.565 [DEBUG] [Thread-121539] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:26.565 [DEBUG] [Thread-121539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:15:26.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:15:26.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:26.566 [DEBUG] [Thread-121539] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:26.566 [DEBUG] [Thread-121539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:26.566 [DEBUG] [Thread-121539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:26.566 [DEBUG] [Thread-121539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:15:26.566 [DEBUG] [Thread-121539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:26.577 [INFO] [Thread-121539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:26.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:27.219 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:27.219 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:28.240 [DEBUG] [Thread-121539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:28.240 [DEBUG] [Thread-121539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:28.240 [DEBUG] [Thread-121539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:15:28.281 [DEBUG] [Thread-121539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:28.281 [DEBUG] [Thread-121539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:28.283 [DEBUG] [Thread-121539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:28.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:28.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:15:28.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:15:28.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:15:28.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:28.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:15:28.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343489 -999.00  +16.20  10.06     46   +4.80 1 1 1 1 1   888    0 12.21 48.85 ----- 9.8 10.1 252.4 12.7 24.7 -27.1 23.2 -26.2 22.0 -25.4 23.1 -27.2
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:15:28.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343489
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:15:28.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:15:19', tmtdew=12.85, humidity=42.08, cloud=0.0, wind=11.28, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:14:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:15:28.300 [DEBUG] [Thread-121539] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:28.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-28T10:15:28.383 [DEBUG] [Thread-121542] [transport.py] [_log()] starting thread (client mode): 0x2e38f6a0
2025-09-28T10:15:28.383 [DEBUG] [Thread-121542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:28.398 [DEBUG] [Thread-121542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:15:28.398 [INFO] [Thread-121542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:15:28.405 [DEBUG] [Thread-121542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] Compression: none
2025-09-28T10:15:28.406 [DEBUG] [Thread-121542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:28.464 [DEBUG] [Thread-121542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:28.464 [DEBUG] [Thread-121542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:28.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:15:28.464 [DEBUG] [Thread-121542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:15:28.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:28.520 [DEBUG] [Thread-121542] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:28.520 [DEBUG] [Thread-121542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:28.520 [DEBUG] [Thread-121542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:28.520 [DEBUG] [Thread-121542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:15:28.520 [DEBUG] [Thread-121542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:28.534 [INFO] [Thread-121542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:28.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-28T10:15:28.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:29.498 [DEBUG] [Thread-121542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:29.498 [DEBUG] [Thread-121542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:29.545 [DEBUG] [Thread-121542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:29.546 [DEBUG] [Thread-121542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:29.554 [DEBUG] [Thread-121542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:29.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:29.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-28T10:15:29.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-28T10:15:29.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:29.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:29.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:29.584 [DEBUG] [Thread-121542] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:33.872 [DEBUG] [Thread-121544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:39.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:15:39.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:15:39.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-28T10:15:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 15, 19), 12.85, 42.08, 0.0, 11.28, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:15:40.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:15:19
2025-09-28T10:15:40.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:15:40.426 [DEBUG] [Thread-121545] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-28T10:15:40.426 [DEBUG] [Thread-121545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:40.436 [DEBUG] [Thread-121545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:15:40.436 [INFO] [Thread-121545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] Compression: none
2025-09-28T10:15:40.439 [DEBUG] [Thread-121545] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:40.454 [DEBUG] [Thread-121545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:40.454 [DEBUG] [Thread-121545] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:15:40.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:15:40.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:15:40.455 [DEBUG] [Thread-121545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:40.470 [INFO] [Thread-121545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:40.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:41.088 [DEBUG] [Thread-121545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:41.088 [DEBUG] [Thread-121545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:41.088 [DEBUG] [Thread-121545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:15:41.129 [DEBUG] [Thread-121545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:41.129 [DEBUG] [Thread-121545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:41.131 [DEBUG] [Thread-121545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:41.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:41.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:15:41.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:15:41.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:15:41.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:41.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:15:41.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343836 -999.00  +16.00   4.31     47   +5.00 1 1 1 1 1   888    0 12.23 51.62 ----- 4.8 4.3 280.6 13.8 24.6 -27.8 23.4 -25.1 22.0 -25.5 23.1 -27.5
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343836
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:15:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:15:19', tmtdew=12.85, humidity=42.08, cloud=0.0, wind=11.28, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:15:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:15:41.148 [DEBUG] [Thread-121545] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:41.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-28T10:15:41.263 [DEBUG] [Thread-121548] [transport.py] [_log()] starting thread (client mode): 0x2e3c0880
2025-09-28T10:15:41.264 [DEBUG] [Thread-121548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:41.309 [DEBUG] [Thread-121548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:15:41.309 [INFO] [Thread-121548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:41.348 [DEBUG] [Thread-121548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] Compression: none
2025-09-28T10:15:41.349 [DEBUG] [Thread-121548] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:41.432 [DEBUG] [Thread-121548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:41.433 [DEBUG] [Thread-121548] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:41.433 [DEBUG] [Thread-121548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:15:41.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:15:41.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:41.558 [DEBUG] [Thread-121548] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:41.558 [DEBUG] [Thread-121548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:41.558 [DEBUG] [Thread-121548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:41.558 [DEBUG] [Thread-121548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:15:41.558 [DEBUG] [Thread-121548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:41.606 [INFO] [Thread-121548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:41.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-28T10:15:41.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:42.567 [DEBUG] [Thread-121548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:42.567 [DEBUG] [Thread-121548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:42.658 [DEBUG] [Thread-121548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:42.658 [DEBUG] [Thread-121548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:42.699 [DEBUG] [Thread-121548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:42.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:42.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-28T10:15:42.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-28T10:15:42.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:42.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:42.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:42.863 [DEBUG] [Thread-121548] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:48.902 [DEBUG] [Thread-121550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:15:52.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:15:52.833 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:15:52.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:15:53.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 15, 19), 12.85, 42.08, 0.0, 11.28, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:15:53.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:15:19
2025-09-28T10:15:53.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:15:53.698 [DEBUG] [Thread-121551] [transport.py] [_log()] starting thread (client mode): 0x2e38efe0
2025-09-28T10:15:53.699 [DEBUG] [Thread-121551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:53.722 [DEBUG] [Thread-121551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:15:53.722 [INFO] [Thread-121551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:53.726 [DEBUG] [Thread-121551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:53.727 [DEBUG] [Thread-121551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:53.727 [DEBUG] [Thread-121551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:53.727 [DEBUG] [Thread-121551] [transport.py] [_log()] Compression: none
2025-09-28T10:15:53.727 [DEBUG] [Thread-121551] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:53.742 [DEBUG] [Thread-121551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:53.742 [DEBUG] [Thread-121551] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:53.742 [DEBUG] [Thread-121551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:15:53.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:15:53.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:53.784 [DEBUG] [Thread-121551] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:53.784 [DEBUG] [Thread-121551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:53.784 [DEBUG] [Thread-121551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:53.784 [DEBUG] [Thread-121551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:15:53.784 [DEBUG] [Thread-121551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:53.802 [INFO] [Thread-121551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:53.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:54.536 [DEBUG] [Thread-121551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:54.536 [DEBUG] [Thread-121551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:54.536 [DEBUG] [Thread-121551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:15:54.577 [DEBUG] [Thread-121551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:54.577 [DEBUG] [Thread-121551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:54.578 [DEBUG] [Thread-121551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:54.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:54.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:15:54.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:15:54.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:15:54.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:54.595 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:15:54.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343836 -999.00  +16.00   4.31     47   +5.00 1 1 1 1 1   888    0 12.23 51.62 ----- 4.8 4.3 280.6 13.8 24.6 -27.8 23.4 -25.1 22.0 -25.5 23.1 -27.5
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343836
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:15:54.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:15:19', tmtdew=12.85, humidity=42.08, cloud=0.0, wind=11.28, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:15:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:15:54.595 [DEBUG] [Thread-121551] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:15:54.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-28T10:15:54.678 [DEBUG] [Thread-121554] [transport.py] [_log()] starting thread (client mode): 0x2b96c970
2025-09-28T10:15:54.678 [DEBUG] [Thread-121554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:15:54.693 [DEBUG] [Thread-121554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:15:54.693 [INFO] [Thread-121554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] client lang: <none>
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] server lang: <none>
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] kex follows: False
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] Compression: none
2025-09-28T10:15:54.701 [DEBUG] [Thread-121554] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:15:54.758 [DEBUG] [Thread-121554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:15:54.758 [DEBUG] [Thread-121554] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:15:54.758 [DEBUG] [Thread-121554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:15:54.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:15:54.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:15:54.816 [DEBUG] [Thread-121554] [transport.py] [_log()] userauth is OK
2025-09-28T10:15:54.816 [DEBUG] [Thread-121554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:15:54.816 [DEBUG] [Thread-121554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:15:54.816 [DEBUG] [Thread-121554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:15:54.816 [DEBUG] [Thread-121554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:15:54.829 [INFO] [Thread-121554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:15:54.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-28T10:15:54.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:15:55.778 [DEBUG] [Thread-121554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:15:55.778 [DEBUG] [Thread-121554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:15:55.826 [DEBUG] [Thread-121554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:15:55.826 [DEBUG] [Thread-121554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:15:55.834 [DEBUG] [Thread-121554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:15:55.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:15:55.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-28T10:15:55.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-28T10:15:55.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:15:55.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:15:55.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:15:55.865 [DEBUG] [Thread-121554] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:02.325 [DEBUG] [Thread-121556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:03.936 [DEBUG] [Thread-121557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:05.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:16:05.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:16:05.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:16:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 15, 50), 12.67, 42.43, 0.0, 11.03, 15.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:16:06.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:15:50
2025-09-28T10:16:06.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:16:06.714 [DEBUG] [Thread-121558] [transport.py] [_log()] starting thread (client mode): 0x2b989210
2025-09-28T10:16:06.714 [DEBUG] [Thread-121558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:06.735 [DEBUG] [Thread-121558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:16:06.735 [INFO] [Thread-121558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:06.738 [DEBUG] [Thread-121558] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] Compression: none
2025-09-28T10:16:06.739 [DEBUG] [Thread-121558] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:06.754 [DEBUG] [Thread-121558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:06.754 [DEBUG] [Thread-121558] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:06.754 [DEBUG] [Thread-121558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:16:06.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:16:06.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:06.755 [DEBUG] [Thread-121558] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:06.755 [DEBUG] [Thread-121558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:06.755 [DEBUG] [Thread-121558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:06.755 [DEBUG] [Thread-121558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:16:06.755 [DEBUG] [Thread-121558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:06.764 [INFO] [Thread-121558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:06.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:07.555 [DEBUG] [Thread-121558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:07.555 [DEBUG] [Thread-121558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:07.555 [DEBUG] [Thread-121558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:16:07.596 [DEBUG] [Thread-121558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:07.596 [DEBUG] [Thread-121558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:07.597 [DEBUG] [Thread-121558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:07.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:07.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:16:07.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:16:07.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:16:07.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:07.612 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:16:07.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.343836 -999.00  +16.00   4.31     47   +5.00 1 1 1 1 1   888    0 12.23 51.62 ----- 4.8 4.3 280.6 13.8 24.6 -27.8 23.4 -25.1 22.0 -25.5 23.1 -27.5
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.343836
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:16:07.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:15:50', tmtdew=12.67, humidity=42.43, cloud=0.0, wind=11.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:15:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:16:07.613 [DEBUG] [Thread-121558] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:07.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-28T10:16:07.698 [DEBUG] [Thread-121561] [transport.py] [_log()] starting thread (client mode): 0x2b9dfcd0
2025-09-28T10:16:07.698 [DEBUG] [Thread-121561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:07.714 [DEBUG] [Thread-121561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:16:07.714 [INFO] [Thread-121561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:16:07.721 [DEBUG] [Thread-121561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:07.721 [DEBUG] [Thread-121561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] Compression: none
2025-09-28T10:16:07.722 [DEBUG] [Thread-121561] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:07.778 [DEBUG] [Thread-121561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:07.779 [DEBUG] [Thread-121561] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:07.779 [DEBUG] [Thread-121561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:16:07.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:16:07.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:07.835 [DEBUG] [Thread-121561] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:07.835 [DEBUG] [Thread-121561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:07.835 [DEBUG] [Thread-121561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:07.835 [DEBUG] [Thread-121561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:16:07.835 [DEBUG] [Thread-121561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:07.849 [INFO] [Thread-121561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:07.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-28T10:16:07.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:08.864 [DEBUG] [Thread-121561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:08.864 [DEBUG] [Thread-121561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:08.912 [DEBUG] [Thread-121561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:08.912 [DEBUG] [Thread-121561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:08.921 [DEBUG] [Thread-121561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:08.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:08.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')
2025-09-28T10:16:08.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') -> 00000000
2025-09-28T10:16:08.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:08.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:08.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:08.956 [DEBUG] [Thread-121561] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:18.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:16:18.959 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:16:18.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-28T10:16:18.961 [DEBUG] [Thread-121563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:19.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 15, 50), 12.67, 42.43, 0.0, 11.03, 15.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:16:19.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:15:50
2025-09-28T10:16:19.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:16:19.809 [DEBUG] [Thread-121564] [transport.py] [_log()] starting thread (client mode): 0x2e38e2f0
2025-09-28T10:16:19.809 [DEBUG] [Thread-121564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:19.829 [DEBUG] [Thread-121564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:16:19.829 [INFO] [Thread-121564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:16:19.832 [DEBUG] [Thread-121564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] Compression: none
2025-09-28T10:16:19.833 [DEBUG] [Thread-121564] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:19.853 [DEBUG] [Thread-121564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:19.853 [DEBUG] [Thread-121564] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:19.853 [DEBUG] [Thread-121564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:16:19.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:16:19.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:19.854 [DEBUG] [Thread-121564] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:19.854 [DEBUG] [Thread-121564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:19.854 [DEBUG] [Thread-121564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:19.854 [DEBUG] [Thread-121564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:16:19.854 [DEBUG] [Thread-121564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:19.863 [INFO] [Thread-121564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:19.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:20.474 [DEBUG] [Thread-121564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:20.474 [DEBUG] [Thread-121564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:20.474 [DEBUG] [Thread-121564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:16:20.515 [DEBUG] [Thread-121564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:20.515 [DEBUG] [Thread-121564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:20.517 [DEBUG] [Thread-121564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:20.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:20.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:16:20.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:16:20.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:16:20.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:20.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:16:20.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.344531 -999.00  +16.10   7.97     47   +4.90 1 1 1 1 1   888    0 12.24 48.19 ----- 8.8 8.0 268.4 9.9 25.0 -26.1 23.6 -24.9 22.1 -25.1 23.4 -26.7
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.344531
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:16:20.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:16:20.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:15:50', tmtdew=12.67, humidity=42.43, cloud=0.0, wind=11.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:16:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:16:20.532 [DEBUG] [Thread-121564] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:20.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-28T10:16:20.651 [DEBUG] [Thread-121567] [transport.py] [_log()] starting thread (client mode): 0x2b9dc160
2025-09-28T10:16:20.651 [DEBUG] [Thread-121567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:20.705 [DEBUG] [Thread-121567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:16:20.705 [INFO] [Thread-121567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] Compression: none
2025-09-28T10:16:20.739 [DEBUG] [Thread-121567] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:20.843 [DEBUG] [Thread-121567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:20.843 [DEBUG] [Thread-121567] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:20.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:16:20.843 [DEBUG] [Thread-121567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:16:20.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:20.971 [DEBUG] [Thread-121567] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:20.971 [DEBUG] [Thread-121567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:20.971 [DEBUG] [Thread-121567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:20.971 [DEBUG] [Thread-121567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:16:20.971 [DEBUG] [Thread-121567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:21.016 [INFO] [Thread-121567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:21.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:16:21.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:21.963 [DEBUG] [Thread-121567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:21.963 [DEBUG] [Thread-121567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:22.044 [DEBUG] [Thread-121567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:22.044 [DEBUG] [Thread-121567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:22.085 [DEBUG] [Thread-121567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:22.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16: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')
2025-09-28T10:16:22.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T10:16:22.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:22.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:22.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:22.248 [DEBUG] [Thread-121567] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:27.375 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:27.376 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:32.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:16:32.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:16:32.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-28T10:16:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 16, 22), 12.65, 42.46, 0.0, 8.44, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:16:32.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:16:22
2025-09-28T10:16:32.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:16:33.058 [DEBUG] [Thread-121569] [transport.py] [_log()] starting thread (client mode): 0x30dde980
2025-09-28T10:16:33.058 [DEBUG] [Thread-121569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:33.078 [DEBUG] [Thread-121569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:16:33.078 [INFO] [Thread-121569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] Compression: none
2025-09-28T10:16:33.080 [DEBUG] [Thread-121569] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:33.089 [DEBUG] [Thread-121569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:33.089 [DEBUG] [Thread-121569] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:33.090 [DEBUG] [Thread-121569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:16:33.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:16:33.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:33.091 [DEBUG] [Thread-121569] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:33.092 [DEBUG] [Thread-121569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:33.092 [DEBUG] [Thread-121569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:33.092 [DEBUG] [Thread-121569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:16:33.092 [DEBUG] [Thread-121569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:33.117 [INFO] [Thread-121569] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:33.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:33.814 [DEBUG] [Thread-121569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:33.814 [DEBUG] [Thread-121569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:33.814 [DEBUG] [Thread-121569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:16:33.855 [DEBUG] [Thread-121569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:33.856 [DEBUG] [Thread-121569] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:33.858 [DEBUG] [Thread-121569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:33.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:33.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:16:33.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:16:33.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:16:33.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:33.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:16:33.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.344531 -999.00  +16.10   7.97     47   +4.90 1 1 1 1 1   888    0 12.24 48.19 ----- 8.8 8.0 268.4 9.9 25.0 -26.1 23.6 -24.9 22.1 -25.1 23.4 -26.7
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:16:33.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.344531
2025-09-28T10:16:33.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:16:33.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:16:33.881 [DEBUG] [Thread-121569] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:33.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:16:33.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:16:33.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:16:33.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:16:22', tmtdew=12.65, humidity=42.46, cloud=0.0, wind=8.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:16:07.478', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:16:33.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-28T10:16:33.976 [DEBUG] [Thread-121572] [transport.py] [_log()] starting thread (client mode): 0x2e362680
2025-09-28T10:16:33.977 [DEBUG] [Thread-121572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:33.991 [DEBUG] [Thread-121572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:16:33.992 [INFO] [Thread-121572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:16:33.993 [DEBUG] [Thread-121574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:33.999 [DEBUG] [Thread-121572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:33.999 [DEBUG] [Thread-121572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:16:33.999 [DEBUG] [Thread-121572] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:33.999 [DEBUG] [Thread-121572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:33.999 [DEBUG] [Thread-121572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:34.000 [DEBUG] [Thread-121572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] Compression: none
2025-09-28T10:16:34.001 [DEBUG] [Thread-121572] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:34.060 [DEBUG] [Thread-121572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:34.060 [DEBUG] [Thread-121572] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:34.061 [DEBUG] [Thread-121572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:16:34.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:16:34.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:34.115 [DEBUG] [Thread-121572] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:34.115 [DEBUG] [Thread-121572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:34.116 [DEBUG] [Thread-121572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:34.116 [DEBUG] [Thread-121572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:16:34.116 [DEBUG] [Thread-121572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:34.135 [INFO] [Thread-121572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:34.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-28T10:16:34.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:35.102 [DEBUG] [Thread-121572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:35.102 [DEBUG] [Thread-121572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:35.150 [DEBUG] [Thread-121572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:35.150 [DEBUG] [Thread-121572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:35.158 [DEBUG] [Thread-121572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:35.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:35.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:16:35.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') -> 00000000
2025-09-28T10:16:35.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:35.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:35.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:35.189 [DEBUG] [Thread-121572] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:45.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:16:45.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:16:45.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-28T10:16:45.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 16, 22), 12.65, 42.46, 0.0, 8.44, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:16:45.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:16:22
2025-09-28T10:16:45.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:16:46.046 [DEBUG] [Thread-121575] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-28T10:16:46.046 [DEBUG] [Thread-121575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:46.066 [DEBUG] [Thread-121575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:16:46.066 [INFO] [Thread-121575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:46.069 [DEBUG] [Thread-121575] [transport.py] [_log()] Compression: none
2025-09-28T10:16:46.070 [DEBUG] [Thread-121575] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:46.085 [DEBUG] [Thread-121575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:46.086 [DEBUG] [Thread-121575] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:46.086 [DEBUG] [Thread-121575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:16:46.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:16:46.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:46.086 [DEBUG] [Thread-121575] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:46.086 [DEBUG] [Thread-121575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:46.086 [DEBUG] [Thread-121575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:46.087 [DEBUG] [Thread-121575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:16:46.087 [DEBUG] [Thread-121575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:46.098 [INFO] [Thread-121575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:46.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:46.686 [DEBUG] [Thread-121575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:46.687 [DEBUG] [Thread-121575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:46.687 [DEBUG] [Thread-121575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:16:46.728 [DEBUG] [Thread-121575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:46.728 [DEBUG] [Thread-121575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:46.729 [DEBUG] [Thread-121575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:46.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:46.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:16:46.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:16:46.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:16:46.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:46.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:16:46.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.344878 -999.00  +15.90  10.76     48   +5.00 1 1 1 1 1   888    0 12.15 49.73 ----- 9.0 10.8 266.8 14.0 24.9 -27.8 23.6 -25.6 22.1 -30.0 23.2 -27.0
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.344878
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:16:46.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:16:46.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:16:46.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:16:22', tmtdew=12.65, humidity=42.46, cloud=0.0, wind=8.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:16:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:16:46.743 [DEBUG] [Thread-121575] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:46.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-28T10:16:46.828 [DEBUG] [Thread-121578] [transport.py] [_log()] starting thread (client mode): 0x30ddf460
2025-09-28T10:16:46.828 [DEBUG] [Thread-121578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:46.842 [DEBUG] [Thread-121578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:16:46.842 [INFO] [Thread-121578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] Compression: none
2025-09-28T10:16:46.851 [DEBUG] [Thread-121578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:46.909 [DEBUG] [Thread-121578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:46.909 [DEBUG] [Thread-121578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:46.909 [DEBUG] [Thread-121578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:16:46.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:16:46.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:46.966 [DEBUG] [Thread-121578] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:46.966 [DEBUG] [Thread-121578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:46.966 [DEBUG] [Thread-121578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:46.966 [DEBUG] [Thread-121578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:16:46.966 [DEBUG] [Thread-121578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:46.980 [INFO] [Thread-121578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:46.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-28T10:16:46.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:47.970 [DEBUG] [Thread-121578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:47.970 [DEBUG] [Thread-121578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:48.018 [DEBUG] [Thread-121578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:48.018 [DEBUG] [Thread-121578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:48.027 [DEBUG] [Thread-121578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:48.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16: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-28T10:16:48.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-28T10:16:48.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:48.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:48.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:48.060 [DEBUG] [Thread-121578] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:49.035 [DEBUG] [Thread-121580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:16:58.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:16:58.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:16:58.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-28T10:16:58.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 16, 54), 12.76, 42.58, 0.0, 9.02, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:16:58.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:16:54
2025-09-28T10:16:58.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:16:58.921 [DEBUG] [Thread-121581] [transport.py] [_log()] starting thread (client mode): 0x30ddd150
2025-09-28T10:16:58.921 [DEBUG] [Thread-121581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:58.942 [DEBUG] [Thread-121581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:16:58.942 [INFO] [Thread-121581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] client lang: <none>
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] server lang: <none>
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] kex follows: False
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] Compression: none
2025-09-28T10:16:58.946 [DEBUG] [Thread-121581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:16:58.963 [DEBUG] [Thread-121581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:16:58.963 [DEBUG] [Thread-121581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:16:58.963 [DEBUG] [Thread-121581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:16:58.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:16:58.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:16:58.965 [DEBUG] [Thread-121581] [transport.py] [_log()] userauth is OK
2025-09-28T10:16:58.966 [DEBUG] [Thread-121581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:16:58.966 [DEBUG] [Thread-121581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:16:58.966 [DEBUG] [Thread-121581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:16:58.966 [DEBUG] [Thread-121581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:16:58.990 [INFO] [Thread-121581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:16:58.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:16:59.760 [DEBUG] [Thread-121581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:16:59.760 [DEBUG] [Thread-121581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:16:59.760 [DEBUG] [Thread-121581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:16:59.801 [DEBUG] [Thread-121581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:16:59.801 [DEBUG] [Thread-121581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:16:59.804 [DEBUG] [Thread-121581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:16:59.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:16:59.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:16:59.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:16:59.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:16:59.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:16:59.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:16:59.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.344878 -999.00  +15.90  10.76     48   +5.00 1 1 1 1 1   888    0 12.15 49.73 ----- 9.0 10.8 266.8 14.0 24.9 -27.8 23.6 -25.6 22.1 -30.0 23.2 -27.0
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.344878
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:16:59.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:16:54', tmtdew=12.76, humidity=42.58, cloud=0.0, wind=9.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:16:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:16:59.821 [DEBUG] [Thread-121581] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:16:59.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-28T10:16:59.937 [DEBUG] [Thread-121584] [transport.py] [_log()] starting thread (client mode): 0x2b96da20
2025-09-28T10:16:59.937 [DEBUG] [Thread-121584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:16:59.985 [DEBUG] [Thread-121584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:16:59.985 [INFO] [Thread-121584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:17:00.026 [DEBUG] [Thread-121584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:00.026 [DEBUG] [Thread-121584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:00.027 [DEBUG] [Thread-121584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:00.028 [DEBUG] [Thread-121584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:00.028 [DEBUG] [Thread-121584] [transport.py] [_log()] Compression: none
2025-09-28T10:17:00.028 [DEBUG] [Thread-121584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:00.117 [DEBUG] [Thread-121584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:00.117 [DEBUG] [Thread-121584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:00.118 [DEBUG] [Thread-121584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:17:00.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:17:00.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:00.244 [DEBUG] [Thread-121584] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:00.244 [DEBUG] [Thread-121584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:00.244 [DEBUG] [Thread-121584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:00.244 [DEBUG] [Thread-121584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:17:00.244 [DEBUG] [Thread-121584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:00.295 [INFO] [Thread-121584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:00.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:17:00.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:01.288 [DEBUG] [Thread-121584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:01.288 [DEBUG] [Thread-121584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:01.369 [DEBUG] [Thread-121584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:01.370 [DEBUG] [Thread-121584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:01.412 [DEBUG] [Thread-121584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:01.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:01.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-28T10:17:01.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') -> 00000000
2025-09-28T10:17:01.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:01.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:01.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:01.580 [DEBUG] [Thread-121584] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:02.358 [DEBUG] [Thread-121586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:04.067 [DEBUG] [Thread-121587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:11.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:17:11.549 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:17:11.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-28T10:17:12.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 16, 54), 12.76, 42.58, 0.0, 9.02, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:17:12.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:16:54
2025-09-28T10:17:12.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:17:12.388 [DEBUG] [Thread-121588] [transport.py] [_log()] starting thread (client mode): 0x30ddea10
2025-09-28T10:17:12.388 [DEBUG] [Thread-121588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:12.403 [DEBUG] [Thread-121588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:17:12.403 [INFO] [Thread-121588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] Compression: none
2025-09-28T10:17:12.405 [DEBUG] [Thread-121588] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:12.413 [DEBUG] [Thread-121588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:12.413 [DEBUG] [Thread-121588] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:12.413 [DEBUG] [Thread-121588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:17:12.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:17:12.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:12.416 [DEBUG] [Thread-121588] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:12.416 [DEBUG] [Thread-121588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:12.416 [DEBUG] [Thread-121588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:12.416 [DEBUG] [Thread-121588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:17:12.416 [DEBUG] [Thread-121588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:12.434 [INFO] [Thread-121588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:12.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:13.142 [DEBUG] [Thread-121588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:13.142 [DEBUG] [Thread-121588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:13.143 [DEBUG] [Thread-121588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:17:13.183 [DEBUG] [Thread-121588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:13.183 [DEBUG] [Thread-121588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:13.186 [DEBUG] [Thread-121588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:13.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:13.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:17:13.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:17:13.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:17:13.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:13.209 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:17:13.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:13.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:17:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.344878 -999.00  +15.90  10.76     48   +5.00 1 1 1 1 1   888    0 12.15 49.73 ----- 9.0 10.8 266.8 14.0 24.9 -27.8 23.6 -25.6 22.1 -30.0 23.2 -27.0
2025-09-28T10:17:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:17:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:17:13.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.344878
2025-09-28T10:17:13.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:17:13.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:17:13.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:17:13.211 [DEBUG] [Thread-121588] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:13.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:17:13.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:17:13.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:16:54', tmtdew=12.76, humidity=42.58, cloud=0.0, wind=9.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:16:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:17:13.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:17:13.344 [DEBUG] [Thread-121591] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T10:17:13.344 [DEBUG] [Thread-121591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:13.389 [DEBUG] [Thread-121591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:17:13.389 [INFO] [Thread-121591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:17:13.430 [DEBUG] [Thread-121591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:13.430 [DEBUG] [Thread-121591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:17:13.430 [DEBUG] [Thread-121591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:13.430 [DEBUG] [Thread-121591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:13.430 [DEBUG] [Thread-121591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:13.431 [DEBUG] [Thread-121591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:13.432 [DEBUG] [Thread-121591] [transport.py] [_log()] Compression: none
2025-09-28T10:17:13.432 [DEBUG] [Thread-121591] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:13.521 [DEBUG] [Thread-121591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:13.521 [DEBUG] [Thread-121591] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:13.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:17:13.522 [DEBUG] [Thread-121591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:17:13.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:13.642 [DEBUG] [Thread-121591] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:13.643 [DEBUG] [Thread-121591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:13.643 [DEBUG] [Thread-121591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:13.643 [DEBUG] [Thread-121591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:17:13.643 [DEBUG] [Thread-121591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:13.692 [INFO] [Thread-121591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:13.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:17:13.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:14.660 [DEBUG] [Thread-121591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:14.661 [DEBUG] [Thread-121591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:14.736 [DEBUG] [Thread-121591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:14.737 [DEBUG] [Thread-121591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:14.776 [DEBUG] [Thread-121591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:14.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:14.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-28T10:17:14.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-28T10:17:14.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:14.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:14.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:14.931 [DEBUG] [Thread-121591] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:19.121 [DEBUG] [Thread-121593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:24.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:17:24.902 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:17:24.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:17:25.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 16, 54), 12.76, 42.58, 0.0, 9.02, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:17:25.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:16:54
2025-09-28T10:17:25.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:17:25.729 [DEBUG] [Thread-121594] [transport.py] [_log()] starting thread (client mode): 0x2e361d50
2025-09-28T10:17:25.729 [DEBUG] [Thread-121594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:25.751 [DEBUG] [Thread-121594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:17:25.751 [INFO] [Thread-121594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:25.754 [DEBUG] [Thread-121594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] Compression: none
2025-09-28T10:17:25.755 [DEBUG] [Thread-121594] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:25.772 [DEBUG] [Thread-121594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:25.772 [DEBUG] [Thread-121594] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:25.773 [DEBUG] [Thread-121594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:17:25.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:17:25.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:25.775 [DEBUG] [Thread-121594] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:25.775 [DEBUG] [Thread-121594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:25.775 [DEBUG] [Thread-121594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:25.776 [DEBUG] [Thread-121594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:17:25.776 [DEBUG] [Thread-121594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:25.790 [INFO] [Thread-121594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:25.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:26.428 [DEBUG] [Thread-121594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:26.428 [DEBUG] [Thread-121594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:26.428 [DEBUG] [Thread-121594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:17:26.469 [DEBUG] [Thread-121594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:26.470 [DEBUG] [Thread-121594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:26.472 [DEBUG] [Thread-121594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:26.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:26.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:17:26.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:17:26.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:17:26.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:26.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:17:26.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345225 -999.00  +15.90   8.76     48   +5.00 1 1 1 1 1   888    0 12.42 48.34 ----- 7.5 8.8 273.8 13.8 24.9 -27.7 23.6 -25.7 22.0 -24.6 23.2 -27.4
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:17:26.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345225
2025-09-28T10:17:26.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:17:26.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:17:26.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:17:26.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:17:26.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:17:26.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:16:54', tmtdew=12.76, humidity=42.58, cloud=0.0, wind=9.02, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:17:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:17:26.496 [DEBUG] [Thread-121594] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:26.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-28T10:17:26.591 [DEBUG] [Thread-121597] [transport.py] [_log()] starting thread (client mode): 0x30ddd2d0
2025-09-28T10:17:26.591 [DEBUG] [Thread-121597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:26.606 [DEBUG] [Thread-121597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:17:26.606 [INFO] [Thread-121597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:17:26.614 [DEBUG] [Thread-121597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:26.614 [DEBUG] [Thread-121597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:17:26.614 [DEBUG] [Thread-121597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:26.614 [DEBUG] [Thread-121597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:26.614 [DEBUG] [Thread-121597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] Compression: none
2025-09-28T10:17:26.615 [DEBUG] [Thread-121597] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:26.670 [DEBUG] [Thread-121597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:26.671 [DEBUG] [Thread-121597] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:26.671 [DEBUG] [Thread-121597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:17:26.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:17:26.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:26.726 [DEBUG] [Thread-121597] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:26.727 [DEBUG] [Thread-121597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:26.727 [DEBUG] [Thread-121597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:26.727 [DEBUG] [Thread-121597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:17:26.727 [DEBUG] [Thread-121597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:26.746 [INFO] [Thread-121597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:26.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-28T10:17:26.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:27.524 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:27.524 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:27.815 [DEBUG] [Thread-121597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:27.815 [DEBUG] [Thread-121597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:27.863 [DEBUG] [Thread-121597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:27.863 [DEBUG] [Thread-121597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:27.871 [DEBUG] [Thread-121597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:27.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:27.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')
2025-09-28T10:17:27.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-28T10:17:27.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:27.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:27.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:27.903 [DEBUG] [Thread-121597] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:34.159 [DEBUG] [Thread-121599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:37.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:17:37.905 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:17:37.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-28T10:17:38.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 17, 26), 12.67, 42.83, 0.0, 7.5, 15.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:17:38.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:17:26
2025-09-28T10:17:38.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:17:38.746 [DEBUG] [Thread-121600] [transport.py] [_log()] starting thread (client mode): 0x30ddec80
2025-09-28T10:17:38.746 [DEBUG] [Thread-121600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:38.757 [DEBUG] [Thread-121600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:17:38.757 [INFO] [Thread-121600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:38.758 [DEBUG] [Thread-121600] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] Compression: none
2025-09-28T10:17:38.759 [DEBUG] [Thread-121600] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:38.768 [DEBUG] [Thread-121600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:38.768 [DEBUG] [Thread-121600] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:38.768 [DEBUG] [Thread-121600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:17:38.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:17:38.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:38.769 [DEBUG] [Thread-121600] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:38.769 [DEBUG] [Thread-121600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:38.770 [DEBUG] [Thread-121600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:38.770 [DEBUG] [Thread-121600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:17:38.770 [DEBUG] [Thread-121600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:38.783 [INFO] [Thread-121600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:38.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:39.438 [DEBUG] [Thread-121600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:39.438 [DEBUG] [Thread-121600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:39.438 [DEBUG] [Thread-121600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:17:39.480 [DEBUG] [Thread-121600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:39.480 [DEBUG] [Thread-121600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:39.483 [DEBUG] [Thread-121600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:39.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:39.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:17:39.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:17:39.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:17:39.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:39.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:17:39.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:39.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:17:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345225 -999.00  +15.90   8.76     48   +5.00 1 1 1 1 1   888    0 12.42 48.34 ----- 7.5 8.8 273.8 13.8 24.9 -27.7 23.6 -25.7 22.0 -24.6 23.2 -27.4
2025-09-28T10:17:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:17:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:17:39.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345225
2025-09-28T10:17:39.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:17:39.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:17:39.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:17:39.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:17:39.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:17:39.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:17:26', tmtdew=12.67, humidity=42.83, cloud=0.0, wind=7.5, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:17:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:17:39.510 [DEBUG] [Thread-121600] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:39.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-28T10:17:39.607 [DEBUG] [Thread-121603] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb50
2025-09-28T10:17:39.607 [DEBUG] [Thread-121603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:39.622 [DEBUG] [Thread-121603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:17:39.622 [INFO] [Thread-121603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:17:39.631 [DEBUG] [Thread-121603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:39.632 [DEBUG] [Thread-121603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:39.633 [DEBUG] [Thread-121603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:39.633 [DEBUG] [Thread-121603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:39.633 [DEBUG] [Thread-121603] [transport.py] [_log()] Compression: none
2025-09-28T10:17:39.633 [DEBUG] [Thread-121603] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:39.690 [DEBUG] [Thread-121603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:39.690 [DEBUG] [Thread-121603] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:39.691 [DEBUG] [Thread-121603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:17:39.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:17:39.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:39.746 [DEBUG] [Thread-121603] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:39.747 [DEBUG] [Thread-121603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:39.747 [DEBUG] [Thread-121603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:39.747 [DEBUG] [Thread-121603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:17:39.747 [DEBUG] [Thread-121603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:39.765 [INFO] [Thread-121603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:39.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-28T10:17:39.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:40.708 [DEBUG] [Thread-121603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:40.708 [DEBUG] [Thread-121603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:40.756 [DEBUG] [Thread-121603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:40.756 [DEBUG] [Thread-121603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:40.765 [DEBUG] [Thread-121603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:40.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:40.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-28T10:17:40.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-28T10:17:40.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:40.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:40.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:40.799 [DEBUG] [Thread-121603] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:49.211 [DEBUG] [Thread-121605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:17:50.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:17:50.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:17:50.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-28T10:17:51.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 17, 26), 12.67, 42.83, 0.0, 7.5, 15.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:17:51.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:17:26
2025-09-28T10:17:51.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:17:51.643 [DEBUG] [Thread-121606] [transport.py] [_log()] starting thread (client mode): 0x2b988550
2025-09-28T10:17:51.643 [DEBUG] [Thread-121606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:51.664 [DEBUG] [Thread-121606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:17:51.664 [INFO] [Thread-121606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:17:51.667 [DEBUG] [Thread-121606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:51.667 [DEBUG] [Thread-121606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:17:51.667 [DEBUG] [Thread-121606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] Compression: none
2025-09-28T10:17:51.668 [DEBUG] [Thread-121606] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:51.683 [DEBUG] [Thread-121606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:51.684 [DEBUG] [Thread-121606] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:51.684 [DEBUG] [Thread-121606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:17:51.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:17:51.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:51.686 [DEBUG] [Thread-121606] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:51.687 [DEBUG] [Thread-121606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:51.687 [DEBUG] [Thread-121606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:51.687 [DEBUG] [Thread-121606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:17:51.687 [DEBUG] [Thread-121606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:51.711 [INFO] [Thread-121606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:51.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:52.449 [DEBUG] [Thread-121606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:52.450 [DEBUG] [Thread-121606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:52.450 [DEBUG] [Thread-121606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:17:52.490 [DEBUG] [Thread-121606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:52.490 [DEBUG] [Thread-121606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:52.493 [DEBUG] [Thread-121606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:52.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:52.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:17:52.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:17:52.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:17:52.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:52.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:17:52.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:52.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:52.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:17:52.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345225 -999.00  +15.90   8.76     48   +5.00 1 1 1 1 1   888    0 12.42 48.34 ----- 7.5 8.8 273.8 13.8 24.9 -27.7 23.6 -25.7 22.0 -24.6 23.2 -27.4
2025-09-28T10:17:52.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:17:52.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:17:52.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345225
2025-09-28T10:17:52.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:17:52.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:17:52.510 [DEBUG] [Thread-121606] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:17:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:17:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:17:52.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:17:52.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:17:26', tmtdew=12.67, humidity=42.83, cloud=0.0, wind=7.5, temperature=15.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:17:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:17: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-28T10:17:52.631 [DEBUG] [Thread-121609] [transport.py] [_log()] starting thread (client mode): 0x2b988250
2025-09-28T10:17:52.631 [DEBUG] [Thread-121609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:17:52.672 [DEBUG] [Thread-121609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:17:52.672 [INFO] [Thread-121609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:17:52.707 [DEBUG] [Thread-121609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:17:52.707 [DEBUG] [Thread-121609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:17:52.707 [DEBUG] [Thread-121609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] client lang: <none>
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] server lang: <none>
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] kex follows: False
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:17:52.708 [DEBUG] [Thread-121609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:17:52.709 [DEBUG] [Thread-121609] [transport.py] [_log()] Compression: none
2025-09-28T10:17:52.709 [DEBUG] [Thread-121609] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:17:52.791 [DEBUG] [Thread-121609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:17:52.792 [DEBUG] [Thread-121609] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:17:52.792 [DEBUG] [Thread-121609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:17:52.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:17:52.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:17:52.904 [DEBUG] [Thread-121609] [transport.py] [_log()] userauth is OK
2025-09-28T10:17:52.904 [DEBUG] [Thread-121609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:17:52.904 [DEBUG] [Thread-121609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:17:52.904 [DEBUG] [Thread-121609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:17:52.904 [DEBUG] [Thread-121609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:17:52.953 [INFO] [Thread-121609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:17:52.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-28T10:17:52.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:17:53.918 [DEBUG] [Thread-121609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:17:53.918 [DEBUG] [Thread-121609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:17:53.994 [DEBUG] [Thread-121609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:17:53.994 [DEBUG] [Thread-121609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:17:54.029 [DEBUG] [Thread-121609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:17:54.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:17:54.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-28T10:17:54.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-28T10:17:54.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:17:54.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:17:54.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:17:54.167 [DEBUG] [Thread-121609] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:02.409 [DEBUG] [Thread-121611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:04.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:18:04.144 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:18:04.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-28T10:18:04.256 [DEBUG] [Thread-121612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:04.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 17, 58), 12.62, 42.86, 0.0, 8.29, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:18:04.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:17:58
2025-09-28T10:18:04.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:18:04.974 [DEBUG] [Thread-121613] [transport.py] [_log()] starting thread (client mode): 0x2e3df0d0
2025-09-28T10:18:04.974 [DEBUG] [Thread-121613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:04.989 [DEBUG] [Thread-121613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:18:04.989 [INFO] [Thread-121613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:18:04.990 [DEBUG] [Thread-121613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:04.990 [DEBUG] [Thread-121613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] Compression: none
2025-09-28T10:18:04.991 [DEBUG] [Thread-121613] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:05.000 [DEBUG] [Thread-121613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:05.000 [DEBUG] [Thread-121613] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:05.000 [DEBUG] [Thread-121613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:18:05.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:18:05.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:05.001 [DEBUG] [Thread-121613] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:05.002 [DEBUG] [Thread-121613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:05.002 [DEBUG] [Thread-121613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:05.002 [DEBUG] [Thread-121613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:18:05.002 [DEBUG] [Thread-121613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:05.013 [INFO] [Thread-121613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:05.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:05.558 [DEBUG] [Thread-121613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:05.559 [DEBUG] [Thread-121613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:05.559 [DEBUG] [Thread-121613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:18:05.599 [DEBUG] [Thread-121613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:05.599 [DEBUG] [Thread-121613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:05.602 [DEBUG] [Thread-121613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:05.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:05.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:18:05.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:18:05.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:18:05.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:05.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:18:05.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345572 -999.00  +15.80   4.82     48   +5.00 1 1 1 1 1   888    0 11.85 45.09 ----- 3.6 4.8 235.0 7.2 25.0 -27.7 23.7 -25.2 21.9 -25.0 23.2 -26.7
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:18:05.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345572
2025-09-28T10:18:05.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:18:05.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:18:05.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:18:05.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:18:05.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:18:05.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:17:58', tmtdew=12.62, humidity=42.86, cloud=0.0, wind=8.29, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:17:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:18:05.627 [DEBUG] [Thread-121613] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:05.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-28T10:18:05.720 [DEBUG] [Thread-121616] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T10:18:05.720 [DEBUG] [Thread-121616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:05.736 [DEBUG] [Thread-121616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:18:05.736 [INFO] [Thread-121616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:18:05.743 [DEBUG] [Thread-121616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] Compression: none
2025-09-28T10:18:05.744 [DEBUG] [Thread-121616] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:05.802 [DEBUG] [Thread-121616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:05.803 [DEBUG] [Thread-121616] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:05.803 [DEBUG] [Thread-121616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:18:05.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:18:05.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:05.858 [DEBUG] [Thread-121616] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:05.858 [DEBUG] [Thread-121616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:05.858 [DEBUG] [Thread-121616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:05.858 [DEBUG] [Thread-121616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:18:05.858 [DEBUG] [Thread-121616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:05.872 [INFO] [Thread-121616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:05.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-28T10:18:05.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:06.846 [DEBUG] [Thread-121616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:06.846 [DEBUG] [Thread-121616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:06.893 [DEBUG] [Thread-121616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:06.893 [DEBUG] [Thread-121616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:06.902 [DEBUG] [Thread-121616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:06.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:06.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-28T10:18:06.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-28T10:18:06.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:06.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:06.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:06.938 [DEBUG] [Thread-121616] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:16.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:18:16.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:18:16.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-28T10:18:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 17, 58), 12.62, 42.86, 0.0, 8.29, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:18:17.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:17:58
2025-09-28T10:18:17.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:18:17.784 [DEBUG] [Thread-121618] [transport.py] [_log()] starting thread (client mode): 0x2e3dcca0
2025-09-28T10:18:17.784 [DEBUG] [Thread-121618] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:17.797 [DEBUG] [Thread-121618] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:18:17.798 [INFO] [Thread-121618] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] Compression: none
2025-09-28T10:18:17.801 [DEBUG] [Thread-121618] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:17.818 [DEBUG] [Thread-121618] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:17.818 [DEBUG] [Thread-121618] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:17.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:18:17.819 [DEBUG] [Thread-121618] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:18:17.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:17.821 [DEBUG] [Thread-121618] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:17.821 [DEBUG] [Thread-121618] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:17.821 [DEBUG] [Thread-121618] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:17.821 [DEBUG] [Thread-121618] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:18:17.821 [DEBUG] [Thread-121618] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:17.832 [INFO] [Thread-121618] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:17.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:18.599 [DEBUG] [Thread-121618] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:18.599 [DEBUG] [Thread-121618] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:18.599 [DEBUG] [Thread-121618] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:18:18.640 [DEBUG] [Thread-121618] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:18.640 [DEBUG] [Thread-121618] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:18.642 [DEBUG] [Thread-121618] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:18.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:18.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:18:18.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:18:18.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:18:18.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:18.661 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:18:18.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345572 -999.00  +15.80   4.82     48   +5.00 1 1 1 1 1   888    0 11.85 45.09 ----- 3.6 4.8 235.0 7.2 25.0 -27.7 23.7 -25.2 21.9 -25.0 23.2 -26.7
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345572
2025-09-28T10:18:18.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:18:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:18:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:18:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:18:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:18:18.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:17:58', tmtdew=12.62, humidity=42.86, cloud=0.0, wind=8.29, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:17:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:18:18.662 [DEBUG] [Thread-121618] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:18.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-28T10:18:18.752 [DEBUG] [Thread-121621] [transport.py] [_log()] starting thread (client mode): 0x2b989fc0
2025-09-28T10:18:18.753 [DEBUG] [Thread-121621] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:18.768 [DEBUG] [Thread-121621] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:18:18.768 [INFO] [Thread-121621] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:18:18.775 [DEBUG] [Thread-121621] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:18.776 [DEBUG] [Thread-121621] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:18.777 [DEBUG] [Thread-121621] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:18.778 [DEBUG] [Thread-121621] [transport.py] [_log()] Compression: none
2025-09-28T10:18:18.778 [DEBUG] [Thread-121621] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:18.835 [DEBUG] [Thread-121621] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:18.835 [DEBUG] [Thread-121621] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:18.836 [DEBUG] [Thread-121621] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:18:18.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:18:18.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:18.894 [DEBUG] [Thread-121621] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:18.894 [DEBUG] [Thread-121621] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:18.894 [DEBUG] [Thread-121621] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:18.894 [DEBUG] [Thread-121621] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:18:18.894 [DEBUG] [Thread-121621] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:18.912 [INFO] [Thread-121621] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:18.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-28T10:18:18.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:19.284 [DEBUG] [Thread-121623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:19.859 [DEBUG] [Thread-121621] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:19.859 [DEBUG] [Thread-121621] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:19.907 [DEBUG] [Thread-121621] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:19.907 [DEBUG] [Thread-121621] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:19.922 [DEBUG] [Thread-121621] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:19.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:19.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-28T10:18:19.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-28T10:18:19.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:19.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:19.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:19.957 [DEBUG] [Thread-121621] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:27.670 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:27.671 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:18:29.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:18:29.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-28T10:18:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 17, 58), 12.62, 42.86, 0.0, 8.29, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:18:30.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:17:58
2025-09-28T10:18:30.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:18:30.811 [DEBUG] [Thread-121624] [transport.py] [_log()] starting thread (client mode): 0x30ddd780
2025-09-28T10:18:30.811 [DEBUG] [Thread-121624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:30.832 [DEBUG] [Thread-121624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:18:30.832 [INFO] [Thread-121624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] Compression: none
2025-09-28T10:18:30.836 [DEBUG] [Thread-121624] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:30.853 [DEBUG] [Thread-121624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:30.853 [DEBUG] [Thread-121624] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:30.853 [DEBUG] [Thread-121624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:18:30.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:18:30.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:30.854 [DEBUG] [Thread-121624] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:30.854 [DEBUG] [Thread-121624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:30.854 [DEBUG] [Thread-121624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:30.854 [DEBUG] [Thread-121624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:18:30.854 [DEBUG] [Thread-121624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:30.866 [INFO] [Thread-121624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:30.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:31.460 [DEBUG] [Thread-121624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:31.460 [DEBUG] [Thread-121624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:31.460 [DEBUG] [Thread-121624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:18:31.501 [DEBUG] [Thread-121624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:31.501 [DEBUG] [Thread-121624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:31.503 [DEBUG] [Thread-121624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:31.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:31.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:18:31.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:18:31.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:18:31.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:31.520 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:18:31.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345919 -999.00  +16.00   3.50     48   +5.20 1 1 1 1 1   888    0 11.92 48.39 ----- 3.1 3.5 284.6 5.2 25.2 -26.5 23.7 -25.0 22.1 -24.8 23.3 -26.4
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345919
2025-09-28T10:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:18:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:18:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:18:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:18:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:18:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:17:58', tmtdew=12.62, humidity=42.86, cloud=0.0, wind=8.29, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:18:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:18:31.521 [DEBUG] [Thread-121624] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:31.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-28T10:18:31.607 [DEBUG] [Thread-121627] [transport.py] [_log()] starting thread (client mode): 0x30dde380
2025-09-28T10:18:31.608 [DEBUG] [Thread-121627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:31.622 [DEBUG] [Thread-121627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:18:31.622 [INFO] [Thread-121627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:31.630 [DEBUG] [Thread-121627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:31.631 [DEBUG] [Thread-121627] [transport.py] [_log()] Compression: none
2025-09-28T10:18:31.631 [DEBUG] [Thread-121627] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:31.688 [DEBUG] [Thread-121627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:31.689 [DEBUG] [Thread-121627] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:31.689 [DEBUG] [Thread-121627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:18:31.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:18:31.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:31.745 [DEBUG] [Thread-121627] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:31.745 [DEBUG] [Thread-121627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:31.745 [DEBUG] [Thread-121627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:31.745 [DEBUG] [Thread-121627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:18:31.745 [DEBUG] [Thread-121627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:31.759 [INFO] [Thread-121627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:31.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-28T10:18:31.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:32.763 [DEBUG] [Thread-121627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:32.763 [DEBUG] [Thread-121627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:32.811 [DEBUG] [Thread-121627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:32.811 [DEBUG] [Thread-121627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:32.819 [DEBUG] [Thread-121627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:32.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:32.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-28T10:18:32.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-28T10:18:32.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:32.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:32.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:32.851 [DEBUG] [Thread-121627] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:34.327 [DEBUG] [Thread-121629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:42.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:18:42.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:18:42.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-28T10:18:43.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 18, 30), 12.77, 42.46, 0.0, 8.58, 16.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:18:43.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:18:30
2025-09-28T10:18:43.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:18:43.692 [DEBUG] [Thread-121630] [transport.py] [_log()] starting thread (client mode): 0x2b96eb60
2025-09-28T10:18:43.692 [DEBUG] [Thread-121630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:43.713 [DEBUG] [Thread-121630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:18:43.713 [INFO] [Thread-121630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:43.716 [DEBUG] [Thread-121630] [transport.py] [_log()] Compression: none
2025-09-28T10:18:43.717 [DEBUG] [Thread-121630] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:43.732 [DEBUG] [Thread-121630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:43.732 [DEBUG] [Thread-121630] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:18:43.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:18:43.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:18:43.733 [DEBUG] [Thread-121630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:43.743 [INFO] [Thread-121630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:43.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:44.516 [DEBUG] [Thread-121630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:44.516 [DEBUG] [Thread-121630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:44.516 [DEBUG] [Thread-121630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:18:44.557 [DEBUG] [Thread-121630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:44.558 [DEBUG] [Thread-121630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:44.560 [DEBUG] [Thread-121630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:44.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:44.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:18:44.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:18:44.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:18:44.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:44.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:18:44.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:44.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:44.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:18:44.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345919 -999.00  +16.00   3.50     48   +5.20 1 1 1 1 1   888    0 11.92 48.39 ----- 3.1 3.5 284.6 5.2 25.2 -26.5 23.7 -25.0 22.1 -24.8 23.3 -26.4
2025-09-28T10:18:44.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:18:44.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:18:44.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345919
2025-09-28T10:18:44.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:18:44.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:18:44.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:18:44.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:18:44.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:18:44.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:18:30', tmtdew=12.77, humidity=42.46, cloud=0.0, wind=8.58, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:18:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:18:44.584 [DEBUG] [Thread-121630] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:44.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-28T10:18:44.682 [DEBUG] [Thread-121633] [transport.py] [_log()] starting thread (client mode): 0x2b9dd960
2025-09-28T10:18:44.682 [DEBUG] [Thread-121633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:44.697 [DEBUG] [Thread-121633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:18:44.697 [INFO] [Thread-121633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:18:44.704 [DEBUG] [Thread-121633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:44.704 [DEBUG] [Thread-121633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:18:44.704 [DEBUG] [Thread-121633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:44.704 [DEBUG] [Thread-121633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] Compression: none
2025-09-28T10:18:44.705 [DEBUG] [Thread-121633] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:44.762 [DEBUG] [Thread-121633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:44.762 [DEBUG] [Thread-121633] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:44.763 [DEBUG] [Thread-121633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:18:44.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:18:44.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:44.818 [DEBUG] [Thread-121633] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:44.818 [DEBUG] [Thread-121633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:44.818 [DEBUG] [Thread-121633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:44.818 [DEBUG] [Thread-121633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:18:44.818 [DEBUG] [Thread-121633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:44.836 [INFO] [Thread-121633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:44.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-28T10:18:44.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:45.886 [DEBUG] [Thread-121633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:45.886 [DEBUG] [Thread-121633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:45.934 [DEBUG] [Thread-121633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:45.935 [DEBUG] [Thread-121633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:45.943 [DEBUG] [Thread-121633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:45.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:45.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-28T10:18:45.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-28T10:18:45.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:45.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:45.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:45.978 [DEBUG] [Thread-121633] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:49.356 [DEBUG] [Thread-121635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:18:55.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:18:55.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:18:55.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-28T10:18:56.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 18, 30), 12.77, 42.46, 0.0, 8.58, 16.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:18:56.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:18:30
2025-09-28T10:18:56.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:18:56.815 [DEBUG] [Thread-121636] [transport.py] [_log()] starting thread (client mode): 0x2b9dda80
2025-09-28T10:18:56.815 [DEBUG] [Thread-121636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:56.836 [DEBUG] [Thread-121636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:18:56.836 [INFO] [Thread-121636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:18:56.838 [DEBUG] [Thread-121636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] Compression: none
2025-09-28T10:18:56.839 [DEBUG] [Thread-121636] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:56.856 [DEBUG] [Thread-121636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:56.857 [DEBUG] [Thread-121636] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:56.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:18:56.858 [DEBUG] [Thread-121636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:18:56.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:56.860 [DEBUG] [Thread-121636] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:56.860 [DEBUG] [Thread-121636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:56.860 [DEBUG] [Thread-121636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:56.860 [DEBUG] [Thread-121636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:18:56.860 [DEBUG] [Thread-121636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:56.884 [INFO] [Thread-121636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:56.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:57.621 [DEBUG] [Thread-121636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:57.622 [DEBUG] [Thread-121636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:57.622 [DEBUG] [Thread-121636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:18:57.662 [DEBUG] [Thread-121636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:57.662 [DEBUG] [Thread-121636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:57.665 [DEBUG] [Thread-121636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:57.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:57.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:18:57.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:18:57.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:18:57.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:57.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:18:57.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.345919 -999.00  +16.00   3.50     48   +5.20 1 1 1 1 1   888    0 11.92 48.39 ----- 3.1 3.5 284.6 5.2 25.2 -26.5 23.7 -25.0 22.1 -24.8 23.3 -26.4
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:18:57.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.345919
2025-09-28T10:18:57.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:18:57.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:18:57.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:18:57.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:18:57.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:18:57.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:18:30', tmtdew=12.77, humidity=42.46, cloud=0.0, wind=8.58, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:18:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:18:57.685 [DEBUG] [Thread-121636] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:18:57.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-28T10:18:57.770 [DEBUG] [Thread-121639] [transport.py] [_log()] starting thread (client mode): 0x30ddfac0
2025-09-28T10:18:57.770 [DEBUG] [Thread-121639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:18:57.785 [DEBUG] [Thread-121639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:18:57.785 [INFO] [Thread-121639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:18:57.792 [DEBUG] [Thread-121639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] client lang: <none>
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] server lang: <none>
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] kex follows: False
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] Compression: none
2025-09-28T10:18:57.793 [DEBUG] [Thread-121639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:18:57.849 [DEBUG] [Thread-121639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:18:57.849 [DEBUG] [Thread-121639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:18:57.850 [DEBUG] [Thread-121639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:18:57.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:18:57.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:18:57.905 [DEBUG] [Thread-121639] [transport.py] [_log()] userauth is OK
2025-09-28T10:18:57.905 [DEBUG] [Thread-121639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:18:57.905 [DEBUG] [Thread-121639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:18:57.905 [DEBUG] [Thread-121639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:18:57.906 [DEBUG] [Thread-121639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:18:57.924 [INFO] [Thread-121639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:18:57.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-28T10:18:57.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:18:58.913 [DEBUG] [Thread-121639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:18:58.914 [DEBUG] [Thread-121639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:18:58.961 [DEBUG] [Thread-121639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:18:58.961 [DEBUG] [Thread-121639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:18:58.970 [DEBUG] [Thread-121639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:18:58.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:18:58.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-28T10:18:58.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-28T10:18:58.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:18:58.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:18:58.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:18:59.006 [DEBUG] [Thread-121639] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:02.461 [DEBUG] [Thread-121641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:04.397 [DEBUG] [Thread-121642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:09.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:19:09.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:19:09.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-28T10:19:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 19, 2), 12.71, 42.63, 0.0, 9.78, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:19:09.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:19:02
2025-09-28T10:19:09.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:19:09.873 [DEBUG] [Thread-121643] [transport.py] [_log()] starting thread (client mode): 0x30ddec50
2025-09-28T10:19:09.873 [DEBUG] [Thread-121643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:09.893 [DEBUG] [Thread-121643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:19:09.893 [INFO] [Thread-121643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] Compression: none
2025-09-28T10:19:09.896 [DEBUG] [Thread-121643] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:09.912 [DEBUG] [Thread-121643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:09.912 [DEBUG] [Thread-121643] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:09.912 [DEBUG] [Thread-121643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:19:09.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:19:09.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:09.913 [DEBUG] [Thread-121643] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:09.913 [DEBUG] [Thread-121643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:09.913 [DEBUG] [Thread-121643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:09.913 [DEBUG] [Thread-121643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:19:09.913 [DEBUG] [Thread-121643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:09.922 [INFO] [Thread-121643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:09.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:10.541 [DEBUG] [Thread-121643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:10.541 [DEBUG] [Thread-121643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:10.541 [DEBUG] [Thread-121643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:19:10.582 [DEBUG] [Thread-121643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:10.582 [DEBUG] [Thread-121643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:10.585 [DEBUG] [Thread-121643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:10.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:10.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:19:10.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:19:10.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:19:10.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:10.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:19:10.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346267 -999.00  +16.20   4.80     48   +5.30 1 1 1 1 1   888    0 12.20 50.39 ----- 3.8 4.8 242.4 7.0 25.3 -25.7 23.9 -25.2 22.2 -24.7 23.5 -25.2
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346267
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:19:10.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:19:02', tmtdew=12.71, humidity=42.63, cloud=0.0, wind=9.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:18:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:19:10.603 [DEBUG] [Thread-121643] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:10.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:19:10.724 [DEBUG] [Thread-121646] [transport.py] [_log()] starting thread (client mode): 0x30dde260
2025-09-28T10:19:10.724 [DEBUG] [Thread-121646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:10.775 [DEBUG] [Thread-121646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:19:10.776 [INFO] [Thread-121646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:10.817 [DEBUG] [Thread-121646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] Compression: none
2025-09-28T10:19:10.818 [DEBUG] [Thread-121646] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:10.908 [DEBUG] [Thread-121646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:10.908 [DEBUG] [Thread-121646] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:10.908 [DEBUG] [Thread-121646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:19:10.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:19:10.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:11.034 [DEBUG] [Thread-121646] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:11.034 [DEBUG] [Thread-121646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:11.034 [DEBUG] [Thread-121646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:11.034 [DEBUG] [Thread-121646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:19:11.034 [DEBUG] [Thread-121646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:11.084 [INFO] [Thread-121646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19: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-28T10:19:11.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:12.086 [DEBUG] [Thread-121646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:12.086 [DEBUG] [Thread-121646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:12.170 [DEBUG] [Thread-121646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:12.170 [DEBUG] [Thread-121646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:12.214 [DEBUG] [Thread-121646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:12.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:12.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-28T10:19:12.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-28T10:19:12.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:12.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:12.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:12.386 [DEBUG] [Thread-121646] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:19.423 [DEBUG] [Thread-121648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:22.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:19:22.354 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:19:22.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-28T10:19:22.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 19, 2), 12.71, 42.63, 0.0, 9.78, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:19:22.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:19:02
2025-09-28T10:19:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:19:23.188 [DEBUG] [Thread-121649] [transport.py] [_log()] starting thread (client mode): 0x2b989870
2025-09-28T10:19:23.188 [DEBUG] [Thread-121649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:23.210 [DEBUG] [Thread-121649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:19:23.210 [INFO] [Thread-121649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:19:23.213 [DEBUG] [Thread-121649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:23.213 [DEBUG] [Thread-121649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:23.214 [DEBUG] [Thread-121649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:23.215 [DEBUG] [Thread-121649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:23.215 [DEBUG] [Thread-121649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:23.215 [DEBUG] [Thread-121649] [transport.py] [_log()] Compression: none
2025-09-28T10:19:23.215 [DEBUG] [Thread-121649] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:23.235 [DEBUG] [Thread-121649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:23.235 [DEBUG] [Thread-121649] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:23.236 [DEBUG] [Thread-121649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:19:23.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:19:23.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:23.238 [DEBUG] [Thread-121649] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:23.238 [DEBUG] [Thread-121649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:23.238 [DEBUG] [Thread-121649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:23.238 [DEBUG] [Thread-121649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:19:23.238 [DEBUG] [Thread-121649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:23.273 [INFO] [Thread-121649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:23.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:24.028 [DEBUG] [Thread-121649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:24.028 [DEBUG] [Thread-121649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:24.028 [DEBUG] [Thread-121649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:19:24.069 [DEBUG] [Thread-121649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:24.069 [DEBUG] [Thread-121649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:24.071 [DEBUG] [Thread-121649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:24.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:24.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:19:24.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:19:24.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:19:24.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:24.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:19:24.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:24.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:19:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346267 -999.00  +16.20   4.80     48   +5.30 1 1 1 1 1   888    0 12.20 50.39 ----- 3.8 4.8 242.4 7.0 25.3 -25.7 23.9 -25.2 22.2 -24.7 23.5 -25.2
2025-09-28T10:19:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:19:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:19:24.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346267
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:19:24.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:19:02', tmtdew=12.71, humidity=42.63, cloud=0.0, wind=9.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:18:37.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:19:24.091 [DEBUG] [Thread-121649] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:24.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-28T10:19:24.185 [DEBUG] [Thread-121652] [transport.py] [_log()] starting thread (client mode): 0x2b9def20
2025-09-28T10:19:24.185 [DEBUG] [Thread-121652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:24.202 [DEBUG] [Thread-121652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:19:24.202 [INFO] [Thread-121652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:19:24.209 [DEBUG] [Thread-121652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:24.209 [DEBUG] [Thread-121652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:19:24.209 [DEBUG] [Thread-121652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] Compression: none
2025-09-28T10:19:24.210 [DEBUG] [Thread-121652] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:24.271 [DEBUG] [Thread-121652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:24.271 [DEBUG] [Thread-121652] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:24.272 [DEBUG] [Thread-121652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:19:24.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:19:24.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:24.330 [DEBUG] [Thread-121652] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:24.330 [DEBUG] [Thread-121652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:24.330 [DEBUG] [Thread-121652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:24.331 [DEBUG] [Thread-121652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:19:24.331 [DEBUG] [Thread-121652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:24.350 [INFO] [Thread-121652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:24.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-28T10:19:24.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:25.362 [DEBUG] [Thread-121652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:25.362 [DEBUG] [Thread-121652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:25.410 [DEBUG] [Thread-121652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:25.410 [DEBUG] [Thread-121652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:25.419 [DEBUG] [Thread-121652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:25.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:25.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-28T10:19:25.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-28T10:19:25.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:25.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:25.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:25.454 [DEBUG] [Thread-121652] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:27.812 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:27.813 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:34.470 [DEBUG] [Thread-121654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:35.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:19:35.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:19:35.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-28T10:19:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 19, 2), 12.71, 42.63, 0.0, 9.78, 15.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:19:36.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:19:02
2025-09-28T10:19:36.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:19:36.334 [DEBUG] [Thread-121655] [transport.py] [_log()] starting thread (client mode): 0x2b9dde10
2025-09-28T10:19:36.335 [DEBUG] [Thread-121655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:36.354 [DEBUG] [Thread-121655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:19:36.354 [INFO] [Thread-121655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:19:36.355 [DEBUG] [Thread-121655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] Compression: none
2025-09-28T10:19:36.356 [DEBUG] [Thread-121655] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:36.369 [DEBUG] [Thread-121655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:36.369 [DEBUG] [Thread-121655] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:19:36.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:19:36.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:19:36.370 [DEBUG] [Thread-121655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:36.387 [INFO] [Thread-121655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:36.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:36.929 [DEBUG] [Thread-121655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:36.929 [DEBUG] [Thread-121655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:36.930 [DEBUG] [Thread-121655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:19:36.970 [DEBUG] [Thread-121655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:36.971 [DEBUG] [Thread-121655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:36.973 [DEBUG] [Thread-121655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:36.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:36.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:19:36.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:19:36.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:19:36.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:36.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:19:36.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:36.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346614 -999.00  +16.50   5.96     47   +5.30 1 1 1 1 1   888    0 12.37 49.33 ----- 5.9 6.0 177.6 6.7 25.5 -25.8 24.0 -25.0 22.4 -24.8 23.7 -24.8
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346614
2025-09-28T10:19:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:19:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:19:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:19:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:19:36.993 [DEBUG] [Thread-121655] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:19:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:19:02', tmtdew=12.71, humidity=42.63, cloud=0.0, wind=9.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:19:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:19:37.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-28T10:19:37.121 [DEBUG] [Thread-121658] [transport.py] [_log()] starting thread (client mode): 0x2b9dc400
2025-09-28T10:19:37.121 [DEBUG] [Thread-121658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:37.167 [DEBUG] [Thread-121658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:19:37.167 [INFO] [Thread-121658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:37.205 [DEBUG] [Thread-121658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:37.206 [DEBUG] [Thread-121658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:37.206 [DEBUG] [Thread-121658] [transport.py] [_log()] Compression: none
2025-09-28T10:19:37.206 [DEBUG] [Thread-121658] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:37.292 [DEBUG] [Thread-121658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:37.292 [DEBUG] [Thread-121658] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:37.293 [DEBUG] [Thread-121658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:19:37.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:19:37.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:37.410 [DEBUG] [Thread-121658] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:37.410 [DEBUG] [Thread-121658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:37.410 [DEBUG] [Thread-121658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:37.410 [DEBUG] [Thread-121658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:19:37.410 [DEBUG] [Thread-121658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:37.460 [INFO] [Thread-121658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19: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-28T10:19:37.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:38.424 [DEBUG] [Thread-121658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:38.424 [DEBUG] [Thread-121658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:38.503 [DEBUG] [Thread-121658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:38.503 [DEBUG] [Thread-121658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:38.546 [DEBUG] [Thread-121658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:38.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:38.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-28T10:19:38.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-28T10:19:38.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:38.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:38.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:38.705 [DEBUG] [Thread-121658] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:48.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:19:48.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:19:48.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-28T10:19:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 19, 34), 13.06, 41.48, 0.0, 9.37, 16.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:19:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:19:34
2025-09-28T10:19:49.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:19:49.496 [DEBUG] [Thread-121660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:19:49.517 [DEBUG] [Thread-121661] [transport.py] [_log()] starting thread (client mode): 0x2e3dda50
2025-09-28T10:19:49.517 [DEBUG] [Thread-121661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:49.538 [DEBUG] [Thread-121661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:19:49.538 [INFO] [Thread-121661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:19:49.539 [DEBUG] [Thread-121661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:49.539 [DEBUG] [Thread-121661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] Compression: none
2025-09-28T10:19:49.540 [DEBUG] [Thread-121661] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:49.549 [DEBUG] [Thread-121661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:49.550 [DEBUG] [Thread-121661] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:49.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:19:49.550 [DEBUG] [Thread-121661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:19:49.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:49.551 [DEBUG] [Thread-121661] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:49.551 [DEBUG] [Thread-121661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:49.552 [DEBUG] [Thread-121661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:49.552 [DEBUG] [Thread-121661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:19:49.552 [DEBUG] [Thread-121661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:49.570 [INFO] [Thread-121661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:49.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:50.270 [DEBUG] [Thread-121661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:50.271 [DEBUG] [Thread-121661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:50.271 [DEBUG] [Thread-121661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:19:50.311 [DEBUG] [Thread-121661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:50.312 [DEBUG] [Thread-121661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:50.315 [DEBUG] [Thread-121661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:50.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:50.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:19:50.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:19:50.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:19:50.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:50.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:19:50.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:50.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:50.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:19:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346614 -999.00  +16.50   5.96     47   +5.30 1 1 1 1 1   888    0 12.37 49.33 ----- 5.9 6.0 177.6 6.7 25.5 -25.8 24.0 -25.0 22.4 -24.8 23.7 -24.8
2025-09-28T10:19:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:19:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:19:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346614
2025-09-28T10:19:50.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:19:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:19:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:19:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:19:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:19:50.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:19:34', tmtdew=13.06, humidity=41.48, cloud=0.0, wind=9.37, temperature=16.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:19:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:19:50.344 [DEBUG] [Thread-121661] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:19:50.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-28T10:19:50.464 [DEBUG] [Thread-121664] [transport.py] [_log()] starting thread (client mode): 0x2b9dd840
2025-09-28T10:19:50.465 [DEBUG] [Thread-121664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:19:50.509 [DEBUG] [Thread-121664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:19:50.509 [INFO] [Thread-121664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:19:50.542 [DEBUG] [Thread-121664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:19:50.542 [DEBUG] [Thread-121664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] client lang: <none>
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] server lang: <none>
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] kex follows: False
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:19:50.543 [DEBUG] [Thread-121664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:19:50.544 [DEBUG] [Thread-121664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:19:50.544 [DEBUG] [Thread-121664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:19:50.544 [DEBUG] [Thread-121664] [transport.py] [_log()] Compression: none
2025-09-28T10:19:50.544 [DEBUG] [Thread-121664] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:19:50.612 [DEBUG] [Thread-121664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:19:50.613 [DEBUG] [Thread-121664] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:19:50.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:19:50.614 [DEBUG] [Thread-121664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:19:50.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:19:50.718 [DEBUG] [Thread-121664] [transport.py] [_log()] userauth is OK
2025-09-28T10:19:50.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:19:50.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:19:50.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:19:50.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:19:50.767 [INFO] [Thread-121664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:19:50.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-28T10:19:50.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:19:51.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:19:51.718 [DEBUG] [Thread-121664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:19:51.791 [DEBUG] [Thread-121664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:19:51.792 [DEBUG] [Thread-121664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:19:51.826 [DEBUG] [Thread-121664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:19:51.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:19:51.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-28T10:19: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-28T10:19:51.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:19:51.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:19:51.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:19:51.967 [DEBUG] [Thread-121664] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:20:01.944 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:20:01.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-28T10:20:02.507 [DEBUG] [Thread-121666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:02.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 19, 34), 13.06, 41.48, 0.0, 9.37, 16.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:20:02.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:19:34
2025-09-28T10:20:02.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:20:02.786 [DEBUG] [Thread-121667] [transport.py] [_log()] starting thread (client mode): 0x2b96c3d0
2025-09-28T10:20:02.786 [DEBUG] [Thread-121667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:02.806 [DEBUG] [Thread-121667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:20:02.806 [INFO] [Thread-121667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:02.808 [DEBUG] [Thread-121667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:02.809 [DEBUG] [Thread-121667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:02.809 [DEBUG] [Thread-121667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:02.809 [DEBUG] [Thread-121667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:02.809 [DEBUG] [Thread-121667] [transport.py] [_log()] Compression: none
2025-09-28T10:20:02.809 [DEBUG] [Thread-121667] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:02.818 [DEBUG] [Thread-121667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:02.819 [DEBUG] [Thread-121667] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:02.819 [DEBUG] [Thread-121667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:20:02.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:20:02.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:02.823 [DEBUG] [Thread-121667] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:02.823 [DEBUG] [Thread-121667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:02.823 [DEBUG] [Thread-121667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:02.823 [DEBUG] [Thread-121667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:20:02.823 [DEBUG] [Thread-121667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:02.841 [INFO] [Thread-121667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:02.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:04.532 [DEBUG] [Thread-121669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:08.113 [DEBUG] [Thread-121667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:08.113 [DEBUG] [Thread-121667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:08.114 [DEBUG] [Thread-121667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:20:08.155 [DEBUG] [Thread-121667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:08.155 [DEBUG] [Thread-121667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:08.156 [DEBUG] [Thread-121667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:08.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:08.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:20:08.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:20:08.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:20:08.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:08.210 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:20:08.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346614 -999.00  +16.50   5.96     47   +5.30 1 1 1 1 1   888    0 12.37 49.33 ----- 5.9 6.0 177.6 6.7 25.5 -25.8 24.0 -25.0 22.4 -24.8 23.7 -24.8
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346614
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:20:08.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:19:34', tmtdew=13.06, humidity=41.48, cloud=0.0, wind=9.37, temperature=16.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:19:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:20:08.212 [DEBUG] [Thread-121667] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:08.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-28T10:20:08.298 [DEBUG] [Thread-121671] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e00
2025-09-28T10:20:08.298 [DEBUG] [Thread-121671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:08.313 [DEBUG] [Thread-121671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:20:08.313 [INFO] [Thread-121671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:08.320 [DEBUG] [Thread-121671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] Compression: none
2025-09-28T10:20:08.321 [DEBUG] [Thread-121671] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:08.380 [DEBUG] [Thread-121671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:08.380 [DEBUG] [Thread-121671] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:08.380 [DEBUG] [Thread-121671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:20:08.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:20:08.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:08.437 [DEBUG] [Thread-121671] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:08.437 [DEBUG] [Thread-121671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:08.438 [DEBUG] [Thread-121671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:08.438 [DEBUG] [Thread-121671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:20:08.438 [DEBUG] [Thread-121671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:08.456 [INFO] [Thread-121671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:08.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-28T10:20:08.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:09.426 [DEBUG] [Thread-121671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:09.427 [DEBUG] [Thread-121671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:09.475 [DEBUG] [Thread-121671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:09.475 [DEBUG] [Thread-121671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:09.484 [DEBUG] [Thread-121671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:09.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:09.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-28T10:20:09.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-28T10:20:09.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:09.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:09.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:09.518 [DEBUG] [Thread-121671] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:19.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:20:19.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:20:19.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:20:19.577 [DEBUG] [Thread-121673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:20.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 20, 6), 12.9, 41.93, 0.0, 6.23, 16.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:20:20.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:20:06
2025-09-28T10:20:20.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:20:20.359 [DEBUG] [Thread-121674] [transport.py] [_log()] starting thread (client mode): 0x2e34a410
2025-09-28T10:20:20.359 [DEBUG] [Thread-121674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:20.378 [DEBUG] [Thread-121674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:20:20.378 [INFO] [Thread-121674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:20.381 [DEBUG] [Thread-121674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] Compression: none
2025-09-28T10:20:20.382 [DEBUG] [Thread-121674] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:20.397 [DEBUG] [Thread-121674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:20.397 [DEBUG] [Thread-121674] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:20.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:20:20.398 [DEBUG] [Thread-121674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:20:20.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:20.399 [DEBUG] [Thread-121674] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:20.400 [DEBUG] [Thread-121674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:20.400 [DEBUG] [Thread-121674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:20.400 [DEBUG] [Thread-121674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:20:20.400 [DEBUG] [Thread-121674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:20.413 [INFO] [Thread-121674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:20.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:21.026 [DEBUG] [Thread-121674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:21.026 [DEBUG] [Thread-121674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:21.026 [DEBUG] [Thread-121674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:20:21.067 [DEBUG] [Thread-121674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:21.067 [DEBUG] [Thread-121674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:21.069 [DEBUG] [Thread-121674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:21.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:21.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:20:21.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:20:21.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:20:21.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:21.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:20:21.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346961 -999.00  +16.70   6.46     47   +5.40 1 1 1 1 1   888    0 12.54 53.77 ----- 10.1 6.5 255.0 9.9 25.5 -27.5 23.9 -25.1 22.5 -25.3 23.7 -26.3
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346961
2025-09-28T10:20:21.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:20:21.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:20:21.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:20:21.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:20:21.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:20:21.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:20:06', tmtdew=12.9, humidity=41.93, cloud=0.0, wind=6.23, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:19:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:20:21.089 [DEBUG] [Thread-121674] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:21.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-28T10:20:21.210 [DEBUG] [Thread-121677] [transport.py] [_log()] starting thread (client mode): 0x2e38cd00
2025-09-28T10:20:21.210 [DEBUG] [Thread-121677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:21.260 [DEBUG] [Thread-121677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:20:21.260 [INFO] [Thread-121677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:21.302 [DEBUG] [Thread-121677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] Compression: none
2025-09-28T10:20:21.303 [DEBUG] [Thread-121677] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:21.393 [DEBUG] [Thread-121677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:21.393 [DEBUG] [Thread-121677] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:21.393 [DEBUG] [Thread-121677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:20:21.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:20:21.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:21.520 [DEBUG] [Thread-121677] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:21.521 [DEBUG] [Thread-121677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:21.521 [DEBUG] [Thread-121677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:21.521 [DEBUG] [Thread-121677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:20:21.521 [DEBUG] [Thread-121677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:21.571 [INFO] [Thread-121677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:21.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-28T10:20:21.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:22.561 [DEBUG] [Thread-121677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:22.561 [DEBUG] [Thread-121677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:22.652 [DEBUG] [Thread-121677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:22.653 [DEBUG] [Thread-121677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:22.695 [DEBUG] [Thread-121677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:22.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:22.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-28T10:20:22.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-28T10:20:22.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:22.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:22.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:22.809 [DEBUG] [Thread-121677] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:27.954 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:27.955 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:32.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:20:32.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:20:32.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-28T10:20:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 20, 6), 12.9, 41.93, 0.0, 6.23, 16.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:20:33.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:20:06
2025-09-28T10:20:33.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:20:33.627 [DEBUG] [Thread-121679] [transport.py] [_log()] starting thread (client mode): 0x2b98aa40
2025-09-28T10:20:33.627 [DEBUG] [Thread-121679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:33.646 [DEBUG] [Thread-121679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:20:33.646 [INFO] [Thread-121679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:20:33.649 [DEBUG] [Thread-121679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:33.649 [DEBUG] [Thread-121679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] Compression: none
2025-09-28T10:20:33.650 [DEBUG] [Thread-121679] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:33.669 [DEBUG] [Thread-121679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:33.669 [DEBUG] [Thread-121679] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:33.670 [DEBUG] [Thread-121679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:20:33.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:20:33.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:33.672 [DEBUG] [Thread-121679] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:33.672 [DEBUG] [Thread-121679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:33.672 [DEBUG] [Thread-121679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:33.672 [DEBUG] [Thread-121679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:20:33.672 [DEBUG] [Thread-121679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:33.709 [INFO] [Thread-121679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:33.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:34.601 [DEBUG] [Thread-121681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:35.368 [DEBUG] [Thread-121679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:35.368 [DEBUG] [Thread-121679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:35.368 [DEBUG] [Thread-121679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:20:35.408 [DEBUG] [Thread-121679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:35.409 [DEBUG] [Thread-121679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:35.411 [DEBUG] [Thread-121679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:35.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:35.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:20:35.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:20:35.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:20:35.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:35.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:20:35.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.346961 -999.00  +16.70   6.46     47   +5.40 1 1 1 1 1   888    0 12.54 53.77 ----- 10.1 6.5 255.0 9.9 25.5 -27.5 23.9 -25.1 22.5 -25.3 23.7 -26.3
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:20:35.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.346961
2025-09-28T10:20:35.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:20:35.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:20:35.435 [DEBUG] [Thread-121679] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:35.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:20:35.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:20:35.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:20:35.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:20:06', tmtdew=12.9, humidity=41.93, cloud=0.0, wind=6.23, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:19:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:20:35.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-28T10:20:35.525 [DEBUG] [Thread-121683] [transport.py] [_log()] starting thread (client mode): 0x2b98ad70
2025-09-28T10:20:35.526 [DEBUG] [Thread-121683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:35.563 [DEBUG] [Thread-121683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:20:35.563 [INFO] [Thread-121683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:35.592 [DEBUG] [Thread-121683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] Compression: none
2025-09-28T10:20:35.593 [DEBUG] [Thread-121683] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:35.670 [DEBUG] [Thread-121683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:35.671 [DEBUG] [Thread-121683] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:35.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:20:35.672 [DEBUG] [Thread-121683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:20:35.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:35.771 [DEBUG] [Thread-121683] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:35.772 [DEBUG] [Thread-121683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:35.772 [DEBUG] [Thread-121683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:35.772 [DEBUG] [Thread-121683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:20:35.772 [DEBUG] [Thread-121683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:35.812 [INFO] [Thread-121683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:35.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:20:35.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:36.789 [DEBUG] [Thread-121683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:36.789 [DEBUG] [Thread-121683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:36.862 [DEBUG] [Thread-121683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:36.862 [DEBUG] [Thread-121683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:36.896 [DEBUG] [Thread-121683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:36.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:36.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-28T10:20:36.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-28T10:20:36.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:36.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:36.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:37.029 [DEBUG] [Thread-121683] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:47.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:20:47.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:20:47.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-28T10:20:47.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 20, 38), 12.69, 42.81, 0.0, 9.95, 15.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:20:47.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:20:38
2025-09-28T10:20:47.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:20:47.810 [DEBUG] [Thread-121685] [transport.py] [_log()] starting thread (client mode): 0x2b9dc460
2025-09-28T10:20:47.810 [DEBUG] [Thread-121685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:47.829 [DEBUG] [Thread-121685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:20:47.829 [INFO] [Thread-121685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:47.831 [DEBUG] [Thread-121685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:47.832 [DEBUG] [Thread-121685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:47.832 [DEBUG] [Thread-121685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:47.832 [DEBUG] [Thread-121685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:47.832 [DEBUG] [Thread-121685] [transport.py] [_log()] Compression: none
2025-09-28T10:20:47.832 [DEBUG] [Thread-121685] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:47.840 [DEBUG] [Thread-121685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:47.840 [DEBUG] [Thread-121685] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:47.841 [DEBUG] [Thread-121685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:20:47.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:20:47.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:47.842 [DEBUG] [Thread-121685] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:47.842 [DEBUG] [Thread-121685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:47.842 [DEBUG] [Thread-121685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:47.842 [DEBUG] [Thread-121685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:20:47.843 [DEBUG] [Thread-121685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:47.859 [INFO] [Thread-121685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:47.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:48.478 [DEBUG] [Thread-121685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:48.478 [DEBUG] [Thread-121685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:48.479 [DEBUG] [Thread-121685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:20:48.519 [DEBUG] [Thread-121685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:48.519 [DEBUG] [Thread-121685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:48.521 [DEBUG] [Thread-121685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:48.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:48.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:20:48.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:20:48.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:20:48.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:48.537 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:20:48.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:48.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.347655 -999.00  +16.30   6.63     47   +5.00 1 1 1 1 1   888    0 12.71 60.55 ----- 4.3 6.6 252.6 8.8 25.5 -28.0 24.1 -25.7 22.5 -25.1 23.6 -27.0
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.347655
2025-09-28T10:20:48.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:20:48.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:20:48.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:20:48.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:20:48.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:20:48.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:20:38', tmtdew=12.69, humidity=42.81, cloud=0.0, wind=9.95, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:20:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:20:48.539 [DEBUG] [Thread-121685] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:20:48.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-28T10:20:48.666 [DEBUG] [Thread-121688] [transport.py] [_log()] starting thread (client mode): 0x2e3c0d60
2025-09-28T10:20:48.667 [DEBUG] [Thread-121688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:20:48.716 [DEBUG] [Thread-121688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:20:48.717 [INFO] [Thread-121688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:20:48.759 [DEBUG] [Thread-121688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] client lang: <none>
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] server lang: <none>
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] kex follows: False
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:20:48.760 [DEBUG] [Thread-121688] [transport.py] [_log()] Compression: none
2025-09-28T10:20:48.761 [DEBUG] [Thread-121688] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:20:48.854 [DEBUG] [Thread-121688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:20:48.855 [DEBUG] [Thread-121688] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:20:48.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:20:48.856 [DEBUG] [Thread-121688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:20:48.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:20:48.985 [DEBUG] [Thread-121688] [transport.py] [_log()] userauth is OK
2025-09-28T10:20:48.985 [DEBUG] [Thread-121688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:20:48.985 [DEBUG] [Thread-121688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:20:48.985 [DEBUG] [Thread-121688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:20:48.985 [DEBUG] [Thread-121688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:20:49.041 [INFO] [Thread-121688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:20:49.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:20:49.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:20:49.642 [DEBUG] [Thread-121690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:20:49.991 [DEBUG] [Thread-121688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:20:49.992 [DEBUG] [Thread-121688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:20:50.077 [DEBUG] [Thread-121688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:20:50.077 [DEBUG] [Thread-121688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:20:50.123 [DEBUG] [Thread-121688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:20:50.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:20:50.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-28T10:20:50.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-28T10:20:50.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:20:50.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:20:50.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:20:50.306 [DEBUG] [Thread-121688] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:00.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:21:00.270 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:21:00.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-28T10:21:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 20, 38), 12.69, 42.81, 0.0, 9.95, 15.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:21:00.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:20:38
2025-09-28T10:21:00.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:21:01.120 [DEBUG] [Thread-121691] [transport.py] [_log()] starting thread (client mode): 0x2b9dc160
2025-09-28T10:21:01.120 [DEBUG] [Thread-121691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:01.141 [DEBUG] [Thread-121691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:21:01.141 [INFO] [Thread-121691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] Compression: none
2025-09-28T10:21:01.144 [DEBUG] [Thread-121691] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:01.159 [DEBUG] [Thread-121691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:01.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:21:01.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:21:01.160 [DEBUG] [Thread-121691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:01.170 [INFO] [Thread-121691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:01.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:01.734 [DEBUG] [Thread-121691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:01.734 [DEBUG] [Thread-121691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:01.735 [DEBUG] [Thread-121691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:21:01.776 [DEBUG] [Thread-121691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:01.776 [DEBUG] [Thread-121691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:01.779 [DEBUG] [Thread-121691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:01.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:01.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:21:01.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:21:01.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:21:01.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:01.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:21:01.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.347655 -999.00  +16.30   6.63     47   +5.00 1 1 1 1 1   888    0 12.71 60.55 ----- 4.3 6.6 252.6 8.8 25.5 -28.0 24.1 -25.7 22.5 -25.1 23.6 -27.0
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.347655
2025-09-28T10:21:01.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:21:01.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:21:01.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:21:01.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:21:01.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:21:01.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:20:38', tmtdew=12.69, humidity=42.81, cloud=0.0, wind=9.95, temperature=15.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:20:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:21:01.797 [DEBUG] [Thread-121691] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:01.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:21:01.922 [DEBUG] [Thread-121694] [transport.py] [_log()] starting thread (client mode): 0x2b945450
2025-09-28T10:21:01.922 [DEBUG] [Thread-121694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:01.967 [DEBUG] [Thread-121694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:21:01.967 [INFO] [Thread-121694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:02.004 [DEBUG] [Thread-121694] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] Compression: none
2025-09-28T10:21:02.005 [DEBUG] [Thread-121694] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:02.094 [DEBUG] [Thread-121694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:02.094 [DEBUG] [Thread-121694] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:02.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:21:02.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:02.095 [DEBUG] [Thread-121694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:21:02.213 [DEBUG] [Thread-121694] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:02.213 [DEBUG] [Thread-121694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:02.213 [DEBUG] [Thread-121694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:02.213 [DEBUG] [Thread-121694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:21:02.213 [DEBUG] [Thread-121694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:02.257 [INFO] [Thread-121694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:02.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-28T10:21:02.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:02.563 [DEBUG] [Thread-121696 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:03.242 [DEBUG] [Thread-121694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:03.242 [DEBUG] [Thread-121694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:03.320 [DEBUG] [Thread-121694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:03.320 [DEBUG] [Thread-121694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:03.360 [DEBUG] [Thread-121694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:03.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21: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')
2025-09-28T10:21:03.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-28T10:21:03.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:03.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:03.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:03.519 [DEBUG] [Thread-121694] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:04.678 [DEBUG] [Thread-121697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:13.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:21:13.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:21:13.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-28T10:21:14.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 21, 10), 12.69, 42.83, 0.0, 10.2, 15.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:21:14.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:21:10
2025-09-28T10:21:14.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:21:14.334 [DEBUG] [Thread-121698] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf70
2025-09-28T10:21:14.334 [DEBUG] [Thread-121698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:14.355 [DEBUG] [Thread-121698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:21:14.355 [INFO] [Thread-121698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:14.356 [DEBUG] [Thread-121698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] Compression: none
2025-09-28T10:21:14.357 [DEBUG] [Thread-121698] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:14.370 [DEBUG] [Thread-121698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:14.371 [DEBUG] [Thread-121698] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:14.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:21:14.372 [DEBUG] [Thread-121698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:21:14.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:14.374 [DEBUG] [Thread-121698] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:14.374 [DEBUG] [Thread-121698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:14.374 [DEBUG] [Thread-121698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:14.374 [DEBUG] [Thread-121698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:21:14.374 [DEBUG] [Thread-121698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:14.398 [INFO] [Thread-121698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:14.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:15.057 [DEBUG] [Thread-121698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:15.057 [DEBUG] [Thread-121698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:15.058 [DEBUG] [Thread-121698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:21:15.098 [DEBUG] [Thread-121698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:15.098 [DEBUG] [Thread-121698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:15.101 [DEBUG] [Thread-121698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:15.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:15.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:21:15.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:21:15.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:21:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:15.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:21:15.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:15.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.347655 -999.00  +16.30   6.63     47   +5.00 1 1 1 1 1   888    0 12.71 60.55 ----- 4.3 6.6 252.6 8.8 25.5 -28.0 24.1 -25.7 22.5 -25.1 23.6 -27.0
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.347655
2025-09-28T10:21:15.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:21:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:21:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:21:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:21:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:21:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:21:10', tmtdew=12.69, humidity=42.83, cloud=0.0, wind=10.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:20:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:21:15.128 [DEBUG] [Thread-121698] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:15.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-28T10:21:15.221 [DEBUG] [Thread-121701] [transport.py] [_log()] starting thread (client mode): 0x2b9cd2a0
2025-09-28T10:21:15.221 [DEBUG] [Thread-121701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:15.236 [DEBUG] [Thread-121701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:21:15.236 [INFO] [Thread-121701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:21:15.243 [DEBUG] [Thread-121701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] Compression: none
2025-09-28T10:21:15.244 [DEBUG] [Thread-121701] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:15.302 [DEBUG] [Thread-121701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:15.303 [DEBUG] [Thread-121701] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:15.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:21:15.304 [DEBUG] [Thread-121701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:21:15.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:15.361 [DEBUG] [Thread-121701] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:15.361 [DEBUG] [Thread-121701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:15.361 [DEBUG] [Thread-121701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:15.362 [DEBUG] [Thread-121701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:21:15.362 [DEBUG] [Thread-121701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:15.381 [INFO] [Thread-121701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:15.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-28T10:21:15.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:16.374 [DEBUG] [Thread-121701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:16.375 [DEBUG] [Thread-121701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:16.422 [DEBUG] [Thread-121701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:16.422 [DEBUG] [Thread-121701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:16.431 [DEBUG] [Thread-121701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:16.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:16.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-28T10:21:16.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-28T10:21:16.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:16.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:16.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:16.465 [DEBUG] [Thread-121701] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:19.707 [DEBUG] [Thread-121703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:26.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:21:26.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:21:26.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-28T10:21:27.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 21, 10), 12.69, 42.83, 0.0, 10.2, 15.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:21:27.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:21:10
2025-09-28T10:21:27.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:21:27.292 [DEBUG] [Thread-121704] [transport.py] [_log()] starting thread (client mode): 0x2e38d840
2025-09-28T10:21:27.292 [DEBUG] [Thread-121704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:27.312 [DEBUG] [Thread-121704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:21:27.312 [INFO] [Thread-121704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:27.314 [DEBUG] [Thread-121704] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] Compression: none
2025-09-28T10:21:27.315 [DEBUG] [Thread-121704] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:27.328 [DEBUG] [Thread-121704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:27.328 [DEBUG] [Thread-121704] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:27.329 [DEBUG] [Thread-121704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:21:27.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:21:27.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:27.331 [DEBUG] [Thread-121704] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:27.331 [DEBUG] [Thread-121704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:27.331 [DEBUG] [Thread-121704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:27.331 [DEBUG] [Thread-121704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:21:27.332 [DEBUG] [Thread-121704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:27.352 [INFO] [Thread-121704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:27.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:27.943 [DEBUG] [Thread-121704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:27.944 [DEBUG] [Thread-121704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:27.944 [DEBUG] [Thread-121704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:21:27.985 [DEBUG] [Thread-121704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:27.985 [DEBUG] [Thread-121704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:27.988 [DEBUG] [Thread-121704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:27.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:27.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:21:28.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:21:28.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:21:28.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:28.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:21:28.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:28.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:21:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348003 -999.00  +16.50   3.47     47   +5.40 1 1 1 1 1   888    0 12.64 56.06 ----- 2.7 3.5 126.3 4.5 25.6 -26.5 24.2 -24.7 22.5 -24.6 23.8 -25.3
2025-09-28T10:21:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:21:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:21:28.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348003
2025-09-28T10:21:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:21:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:21:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:21:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:21:28.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:21:28.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:21:10', tmtdew=12.69, humidity=42.83, cloud=0.0, wind=10.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:21:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:21:28.013 [DEBUG] [Thread-121704] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:28.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-28T10:21:28.098 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:28.098 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:28.110 [DEBUG] [Thread-121707] [transport.py] [_log()] starting thread (client mode): 0x2b9cfc40
2025-09-28T10:21:28.110 [DEBUG] [Thread-121707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:28.125 [DEBUG] [Thread-121707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:21:28.125 [INFO] [Thread-121707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:21:28.133 [DEBUG] [Thread-121707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:28.133 [DEBUG] [Thread-121707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:21:28.133 [DEBUG] [Thread-121707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:28.134 [DEBUG] [Thread-121707] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:28.135 [DEBUG] [Thread-121707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:28.136 [DEBUG] [Thread-121707] [transport.py] [_log()] Compression: none
2025-09-28T10:21:28.136 [DEBUG] [Thread-121707] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:28.192 [DEBUG] [Thread-121707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:28.193 [DEBUG] [Thread-121707] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:28.194 [DEBUG] [Thread-121707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:21:28.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:21:28.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:28.251 [DEBUG] [Thread-121707] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:28.252 [DEBUG] [Thread-121707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:28.252 [DEBUG] [Thread-121707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:28.252 [DEBUG] [Thread-121707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:21:28.252 [DEBUG] [Thread-121707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:28.272 [INFO] [Thread-121707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:28.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-28T10:21:28.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:29.341 [DEBUG] [Thread-121707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:29.341 [DEBUG] [Thread-121707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:29.390 [DEBUG] [Thread-121707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:29.390 [DEBUG] [Thread-121707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:29.401 [DEBUG] [Thread-121707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:29.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:29.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-28T10:21:29.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-28T10:21:29.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:29.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:29.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:29.442 [DEBUG] [Thread-121707] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:34.760 [DEBUG] [Thread-121709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:39.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:21:39.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:21:39.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-28T10:21:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 21, 10), 12.69, 42.83, 0.0, 10.2, 15.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:21:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:21:10
2025-09-28T10:21:40.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:21:40.280 [DEBUG] [Thread-121710] [transport.py] [_log()] starting thread (client mode): 0x2e3f8880
2025-09-28T10:21:40.280 [DEBUG] [Thread-121710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:40.300 [DEBUG] [Thread-121710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:21:40.300 [INFO] [Thread-121710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] Compression: none
2025-09-28T10:21:40.303 [DEBUG] [Thread-121710] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:40.315 [DEBUG] [Thread-121710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:40.316 [DEBUG] [Thread-121710] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:40.316 [DEBUG] [Thread-121710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:21:40.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:21:40.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:40.320 [DEBUG] [Thread-121710] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:40.320 [DEBUG] [Thread-121710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:40.320 [DEBUG] [Thread-121710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:40.320 [DEBUG] [Thread-121710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:21:40.320 [DEBUG] [Thread-121710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:40.338 [INFO] [Thread-121710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:40.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:40.888 [DEBUG] [Thread-121710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:40.888 [DEBUG] [Thread-121710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:40.889 [DEBUG] [Thread-121710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:21:40.929 [DEBUG] [Thread-121710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:40.929 [DEBUG] [Thread-121710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:40.932 [DEBUG] [Thread-121710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:40.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:40.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:21:40.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:21:40.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:21:40.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:40.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:21:40.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:40.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:40.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:21:40.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348003 -999.00  +16.50   3.47     47   +5.40 1 1 1 1 1   888    0 12.64 56.06 ----- 2.7 3.5 126.3 4.5 25.6 -26.5 24.2 -24.7 22.5 -24.6 23.8 -25.3
2025-09-28T10:21:40.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:21:40.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:21:40.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348003
2025-09-28T10:21:40.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:21:40.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:21:40.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:21:40.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:21:40.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:21:40.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:21:10', tmtdew=12.69, humidity=42.83, cloud=0.0, wind=10.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:21:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:21:40.967 [DEBUG] [Thread-121710] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:41.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-28T10:21:41.065 [DEBUG] [Thread-121713] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-28T10:21:41.065 [DEBUG] [Thread-121713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:41.080 [DEBUG] [Thread-121713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:21:41.080 [INFO] [Thread-121713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:41.088 [DEBUG] [Thread-121713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:41.089 [DEBUG] [Thread-121713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:41.089 [DEBUG] [Thread-121713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:41.089 [DEBUG] [Thread-121713] [transport.py] [_log()] Compression: none
2025-09-28T10:21:41.089 [DEBUG] [Thread-121713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:41.147 [DEBUG] [Thread-121713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:41.148 [DEBUG] [Thread-121713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:41.148 [DEBUG] [Thread-121713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:21:41.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:21:41.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:41.203 [DEBUG] [Thread-121713] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:41.203 [DEBUG] [Thread-121713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:41.203 [DEBUG] [Thread-121713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:41.204 [DEBUG] [Thread-121713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:21:41.204 [DEBUG] [Thread-121713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:41.223 [INFO] [Thread-121713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:41.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-28T10:21:41.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:42.206 [DEBUG] [Thread-121713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:42.206 [DEBUG] [Thread-121713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:42.254 [DEBUG] [Thread-121713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:42.255 [DEBUG] [Thread-121713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:42.263 [DEBUG] [Thread-121713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:42.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:42.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-28T10:21:42.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-28T10:21:42.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:42.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:42.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:42.297 [DEBUG] [Thread-121713] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:49.796 [DEBUG] [Thread-121715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:21:52.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:21:52.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:21: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-28T10:21:52.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 21, 42), 12.6, 42.83, 0.0, 11.22, 16.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:21:52.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:21:42
2025-09-28T10:21:52.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:21:53.128 [DEBUG] [Thread-121716] [transport.py] [_log()] starting thread (client mode): 0x2e3fbc40
2025-09-28T10:21:53.128 [DEBUG] [Thread-121716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:53.148 [DEBUG] [Thread-121716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:21:53.148 [INFO] [Thread-121716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:53.149 [DEBUG] [Thread-121716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] Compression: none
2025-09-28T10:21:53.150 [DEBUG] [Thread-121716] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:53.164 [DEBUG] [Thread-121716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:53.164 [DEBUG] [Thread-121716] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:53.165 [DEBUG] [Thread-121716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:21:53.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:21:53.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:53.167 [DEBUG] [Thread-121716] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:53.167 [DEBUG] [Thread-121716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:53.167 [DEBUG] [Thread-121716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:53.167 [DEBUG] [Thread-121716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:21:53.167 [DEBUG] [Thread-121716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:53.191 [INFO] [Thread-121716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:53.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:53.923 [DEBUG] [Thread-121716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:53.924 [DEBUG] [Thread-121716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:53.924 [DEBUG] [Thread-121716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:21:53.965 [DEBUG] [Thread-121716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:53.965 [DEBUG] [Thread-121716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:53.968 [DEBUG] [Thread-121716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:53.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:53.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:21:53.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:21:53.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:21:53.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:53.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:21:53.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:53.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:53.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:21:53.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348003 -999.00  +16.50   3.47     47   +5.40 1 1 1 1 1   888    0 12.64 56.06 ----- 2.7 3.5 126.3 4.5 25.6 -26.5 24.2 -24.7 22.5 -24.6 23.8 -25.3
2025-09-28T10:21:53.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:21:53.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:21:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348003
2025-09-28T10:21:53.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:21:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:21:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:21:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:21:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:21:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:21:42', tmtdew=12.6, humidity=42.83, cloud=0.0, wind=11.22, temperature=16.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:21:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:21:53.998 [DEBUG] [Thread-121716] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:21:54.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-28T10:21:54.092 [DEBUG] [Thread-121719] [transport.py] [_log()] starting thread (client mode): 0x2e3fbe80
2025-09-28T10:21:54.092 [DEBUG] [Thread-121719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:21:54.107 [DEBUG] [Thread-121719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:21:54.107 [INFO] [Thread-121719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] client lang: <none>
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] server lang: <none>
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] kex follows: False
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] Compression: none
2025-09-28T10:21:54.115 [DEBUG] [Thread-121719] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:21:54.174 [DEBUG] [Thread-121719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:21:54.175 [DEBUG] [Thread-121719] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:21:54.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:21:54.175 [DEBUG] [Thread-121719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:21:54.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:21:54.231 [DEBUG] [Thread-121719] [transport.py] [_log()] userauth is OK
2025-09-28T10:21:54.231 [DEBUG] [Thread-121719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:21:54.231 [DEBUG] [Thread-121719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:21:54.231 [DEBUG] [Thread-121719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:21:54.231 [DEBUG] [Thread-121719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:21:54.249 [INFO] [Thread-121719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:21:54.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-28T10:21:54.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:21:55.220 [DEBUG] [Thread-121719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:21:55.221 [DEBUG] [Thread-121719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:21:55.268 [DEBUG] [Thread-121719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:21:55.268 [DEBUG] [Thread-121719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:21:55.277 [DEBUG] [Thread-121719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:21:55.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:21:55.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-28T10:21:55.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-28T10:21:55.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:21:55.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:21:55.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:21:55.311 [DEBUG] [Thread-121719] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:02.620 [DEBUG] [Thread-121721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:04.826 [DEBUG] [Thread-121722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:05.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:22:05.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:22:05.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-28T10:22:05.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 21, 42), 12.6, 42.83, 0.0, 11.22, 16.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:22:05.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:21:42
2025-09-28T10:22:05.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:22:06.125 [DEBUG] [Thread-121723] [transport.py] [_log()] starting thread (client mode): 0x2e3fb9a0
2025-09-28T10:22:06.125 [DEBUG] [Thread-121723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:06.139 [DEBUG] [Thread-121723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:22:06.139 [INFO] [Thread-121723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] Compression: none
2025-09-28T10:22:06.142 [DEBUG] [Thread-121723] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:06.159 [DEBUG] [Thread-121723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:06.159 [DEBUG] [Thread-121723] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:06.160 [DEBUG] [Thread-121723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:22:06.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:22:06.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:06.162 [DEBUG] [Thread-121723] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:06.162 [DEBUG] [Thread-121723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:06.162 [DEBUG] [Thread-121723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:06.162 [DEBUG] [Thread-121723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:22:06.162 [DEBUG] [Thread-121723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:06.179 [INFO] [Thread-121723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:06.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:06.791 [DEBUG] [Thread-121723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:06.792 [DEBUG] [Thread-121723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:06.792 [DEBUG] [Thread-121723] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:22:06.832 [DEBUG] [Thread-121723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:06.832 [DEBUG] [Thread-121723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:06.836 [DEBUG] [Thread-121723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:06.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:06.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:22:06.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:22:06.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:22:06.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:06.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:22:06.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:06.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:22:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348350 -999.00  +17.00   7.96     47   +5.60 1 1 1 1 1   888    0 12.74 61.65 ----- 5.7 8.0 186.6 12.1 25.9 -27.1 24.0 -30.7 22.6 -25.7 23.9 -26.8
2025-09-28T10:22:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:22:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:22:06.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348350
2025-09-28T10:22:06.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:22:06.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:22:06.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:22:06.853 [DEBUG] [Thread-121723] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:06.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:22:06.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:22:06.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:21:42', tmtdew=12.6, humidity=42.83, cloud=0.0, wind=11.22, temperature=16.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:21:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:22:06.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-28T10:22:06.969 [DEBUG] [Thread-121726] [transport.py] [_log()] starting thread (client mode): 0x2e3fb640
2025-09-28T10:22:06.970 [DEBUG] [Thread-121726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:07.003 [DEBUG] [Thread-121726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:22:07.004 [INFO] [Thread-121726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:22:07.031 [DEBUG] [Thread-121726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:07.031 [DEBUG] [Thread-121726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:22:07.031 [DEBUG] [Thread-121726] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] Compression: none
2025-09-28T10:22:07.032 [DEBUG] [Thread-121726] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:07.110 [DEBUG] [Thread-121726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:07.111 [DEBUG] [Thread-121726] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:07.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:22:07.112 [DEBUG] [Thread-121726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:22:07.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:07.207 [DEBUG] [Thread-121726] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:07.207 [DEBUG] [Thread-121726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:07.207 [DEBUG] [Thread-121726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:07.207 [DEBUG] [Thread-121726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:22:07.207 [DEBUG] [Thread-121726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:07.248 [INFO] [Thread-121726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:07.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-28T10:22:07.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:08.227 [DEBUG] [Thread-121726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:08.227 [DEBUG] [Thread-121726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:08.296 [DEBUG] [Thread-121726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:08.296 [DEBUG] [Thread-121726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:08.326 [DEBUG] [Thread-121726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:08.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:08.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-28T10:22:08.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-28T10:22:08.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:08.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:08.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:08.447 [DEBUG] [Thread-121726] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:18.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:22:18.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:22:18.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-28T10:22:18.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 22, 13), 12.76, 42.4, 0.0, 11.06, 16.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:22:18.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:22:13
2025-09-28T10:22:19.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:22:19.259 [DEBUG] [Thread-121728] [transport.py] [_log()] starting thread (client mode): 0x2e3c3bb0
2025-09-28T10:22:19.259 [DEBUG] [Thread-121728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:19.279 [DEBUG] [Thread-121728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:22:19.279 [INFO] [Thread-121728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:22:19.280 [DEBUG] [Thread-121728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:19.280 [DEBUG] [Thread-121728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] Compression: none
2025-09-28T10:22:19.281 [DEBUG] [Thread-121728] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:19.288 [DEBUG] [Thread-121728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:19.288 [DEBUG] [Thread-121728] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:19.288 [DEBUG] [Thread-121728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:22:19.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:22:19.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:19.289 [DEBUG] [Thread-121728] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:19.289 [DEBUG] [Thread-121728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:19.289 [DEBUG] [Thread-121728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:19.289 [DEBUG] [Thread-121728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:22:19.289 [DEBUG] [Thread-121728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:19.299 [INFO] [Thread-121728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:19.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:19.863 [DEBUG] [Thread-121730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:20.063 [DEBUG] [Thread-121728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:20.063 [DEBUG] [Thread-121728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:20.063 [DEBUG] [Thread-121728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:22:20.103 [DEBUG] [Thread-121728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:20.103 [DEBUG] [Thread-121728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:20.106 [DEBUG] [Thread-121728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:20.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:20.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:22:20.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:22:20.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:22:20.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:20.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:22:20.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:20.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348350 -999.00  +17.00   7.96     47   +5.60 1 1 1 1 1   888    0 12.74 61.65 ----- 5.7 8.0 186.6 12.1 25.9 -27.1 24.0 -30.7 22.6 -25.7 23.9 -26.8
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348350
2025-09-28T10:22:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:22:20.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:22:20.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:22:20.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:22:20.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:22:20.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:22:13', tmtdew=12.76, humidity=42.4, cloud=0.0, wind=11.06, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:21:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:22:20.131 [DEBUG] [Thread-121728] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:20.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:22:20.227 [DEBUG] [Thread-121732] [transport.py] [_log()] starting thread (client mode): 0x2e3c3040
2025-09-28T10:22:20.228 [DEBUG] [Thread-121732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:20.242 [DEBUG] [Thread-121732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:22:20.243 [INFO] [Thread-121732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:22:20.250 [DEBUG] [Thread-121732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:20.250 [DEBUG] [Thread-121732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:22:20.250 [DEBUG] [Thread-121732] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:20.250 [DEBUG] [Thread-121732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] Compression: none
2025-09-28T10:22:20.251 [DEBUG] [Thread-121732] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:20.306 [DEBUG] [Thread-121732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:20.306 [DEBUG] [Thread-121732] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:20.307 [DEBUG] [Thread-121732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:22:20.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:22:20.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:20.363 [DEBUG] [Thread-121732] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:20.363 [DEBUG] [Thread-121732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:20.363 [DEBUG] [Thread-121732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:20.363 [DEBUG] [Thread-121732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:22:20.363 [DEBUG] [Thread-121732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:20.383 [INFO] [Thread-121732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:20.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:22:20.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:21.403 [DEBUG] [Thread-121732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:21.403 [DEBUG] [Thread-121732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:21.450 [DEBUG] [Thread-121732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:21.451 [DEBUG] [Thread-121732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:21.460 [DEBUG] [Thread-121732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:21.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22: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-28T10:22: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-28T10:22:21.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:21.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:21.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:21.500 [DEBUG] [Thread-121732] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:28.238 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:28.240 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:31.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:22:31.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:22:31.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-28T10:22:32.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 22, 13), 12.76, 42.4, 0.0, 11.06, 16.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:22:32.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:22:13
2025-09-28T10:22:32.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:22:32.336 [DEBUG] [Thread-121734] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T10:22:32.337 [DEBUG] [Thread-121734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:32.355 [DEBUG] [Thread-121734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:22:32.356 [INFO] [Thread-121734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:22:32.358 [DEBUG] [Thread-121734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:32.358 [DEBUG] [Thread-121734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:22:32.358 [DEBUG] [Thread-121734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] Compression: none
2025-09-28T10:22:32.359 [DEBUG] [Thread-121734] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:32.375 [DEBUG] [Thread-121734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:32.375 [DEBUG] [Thread-121734] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:32.376 [DEBUG] [Thread-121734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:22:32.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:22:32.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:32.378 [DEBUG] [Thread-121734] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:32.379 [DEBUG] [Thread-121734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:32.379 [DEBUG] [Thread-121734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:32.379 [DEBUG] [Thread-121734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:22:32.379 [DEBUG] [Thread-121734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:32.396 [INFO] [Thread-121734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:32.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:33.004 [DEBUG] [Thread-121734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:33.005 [DEBUG] [Thread-121734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:33.005 [DEBUG] [Thread-121734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:22:33.046 [DEBUG] [Thread-121734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:33.046 [DEBUG] [Thread-121734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:33.049 [DEBUG] [Thread-121734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:33.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:33.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:22:33.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:22:33.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:22:33.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:33.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:22:33.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:33.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:33.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:22:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348697 -999.00  +17.20   1.79     46   +5.50 1 1 1 1 1   888    0 12.67 65.46 ----- 2.8 1.8 228.8 10.9 25.7 -27.8 24.1 -25.6 22.7 -25.8 23.9 -25.7
2025-09-28T10:22:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:22:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:22:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348697
2025-09-28T10:22:33.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:22:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:22:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:22:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:22:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:22:33.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:22:13', tmtdew=12.76, humidity=42.4, cloud=0.0, wind=11.06, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:22:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:22:33.077 [DEBUG] [Thread-121734] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:33.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-28T10:22:33.172 [DEBUG] [Thread-121737] [transport.py] [_log()] starting thread (client mode): 0x2e38f5e0
2025-09-28T10:22:33.172 [DEBUG] [Thread-121737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:33.186 [DEBUG] [Thread-121737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:22:33.187 [INFO] [Thread-121737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:22:33.195 [DEBUG] [Thread-121737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:33.195 [DEBUG] [Thread-121737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:22:33.195 [DEBUG] [Thread-121737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:33.195 [DEBUG] [Thread-121737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] Compression: none
2025-09-28T10:22:33.196 [DEBUG] [Thread-121737] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:33.255 [DEBUG] [Thread-121737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:33.255 [DEBUG] [Thread-121737] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:33.264 [DEBUG] [Thread-121737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:22:33.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:22:33.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:33.311 [DEBUG] [Thread-121737] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:33.312 [DEBUG] [Thread-121737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:33.312 [DEBUG] [Thread-121737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:33.312 [DEBUG] [Thread-121737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:22:33.312 [DEBUG] [Thread-121737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:33.331 [INFO] [Thread-121737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:33.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-28T10:22:33.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:34.322 [DEBUG] [Thread-121737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:34.322 [DEBUG] [Thread-121737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:34.371 [DEBUG] [Thread-121737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:34.371 [DEBUG] [Thread-121737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:34.381 [DEBUG] [Thread-121737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:34.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:34.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-28T10:22:34.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') -> 00000000
2025-09-28T10:22:34.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:34.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:34.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:34.425 [DEBUG] [Thread-121737] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:34.909 [DEBUG] [Thread-121739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:44.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:22:44.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:22:44.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-28T10:22:44.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 22, 13), 12.76, 42.4, 0.0, 11.06, 16.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:22:44.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:22:13
2025-09-28T10:22:45.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:22:45.259 [DEBUG] [Thread-121740] [transport.py] [_log()] starting thread (client mode): 0x2e3c3910
2025-09-28T10:22:45.259 [DEBUG] [Thread-121740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:45.270 [DEBUG] [Thread-121740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:22:45.270 [INFO] [Thread-121740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] Compression: none
2025-09-28T10:22:45.273 [DEBUG] [Thread-121740] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:45.290 [DEBUG] [Thread-121740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:45.290 [DEBUG] [Thread-121740] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:45.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:22:45.291 [DEBUG] [Thread-121740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:22:45.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:45.293 [DEBUG] [Thread-121740] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:45.293 [DEBUG] [Thread-121740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:45.293 [DEBUG] [Thread-121740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:45.293 [DEBUG] [Thread-121740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:22:45.293 [DEBUG] [Thread-121740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:45.310 [INFO] [Thread-121740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:45.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:46.051 [DEBUG] [Thread-121740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:46.051 [DEBUG] [Thread-121740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:46.052 [DEBUG] [Thread-121740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:22:46.092 [DEBUG] [Thread-121740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:46.092 [DEBUG] [Thread-121740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:46.095 [DEBUG] [Thread-121740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:46.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:46.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:22:46.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:22:46.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:22:46.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:46.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:22:46.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348697 -999.00  +17.20   1.79     46   +5.50 1 1 1 1 1   888    0 12.67 65.46 ----- 2.8 1.8 228.8 10.9 25.7 -27.8 24.1 -25.6 22.7 -25.8 23.9 -25.7
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:22:46.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348697
2025-09-28T10:22:46.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:22:46.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:22:46.114 [DEBUG] [Thread-121740] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:22:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:22:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:22:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:22:13', tmtdew=12.76, humidity=42.4, cloud=0.0, wind=11.06, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:22:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:22:46.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-28T10:22:46.208 [DEBUG] [Thread-121743] [transport.py] [_log()] starting thread (client mode): 0x2e3fabc0
2025-09-28T10:22:46.208 [DEBUG] [Thread-121743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:46.223 [DEBUG] [Thread-121743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:22:46.223 [INFO] [Thread-121743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:46.230 [DEBUG] [Thread-121743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] Compression: none
2025-09-28T10:22:46.231 [DEBUG] [Thread-121743] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:46.289 [DEBUG] [Thread-121743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:46.289 [DEBUG] [Thread-121743] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:46.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:22:46.290 [DEBUG] [Thread-121743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:22:46.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:46.350 [DEBUG] [Thread-121743] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:46.350 [DEBUG] [Thread-121743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:46.350 [DEBUG] [Thread-121743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:46.350 [DEBUG] [Thread-121743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:22:46.350 [DEBUG] [Thread-121743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:46.364 [INFO] [Thread-121743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:46.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-28T10:22:46.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:47.331 [DEBUG] [Thread-121743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:47.331 [DEBUG] [Thread-121743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:47.379 [DEBUG] [Thread-121743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:47.379 [DEBUG] [Thread-121743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:47.387 [DEBUG] [Thread-121743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:47.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:47.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-28T10:22:47.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') -> 00000000
2025-09-28T10:22:47.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:47.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:47.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:47.418 [DEBUG] [Thread-121743] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:49.952 [DEBUG] [Thread-121745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:22:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:22:57.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:22:57.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-28T10:22:58.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 22, 45), 12.97, 42.06, 0.0, 10.06, 16.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:22:58.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:22:45
2025-09-28T10:22:58.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:22:58.271 [DEBUG] [Thread-121746] [transport.py] [_log()] starting thread (client mode): 0x2e3fb310
2025-09-28T10:22:58.271 [DEBUG] [Thread-121746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:58.290 [DEBUG] [Thread-121746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:22:58.290 [INFO] [Thread-121746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] Compression: none
2025-09-28T10:22:58.293 [DEBUG] [Thread-121746] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:58.309 [DEBUG] [Thread-121746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:58.309 [DEBUG] [Thread-121746] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:58.310 [DEBUG] [Thread-121746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:22:58.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:22:58.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:58.311 [DEBUG] [Thread-121746] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:58.311 [DEBUG] [Thread-121746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:58.311 [DEBUG] [Thread-121746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:58.312 [DEBUG] [Thread-121746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:22:58.312 [DEBUG] [Thread-121746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:58.325 [INFO] [Thread-121746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:58.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:22:59.062 [DEBUG] [Thread-121746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:22:59.063 [DEBUG] [Thread-121746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:22:59.063 [DEBUG] [Thread-121746] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:22:59.103 [DEBUG] [Thread-121746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:22:59.103 [DEBUG] [Thread-121746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:22:59.105 [DEBUG] [Thread-121746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:22:59.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:22:59.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:22:59.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:22:59.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:22:59.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:22:59.123 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:22:59.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:22:59.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:22:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:22:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.348697 -999.00  +17.20   1.79     46   +5.50 1 1 1 1 1   888    0 12.67 65.46 ----- 2.8 1.8 228.8 10.9 25.7 -27.8 24.1 -25.6 22.7 -25.8 23.9 -25.7
2025-09-28T10:22:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:22:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:22:59.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.348697
2025-09-28T10:22:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:22:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:22:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:22:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:22:59.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:22:59.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:22:45', tmtdew=12.97, humidity=42.06, cloud=0.0, wind=10.06, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:22:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:22:59.126 [DEBUG] [Thread-121746] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:22:59.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-28T10:22:59.262 [DEBUG] [Thread-121749] [transport.py] [_log()] starting thread (client mode): 0x2e3c0c10
2025-09-28T10:22:59.262 [DEBUG] [Thread-121749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:22:59.309 [DEBUG] [Thread-121749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:22:59.310 [INFO] [Thread-121749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:22:59.351 [DEBUG] [Thread-121749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:22:59.351 [DEBUG] [Thread-121749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] client lang: <none>
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] server lang: <none>
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] kex follows: False
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:22:59.352 [DEBUG] [Thread-121749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:22:59.353 [DEBUG] [Thread-121749] [transport.py] [_log()] Compression: none
2025-09-28T10:22:59.353 [DEBUG] [Thread-121749] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:22:59.439 [DEBUG] [Thread-121749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:22:59.439 [DEBUG] [Thread-121749] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:22:59.440 [DEBUG] [Thread-121749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:22:59.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:22:59.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:22:59.560 [DEBUG] [Thread-121749] [transport.py] [_log()] userauth is OK
2025-09-28T10:22:59.560 [DEBUG] [Thread-121749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:22:59.560 [DEBUG] [Thread-121749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:22:59.561 [DEBUG] [Thread-121749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:22:59.561 [DEBUG] [Thread-121749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:22:59.616 [INFO] [Thread-121749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:22:59.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-28T10:22:59.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:00.634 [DEBUG] [Thread-121749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:00.634 [DEBUG] [Thread-121749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:00.715 [DEBUG] [Thread-121749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:00.716 [DEBUG] [Thread-121749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:00.760 [DEBUG] [Thread-121749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:00.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:00.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-28T10:23:00.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') -> 00000000
2025-09-28T10:23:00.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:00.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:00.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:00.926 [DEBUG] [Thread-121749] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:02.672 [DEBUG] [Thread-121751 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:04.982 [DEBUG] [Thread-121752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:10.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:23:10.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:23:10.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:23:11.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 22, 45), 12.97, 42.06, 0.0, 10.06, 16.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:23:11.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:22:45
2025-09-28T10:23:11.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:23:11.720 [DEBUG] [Thread-121753] [transport.py] [_log()] starting thread (client mode): 0x2b9cc6a0
2025-09-28T10:23:11.720 [DEBUG] [Thread-121753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:11.740 [DEBUG] [Thread-121753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:23:11.740 [INFO] [Thread-121753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:23:11.742 [DEBUG] [Thread-121753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] Compression: none
2025-09-28T10:23:11.743 [DEBUG] [Thread-121753] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:11.758 [DEBUG] [Thread-121753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:11.758 [DEBUG] [Thread-121753] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:11.759 [DEBUG] [Thread-121753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:23:11.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:23:11.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:11.762 [DEBUG] [Thread-121753] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:11.762 [DEBUG] [Thread-121753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:11.763 [DEBUG] [Thread-121753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:11.763 [DEBUG] [Thread-121753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:23:11.763 [DEBUG] [Thread-121753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:11.780 [INFO] [Thread-121753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:11.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:12.388 [DEBUG] [Thread-121753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:12.389 [DEBUG] [Thread-121753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:12.389 [DEBUG] [Thread-121753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:23:12.429 [DEBUG] [Thread-121753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:12.429 [DEBUG] [Thread-121753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:12.432 [DEBUG] [Thread-121753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:12.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:12.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:23:12.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:23:12.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:23:12.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:12.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:23:12.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:12.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.349044 -999.00  +17.40   3.48     45   +5.40 1 1 1 1 1   888    0 12.95 67.20 ----- 5.0 3.5 213.2 11.8 25.7 -27.5 24.1 -25.8 22.6 -25.9 23.9 -26.5
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.349044
2025-09-28T10:23:12.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:23:12.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:23:12.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:23:12.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:23:12.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:23:12.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:22:45', tmtdew=12.97, humidity=42.06, cloud=0.0, wind=10.06, temperature=16.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:22:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:23:12.456 [DEBUG] [Thread-121753] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:12.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-28T10:23:12.553 [DEBUG] [Thread-121756] [transport.py] [_log()] starting thread (client mode): 0x2e3de230
2025-09-28T10:23:12.553 [DEBUG] [Thread-121756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:12.567 [DEBUG] [Thread-121756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:23:12.568 [INFO] [Thread-121756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:23:12.575 [DEBUG] [Thread-121756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:12.575 [DEBUG] [Thread-121756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] Compression: none
2025-09-28T10:23:12.576 [DEBUG] [Thread-121756] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:12.633 [DEBUG] [Thread-121756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:12.634 [DEBUG] [Thread-121756] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:12.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:23:12.635 [DEBUG] [Thread-121756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:23:12.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:12.690 [DEBUG] [Thread-121756] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:12.690 [DEBUG] [Thread-121756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:12.690 [DEBUG] [Thread-121756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:12.690 [DEBUG] [Thread-121756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:23:12.690 [DEBUG] [Thread-121756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:12.709 [INFO] [Thread-121756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:12.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:23:12.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:13.664 [DEBUG] [Thread-121756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:13.664 [DEBUG] [Thread-121756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:13.712 [DEBUG] [Thread-121756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:13.712 [DEBUG] [Thread-121756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:13.721 [DEBUG] [Thread-121756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:13.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:13.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-28T10:23:13.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-28T10:23:13.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:13.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:13.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:13.755 [DEBUG] [Thread-121756] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:20.030 [DEBUG] [Thread-121758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:23.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:23:23.758 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:23:23.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-28T10:23:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 23, 17), 12.93, 42.18, 0.0, 9.48, 16.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:23:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:23:17
2025-09-28T10:23:24.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:23:24.662 [DEBUG] [Thread-121759] [transport.py] [_log()] starting thread (client mode): 0x2b9b8be0
2025-09-28T10:23:24.662 [DEBUG] [Thread-121759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:24.683 [DEBUG] [Thread-121759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:23:24.683 [INFO] [Thread-121759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] Compression: none
2025-09-28T10:23:24.686 [DEBUG] [Thread-121759] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:24.695 [DEBUG] [Thread-121759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:24.695 [DEBUG] [Thread-121759] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:24.695 [DEBUG] [Thread-121759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:23:24.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:23:24.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:24.696 [DEBUG] [Thread-121759] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:24.696 [DEBUG] [Thread-121759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:24.696 [DEBUG] [Thread-121759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:24.696 [DEBUG] [Thread-121759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:23:24.696 [DEBUG] [Thread-121759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:24.711 [INFO] [Thread-121759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:24.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:25.458 [DEBUG] [Thread-121759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:25.458 [DEBUG] [Thread-121759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:25.458 [DEBUG] [Thread-121759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:23:25.499 [DEBUG] [Thread-121759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:25.499 [DEBUG] [Thread-121759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:25.501 [DEBUG] [Thread-121759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:25.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:25.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:23:25.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:23:25.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:23:25.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:25.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:23:25.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.349044 -999.00  +17.40   3.48     45   +5.40 1 1 1 1 1   888    0 12.95 67.20 ----- 5.0 3.5 213.2 11.8 25.7 -27.5 24.1 -25.8 22.6 -25.9 23.9 -26.5
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.349044
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:23:25.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:23:17', tmtdew=12.93, humidity=42.18, cloud=0.0, wind=9.48, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:22:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:23:25.523 [DEBUG] [Thread-121759] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:25.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-28T10:23:25.639 [DEBUG] [Thread-121762] [transport.py] [_log()] starting thread (client mode): 0x2b9df610
2025-09-28T10:23:25.639 [DEBUG] [Thread-121762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:25.687 [DEBUG] [Thread-121762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:23:25.687 [INFO] [Thread-121762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:23:25.728 [DEBUG] [Thread-121762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:25.728 [DEBUG] [Thread-121762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] Compression: none
2025-09-28T10:23:25.729 [DEBUG] [Thread-121762] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:25.820 [DEBUG] [Thread-121762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:25.820 [DEBUG] [Thread-121762] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:25.820 [DEBUG] [Thread-121762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:23:25.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:23:25.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:25.946 [DEBUG] [Thread-121762] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:25.946 [DEBUG] [Thread-121762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:25.947 [DEBUG] [Thread-121762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:25.947 [DEBUG] [Thread-121762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:23:25.947 [DEBUG] [Thread-121762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:25.992 [INFO] [Thread-121762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:25.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-28T10:23:25.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:26.971 [DEBUG] [Thread-121762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:26.971 [DEBUG] [Thread-121762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:27.052 [DEBUG] [Thread-121762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:27.053 [DEBUG] [Thread-121762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:27.093 [DEBUG] [Thread-121762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:27.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:27.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-28T10:23:27.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-28T10:23:27.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:27.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:27.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:27.254 [DEBUG] [Thread-121762] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:28.390 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:28.391 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:35.078 [DEBUG] [Thread-121764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:37.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:23:37.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:23:37.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-28T10:23:37.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 23, 17), 12.93, 42.18, 0.0, 9.48, 16.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:23:37.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:23:17
2025-09-28T10:23:37.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:23:38.058 [DEBUG] [Thread-121765] [transport.py] [_log()] starting thread (client mode): 0x2b9dffd0
2025-09-28T10:23:38.058 [DEBUG] [Thread-121765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:38.071 [DEBUG] [Thread-121765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:23:38.071 [INFO] [Thread-121765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] Compression: none
2025-09-28T10:23:38.074 [DEBUG] [Thread-121765] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:38.088 [DEBUG] [Thread-121765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:38.089 [DEBUG] [Thread-121765] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:38.089 [DEBUG] [Thread-121765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:23:38.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:23:38.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:38.090 [DEBUG] [Thread-121765] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:38.091 [DEBUG] [Thread-121765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:38.091 [DEBUG] [Thread-121765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:38.091 [DEBUG] [Thread-121765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:23:38.091 [DEBUG] [Thread-121765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:38.114 [INFO] [Thread-121765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:38.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:38.697 [DEBUG] [Thread-121765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:38.697 [DEBUG] [Thread-121765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:38.697 [DEBUG] [Thread-121765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:23:38.738 [DEBUG] [Thread-121765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:38.738 [DEBUG] [Thread-121765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:38.741 [DEBUG] [Thread-121765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:38.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:38.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:23:38.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:23:38.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:23:38.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:38.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:23:38.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:38.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:23:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.349392 -999.00  +17.10   9.40     45   +5.30 1 1 1 1 1   888    0 13.00 73.33 ----- 10.5 9.4 258.8 11.3 25.7 -27.4 24.2 -25.6 22.8 -25.1 23.9 -27.5
2025-09-28T10:23:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:23:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:23:38.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.349392
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:23:38.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:23:17', tmtdew=12.93, humidity=42.18, cloud=0.0, wind=9.48, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:23:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:23:38.759 [DEBUG] [Thread-121765] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:38.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-28T10:23:38.856 [DEBUG] [Thread-121768] [transport.py] [_log()] starting thread (client mode): 0x30ddc730
2025-09-28T10:23:38.856 [DEBUG] [Thread-121768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:38.871 [DEBUG] [Thread-121768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:23:38.871 [INFO] [Thread-121768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:23:38.878 [DEBUG] [Thread-121768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] Compression: none
2025-09-28T10:23:38.879 [DEBUG] [Thread-121768] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:38.938 [DEBUG] [Thread-121768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:38.938 [DEBUG] [Thread-121768] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:38.939 [DEBUG] [Thread-121768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:23:38.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:23:38.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:38.994 [DEBUG] [Thread-121768] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:38.994 [DEBUG] [Thread-121768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:38.994 [DEBUG] [Thread-121768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:38.994 [DEBUG] [Thread-121768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:23:38.994 [DEBUG] [Thread-121768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:39.013 [INFO] [Thread-121768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:39.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-28T10:23:39.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:39.968 [DEBUG] [Thread-121768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:39.969 [DEBUG] [Thread-121768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:40.016 [DEBUG] [Thread-121768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:40.016 [DEBUG] [Thread-121768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:40.025 [DEBUG] [Thread-121768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:40.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:40.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-28T10:23:40.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-28T10:23:40.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:40.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:40.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:40.060 [DEBUG] [Thread-121768] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:50.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:23:50.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:23:50.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:23:50.129 [DEBUG] [Thread-121770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:23:50.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 23, 17), 12.93, 42.18, 0.0, 9.48, 16.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:23:50.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:23:17
2025-09-28T10:23:50.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:23:50.961 [DEBUG] [Thread-121771] [transport.py] [_log()] starting thread (client mode): 0x2e3c27a0
2025-09-28T10:23:50.961 [DEBUG] [Thread-121771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:50.976 [DEBUG] [Thread-121771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:23:50.976 [INFO] [Thread-121771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:23:50.979 [DEBUG] [Thread-121771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] Compression: none
2025-09-28T10:23:50.980 [DEBUG] [Thread-121771] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:50.995 [DEBUG] [Thread-121771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:50.995 [DEBUG] [Thread-121771] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:50.995 [DEBUG] [Thread-121771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:23:50.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:23:50.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:50.997 [DEBUG] [Thread-121771] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:50.997 [DEBUG] [Thread-121771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:50.997 [DEBUG] [Thread-121771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:50.997 [DEBUG] [Thread-121771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:23:50.997 [DEBUG] [Thread-121771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:51.012 [INFO] [Thread-121771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:51.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:51.724 [DEBUG] [Thread-121771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:51.724 [DEBUG] [Thread-121771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:51.725 [DEBUG] [Thread-121771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:23:51.766 [DEBUG] [Thread-121771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:51.766 [DEBUG] [Thread-121771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:51.767 [DEBUG] [Thread-121771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:51.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23:51.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:23:51.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:23:51.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:23:51.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:51.784 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:23:51.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:51.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.349392 -999.00  +17.10   9.40     45   +5.30 1 1 1 1 1   888    0 13.00 73.33 ----- 10.5 9.4 258.8 11.3 25.7 -27.4 24.2 -25.6 22.8 -25.1 23.9 -27.5
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.349392
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:23:51.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:23:17', tmtdew=12.93, humidity=42.18, cloud=0.0, wind=9.48, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:23:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:23:51.785 [DEBUG] [Thread-121771] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:23:51.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:23:51.869 [DEBUG] [Thread-121774] [transport.py] [_log()] starting thread (client mode): 0x2e3fbe50
2025-09-28T10:23:51.869 [DEBUG] [Thread-121774] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:23:51.883 [DEBUG] [Thread-121774] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:23:51.884 [INFO] [Thread-121774] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] client lang: <none>
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] server lang: <none>
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] kex follows: False
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:23:51.891 [DEBUG] [Thread-121774] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:23:51.892 [DEBUG] [Thread-121774] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:23:51.892 [DEBUG] [Thread-121774] [transport.py] [_log()] Compression: none
2025-09-28T10:23:51.892 [DEBUG] [Thread-121774] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:23:51.950 [DEBUG] [Thread-121774] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:23:51.950 [DEBUG] [Thread-121774] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:23:51.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:23:51.951 [DEBUG] [Thread-121774] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:23:51.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:23:52.005 [DEBUG] [Thread-121774] [transport.py] [_log()] userauth is OK
2025-09-28T10:23:52.006 [DEBUG] [Thread-121774] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:23:52.006 [DEBUG] [Thread-121774] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:23:52.006 [DEBUG] [Thread-121774] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:23:52.006 [DEBUG] [Thread-121774] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:23:52.025 [INFO] [Thread-121774] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:23:52.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-28T10:23:52.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:23:52.998 [DEBUG] [Thread-121774] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:23:52.999 [DEBUG] [Thread-121774] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:23:53.046 [DEBUG] [Thread-121774] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:23:53.046 [DEBUG] [Thread-121774] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:23:53.055 [DEBUG] [Thread-121774] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:23:53.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:23: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-28T10:23:53.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-28T10:23:53.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:23:53.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:23:53.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:23:53.091 [DEBUG] [Thread-121774] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:02.718 [DEBUG] [Thread-121776 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:03.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:24:03.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:24:03.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-28T10:24:03.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 23, 49), 12.84, 42.19, 0.0, 10.99, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:24:03.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:23:49
2025-09-28T10:24:03.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:24:03.965 [DEBUG] [Thread-121777] [transport.py] [_log()] starting thread (client mode): 0x2e38dbd0
2025-09-28T10:24:03.965 [DEBUG] [Thread-121777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:03.985 [DEBUG] [Thread-121777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:24:03.985 [INFO] [Thread-121777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:24:03.988 [DEBUG] [Thread-121777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:03.988 [DEBUG] [Thread-121777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] Compression: none
2025-09-28T10:24:03.989 [DEBUG] [Thread-121777] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:04.011 [DEBUG] [Thread-121777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:04.011 [DEBUG] [Thread-121777] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:04.011 [DEBUG] [Thread-121777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:24:04.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:24:04.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:04.012 [DEBUG] [Thread-121777] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:04.013 [DEBUG] [Thread-121777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:04.013 [DEBUG] [Thread-121777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:04.013 [DEBUG] [Thread-121777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:24:04.013 [DEBUG] [Thread-121777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:04.022 [INFO] [Thread-121777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:04.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:04.765 [DEBUG] [Thread-121777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:04.765 [DEBUG] [Thread-121777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:04.765 [DEBUG] [Thread-121777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:24:04.806 [DEBUG] [Thread-121777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:04.806 [DEBUG] [Thread-121777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:04.808 [DEBUG] [Thread-121777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:04.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:04.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:24:04.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:24:04.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:24:04.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:04.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:24:04.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.349392 -999.00  +17.10   9.40     45   +5.30 1 1 1 1 1   888    0 13.00 73.33 ----- 10.5 9.4 258.8 11.3 25.7 -27.4 24.2 -25.6 22.8 -25.1 23.9 -27.5
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.349392
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:24:04.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:23:49', tmtdew=12.84, humidity=42.19, cloud=0.0, wind=10.99, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:23:07.469', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:24:04.825 [DEBUG] [Thread-121777] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:04.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-28T10:24:04.939 [DEBUG] [Thread-121780] [transport.py] [_log()] starting thread (client mode): 0x2e3de290
2025-09-28T10:24:04.939 [DEBUG] [Thread-121780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:04.977 [DEBUG] [Thread-121780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:24:04.978 [INFO] [Thread-121780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] Compression: none
2025-09-28T10:24:05.010 [DEBUG] [Thread-121780] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:05.089 [DEBUG] [Thread-121780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:05.089 [DEBUG] [Thread-121780] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:05.090 [DEBUG] [Thread-121780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:24:05.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:24:05.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:05.161 [DEBUG] [Thread-121782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:05.194 [DEBUG] [Thread-121780] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:05.194 [DEBUG] [Thread-121780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:05.194 [DEBUG] [Thread-121780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:05.194 [DEBUG] [Thread-121780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:24:05.194 [DEBUG] [Thread-121780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:05.236 [INFO] [Thread-121780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:05.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-28T10:24:05.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:06.241 [DEBUG] [Thread-121780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:06.241 [DEBUG] [Thread-121780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:06.317 [DEBUG] [Thread-121780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:06.317 [DEBUG] [Thread-121780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:06.351 [DEBUG] [Thread-121780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:06.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:06.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-28T10:24:06.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-28T10:24:06.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:06.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:06.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:06.486 [DEBUG] [Thread-121780] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:16.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:24:16.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:24:16.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-28T10:24:17.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 23, 49), 12.84, 42.19, 0.0, 10.99, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:24:17.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:23:49
2025-09-28T10:24:17.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:24:17.292 [DEBUG] [Thread-121783] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-28T10:24:17.292 [DEBUG] [Thread-121783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:17.310 [DEBUG] [Thread-121783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:24:17.311 [INFO] [Thread-121783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:24:17.312 [DEBUG] [Thread-121783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:17.312 [DEBUG] [Thread-121783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] Compression: none
2025-09-28T10:24:17.313 [DEBUG] [Thread-121783] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:17.322 [DEBUG] [Thread-121783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:17.323 [DEBUG] [Thread-121783] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:17.323 [DEBUG] [Thread-121783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:24:17.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:24:17.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:17.325 [DEBUG] [Thread-121783] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:17.325 [DEBUG] [Thread-121783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:17.325 [DEBUG] [Thread-121783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:17.325 [DEBUG] [Thread-121783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:24:17.325 [DEBUG] [Thread-121783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:17.339 [INFO] [Thread-121783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:17.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:17.923 [DEBUG] [Thread-121783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:17.923 [DEBUG] [Thread-121783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:17.923 [DEBUG] [Thread-121783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:24:17.964 [DEBUG] [Thread-121783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:17.965 [DEBUG] [Thread-121783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:17.967 [DEBUG] [Thread-121783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:17.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:17.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:24:17.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:24:17.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:24:17.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:17.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:24:17.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350086 -999.00  +17.20   9.50     45   +5.40 1 1 1 1 1   888    0 13.22 72.22 ----- 5.3 9.5 197.0 12.4 25.6 -28.1 23.9 -29.7 22.6 -25.8 23.9 -26.8
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:24:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350086
2025-09-28T10:24:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:24:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:24:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:24:17.990 [DEBUG] [Thread-121783] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:24:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:24:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:23:49', tmtdew=12.84, humidity=42.19, cloud=0.0, wind=10.99, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:24:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:24:18.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-28T10:24:18.088 [DEBUG] [Thread-121786] [transport.py] [_log()] starting thread (client mode): 0x2b96ccd0
2025-09-28T10:24:18.088 [DEBUG] [Thread-121786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:18.105 [DEBUG] [Thread-121786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:24:18.105 [INFO] [Thread-121786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:24:18.112 [DEBUG] [Thread-121786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:18.112 [DEBUG] [Thread-121786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:24:18.112 [DEBUG] [Thread-121786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] Compression: none
2025-09-28T10:24:18.113 [DEBUG] [Thread-121786] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:18.170 [DEBUG] [Thread-121786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:18.171 [DEBUG] [Thread-121786] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:18.171 [DEBUG] [Thread-121786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:24:18.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:24:18.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:18.229 [DEBUG] [Thread-121786] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:18.229 [DEBUG] [Thread-121786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:18.229 [DEBUG] [Thread-121786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:18.229 [DEBUG] [Thread-121786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:24:18.230 [DEBUG] [Thread-121786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:18.249 [INFO] [Thread-121786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:18.249 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:24:18.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:19.236 [DEBUG] [Thread-121786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:19.236 [DEBUG] [Thread-121786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:19.284 [DEBUG] [Thread-121786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:19.284 [DEBUG] [Thread-121786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:19.293 [DEBUG] [Thread-121786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:19.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:19.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-28T10:24:19.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-28T10:24:19.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:19.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:19.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:19.327 [DEBUG] [Thread-121786] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:20.197 [DEBUG] [Thread-121788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:28.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:28.533 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:29.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:24:29.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:24:29.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-28T10:24:29.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 24, 21), 13.11, 41.48, 0.0, 12.81, 16.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:24:29.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:24:21
2025-09-28T10:24:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:24:30.169 [DEBUG] [Thread-121789] [transport.py] [_log()] starting thread (client mode): 0x30ddd0f0
2025-09-28T10:24:30.169 [DEBUG] [Thread-121789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:30.190 [DEBUG] [Thread-121789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:24:30.190 [INFO] [Thread-121789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] Compression: none
2025-09-28T10:24:30.193 [DEBUG] [Thread-121789] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:30.210 [DEBUG] [Thread-121789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:30.210 [DEBUG] [Thread-121789] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:30.210 [DEBUG] [Thread-121789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:24:30.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:24:30.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:30.211 [DEBUG] [Thread-121789] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:30.211 [DEBUG] [Thread-121789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:30.211 [DEBUG] [Thread-121789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:30.211 [DEBUG] [Thread-121789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:24:30.211 [DEBUG] [Thread-121789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:30.238 [INFO] [Thread-121789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:30.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:31.025 [DEBUG] [Thread-121789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:31.025 [DEBUG] [Thread-121789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:31.026 [DEBUG] [Thread-121789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:24:31.067 [DEBUG] [Thread-121789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:31.067 [DEBUG] [Thread-121789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:31.070 [DEBUG] [Thread-121789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:31.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:31.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:24:31.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:24:31.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:24:31.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:31.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:24:31.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:31.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:31.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:24:31.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350086 -999.00  +17.20   9.50     45   +5.40 1 1 1 1 1   888    0 13.22 72.22 ----- 5.3 9.5 197.0 12.4 25.6 -28.1 23.9 -29.7 22.6 -25.8 23.9 -26.8
2025-09-28T10:24:31.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:24:31.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:24:31.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350086
2025-09-28T10:24:31.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:24:31.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:24:31.091 [DEBUG] [Thread-121789] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:31.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:24:31.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:24:31.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:24:31.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:24:21', tmtdew=13.11, humidity=41.48, cloud=0.0, wind=12.81, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:24:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:24:31.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-28T10:24:31.181 [DEBUG] [Thread-121792] [transport.py] [_log()] starting thread (client mode): 0x2e3dda50
2025-09-28T10:24:31.181 [DEBUG] [Thread-121792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:31.197 [DEBUG] [Thread-121792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:24:31.197 [INFO] [Thread-121792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:24:31.204 [DEBUG] [Thread-121792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] Compression: none
2025-09-28T10:24:31.205 [DEBUG] [Thread-121792] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:31.266 [DEBUG] [Thread-121792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:31.266 [DEBUG] [Thread-121792] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:31.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:24:31.267 [DEBUG] [Thread-121792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:24:31.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:31.321 [DEBUG] [Thread-121792] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:31.321 [DEBUG] [Thread-121792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:31.321 [DEBUG] [Thread-121792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:31.321 [DEBUG] [Thread-121792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:24:31.322 [DEBUG] [Thread-121792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:31.343 [INFO] [Thread-121792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:31.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-28T10:24:31.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:32.298 [DEBUG] [Thread-121792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:32.298 [DEBUG] [Thread-121792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:32.346 [DEBUG] [Thread-121792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:32.346 [DEBUG] [Thread-121792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:32.355 [DEBUG] [Thread-121792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:32.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:32.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-28T10:24:32.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-28T10:24:32.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:32.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:32.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:32.390 [DEBUG] [Thread-121792] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:35.240 [DEBUG] [Thread-121794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:42.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:24:42.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:24:42.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-28T10:24:42.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 24, 21), 13.11, 41.48, 0.0, 12.81, 16.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:24:42.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:24:21
2025-09-28T10:24:43.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:24:43.225 [DEBUG] [Thread-121795] [transport.py] [_log()] starting thread (client mode): 0x2b96efe0
2025-09-28T10:24:43.225 [DEBUG] [Thread-121795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:43.245 [DEBUG] [Thread-121795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:24:43.245 [INFO] [Thread-121795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:43.248 [DEBUG] [Thread-121795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] Compression: none
2025-09-28T10:24:43.249 [DEBUG] [Thread-121795] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:43.270 [DEBUG] [Thread-121795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:43.270 [DEBUG] [Thread-121795] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:43.271 [DEBUG] [Thread-121795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:24:43.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:24:43.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:43.273 [DEBUG] [Thread-121795] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:43.273 [DEBUG] [Thread-121795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:43.273 [DEBUG] [Thread-121795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:43.273 [DEBUG] [Thread-121795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:24:43.273 [DEBUG] [Thread-121795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:43.291 [INFO] [Thread-121795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:43.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:44.043 [DEBUG] [Thread-121795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:44.043 [DEBUG] [Thread-121795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:44.044 [DEBUG] [Thread-121795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:24:44.085 [DEBUG] [Thread-121795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:44.085 [DEBUG] [Thread-121795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:44.088 [DEBUG] [Thread-121795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:44.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:44.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:24:44.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:24:44.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:24:44.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:44.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:24:44.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:44.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:44.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:24:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350086 -999.00  +17.20   9.50     45   +5.40 1 1 1 1 1   888    0 13.22 72.22 ----- 5.3 9.5 197.0 12.4 25.6 -28.1 23.9 -29.7 22.6 -25.8 23.9 -26.8
2025-09-28T10:24:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:24:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:24:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350086
2025-09-28T10:24:44.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:24:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:24:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:24:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:24:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:24:44.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:24:21', tmtdew=13.11, humidity=41.48, cloud=0.0, wind=12.81, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:24:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:24:44.116 [DEBUG] [Thread-121795] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:44.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-28T10:24:44.215 [DEBUG] [Thread-121798] [transport.py] [_log()] starting thread (client mode): 0x30dde5c0
2025-09-28T10:24:44.215 [DEBUG] [Thread-121798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:44.231 [DEBUG] [Thread-121798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:24:44.231 [INFO] [Thread-121798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:44.238 [DEBUG] [Thread-121798] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] Compression: none
2025-09-28T10:24:44.239 [DEBUG] [Thread-121798] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:44.302 [DEBUG] [Thread-121798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:44.303 [DEBUG] [Thread-121798] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:44.303 [DEBUG] [Thread-121798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:24:44.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:24:44.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:44.362 [DEBUG] [Thread-121798] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:44.362 [DEBUG] [Thread-121798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:44.362 [DEBUG] [Thread-121798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:44.362 [DEBUG] [Thread-121798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:24:44.362 [DEBUG] [Thread-121798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:44.381 [INFO] [Thread-121798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:44.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-28T10:24:44.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:45.363 [DEBUG] [Thread-121798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:45.363 [DEBUG] [Thread-121798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:45.411 [DEBUG] [Thread-121798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:45.411 [DEBUG] [Thread-121798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:45.420 [DEBUG] [Thread-121798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:45.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:45.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')
2025-09-28T10:24: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-28T10:24:45.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:45.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:45.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:45.455 [DEBUG] [Thread-121798] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:50.285 [DEBUG] [Thread-121800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:24:55.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:24:55.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:24:55.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-28T10:24:56.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 24, 21), 13.11, 41.48, 0.0, 12.81, 16.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:24:56.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:24:21
2025-09-28T10:24:56.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:24:56.315 [DEBUG] [Thread-121801] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-28T10:24:56.315 [DEBUG] [Thread-121801] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:56.335 [DEBUG] [Thread-121801] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:24:56.335 [INFO] [Thread-121801] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:24:56.338 [DEBUG] [Thread-121801] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:56.339 [DEBUG] [Thread-121801] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:56.340 [DEBUG] [Thread-121801] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:56.340 [DEBUG] [Thread-121801] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:56.340 [DEBUG] [Thread-121801] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:56.340 [DEBUG] [Thread-121801] [transport.py] [_log()] Compression: none
2025-09-28T10:24:56.340 [DEBUG] [Thread-121801] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:56.357 [DEBUG] [Thread-121801] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:56.358 [DEBUG] [Thread-121801] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:56.358 [DEBUG] [Thread-121801] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:24:56.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:24:56.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:56.360 [DEBUG] [Thread-121801] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:56.360 [DEBUG] [Thread-121801] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:56.360 [DEBUG] [Thread-121801] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:56.360 [DEBUG] [Thread-121801] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:24:56.360 [DEBUG] [Thread-121801] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:56.384 [INFO] [Thread-121801] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:56.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:56.967 [DEBUG] [Thread-121801] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:56.967 [DEBUG] [Thread-121801] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:56.968 [DEBUG] [Thread-121801] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:24:57.008 [DEBUG] [Thread-121801] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:57.009 [DEBUG] [Thread-121801] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:57.011 [DEBUG] [Thread-121801] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:57.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:57.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:24:57.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:24:57.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:24:57.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:57.030 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:24:57.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:57.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:57.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:24:57.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350433 -999.00  +17.30   9.90     45   +5.30 1 1 1 1 1   888    0 13.59 85.82 ----- 5.7 9.9 206.3 11.1 25.6 -26.9 23.8 -27.8 22.7 -25.5 23.9 -26.6
2025-09-28T10:24:57.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:24:57.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:24:57.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350433
2025-09-28T10:24:57.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:24:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:24:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:24:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:24:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:24:57.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:24:21', tmtdew=13.11, humidity=41.48, cloud=0.0, wind=12.81, temperature=16.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:24:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:24:57.033 [DEBUG] [Thread-121801] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:24:57.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-28T10:24:57.130 [DEBUG] [Thread-121804] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-28T10:24:57.130 [DEBUG] [Thread-121804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:24:57.145 [DEBUG] [Thread-121804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:24:57.146 [INFO] [Thread-121804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:24:57.153 [DEBUG] [Thread-121804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:24:57.153 [DEBUG] [Thread-121804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:24:57.153 [DEBUG] [Thread-121804] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:24:57.153 [DEBUG] [Thread-121804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:57.153 [DEBUG] [Thread-121804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] client lang: <none>
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] server lang: <none>
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] kex follows: False
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:24:57.154 [DEBUG] [Thread-121804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:24:57.155 [DEBUG] [Thread-121804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:24:57.155 [DEBUG] [Thread-121804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:24:57.155 [DEBUG] [Thread-121804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:24:57.155 [DEBUG] [Thread-121804] [transport.py] [_log()] Compression: none
2025-09-28T10:24:57.155 [DEBUG] [Thread-121804] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:24:57.213 [DEBUG] [Thread-121804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:24:57.213 [DEBUG] [Thread-121804] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:24:57.214 [DEBUG] [Thread-121804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:24:57.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:24:57.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:24:57.269 [DEBUG] [Thread-121804] [transport.py] [_log()] userauth is OK
2025-09-28T10:24:57.270 [DEBUG] [Thread-121804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:24:57.270 [DEBUG] [Thread-121804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:24:57.270 [DEBUG] [Thread-121804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:24:57.270 [DEBUG] [Thread-121804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:24:57.289 [INFO] [Thread-121804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:24:57.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-28T10:24:57.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:24:58.277 [DEBUG] [Thread-121804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:24:58.277 [DEBUG] [Thread-121804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:24:58.329 [DEBUG] [Thread-121804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:24:58.329 [DEBUG] [Thread-121804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:24:58.338 [DEBUG] [Thread-121804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:24:58.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:24:58.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-28T10:24:58.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-28T10:24:58.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:24:58.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:24:58.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:24:58.381 [DEBUG] [Thread-121804] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:02.762 [DEBUG] [Thread-121806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:05.315 [DEBUG] [Thread-121807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:08.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:25:08.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:25:08.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-28T10:25:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 24, 53), 12.94, 41.85, 0.0, 11.01, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:25:08.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:24:53
2025-09-28T10:25:09.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:25:09.248 [DEBUG] [Thread-121808] [transport.py] [_log()] starting thread (client mode): 0x2b96d0f0
2025-09-28T10:25:09.248 [DEBUG] [Thread-121808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:09.267 [DEBUG] [Thread-121808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:25:09.267 [INFO] [Thread-121808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:09.268 [DEBUG] [Thread-121808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] Compression: none
2025-09-28T10:25:09.269 [DEBUG] [Thread-121808] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:09.277 [DEBUG] [Thread-121808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:09.277 [DEBUG] [Thread-121808] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:09.277 [DEBUG] [Thread-121808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:25:09.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:25:09.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:09.278 [DEBUG] [Thread-121808] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:09.278 [DEBUG] [Thread-121808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:09.278 [DEBUG] [Thread-121808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:09.278 [DEBUG] [Thread-121808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:25:09.278 [DEBUG] [Thread-121808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:09.287 [INFO] [Thread-121808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:09.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:18.500 [DEBUG] [Thread-121808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:18.500 [DEBUG] [Thread-121808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:18.500 [DEBUG] [Thread-121808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:25:18.541 [DEBUG] [Thread-121808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:18.541 [DEBUG] [Thread-121808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:18.543 [DEBUG] [Thread-121808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:18.650 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:18.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:25:18.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:25:18.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:25:18.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:18.707 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:25:18.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:18.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:18.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:25:18.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350433 -999.00  +17.30   9.90     45   +5.30 1 1 1 1 1   888    0 13.59 85.82 ----- 5.7 9.9 206.3 11.1 25.6 -26.9 23.8 -27.8 22.7 -25.5 23.9 -26.6
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350433
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:25:18.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:24:53', tmtdew=12.94, humidity=41.85, cloud=0.0, wind=11.01, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:24:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:25:18.709 [DEBUG] [Thread-121808] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:18.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-28T10:25:18.796 [DEBUG] [Thread-121811] [transport.py] [_log()] starting thread (client mode): 0x2e3c0ca0
2025-09-28T10:25:18.796 [DEBUG] [Thread-121811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:18.809 [DEBUG] [Thread-121811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:25:18.810 [INFO] [Thread-121811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:18.817 [DEBUG] [Thread-121811] [transport.py] [_log()] Compression: none
2025-09-28T10:25:18.818 [DEBUG] [Thread-121811] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:18.875 [DEBUG] [Thread-121811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:18.875 [DEBUG] [Thread-121811] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:18.875 [DEBUG] [Thread-121811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:25:18.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:25:18.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:18.932 [DEBUG] [Thread-121811] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:18.932 [DEBUG] [Thread-121811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:18.932 [DEBUG] [Thread-121811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:18.932 [DEBUG] [Thread-121811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:25:18.932 [DEBUG] [Thread-121811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:18.946 [INFO] [Thread-121811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:18.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:25:18.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:19.915 [DEBUG] [Thread-121811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:19.916 [DEBUG] [Thread-121811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:19.967 [DEBUG] [Thread-121811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:19.967 [DEBUG] [Thread-121811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:19.979 [DEBUG] [Thread-121811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:19.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:19.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-28T10:25:20.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-28T10:25:20.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:20.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:20.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:20.023 [DEBUG] [Thread-121811] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:20.354 [DEBUG] [Thread-121813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:28.675 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:28.676 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:30.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:25:30.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:25:30.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-28T10:25:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 25, 25), 12.82, 42.18, 0.0, 12.25, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:25:30.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:25:25
2025-09-28T10:25:30.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:25:30.858 [DEBUG] [Thread-121814] [transport.py] [_log()] starting thread (client mode): 0x2e3c1660
2025-09-28T10:25:30.859 [DEBUG] [Thread-121814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:30.879 [DEBUG] [Thread-121814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:25:30.879 [INFO] [Thread-121814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:30.881 [DEBUG] [Thread-121814] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] Compression: none
2025-09-28T10:25:30.882 [DEBUG] [Thread-121814] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:30.895 [DEBUG] [Thread-121814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:30.895 [DEBUG] [Thread-121814] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:30.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:25:30.896 [DEBUG] [Thread-121814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:25:30.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:30.898 [DEBUG] [Thread-121814] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:30.898 [DEBUG] [Thread-121814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:30.899 [DEBUG] [Thread-121814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:30.899 [DEBUG] [Thread-121814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:25:30.899 [DEBUG] [Thread-121814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:30.922 [INFO] [Thread-121814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:30.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:31.524 [DEBUG] [Thread-121814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:31.524 [DEBUG] [Thread-121814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:31.525 [DEBUG] [Thread-121814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:25:31.565 [DEBUG] [Thread-121814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:31.565 [DEBUG] [Thread-121814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:31.569 [DEBUG] [Thread-121814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:31.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:31.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:25:31.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:25:31.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:25:31.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:31.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:25:31.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:31.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:25:31.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350780 -999.00  +17.30   7.11     45   +5.30 1 1 1 1 1   888    0 13.61 95.37 ----- 7.9 7.1 205.2 8.6 25.7 -27.7 24.1 -25.6 22.8 -24.9 24.1 -26.6
2025-09-28T10:25:31.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:25:31.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:25:31.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350780
2025-09-28T10:25:31.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:25:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:25:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:25:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:25:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:25:31.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:25:25', tmtdew=12.82, humidity=42.18, cloud=0.0, wind=12.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:25:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:25:31.583 [DEBUG] [Thread-121814] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:31.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-28T10:25:31.678 [DEBUG] [Thread-121817] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ac0
2025-09-28T10:25:31.678 [DEBUG] [Thread-121817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:31.694 [DEBUG] [Thread-121817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:25:31.694 [INFO] [Thread-121817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:31.702 [DEBUG] [Thread-121817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:31.703 [DEBUG] [Thread-121817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:31.703 [DEBUG] [Thread-121817] [transport.py] [_log()] Compression: none
2025-09-28T10:25:31.703 [DEBUG] [Thread-121817] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:31.761 [DEBUG] [Thread-121817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:31.761 [DEBUG] [Thread-121817] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:31.762 [DEBUG] [Thread-121817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:25:31.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:25:31.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:31.820 [DEBUG] [Thread-121817] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:31.820 [DEBUG] [Thread-121817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:31.820 [DEBUG] [Thread-121817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:31.820 [DEBUG] [Thread-121817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:25:31.820 [DEBUG] [Thread-121817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:31.839 [INFO] [Thread-121817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:31.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:25:31.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:32.846 [DEBUG] [Thread-121817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:32.846 [DEBUG] [Thread-121817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:32.893 [DEBUG] [Thread-121817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:32.893 [DEBUG] [Thread-121817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:32.902 [DEBUG] [Thread-121817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:32.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:32.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-28T10:25:32.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-28T10:25:32.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:32.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:32.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:32.936 [DEBUG] [Thread-121817] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:35.398 [DEBUG] [Thread-121819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:42.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:25:42.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:25:42.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:25:43.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 25, 25), 12.82, 42.18, 0.0, 12.25, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:25:43.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:25:25
2025-09-28T10:25:43.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:25:43.775 [DEBUG] [Thread-121820] [transport.py] [_log()] starting thread (client mode): 0x2b98a1a0
2025-09-28T10:25:43.776 [DEBUG] [Thread-121820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:43.795 [DEBUG] [Thread-121820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:25:43.796 [INFO] [Thread-121820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:25:43.799 [DEBUG] [Thread-121820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:43.799 [DEBUG] [Thread-121820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] Compression: none
2025-09-28T10:25:43.800 [DEBUG] [Thread-121820] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:43.818 [DEBUG] [Thread-121820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:43.818 [DEBUG] [Thread-121820] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:43.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:25:43.819 [DEBUG] [Thread-121820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:25:43.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:43.821 [DEBUG] [Thread-121820] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:43.821 [DEBUG] [Thread-121820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:43.821 [DEBUG] [Thread-121820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:43.821 [DEBUG] [Thread-121820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:25:43.822 [DEBUG] [Thread-121820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:43.840 [INFO] [Thread-121820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:43.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:44.526 [DEBUG] [Thread-121820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:44.527 [DEBUG] [Thread-121820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:44.527 [DEBUG] [Thread-121820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:25:44.567 [DEBUG] [Thread-121820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:44.567 [DEBUG] [Thread-121820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:44.570 [DEBUG] [Thread-121820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:44.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:44.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:25:44.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:25:44.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:25:44.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:44.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:25:44.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:44.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:44.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:25:44.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.350780 -999.00  +17.30   7.11     45   +5.30 1 1 1 1 1   888    0 13.61 95.37 ----- 7.9 7.1 205.2 8.6 25.7 -27.7 24.1 -25.6 22.8 -24.9 24.1 -26.6
2025-09-28T10:25:44.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:25:44.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:25:44.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.350780
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:25:44.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:25:25', tmtdew=12.82, humidity=42.18, cloud=0.0, wind=12.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:25:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:25:44.587 [DEBUG] [Thread-121820] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:44.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-28T10:25:44.683 [DEBUG] [Thread-121823] [transport.py] [_log()] starting thread (client mode): 0x2b9887f0
2025-09-28T10:25:44.683 [DEBUG] [Thread-121823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:44.698 [DEBUG] [Thread-121823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:25:44.699 [INFO] [Thread-121823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:25:44.706 [DEBUG] [Thread-121823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:44.706 [DEBUG] [Thread-121823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:25:44.706 [DEBUG] [Thread-121823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:44.707 [DEBUG] [Thread-121823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] Compression: none
2025-09-28T10:25:44.708 [DEBUG] [Thread-121823] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:44.769 [DEBUG] [Thread-121823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:44.769 [DEBUG] [Thread-121823] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:44.770 [DEBUG] [Thread-121823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:25:44.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:25:44.771 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:44.824 [DEBUG] [Thread-121823] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:44.825 [DEBUG] [Thread-121823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:44.825 [DEBUG] [Thread-121823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:44.825 [DEBUG] [Thread-121823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:25:44.825 [DEBUG] [Thread-121823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:44.844 [INFO] [Thread-121823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:44.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-28T10:25:44.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:45.825 [DEBUG] [Thread-121823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:45.826 [DEBUG] [Thread-121823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:45.877 [DEBUG] [Thread-121823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:45.877 [DEBUG] [Thread-121823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:45.888 [DEBUG] [Thread-121823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:45.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25: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')
2025-09-28T10:25:45.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-28T10:25:45.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:45.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:45.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:45.920 [DEBUG] [Thread-121823] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:50.437 [DEBUG] [Thread-121825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:25:55.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:25:55.923 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:25:55.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-28T10:25:56.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 25, 25), 12.82, 42.18, 0.0, 12.25, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:25:56.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:25:25
2025-09-28T10:25:56.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:25:56.755 [DEBUG] [Thread-121826] [transport.py] [_log()] starting thread (client mode): 0x2b98b790
2025-09-28T10:25:56.755 [DEBUG] [Thread-121826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:56.777 [DEBUG] [Thread-121826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:25:56.777 [INFO] [Thread-121826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:25:56.778 [DEBUG] [Thread-121826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:56.778 [DEBUG] [Thread-121826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:56.779 [DEBUG] [Thread-121826] [transport.py] [_log()] Compression: none
2025-09-28T10:25:56.780 [DEBUG] [Thread-121826] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:56.791 [DEBUG] [Thread-121826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:56.792 [DEBUG] [Thread-121826] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:56.792 [DEBUG] [Thread-121826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:25:56.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:25:56.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:56.795 [DEBUG] [Thread-121826] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:56.795 [DEBUG] [Thread-121826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:56.795 [DEBUG] [Thread-121826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:56.795 [DEBUG] [Thread-121826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:25:56.795 [DEBUG] [Thread-121826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:56.824 [INFO] [Thread-121826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:56.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:57.440 [DEBUG] [Thread-121826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:57.440 [DEBUG] [Thread-121826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:57.440 [DEBUG] [Thread-121826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:25:57.480 [DEBUG] [Thread-121826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:57.481 [DEBUG] [Thread-121826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:57.483 [DEBUG] [Thread-121826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:57.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:57.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:25:57.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:25:57.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:25:57.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:57.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:25:57.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:57.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351128 -999.00  +17.50   2.53     45   +5.50 1 1 1 1 1   888    0 13.90 91.46 ----- 6.2 2.5 192.6 8.5 25.8 -26.8 24.1 -25.7 22.8 -24.9 24.2 -25.6
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351128
2025-09-28T10:25:57.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:25:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:25:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:25:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:25:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:25:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:25:25', tmtdew=12.82, humidity=42.18, cloud=0.0, wind=12.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:25:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:25:57.512 [DEBUG] [Thread-121826] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:25:57.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-28T10:25:57.608 [DEBUG] [Thread-121829] [transport.py] [_log()] starting thread (client mode): 0x2e349990
2025-09-28T10:25:57.608 [DEBUG] [Thread-121829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:25:57.623 [DEBUG] [Thread-121829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:25:57.623 [INFO] [Thread-121829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:25:57.631 [DEBUG] [Thread-121829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:25:57.631 [DEBUG] [Thread-121829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:25:57.631 [DEBUG] [Thread-121829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:25:57.631 [DEBUG] [Thread-121829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:57.631 [DEBUG] [Thread-121829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] client lang: <none>
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] server lang: <none>
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] kex follows: False
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] Compression: none
2025-09-28T10:25:57.632 [DEBUG] [Thread-121829] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:25:57.688 [DEBUG] [Thread-121829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:25:57.689 [DEBUG] [Thread-121829] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:25:57.689 [DEBUG] [Thread-121829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:25:57.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:25:57.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:25:57.746 [DEBUG] [Thread-121829] [transport.py] [_log()] userauth is OK
2025-09-28T10:25:57.746 [DEBUG] [Thread-121829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:25:57.747 [DEBUG] [Thread-121829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:25:57.747 [DEBUG] [Thread-121829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:25:57.747 [DEBUG] [Thread-121829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:25:57.765 [INFO] [Thread-121829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:25:57.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-28T10:25:57.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:25:58.758 [DEBUG] [Thread-121829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:25:58.758 [DEBUG] [Thread-121829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:25:58.806 [DEBUG] [Thread-121829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:25:58.806 [DEBUG] [Thread-121829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:25:58.814 [DEBUG] [Thread-121829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:25:58.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:25:58.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:25:58.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-28T10:25:58.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:25:58.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:25:58.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:25:58.846 [DEBUG] [Thread-121829] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:02.823 [DEBUG] [Thread-121831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:05.464 [DEBUG] [Thread-121832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:08.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:26:08.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:26:08.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-28T10:26:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 25, 57), 12.91, 42.05, 0.0, 10.22, 15.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:26:09.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:25:57
2025-09-28T10:26:09.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:26:09.680 [DEBUG] [Thread-121833] [transport.py] [_log()] starting thread (client mode): 0x2b98bcd0
2025-09-28T10:26:09.680 [DEBUG] [Thread-121833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:09.700 [DEBUG] [Thread-121833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:26:09.701 [INFO] [Thread-121833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:26:09.704 [DEBUG] [Thread-121833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:09.704 [DEBUG] [Thread-121833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:26:09.704 [DEBUG] [Thread-121833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:09.704 [DEBUG] [Thread-121833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:09.704 [DEBUG] [Thread-121833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] Compression: none
2025-09-28T10:26:09.705 [DEBUG] [Thread-121833] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:09.722 [DEBUG] [Thread-121833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:09.722 [DEBUG] [Thread-121833] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:09.723 [DEBUG] [Thread-121833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:26:09.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:26:09.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:09.724 [DEBUG] [Thread-121833] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:09.725 [DEBUG] [Thread-121833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:09.725 [DEBUG] [Thread-121833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:09.725 [DEBUG] [Thread-121833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:26:09.725 [DEBUG] [Thread-121833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:09.740 [INFO] [Thread-121833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:09.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:10.487 [DEBUG] [Thread-121833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:10.487 [DEBUG] [Thread-121833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:10.488 [DEBUG] [Thread-121833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:26:10.528 [DEBUG] [Thread-121833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:10.528 [DEBUG] [Thread-121833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:10.531 [DEBUG] [Thread-121833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:10.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:10.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:26:10.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:26:10.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:26:10.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:10.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:26:10.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:10.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:26:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351128 -999.00  +17.50   2.53     45   +5.50 1 1 1 1 1   888    0 13.90 91.46 ----- 6.2 2.5 192.6 8.5 25.8 -26.8 24.1 -25.7 22.8 -24.9 24.2 -25.6
2025-09-28T10:26:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:26:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:26:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351128
2025-09-28T10:26:10.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:26:10.556 [DEBUG] [Thread-121833] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:10.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:26:10.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:26:10.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:26:10.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:26:10.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:25:57', tmtdew=12.91, humidity=42.05, cloud=0.0, wind=10.22, temperature=15.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:25:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:26:10.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:26:10.651 [DEBUG] [Thread-121836] [transport.py] [_log()] starting thread (client mode): 0x2b9891e0
2025-09-28T10:26:10.652 [DEBUG] [Thread-121836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:10.666 [DEBUG] [Thread-121836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:26:10.666 [INFO] [Thread-121836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] Compression: none
2025-09-28T10:26:10.674 [DEBUG] [Thread-121836] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:10.739 [DEBUG] [Thread-121836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:10.739 [DEBUG] [Thread-121836] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:10.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:26:10.740 [DEBUG] [Thread-121836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:26:10.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:10.797 [DEBUG] [Thread-121836] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:10.798 [DEBUG] [Thread-121836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:10.798 [DEBUG] [Thread-121836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:10.798 [DEBUG] [Thread-121836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:26:10.798 [DEBUG] [Thread-121836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:10.816 [INFO] [Thread-121836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:10.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-28T10:26:10.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:11.818 [DEBUG] [Thread-121836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:11.818 [DEBUG] [Thread-121836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:11.867 [DEBUG] [Thread-121836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:11.867 [DEBUG] [Thread-121836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:11.876 [DEBUG] [Thread-121836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:11.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:11.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-28T10:26:11.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-28T10:26:11.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:11.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:11.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:11.910 [DEBUG] [Thread-121836] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:20.509 [DEBUG] [Thread-121838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:21.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:26:21.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:26:21.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-28T10:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 25, 57), 12.91, 42.05, 0.0, 10.22, 15.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:26:22.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:25:57
2025-09-28T10:26:22.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:26:22.766 [DEBUG] [Thread-121839] [transport.py] [_log()] starting thread (client mode): 0x2b9bb580
2025-09-28T10:26:22.766 [DEBUG] [Thread-121839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:22.786 [DEBUG] [Thread-121839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:26:22.787 [INFO] [Thread-121839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:22.788 [DEBUG] [Thread-121839] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] Compression: none
2025-09-28T10:26:22.789 [DEBUG] [Thread-121839] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:22.801 [DEBUG] [Thread-121839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:22.801 [DEBUG] [Thread-121839] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:22.801 [DEBUG] [Thread-121839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:26:22.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:26:22.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:22.803 [DEBUG] [Thread-121839] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:22.803 [DEBUG] [Thread-121839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:22.803 [DEBUG] [Thread-121839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:22.803 [DEBUG] [Thread-121839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:26:22.803 [DEBUG] [Thread-121839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:22.815 [INFO] [Thread-121839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:22.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:23.536 [DEBUG] [Thread-121839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:23.536 [DEBUG] [Thread-121839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:23.537 [DEBUG] [Thread-121839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:26:23.577 [DEBUG] [Thread-121839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:23.577 [DEBUG] [Thread-121839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:23.580 [DEBUG] [Thread-121839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:23.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:23.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:26:23.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:26:23.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:26:23.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:23.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:26:23.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:23.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:23.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:26:23.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351128 -999.00  +17.50   2.53     45   +5.50 1 1 1 1 1   888    0 13.90 91.46 ----- 6.2 2.5 192.6 8.5 25.8 -26.8 24.1 -25.7 22.8 -24.9 24.2 -25.6
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351128
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:26:23.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:25:57', tmtdew=12.91, humidity=42.05, cloud=0.0, wind=10.22, temperature=15.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:25:37.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:26:23.599 [DEBUG] [Thread-121839] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:23.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-28T10:26:23.700 [DEBUG] [Thread-121842] [transport.py] [_log()] starting thread (client mode): 0x2b96ec80
2025-09-28T10:26:23.700 [DEBUG] [Thread-121842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:23.746 [DEBUG] [Thread-121842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:26:23.746 [INFO] [Thread-121842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:26:23.787 [DEBUG] [Thread-121842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:23.787 [DEBUG] [Thread-121842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:23.788 [DEBUG] [Thread-121842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] Compression: none
2025-09-28T10:26:23.789 [DEBUG] [Thread-121842] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:23.844 [DEBUG] [Thread-121842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:23.845 [DEBUG] [Thread-121842] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:23.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:26:23.846 [DEBUG] [Thread-121842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:26:23.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:23.955 [DEBUG] [Thread-121842] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:23.956 [DEBUG] [Thread-121842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:23.956 [DEBUG] [Thread-121842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:23.956 [DEBUG] [Thread-121842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:26:23.956 [DEBUG] [Thread-121842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:24.003 [INFO] [Thread-121842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:24.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-28T10:26:24.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:25.078 [DEBUG] [Thread-121842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:25.079 [DEBUG] [Thread-121842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:25.128 [DEBUG] [Thread-121842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:25.128 [DEBUG] [Thread-121842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:25.138 [DEBUG] [Thread-121842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:25.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:25.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-28T10:26: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') -> 00000000
2025-09-28T10:26:25.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:25.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:25.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:25.175 [DEBUG] [Thread-121842] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:28.818 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:28.818 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:35.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:26:35.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:26:35.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-28T10:26:35.546 [DEBUG] [Thread-121844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:35.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 26, 29), 12.89, 42.11, 0.0, 8.12, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:26:35.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:26:29
2025-09-28T10:26:35.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:26:36.028 [DEBUG] [Thread-121845] [transport.py] [_log()] starting thread (client mode): 0x2b96ed70
2025-09-28T10:26:36.028 [DEBUG] [Thread-121845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:36.048 [DEBUG] [Thread-121845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:26:36.048 [INFO] [Thread-121845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:36.052 [DEBUG] [Thread-121845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] Compression: none
2025-09-28T10:26:36.053 [DEBUG] [Thread-121845] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:36.071 [DEBUG] [Thread-121845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:36.071 [DEBUG] [Thread-121845] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:36.072 [DEBUG] [Thread-121845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:26:36.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:26:36.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:36.074 [DEBUG] [Thread-121845] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:36.074 [DEBUG] [Thread-121845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:36.074 [DEBUG] [Thread-121845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:36.074 [DEBUG] [Thread-121845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:26:36.074 [DEBUG] [Thread-121845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:36.098 [INFO] [Thread-121845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:36.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:36.663 [DEBUG] [Thread-121845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:36.664 [DEBUG] [Thread-121845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:36.664 [DEBUG] [Thread-121845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:26:36.704 [DEBUG] [Thread-121845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:36.704 [DEBUG] [Thread-121845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:36.708 [DEBUG] [Thread-121845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:36.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:36.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:26:36.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:26:36.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:26:36.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:36.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:26:36.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351475 -999.00  +17.40   6.03     43   +4.90 1 1 1 1 1   888    0 13.99 90.82 ----- 3.9 6.0 211.6 9.8 25.8 -27.7 23.9 -26.8 22.9 -25.6 24.1 -27.4
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:26:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351475
2025-09-28T10:26:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:26:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:26:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:26:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:26:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:26:36.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:26:29', tmtdew=12.89, humidity=42.11, cloud=0.0, wind=8.12, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:26:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:26:36.729 [DEBUG] [Thread-121845] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26: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-28T10:26:36.829 [DEBUG] [Thread-121848] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T10:26:36.829 [DEBUG] [Thread-121848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:36.849 [DEBUG] [Thread-121848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:26:36.849 [INFO] [Thread-121848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:26:36.859 [DEBUG] [Thread-121848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:36.860 [DEBUG] [Thread-121848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:36.861 [DEBUG] [Thread-121848] [transport.py] [_log()] Compression: none
2025-09-28T10:26:36.861 [DEBUG] [Thread-121848] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:36.924 [DEBUG] [Thread-121848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:36.924 [DEBUG] [Thread-121848] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:36.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:26:36.925 [DEBUG] [Thread-121848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:26:36.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:36.986 [DEBUG] [Thread-121848] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:36.986 [DEBUG] [Thread-121848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:36.986 [DEBUG] [Thread-121848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:36.986 [DEBUG] [Thread-121848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:26:36.986 [DEBUG] [Thread-121848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:37.018 [INFO] [Thread-121848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:37.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-28T10:26:37.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:38.038 [DEBUG] [Thread-121848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:38.038 [DEBUG] [Thread-121848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:38.086 [DEBUG] [Thread-121848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:38.086 [DEBUG] [Thread-121848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:38.095 [DEBUG] [Thread-121848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:38.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:38.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-28T10:26:38.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') -> 00000000
2025-09-28T10:26:38.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:38.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:38.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:38.136 [DEBUG] [Thread-121848] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:48.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:26:48.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:26:48.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:26:48.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 26, 29), 12.89, 42.11, 0.0, 8.12, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:26:48.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:26:29
2025-09-28T10:26:48.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:26:48.969 [DEBUG] [Thread-121850] [transport.py] [_log()] starting thread (client mode): 0x30dde3b0
2025-09-28T10:26:48.970 [DEBUG] [Thread-121850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:48.990 [DEBUG] [Thread-121850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:26:48.990 [INFO] [Thread-121850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:48.993 [DEBUG] [Thread-121850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] Compression: none
2025-09-28T10:26:48.994 [DEBUG] [Thread-121850] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:49.010 [DEBUG] [Thread-121850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:49.011 [DEBUG] [Thread-121850] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:49.011 [DEBUG] [Thread-121850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:26:49.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:26:49.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:49.013 [DEBUG] [Thread-121850] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:49.013 [DEBUG] [Thread-121850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:49.013 [DEBUG] [Thread-121850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:49.014 [DEBUG] [Thread-121850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:26:49.014 [DEBUG] [Thread-121850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:49.031 [INFO] [Thread-121850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:49.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:49.761 [DEBUG] [Thread-121850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:49.762 [DEBUG] [Thread-121850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:49.762 [DEBUG] [Thread-121850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:26:49.802 [DEBUG] [Thread-121850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:49.802 [DEBUG] [Thread-121850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:49.805 [DEBUG] [Thread-121850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:49.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26:49.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:26:49.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:26:49.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:26:49.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:49.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:26:49.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:49.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:49.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:26:49.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351475 -999.00  +17.40   6.03     43   +4.90 1 1 1 1 1   888    0 13.99 90.82 ----- 3.9 6.0 211.6 9.8 25.8 -27.7 23.9 -26.8 22.9 -25.6 24.1 -27.4
2025-09-28T10:26:49.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:26:49.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:26:49.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351475
2025-09-28T10:26:49.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:26:49.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:26:49.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:26:49.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:26:49.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:26:49.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:26:29', tmtdew=12.89, humidity=42.11, cloud=0.0, wind=8.12, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:26:07.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:26:49.830 [DEBUG] [Thread-121850] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:26:49.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-28T10:26:49.927 [DEBUG] [Thread-121853] [transport.py] [_log()] starting thread (client mode): 0x2b96f310
2025-09-28T10:26:49.927 [DEBUG] [Thread-121853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:26:49.945 [DEBUG] [Thread-121853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:26:49.945 [INFO] [Thread-121853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:26:49.952 [DEBUG] [Thread-121853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] client lang: <none>
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] server lang: <none>
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] kex follows: False
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:26:49.953 [DEBUG] [Thread-121853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:26:49.954 [DEBUG] [Thread-121853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:26:49.954 [DEBUG] [Thread-121853] [transport.py] [_log()] Compression: none
2025-09-28T10:26:49.954 [DEBUG] [Thread-121853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:26:50.011 [DEBUG] [Thread-121853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:26:50.012 [DEBUG] [Thread-121853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:26:50.012 [DEBUG] [Thread-121853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:26:50.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:26:50.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:26:50.069 [DEBUG] [Thread-121853] [transport.py] [_log()] userauth is OK
2025-09-28T10:26:50.069 [DEBUG] [Thread-121853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:26:50.069 [DEBUG] [Thread-121853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:26:50.069 [DEBUG] [Thread-121853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:26:50.069 [DEBUG] [Thread-121853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:26:50.089 [INFO] [Thread-121853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:26:50.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-28T10:26:50.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:26:50.573 [DEBUG] [Thread-121855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:26:51.145 [DEBUG] [Thread-121853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:26:51.145 [DEBUG] [Thread-121853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:26:51.220 [DEBUG] [Thread-121853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:26:51.220 [DEBUG] [Thread-121853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:26:51.254 [DEBUG] [Thread-121853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:26:51.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:26: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')
2025-09-28T10:26:51.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-28T10:26:51.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:26:51.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:26:51.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:26:51.313 [DEBUG] [Thread-121853] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:01.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:27:01.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:27:01.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-28T10:27:01.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 26, 29), 12.89, 42.11, 0.0, 8.12, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:27:01.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:26:29
2025-09-28T10:27:02.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:27:02.195 [DEBUG] [Thread-121856] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-28T10:27:02.195 [DEBUG] [Thread-121856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:02.221 [DEBUG] [Thread-121856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:27:02.221 [INFO] [Thread-121856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] Compression: none
2025-09-28T10:27:02.223 [DEBUG] [Thread-121856] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:02.243 [DEBUG] [Thread-121856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:02.243 [DEBUG] [Thread-121856] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:02.244 [DEBUG] [Thread-121856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:27:02.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:27:02.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:02.244 [DEBUG] [Thread-121856] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:02.244 [DEBUG] [Thread-121856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:02.244 [DEBUG] [Thread-121856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:02.244 [DEBUG] [Thread-121856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:27:02.245 [DEBUG] [Thread-121856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:02.253 [INFO] [Thread-121856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:02.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:02.839 [DEBUG] [Thread-121856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:02.839 [DEBUG] [Thread-121856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:02.840 [DEBUG] [Thread-121856] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:27:02.869 [DEBUG] [Thread-121858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:02.881 [DEBUG] [Thread-121856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:02.881 [DEBUG] [Thread-121856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:02.883 [DEBUG] [Thread-121856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:02.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:02.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:27:02.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:27:02.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:27:02.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:02.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:27:02.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351822 -999.00  +17.20   9.52     44   +5.10 1 1 1 1 1   888    0 14.02 99.65 ----- 7.2 9.5 203.4 12.3 25.8 -27.1 24.0 -27.2 23.0 -25.6 24.2 -26.1
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351822
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:27:02.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:26:29', tmtdew=12.89, humidity=42.11, cloud=0.0, wind=8.12, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:26:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:27:02.912 [DEBUG] [Thread-121856] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:02.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-28T10:27:02.998 [DEBUG] [Thread-121860] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T10:27:02.998 [DEBUG] [Thread-121860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:03.013 [DEBUG] [Thread-121860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:27:03.013 [INFO] [Thread-121860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:27:03.020 [DEBUG] [Thread-121860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] Compression: none
2025-09-28T10:27:03.021 [DEBUG] [Thread-121860] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:03.078 [DEBUG] [Thread-121860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:03.079 [DEBUG] [Thread-121860] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:03.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:27:03.079 [DEBUG] [Thread-121860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:27:03.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:03.135 [DEBUG] [Thread-121860] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:03.135 [DEBUG] [Thread-121860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:03.135 [DEBUG] [Thread-121860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:03.135 [DEBUG] [Thread-121860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:27:03.135 [DEBUG] [Thread-121860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:03.151 [INFO] [Thread-121860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:03.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-28T10:27:03.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:04.211 [DEBUG] [Thread-121860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:04.211 [DEBUG] [Thread-121860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:04.259 [DEBUG] [Thread-121860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:04.259 [DEBUG] [Thread-121860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:04.267 [DEBUG] [Thread-121860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:04.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:04.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-28T10:27:04.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-28T10:27:04.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:04.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:04.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:04.301 [DEBUG] [Thread-121860] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:05.623 [DEBUG] [Thread-121862 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:14.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:27:14.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:27:14.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-28T10:27:14.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 27, 1), 12.75, 42.51, 0.0, 6.37, 15.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:27:14.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:27:01
2025-09-28T10:27:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:27:15.143 [DEBUG] [Thread-121863] [transport.py] [_log()] starting thread (client mode): 0x2b98a590
2025-09-28T10:27:15.144 [DEBUG] [Thread-121863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:15.166 [DEBUG] [Thread-121863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:27:15.166 [INFO] [Thread-121863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:27:15.169 [DEBUG] [Thread-121863] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:15.169 [DEBUG] [Thread-121863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:27:15.169 [DEBUG] [Thread-121863] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] Compression: none
2025-09-28T10:27:15.170 [DEBUG] [Thread-121863] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:15.186 [DEBUG] [Thread-121863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:15.186 [DEBUG] [Thread-121863] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:15.187 [DEBUG] [Thread-121863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:27:15.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:27:15.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:15.188 [DEBUG] [Thread-121863] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:15.189 [DEBUG] [Thread-121863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:15.189 [DEBUG] [Thread-121863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:15.189 [DEBUG] [Thread-121863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:27:15.189 [DEBUG] [Thread-121863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:15.212 [INFO] [Thread-121863] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:15.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:16.020 [DEBUG] [Thread-121863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:16.020 [DEBUG] [Thread-121863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:16.021 [DEBUG] [Thread-121863] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:27:16.061 [DEBUG] [Thread-121863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:16.061 [DEBUG] [Thread-121863] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:16.064 [DEBUG] [Thread-121863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:16.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:16.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:27:16.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:27:16.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:27:16.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:16.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:27:16.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351822 -999.00  +17.20   9.52     44   +5.10 1 1 1 1 1   888    0 14.02 99.65 ----- 7.2 9.5 203.4 12.3 25.8 -27.1 24.0 -27.2 23.0 -25.6 24.2 -26.1
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:27:16.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351822
2025-09-28T10:27:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:27:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:27:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:27:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:27:16.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:27:16.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:27:01', tmtdew=12.75, humidity=42.51, cloud=0.0, wind=6.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:26:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:27:16.087 [DEBUG] [Thread-121863] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:16.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-28T10:27:16.182 [DEBUG] [Thread-121866] [transport.py] [_log()] starting thread (client mode): 0x30dde590
2025-09-28T10:27:16.182 [DEBUG] [Thread-121866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:16.197 [DEBUG] [Thread-121866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:27:16.198 [INFO] [Thread-121866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:27:16.205 [DEBUG] [Thread-121866] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:16.206 [DEBUG] [Thread-121866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:16.207 [DEBUG] [Thread-121866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:16.208 [DEBUG] [Thread-121866] [transport.py] [_log()] Compression: none
2025-09-28T10:27:16.208 [DEBUG] [Thread-121866] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:16.275 [DEBUG] [Thread-121866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:16.276 [DEBUG] [Thread-121866] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:16.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:27:16.277 [DEBUG] [Thread-121866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:27:16.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:16.332 [DEBUG] [Thread-121866] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:16.332 [DEBUG] [Thread-121866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:16.333 [DEBUG] [Thread-121866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:16.333 [DEBUG] [Thread-121866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:27:16.333 [DEBUG] [Thread-121866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:16.352 [INFO] [Thread-121866] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:16.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-28T10:27:16.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:17.350 [DEBUG] [Thread-121866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:17.350 [DEBUG] [Thread-121866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:17.402 [DEBUG] [Thread-121866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:17.402 [DEBUG] [Thread-121866] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:17.412 [DEBUG] [Thread-121866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:17.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27: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-28T10:27:17.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') -> 00000000
2025-09-28T10:27:17.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:17.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:17.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:17.448 [DEBUG] [Thread-121866] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:20.658 [DEBUG] [Thread-121868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:27.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:27:27.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:27:27.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-28T10:27:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 27, 1), 12.75, 42.51, 0.0, 6.37, 15.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:27:28.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:27:01
2025-09-28T10:27:28.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:27:28.269 [DEBUG] [Thread-121869] [transport.py] [_log()] starting thread (client mode): 0x30dddfc0
2025-09-28T10:27:28.269 [DEBUG] [Thread-121869] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:28.289 [DEBUG] [Thread-121869] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:27:28.289 [INFO] [Thread-121869] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] Compression: none
2025-09-28T10:27:28.291 [DEBUG] [Thread-121869] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:28.305 [DEBUG] [Thread-121869] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:28.305 [DEBUG] [Thread-121869] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:28.306 [DEBUG] [Thread-121869] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:27:28.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:27:28.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:28.308 [DEBUG] [Thread-121869] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:28.308 [DEBUG] [Thread-121869] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:28.308 [DEBUG] [Thread-121869] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:28.308 [DEBUG] [Thread-121869] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:27:28.308 [DEBUG] [Thread-121869] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:28.329 [INFO] [Thread-121869] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:28.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:28.959 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:28.960 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:29.038 [DEBUG] [Thread-121869] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:29.038 [DEBUG] [Thread-121869] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:29.038 [DEBUG] [Thread-121869] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:27:29.079 [DEBUG] [Thread-121869] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:29.079 [DEBUG] [Thread-121869] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:29.082 [DEBUG] [Thread-121869] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:29.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:29.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:27:29.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:27:29.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:27:29.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:29.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:27:29.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:29.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:29.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:27:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.351822 -999.00  +17.20   9.52     44   +5.10 1 1 1 1 1   888    0 14.02 99.65 ----- 7.2 9.5 203.4 12.3 25.8 -27.1 24.0 -27.2 23.0 -25.6 24.2 -26.1
2025-09-28T10:27:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:27:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:27:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.351822
2025-09-28T10:27:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:27:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:27:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:27:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:27:29.102 [DEBUG] [Thread-121869] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:27:29.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:27:01', tmtdew=12.75, humidity=42.51, cloud=0.0, wind=6.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:26:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:27:29.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-28T10:27:29.197 [DEBUG] [Thread-121872] [transport.py] [_log()] starting thread (client mode): 0x30ddcbb0
2025-09-28T10:27:29.197 [DEBUG] [Thread-121872] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:29.212 [DEBUG] [Thread-121872] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:27:29.212 [INFO] [Thread-121872] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:29.220 [DEBUG] [Thread-121872] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] Compression: none
2025-09-28T10:27:29.221 [DEBUG] [Thread-121872] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:29.279 [DEBUG] [Thread-121872] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:29.280 [DEBUG] [Thread-121872] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:29.280 [DEBUG] [Thread-121872] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:27:29.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:27:29.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:29.335 [DEBUG] [Thread-121872] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:29.335 [DEBUG] [Thread-121872] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:29.336 [DEBUG] [Thread-121872] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:29.336 [DEBUG] [Thread-121872] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:27:29.336 [DEBUG] [Thread-121872] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:29.354 [INFO] [Thread-121872] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:29.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-28T10:27:29.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:30.345 [DEBUG] [Thread-121872] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:30.345 [DEBUG] [Thread-121872] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:30.393 [DEBUG] [Thread-121872] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:30.393 [DEBUG] [Thread-121872] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:30.402 [DEBUG] [Thread-121872] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:30.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:30.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-28T10:27:30.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-28T10:27:30.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:30.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:30.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:30.437 [DEBUG] [Thread-121872] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:35.713 [DEBUG] [Thread-121874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:40.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:27:40.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:27:40.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-28T10:27:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 27, 33), 12.83, 42.28, 0.0, 7.46, 16.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:27:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:27:33
2025-09-28T10:27:41.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:27:41.296 [DEBUG] [Thread-121875] [transport.py] [_log()] starting thread (client mode): 0x2b96d3c0
2025-09-28T10:27:41.296 [DEBUG] [Thread-121875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:41.316 [DEBUG] [Thread-121875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:27:41.317 [INFO] [Thread-121875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:27:41.318 [DEBUG] [Thread-121875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:41.318 [DEBUG] [Thread-121875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:27:41.318 [DEBUG] [Thread-121875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:41.318 [DEBUG] [Thread-121875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:41.318 [DEBUG] [Thread-121875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] Compression: none
2025-09-28T10:27:41.319 [DEBUG] [Thread-121875] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:41.331 [DEBUG] [Thread-121875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:41.331 [DEBUG] [Thread-121875] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:41.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:27:41.331 [DEBUG] [Thread-121875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:27:41.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:41.332 [DEBUG] [Thread-121875] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:41.332 [DEBUG] [Thread-121875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:41.332 [DEBUG] [Thread-121875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:41.332 [DEBUG] [Thread-121875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:27:41.332 [DEBUG] [Thread-121875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:41.344 [INFO] [Thread-121875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:41.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:41.971 [DEBUG] [Thread-121875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:41.971 [DEBUG] [Thread-121875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:41.971 [DEBUG] [Thread-121875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:27:42.012 [DEBUG] [Thread-121875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:42.012 [DEBUG] [Thread-121875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:42.014 [DEBUG] [Thread-121875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:42.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:42.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:27:42.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:27:42.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:42.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:27:42.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.352169 -999.00  +17.10   4.90     45   +5.10 1 1 1 1 1   888    0 14.37 102.05 ----- 4.5 4.9 185.9 8.9 25.8 -26.6 24.1 -25.1 23.0 -25.3 24.3 -25.7
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:27:42.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.352169
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:27:42.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:27:33', tmtdew=12.83, humidity=42.28, cloud=0.0, wind=7.46, temperature=16.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:27:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:27:42.034 [DEBUG] [Thread-121875] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:42.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-28T10:27:42.121 [DEBUG] [Thread-121878] [transport.py] [_log()] starting thread (client mode): 0x2b94ded0
2025-09-28T10:27:42.121 [DEBUG] [Thread-121878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:42.136 [DEBUG] [Thread-121878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:27:42.136 [INFO] [Thread-121878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:42.143 [DEBUG] [Thread-121878] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] Compression: none
2025-09-28T10:27:42.144 [DEBUG] [Thread-121878] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:42.202 [DEBUG] [Thread-121878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:42.203 [DEBUG] [Thread-121878] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:42.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:27:42.203 [DEBUG] [Thread-121878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:27:42.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:42.263 [DEBUG] [Thread-121878] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:42.263 [DEBUG] [Thread-121878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:42.263 [DEBUG] [Thread-121878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:42.263 [DEBUG] [Thread-121878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:27:42.263 [DEBUG] [Thread-121878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:42.278 [INFO] [Thread-121878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:42.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:27:42.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:43.307 [DEBUG] [Thread-121878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:43.307 [DEBUG] [Thread-121878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:43.355 [DEBUG] [Thread-121878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:43.355 [DEBUG] [Thread-121878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:43.363 [DEBUG] [Thread-121878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:43.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:43.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-28T10:27:43.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-28T10:27:43.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:43.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:43.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:43.395 [DEBUG] [Thread-121878] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:50.748 [DEBUG] [Thread-121880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:27:53.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:27:53.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:27:53.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-28T10:27:53.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 27, 33), 12.83, 42.28, 0.0, 7.46, 16.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:27:53.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:27:33
2025-09-28T10:27:54.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:27:54.225 [DEBUG] [Thread-121881] [transport.py] [_log()] starting thread (client mode): 0x2b9dd0c0
2025-09-28T10:27:54.226 [DEBUG] [Thread-121881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:54.245 [DEBUG] [Thread-121881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:27:54.245 [INFO] [Thread-121881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:54.248 [DEBUG] [Thread-121881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] Compression: none
2025-09-28T10:27:54.249 [DEBUG] [Thread-121881] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:54.265 [DEBUG] [Thread-121881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:54.266 [DEBUG] [Thread-121881] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:54.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:27:54.266 [DEBUG] [Thread-121881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:27:54.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:54.268 [DEBUG] [Thread-121881] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:54.269 [DEBUG] [Thread-121881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:54.269 [DEBUG] [Thread-121881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:54.269 [DEBUG] [Thread-121881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:27:54.269 [DEBUG] [Thread-121881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:54.282 [INFO] [Thread-121881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:54.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:55.072 [DEBUG] [Thread-121881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:55.072 [DEBUG] [Thread-121881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:55.072 [DEBUG] [Thread-121881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:27:55.113 [DEBUG] [Thread-121881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:55.113 [DEBUG] [Thread-121881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:55.116 [DEBUG] [Thread-121881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:55.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:55.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:27:55.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:27:55.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:27:55.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:55.139 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:27:55.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:55.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.352169 -999.00  +17.10   4.90     45   +5.10 1 1 1 1 1   888    0 14.37 102.05 ----- 4.5 4.9 185.9 8.9 25.8 -26.6 24.1 -25.1 23.0 -25.3 24.3 -25.7
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.352169
2025-09-28T10:27:55.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:27:55.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:27:55.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:27:55.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:27:55.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:27:55.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:27:33', tmtdew=12.83, humidity=42.28, cloud=0.0, wind=7.46, temperature=16.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:27:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:27:55.142 [DEBUG] [Thread-121881] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:27:55.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-28T10:27:55.237 [DEBUG] [Thread-121884] [transport.py] [_log()] starting thread (client mode): 0x2e3df0d0
2025-09-28T10:27:55.237 [DEBUG] [Thread-121884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:27:55.251 [DEBUG] [Thread-121884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:27:55.251 [INFO] [Thread-121884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:27:55.259 [DEBUG] [Thread-121884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:27:55.259 [DEBUG] [Thread-121884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] client lang: <none>
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] server lang: <none>
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] kex follows: False
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] Compression: none
2025-09-28T10:27:55.260 [DEBUG] [Thread-121884] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:27:55.320 [DEBUG] [Thread-121884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:27:55.320 [DEBUG] [Thread-121884] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:27:55.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:27:55.321 [DEBUG] [Thread-121884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:27:55.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:27:55.383 [DEBUG] [Thread-121884] [transport.py] [_log()] userauth is OK
2025-09-28T10:27:55.383 [DEBUG] [Thread-121884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:27:55.383 [DEBUG] [Thread-121884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:27:55.383 [DEBUG] [Thread-121884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:27:55.383 [DEBUG] [Thread-121884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:27:55.406 [INFO] [Thread-121884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:27:55.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-28T10:27:55.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:27:56.406 [DEBUG] [Thread-121884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:27:56.406 [DEBUG] [Thread-121884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:27:56.473 [DEBUG] [Thread-121884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:27:56.473 [DEBUG] [Thread-121884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:27:56.491 [DEBUG] [Thread-121884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:27:56.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:27:56.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-28T10:27:56.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-28T10:27:56.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:27:56.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:27:56.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:27:56.536 [DEBUG] [Thread-121884] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:02.920 [DEBUG] [Thread-121886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:05.791 [DEBUG] [Thread-121887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:28:06.534 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:28:06.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-28T10:28:07.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 27, 33), 12.83, 42.28, 0.0, 7.46, 16.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:28:07.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:27:33
2025-09-28T10:28:07.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:28:07.407 [DEBUG] [Thread-121888] [transport.py] [_log()] starting thread (client mode): 0x2e3de470
2025-09-28T10:28:07.407 [DEBUG] [Thread-121888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:07.428 [DEBUG] [Thread-121888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:28:07.428 [INFO] [Thread-121888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:07.431 [DEBUG] [Thread-121888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:07.432 [DEBUG] [Thread-121888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:07.432 [DEBUG] [Thread-121888] [transport.py] [_log()] Compression: none
2025-09-28T10:28:07.432 [DEBUG] [Thread-121888] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:07.449 [DEBUG] [Thread-121888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:07.449 [DEBUG] [Thread-121888] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:07.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:28:07.450 [DEBUG] [Thread-121888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:28:07.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:07.452 [DEBUG] [Thread-121888] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:07.452 [DEBUG] [Thread-121888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:07.452 [DEBUG] [Thread-121888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:07.453 [DEBUG] [Thread-121888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:28:07.453 [DEBUG] [Thread-121888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:07.474 [INFO] [Thread-121888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:07.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:08.273 [DEBUG] [Thread-121888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:08.273 [DEBUG] [Thread-121888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:08.274 [DEBUG] [Thread-121888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:28:08.314 [DEBUG] [Thread-121888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:08.314 [DEBUG] [Thread-121888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:08.316 [DEBUG] [Thread-121888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:08.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:08.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:28:08.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:28:08.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:28:08.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:08.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:28:08.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:08.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:08.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:28:08.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.352169 -999.00  +17.10   4.90     45   +5.10 1 1 1 1 1   888    0 14.37 102.05 ----- 4.5 4.9 185.9 8.9 25.8 -26.6 24.1 -25.1 23.0 -25.3 24.3 -25.7
2025-09-28T10:28:08.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:28:08.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:28:08.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.352169
2025-09-28T10:28:08.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:28:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:28:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:28:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:28:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:28:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:27:33', tmtdew=12.83, humidity=42.28, cloud=0.0, wind=7.46, temperature=16.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:27:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:28:08.338 [DEBUG] [Thread-121888] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:08.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-28T10:28:08.434 [DEBUG] [Thread-121891] [transport.py] [_log()] starting thread (client mode): 0x2e3fa200
2025-09-28T10:28:08.435 [DEBUG] [Thread-121891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:08.449 [DEBUG] [Thread-121891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:28:08.449 [INFO] [Thread-121891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:28:08.457 [DEBUG] [Thread-121891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:08.457 [DEBUG] [Thread-121891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:28:08.457 [DEBUG] [Thread-121891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] Compression: none
2025-09-28T10:28:08.458 [DEBUG] [Thread-121891] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:08.516 [DEBUG] [Thread-121891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:08.517 [DEBUG] [Thread-121891] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:08.517 [DEBUG] [Thread-121891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:28:08.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:28:08.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:08.575 [DEBUG] [Thread-121891] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:08.575 [DEBUG] [Thread-121891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:08.575 [DEBUG] [Thread-121891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:08.575 [DEBUG] [Thread-121891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:28:08.575 [DEBUG] [Thread-121891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:08.596 [INFO] [Thread-121891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:08.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-28T10:28:08.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:09.589 [DEBUG] [Thread-121891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:09.589 [DEBUG] [Thread-121891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:09.640 [DEBUG] [Thread-121891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:09.640 [DEBUG] [Thread-121891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:09.655 [DEBUG] [Thread-121891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:09.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:09.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-28T10:28:09.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-28T10:28:09.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:09.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:09.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:09.698 [DEBUG] [Thread-121891] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:19.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:28:19.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:28:19.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-28T10:28:20.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 28, 5), 12.8, 42.39, 0.0, 9.09, 16.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:28:20.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:28:05
2025-09-28T10:28:20.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:28:20.566 [DEBUG] [Thread-121893] [transport.py] [_log()] starting thread (client mode): 0x2b989d50
2025-09-28T10:28:20.566 [DEBUG] [Thread-121893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:20.586 [DEBUG] [Thread-121893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:28:20.586 [INFO] [Thread-121893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] Compression: none
2025-09-28T10:28:20.589 [DEBUG] [Thread-121893] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:20.608 [DEBUG] [Thread-121893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:20.609 [DEBUG] [Thread-121893] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:20.609 [DEBUG] [Thread-121893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:28:20.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:28:20.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:20.610 [DEBUG] [Thread-121893] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:20.610 [DEBUG] [Thread-121893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:20.610 [DEBUG] [Thread-121893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:20.610 [DEBUG] [Thread-121893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:28:20.610 [DEBUG] [Thread-121893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:20.619 [INFO] [Thread-121893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:20.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:20.815 [DEBUG] [Thread-121895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:21.219 [DEBUG] [Thread-121893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:21.219 [DEBUG] [Thread-121893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:21.219 [DEBUG] [Thread-121893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:28:21.260 [DEBUG] [Thread-121893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:21.260 [DEBUG] [Thread-121893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:21.262 [DEBUG] [Thread-121893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:21.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:21.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:28:21.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:28:21.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:28:21.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:21.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:28:21.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.352516 -999.00  +17.20   3.74     44   +5.10 1 1 1 1 1   888    0 13.89 92.79 ----- 1.5 3.7 212.9 4.6 25.9 -26.5 24.2 -26.2 23.1 -25.2 24.4 -25.7
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.352516
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:28:21.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:28:05', tmtdew=12.8, humidity=42.39, cloud=0.0, wind=9.09, temperature=16.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:27:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:28:21.283 [DEBUG] [Thread-121893] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:21.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-28T10:28:21.393 [DEBUG] [Thread-121897] [transport.py] [_log()] starting thread (client mode): 0x30ddd450
2025-09-28T10:28:21.393 [DEBUG] [Thread-121897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:21.435 [DEBUG] [Thread-121897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:28:21.435 [INFO] [Thread-121897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:21.467 [DEBUG] [Thread-121897] [transport.py] [_log()] Compression: none
2025-09-28T10:28:21.468 [DEBUG] [Thread-121897] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:21.530 [DEBUG] [Thread-121897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:21.530 [DEBUG] [Thread-121897] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:21.530 [DEBUG] [Thread-121897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:28:21.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:28:21.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:21.642 [DEBUG] [Thread-121897] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:21.642 [DEBUG] [Thread-121897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:21.642 [DEBUG] [Thread-121897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:21.642 [DEBUG] [Thread-121897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:28:21.642 [DEBUG] [Thread-121897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:21.684 [INFO] [Thread-121897] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:21.685 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:28:21.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:22.616 [DEBUG] [Thread-121897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:22.616 [DEBUG] [Thread-121897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:22.670 [DEBUG] [Thread-121897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:22.670 [DEBUG] [Thread-121897] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:22.679 [DEBUG] [Thread-121897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:22.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:22.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-28T10:28:22.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-28T10:28:22.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:22.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:22.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:22.712 [DEBUG] [Thread-121897] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:29.103 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:29.104 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:32.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:28:32.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:28:32.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-28T10:28:33.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 28, 5), 12.8, 42.39, 0.0, 9.09, 16.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:28:33.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:28:05
2025-09-28T10:28:33.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:28:33.556 [DEBUG] [Thread-121899] [transport.py] [_log()] starting thread (client mode): 0x2b96e110
2025-09-28T10:28:33.556 [DEBUG] [Thread-121899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:33.578 [DEBUG] [Thread-121899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:28:33.578 [INFO] [Thread-121899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:28:33.581 [DEBUG] [Thread-121899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:33.581 [DEBUG] [Thread-121899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:33.582 [DEBUG] [Thread-121899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:33.583 [DEBUG] [Thread-121899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:33.583 [DEBUG] [Thread-121899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:33.583 [DEBUG] [Thread-121899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:33.583 [DEBUG] [Thread-121899] [transport.py] [_log()] Compression: none
2025-09-28T10:28:33.583 [DEBUG] [Thread-121899] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:33.601 [DEBUG] [Thread-121899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:33.602 [DEBUG] [Thread-121899] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:33.603 [DEBUG] [Thread-121899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:28:33.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:28:33.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:33.605 [DEBUG] [Thread-121899] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:33.605 [DEBUG] [Thread-121899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:33.605 [DEBUG] [Thread-121899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:33.605 [DEBUG] [Thread-121899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:28:33.605 [DEBUG] [Thread-121899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:33.628 [INFO] [Thread-121899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:33.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:34.434 [DEBUG] [Thread-121899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:34.434 [DEBUG] [Thread-121899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:34.434 [DEBUG] [Thread-121899] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:28:34.475 [DEBUG] [Thread-121899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:34.475 [DEBUG] [Thread-121899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:34.478 [DEBUG] [Thread-121899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:34.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:34.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:28:34.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:28:34.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:28:34.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:34.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:28:34.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:34.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:34.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:28:34.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.352516 -999.00  +17.20   3.74     44   +5.10 1 1 1 1 1   888    0 13.89 92.79 ----- 1.5 3.7 212.9 4.6 25.9 -26.5 24.2 -26.2 23.1 -25.2 24.4 -25.7
2025-09-28T10:28:34.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:28:34.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.352516
2025-09-28T10:28:34.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:28:34.494 [DEBUG] [Thread-121899] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:34.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:28:34.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:28:34.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:28:34.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:28:34.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:28:05', tmtdew=12.8, humidity=42.39, cloud=0.0, wind=9.09, temperature=16.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:27:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:28:34.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:28:34.592 [DEBUG] [Thread-121902] [transport.py] [_log()] starting thread (client mode): 0x2b98aad0
2025-09-28T10:28:34.592 [DEBUG] [Thread-121902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:34.607 [DEBUG] [Thread-121902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:28:34.607 [INFO] [Thread-121902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:34.615 [DEBUG] [Thread-121902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:34.616 [DEBUG] [Thread-121902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:34.616 [DEBUG] [Thread-121902] [transport.py] [_log()] Compression: none
2025-09-28T10:28:34.616 [DEBUG] [Thread-121902] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:34.676 [DEBUG] [Thread-121902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:34.677 [DEBUG] [Thread-121902] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:34.677 [DEBUG] [Thread-121902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:28:34.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:28:34.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:34.734 [DEBUG] [Thread-121902] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:34.734 [DEBUG] [Thread-121902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:34.735 [DEBUG] [Thread-121902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:34.735 [DEBUG] [Thread-121902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:28:34.735 [DEBUG] [Thread-121902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:34.753 [INFO] [Thread-121902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:34.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-28T10:28:34.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:35.724 [DEBUG] [Thread-121902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:35.724 [DEBUG] [Thread-121902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:35.772 [DEBUG] [Thread-121902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:35.773 [DEBUG] [Thread-121902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:35.783 [DEBUG] [Thread-121902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:35.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:35.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-28T10:28:35.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-28T10:28:35.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:35.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:35.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:35.827 [DEBUG] [Thread-121902] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:35.850 [DEBUG] [Thread-121904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:45.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:28:45.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:28:45.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-28T10:28:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 28, 37), 12.83, 42.05, 0.0, 9.97, 16.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:28:46.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:28:37
2025-09-28T10:28:46.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:28:46.651 [DEBUG] [Thread-121905] [transport.py] [_log()] starting thread (client mode): 0x2e3f9660
2025-09-28T10:28:46.652 [DEBUG] [Thread-121905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:46.672 [DEBUG] [Thread-121905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:28:46.672 [INFO] [Thread-121905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:46.673 [DEBUG] [Thread-121905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] Compression: none
2025-09-28T10:28:46.674 [DEBUG] [Thread-121905] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:46.682 [DEBUG] [Thread-121905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:46.683 [DEBUG] [Thread-121905] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:46.683 [DEBUG] [Thread-121905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:28:46.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:28:46.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:46.684 [DEBUG] [Thread-121905] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:46.685 [DEBUG] [Thread-121905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:46.685 [DEBUG] [Thread-121905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:46.685 [DEBUG] [Thread-121905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:28:46.685 [DEBUG] [Thread-121905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:46.697 [INFO] [Thread-121905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:46.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:47.340 [DEBUG] [Thread-121905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:47.340 [DEBUG] [Thread-121905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:47.340 [DEBUG] [Thread-121905] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:28:47.380 [DEBUG] [Thread-121905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:47.380 [DEBUG] [Thread-121905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:47.383 [DEBUG] [Thread-121905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:47.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:47.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:28:47.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:28:47.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:28:47.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:47.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:28:47.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:47.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:47.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:28:47.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353211 -999.00  +17.50   2.24     45   +5.50 1 1 1 1 1   888    0 13.70 88.97 ----- 1.4 2.2 206.2 4.1 26.2 -26.6 24.5 -26.3 23.2 -25.1 24.6 -26.3
2025-09-28T10:28:47.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:28:47.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:28:47.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353211
2025-09-28T10:28:47.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:28:47.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:28:47.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:28:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:28:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:28:47.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:28:37', tmtdew=12.83, humidity=42.05, cloud=0.0, wind=9.97, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:28:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:28:47.415 [DEBUG] [Thread-121905] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:47.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-28T10:28:47.509 [DEBUG] [Thread-121908] [transport.py] [_log()] starting thread (client mode): 0x2e38d810
2025-09-28T10:28:47.510 [DEBUG] [Thread-121908] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:47.524 [DEBUG] [Thread-121908] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:28:47.524 [INFO] [Thread-121908] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:47.532 [DEBUG] [Thread-121908] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] Compression: none
2025-09-28T10:28:47.533 [DEBUG] [Thread-121908] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:47.590 [DEBUG] [Thread-121908] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:47.591 [DEBUG] [Thread-121908] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:47.591 [DEBUG] [Thread-121908] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:28:47.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:28:47.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:47.646 [DEBUG] [Thread-121908] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:47.647 [DEBUG] [Thread-121908] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:47.647 [DEBUG] [Thread-121908] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:47.647 [DEBUG] [Thread-121908] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:28:47.647 [DEBUG] [Thread-121908] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:47.665 [INFO] [Thread-121908] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:47.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-28T10:28:47.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:28:48.641 [DEBUG] [Thread-121908] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:28:48.641 [DEBUG] [Thread-121908] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:28:48.690 [DEBUG] [Thread-121908] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:28:48.690 [DEBUG] [Thread-121908] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:28:48.698 [DEBUG] [Thread-121908] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:28:48.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:28:48.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-28T10:28:48.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-28T10:28:48.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:28:48.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:28:48.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:28:48.732 [DEBUG] [Thread-121908] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:28:50.905 [DEBUG] [Thread-121910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:28:58.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:28:58.734 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:28:58.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-28T10:28:59.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 28, 37), 12.83, 42.05, 0.0, 9.97, 16.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:28:59.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:28:37
2025-09-28T10:28:59.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:28:59.564 [DEBUG] [Thread-121911] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T10:28:59.564 [DEBUG] [Thread-121911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:28:59.586 [DEBUG] [Thread-121911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:28:59.586 [INFO] [Thread-121911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:28:59.589 [DEBUG] [Thread-121911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:28:59.590 [DEBUG] [Thread-121911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] client lang: <none>
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] server lang: <none>
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] kex follows: False
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] Compression: none
2025-09-28T10:28:59.591 [DEBUG] [Thread-121911] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:28:59.608 [DEBUG] [Thread-121911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:28:59.608 [DEBUG] [Thread-121911] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:28:59.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:28:59.609 [DEBUG] [Thread-121911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:28:59.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:28:59.611 [DEBUG] [Thread-121911] [transport.py] [_log()] userauth is OK
2025-09-28T10:28:59.611 [DEBUG] [Thread-121911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:28:59.611 [DEBUG] [Thread-121911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:28:59.611 [DEBUG] [Thread-121911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:28:59.611 [DEBUG] [Thread-121911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:28:59.646 [INFO] [Thread-121911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:28:59.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:00.451 [DEBUG] [Thread-121911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:00.451 [DEBUG] [Thread-121911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:00.451 [DEBUG] [Thread-121911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:29:00.492 [DEBUG] [Thread-121911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:00.492 [DEBUG] [Thread-121911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:00.496 [DEBUG] [Thread-121911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:00.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:00.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:29:00.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:29:00.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:29:00.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:00.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:29:00.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:00.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:00.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:29:00.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353211 -999.00  +17.50   2.24     45   +5.50 1 1 1 1 1   888    0 13.70 88.97 ----- 1.4 2.2 206.2 4.1 26.2 -26.6 24.5 -26.3 23.2 -25.1 24.6 -26.3
2025-09-28T10:29:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:29:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:29:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353211
2025-09-28T10:29:00.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:29:00.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:29:00.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:29:00.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:29:00.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:29:00.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:28:37', tmtdew=12.83, humidity=42.05, cloud=0.0, wind=9.97, temperature=16.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:28:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:29:00.519 [DEBUG] [Thread-121911] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:00.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-28T10:29:00.615 [DEBUG] [Thread-121914] [transport.py] [_log()] starting thread (client mode): 0x2b98b490
2025-09-28T10:29:00.615 [DEBUG] [Thread-121914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:00.630 [DEBUG] [Thread-121914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:29:00.630 [INFO] [Thread-121914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:00.638 [DEBUG] [Thread-121914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:00.639 [DEBUG] [Thread-121914] [transport.py] [_log()] Compression: none
2025-09-28T10:29:00.639 [DEBUG] [Thread-121914] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:00.695 [DEBUG] [Thread-121914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:00.695 [DEBUG] [Thread-121914] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:00.696 [DEBUG] [Thread-121914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:29:00.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:29:00.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:00.754 [DEBUG] [Thread-121914] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:00.755 [DEBUG] [Thread-121914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:00.755 [DEBUG] [Thread-121914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:00.755 [DEBUG] [Thread-121914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:29:00.755 [DEBUG] [Thread-121914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:00.774 [INFO] [Thread-121914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:00.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-28T10:29:00.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:01.809 [DEBUG] [Thread-121914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:01.810 [DEBUG] [Thread-121914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:01.857 [DEBUG] [Thread-121914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:01.857 [DEBUG] [Thread-121914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:01.865 [DEBUG] [Thread-121914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:01.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:01.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-28T10:29:01.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-28T10:29:01.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:01.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:01.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:01.898 [DEBUG] [Thread-121914] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:02.978 [DEBUG] [Thread-121916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:05.956 [DEBUG] [Thread-121917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:11.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:29:11.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:29:11.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-28T10:29:12.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 29, 9), 12.89, 41.88, 0.0, 8.82, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:29:12.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:29:09
2025-09-28T10:29:12.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:29:12.725 [DEBUG] [Thread-121918] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T10:29:12.725 [DEBUG] [Thread-121918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:12.744 [DEBUG] [Thread-121918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:29:12.744 [INFO] [Thread-121918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:29:12.747 [DEBUG] [Thread-121918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:12.748 [DEBUG] [Thread-121918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:12.749 [DEBUG] [Thread-121918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:12.749 [DEBUG] [Thread-121918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:12.749 [DEBUG] [Thread-121918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:12.749 [DEBUG] [Thread-121918] [transport.py] [_log()] Compression: none
2025-09-28T10:29:12.749 [DEBUG] [Thread-121918] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:12.767 [DEBUG] [Thread-121918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:12.767 [DEBUG] [Thread-121918] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:12.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:29:12.768 [DEBUG] [Thread-121918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:29:12.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:12.770 [DEBUG] [Thread-121918] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:12.770 [DEBUG] [Thread-121918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:12.771 [DEBUG] [Thread-121918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:12.771 [DEBUG] [Thread-121918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:29:12.771 [DEBUG] [Thread-121918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:12.794 [INFO] [Thread-121918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:12.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:13.568 [DEBUG] [Thread-121918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:13.569 [DEBUG] [Thread-121918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:13.569 [DEBUG] [Thread-121918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:29:13.609 [DEBUG] [Thread-121918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:13.610 [DEBUG] [Thread-121918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:13.612 [DEBUG] [Thread-121918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:13.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:13.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:29:13.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:29:13.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:29:13.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:13.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:29:13.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:13.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:29:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353211 -999.00  +17.50   2.24     45   +5.50 1 1 1 1 1   888    0 13.70 88.97 ----- 1.4 2.2 206.2 4.1 26.2 -26.6 24.5 -26.3 23.2 -25.1 24.6 -26.3
2025-09-28T10:29:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:29:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:29:13.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353211
2025-09-28T10:29:13.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:29:13.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:29:13.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:29:13.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:29:13.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:29:13.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:29:09', tmtdew=12.89, humidity=41.88, cloud=0.0, wind=8.82, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:28:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:29:13.636 [DEBUG] [Thread-121918] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:13.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:29:13.730 [DEBUG] [Thread-121921] [transport.py] [_log()] starting thread (client mode): 0x2e3f85e0
2025-09-28T10:29:13.730 [DEBUG] [Thread-121921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:13.745 [DEBUG] [Thread-121921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:29:13.745 [INFO] [Thread-121921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] Compression: none
2025-09-28T10:29:13.753 [DEBUG] [Thread-121921] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:13.811 [DEBUG] [Thread-121921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:13.811 [DEBUG] [Thread-121921] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:13.812 [DEBUG] [Thread-121921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:29:13.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:29:13.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:13.873 [DEBUG] [Thread-121921] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:13.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:13.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:13.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:29:13.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:13.891 [INFO] [Thread-121921] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:13.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-28T10:29:13.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:14.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:14.873 [DEBUG] [Thread-121921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:14.921 [DEBUG] [Thread-121921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:14.921 [DEBUG] [Thread-121921] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:14.931 [DEBUG] [Thread-121921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:14.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:14.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-28T10:29:14.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-28T10:29:14.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:14.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:14.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:14.965 [DEBUG] [Thread-121921] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:20.986 [DEBUG] [Thread-121923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:24.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:29:24.967 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:29:24.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-28T10:29:25.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 29, 9), 12.89, 41.88, 0.0, 8.82, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:29:25.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:29:09
2025-09-28T10:29:25.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:29:25.814 [DEBUG] [Thread-121924] [transport.py] [_log()] starting thread (client mode): 0x2b9cd360
2025-09-28T10:29:25.814 [DEBUG] [Thread-121924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:25.833 [DEBUG] [Thread-121924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:29:25.834 [INFO] [Thread-121924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:29:25.836 [DEBUG] [Thread-121924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:25.837 [DEBUG] [Thread-121924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:25.838 [DEBUG] [Thread-121924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:25.838 [DEBUG] [Thread-121924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:25.838 [DEBUG] [Thread-121924] [transport.py] [_log()] Compression: none
2025-09-28T10:29:25.838 [DEBUG] [Thread-121924] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:25.848 [DEBUG] [Thread-121924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:25.849 [DEBUG] [Thread-121924] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:25.849 [DEBUG] [Thread-121924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:29:25.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:29:25.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:25.851 [DEBUG] [Thread-121924] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:25.852 [DEBUG] [Thread-121924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:25.852 [DEBUG] [Thread-121924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:25.852 [DEBUG] [Thread-121924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:29:25.852 [DEBUG] [Thread-121924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:25.871 [INFO] [Thread-121924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:25.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:26.487 [DEBUG] [Thread-121924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:26.487 [DEBUG] [Thread-121924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:26.488 [DEBUG] [Thread-121924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:29:26.528 [DEBUG] [Thread-121924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:26.529 [DEBUG] [Thread-121924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:26.531 [DEBUG] [Thread-121924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:26.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:26.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:29:26.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:29:26.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:29:26.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:26.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:29:26.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:26.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353558 -999.00  +17.80   1.81     44   +5.70 1 1 1 1 1   888    0 13.83 89.28 ----- 4.6 1.8 259.6 6.5 26.4 -26.4 24.6 -25.0 23.4 -25.2 24.7 -25.7
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353558
2025-09-28T10:29:26.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:29:26.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:29:26.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:29:26.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:29:26.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:29:26.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:29:09', tmtdew=12.89, humidity=41.88, cloud=0.0, wind=8.82, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:29:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:29:26.556 [DEBUG] [Thread-121924] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:26.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:29:26.653 [DEBUG] [Thread-121927] [transport.py] [_log()] starting thread (client mode): 0x2b9b97b0
2025-09-28T10:29:26.653 [DEBUG] [Thread-121927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:26.668 [DEBUG] [Thread-121927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:29:26.668 [INFO] [Thread-121927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:29:26.675 [DEBUG] [Thread-121927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:26.675 [DEBUG] [Thread-121927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] Compression: none
2025-09-28T10:29:26.676 [DEBUG] [Thread-121927] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:26.733 [DEBUG] [Thread-121927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:26.734 [DEBUG] [Thread-121927] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:26.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:29:26.735 [DEBUG] [Thread-121927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:29:26.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:26.794 [DEBUG] [Thread-121927] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:26.794 [DEBUG] [Thread-121927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:26.794 [DEBUG] [Thread-121927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:26.794 [DEBUG] [Thread-121927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:29:26.794 [DEBUG] [Thread-121927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:26.819 [INFO] [Thread-121927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:26.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-28T10:29:26.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:27.797 [DEBUG] [Thread-121927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:27.797 [DEBUG] [Thread-121927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:27.845 [DEBUG] [Thread-121927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:27.845 [DEBUG] [Thread-121927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:27.854 [DEBUG] [Thread-121927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:27.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:27.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-28T10:29:27.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-28T10:29:27.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:27.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:27.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:27.887 [DEBUG] [Thread-121927] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:29.245 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:29.246 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:36.030 [DEBUG] [Thread-121929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:37.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:29:37.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:29:37.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-28T10:29:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 29, 9), 12.89, 41.88, 0.0, 8.82, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:29:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:29:09
2025-09-28T10:29:38.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:29:38.724 [DEBUG] [Thread-121930] [transport.py] [_log()] starting thread (client mode): 0x2e38ccd0
2025-09-28T10:29:38.724 [DEBUG] [Thread-121930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:38.745 [DEBUG] [Thread-121930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:29:38.746 [INFO] [Thread-121930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:29:38.749 [DEBUG] [Thread-121930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:38.749 [DEBUG] [Thread-121930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] Compression: none
2025-09-28T10:29:38.750 [DEBUG] [Thread-121930] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:38.767 [DEBUG] [Thread-121930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:38.768 [DEBUG] [Thread-121930] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:38.768 [DEBUG] [Thread-121930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:29:38.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:29:38.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:38.770 [DEBUG] [Thread-121930] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:38.770 [DEBUG] [Thread-121930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:38.770 [DEBUG] [Thread-121930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:38.770 [DEBUG] [Thread-121930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:29:38.770 [DEBUG] [Thread-121930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:38.788 [INFO] [Thread-121930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:38.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:39.596 [DEBUG] [Thread-121930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:39.596 [DEBUG] [Thread-121930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:39.597 [DEBUG] [Thread-121930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:29:39.638 [DEBUG] [Thread-121930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:39.638 [DEBUG] [Thread-121930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:39.641 [DEBUG] [Thread-121930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:39.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:39.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:29:39.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:29:39.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:29:39.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:39.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:29:39.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353558 -999.00  +17.80   1.81     44   +5.70 1 1 1 1 1   888    0 13.83 89.28 ----- 4.6 1.8 259.6 6.5 26.4 -26.4 24.6 -25.0 23.4 -25.2 24.7 -25.7
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:29:39.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353558
2025-09-28T10:29:39.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:29:39.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:29:39.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:29:39.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:29:39.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:29:39.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:29:09', tmtdew=12.89, humidity=41.88, cloud=0.0, wind=8.82, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:29:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:29:39.666 [DEBUG] [Thread-121930] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:39.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-28T10:29:39.766 [DEBUG] [Thread-121933] [transport.py] [_log()] starting thread (client mode): 0x2e3de320
2025-09-28T10:29:39.766 [DEBUG] [Thread-121933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:39.782 [DEBUG] [Thread-121933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:29:39.782 [INFO] [Thread-121933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:29:39.790 [DEBUG] [Thread-121933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:39.791 [DEBUG] [Thread-121933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:39.792 [DEBUG] [Thread-121933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:39.793 [DEBUG] [Thread-121933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:39.793 [DEBUG] [Thread-121933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:39.793 [DEBUG] [Thread-121933] [transport.py] [_log()] Compression: none
2025-09-28T10:29:39.793 [DEBUG] [Thread-121933] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:39.852 [DEBUG] [Thread-121933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:39.852 [DEBUG] [Thread-121933] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:39.853 [DEBUG] [Thread-121933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:29:39.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:29:39.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:39.911 [DEBUG] [Thread-121933] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:39.911 [DEBUG] [Thread-121933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:39.912 [DEBUG] [Thread-121933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:39.912 [DEBUG] [Thread-121933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:29:39.912 [DEBUG] [Thread-121933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:39.931 [INFO] [Thread-121933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:39.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-28T10:29:39.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:40.946 [DEBUG] [Thread-121933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:40.946 [DEBUG] [Thread-121933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:40.994 [DEBUG] [Thread-121933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:40.994 [DEBUG] [Thread-121933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:41.005 [DEBUG] [Thread-121933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:41.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:41.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-28T10:29:41.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-28T10:29:41.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:41.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:41.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:41.040 [DEBUG] [Thread-121933] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:51.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:29:51.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:29:51.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-28T10:29:51.064 [DEBUG] [Thread-121935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:29:51.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 29, 41), 12.95, 41.93, 0.0, 8.33, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:29:51.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:29:41
2025-09-28T10:29:51.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:29:51.867 [DEBUG] [Thread-121936] [transport.py] [_log()] starting thread (client mode): 0x2b9882b0
2025-09-28T10:29:51.867 [DEBUG] [Thread-121936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:51.886 [DEBUG] [Thread-121936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:29:51.886 [INFO] [Thread-121936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:51.888 [DEBUG] [Thread-121936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] Compression: none
2025-09-28T10:29:51.889 [DEBUG] [Thread-121936] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:51.897 [DEBUG] [Thread-121936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:51.897 [DEBUG] [Thread-121936] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:51.898 [DEBUG] [Thread-121936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:29:51.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:29:51.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:51.899 [DEBUG] [Thread-121936] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:51.900 [DEBUG] [Thread-121936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:51.900 [DEBUG] [Thread-121936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:51.900 [DEBUG] [Thread-121936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:29:51.900 [DEBUG] [Thread-121936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:51.917 [INFO] [Thread-121936] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:51.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:52.510 [DEBUG] [Thread-121936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:52.510 [DEBUG] [Thread-121936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:52.511 [DEBUG] [Thread-121936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:29:52.551 [DEBUG] [Thread-121936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:52.552 [DEBUG] [Thread-121936] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:52.554 [DEBUG] [Thread-121936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:52.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:52.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:29:52.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:29:52.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:29:52.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:52.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:29:52.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:52.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:29:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353905 -999.00  +17.90  13.00     43   +5.20 1 1 1 1 1   888    0 14.07 92.21 ----- 8.7 13.0 194.8 15.2 26.2 -28.3 24.3 -33.3 23.2 -26.9 24.6 -28.2
2025-09-28T10:29:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:29:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:29:52.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353905
2025-09-28T10:29:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:29:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:29:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:29:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:29:52.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:29:52.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:29:41', tmtdew=12.95, humidity=41.93, cloud=0.0, wind=8.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:29:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:29:52.577 [DEBUG] [Thread-121936] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:29:52.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-28T10:29:52.673 [DEBUG] [Thread-121939] [transport.py] [_log()] starting thread (client mode): 0x2e374e50
2025-09-28T10:29:52.673 [DEBUG] [Thread-121939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:29:52.692 [DEBUG] [Thread-121939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:29:52.692 [INFO] [Thread-121939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:29:52.700 [DEBUG] [Thread-121939] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:29:52.700 [DEBUG] [Thread-121939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:29:52.700 [DEBUG] [Thread-121939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:29:52.700 [DEBUG] [Thread-121939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] client lang: <none>
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] server lang: <none>
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] kex follows: False
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] Compression: none
2025-09-28T10:29:52.701 [DEBUG] [Thread-121939] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:29:52.770 [DEBUG] [Thread-121939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:29:52.771 [DEBUG] [Thread-121939] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:29:52.772 [DEBUG] [Thread-121939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:29:52.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:29:52.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:29:52.860 [DEBUG] [Thread-121939] [transport.py] [_log()] userauth is OK
2025-09-28T10:29:52.861 [DEBUG] [Thread-121939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:29:52.861 [DEBUG] [Thread-121939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:29:52.861 [DEBUG] [Thread-121939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:29:52.861 [DEBUG] [Thread-121939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:29:52.883 [INFO] [Thread-121939] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:29:52.884 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:29:52.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:29:53.872 [DEBUG] [Thread-121939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:29:53.872 [DEBUG] [Thread-121939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:29:53.920 [DEBUG] [Thread-121939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:29:53.920 [DEBUG] [Thread-121939] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:29:53.930 [DEBUG] [Thread-121939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:29:53.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:29:53.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-28T10:29:53.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-28T10:29:53.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:29:53.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:29:53.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:29:53.973 [DEBUG] [Thread-121939] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:03.035 [DEBUG] [Thread-121941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:03.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:30:03.968 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:30:03.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:30:04.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 29, 41), 12.95, 41.93, 0.0, 8.33, 15.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:30:04.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:29:41
2025-09-28T10:30:04.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:30:04.794 [DEBUG] [Thread-121942] [transport.py] [_log()] starting thread (client mode): 0x2e3fa200
2025-09-28T10:30:04.794 [DEBUG] [Thread-121942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:04.814 [DEBUG] [Thread-121942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:30:04.814 [INFO] [Thread-121942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:30:04.817 [DEBUG] [Thread-121942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] Compression: none
2025-09-28T10:30:04.818 [DEBUG] [Thread-121942] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:04.826 [DEBUG] [Thread-121942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:04.826 [DEBUG] [Thread-121942] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:04.827 [DEBUG] [Thread-121942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:30:04.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:30:04.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:04.871 [DEBUG] [Thread-121942] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:04.872 [DEBUG] [Thread-121942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:04.872 [DEBUG] [Thread-121942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:04.872 [DEBUG] [Thread-121942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:30:04.872 [DEBUG] [Thread-121942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:04.892 [INFO] [Thread-121942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:04.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:06.088 [DEBUG] [Thread-121944 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:14.795 [DEBUG] [Thread-121942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:14.795 [DEBUG] [Thread-121942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:14.795 [DEBUG] [Thread-121942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:30:14.837 [DEBUG] [Thread-121942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:14.837 [DEBUG] [Thread-121942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:14.840 [DEBUG] [Thread-121942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:14.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:14.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:30:14.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:30:14.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:30:14.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:14.925 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:30:14.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:14.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:14.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:30:14.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.353905 -999.00  +17.90  13.00     43   +5.20 1 1 1 1 1   888    0 14.07 92.21 ----- 8.7 13.0 194.8 15.2 26.2 -28.3 24.3 -33.3 23.2 -26.9 24.6 -28.2
2025-09-28T10:30:14.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.353905
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:30:14.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:29:41', tmtdew=12.95, humidity=41.93, cloud=0.0, wind=8.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:29:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:30:14.927 [DEBUG] [Thread-121942] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:15.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-28T10:30:15.018 [DEBUG] [Thread-121946] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T10:30:15.019 [DEBUG] [Thread-121946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:15.034 [DEBUG] [Thread-121946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:30:15.034 [INFO] [Thread-121946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] Compression: none
2025-09-28T10:30:15.043 [DEBUG] [Thread-121946] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:15.096 [DEBUG] [Thread-121946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:15.096 [DEBUG] [Thread-121946] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:15.097 [DEBUG] [Thread-121946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:30:15.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:30:15.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:15.154 [DEBUG] [Thread-121946] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:15.154 [DEBUG] [Thread-121946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:15.154 [DEBUG] [Thread-121946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:15.154 [DEBUG] [Thread-121946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:30:15.154 [DEBUG] [Thread-121946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:15.176 [INFO] [Thread-121946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:15.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-28T10:30:15.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:16.179 [DEBUG] [Thread-121946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:16.179 [DEBUG] [Thread-121946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:16.227 [DEBUG] [Thread-121946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:16.227 [DEBUG] [Thread-121946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:16.236 [DEBUG] [Thread-121946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:16.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:16.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-28T10:30:16.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-28T10:30:16.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:16.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:16.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:16.270 [DEBUG] [Thread-121946] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:21.133 [DEBUG] [Thread-121948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:26.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:30:26.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:30:26.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-28T10:30:26.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 30, 13), 12.9, 42.06, 0.0, 8.89, 15.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:30:26.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:30:13
2025-09-28T10:30:26.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:30:27.090 [DEBUG] [Thread-121949] [transport.py] [_log()] starting thread (client mode): 0x2e3c3700
2025-09-28T10:30:27.090 [DEBUG] [Thread-121949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:27.108 [DEBUG] [Thread-121949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:30:27.109 [INFO] [Thread-121949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:30:27.112 [DEBUG] [Thread-121949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:27.112 [DEBUG] [Thread-121949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:27.113 [DEBUG] [Thread-121949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:27.114 [DEBUG] [Thread-121949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:27.114 [DEBUG] [Thread-121949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:27.114 [DEBUG] [Thread-121949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:27.114 [DEBUG] [Thread-121949] [transport.py] [_log()] Compression: none
2025-09-28T10:30:27.114 [DEBUG] [Thread-121949] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:27.130 [DEBUG] [Thread-121949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:27.130 [DEBUG] [Thread-121949] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:27.131 [DEBUG] [Thread-121949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:30:27.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:30:27.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:27.132 [DEBUG] [Thread-121949] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:27.133 [DEBUG] [Thread-121949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:27.133 [DEBUG] [Thread-121949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:27.133 [DEBUG] [Thread-121949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:30:27.133 [DEBUG] [Thread-121949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:27.154 [INFO] [Thread-121949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:27.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:27.809 [DEBUG] [Thread-121949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:27.810 [DEBUG] [Thread-121949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:27.810 [DEBUG] [Thread-121949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:30:27.850 [DEBUG] [Thread-121949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:27.851 [DEBUG] [Thread-121949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:27.853 [DEBUG] [Thread-121949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:27.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:27.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:30:27.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:30:27.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:30:27.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:27.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:30:27.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354252 -999.00  +17.50  10.05     44   +5.20 1 1 1 1 1   888    0 14.35 92.14 ----- 11.9 10.1 181.0 13.8 26.1 -27.8 24.3 -25.4 23.2 -25.9 24.6 -26.5
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:30:27.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354252
2025-09-28T10:30:27.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:30:27.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:30:27.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:30:27.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:30:27.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:30:27.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:30:13', tmtdew=12.9, humidity=42.06, cloud=0.0, wind=8.89, temperature=15.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:30:27.877 [DEBUG] [Thread-121949] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:27.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-28T10:30:27.971 [DEBUG] [Thread-121952] [transport.py] [_log()] starting thread (client mode): 0x2e3c39a0
2025-09-28T10:30:27.971 [DEBUG] [Thread-121952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:27.986 [DEBUG] [Thread-121952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:30:27.986 [INFO] [Thread-121952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:30:27.993 [DEBUG] [Thread-121952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:27.994 [DEBUG] [Thread-121952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] Compression: none
2025-09-28T10:30:27.995 [DEBUG] [Thread-121952] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:28.062 [DEBUG] [Thread-121952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:28.063 [DEBUG] [Thread-121952] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:28.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:30:28.064 [DEBUG] [Thread-121952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:30:28.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:28.118 [DEBUG] [Thread-121952] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:28.118 [DEBUG] [Thread-121952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:28.118 [DEBUG] [Thread-121952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:28.118 [DEBUG] [Thread-121952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:30:28.118 [DEBUG] [Thread-121952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:28.137 [INFO] [Thread-121952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:28.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-28T10:30:28.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:29.138 [DEBUG] [Thread-121952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:29.138 [DEBUG] [Thread-121952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:29.186 [DEBUG] [Thread-121952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:29.187 [DEBUG] [Thread-121952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:29.197 [DEBUG] [Thread-121952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:29.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:29.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')
2025-09-28T10:30:29.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-28T10:30:29.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:29.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:29.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:29.232 [DEBUG] [Thread-121952] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:29.390 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:29.390 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:36.172 [DEBUG] [Thread-121954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:30:39.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:30:39.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-28T10:30:39.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 30, 13), 12.9, 42.06, 0.0, 8.89, 15.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:30:39.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:30:13
2025-09-28T10:30:39.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:30:40.067 [DEBUG] [Thread-121955] [transport.py] [_log()] starting thread (client mode): 0x2e3c3eb0
2025-09-28T10:30:40.067 [DEBUG] [Thread-121955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:40.087 [DEBUG] [Thread-121955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:30:40.088 [INFO] [Thread-121955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:30:40.090 [DEBUG] [Thread-121955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:40.091 [DEBUG] [Thread-121955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:40.092 [DEBUG] [Thread-121955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:40.092 [DEBUG] [Thread-121955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:40.092 [DEBUG] [Thread-121955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:40.092 [DEBUG] [Thread-121955] [transport.py] [_log()] Compression: none
2025-09-28T10:30:40.092 [DEBUG] [Thread-121955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:40.111 [DEBUG] [Thread-121955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:40.112 [DEBUG] [Thread-121955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:40.112 [DEBUG] [Thread-121955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:30:40.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:30:40.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:40.114 [DEBUG] [Thread-121955] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:40.114 [DEBUG] [Thread-121955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:40.115 [DEBUG] [Thread-121955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:40.115 [DEBUG] [Thread-121955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:30:40.115 [DEBUG] [Thread-121955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:40.138 [INFO] [Thread-121955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:40.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:40.833 [DEBUG] [Thread-121955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:40.833 [DEBUG] [Thread-121955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:40.833 [DEBUG] [Thread-121955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:30:40.875 [DEBUG] [Thread-121955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:40.875 [DEBUG] [Thread-121955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:40.878 [DEBUG] [Thread-121955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:40.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:40.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:30:40.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:30:40.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:30:40.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:40.895 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:30:40.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:40.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:40.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:30:40.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354252 -999.00  +17.50  10.05     44   +5.20 1 1 1 1 1   888    0 14.35 92.14 ----- 11.9 10.1 181.0 13.8 26.1 -27.8 24.3 -25.4 23.2 -25.9 24.6 -26.5
2025-09-28T10:30:40.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:30:40.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:30:40.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354252
2025-09-28T10:30:40.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:30:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:30:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:30:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:30:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:30:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:30:13', tmtdew=12.9, humidity=42.06, cloud=0.0, wind=8.89, temperature=15.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:30:40.898 [DEBUG] [Thread-121955] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:40.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-28T10:30:41.026 [DEBUG] [Thread-121958] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-28T10:30:41.026 [DEBUG] [Thread-121958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:41.067 [DEBUG] [Thread-121958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:30:41.068 [INFO] [Thread-121958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:30:41.103 [DEBUG] [Thread-121958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:41.103 [DEBUG] [Thread-121958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:30:41.103 [DEBUG] [Thread-121958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:41.103 [DEBUG] [Thread-121958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:41.104 [DEBUG] [Thread-121958] [transport.py] [_log()] Compression: none
2025-09-28T10:30:41.105 [DEBUG] [Thread-121958] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:41.188 [DEBUG] [Thread-121958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:41.189 [DEBUG] [Thread-121958] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:41.189 [DEBUG] [Thread-121958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:30:41.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:30:41.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:41.261 [DEBUG] [Thread-121958] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:41.262 [DEBUG] [Thread-121958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:41.262 [DEBUG] [Thread-121958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:41.262 [DEBUG] [Thread-121958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:30:41.262 [DEBUG] [Thread-121958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:41.307 [INFO] [Thread-121958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:41.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-28T10:30:41.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:42.245 [DEBUG] [Thread-121958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:42.246 [DEBUG] [Thread-121958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:42.318 [DEBUG] [Thread-121958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:42.319 [DEBUG] [Thread-121958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:42.335 [DEBUG] [Thread-121958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:42.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:42.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-28T10:30:42.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') -> 00000000
2025-09-28T10:30:42.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:42.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:42.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:42.436 [DEBUG] [Thread-121958] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:51.217 [DEBUG] [Thread-121960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:30:52.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:30:52.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:30:52.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-28T10:30:52.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 30, 44), 12.7, 42.66, 0.0, 14.56, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:30:52.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:30:44
2025-09-28T10:30:53.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:30:53.217 [DEBUG] [Thread-121961] [transport.py] [_log()] starting thread (client mode): 0x2b9b9cc0
2025-09-28T10:30:53.218 [DEBUG] [Thread-121961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:53.228 [DEBUG] [Thread-121961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:30:53.228 [INFO] [Thread-121961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:53.231 [DEBUG] [Thread-121961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] Compression: none
2025-09-28T10:30:53.232 [DEBUG] [Thread-121961] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:53.247 [DEBUG] [Thread-121961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:53.247 [DEBUG] [Thread-121961] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:53.247 [DEBUG] [Thread-121961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:30:53.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:30:53.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:53.249 [DEBUG] [Thread-121961] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:53.249 [DEBUG] [Thread-121961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:53.249 [DEBUG] [Thread-121961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:53.249 [DEBUG] [Thread-121961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:30:53.249 [DEBUG] [Thread-121961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:53.263 [INFO] [Thread-121961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:53.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:53.975 [DEBUG] [Thread-121961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:53.976 [DEBUG] [Thread-121961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:53.976 [DEBUG] [Thread-121961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:30:54.017 [DEBUG] [Thread-121961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:54.017 [DEBUG] [Thread-121961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:54.020 [DEBUG] [Thread-121961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:54.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:54.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:30:54.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:30:54.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:30:54.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:54.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:30:54.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:54.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354252 -999.00  +17.50  10.05     44   +5.20 1 1 1 1 1   888    0 14.35 92.14 ----- 11.9 10.1 181.0 13.8 26.1 -27.8 24.3 -25.4 23.2 -25.9 24.6 -26.5
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354252
2025-09-28T10:30:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:30:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:30:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:30:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:30:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:30:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:30:44', tmtdew=12.7, humidity=42.66, cloud=0.0, wind=14.56, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:30:54.047 [DEBUG] [Thread-121961] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:30:54.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-28T10:30:54.141 [DEBUG] [Thread-121964] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf70
2025-09-28T10:30:54.141 [DEBUG] [Thread-121964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:30:54.156 [DEBUG] [Thread-121964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:30:54.156 [INFO] [Thread-121964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:30:54.163 [DEBUG] [Thread-121964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:30:54.163 [DEBUG] [Thread-121964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] client lang: <none>
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] server lang: <none>
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] kex follows: False
2025-09-28T10:30:54.164 [DEBUG] [Thread-121964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] Compression: none
2025-09-28T10:30:54.165 [DEBUG] [Thread-121964] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:30:54.221 [DEBUG] [Thread-121964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:30:54.222 [DEBUG] [Thread-121964] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:30:54.222 [DEBUG] [Thread-121964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:30:54.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:30:54.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:30:54.288 [DEBUG] [Thread-121964] [transport.py] [_log()] userauth is OK
2025-09-28T10:30:54.288 [DEBUG] [Thread-121964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:30:54.288 [DEBUG] [Thread-121964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:30:54.288 [DEBUG] [Thread-121964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:30:54.288 [DEBUG] [Thread-121964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:30:54.310 [INFO] [Thread-121964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:30:54.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-28T10:30:54.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:30:55.337 [DEBUG] [Thread-121964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:30:55.338 [DEBUG] [Thread-121964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:30:55.385 [DEBUG] [Thread-121964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:30:55.385 [DEBUG] [Thread-121964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:30:55.395 [DEBUG] [Thread-121964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:30:55.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:30:55.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-28T10:30:55.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-28T10:30:55.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:30:55.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:30:55.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:30:55.429 [DEBUG] [Thread-121964] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:03.089 [DEBUG] [Thread-121966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:05.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:31:05.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:31:05.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-28T10:31:05.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 30, 44), 12.7, 42.66, 0.0, 14.56, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:31:05.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:30:44
2025-09-28T10:31:06.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:31:06.247 [DEBUG] [Thread-121967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:06.247 [DEBUG] [Thread-121968] [transport.py] [_log()] starting thread (client mode): 0x2b9cde40
2025-09-28T10:31:06.248 [DEBUG] [Thread-121968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:06.267 [DEBUG] [Thread-121968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:31:06.267 [INFO] [Thread-121968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:31:06.270 [DEBUG] [Thread-121968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:06.270 [DEBUG] [Thread-121968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] Compression: none
2025-09-28T10:31:06.271 [DEBUG] [Thread-121968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:06.288 [DEBUG] [Thread-121968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:06.288 [DEBUG] [Thread-121968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:06.289 [DEBUG] [Thread-121968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:31:06.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:31:06.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:06.291 [DEBUG] [Thread-121968] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:06.291 [DEBUG] [Thread-121968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:06.291 [DEBUG] [Thread-121968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:06.291 [DEBUG] [Thread-121968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:31:06.291 [DEBUG] [Thread-121968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:06.315 [INFO] [Thread-121968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:06.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:06.932 [DEBUG] [Thread-121968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:06.932 [DEBUG] [Thread-121968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:06.933 [DEBUG] [Thread-121968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:31:06.973 [DEBUG] [Thread-121968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:06.973 [DEBUG] [Thread-121968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:06.975 [DEBUG] [Thread-121968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:06.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:06.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:31:06.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:31:06.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:31:06.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:06.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:31:06.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:06.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354600 -999.00  +17.40  11.02     44   +5.20 1 1 1 1 1   888    0 13.91 89.34 ----- 9.4 11.0 205.6 16.6 26.0 -27.8 24.3 -26.8 23.2 -24.7 24.6 -25.6
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354600
2025-09-28T10:31:06.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:31:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:31:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:31:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:31:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:31:06.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:30:44', tmtdew=12.7, humidity=42.66, cloud=0.0, wind=14.56, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:31:06.993 [DEBUG] [Thread-121968] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:07.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-28T10:31:07.089 [DEBUG] [Thread-121971] [transport.py] [_log()] starting thread (client mode): 0x2b9cd270
2025-09-28T10:31:07.089 [DEBUG] [Thread-121971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:07.104 [DEBUG] [Thread-121971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:31:07.104 [INFO] [Thread-121971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:31:07.111 [DEBUG] [Thread-121971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:07.111 [DEBUG] [Thread-121971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] Compression: none
2025-09-28T10:31:07.112 [DEBUG] [Thread-121971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:07.168 [DEBUG] [Thread-121971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:07.168 [DEBUG] [Thread-121971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:07.168 [DEBUG] [Thread-121971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:31:07.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:31:07.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:07.225 [DEBUG] [Thread-121971] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:07.225 [DEBUG] [Thread-121971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:07.225 [DEBUG] [Thread-121971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:07.225 [DEBUG] [Thread-121971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:31:07.225 [DEBUG] [Thread-121971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:07.239 [INFO] [Thread-121971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:07.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-28T10:31:07.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:08.327 [DEBUG] [Thread-121971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:08.327 [DEBUG] [Thread-121971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:08.375 [DEBUG] [Thread-121971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:08.375 [DEBUG] [Thread-121971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:08.384 [DEBUG] [Thread-121971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:08.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:08.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-28T10:31:08.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-28T10:31:08.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:08.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:08.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:08.421 [DEBUG] [Thread-121971] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:18.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:31:18.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:31:18.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-28T10:31:19.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 30, 44), 12.7, 42.66, 0.0, 14.56, 16.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:31:19.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:30:44
2025-09-28T10:31:19.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:31:19.277 [DEBUG] [Thread-121973] [transport.py] [_log()] starting thread (client mode): 0x2b9cd360
2025-09-28T10:31:19.277 [DEBUG] [Thread-121973] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:19.297 [DEBUG] [Thread-121973] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:31:19.297 [INFO] [Thread-121973] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:31:19.301 [DEBUG] [Thread-121973] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:19.301 [DEBUG] [Thread-121973] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:31:19.301 [DEBUG] [Thread-121973] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:19.301 [DEBUG] [Thread-121973] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] Compression: none
2025-09-28T10:31:19.302 [DEBUG] [Thread-121973] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:19.318 [DEBUG] [Thread-121973] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:19.319 [DEBUG] [Thread-121973] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:19.319 [DEBUG] [Thread-121973] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:31:19.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:31:19.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:19.321 [DEBUG] [Thread-121973] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:19.322 [DEBUG] [Thread-121973] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:19.322 [DEBUG] [Thread-121973] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:19.322 [DEBUG] [Thread-121973] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:31:19.322 [DEBUG] [Thread-121973] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:19.342 [INFO] [Thread-121973] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:19.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:20.078 [DEBUG] [Thread-121973] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:20.078 [DEBUG] [Thread-121973] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:20.079 [DEBUG] [Thread-121973] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:31:20.120 [DEBUG] [Thread-121973] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:20.120 [DEBUG] [Thread-121973] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:20.122 [DEBUG] [Thread-121973] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:20.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:20.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:31:20.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:31:20.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:31:20.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:20.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:31:20.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:20.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:20.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:31:20.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354600 -999.00  +17.40  11.02     44   +5.20 1 1 1 1 1   888    0 13.91 89.34 ----- 9.4 11.0 205.6 16.6 26.0 -27.8 24.3 -26.8 23.2 -24.7 24.6 -25.6
2025-09-28T10:31:20.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:31:20.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:31:20.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354600
2025-09-28T10:31:20.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:31:20.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:31:20.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:31:20.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:31:20.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:31:20.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:30:44', tmtdew=12.7, humidity=42.66, cloud=0.0, wind=14.56, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:31:20.156 [DEBUG] [Thread-121973] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:20.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-28T10:31:20.248 [DEBUG] [Thread-121976] [transport.py] [_log()] starting thread (client mode): 0x2e38e200
2025-09-28T10:31:20.248 [DEBUG] [Thread-121976] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:20.263 [DEBUG] [Thread-121976] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:31:20.263 [INFO] [Thread-121976] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:20.271 [DEBUG] [Thread-121976] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:20.272 [DEBUG] [Thread-121976] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:20.272 [DEBUG] [Thread-121976] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:20.272 [DEBUG] [Thread-121976] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:20.272 [DEBUG] [Thread-121976] [transport.py] [_log()] Compression: none
2025-09-28T10:31:20.272 [DEBUG] [Thread-121976] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:20.333 [DEBUG] [Thread-121976] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:20.333 [DEBUG] [Thread-121976] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:20.334 [DEBUG] [Thread-121976] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:31:20.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:31:20.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:20.389 [DEBUG] [Thread-121976] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:20.389 [DEBUG] [Thread-121976] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:20.389 [DEBUG] [Thread-121976] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:20.389 [DEBUG] [Thread-121976] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:31:20.389 [DEBUG] [Thread-121976] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:20.403 [INFO] [Thread-121976] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:20.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-28T10:31:20.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:21.282 [DEBUG] [Thread-121978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:21.373 [DEBUG] [Thread-121976] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:21.373 [DEBUG] [Thread-121976] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:21.421 [DEBUG] [Thread-121976] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:21.421 [DEBUG] [Thread-121976] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:21.429 [DEBUG] [Thread-121976] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:21.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:21.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-28T10:31:21.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-28T10:31:21.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:21.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:21.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:21.460 [DEBUG] [Thread-121976] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:29.531 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:29.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:31.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:31:31.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:31:31.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-28T10:31:32.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 31, 16), 12.83, 42.33, 0.0, 15.28, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:31:32.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:31:16
2025-09-28T10:31:32.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:31:32.305 [DEBUG] [Thread-121979] [transport.py] [_log()] starting thread (client mode): 0x2b946710
2025-09-28T10:31:32.306 [DEBUG] [Thread-121979] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:32.326 [DEBUG] [Thread-121979] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:31:32.326 [INFO] [Thread-121979] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] Compression: none
2025-09-28T10:31:32.329 [DEBUG] [Thread-121979] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:32.346 [DEBUG] [Thread-121979] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:32.346 [DEBUG] [Thread-121979] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:31:32.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:31:32.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:31:32.347 [DEBUG] [Thread-121979] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:32.374 [INFO] [Thread-121979] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:32.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:33.106 [DEBUG] [Thread-121979] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:33.106 [DEBUG] [Thread-121979] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:33.107 [DEBUG] [Thread-121979] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:31:33.148 [DEBUG] [Thread-121979] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:33.148 [DEBUG] [Thread-121979] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:33.150 [DEBUG] [Thread-121979] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:33.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:33.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:31:33.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:31:33.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:31:33.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:33.170 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:31:33.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354600 -999.00  +17.40  11.02     44   +5.20 1 1 1 1 1   888    0 13.91 89.34 ----- 9.4 11.0 205.6 16.6 26.0 -27.8 24.3 -26.8 23.2 -24.7 24.6 -25.6
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:31:33.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354600
2025-09-28T10:31:33.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:31:33.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:31:33.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:31:33.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:31:33.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:31:33.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:31:16', tmtdew=12.83, humidity=42.33, cloud=0.0, wind=15.28, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:30:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:31:33.173 [DEBUG] [Thread-121979] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:33.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:31:33.295 [DEBUG] [Thread-121982] [transport.py] [_log()] starting thread (client mode): 0x2b944880
2025-09-28T10:31:33.295 [DEBUG] [Thread-121982] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:33.338 [DEBUG] [Thread-121982] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:31:33.338 [INFO] [Thread-121982] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:31:33.371 [DEBUG] [Thread-121982] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:33.371 [DEBUG] [Thread-121982] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:33.372 [DEBUG] [Thread-121982] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:33.373 [DEBUG] [Thread-121982] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:33.373 [DEBUG] [Thread-121982] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:33.373 [DEBUG] [Thread-121982] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:33.373 [DEBUG] [Thread-121982] [transport.py] [_log()] Compression: none
2025-09-28T10:31:33.373 [DEBUG] [Thread-121982] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:33.457 [DEBUG] [Thread-121982] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:33.458 [DEBUG] [Thread-121982] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:33.458 [DEBUG] [Thread-121982] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:31:33.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:31:33.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:33.541 [DEBUG] [Thread-121982] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:33.541 [DEBUG] [Thread-121982] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:33.541 [DEBUG] [Thread-121982] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:33.541 [DEBUG] [Thread-121982] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:31:33.541 [DEBUG] [Thread-121982] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:33.571 [INFO] [Thread-121982] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:33.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-28T10:31:33.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:34.601 [DEBUG] [Thread-121982] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:34.601 [DEBUG] [Thread-121982] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:34.651 [DEBUG] [Thread-121982] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:34.651 [DEBUG] [Thread-121982] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:34.660 [DEBUG] [Thread-121982] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:34.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:34.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-28T10:31:34.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-28T10:31:34.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:34.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:34.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:34.695 [DEBUG] [Thread-121982] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:36.317 [DEBUG] [Thread-121984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:44.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:31:44.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:31:44.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-28T10:31:45.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 31, 16), 12.83, 42.33, 0.0, 15.28, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:31:45.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:31:16
2025-09-28T10:31:45.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:31:45.518 [DEBUG] [Thread-121985] [transport.py] [_log()] starting thread (client mode): 0x2e38d7b0
2025-09-28T10:31:45.518 [DEBUG] [Thread-121985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:45.536 [DEBUG] [Thread-121985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:31:45.536 [INFO] [Thread-121985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:45.539 [DEBUG] [Thread-121985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:45.540 [DEBUG] [Thread-121985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:45.540 [DEBUG] [Thread-121985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:45.540 [DEBUG] [Thread-121985] [transport.py] [_log()] Compression: none
2025-09-28T10:31:45.540 [DEBUG] [Thread-121985] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:45.551 [DEBUG] [Thread-121985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:45.552 [DEBUG] [Thread-121985] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:45.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:31:45.553 [DEBUG] [Thread-121985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:31:45.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:45.555 [DEBUG] [Thread-121985] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:45.555 [DEBUG] [Thread-121985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:45.556 [DEBUG] [Thread-121985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:45.556 [DEBUG] [Thread-121985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:31:45.556 [DEBUG] [Thread-121985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:45.581 [INFO] [Thread-121985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:45.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:46.114 [DEBUG] [Thread-121985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:46.114 [DEBUG] [Thread-121985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:46.115 [DEBUG] [Thread-121985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:31:46.155 [DEBUG] [Thread-121985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:46.156 [DEBUG] [Thread-121985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:46.158 [DEBUG] [Thread-121985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:46.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:46.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:31:46.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:31:46.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:31:46.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:46.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:31:46.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:46.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354947 -999.00  +17.40   4.03     44   +5.20 1 1 1 1 1   888    0 14.44 95.84 ----- 2.7 4.0 193.1 14.5 25.9 -27.1 24.1 -26.8 23.3 -25.0 24.6 -26.9
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354947
2025-09-28T10:31:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:31:46.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:31:46.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:31:46.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:31:46.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:31:46.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:31:16', tmtdew=12.83, humidity=42.33, cloud=0.0, wind=15.28, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:31:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:31:46.188 [DEBUG] [Thread-121985] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:46.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-28T10:31:46.309 [DEBUG] [Thread-121988] [transport.py] [_log()] starting thread (client mode): 0x2e38f220
2025-09-28T10:31:46.309 [DEBUG] [Thread-121988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:46.341 [DEBUG] [Thread-121988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:31:46.342 [INFO] [Thread-121988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:46.369 [DEBUG] [Thread-121988] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] Compression: none
2025-09-28T10:31:46.370 [DEBUG] [Thread-121988] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:46.459 [DEBUG] [Thread-121988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:46.460 [DEBUG] [Thread-121988] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:46.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:31:46.460 [DEBUG] [Thread-121988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:31:46.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:46.518 [DEBUG] [Thread-121988] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:46.519 [DEBUG] [Thread-121988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:46.519 [DEBUG] [Thread-121988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:46.519 [DEBUG] [Thread-121988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:31:46.519 [DEBUG] [Thread-121988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:46.538 [INFO] [Thread-121988] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:46.538 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:31:46.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:47.589 [DEBUG] [Thread-121988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:47.589 [DEBUG] [Thread-121988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:47.665 [DEBUG] [Thread-121988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:47.665 [DEBUG] [Thread-121988] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:47.702 [DEBUG] [Thread-121988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:47.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:47.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-28T10:31:47.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-28T10:31:47.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:47.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:47.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:47.835 [DEBUG] [Thread-121988] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:51.353 [DEBUG] [Thread-121990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:31:57.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:31:57.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:31:57.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:31:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 31, 48), 13.15, 41.23, 0.0, 8.19, 16.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:31:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:31:48
2025-09-28T10:31:58.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:31:58.685 [DEBUG] [Thread-121991] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-28T10:31:58.685 [DEBUG] [Thread-121991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:58.695 [DEBUG] [Thread-121991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:31:58.695 [INFO] [Thread-121991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] Compression: none
2025-09-28T10:31:58.696 [DEBUG] [Thread-121991] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:58.703 [DEBUG] [Thread-121991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:58.703 [DEBUG] [Thread-121991] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:58.703 [DEBUG] [Thread-121991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:31:58.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:31:58.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:58.704 [DEBUG] [Thread-121991] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:58.704 [DEBUG] [Thread-121991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:58.704 [DEBUG] [Thread-121991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:58.704 [DEBUG] [Thread-121991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:31:58.704 [DEBUG] [Thread-121991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:58.713 [INFO] [Thread-121991] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:58.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:31:59.269 [DEBUG] [Thread-121991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:31:59.269 [DEBUG] [Thread-121991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:31:59.269 [DEBUG] [Thread-121991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:31:59.310 [DEBUG] [Thread-121991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:31:59.310 [DEBUG] [Thread-121991] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:31:59.312 [DEBUG] [Thread-121991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:31:59.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:31:59.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:31:59.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:31:59.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:31:59.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:31:59.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:31:59.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.354947 -999.00  +17.40   4.03     44   +5.20 1 1 1 1 1   888    0 14.44 95.84 ----- 2.7 4.0 193.1 14.5 25.9 -27.1 24.1 -26.8 23.3 -25.0 24.6 -26.9
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.354947
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:31:59.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:31:48', tmtdew=13.15, humidity=41.23, cloud=0.0, wind=8.19, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:31:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:31:59.331 [DEBUG] [Thread-121991] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:31:59.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:31:59.414 [DEBUG] [Thread-121994] [transport.py] [_log()] starting thread (client mode): 0x2e38ea70
2025-09-28T10:31:59.414 [DEBUG] [Thread-121994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:31:59.429 [DEBUG] [Thread-121994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:31:59.429 [INFO] [Thread-121994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:31:59.436 [DEBUG] [Thread-121994] [transport.py] [_log()] client lang: <none>
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] server lang: <none>
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] kex follows: False
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] Compression: none
2025-09-28T10:31:59.437 [DEBUG] [Thread-121994] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:31:59.491 [DEBUG] [Thread-121994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:31:59.492 [DEBUG] [Thread-121994] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:31:59.492 [DEBUG] [Thread-121994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:31:59.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:31:59.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:31:59.548 [DEBUG] [Thread-121994] [transport.py] [_log()] userauth is OK
2025-09-28T10:31:59.548 [DEBUG] [Thread-121994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:31:59.548 [DEBUG] [Thread-121994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:31:59.549 [DEBUG] [Thread-121994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:31:59.549 [DEBUG] [Thread-121994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:31:59.564 [INFO] [Thread-121994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:31:59.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-28T10:31:59.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:00.614 [DEBUG] [Thread-121994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:00.614 [DEBUG] [Thread-121994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:00.662 [DEBUG] [Thread-121994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:00.662 [DEBUG] [Thread-121994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:00.670 [DEBUG] [Thread-121994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:00.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:00.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-28T10:32:00.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') -> 00000000
2025-09-28T10:32:00.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:00.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:00.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:00.702 [DEBUG] [Thread-121994] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:03.136 [DEBUG] [Thread-121996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:06.388 [DEBUG] [Thread-121997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:10.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:32:10.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:32:10.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 31, 48), 13.15, 41.23, 0.0, 8.19, 16.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:32:11.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:31:48
2025-09-28T10:32:11.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:32:11.524 [DEBUG] [Thread-121998] [transport.py] [_log()] starting thread (client mode): 0x2b9cd9f0
2025-09-28T10:32:11.524 [DEBUG] [Thread-121998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:11.543 [DEBUG] [Thread-121998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:32:11.543 [INFO] [Thread-121998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:11.546 [DEBUG] [Thread-121998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] Compression: none
2025-09-28T10:32:11.547 [DEBUG] [Thread-121998] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:11.563 [DEBUG] [Thread-121998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:11.564 [DEBUG] [Thread-121998] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:11.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:32:11.565 [DEBUG] [Thread-121998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:32:11.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:11.567 [DEBUG] [Thread-121998] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:11.567 [DEBUG] [Thread-121998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:11.567 [DEBUG] [Thread-121998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:11.567 [DEBUG] [Thread-121998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:32:11.568 [DEBUG] [Thread-121998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:11.592 [INFO] [Thread-121998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:11.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:12.204 [DEBUG] [Thread-121998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:12.204 [DEBUG] [Thread-121998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:12.205 [DEBUG] [Thread-121998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:32:12.245 [DEBUG] [Thread-121998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:12.246 [DEBUG] [Thread-121998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:12.248 [DEBUG] [Thread-121998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:12.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:12.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:32:12.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:32:12.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:32:12.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:12.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:32:12.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:12.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.355294 -999.00  +17.50  11.81     43   +4.90 1 1 1 1 1   888    0 14.26 92.37 ----- 11.3 11.8 263.2 15.8 26.0 -28.4 24.2 -25.7 23.3 -25.5 24.6 -28.2
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.355294
2025-09-28T10:32:12.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:32:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:32:12.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:32:12.268 [DEBUG] [Thread-121998] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:12.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:32:12.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:32:12.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:31:48', tmtdew=13.15, humidity=41.23, cloud=0.0, wind=8.19, temperature=16.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:31:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:32:12.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-28T10:32:12.394 [DEBUG] [Thread-122001] [transport.py] [_log()] starting thread (client mode): 0x2e3fb910
2025-09-28T10:32:12.395 [DEBUG] [Thread-122001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:12.437 [DEBUG] [Thread-122001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:32:12.437 [INFO] [Thread-122001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:12.473 [DEBUG] [Thread-122001] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] Compression: none
2025-09-28T10:32:12.474 [DEBUG] [Thread-122001] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:12.561 [DEBUG] [Thread-122001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:12.562 [DEBUG] [Thread-122001] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:12.562 [DEBUG] [Thread-122001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:32:12.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:32:12.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:12.674 [DEBUG] [Thread-122001] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:12.674 [DEBUG] [Thread-122001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:12.674 [DEBUG] [Thread-122001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:12.674 [DEBUG] [Thread-122001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:32:12.674 [DEBUG] [Thread-122001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:12.722 [INFO] [Thread-122001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:12.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:32:12.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:13.682 [DEBUG] [Thread-122001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:13.682 [DEBUG] [Thread-122001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:13.759 [DEBUG] [Thread-122001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:13.759 [DEBUG] [Thread-122001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:13.796 [DEBUG] [Thread-122001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:13.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:13.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:32:13.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-28T10:32:13.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:13.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:13.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:13.944 [DEBUG] [Thread-122001] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:21.432 [DEBUG] [Thread-122003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:23.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:32:23.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:32:23.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:32:24.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 32, 20), 13.08, 41.41, 0.0, 8.38, 16.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:32:24.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:32:20
2025-09-28T10:32:24.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:32:24.738 [DEBUG] [Thread-122004] [transport.py] [_log()] starting thread (client mode): 0x2e38f9a0
2025-09-28T10:32:24.739 [DEBUG] [Thread-122004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:24.758 [DEBUG] [Thread-122004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:32:24.758 [INFO] [Thread-122004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:32:24.761 [DEBUG] [Thread-122004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:24.762 [DEBUG] [Thread-122004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:24.763 [DEBUG] [Thread-122004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:24.763 [DEBUG] [Thread-122004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:24.763 [DEBUG] [Thread-122004] [transport.py] [_log()] Compression: none
2025-09-28T10:32:24.763 [DEBUG] [Thread-122004] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:24.779 [DEBUG] [Thread-122004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:24.780 [DEBUG] [Thread-122004] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:24.780 [DEBUG] [Thread-122004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:32:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:32:24.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:24.782 [DEBUG] [Thread-122004] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:24.782 [DEBUG] [Thread-122004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:24.782 [DEBUG] [Thread-122004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:24.782 [DEBUG] [Thread-122004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:32:24.782 [DEBUG] [Thread-122004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:24.805 [INFO] [Thread-122004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:24.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:25.506 [DEBUG] [Thread-122004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:25.507 [DEBUG] [Thread-122004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:25.507 [DEBUG] [Thread-122004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:32:25.547 [DEBUG] [Thread-122004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:25.547 [DEBUG] [Thread-122004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:25.550 [DEBUG] [Thread-122004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:25.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:25.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:32:25.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:32:25.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:32:25.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:25.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:32:25.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:25.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:25.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:32:25.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.355294 -999.00  +17.50  11.81     43   +4.90 1 1 1 1 1   888    0 14.26 92.37 ----- 11.3 11.8 263.2 15.8 26.0 -28.4 24.2 -25.7 23.3 -25.5 24.6 -28.2
2025-09-28T10:32:25.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:32:25.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:32:25.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.355294
2025-09-28T10:32:25.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:32:25.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:32:25.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:32:25.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:32:25.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:32:25.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:32:20', tmtdew=13.08, humidity=41.41, cloud=0.0, wind=8.38, temperature=16.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:31:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:32:25.575 [DEBUG] [Thread-122004] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:25.659 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:32:25.669 [DEBUG] [Thread-122007] [transport.py] [_log()] starting thread (client mode): 0x2b9dd720
2025-09-28T10:32:25.669 [DEBUG] [Thread-122007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:25.690 [DEBUG] [Thread-122007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:32:25.690 [INFO] [Thread-122007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:32:25.698 [DEBUG] [Thread-122007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:25.698 [DEBUG] [Thread-122007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:32:25.698 [DEBUG] [Thread-122007] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:25.698 [DEBUG] [Thread-122007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:25.698 [DEBUG] [Thread-122007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] Compression: none
2025-09-28T10:32:25.699 [DEBUG] [Thread-122007] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:25.758 [DEBUG] [Thread-122007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:25.759 [DEBUG] [Thread-122007] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:25.759 [DEBUG] [Thread-122007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:32:25.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:32:25.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:25.817 [DEBUG] [Thread-122007] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:25.817 [DEBUG] [Thread-122007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:25.818 [DEBUG] [Thread-122007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:25.818 [DEBUG] [Thread-122007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:32:25.818 [DEBUG] [Thread-122007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:25.839 [INFO] [Thread-122007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:25.839 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:32:25.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:26.813 [DEBUG] [Thread-122007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:26.813 [DEBUG] [Thread-122007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:27.025 [DEBUG] [Thread-122007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:27.025 [DEBUG] [Thread-122007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:27.035 [DEBUG] [Thread-122007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:27.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:27.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-28T10:32:27.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-28T10:32:27.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:27.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:27.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:27.071 [DEBUG] [Thread-122007] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:29.673 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:29.674 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:36.466 [DEBUG] [Thread-122009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:37.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:32:37.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:32:37.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:32:37.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 32, 20), 13.08, 41.41, 0.0, 8.38, 16.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:32:37.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:32:20
2025-09-28T10:32:37.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:32:37.932 [DEBUG] [Thread-122010] [transport.py] [_log()] starting thread (client mode): 0x2b947c10
2025-09-28T10:32:37.932 [DEBUG] [Thread-122010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:37.954 [DEBUG] [Thread-122010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:32:37.954 [INFO] [Thread-122010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:32:37.956 [DEBUG] [Thread-122010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] Compression: none
2025-09-28T10:32:37.957 [DEBUG] [Thread-122010] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:37.973 [DEBUG] [Thread-122010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:37.973 [DEBUG] [Thread-122010] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:37.973 [DEBUG] [Thread-122010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:32:37.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:32:37.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:37.973 [DEBUG] [Thread-122010] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:37.973 [DEBUG] [Thread-122010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:37.974 [DEBUG] [Thread-122010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:37.974 [DEBUG] [Thread-122010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:32:37.974 [DEBUG] [Thread-122010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:37.999 [INFO] [Thread-122010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:38.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:38.648 [DEBUG] [Thread-122010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:38.648 [DEBUG] [Thread-122010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:38.648 [DEBUG] [Thread-122010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:32:38.689 [DEBUG] [Thread-122010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:38.689 [DEBUG] [Thread-122010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:38.691 [DEBUG] [Thread-122010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:38.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:38.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:32:38.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:32:38.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:32:38.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:38.709 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:32:38.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.355294 -999.00  +17.50  11.81     43   +4.90 1 1 1 1 1   888    0 14.26 92.37 ----- 11.3 11.8 263.2 15.8 26.0 -28.4 24.2 -25.7 23.3 -25.5 24.6 -28.2
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:32:38.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.355294
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:32:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:32:20', tmtdew=13.08, humidity=41.41, cloud=0.0, wind=8.38, temperature=16.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:31:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:32:38.711 [DEBUG] [Thread-122010] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:38.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-28T10:32:38.796 [DEBUG] [Thread-122013] [transport.py] [_log()] starting thread (client mode): 0x2b9cfc40
2025-09-28T10:32:38.796 [DEBUG] [Thread-122013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:38.810 [DEBUG] [Thread-122013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:32:38.811 [INFO] [Thread-122013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:32:38.818 [DEBUG] [Thread-122013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] Compression: none
2025-09-28T10:32:38.819 [DEBUG] [Thread-122013] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:38.875 [DEBUG] [Thread-122013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:38.875 [DEBUG] [Thread-122013] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:38.876 [DEBUG] [Thread-122013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:32:38.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:32:38.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:38.948 [DEBUG] [Thread-122013] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:38.948 [DEBUG] [Thread-122013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:38.948 [DEBUG] [Thread-122013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:38.948 [DEBUG] [Thread-122013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:32:38.948 [DEBUG] [Thread-122013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:38.983 [INFO] [Thread-122013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:38.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-28T10:32:38.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:39.936 [DEBUG] [Thread-122013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:39.936 [DEBUG] [Thread-122013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:39.984 [DEBUG] [Thread-122013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:39.984 [DEBUG] [Thread-122013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:39.993 [DEBUG] [Thread-122013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:40.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:40.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-28T10:32: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') -> 00000000
2025-09-28T10:32:40.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:40.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:40.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:40.026 [DEBUG] [Thread-122013] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:50.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:32:50.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:32:50.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-28T10:32:50.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 32, 20), 13.08, 41.41, 0.0, 8.38, 16.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:32:50.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:32:20
2025-09-28T10:32:50.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:32:50.846 [DEBUG] [Thread-122015] [transport.py] [_log()] starting thread (client mode): 0x2b944d30
2025-09-28T10:32:50.846 [DEBUG] [Thread-122015] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:50.863 [DEBUG] [Thread-122015] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:32:50.863 [INFO] [Thread-122015] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] Compression: none
2025-09-28T10:32:50.867 [DEBUG] [Thread-122015] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:50.885 [DEBUG] [Thread-122015] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:50.885 [DEBUG] [Thread-122015] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:50.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:32:50.886 [DEBUG] [Thread-122015] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:32:50.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:50.888 [DEBUG] [Thread-122015] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:50.888 [DEBUG] [Thread-122015] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:50.888 [DEBUG] [Thread-122015] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:50.888 [DEBUG] [Thread-122015] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:32:50.888 [DEBUG] [Thread-122015] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:50.912 [INFO] [Thread-122015] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:50.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:51.509 [DEBUG] [Thread-122017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:32:51.512 [DEBUG] [Thread-122015] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:51.512 [DEBUG] [Thread-122015] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:51.513 [DEBUG] [Thread-122015] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:32:51.552 [DEBUG] [Thread-122015] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:51.553 [DEBUG] [Thread-122015] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:51.556 [DEBUG] [Thread-122015] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:51.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:51.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:32:51.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:32:51.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:32:51.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:51.583 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:32:51.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.355989 -999.00  +17.20   4.85     45   +5.30 1 1 1 1 1   888    0 14.49 96.25 ----- 3.6 4.8 226.1 8.4 26.0 -27.1 24.5 -25.1 23.2 -24.8 24.4 -26.2
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:32:51.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.355989
2025-09-28T10:32:51.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:32:51.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:32:51.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:32:51.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:32:51.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:32:51.586 [DEBUG] [Thread-122015] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:32:51.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:32:20', tmtdew=13.08, humidity=41.41, cloud=0.0, wind=8.38, temperature=16.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:32:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:32:51.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-28T10:32:51.681 [DEBUG] [Thread-122019] [transport.py] [_log()] starting thread (client mode): 0x2e38f1c0
2025-09-28T10:32:51.681 [DEBUG] [Thread-122019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:32:51.697 [DEBUG] [Thread-122019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:32:51.697 [INFO] [Thread-122019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:32:51.705 [DEBUG] [Thread-122019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:32:51.705 [DEBUG] [Thread-122019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:32:51.705 [DEBUG] [Thread-122019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:32:51.705 [DEBUG] [Thread-122019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] client lang: <none>
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] server lang: <none>
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] kex follows: False
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] Compression: none
2025-09-28T10:32:51.706 [DEBUG] [Thread-122019] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:32:51.776 [DEBUG] [Thread-122019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:32:51.777 [DEBUG] [Thread-122019] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:32:51.777 [DEBUG] [Thread-122019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:32:51.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:32:51.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:32:51.835 [DEBUG] [Thread-122019] [transport.py] [_log()] userauth is OK
2025-09-28T10:32:51.836 [DEBUG] [Thread-122019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:32:51.836 [DEBUG] [Thread-122019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:32:51.836 [DEBUG] [Thread-122019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:32:51.836 [DEBUG] [Thread-122019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:32:51.856 [INFO] [Thread-122019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:32:51.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-28T10:32:51.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:32:52.829 [DEBUG] [Thread-122019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:32:52.829 [DEBUG] [Thread-122019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:32:52.905 [DEBUG] [Thread-122019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:32:52.906 [DEBUG] [Thread-122019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:32:52.943 [DEBUG] [Thread-122019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:32:52.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:32:52.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-28T10:32:53.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-28T10:32:53.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:32:53.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:32:53.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:32:53.090 [DEBUG] [Thread-122019] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:03.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:33:03.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:33:03.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-28T10:33:03.185 [DEBUG] [Thread-122021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:03.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 32, 52), 13.28, 40.93, 0.0, 7.71, 16.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:33:03.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:32:52
2025-09-28T10:33:03.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:33:03.891 [DEBUG] [Thread-122022] [transport.py] [_log()] starting thread (client mode): 0x2e34a6b0
2025-09-28T10:33:03.891 [DEBUG] [Thread-122022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:03.911 [DEBUG] [Thread-122022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:33:03.911 [INFO] [Thread-122022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:33:03.914 [DEBUG] [Thread-122022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:03.914 [DEBUG] [Thread-122022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:33:03.914 [DEBUG] [Thread-122022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:03.914 [DEBUG] [Thread-122022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] Compression: none
2025-09-28T10:33:03.915 [DEBUG] [Thread-122022] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:03.931 [DEBUG] [Thread-122022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:03.932 [DEBUG] [Thread-122022] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:03.932 [DEBUG] [Thread-122022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:33:03.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:33:03.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:03.934 [DEBUG] [Thread-122022] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:03.934 [DEBUG] [Thread-122022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:03.934 [DEBUG] [Thread-122022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:03.935 [DEBUG] [Thread-122022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:33:03.935 [DEBUG] [Thread-122022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:03.958 [INFO] [Thread-122022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:03.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:04.714 [DEBUG] [Thread-122022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:04.714 [DEBUG] [Thread-122022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:04.715 [DEBUG] [Thread-122022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:33:04.755 [DEBUG] [Thread-122022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:04.755 [DEBUG] [Thread-122022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:04.760 [DEBUG] [Thread-122022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:04.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:04.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:33:04.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:33:04.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:33:04.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:04.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:33:04.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:04.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:04.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:33:04.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.355989 -999.00  +17.20   4.85     45   +5.30 1 1 1 1 1   888    0 14.49 96.25 ----- 3.6 4.8 226.1 8.4 26.0 -27.1 24.5 -25.1 23.2 -24.8 24.4 -26.2
2025-09-28T10:33:04.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:33:04.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:33:04.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.355989
2025-09-28T10:33:04.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:33:04.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:33:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:33:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:33:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:33:04.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:32:52', tmtdew=13.28, humidity=40.93, cloud=0.0, wind=7.71, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:32:37.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:33:04.778 [DEBUG] [Thread-122022] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:04.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-28T10:33:04.874 [DEBUG] [Thread-122025] [transport.py] [_log()] starting thread (client mode): 0x2e3751b0
2025-09-28T10:33:04.874 [DEBUG] [Thread-122025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:04.888 [DEBUG] [Thread-122025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:33:04.888 [INFO] [Thread-122025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:04.896 [DEBUG] [Thread-122025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:04.897 [DEBUG] [Thread-122025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:04.897 [DEBUG] [Thread-122025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:04.897 [DEBUG] [Thread-122025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:04.897 [DEBUG] [Thread-122025] [transport.py] [_log()] Compression: none
2025-09-28T10:33:04.897 [DEBUG] [Thread-122025] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:04.956 [DEBUG] [Thread-122025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:04.957 [DEBUG] [Thread-122025] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:04.958 [DEBUG] [Thread-122025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:33:04.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:33:04.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:05.012 [DEBUG] [Thread-122025] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:05.012 [DEBUG] [Thread-122025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:05.013 [DEBUG] [Thread-122025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:05.013 [DEBUG] [Thread-122025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:33:05.013 [DEBUG] [Thread-122025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:05.032 [INFO] [Thread-122025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:05.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-28T10:33:05.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:05.998 [DEBUG] [Thread-122025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:05.998 [DEBUG] [Thread-122025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:06.046 [DEBUG] [Thread-122025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:06.046 [DEBUG] [Thread-122025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:06.055 [DEBUG] [Thread-122025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:06.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:06.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-28T10:33:06.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-28T10:33:06.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:06.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:06.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:06.089 [DEBUG] [Thread-122025] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:06.540 [DEBUG] [Thread-122027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:33:16.091 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:33:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:33:16.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 32, 52), 13.28, 40.93, 0.0, 7.71, 16.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:33:16.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:32:52
2025-09-28T10:33:16.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:33:16.910 [DEBUG] [Thread-122028] [transport.py] [_log()] starting thread (client mode): 0x2b9dcd00
2025-09-28T10:33:16.910 [DEBUG] [Thread-122028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:16.929 [DEBUG] [Thread-122028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:33:16.929 [INFO] [Thread-122028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:16.932 [DEBUG] [Thread-122028] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] Compression: none
2025-09-28T10:33:16.933 [DEBUG] [Thread-122028] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:16.941 [DEBUG] [Thread-122028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:16.941 [DEBUG] [Thread-122028] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:16.941 [DEBUG] [Thread-122028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:33:16.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:33:16.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:16.943 [DEBUG] [Thread-122028] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:16.943 [DEBUG] [Thread-122028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:16.943 [DEBUG] [Thread-122028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:16.943 [DEBUG] [Thread-122028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:33:16.943 [DEBUG] [Thread-122028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:16.960 [INFO] [Thread-122028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:16.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:17.510 [DEBUG] [Thread-122028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:17.510 [DEBUG] [Thread-122028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:17.511 [DEBUG] [Thread-122028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:33:17.551 [DEBUG] [Thread-122028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:17.551 [DEBUG] [Thread-122028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:17.554 [DEBUG] [Thread-122028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:17.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:17.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:33:17.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:33:17.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:33:17.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:17.585 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:33:17.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:17.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:17.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:33:17.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.356336 -999.00  +17.70   4.44     44   +5.40 1 1 1 1 1   888    0 14.42 93.11 ----- 3.0 4.4 177.6 7.4 26.2 -26.7 24.4 -28.9 23.3 -24.8 24.6 -26.0
2025-09-28T10:33:17.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:33:17.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:33:17.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.356336
2025-09-28T10:33:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:33:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:33:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:33:17.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:33:17.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:33:17.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:32:52', tmtdew=13.28, humidity=40.93, cloud=0.0, wind=7.71, temperature=16.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:33:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:33:17.588 [DEBUG] [Thread-122028] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:17.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-28T10:33:17.683 [DEBUG] [Thread-122031] [transport.py] [_log()] starting thread (client mode): 0x2e3de650
2025-09-28T10:33:17.683 [DEBUG] [Thread-122031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:17.697 [DEBUG] [Thread-122031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:33:17.697 [INFO] [Thread-122031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:33:17.705 [DEBUG] [Thread-122031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:17.705 [DEBUG] [Thread-122031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] Compression: none
2025-09-28T10:33:17.706 [DEBUG] [Thread-122031] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:17.767 [DEBUG] [Thread-122031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:17.767 [DEBUG] [Thread-122031] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:17.768 [DEBUG] [Thread-122031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:33:17.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:33:17.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:17.824 [DEBUG] [Thread-122031] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:17.825 [DEBUG] [Thread-122031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:17.825 [DEBUG] [Thread-122031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:17.825 [DEBUG] [Thread-122031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:33:17.825 [DEBUG] [Thread-122031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:17.844 [INFO] [Thread-122031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:17.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-28T10:33:17.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:18.845 [DEBUG] [Thread-122031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:18.845 [DEBUG] [Thread-122031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:18.893 [DEBUG] [Thread-122031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:18.893 [DEBUG] [Thread-122031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:18.902 [DEBUG] [Thread-122031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:18.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:18.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-28T10:33:18.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-28T10:33:18.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:18.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:18.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:18.937 [DEBUG] [Thread-122031] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:21.585 [DEBUG] [Thread-122033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:28.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:33:28.940 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:33:28.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-28T10:33:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 33, 24), 13.45, 40.48, 0.0, 9.79, 16.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:33:29.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:33:24
2025-09-28T10:33:29.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:33:29.758 [DEBUG] [Thread-122034] [transport.py] [_log()] starting thread (client mode): 0x2b9dce80
2025-09-28T10:33:29.758 [DEBUG] [Thread-122034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:29.778 [DEBUG] [Thread-122034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:33:29.778 [INFO] [Thread-122034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:29.779 [DEBUG] [Thread-122034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] Compression: none
2025-09-28T10:33:29.780 [DEBUG] [Thread-122034] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:29.787 [DEBUG] [Thread-122034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:29.788 [DEBUG] [Thread-122034] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:29.788 [DEBUG] [Thread-122034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:33:29.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:33:29.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:29.789 [DEBUG] [Thread-122034] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:29.789 [DEBUG] [Thread-122034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:29.789 [DEBUG] [Thread-122034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:29.789 [DEBUG] [Thread-122034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:33:29.789 [DEBUG] [Thread-122034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:29.807 [INFO] [Thread-122034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:29.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:29.817 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:29.818 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:30.538 [DEBUG] [Thread-122034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:30.538 [DEBUG] [Thread-122034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:30.539 [DEBUG] [Thread-122034] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:33:30.579 [DEBUG] [Thread-122034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:30.579 [DEBUG] [Thread-122034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:30.584 [DEBUG] [Thread-122034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:30.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:30.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:33:30.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:33:30.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:33:30.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:30.607 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:33:30.607 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:30.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.356336 -999.00  +17.70   4.44     44   +5.40 1 1 1 1 1   888    0 14.42 93.11 ----- 3.0 4.4 177.6 7.4 26.2 -26.7 24.4 -28.9 23.3 -24.8 24.6 -26.0
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.356336
2025-09-28T10:33:30.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:33:30.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:33:30.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:33:30.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:33:30.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:33:30.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:33:24', tmtdew=13.45, humidity=40.48, cloud=0.0, wind=9.79, temperature=16.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:33:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:33:30.609 [DEBUG] [Thread-122034] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:30.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-28T10:33:30.705 [DEBUG] [Thread-122037] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb50
2025-09-28T10:33:30.705 [DEBUG] [Thread-122037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:30.721 [DEBUG] [Thread-122037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:33:30.721 [INFO] [Thread-122037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:30.729 [DEBUG] [Thread-122037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] Compression: none
2025-09-28T10:33:30.730 [DEBUG] [Thread-122037] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:30.793 [DEBUG] [Thread-122037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:30.794 [DEBUG] [Thread-122037] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:30.794 [DEBUG] [Thread-122037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:33:30.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:33:30.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:30.852 [DEBUG] [Thread-122037] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:30.853 [DEBUG] [Thread-122037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:30.853 [DEBUG] [Thread-122037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:30.853 [DEBUG] [Thread-122037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:33:30.853 [DEBUG] [Thread-122037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:30.876 [INFO] [Thread-122037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:30.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-28T10:33:30.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:31.981 [DEBUG] [Thread-122037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:31.981 [DEBUG] [Thread-122037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:32.057 [DEBUG] [Thread-122037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:32.057 [DEBUG] [Thread-122037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:32.093 [DEBUG] [Thread-122037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:32.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:32.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-28T10:33:32.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-28T10:33:32.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:32.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:32.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:32.215 [DEBUG] [Thread-122037] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:36.631 [DEBUG] [Thread-122039 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:42.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:33:42.212 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:33:42.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-28T10:33:42.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 33, 24), 13.45, 40.48, 0.0, 9.79, 16.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:33:42.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:33:24
2025-09-28T10:33:42.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:33:43.059 [DEBUG] [Thread-122040] [transport.py] [_log()] starting thread (client mode): 0x2e38d840
2025-09-28T10:33:43.059 [DEBUG] [Thread-122040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:43.079 [DEBUG] [Thread-122040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:33:43.079 [INFO] [Thread-122040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:43.080 [DEBUG] [Thread-122040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:43.081 [DEBUG] [Thread-122040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:43.081 [DEBUG] [Thread-122040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:43.081 [DEBUG] [Thread-122040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:43.081 [DEBUG] [Thread-122040] [transport.py] [_log()] Compression: none
2025-09-28T10:33:43.081 [DEBUG] [Thread-122040] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:43.088 [DEBUG] [Thread-122040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:43.089 [DEBUG] [Thread-122040] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:43.089 [DEBUG] [Thread-122040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:33:43.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:33:43.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:43.090 [DEBUG] [Thread-122040] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:43.091 [DEBUG] [Thread-122040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:43.091 [DEBUG] [Thread-122040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:43.091 [DEBUG] [Thread-122040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:33:43.091 [DEBUG] [Thread-122040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:43.108 [INFO] [Thread-122040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:43.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:43.871 [DEBUG] [Thread-122040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:43.871 [DEBUG] [Thread-122040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:43.871 [DEBUG] [Thread-122040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:33:43.912 [DEBUG] [Thread-122040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:43.912 [DEBUG] [Thread-122040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:43.916 [DEBUG] [Thread-122040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:43.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:43.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:33:43.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:33:43.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:33:43.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:43.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:33:43.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:43.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.356336 -999.00  +17.70   4.44     44   +5.40 1 1 1 1 1   888    0 14.42 93.11 ----- 3.0 4.4 177.6 7.4 26.2 -26.7 24.4 -28.9 23.3 -24.8 24.6 -26.0
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.356336
2025-09-28T10:33:43.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:33:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:33:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:33:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:33:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:33:43.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:33:24', tmtdew=13.45, humidity=40.48, cloud=0.0, wind=9.79, temperature=16.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:33:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:33:43.948 [DEBUG] [Thread-122040] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:44.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-28T10:33:44.045 [DEBUG] [Thread-122043] [transport.py] [_log()] starting thread (client mode): 0x2e3c0820
2025-09-28T10:33:44.045 [DEBUG] [Thread-122043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:44.059 [DEBUG] [Thread-122043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:33:44.059 [INFO] [Thread-122043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:33:44.066 [DEBUG] [Thread-122043] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:44.067 [DEBUG] [Thread-122043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:44.068 [DEBUG] [Thread-122043] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:44.069 [DEBUG] [Thread-122043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:44.069 [DEBUG] [Thread-122043] [transport.py] [_log()] Compression: none
2025-09-28T10:33:44.069 [DEBUG] [Thread-122043] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:44.124 [DEBUG] [Thread-122043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:44.125 [DEBUG] [Thread-122043] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:44.126 [DEBUG] [Thread-122043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:33:44.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:33:44.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:44.180 [DEBUG] [Thread-122043] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:44.181 [DEBUG] [Thread-122043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:44.181 [DEBUG] [Thread-122043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:44.181 [DEBUG] [Thread-122043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:33:44.181 [DEBUG] [Thread-122043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:44.199 [INFO] [Thread-122043] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:44.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-28T10:33:44.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:45.173 [DEBUG] [Thread-122043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:45.173 [DEBUG] [Thread-122043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:45.221 [DEBUG] [Thread-122043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:45.221 [DEBUG] [Thread-122043] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:45.230 [DEBUG] [Thread-122043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:45.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:45.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-28T10:33:45.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-28T10:33:45.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:45.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:45.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:45.266 [DEBUG] [Thread-122043] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:51.680 [DEBUG] [Thread-122045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:33:55.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:33:55.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:33:55.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-28T10:33:55.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 33, 24), 13.45, 40.48, 0.0, 9.79, 16.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:33:55.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:33:24
2025-09-28T10:33:55.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:33:56.104 [DEBUG] [Thread-122046] [transport.py] [_log()] starting thread (client mode): 0x2e34a620
2025-09-28T10:33:56.104 [DEBUG] [Thread-122046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:56.124 [DEBUG] [Thread-122046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:33:56.124 [INFO] [Thread-122046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:33:56.125 [DEBUG] [Thread-122046] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:56.126 [DEBUG] [Thread-122046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:56.127 [DEBUG] [Thread-122046] [transport.py] [_log()] Compression: none
2025-09-28T10:33:56.127 [DEBUG] [Thread-122046] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:56.136 [DEBUG] [Thread-122046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:56.136 [DEBUG] [Thread-122046] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:56.137 [DEBUG] [Thread-122046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:33:56.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:33:56.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:56.139 [DEBUG] [Thread-122046] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:56.139 [DEBUG] [Thread-122046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:56.140 [DEBUG] [Thread-122046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:56.140 [DEBUG] [Thread-122046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:33:56.140 [DEBUG] [Thread-122046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:56.160 [INFO] [Thread-122046] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:56.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:56.713 [DEBUG] [Thread-122046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:56.713 [DEBUG] [Thread-122046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:56.722 [DEBUG] [Thread-122046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:33:56.754 [DEBUG] [Thread-122046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:56.754 [DEBUG] [Thread-122046] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:56.757 [DEBUG] [Thread-122046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:56.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:56.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:33:56.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:33:56.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:33:56.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:56.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:33:56.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.356683 -999.00  +18.00   3.12     43   +5.50 1 1 1 1 1   888    0 14.17 92.62 ----- 4.7 3.1 132.5 5.3 26.3 -27.2 24.6 -26.3 23.4 -25.5 24.6 -27.0
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:33:56.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.356683
2025-09-28T10:33:56.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:33:56.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:33:56.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:33:56.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:33:56.781 [DEBUG] [Thread-122046] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:33:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:33:56.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:33:24', tmtdew=13.45, humidity=40.48, cloud=0.0, wind=9.79, temperature=16.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:33:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:33:56.860 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:33:56.869 [DEBUG] [Thread-122049] [transport.py] [_log()] starting thread (client mode): 0x2b988d30
2025-09-28T10:33:56.869 [DEBUG] [Thread-122049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:33:56.885 [DEBUG] [Thread-122049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:33:56.885 [INFO] [Thread-122049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:33:56.892 [DEBUG] [Thread-122049] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] client lang: <none>
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] server lang: <none>
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] kex follows: False
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] Compression: none
2025-09-28T10:33:56.893 [DEBUG] [Thread-122049] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:33:56.950 [DEBUG] [Thread-122049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:33:56.950 [DEBUG] [Thread-122049] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:33:56.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:33:56.951 [DEBUG] [Thread-122049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:33:56.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:33:57.008 [DEBUG] [Thread-122049] [transport.py] [_log()] userauth is OK
2025-09-28T10:33:57.008 [DEBUG] [Thread-122049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:33:57.008 [DEBUG] [Thread-122049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:33:57.008 [DEBUG] [Thread-122049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:33:57.008 [DEBUG] [Thread-122049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:33:57.024 [INFO] [Thread-122049] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:33:57.024 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:33:57.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:33:58.167 [DEBUG] [Thread-122049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:33:58.167 [DEBUG] [Thread-122049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:33:58.215 [DEBUG] [Thread-122049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:33:58.215 [DEBUG] [Thread-122049] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:33:58.223 [DEBUG] [Thread-122049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:33:58.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:33:58.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-28T10:33:58.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-28T10:33:58.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:33:58.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:33:58.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:33:58.255 [DEBUG] [Thread-122049] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:03.238 [DEBUG] [Thread-122051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:06.704 [DEBUG] [Thread-122052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:08.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:34:08.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:34:08.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-28T10:34:08.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 33, 56), 13.43, 40.48, 0.0, 11.42, 16.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:34:08.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:33:56
2025-09-28T10:34:08.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:34:09.089 [DEBUG] [Thread-122053] [transport.py] [_log()] starting thread (client mode): 0x2e3de800
2025-09-28T10:34:09.089 [DEBUG] [Thread-122053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:09.110 [DEBUG] [Thread-122053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:34:09.110 [INFO] [Thread-122053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:34:09.111 [DEBUG] [Thread-122053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:09.111 [DEBUG] [Thread-122053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:34:09.111 [DEBUG] [Thread-122053] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:09.112 [DEBUG] [Thread-122053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:09.113 [DEBUG] [Thread-122053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:09.113 [DEBUG] [Thread-122053] [transport.py] [_log()] Compression: none
2025-09-28T10:34:09.113 [DEBUG] [Thread-122053] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:09.123 [DEBUG] [Thread-122053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:09.123 [DEBUG] [Thread-122053] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:09.124 [DEBUG] [Thread-122053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:34:09.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:34:09.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:09.126 [DEBUG] [Thread-122053] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:09.126 [DEBUG] [Thread-122053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:09.127 [DEBUG] [Thread-122053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:09.127 [DEBUG] [Thread-122053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:34:09.127 [DEBUG] [Thread-122053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:09.145 [INFO] [Thread-122053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:09.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:09.852 [DEBUG] [Thread-122053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:09.852 [DEBUG] [Thread-122053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:09.852 [DEBUG] [Thread-122053] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:34:09.894 [DEBUG] [Thread-122053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:09.894 [DEBUG] [Thread-122053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:09.897 [DEBUG] [Thread-122053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:09.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:09.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:34:09.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:34:09.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:34:09.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:09.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:34:09.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.356683 -999.00  +18.00   3.12     43   +5.50 1 1 1 1 1   888    0 14.17 92.62 ----- 4.7 3.1 132.5 5.3 26.3 -27.2 24.6 -26.3 23.4 -25.5 24.6 -27.0
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.356683
2025-09-28T10:34:09.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:34:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:34:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:34:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:34:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:34:09.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:33:56', tmtdew=13.43, humidity=40.48, cloud=0.0, wind=11.42, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:33:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:34:09.918 [DEBUG] [Thread-122053] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:09.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:34:10.029 [DEBUG] [Thread-122056] [transport.py] [_log()] starting thread (client mode): 0x2b9dd360
2025-09-28T10:34:10.030 [DEBUG] [Thread-122056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:10.070 [DEBUG] [Thread-122056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:34:10.071 [INFO] [Thread-122056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:34:10.105 [DEBUG] [Thread-122056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:10.106 [DEBUG] [Thread-122056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:10.107 [DEBUG] [Thread-122056] [transport.py] [_log()] Compression: none
2025-09-28T10:34:10.107 [DEBUG] [Thread-122056] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:10.171 [DEBUG] [Thread-122056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:10.172 [DEBUG] [Thread-122056] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:10.172 [DEBUG] [Thread-122056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:34:10.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:34:10.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:10.231 [DEBUG] [Thread-122056] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:10.231 [DEBUG] [Thread-122056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:10.232 [DEBUG] [Thread-122056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:10.232 [DEBUG] [Thread-122056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:34:10.232 [DEBUG] [Thread-122056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:10.251 [INFO] [Thread-122056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:10.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-28T10:34:10.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:11.192 [DEBUG] [Thread-122056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:11.192 [DEBUG] [Thread-122056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:11.240 [DEBUG] [Thread-122056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:11.240 [DEBUG] [Thread-122056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:11.249 [DEBUG] [Thread-122056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:11.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:11.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-28T10:34:11.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-28T10:34:11.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:11.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:11.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:11.285 [DEBUG] [Thread-122056] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:21.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:34:21.287 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:34:21.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-28T10:34:21.741 [DEBUG] [Thread-122058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 33, 56), 13.43, 40.48, 0.0, 11.42, 16.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:34:21.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:33:56
2025-09-28T10:34:21.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:34:22.112 [DEBUG] [Thread-122059] [transport.py] [_log()] starting thread (client mode): 0x2e38f580
2025-09-28T10:34:22.112 [DEBUG] [Thread-122059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:22.132 [DEBUG] [Thread-122059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:34:22.132 [INFO] [Thread-122059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:22.135 [DEBUG] [Thread-122059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] Compression: none
2025-09-28T10:34:22.136 [DEBUG] [Thread-122059] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:22.144 [DEBUG] [Thread-122059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:22.145 [DEBUG] [Thread-122059] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:22.145 [DEBUG] [Thread-122059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:34:22.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:34:22.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:22.147 [DEBUG] [Thread-122059] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:22.147 [DEBUG] [Thread-122059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:22.147 [DEBUG] [Thread-122059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:22.147 [DEBUG] [Thread-122059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:34:22.147 [DEBUG] [Thread-122059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:22.172 [INFO] [Thread-122059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:22.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:22.769 [DEBUG] [Thread-122059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:22.769 [DEBUG] [Thread-122059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:22.769 [DEBUG] [Thread-122059] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:34:22.810 [DEBUG] [Thread-122059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:22.811 [DEBUG] [Thread-122059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:22.812 [DEBUG] [Thread-122059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:22.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:22.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:34:22.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:34:22.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:34:22.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:22.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:34:22.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:22.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:22.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:34:22.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357030 -999.00  +18.00   6.36     43   +5.20 1 1 1 1 1   888    0 14.28 91.30 ----- 10.4 6.4 202.6 16.5 26.2 -28.1 24.6 -25.5 23.4 -25.9 24.7 -27.4
2025-09-28T10:34:22.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:34:22.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:34:22.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357030
2025-09-28T10:34:22.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:34:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:34:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:34:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:34:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:34:22.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:33:56', tmtdew=13.43, humidity=40.48, cloud=0.0, wind=11.42, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:34:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:34:22.833 [DEBUG] [Thread-122059] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:22.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-28T10:34:22.964 [DEBUG] [Thread-122062] [transport.py] [_log()] starting thread (client mode): 0x2e360f70
2025-09-28T10:34:22.964 [DEBUG] [Thread-122062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:23.011 [DEBUG] [Thread-122062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:34:23.012 [INFO] [Thread-122062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:23.052 [DEBUG] [Thread-122062] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] Compression: none
2025-09-28T10:34:23.053 [DEBUG] [Thread-122062] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:23.142 [DEBUG] [Thread-122062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:23.143 [DEBUG] [Thread-122062] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:23.143 [DEBUG] [Thread-122062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:34:23.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:34:23.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:23.268 [DEBUG] [Thread-122062] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:23.268 [DEBUG] [Thread-122062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:23.268 [DEBUG] [Thread-122062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:23.268 [DEBUG] [Thread-122062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:34:23.268 [DEBUG] [Thread-122062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:23.324 [INFO] [Thread-122062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:23.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-28T10:34:23.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:24.321 [DEBUG] [Thread-122062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:24.321 [DEBUG] [Thread-122062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:24.402 [DEBUG] [Thread-122062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:24.403 [DEBUG] [Thread-122062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:24.445 [DEBUG] [Thread-122062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:24.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:24.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-28T10:34: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') -> 00000000
2025-09-28T10:34:24.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:24.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:24.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:24.616 [DEBUG] [Thread-122062] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:29.957 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:29.958 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:34.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:34:34.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:34: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-28T10:34:35.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 34, 28), 13.62, 40.04, 0.0, 12.42, 16.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:34:35.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:34:28
2025-09-28T10:34:35.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:34:35.417 [DEBUG] [Thread-122064] [transport.py] [_log()] starting thread (client mode): 0x2e34bfa0
2025-09-28T10:34:35.417 [DEBUG] [Thread-122064] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:35.438 [DEBUG] [Thread-122064] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:34:35.438 [INFO] [Thread-122064] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:34:35.442 [DEBUG] [Thread-122064] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:35.442 [DEBUG] [Thread-122064] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:34:35.442 [DEBUG] [Thread-122064] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] Compression: none
2025-09-28T10:34:35.443 [DEBUG] [Thread-122064] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:35.461 [DEBUG] [Thread-122064] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:35.461 [DEBUG] [Thread-122064] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:35.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:34:35.463 [DEBUG] [Thread-122064] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:34:35.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:35.464 [DEBUG] [Thread-122064] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:35.465 [DEBUG] [Thread-122064] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:35.465 [DEBUG] [Thread-122064] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:35.465 [DEBUG] [Thread-122064] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:34:35.465 [DEBUG] [Thread-122064] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:35.486 [INFO] [Thread-122064] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:35.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:36.074 [DEBUG] [Thread-122064] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:36.074 [DEBUG] [Thread-122064] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:36.075 [DEBUG] [Thread-122064] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:34:36.115 [DEBUG] [Thread-122064] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:36.116 [DEBUG] [Thread-122064] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:36.119 [DEBUG] [Thread-122064] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:36.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:36.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:34:36.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:34:36.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:34:36.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:36.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:34:36.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:36.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:34:36.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357030 -999.00  +18.00   6.36     43   +5.20 1 1 1 1 1   888    0 14.28 91.30 ----- 10.4 6.4 202.6 16.5 26.2 -28.1 24.6 -25.5 23.4 -25.9 24.7 -27.4
2025-09-28T10:34:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:34:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:34:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357030
2025-09-28T10:34:36.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:34:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:34:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:34:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:34:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:34:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:34:28', tmtdew=13.62, humidity=40.04, cloud=0.0, wind=12.42, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:34:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:34:36.148 [DEBUG] [Thread-122064] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:36.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-28T10:34:36.244 [DEBUG] [Thread-122067] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-28T10:34:36.245 [DEBUG] [Thread-122067] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:36.260 [DEBUG] [Thread-122067] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:34:36.260 [INFO] [Thread-122067] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:34:36.267 [DEBUG] [Thread-122067] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:36.268 [DEBUG] [Thread-122067] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:36.269 [DEBUG] [Thread-122067] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:36.270 [DEBUG] [Thread-122067] [transport.py] [_log()] Compression: none
2025-09-28T10:34:36.270 [DEBUG] [Thread-122067] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:36.332 [DEBUG] [Thread-122067] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:36.332 [DEBUG] [Thread-122067] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:36.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:34:36.333 [DEBUG] [Thread-122067] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:34:36.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:36.388 [DEBUG] [Thread-122067] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:36.388 [DEBUG] [Thread-122067] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:36.388 [DEBUG] [Thread-122067] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:36.388 [DEBUG] [Thread-122067] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:34:36.388 [DEBUG] [Thread-122067] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:36.408 [INFO] [Thread-122067] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:36.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-28T10:34:36.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:36.789 [DEBUG] [Thread-122069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:34:37.396 [DEBUG] [Thread-122067] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:37.397 [DEBUG] [Thread-122067] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:37.444 [DEBUG] [Thread-122067] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:37.444 [DEBUG] [Thread-122067] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:37.453 [DEBUG] [Thread-122067] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:37.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:37.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-28T10:34:37.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-28T10:34:37.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:37.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:37.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:37.487 [DEBUG] [Thread-122067] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:47.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:34:47.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:34:47.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-28T10:34:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 34, 28), 13.62, 40.04, 0.0, 12.42, 16.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:34:48.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:34:28
2025-09-28T10:34:48.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:34:48.313 [DEBUG] [Thread-122070] [transport.py] [_log()] starting thread (client mode): 0x30ddffd0
2025-09-28T10:34:48.313 [DEBUG] [Thread-122070] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:48.333 [DEBUG] [Thread-122070] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:34:48.333 [INFO] [Thread-122070] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:34:48.335 [DEBUG] [Thread-122070] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:48.335 [DEBUG] [Thread-122070] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:34:48.335 [DEBUG] [Thread-122070] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:48.335 [DEBUG] [Thread-122070] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] Compression: none
2025-09-28T10:34:48.336 [DEBUG] [Thread-122070] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:48.349 [DEBUG] [Thread-122070] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:48.350 [DEBUG] [Thread-122070] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:48.350 [DEBUG] [Thread-122070] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:34:48.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:34:48.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:48.352 [DEBUG] [Thread-122070] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:48.353 [DEBUG] [Thread-122070] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:48.353 [DEBUG] [Thread-122070] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:48.353 [DEBUG] [Thread-122070] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:34:48.353 [DEBUG] [Thread-122070] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:48.367 [INFO] [Thread-122070] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34:48.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:49.129 [DEBUG] [Thread-122070] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:49.129 [DEBUG] [Thread-122070] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:49.130 [DEBUG] [Thread-122070] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:34:49.170 [DEBUG] [Thread-122070] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:49.170 [DEBUG] [Thread-122070] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:49.176 [DEBUG] [Thread-122070] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:49.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:49.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:34:49.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:34:49.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:34:49.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:49.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:34:49.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:49.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:49.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:34:49.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357030 -999.00  +18.00   6.36     43   +5.20 1 1 1 1 1   888    0 14.28 91.30 ----- 10.4 6.4 202.6 16.5 26.2 -28.1 24.6 -25.5 23.4 -25.9 24.7 -27.4
2025-09-28T10:34:49.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:34:49.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:34:49.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357030
2025-09-28T10:34:49.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:34:49.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:34:49.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:34:49.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:34:49.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:34:49.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:34:28', tmtdew=13.62, humidity=40.04, cloud=0.0, wind=12.42, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:34:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:34:49.201 [DEBUG] [Thread-122070] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:49.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-28T10:34:49.337 [DEBUG] [Thread-122073] [transport.py] [_log()] starting thread (client mode): 0x30ddff40
2025-09-28T10:34:49.337 [DEBUG] [Thread-122073] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:34:49.381 [DEBUG] [Thread-122073] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:34:49.381 [INFO] [Thread-122073] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:34:49.418 [DEBUG] [Thread-122073] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:34:49.418 [DEBUG] [Thread-122073] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] client lang: <none>
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] server lang: <none>
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] kex follows: False
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:34:49.419 [DEBUG] [Thread-122073] [transport.py] [_log()] Compression: none
2025-09-28T10:34:49.420 [DEBUG] [Thread-122073] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:34:49.508 [DEBUG] [Thread-122073] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:34:49.508 [DEBUG] [Thread-122073] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:34:49.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:34:49.518 [DEBUG] [Thread-122073] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:34:49.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:34:49.623 [DEBUG] [Thread-122073] [transport.py] [_log()] userauth is OK
2025-09-28T10:34:49.624 [DEBUG] [Thread-122073] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:34:49.624 [DEBUG] [Thread-122073] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:34:49.624 [DEBUG] [Thread-122073] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:34:49.624 [DEBUG] [Thread-122073] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:34:49.673 [INFO] [Thread-122073] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:34: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-28T10:34:49.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:34:50.654 [DEBUG] [Thread-122073] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:34:50.655 [DEBUG] [Thread-122073] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:34:50.734 [DEBUG] [Thread-122073] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:34:50.735 [DEBUG] [Thread-122073] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:34:50.775 [DEBUG] [Thread-122073] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:34:50.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:34:50.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-28T10:34:50.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') -> 00000000
2025-09-28T10:34:50.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:34:50.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:34:50.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:34:50.930 [DEBUG] [Thread-122073] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:34:51.837 [DEBUG] [Thread-122075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:00.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:35:00.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:35: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-28T10:35:01.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 34, 28), 13.62, 40.04, 0.0, 12.42, 16.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:35:01.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:34:28
2025-09-28T10:35:01.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:35:01.788 [DEBUG] [Thread-122076] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T10:35:01.788 [DEBUG] [Thread-122076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:01.806 [DEBUG] [Thread-122076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:35:01.807 [INFO] [Thread-122076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] Compression: none
2025-09-28T10:35:01.809 [DEBUG] [Thread-122076] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:01.817 [DEBUG] [Thread-122076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:01.817 [DEBUG] [Thread-122076] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:01.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:35:01.817 [DEBUG] [Thread-122076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:35:01.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:01.818 [DEBUG] [Thread-122076] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:01.818 [DEBUG] [Thread-122076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:01.818 [DEBUG] [Thread-122076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:01.818 [DEBUG] [Thread-122076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:35:01.818 [DEBUG] [Thread-122076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:01.829 [INFO] [Thread-122076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:01.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:02.473 [DEBUG] [Thread-122076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:02.473 [DEBUG] [Thread-122076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:02.473 [DEBUG] [Thread-122076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:35:02.514 [DEBUG] [Thread-122076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:02.514 [DEBUG] [Thread-122076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:02.516 [DEBUG] [Thread-122076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:02.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:02.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:35:02.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:35:02.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:35:02.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:02.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:35:02.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357377 -999.00  +17.90  10.35     43   +5.20 1 1 1 1 1   888    0 14.77 95.16 ----- 10.8 10.3 208.0 15.9 26.1 -28.3 24.3 -27.4 23.3 -26.5 24.6 -27.8
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:35:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357377
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:35:02.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:34:28', tmtdew=13.62, humidity=40.04, cloud=0.0, wind=12.42, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:34:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:35:02.526 [DEBUG] [Thread-122076] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:02.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-28T10:35:02.643 [DEBUG] [Thread-122079] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T10:35:02.644 [DEBUG] [Thread-122079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:02.684 [DEBUG] [Thread-122079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:35:02.684 [INFO] [Thread-122079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:02.716 [DEBUG] [Thread-122079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:02.717 [DEBUG] [Thread-122079] [transport.py] [_log()] Compression: none
2025-09-28T10:35:02.717 [DEBUG] [Thread-122079] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:02.799 [DEBUG] [Thread-122079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:02.800 [DEBUG] [Thread-122079] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:02.800 [DEBUG] [Thread-122079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:35:02.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:35:02.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:02.905 [DEBUG] [Thread-122079] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:02.905 [DEBUG] [Thread-122079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:02.905 [DEBUG] [Thread-122079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:02.905 [DEBUG] [Thread-122079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:35:02.905 [DEBUG] [Thread-122079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:02.948 [INFO] [Thread-122079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:02.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-28T10:35:02.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:03.286 [DEBUG] [Thread-122081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:03.945 [DEBUG] [Thread-122079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:03.945 [DEBUG] [Thread-122079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:04.019 [DEBUG] [Thread-122079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:04.019 [DEBUG] [Thread-122079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:04.055 [DEBUG] [Thread-122079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:04.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:04.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-28T10:35:04.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-28T10:35:04.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:04.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:04.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:04.192 [DEBUG] [Thread-122079] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:06.872 [DEBUG] [Thread-122082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:14.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:35:14.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:35: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-28T10:35:14.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 34, 28), 13.62, 40.04, 0.0, 12.42, 16.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:35:14.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:34:28
2025-09-28T10:35:14.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:35:14.985 [DEBUG] [Thread-122083] [transport.py] [_log()] starting thread (client mode): 0x2b9cde40
2025-09-28T10:35:14.985 [DEBUG] [Thread-122083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:15.005 [DEBUG] [Thread-122083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:35:15.005 [INFO] [Thread-122083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] Compression: none
2025-09-28T10:35:15.007 [DEBUG] [Thread-122083] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:15.019 [DEBUG] [Thread-122083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:15.019 [DEBUG] [Thread-122083] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:15.020 [DEBUG] [Thread-122083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:35:15.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:35:15.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:15.021 [DEBUG] [Thread-122083] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:15.021 [DEBUG] [Thread-122083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:15.022 [DEBUG] [Thread-122083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:15.022 [DEBUG] [Thread-122083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:35:15.022 [DEBUG] [Thread-122083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:15.045 [INFO] [Thread-122083] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:15.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:21.920 [DEBUG] [Thread-122085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:22.856 [DEBUG] [Thread-122083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:22.857 [DEBUG] [Thread-122083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:22.857 [DEBUG] [Thread-122083] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:35:22.897 [DEBUG] [Thread-122083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:22.897 [DEBUG] [Thread-122083] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:22.901 [DEBUG] [Thread-122083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:23.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:23.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:35:23.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:35:23.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:35:23.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:23.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:35:23.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357377 -999.00  +17.90  10.35     43   +5.20 1 1 1 1 1   888    0 14.77 95.16 ----- 10.8 10.3 208.0 15.9 26.1 -28.3 24.3 -27.4 23.3 -26.5 24.6 -27.8
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:35:23.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357377
2025-09-28T10:35:23.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:35:23.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:35:23.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:35:23.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:35:23.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:35:23.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:34:28', tmtdew=13.62, humidity=40.04, cloud=0.0, wind=12.42, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:34:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:35:23.056 [DEBUG] [Thread-122083] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:23.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-28T10:35:23.154 [DEBUG] [Thread-122087] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T10:35:23.154 [DEBUG] [Thread-122087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:23.169 [DEBUG] [Thread-122087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:35:23.169 [INFO] [Thread-122087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:23.177 [DEBUG] [Thread-122087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:23.178 [DEBUG] [Thread-122087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:23.178 [DEBUG] [Thread-122087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:23.178 [DEBUG] [Thread-122087] [transport.py] [_log()] Compression: none
2025-09-28T10:35:23.178 [DEBUG] [Thread-122087] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:23.238 [DEBUG] [Thread-122087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:23.239 [DEBUG] [Thread-122087] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:23.239 [DEBUG] [Thread-122087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:35:23.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:35:23.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:23.295 [DEBUG] [Thread-122087] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:23.296 [DEBUG] [Thread-122087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:23.296 [DEBUG] [Thread-122087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:23.296 [DEBUG] [Thread-122087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:35:23.296 [DEBUG] [Thread-122087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:23.321 [INFO] [Thread-122087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35: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-28T10:35:23.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:24.284 [DEBUG] [Thread-122087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:24.285 [DEBUG] [Thread-122087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:24.332 [DEBUG] [Thread-122087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:24.332 [DEBUG] [Thread-122087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:24.344 [DEBUG] [Thread-122087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:24.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:24.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-28T10:35:24.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-28T10:35:24.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:24.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:24.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:24.379 [DEBUG] [Thread-122087] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:30.101 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:30.102 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:34.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:35:34.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:35:34.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-28T10:35:34.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 34, 28), 13.62, 40.04, 0.0, 12.42, 16.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:35:34.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:34:28
2025-09-28T10:35:35.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:35:35.207 [DEBUG] [Thread-122089] [transport.py] [_log()] starting thread (client mode): 0x30ddfc10
2025-09-28T10:35:35.207 [DEBUG] [Thread-122089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:35.228 [DEBUG] [Thread-122089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:35:35.228 [INFO] [Thread-122089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:35.231 [DEBUG] [Thread-122089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] Compression: none
2025-09-28T10:35:35.232 [DEBUG] [Thread-122089] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:35.249 [DEBUG] [Thread-122089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:35.249 [DEBUG] [Thread-122089] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:35.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:35:35.250 [DEBUG] [Thread-122089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:35:35.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:35.252 [DEBUG] [Thread-122089] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:35.252 [DEBUG] [Thread-122089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:35.252 [DEBUG] [Thread-122089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:35.253 [DEBUG] [Thread-122089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:35:35.253 [DEBUG] [Thread-122089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:35.272 [INFO] [Thread-122089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:35.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:35.810 [DEBUG] [Thread-122089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:35.810 [DEBUG] [Thread-122089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:35.811 [DEBUG] [Thread-122089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:35:35.851 [DEBUG] [Thread-122089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:35.851 [DEBUG] [Thread-122089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:35.853 [DEBUG] [Thread-122089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:35.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:35.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:35:35.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:35:35.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:35:35.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:35.878 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:35:35.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:35.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:35.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:35:35.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357724 -999.00  +17.60   6.31     44   +5.40 1 1 1 1 1   888    0 14.38 88.20 ----- 7.1 6.3 152.8 10.3 26.1 -27.2 24.4 -25.3 23.4 -25.1 24.7 -25.5
2025-09-28T10:35:35.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:35:35.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:35:35.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357724
2025-09-28T10:35:35.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:35:35.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:35:35.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:35:35.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:35:35.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:35:35.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:34:28', tmtdew=13.62, humidity=40.04, cloud=0.0, wind=12.42, temperature=16.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:35:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:35:35.880 [DEBUG] [Thread-122089] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:35.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:35:35.979 [DEBUG] [Thread-122092] [transport.py] [_log()] starting thread (client mode): 0x2b9bad70
2025-09-28T10:35:35.980 [DEBUG] [Thread-122092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:35.994 [DEBUG] [Thread-122092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:35:35.995 [INFO] [Thread-122092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:35:36.002 [DEBUG] [Thread-122092] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:36.002 [DEBUG] [Thread-122092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:36.003 [DEBUG] [Thread-122092] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] Compression: none
2025-09-28T10:35:36.004 [DEBUG] [Thread-122092] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:36.060 [DEBUG] [Thread-122092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:36.060 [DEBUG] [Thread-122092] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:36.061 [DEBUG] [Thread-122092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:35:36.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:35:36.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:36.115 [DEBUG] [Thread-122092] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:36.115 [DEBUG] [Thread-122092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:36.115 [DEBUG] [Thread-122092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:36.116 [DEBUG] [Thread-122092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:35:36.116 [DEBUG] [Thread-122092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:36.135 [INFO] [Thread-122092] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:36.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-28T10:35:36.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:36.951 [DEBUG] [Thread-122094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:35:37.121 [DEBUG] [Thread-122092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:37.121 [DEBUG] [Thread-122092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:37.169 [DEBUG] [Thread-122092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:37.169 [DEBUG] [Thread-122092] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:37.178 [DEBUG] [Thread-122092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:37.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:37.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')
2025-09-28T10:35:37.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-28T10:35:37.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:37.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:37.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:37.215 [DEBUG] [Thread-122092] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:47.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:35:47.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:35:47.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-28T10:35:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 35, 32), 13.53, 40.17, 0.0, 13.0, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:35:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:35:32
2025-09-28T10:35:47.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:35:48.039 [DEBUG] [Thread-122095] [transport.py] [_log()] starting thread (client mode): 0x2b98ae60
2025-09-28T10:35:48.040 [DEBUG] [Thread-122095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:48.060 [DEBUG] [Thread-122095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:35:48.061 [INFO] [Thread-122095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:35:48.064 [DEBUG] [Thread-122095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:48.064 [DEBUG] [Thread-122095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:35:48.064 [DEBUG] [Thread-122095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:48.064 [DEBUG] [Thread-122095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:48.064 [DEBUG] [Thread-122095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] Compression: none
2025-09-28T10:35:48.065 [DEBUG] [Thread-122095] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:48.082 [DEBUG] [Thread-122095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:48.082 [DEBUG] [Thread-122095] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:48.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:35:48.083 [DEBUG] [Thread-122095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:35:48.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:48.085 [DEBUG] [Thread-122095] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:48.086 [DEBUG] [Thread-122095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:48.086 [DEBUG] [Thread-122095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:48.086 [DEBUG] [Thread-122095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:35:48.086 [DEBUG] [Thread-122095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:48.110 [INFO] [Thread-122095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:48.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:48.923 [DEBUG] [Thread-122095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:48.924 [DEBUG] [Thread-122095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:48.924 [DEBUG] [Thread-122095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:35:48.964 [DEBUG] [Thread-122095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:48.964 [DEBUG] [Thread-122095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:48.967 [DEBUG] [Thread-122095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:48.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:48.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:35:48.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:35:48.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:35:48.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:48.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:35:48.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:48.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:35:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357724 -999.00  +17.60   6.31     44   +5.40 1 1 1 1 1   888    0 14.38 88.20 ----- 7.1 6.3 152.8 10.3 26.1 -27.2 24.4 -25.3 23.4 -25.1 24.7 -25.5
2025-09-28T10:35:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:35:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:35:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357724
2025-09-28T10:35:48.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:35:48.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:35:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:35:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:35:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:35:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:35:32', tmtdew=13.53, humidity=40.17, cloud=0.0, wind=13.0, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:35:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:35:48.990 [DEBUG] [Thread-122095] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:49.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-28T10:35:49.086 [DEBUG] [Thread-122098] [transport.py] [_log()] starting thread (client mode): 0x2b98b790
2025-09-28T10:35:49.086 [DEBUG] [Thread-122098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:35:49.101 [DEBUG] [Thread-122098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:35:49.101 [INFO] [Thread-122098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:35:49.108 [DEBUG] [Thread-122098] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] client lang: <none>
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] server lang: <none>
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] kex follows: False
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] Compression: none
2025-09-28T10:35:49.109 [DEBUG] [Thread-122098] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:35:49.168 [DEBUG] [Thread-122098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:35:49.168 [DEBUG] [Thread-122098] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:35:49.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:35:49.169 [DEBUG] [Thread-122098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:35:49.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:35:49.226 [DEBUG] [Thread-122098] [transport.py] [_log()] userauth is OK
2025-09-28T10:35:49.226 [DEBUG] [Thread-122098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:35:49.227 [DEBUG] [Thread-122098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:35:49.227 [DEBUG] [Thread-122098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:35:49.227 [DEBUG] [Thread-122098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:35:49.246 [INFO] [Thread-122098] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:35:49.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-28T10:35:49.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:35:50.224 [DEBUG] [Thread-122098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:35:50.224 [DEBUG] [Thread-122098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:35:50.272 [DEBUG] [Thread-122098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:35:50.272 [DEBUG] [Thread-122098] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:35:50.281 [DEBUG] [Thread-122098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:35:50.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:35:50.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')
2025-09-28T10:35: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') -> 00000000
2025-09-28T10:35:50.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:35:50.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:35:50.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:35:50.319 [DEBUG] [Thread-122098] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:35:51.990 [DEBUG] [Thread-122100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:00.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:36:00.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:36:00.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-28T10:36:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 35, 32), 13.53, 40.17, 0.0, 13.0, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:36:00.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:35:32
2025-09-28T10:36:00.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:36:01.145 [DEBUG] [Thread-122101] [transport.py] [_log()] starting thread (client mode): 0x2b98a230
2025-09-28T10:36:01.145 [DEBUG] [Thread-122101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:01.159 [DEBUG] [Thread-122101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:36:01.159 [INFO] [Thread-122101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] Compression: none
2025-09-28T10:36:01.163 [DEBUG] [Thread-122101] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:01.181 [DEBUG] [Thread-122101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:01.182 [DEBUG] [Thread-122101] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:01.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:36:01.183 [DEBUG] [Thread-122101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:36:01.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:01.184 [DEBUG] [Thread-122101] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:01.185 [DEBUG] [Thread-122101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:01.185 [DEBUG] [Thread-122101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:01.185 [DEBUG] [Thread-122101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:36:01.185 [DEBUG] [Thread-122101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:01.220 [INFO] [Thread-122101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:01.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:02.010 [DEBUG] [Thread-122101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:02.011 [DEBUG] [Thread-122101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:02.011 [DEBUG] [Thread-122101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:36:02.052 [DEBUG] [Thread-122101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:02.052 [DEBUG] [Thread-122101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:02.054 [DEBUG] [Thread-122101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:02.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:02.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:36:02.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:36:02.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:36:02.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:02.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:36:02.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.357724 -999.00  +17.60   6.31     44   +5.40 1 1 1 1 1   888    0 14.38 88.20 ----- 7.1 6.3 152.8 10.3 26.1 -27.2 24.4 -25.3 23.4 -25.1 24.7 -25.5
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.357724
2025-09-28T10:36:02.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:36:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:36:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:36:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:36:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:36:02.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:35:32', tmtdew=13.53, humidity=40.17, cloud=0.0, wind=13.0, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:35:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:36:02.067 [DEBUG] [Thread-122101] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:02.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-28T10:36:02.168 [DEBUG] [Thread-122104] [transport.py] [_log()] starting thread (client mode): 0x30ddedd0
2025-09-28T10:36:02.168 [DEBUG] [Thread-122104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:02.194 [DEBUG] [Thread-122104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:36:02.194 [INFO] [Thread-122104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:02.213 [DEBUG] [Thread-122104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:02.214 [DEBUG] [Thread-122104] [transport.py] [_log()] Compression: none
2025-09-28T10:36:02.215 [DEBUG] [Thread-122104] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:02.289 [DEBUG] [Thread-122104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:02.289 [DEBUG] [Thread-122104] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:02.290 [DEBUG] [Thread-122104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:36:02.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:36:02.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:02.371 [DEBUG] [Thread-122104] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:02.371 [DEBUG] [Thread-122104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:02.372 [DEBUG] [Thread-122104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:02.372 [DEBUG] [Thread-122104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:36:02.372 [DEBUG] [Thread-122104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:02.403 [INFO] [Thread-122104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:02.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-28T10:36:02.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:03.336 [DEBUG] [Thread-122106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:03.402 [DEBUG] [Thread-122104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:03.402 [DEBUG] [Thread-122104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:03.469 [DEBUG] [Thread-122104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:03.470 [DEBUG] [Thread-122104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:03.500 [DEBUG] [Thread-122104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:03.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:03.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-28T10:36:03.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-28T10:36:03.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:03.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:03.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:03.616 [DEBUG] [Thread-122104] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:07.042 [DEBUG] [Thread-122107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:13.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:36:13.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:36:13.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-28T10:36:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 36, 4), 13.49, 40.25, 0.0, 12.37, 16.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:36:14.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:36:04
2025-09-28T10:36:14.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:36:14.405 [DEBUG] [Thread-122108] [transport.py] [_log()] starting thread (client mode): 0x2b9890f0
2025-09-28T10:36:14.405 [DEBUG] [Thread-122108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:14.425 [DEBUG] [Thread-122108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:36:14.425 [INFO] [Thread-122108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:14.428 [DEBUG] [Thread-122108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:14.429 [DEBUG] [Thread-122108] [transport.py] [_log()] Compression: none
2025-09-28T10:36:14.429 [DEBUG] [Thread-122108] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:14.439 [DEBUG] [Thread-122108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:14.439 [DEBUG] [Thread-122108] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:14.440 [DEBUG] [Thread-122108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:36:14.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:36:14.440 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:14.441 [DEBUG] [Thread-122108] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:14.442 [DEBUG] [Thread-122108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:14.442 [DEBUG] [Thread-122108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:14.442 [DEBUG] [Thread-122108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:36:14.442 [DEBUG] [Thread-122108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:14.477 [INFO] [Thread-122108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:14.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:15.068 [DEBUG] [Thread-122108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:15.068 [DEBUG] [Thread-122108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:15.068 [DEBUG] [Thread-122108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:36:15.109 [DEBUG] [Thread-122108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:15.109 [DEBUG] [Thread-122108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:15.110 [DEBUG] [Thread-122108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:15.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:15.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:36:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:36:15.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:36:15.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:15.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:36:15.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.358071 -999.00  +17.80  10.68     43   +5.30 1 1 1 1 1   888    0 14.06 80.54 ----- 10.4 10.7 187.4 14.3 26.2 -26.4 24.4 -30.4 23.5 -25.5 24.8 -26.6
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.358071
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:36:15.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:36:04', tmtdew=13.49, humidity=40.25, cloud=0.0, wind=12.37, temperature=16.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:35:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:36:15.134 [DEBUG] [Thread-122108] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:15.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-28T10:36:15.221 [DEBUG] [Thread-122111] [transport.py] [_log()] starting thread (client mode): 0x2b98a080
2025-09-28T10:36:15.221 [DEBUG] [Thread-122111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:15.235 [DEBUG] [Thread-122111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:36:15.235 [INFO] [Thread-122111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] Compression: none
2025-09-28T10:36:15.243 [DEBUG] [Thread-122111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:15.301 [DEBUG] [Thread-122111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:15.302 [DEBUG] [Thread-122111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:15.302 [DEBUG] [Thread-122111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:36:15.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:36:15.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:15.358 [DEBUG] [Thread-122111] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:15.358 [DEBUG] [Thread-122111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:15.358 [DEBUG] [Thread-122111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:15.358 [DEBUG] [Thread-122111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:36:15.358 [DEBUG] [Thread-122111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:15.372 [INFO] [Thread-122111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:15.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:36:15.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:16.339 [DEBUG] [Thread-122111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:16.339 [DEBUG] [Thread-122111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:16.387 [DEBUG] [Thread-122111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:16.387 [DEBUG] [Thread-122111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:16.395 [DEBUG] [Thread-122111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:16.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:16.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-28T10:36:16.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-28T10:36:16.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:16.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:16.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:16.434 [DEBUG] [Thread-122111] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:22.073 [DEBUG] [Thread-122113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:26.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:36:26.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:36:26.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-28T10:36:26.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 36, 4), 13.49, 40.25, 0.0, 12.37, 16.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:36:26.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:36:04
2025-09-28T10:36:27.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:36:27.250 [DEBUG] [Thread-122114] [transport.py] [_log()] starting thread (client mode): 0x2b98a680
2025-09-28T10:36:27.250 [DEBUG] [Thread-122114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:27.271 [DEBUG] [Thread-122114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:36:27.271 [INFO] [Thread-122114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:36:27.274 [DEBUG] [Thread-122114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:27.280 [DEBUG] [Thread-122114] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] Compression: none
2025-09-28T10:36:27.281 [DEBUG] [Thread-122114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:27.300 [DEBUG] [Thread-122114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:27.301 [DEBUG] [Thread-122114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:27.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:36:27.302 [DEBUG] [Thread-122114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:36:27.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:27.304 [DEBUG] [Thread-122114] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:27.304 [DEBUG] [Thread-122114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:27.304 [DEBUG] [Thread-122114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:27.304 [DEBUG] [Thread-122114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:36:27.304 [DEBUG] [Thread-122114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:27.322 [INFO] [Thread-122114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:27.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:28.002 [DEBUG] [Thread-122114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:28.002 [DEBUG] [Thread-122114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:28.003 [DEBUG] [Thread-122114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:36:28.043 [DEBUG] [Thread-122114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:28.043 [DEBUG] [Thread-122114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:28.046 [DEBUG] [Thread-122114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:28.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:28.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:36:28.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:36:28.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:36:28.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:28.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:36:28.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.358071 -999.00  +17.80  10.68     43   +5.30 1 1 1 1 1   888    0 14.06 80.54 ----- 10.4 10.7 187.4 14.3 26.2 -26.4 24.4 -30.4 23.5 -25.5 24.8 -26.6
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:36:28.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.358071
2025-09-28T10:36:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:36:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:36:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:36:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:36:28.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:36:28.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:36:04', tmtdew=13.49, humidity=40.25, cloud=0.0, wind=12.37, temperature=16.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:35:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:36:28.078 [DEBUG] [Thread-122114] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:28.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-28T10:36:28.205 [DEBUG] [Thread-122117] [transport.py] [_log()] starting thread (client mode): 0x2b98b2b0
2025-09-28T10:36:28.205 [DEBUG] [Thread-122117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:28.248 [DEBUG] [Thread-122117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:36:28.249 [INFO] [Thread-122117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:36:28.285 [DEBUG] [Thread-122117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:28.286 [DEBUG] [Thread-122117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:28.287 [DEBUG] [Thread-122117] [transport.py] [_log()] Compression: none
2025-09-28T10:36:28.287 [DEBUG] [Thread-122117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:28.373 [DEBUG] [Thread-122117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:28.373 [DEBUG] [Thread-122117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:28.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:36:28.374 [DEBUG] [Thread-122117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:36:28.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:28.488 [DEBUG] [Thread-122117] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:28.488 [DEBUG] [Thread-122117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:28.488 [DEBUG] [Thread-122117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:28.488 [DEBUG] [Thread-122117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:36:28.488 [DEBUG] [Thread-122117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:28.531 [INFO] [Thread-122117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:28.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-28T10:36:28.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:29.584 [DEBUG] [Thread-122117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:29.584 [DEBUG] [Thread-122117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:29.662 [DEBUG] [Thread-122117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:29.662 [DEBUG] [Thread-122117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:29.701 [DEBUG] [Thread-122117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:29.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:29.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-28T10:36:29.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') -> 00000000
2025-09-28T10:36:29.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:29.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:29.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:29.852 [DEBUG] [Thread-122117] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:30.244 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:30.245 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:37.112 [DEBUG] [Thread-122119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:39.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:36:39.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:36:39.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-28T10:36:40.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 36, 36), 13.63, 39.9, 0.0, 14.89, 17.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:36:40.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:36:36
2025-09-28T10:36:40.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:36:40.642 [DEBUG] [Thread-122120] [transport.py] [_log()] starting thread (client mode): 0x2b98b220
2025-09-28T10:36:40.642 [DEBUG] [Thread-122120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:40.662 [DEBUG] [Thread-122120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:36:40.662 [INFO] [Thread-122120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:40.665 [DEBUG] [Thread-122120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:40.666 [DEBUG] [Thread-122120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:40.666 [DEBUG] [Thread-122120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:40.666 [DEBUG] [Thread-122120] [transport.py] [_log()] Compression: none
2025-09-28T10:36:40.666 [DEBUG] [Thread-122120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:40.679 [DEBUG] [Thread-122120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:40.679 [DEBUG] [Thread-122120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:40.680 [DEBUG] [Thread-122120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:36:40.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:36:40.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:40.724 [DEBUG] [Thread-122120] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:40.724 [DEBUG] [Thread-122120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:40.724 [DEBUG] [Thread-122120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:40.724 [DEBUG] [Thread-122120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:36:40.724 [DEBUG] [Thread-122120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:40.745 [INFO] [Thread-122120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:40.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:41.293 [DEBUG] [Thread-122120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:41.294 [DEBUG] [Thread-122120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:41.294 [DEBUG] [Thread-122120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:36:41.334 [DEBUG] [Thread-122120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:41.335 [DEBUG] [Thread-122120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:41.337 [DEBUG] [Thread-122120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:41.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:41.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:36:41.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:36:41.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:36:41.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:41.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:36:41.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:41.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:36:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.358419 -999.00  +17.70  15.29     43   +5.20 1 1 1 1 1   888    0 14.05 76.75 ----- 14.8 15.3 178.4 17.4 26.1 -27.1 24.3 -26.9 23.4 -25.8 24.7 -27.1
2025-09-28T10:36:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:36:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:36:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.358419
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:36:41.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:36:36', tmtdew=13.63, humidity=39.9, cloud=0.0, wind=14.89, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:36:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:36:41.355 [DEBUG] [Thread-122120] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:41.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-28T10:36:41.451 [DEBUG] [Thread-122123] [transport.py] [_log()] starting thread (client mode): 0x2b9cde40
2025-09-28T10:36:41.451 [DEBUG] [Thread-122123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:41.466 [DEBUG] [Thread-122123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:36:41.466 [INFO] [Thread-122123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:36:41.473 [DEBUG] [Thread-122123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] Compression: none
2025-09-28T10:36:41.474 [DEBUG] [Thread-122123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:41.530 [DEBUG] [Thread-122123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:41.531 [DEBUG] [Thread-122123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:41.531 [DEBUG] [Thread-122123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:36:41.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:36:41.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:41.586 [DEBUG] [Thread-122123] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:41.587 [DEBUG] [Thread-122123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:41.587 [DEBUG] [Thread-122123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:41.587 [DEBUG] [Thread-122123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:36:41.587 [DEBUG] [Thread-122123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:41.606 [INFO] [Thread-122123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:41.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-28T10:36:41.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:42.595 [DEBUG] [Thread-122123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:42.595 [DEBUG] [Thread-122123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:42.647 [DEBUG] [Thread-122123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:42.647 [DEBUG] [Thread-122123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:42.664 [DEBUG] [Thread-122123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:42.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:42.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')
2025-09-28T10:36:42.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T10:36:42.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:42.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:42.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:42.718 [DEBUG] [Thread-122123] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:52.140 [DEBUG] [Thread-122125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:36:52.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:36:52.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:36:52.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-28T10:36:53.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 36, 36), 13.63, 39.9, 0.0, 14.89, 17.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:36:53.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:36:36
2025-09-28T10:36:53.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:36:53.583 [DEBUG] [Thread-122126] [transport.py] [_log()] starting thread (client mode): 0x2b9de4a0
2025-09-28T10:36:53.583 [DEBUG] [Thread-122126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:53.603 [DEBUG] [Thread-122126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:36:53.603 [INFO] [Thread-122126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] Compression: none
2025-09-28T10:36:53.606 [DEBUG] [Thread-122126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:53.620 [DEBUG] [Thread-122126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:53.621 [DEBUG] [Thread-122126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:53.621 [DEBUG] [Thread-122126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:36:53.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:36:53.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:53.622 [DEBUG] [Thread-122126] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:53.622 [DEBUG] [Thread-122126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:53.622 [DEBUG] [Thread-122126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:53.622 [DEBUG] [Thread-122126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:36:53.622 [DEBUG] [Thread-122126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:53.634 [INFO] [Thread-122126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:53.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:54.363 [DEBUG] [Thread-122126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:54.363 [DEBUG] [Thread-122126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:54.363 [DEBUG] [Thread-122126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:36:54.404 [DEBUG] [Thread-122126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:54.404 [DEBUG] [Thread-122126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:54.407 [DEBUG] [Thread-122126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:54.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:54.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:36:54.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:36:54.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:36:54.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:54.426 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:36:54.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.358419 -999.00  +17.70  15.29     43   +5.20 1 1 1 1 1   888    0 14.05 76.75 ----- 14.8 15.3 178.4 17.4 26.1 -27.1 24.3 -26.9 23.4 -25.8 24.7 -27.1
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.358419
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:36:54.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:36:36', tmtdew=13.63, humidity=39.9, cloud=0.0, wind=14.89, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:36:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:36:54.427 [DEBUG] [Thread-122126] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:36:54.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-28T10:36:54.541 [DEBUG] [Thread-122129] [transport.py] [_log()] starting thread (client mode): 0x30ddf850
2025-09-28T10:36:54.541 [DEBUG] [Thread-122129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:36:54.587 [DEBUG] [Thread-122129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:36:54.587 [INFO] [Thread-122129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] client lang: <none>
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] server lang: <none>
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] kex follows: False
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] Compression: none
2025-09-28T10:36:54.624 [DEBUG] [Thread-122129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:36:54.715 [DEBUG] [Thread-122129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:36:54.715 [DEBUG] [Thread-122129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:36:54.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:36:54.715 [DEBUG] [Thread-122129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:36:54.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:36:54.836 [DEBUG] [Thread-122129] [transport.py] [_log()] userauth is OK
2025-09-28T10:36:54.836 [DEBUG] [Thread-122129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:36:54.836 [DEBUG] [Thread-122129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:36:54.836 [DEBUG] [Thread-122129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:36:54.836 [DEBUG] [Thread-122129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:36:54.880 [INFO] [Thread-122129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:36:54.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:36:54.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:36:55.864 [DEBUG] [Thread-122129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:36:55.864 [DEBUG] [Thread-122129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:36:55.945 [DEBUG] [Thread-122129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:36:55.945 [DEBUG] [Thread-122129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:36:55.986 [DEBUG] [Thread-122129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:36:56.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:36:56.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-28T10:36:56.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-28T10:36:56.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:36:56.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:36:56.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:36:56.153 [DEBUG] [Thread-122129] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:03.394 [DEBUG] [Thread-122131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:06.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:37:06.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:37:06.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-28T10:37:06.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 36, 36), 13.63, 39.9, 0.0, 14.89, 17.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:37:06.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:36:36
2025-09-28T10:37:06.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:37:06.942 [DEBUG] [Thread-122132] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T10:37:06.942 [DEBUG] [Thread-122132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:06.954 [DEBUG] [Thread-122132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:37:06.954 [INFO] [Thread-122132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:06.960 [DEBUG] [Thread-122132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:06.961 [DEBUG] [Thread-122132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:06.961 [DEBUG] [Thread-122132] [transport.py] [_log()] Compression: none
2025-09-28T10:37:06.961 [DEBUG] [Thread-122132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:06.968 [DEBUG] [Thread-122132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:06.968 [DEBUG] [Thread-122132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:06.968 [DEBUG] [Thread-122132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:37:06.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:37:06.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:06.969 [DEBUG] [Thread-122132] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:06.969 [DEBUG] [Thread-122132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:06.969 [DEBUG] [Thread-122132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:06.969 [DEBUG] [Thread-122132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:37:06.969 [DEBUG] [Thread-122132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:06.981 [INFO] [Thread-122132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:06.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:07.177 [DEBUG] [Thread-122134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:07.722 [DEBUG] [Thread-122132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:07.722 [DEBUG] [Thread-122132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:07.722 [DEBUG] [Thread-122132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:37:07.763 [DEBUG] [Thread-122132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:07.763 [DEBUG] [Thread-122132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:07.766 [DEBUG] [Thread-122132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:07.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:07.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:37:07.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:37:07.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:37:07.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:07.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:37:07.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.358419 -999.00  +17.70  15.29     43   +5.20 1 1 1 1 1   888    0 14.05 76.75 ----- 14.8 15.3 178.4 17.4 26.1 -27.1 24.3 -26.9 23.4 -25.8 24.7 -27.1
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:37:07.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.358419
2025-09-28T10:37:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:37:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:37:07.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:37:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:37:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:37:07.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:36:36', tmtdew=13.63, humidity=39.9, cloud=0.0, wind=14.89, temperature=17.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:36:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:37:07.791 [DEBUG] [Thread-122132] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:07.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-28T10:37:07.887 [DEBUG] [Thread-122136] [transport.py] [_log()] starting thread (client mode): 0x2b947c10
2025-09-28T10:37:07.887 [DEBUG] [Thread-122136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:07.903 [DEBUG] [Thread-122136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:37:07.903 [INFO] [Thread-122136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:07.911 [DEBUG] [Thread-122136] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] Compression: none
2025-09-28T10:37:07.912 [DEBUG] [Thread-122136] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:07.971 [DEBUG] [Thread-122136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:07.971 [DEBUG] [Thread-122136] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:07.972 [DEBUG] [Thread-122136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:37:07.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:37:07.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:08.028 [DEBUG] [Thread-122136] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:08.028 [DEBUG] [Thread-122136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:08.028 [DEBUG] [Thread-122136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:08.028 [DEBUG] [Thread-122136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:37:08.028 [DEBUG] [Thread-122136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:08.054 [INFO] [Thread-122136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:08.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-28T10:37:08.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:09.045 [DEBUG] [Thread-122136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:09.045 [DEBUG] [Thread-122136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:09.093 [DEBUG] [Thread-122136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:09.093 [DEBUG] [Thread-122136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:09.101 [DEBUG] [Thread-122136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:09.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:09.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')
2025-09-28T10:37:09.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') -> 00000000
2025-09-28T10:37:09.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:09.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:09.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:09.135 [DEBUG] [Thread-122136] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:37:19.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:37: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-28T10:37:19.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 37, 8), 13.5, 40.26, 0.0, 16.96, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:37:19.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:37:08
2025-09-28T10:37:19.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:37:19.951 [DEBUG] [Thread-122138] [transport.py] [_log()] starting thread (client mode): 0x2b989c60
2025-09-28T10:37:19.951 [DEBUG] [Thread-122138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:19.972 [DEBUG] [Thread-122138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:37:19.973 [INFO] [Thread-122138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:19.976 [DEBUG] [Thread-122138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] Compression: none
2025-09-28T10:37:19.977 [DEBUG] [Thread-122138] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:19.994 [DEBUG] [Thread-122138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:19.995 [DEBUG] [Thread-122138] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:19.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:37:19.996 [DEBUG] [Thread-122138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:37:19.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:19.998 [DEBUG] [Thread-122138] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:19.998 [DEBUG] [Thread-122138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:19.998 [DEBUG] [Thread-122138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:19.998 [DEBUG] [Thread-122138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:37:19.998 [DEBUG] [Thread-122138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:20.017 [INFO] [Thread-122138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:20.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:20.605 [DEBUG] [Thread-122138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:20.605 [DEBUG] [Thread-122138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:20.606 [DEBUG] [Thread-122138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:37:20.646 [DEBUG] [Thread-122138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:20.647 [DEBUG] [Thread-122138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:20.649 [DEBUG] [Thread-122138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:20.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:20.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:37:20.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:37:20.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:37:20.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:20.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:37:20.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:20.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359114 -999.00  +18.10   7.37     43   +5.50 1 1 1 1 1   888    0 13.90 71.29 ----- 6.9 7.4 193.7 12.6 25.9 -26.7 24.2 -26.6 23.4 -25.4 24.7 -26.3
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359114
2025-09-28T10:37:20.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:37:20.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:37:20.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:37:20.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:37:20.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:37:20.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:37:08', tmtdew=13.5, humidity=40.26, cloud=0.0, wind=16.96, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:37:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:37:20.671 [DEBUG] [Thread-122138] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:20.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-28T10:37:20.801 [DEBUG] [Thread-122141] [transport.py] [_log()] starting thread (client mode): 0x2b98b7f0
2025-09-28T10:37:20.801 [DEBUG] [Thread-122141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:20.848 [DEBUG] [Thread-122141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:37:20.849 [INFO] [Thread-122141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:37:20.889 [DEBUG] [Thread-122141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:20.889 [DEBUG] [Thread-122141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:37:20.889 [DEBUG] [Thread-122141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:20.890 [DEBUG] [Thread-122141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:20.891 [DEBUG] [Thread-122141] [transport.py] [_log()] Compression: none
2025-09-28T10:37:20.891 [DEBUG] [Thread-122141] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:20.984 [DEBUG] [Thread-122141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:20.985 [DEBUG] [Thread-122141] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:20.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:37:20.986 [DEBUG] [Thread-122141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:37:20.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:21.112 [DEBUG] [Thread-122141] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:21.113 [DEBUG] [Thread-122141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:21.113 [DEBUG] [Thread-122141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:21.113 [DEBUG] [Thread-122141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:37:21.113 [DEBUG] [Thread-122141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:21.172 [INFO] [Thread-122141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:21.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-28T10:37:21.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:22.207 [DEBUG] [Thread-122143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:22.235 [DEBUG] [Thread-122141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:22.235 [DEBUG] [Thread-122141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:22.317 [DEBUG] [Thread-122141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:22.317 [DEBUG] [Thread-122141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:22.364 [DEBUG] [Thread-122141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:22.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:22.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-28T10:37:22.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-28T10:37:22.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:22.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:22.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:22.546 [DEBUG] [Thread-122141] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:30.389 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:30.389 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:37:32.511 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:37:32.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-28T10:37:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 37, 8), 13.5, 40.26, 0.0, 16.96, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:37:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:37:08
2025-09-28T10:37:33.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:37:33.343 [DEBUG] [Thread-122144] [transport.py] [_log()] starting thread (client mode): 0x2b9cdd20
2025-09-28T10:37:33.343 [DEBUG] [Thread-122144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:33.357 [DEBUG] [Thread-122144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:37:33.357 [INFO] [Thread-122144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] Compression: none
2025-09-28T10:37:33.359 [DEBUG] [Thread-122144] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:33.366 [DEBUG] [Thread-122144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:33.366 [DEBUG] [Thread-122144] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:33.366 [DEBUG] [Thread-122144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:37:33.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:37:33.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:33.367 [DEBUG] [Thread-122144] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:33.367 [DEBUG] [Thread-122144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:33.367 [DEBUG] [Thread-122144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:33.367 [DEBUG] [Thread-122144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:37:33.367 [DEBUG] [Thread-122144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:33.376 [INFO] [Thread-122144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:33.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:33.976 [DEBUG] [Thread-122144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:33.976 [DEBUG] [Thread-122144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:33.977 [DEBUG] [Thread-122144] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:37:34.017 [DEBUG] [Thread-122144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:34.018 [DEBUG] [Thread-122144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:34.021 [DEBUG] [Thread-122144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:34.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:34.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:37:34.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:37:34.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:37:34.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:34.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:37:34.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:34.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:34.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:37:34.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359114 -999.00  +18.10   7.37     43   +5.50 1 1 1 1 1   888    0 13.90 71.29 ----- 6.9 7.4 193.7 12.6 25.9 -26.7 24.2 -26.6 23.4 -25.4 24.7 -26.3
2025-09-28T10:37:34.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:37:34.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:37:34.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359114
2025-09-28T10:37:34.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:37:34.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:37:34.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:37:34.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:37:34.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:37:34.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:37:08', tmtdew=13.5, humidity=40.26, cloud=0.0, wind=16.96, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:37:07.450', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:37:34.050 [DEBUG] [Thread-122144] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:34.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:37:34.159 [DEBUG] [Thread-122147] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc70
2025-09-28T10:37:34.159 [DEBUG] [Thread-122147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:34.178 [DEBUG] [Thread-122147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:37:34.178 [INFO] [Thread-122147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:37:34.192 [DEBUG] [Thread-122147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:34.192 [DEBUG] [Thread-122147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:37:34.192 [DEBUG] [Thread-122147] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:34.193 [DEBUG] [Thread-122147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] Compression: none
2025-09-28T10:37:34.194 [DEBUG] [Thread-122147] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:34.259 [DEBUG] [Thread-122147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:34.260 [DEBUG] [Thread-122147] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:34.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:37:34.261 [DEBUG] [Thread-122147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:37:34.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:34.328 [DEBUG] [Thread-122147] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:34.328 [DEBUG] [Thread-122147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:34.328 [DEBUG] [Thread-122147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:34.328 [DEBUG] [Thread-122147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:37:34.328 [DEBUG] [Thread-122147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:34.352 [INFO] [Thread-122147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:34.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-28T10:37:34.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:35.412 [DEBUG] [Thread-122147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:35.412 [DEBUG] [Thread-122147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:35.487 [DEBUG] [Thread-122147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:35.487 [DEBUG] [Thread-122147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:35.510 [DEBUG] [Thread-122147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:35.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:35.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')
2025-09-28T10:37: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') -> 00000000
2025-09-28T10:37:35.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:35.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:35.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:35.557 [DEBUG] [Thread-122147] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:37.253 [DEBUG] [Thread-122149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:45.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:37:45.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:37: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-28T10:37:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 37, 40), 13.54, 40.15, 0.0, 12.3, 16.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:37:46.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:37:40
2025-09-28T10:37:46.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:37:46.383 [DEBUG] [Thread-122150] [transport.py] [_log()] starting thread (client mode): 0x2e3fb100
2025-09-28T10:37:46.384 [DEBUG] [Thread-122150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:46.400 [DEBUG] [Thread-122150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:37:46.400 [INFO] [Thread-122150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:46.401 [DEBUG] [Thread-122150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:46.402 [DEBUG] [Thread-122150] [transport.py] [_log()] Compression: none
2025-09-28T10:37:46.402 [DEBUG] [Thread-122150] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:46.412 [DEBUG] [Thread-122150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:46.413 [DEBUG] [Thread-122150] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:46.413 [DEBUG] [Thread-122150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:37:46.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:37:46.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:46.415 [DEBUG] [Thread-122150] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:46.415 [DEBUG] [Thread-122150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:46.415 [DEBUG] [Thread-122150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:46.415 [DEBUG] [Thread-122150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:37:46.415 [DEBUG] [Thread-122150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:46.431 [INFO] [Thread-122150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:46.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:46.967 [DEBUG] [Thread-122150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:46.968 [DEBUG] [Thread-122150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:46.968 [DEBUG] [Thread-122150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:37:47.008 [DEBUG] [Thread-122150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:47.009 [DEBUG] [Thread-122150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:47.011 [DEBUG] [Thread-122150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:47.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:47.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:37:47.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:37:47.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:37:47.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:47.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:37:47.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:47.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:47.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:37:47.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359461 -999.00  +18.10   3.23     43   +5.40 1 1 1 1 1   888    0 13.63 68.09 ----- 2.6 3.2 115.3 8.6 26.0 -28.1 24.4 -27.0 23.4 -25.0 24.7 -26.5
2025-09-28T10:37:47.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:37:47.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:37:47.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359461
2025-09-28T10:37:47.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:37:47.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:37:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:37:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:37:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:37:47.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:37:40', tmtdew=13.54, humidity=40.15, cloud=0.0, wind=12.3, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:37:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:37:47.031 [DEBUG] [Thread-122150] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:47.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-28T10:37:47.128 [DEBUG] [Thread-122153] [transport.py] [_log()] starting thread (client mode): 0x30ddd4e0
2025-09-28T10:37:47.128 [DEBUG] [Thread-122153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:47.144 [DEBUG] [Thread-122153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:37:47.144 [INFO] [Thread-122153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] Compression: none
2025-09-28T10:37:47.152 [DEBUG] [Thread-122153] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:47.209 [DEBUG] [Thread-122153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:47.209 [DEBUG] [Thread-122153] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:47.209 [DEBUG] [Thread-122153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:37:47.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:37:47.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:47.266 [DEBUG] [Thread-122153] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:47.266 [DEBUG] [Thread-122153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:47.266 [DEBUG] [Thread-122153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:47.266 [DEBUG] [Thread-122153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:37:47.266 [DEBUG] [Thread-122153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:47.280 [INFO] [Thread-122153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:47.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-28T10:37:47.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:48.312 [DEBUG] [Thread-122153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:48.312 [DEBUG] [Thread-122153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:48.360 [DEBUG] [Thread-122153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:48.360 [DEBUG] [Thread-122153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:48.369 [DEBUG] [Thread-122153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:48.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:48.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-28T10:37:48.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-28T10:37:48.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:48.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:48.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:48.403 [DEBUG] [Thread-122153] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:37:52.284 [DEBUG] [Thread-122155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:37:58.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:37:58.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:37:58.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-28T10:37:58.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 37, 40), 13.54, 40.15, 0.0, 12.3, 16.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:37:58.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:37:40
2025-09-28T10:37:59.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:37:59.243 [DEBUG] [Thread-122156] [transport.py] [_log()] starting thread (client mode): 0x2b9dd2a0
2025-09-28T10:37:59.243 [DEBUG] [Thread-122156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:37:59.263 [DEBUG] [Thread-122156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:37:59.263 [INFO] [Thread-122156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:37:59.267 [DEBUG] [Thread-122156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:37:59.267 [DEBUG] [Thread-122156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] client lang: <none>
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] server lang: <none>
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] kex follows: False
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:37:59.268 [DEBUG] [Thread-122156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:37:59.269 [DEBUG] [Thread-122156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:37:59.269 [DEBUG] [Thread-122156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:37:59.269 [DEBUG] [Thread-122156] [transport.py] [_log()] Compression: none
2025-09-28T10:37:59.269 [DEBUG] [Thread-122156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:37:59.287 [DEBUG] [Thread-122156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:37:59.287 [DEBUG] [Thread-122156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:37:59.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:37:59.289 [DEBUG] [Thread-122156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:37:59.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:37:59.291 [DEBUG] [Thread-122156] [transport.py] [_log()] userauth is OK
2025-09-28T10:37:59.291 [DEBUG] [Thread-122156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:37:59.291 [DEBUG] [Thread-122156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:37:59.291 [DEBUG] [Thread-122156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:37:59.291 [DEBUG] [Thread-122156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:37:59.314 [INFO] [Thread-122156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:37:59.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:37:59.906 [DEBUG] [Thread-122156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:37:59.906 [DEBUG] [Thread-122156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:37:59.906 [DEBUG] [Thread-122156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:37:59.947 [DEBUG] [Thread-122156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:37:59.947 [DEBUG] [Thread-122156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:37:59.950 [DEBUG] [Thread-122156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:37:59.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:37:59.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:37:59.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:37:59.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:37:59.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:37:59.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:37:59.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359461 -999.00  +18.10   3.23     43   +5.40 1 1 1 1 1   888    0 13.63 68.09 ----- 2.6 3.2 115.3 8.6 26.0 -28.1 24.4 -27.0 23.4 -25.0 24.7 -26.5
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:37:59.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359461
2025-09-28T10:37:59.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:37:59.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:37:59.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:37:59.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:37:59.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:37:59.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:37:40', tmtdew=13.54, humidity=40.15, cloud=0.0, wind=12.3, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:37:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:37:59.976 [DEBUG] [Thread-122156] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:00.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:38:00.069 [DEBUG] [Thread-122159] [transport.py] [_log()] starting thread (client mode): 0x2b9462c0
2025-09-28T10:38:00.069 [DEBUG] [Thread-122159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:00.083 [DEBUG] [Thread-122159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:38:00.083 [INFO] [Thread-122159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:00.091 [DEBUG] [Thread-122159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:00.092 [DEBUG] [Thread-122159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:00.092 [DEBUG] [Thread-122159] [transport.py] [_log()] Compression: none
2025-09-28T10:38:00.092 [DEBUG] [Thread-122159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:00.150 [DEBUG] [Thread-122159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:00.150 [DEBUG] [Thread-122159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:00.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:38:00.151 [DEBUG] [Thread-122159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:38:00.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:00.206 [DEBUG] [Thread-122159] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:00.206 [DEBUG] [Thread-122159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:00.206 [DEBUG] [Thread-122159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:00.206 [DEBUG] [Thread-122159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:38:00.206 [DEBUG] [Thread-122159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:00.224 [INFO] [Thread-122159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38: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-28T10:38:00.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:01.208 [DEBUG] [Thread-122159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:01.208 [DEBUG] [Thread-122159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:01.256 [DEBUG] [Thread-122159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:01.257 [DEBUG] [Thread-122159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:01.265 [DEBUG] [Thread-122159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:01.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:01.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-28T10:38:01.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-28T10:38:01.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:01.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:01.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:01.301 [DEBUG] [Thread-122159] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:03.448 [DEBUG] [Thread-122161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:07.336 [DEBUG] [Thread-122162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:11.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:38:11.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:38:11.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-28T10:38:11.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 37, 40), 13.54, 40.15, 0.0, 12.3, 16.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:38:11.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:37:40
2025-09-28T10:38:11.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:38:12.146 [DEBUG] [Thread-122163] [transport.py] [_log()] starting thread (client mode): 0x2b946ef0
2025-09-28T10:38:12.146 [DEBUG] [Thread-122163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:12.166 [DEBUG] [Thread-122163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:38:12.167 [INFO] [Thread-122163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:38:12.169 [DEBUG] [Thread-122163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:12.170 [DEBUG] [Thread-122163] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] Compression: none
2025-09-28T10:38:12.171 [DEBUG] [Thread-122163] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:12.188 [DEBUG] [Thread-122163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:12.188 [DEBUG] [Thread-122163] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:12.189 [DEBUG] [Thread-122163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:38:12.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:38:12.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:12.231 [DEBUG] [Thread-122163] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:12.232 [DEBUG] [Thread-122163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:12.232 [DEBUG] [Thread-122163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:12.232 [DEBUG] [Thread-122163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:38:12.232 [DEBUG] [Thread-122163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:12.263 [INFO] [Thread-122163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:12.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:13.000 [DEBUG] [Thread-122163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:13.000 [DEBUG] [Thread-122163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:13.000 [DEBUG] [Thread-122163] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:38:13.041 [DEBUG] [Thread-122163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:13.041 [DEBUG] [Thread-122163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:13.047 [DEBUG] [Thread-122163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:13.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:13.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:38:13.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:38:13.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:38:13.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:13.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:38:13.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359461 -999.00  +18.10   3.23     43   +5.40 1 1 1 1 1   888    0 13.63 68.09 ----- 2.6 3.2 115.3 8.6 26.0 -28.1 24.4 -27.0 23.4 -25.0 24.7 -26.5
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359461
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:38:13.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:38:13.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:37:40', tmtdew=13.54, humidity=40.15, cloud=0.0, wind=12.3, temperature=16.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:37:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:38:13.064 [DEBUG] [Thread-122163] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:13.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-28T10:38:13.151 [DEBUG] [Thread-122166] [transport.py] [_log()] starting thread (client mode): 0x2e3c3700
2025-09-28T10:38:13.151 [DEBUG] [Thread-122166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:13.166 [DEBUG] [Thread-122166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:38:13.166 [INFO] [Thread-122166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:38:13.173 [DEBUG] [Thread-122166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] Compression: none
2025-09-28T10:38:13.174 [DEBUG] [Thread-122166] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:13.229 [DEBUG] [Thread-122166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:13.229 [DEBUG] [Thread-122166] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:13.229 [DEBUG] [Thread-122166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:38:13.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:38:13.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:13.287 [DEBUG] [Thread-122166] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:13.287 [DEBUG] [Thread-122166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:13.287 [DEBUG] [Thread-122166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:13.288 [DEBUG] [Thread-122166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:38:13.288 [DEBUG] [Thread-122166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:13.303 [INFO] [Thread-122166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:13.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-28T10:38:13.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:14.297 [DEBUG] [Thread-122166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:14.297 [DEBUG] [Thread-122166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:14.345 [DEBUG] [Thread-122166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:14.345 [DEBUG] [Thread-122166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:14.354 [DEBUG] [Thread-122166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:14.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:14.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-28T10:38:14.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-28T10:38:14.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:14.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:14.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:14.390 [DEBUG] [Thread-122166] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:22.365 [DEBUG] [Thread-122168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:24.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:38:24.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:38:24.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:38:24.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 38, 12), 13.52, 40.2, 0.0, 11.42, 16.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:38:24.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:38:12
2025-09-28T10:38:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:38:25.225 [DEBUG] [Thread-122169] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T10:38:25.225 [DEBUG] [Thread-122169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:25.238 [DEBUG] [Thread-122169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:38:25.238 [INFO] [Thread-122169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:25.242 [DEBUG] [Thread-122169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] Compression: none
2025-09-28T10:38:25.243 [DEBUG] [Thread-122169] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:25.257 [DEBUG] [Thread-122169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:25.258 [DEBUG] [Thread-122169] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:25.258 [DEBUG] [Thread-122169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:38:25.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:38:25.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:25.260 [DEBUG] [Thread-122169] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:25.260 [DEBUG] [Thread-122169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:25.261 [DEBUG] [Thread-122169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:25.261 [DEBUG] [Thread-122169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:38:25.261 [DEBUG] [Thread-122169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:25.279 [INFO] [Thread-122169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:25.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:25.865 [DEBUG] [Thread-122169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:25.865 [DEBUG] [Thread-122169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:25.865 [DEBUG] [Thread-122169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:38:25.905 [DEBUG] [Thread-122169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:25.905 [DEBUG] [Thread-122169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:25.908 [DEBUG] [Thread-122169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:25.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:25.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:38:25.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:38:25.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:38:25.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:25.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:38:25.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:25.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359808 -999.00  +18.10   4.36     43   +5.30 1 1 1 1 1   888    0 14.30 71.77 ----- 4.9 4.4 181.2 9.8 26.2 -27.1 24.4 -25.3 23.4 -25.9 24.8 -25.9
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359808
2025-09-28T10:38:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:38:25.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:38:25.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:38:25.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:38:25.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:38:25.932 [DEBUG] [Thread-122169] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:25.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:38:12', tmtdew=13.52, humidity=40.2, cloud=0.0, wind=11.42, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:38:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:38:26.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-28T10:38:26.027 [DEBUG] [Thread-122172] [transport.py] [_log()] starting thread (client mode): 0x2b98a7a0
2025-09-28T10:38:26.027 [DEBUG] [Thread-122172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:26.041 [DEBUG] [Thread-122172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:38:26.042 [INFO] [Thread-122172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:38:26.049 [DEBUG] [Thread-122172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:26.049 [DEBUG] [Thread-122172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:26.050 [DEBUG] [Thread-122172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:26.051 [DEBUG] [Thread-122172] [transport.py] [_log()] Compression: none
2025-09-28T10:38:26.051 [DEBUG] [Thread-122172] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:26.105 [DEBUG] [Thread-122172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:26.106 [DEBUG] [Thread-122172] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:26.106 [DEBUG] [Thread-122172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:38:26.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:38:26.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:26.161 [DEBUG] [Thread-122172] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:26.162 [DEBUG] [Thread-122172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:26.162 [DEBUG] [Thread-122172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:26.162 [DEBUG] [Thread-122172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:38:26.162 [DEBUG] [Thread-122172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:26.181 [INFO] [Thread-122172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38: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-28T10:38:26.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:27.188 [DEBUG] [Thread-122172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:27.188 [DEBUG] [Thread-122172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:27.236 [DEBUG] [Thread-122172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:27.236 [DEBUG] [Thread-122172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:27.245 [DEBUG] [Thread-122172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:27.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38: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-28T10:38: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-28T10:38:27.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:27.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:27.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:27.279 [DEBUG] [Thread-122172] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:30.531 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:30.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:37.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:38:37.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:38: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-28T10:38:37.395 [DEBUG] [Thread-122174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:37.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 38, 12), 13.52, 40.2, 0.0, 11.42, 16.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:38:37.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:38:12
2025-09-28T10:38:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:38:38.105 [DEBUG] [Thread-122175] [transport.py] [_log()] starting thread (client mode): 0x2b988ca0
2025-09-28T10:38:38.106 [DEBUG] [Thread-122175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:38.123 [DEBUG] [Thread-122175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:38:38.123 [INFO] [Thread-122175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:38.124 [DEBUG] [Thread-122175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] Compression: none
2025-09-28T10:38:38.125 [DEBUG] [Thread-122175] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:38.138 [DEBUG] [Thread-122175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:38.139 [DEBUG] [Thread-122175] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:38.139 [DEBUG] [Thread-122175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:38:38.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:38:38.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:38.141 [DEBUG] [Thread-122175] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:38.142 [DEBUG] [Thread-122175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:38.142 [DEBUG] [Thread-122175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:38.142 [DEBUG] [Thread-122175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:38:38.142 [DEBUG] [Thread-122175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:38.165 [INFO] [Thread-122175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:38.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:38.972 [DEBUG] [Thread-122175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:38.972 [DEBUG] [Thread-122175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:38.973 [DEBUG] [Thread-122175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:38:39.013 [DEBUG] [Thread-122175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:39.014 [DEBUG] [Thread-122175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:39.016 [DEBUG] [Thread-122175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:39.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:39.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:38:39.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:38:39.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:38:39.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:39.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:38:39.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:39.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:38:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359808 -999.00  +18.10   4.36     43   +5.30 1 1 1 1 1   888    0 14.30 71.77 ----- 4.9 4.4 181.2 9.8 26.2 -27.1 24.4 -25.3 23.4 -25.9 24.8 -25.9
2025-09-28T10:38:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:38:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:38:39.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359808
2025-09-28T10:38:39.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:38:39.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:38:39.037 [DEBUG] [Thread-122175] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:39.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:38:39.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:38:39.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:38:39.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:38:12', tmtdew=13.52, humidity=40.2, cloud=0.0, wind=11.42, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:38:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:38:39.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-28T10:38:39.132 [DEBUG] [Thread-122178] [transport.py] [_log()] starting thread (client mode): 0x2e3fa350
2025-09-28T10:38:39.132 [DEBUG] [Thread-122178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:39.148 [DEBUG] [Thread-122178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:38:39.148 [INFO] [Thread-122178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:38:39.156 [DEBUG] [Thread-122178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:39.156 [DEBUG] [Thread-122178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:38:39.156 [DEBUG] [Thread-122178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:39.157 [DEBUG] [Thread-122178] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] Compression: none
2025-09-28T10:38:39.158 [DEBUG] [Thread-122178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:39.213 [DEBUG] [Thread-122178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:39.214 [DEBUG] [Thread-122178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:39.214 [DEBUG] [Thread-122178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:38:39.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:38:39.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:39.270 [DEBUG] [Thread-122178] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:39.270 [DEBUG] [Thread-122178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:39.270 [DEBUG] [Thread-122178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:39.270 [DEBUG] [Thread-122178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:38:39.270 [DEBUG] [Thread-122178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:39.289 [INFO] [Thread-122178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:39.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:38:39.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:40.311 [DEBUG] [Thread-122178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:40.311 [DEBUG] [Thread-122178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:40.359 [DEBUG] [Thread-122178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:40.359 [DEBUG] [Thread-122178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:40.367 [DEBUG] [Thread-122178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:40.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:40.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-28T10:38:40.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-28T10:38:40.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:40.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:40.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:40.399 [DEBUG] [Thread-122178] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:38:50.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:38:50.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-28T10:38:50.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 38, 44), 13.22, 41.16, 0.0, 9.02, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:38:50.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:38:44
2025-09-28T10:38:51.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:38:51.221 [DEBUG] [Thread-122180] [transport.py] [_log()] starting thread (client mode): 0x2b9de3e0
2025-09-28T10:38:51.221 [DEBUG] [Thread-122180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:51.245 [DEBUG] [Thread-122180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:38:51.245 [INFO] [Thread-122180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:51.247 [DEBUG] [Thread-122180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] Compression: none
2025-09-28T10:38:51.248 [DEBUG] [Thread-122180] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:51.260 [DEBUG] [Thread-122180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:51.260 [DEBUG] [Thread-122180] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:51.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:38:51.261 [DEBUG] [Thread-122180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:38:51.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:51.263 [DEBUG] [Thread-122180] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:51.263 [DEBUG] [Thread-122180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:51.263 [DEBUG] [Thread-122180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:51.263 [DEBUG] [Thread-122180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:38:51.263 [DEBUG] [Thread-122180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:51.288 [INFO] [Thread-122180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:51.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:52.078 [DEBUG] [Thread-122180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:52.079 [DEBUG] [Thread-122180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:52.079 [DEBUG] [Thread-122180] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:38:52.119 [DEBUG] [Thread-122180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:52.120 [DEBUG] [Thread-122180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:52.122 [DEBUG] [Thread-122180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:52.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:52.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:38:52.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:38:52.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:38:52.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:52.143 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:38:52.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:52.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.359808 -999.00  +18.10   4.36     43   +5.30 1 1 1 1 1   888    0 14.30 71.77 ----- 4.9 4.4 181.2 9.8 26.2 -27.1 24.4 -25.3 23.4 -25.9 24.8 -25.9
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.359808
2025-09-28T10:38:52.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:38:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:38:52.145 [DEBUG] [Thread-122180] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:38:52.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:38:52.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:38:52.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:38:52.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:38:44', tmtdew=13.22, humidity=41.16, cloud=0.0, wind=9.02, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:38:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:38:52.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-28T10:38:52.263 [DEBUG] [Thread-122183] [transport.py] [_log()] starting thread (client mode): 0x2b944eb0
2025-09-28T10:38:52.263 [DEBUG] [Thread-122183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:38:52.304 [DEBUG] [Thread-122183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:38:52.304 [INFO] [Thread-122183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:38:52.337 [DEBUG] [Thread-122183] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:38:52.337 [DEBUG] [Thread-122183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:38:52.337 [DEBUG] [Thread-122183] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:38:52.337 [DEBUG] [Thread-122183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] client lang: <none>
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] server lang: <none>
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] kex follows: False
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] Compression: none
2025-09-28T10:38:52.338 [DEBUG] [Thread-122183] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:38:52.421 [DEBUG] [Thread-122183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:38:52.421 [DEBUG] [Thread-122183] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:38:52.422 [DEBUG] [Thread-122183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:38:52.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:38:52.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:38:52.435 [DEBUG] [Thread-122185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:38:52.528 [DEBUG] [Thread-122183] [transport.py] [_log()] userauth is OK
2025-09-28T10:38:52.529 [DEBUG] [Thread-122183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:38:52.529 [DEBUG] [Thread-122183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:38:52.529 [DEBUG] [Thread-122183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:38:52.529 [DEBUG] [Thread-122183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:38:52.573 [INFO] [Thread-122183] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:38:52.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:38:52.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:38:53.540 [DEBUG] [Thread-122183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:38:53.540 [DEBUG] [Thread-122183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:38:53.614 [DEBUG] [Thread-122183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:38:53.614 [DEBUG] [Thread-122183] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:38:53.649 [DEBUG] [Thread-122183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:38:53.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:38:53.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-28T10:38:53.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-28T10:38:53.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:38:53.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:38:53.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:38:53.786 [DEBUG] [Thread-122183] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:03.513 [DEBUG] [Thread-122186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:03.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:39:03.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:39:03.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-28T10:39:04.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 38, 44), 13.22, 41.16, 0.0, 9.02, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:39:04.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:38:44
2025-09-28T10:39:04.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:39:04.574 [DEBUG] [Thread-122187] [transport.py] [_log()] starting thread (client mode): 0x2e38e590
2025-09-28T10:39:04.574 [DEBUG] [Thread-122187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:04.593 [DEBUG] [Thread-122187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:39:04.593 [INFO] [Thread-122187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:39:04.596 [DEBUG] [Thread-122187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] Compression: none
2025-09-28T10:39:04.597 [DEBUG] [Thread-122187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:04.614 [DEBUG] [Thread-122187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:04.615 [DEBUG] [Thread-122187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:04.615 [DEBUG] [Thread-122187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:39:04.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:39:04.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:04.617 [DEBUG] [Thread-122187] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:04.617 [DEBUG] [Thread-122187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:04.618 [DEBUG] [Thread-122187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:04.618 [DEBUG] [Thread-122187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:39:04.618 [DEBUG] [Thread-122187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:04.633 [INFO] [Thread-122187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:04.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:05.200 [DEBUG] [Thread-122187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:05.200 [DEBUG] [Thread-122187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:05.200 [DEBUG] [Thread-122187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:39:05.241 [DEBUG] [Thread-122187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:05.242 [DEBUG] [Thread-122187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:05.244 [DEBUG] [Thread-122187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:05.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:05.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:39:05.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:39:05.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:39:05.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:05.261 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:39:05.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:05.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:39:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360155 -999.00  +18.00   5.96     43   +5.40 1 1 1 1 1   888    0 13.96 72.57 ----- 2.9 6.0 242.2 9.2 26.1 -27.6 24.5 -25.4 23.4 -25.2 24.8 -25.9
2025-09-28T10:39:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:39:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:39:05.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360155
2025-09-28T10:39:05.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:39:05.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:39:05.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:39:05.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:39:05.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:39:05.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:38:44', tmtdew=13.22, humidity=41.16, cloud=0.0, wind=9.02, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:38:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:39:05.264 [DEBUG] [Thread-122187] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:05.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-28T10:39:05.390 [DEBUG] [Thread-122190] [transport.py] [_log()] starting thread (client mode): 0x2e38fa30
2025-09-28T10:39:05.391 [DEBUG] [Thread-122190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:05.436 [DEBUG] [Thread-122190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:39:05.436 [INFO] [Thread-122190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:39:05.472 [DEBUG] [Thread-122190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:05.472 [DEBUG] [Thread-122190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:05.473 [DEBUG] [Thread-122190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:05.474 [DEBUG] [Thread-122190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:05.474 [DEBUG] [Thread-122190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:05.474 [DEBUG] [Thread-122190] [transport.py] [_log()] Compression: none
2025-09-28T10:39:05.474 [DEBUG] [Thread-122190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:05.562 [DEBUG] [Thread-122190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:05.563 [DEBUG] [Thread-122190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:05.563 [DEBUG] [Thread-122190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:39:05.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:39:05.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:05.679 [DEBUG] [Thread-122190] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:05.679 [DEBUG] [Thread-122190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:05.679 [DEBUG] [Thread-122190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:05.679 [DEBUG] [Thread-122190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:39:05.679 [DEBUG] [Thread-122190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:05.729 [INFO] [Thread-122190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:05.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:39:05.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:06.698 [DEBUG] [Thread-122190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:06.698 [DEBUG] [Thread-122190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:06.783 [DEBUG] [Thread-122190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:06.784 [DEBUG] [Thread-122190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:06.834 [DEBUG] [Thread-122190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:06.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:06.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-28T10:39:06.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-28T10:39:06.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:06.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:06.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:07.002 [DEBUG] [Thread-122190] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:07.476 [DEBUG] [Thread-122192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:16.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:39:16.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:39:16.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-28T10:39:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 38, 44), 13.22, 41.16, 0.0, 9.02, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:39:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:38:44
2025-09-28T10:39:17.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:39:17.854 [DEBUG] [Thread-122193] [transport.py] [_log()] starting thread (client mode): 0x2b9b80a0
2025-09-28T10:39:17.854 [DEBUG] [Thread-122193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:17.873 [DEBUG] [Thread-122193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:39:17.873 [INFO] [Thread-122193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] Compression: none
2025-09-28T10:39:17.874 [DEBUG] [Thread-122193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:17.884 [DEBUG] [Thread-122193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:17.884 [DEBUG] [Thread-122193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:17.884 [DEBUG] [Thread-122193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:39:17.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:39:17.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:17.885 [DEBUG] [Thread-122193] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:17.885 [DEBUG] [Thread-122193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:17.885 [DEBUG] [Thread-122193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:17.885 [DEBUG] [Thread-122193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:39:17.885 [DEBUG] [Thread-122193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:17.894 [INFO] [Thread-122193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:17.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:18.478 [DEBUG] [Thread-122193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:18.478 [DEBUG] [Thread-122193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:18.478 [DEBUG] [Thread-122193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:39:18.519 [DEBUG] [Thread-122193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:18.519 [DEBUG] [Thread-122193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:18.521 [DEBUG] [Thread-122193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:18.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:18.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:39:18.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:39:18.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:39:18.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:18.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:39:18.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360155 -999.00  +18.00   5.96     43   +5.40 1 1 1 1 1   888    0 13.96 72.57 ----- 2.9 6.0 242.2 9.2 26.1 -27.6 24.5 -25.4 23.4 -25.2 24.8 -25.9
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360155
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:39:18.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:38:44', tmtdew=13.22, humidity=41.16, cloud=0.0, wind=9.02, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:38:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:39:18.542 [DEBUG] [Thread-122193] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:18.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-28T10:39:18.657 [DEBUG] [Thread-122196] [transport.py] [_log()] starting thread (client mode): 0x2e38d840
2025-09-28T10:39:18.657 [DEBUG] [Thread-122196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:18.706 [DEBUG] [Thread-122196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:39:18.706 [INFO] [Thread-122196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] Compression: none
2025-09-28T10:39:18.746 [DEBUG] [Thread-122196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:18.838 [DEBUG] [Thread-122196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:18.839 [DEBUG] [Thread-122196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:18.839 [DEBUG] [Thread-122196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:39:18.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:39:18.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:18.963 [DEBUG] [Thread-122196] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:18.963 [DEBUG] [Thread-122196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:18.963 [DEBUG] [Thread-122196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:18.963 [DEBUG] [Thread-122196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:39:18.963 [DEBUG] [Thread-122196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:19.010 [INFO] [Thread-122196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:19.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-28T10:39:19.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:20.018 [DEBUG] [Thread-122196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:20.018 [DEBUG] [Thread-122196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:20.100 [DEBUG] [Thread-122196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:20.100 [DEBUG] [Thread-122196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:20.143 [DEBUG] [Thread-122196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:20.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:20.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-28T10:39:20.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-28T10:39:20.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:20.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:20.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:20.315 [DEBUG] [Thread-122196] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:22.517 [DEBUG] [Thread-122198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:30.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:39:30.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:39:30.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-28T10:39:30.671 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:30.672 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:30.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 39, 16), 13.07, 41.56, 0.0, 9.19, 16.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:39:30.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:39:16
2025-09-28T10:39:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:39:31.101 [DEBUG] [Thread-122199] [transport.py] [_log()] starting thread (client mode): 0x2e38e2f0
2025-09-28T10:39:31.101 [DEBUG] [Thread-122199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:31.112 [DEBUG] [Thread-122199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:39:31.113 [INFO] [Thread-122199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] Compression: none
2025-09-28T10:39:31.114 [DEBUG] [Thread-122199] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:31.130 [DEBUG] [Thread-122199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:31.130 [DEBUG] [Thread-122199] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:31.131 [DEBUG] [Thread-122199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:39:31.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:39:31.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:31.132 [DEBUG] [Thread-122199] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:31.132 [DEBUG] [Thread-122199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:31.132 [DEBUG] [Thread-122199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:31.132 [DEBUG] [Thread-122199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:39:31.132 [DEBUG] [Thread-122199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:31.151 [INFO] [Thread-122199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:31.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:31.740 [DEBUG] [Thread-122199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:31.740 [DEBUG] [Thread-122199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:31.741 [DEBUG] [Thread-122199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:39:31.781 [DEBUG] [Thread-122199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:31.782 [DEBUG] [Thread-122199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:31.785 [DEBUG] [Thread-122199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:31.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:31.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:39:31.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:39:31.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:39:31.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:31.809 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:39:31.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:31.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:31.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:39:31.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360503 -999.00  +17.90  13.09     43   +5.20 1 1 1 1 1   888    0 14.01 72.40 ----- 13.0 13.1 173.4 15.0 26.2 -27.4 24.4 -29.5 23.4 -26.0 24.8 -27.3
2025-09-28T10:39:31.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:39:31.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:39:31.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360503
2025-09-28T10:39:31.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:39:31.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:39:31.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:39:31.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:39:31.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:39:31.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:39:16', tmtdew=13.07, humidity=41.56, cloud=0.0, wind=9.19, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:39:31.811 [DEBUG] [Thread-122199] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:31.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-28T10:39:31.906 [DEBUG] [Thread-122202] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T10:39:31.906 [DEBUG] [Thread-122202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:31.921 [DEBUG] [Thread-122202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:39:31.921 [INFO] [Thread-122202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:31.929 [DEBUG] [Thread-122202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:31.930 [DEBUG] [Thread-122202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:31.931 [DEBUG] [Thread-122202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:31.931 [DEBUG] [Thread-122202] [transport.py] [_log()] Compression: none
2025-09-28T10:39:31.931 [DEBUG] [Thread-122202] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:31.986 [DEBUG] [Thread-122202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:31.987 [DEBUG] [Thread-122202] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:31.987 [DEBUG] [Thread-122202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:39:31.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:39:31.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:32.041 [DEBUG] [Thread-122202] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:32.042 [DEBUG] [Thread-122202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:32.042 [DEBUG] [Thread-122202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:32.042 [DEBUG] [Thread-122202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:39:32.042 [DEBUG] [Thread-122202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:32.065 [INFO] [Thread-122202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:32.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-28T10:39:32.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:33.045 [DEBUG] [Thread-122202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:33.045 [DEBUG] [Thread-122202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:33.092 [DEBUG] [Thread-122202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:33.092 [DEBUG] [Thread-122202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:33.101 [DEBUG] [Thread-122202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:33.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:33.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')
2025-09-28T10:39:33.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-28T10:39:33.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:33.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:33.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:33.136 [DEBUG] [Thread-122202] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:37.544 [DEBUG] [Thread-122204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:43.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:39:43.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:39:43.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:39:43.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 39, 16), 13.07, 41.56, 0.0, 9.19, 16.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:39:43.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:39:16
2025-09-28T10:39:43.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:39:43.976 [DEBUG] [Thread-122205] [transport.py] [_log()] starting thread (client mode): 0x2b9cd9f0
2025-09-28T10:39:43.976 [DEBUG] [Thread-122205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:43.996 [DEBUG] [Thread-122205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:39:43.996 [INFO] [Thread-122205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] Compression: none
2025-09-28T10:39:43.999 [DEBUG] [Thread-122205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:44.016 [DEBUG] [Thread-122205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:44.017 [DEBUG] [Thread-122205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:44.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:39:44.018 [DEBUG] [Thread-122205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:39:44.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:44.020 [DEBUG] [Thread-122205] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:44.020 [DEBUG] [Thread-122205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:44.020 [DEBUG] [Thread-122205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:44.020 [DEBUG] [Thread-122205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:39:44.020 [DEBUG] [Thread-122205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:44.038 [INFO] [Thread-122205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:44.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:44.784 [DEBUG] [Thread-122205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:44.785 [DEBUG] [Thread-122205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:44.785 [DEBUG] [Thread-122205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:39:44.825 [DEBUG] [Thread-122205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:44.826 [DEBUG] [Thread-122205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:44.829 [DEBUG] [Thread-122205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:44.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:44.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:39:44.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:39:44.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:39:44.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:44.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:39:44.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:44.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:39:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360503 -999.00  +17.90  13.09     43   +5.20 1 1 1 1 1   888    0 14.01 72.40 ----- 13.0 13.1 173.4 15.0 26.2 -27.4 24.4 -29.5 23.4 -26.0 24.8 -27.3
2025-09-28T10:39:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:39:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:39:44.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360503
2025-09-28T10:39:44.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:39:44.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:39:44.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:39:44.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:39:44.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:39:44.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:39:16', tmtdew=13.07, humidity=41.56, cloud=0.0, wind=9.19, temperature=16.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:39:44.856 [DEBUG] [Thread-122205] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:44.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-28T10:39:44.947 [DEBUG] [Thread-122208] [transport.py] [_log()] starting thread (client mode): 0x2b944eb0
2025-09-28T10:39:44.947 [DEBUG] [Thread-122208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:44.962 [DEBUG] [Thread-122208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:39:44.962 [INFO] [Thread-122208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:39:44.970 [DEBUG] [Thread-122208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:44.970 [DEBUG] [Thread-122208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:44.971 [DEBUG] [Thread-122208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] Compression: none
2025-09-28T10:39:44.972 [DEBUG] [Thread-122208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:45.029 [DEBUG] [Thread-122208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:45.029 [DEBUG] [Thread-122208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:45.030 [DEBUG] [Thread-122208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:39:45.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:39:45.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:45.085 [DEBUG] [Thread-122208] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:45.085 [DEBUG] [Thread-122208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:45.085 [DEBUG] [Thread-122208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:45.085 [DEBUG] [Thread-122208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:39:45.085 [DEBUG] [Thread-122208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:45.107 [INFO] [Thread-122208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:45.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-28T10:39:45.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:46.168 [DEBUG] [Thread-122208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:46.174 [DEBUG] [Thread-122208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:46.216 [DEBUG] [Thread-122208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:46.216 [DEBUG] [Thread-122208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:46.225 [DEBUG] [Thread-122208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:46.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:46.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-28T10:39:46.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-28T10:39:46.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:46.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:46.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:46.259 [DEBUG] [Thread-122208] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:52.580 [DEBUG] [Thread-122210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:39:56.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:39:56.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:39:56.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-28T10:39:56.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 39, 48), 13.39, 40.75, 0.0, 10.94, 16.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:39:56.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:39:48
2025-09-28T10:39:56.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:39:57.133 [DEBUG] [Thread-122211] [transport.py] [_log()] starting thread (client mode): 0x2e3c1480
2025-09-28T10:39:57.133 [DEBUG] [Thread-122211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:57.153 [DEBUG] [Thread-122211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:39:57.153 [INFO] [Thread-122211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:57.156 [DEBUG] [Thread-122211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] Compression: none
2025-09-28T10:39:57.157 [DEBUG] [Thread-122211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:57.173 [DEBUG] [Thread-122211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:57.173 [DEBUG] [Thread-122211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:39:57.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:39:57.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:39:57.174 [DEBUG] [Thread-122211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:57.189 [INFO] [Thread-122211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:57.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:57.901 [DEBUG] [Thread-122211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:57.901 [DEBUG] [Thread-122211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:57.901 [DEBUG] [Thread-122211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:39:57.942 [DEBUG] [Thread-122211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:57.942 [DEBUG] [Thread-122211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:57.944 [DEBUG] [Thread-122211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:57.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:57.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:39:57.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:39:57.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:39:57.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:57.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:39:57.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360503 -999.00  +17.90  13.09     43   +5.20 1 1 1 1 1   888    0 14.01 72.40 ----- 13.0 13.1 173.4 15.0 26.2 -27.4 24.4 -29.5 23.4 -26.0 24.8 -27.3
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360503
2025-09-28T10:39:57.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:39:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:39:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:39:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:39:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:39:57.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:39:48', tmtdew=13.39, humidity=40.75, cloud=0.0, wind=10.94, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:07.459', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:39:57.962 [DEBUG] [Thread-122211] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:39:58.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-28T10:39:58.045 [DEBUG] [Thread-122214] [transport.py] [_log()] starting thread (client mode): 0x2b96c970
2025-09-28T10:39:58.045 [DEBUG] [Thread-122214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:39:58.060 [DEBUG] [Thread-122214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:39:58.060 [INFO] [Thread-122214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] client lang: <none>
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] server lang: <none>
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] kex follows: False
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] Compression: none
2025-09-28T10:39:58.068 [DEBUG] [Thread-122214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:39:58.124 [DEBUG] [Thread-122214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:39:58.124 [DEBUG] [Thread-122214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:39:58.124 [DEBUG] [Thread-122214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:39:58.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:39:58.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:39:58.181 [DEBUG] [Thread-122214] [transport.py] [_log()] userauth is OK
2025-09-28T10:39:58.181 [DEBUG] [Thread-122214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:39:58.181 [DEBUG] [Thread-122214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:39:58.181 [DEBUG] [Thread-122214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:39:58.181 [DEBUG] [Thread-122214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:39:58.195 [INFO] [Thread-122214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:39:58.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-28T10:39:58.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:39:59.191 [DEBUG] [Thread-122214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:39:59.192 [DEBUG] [Thread-122214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:39:59.241 [DEBUG] [Thread-122214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:39:59.241 [DEBUG] [Thread-122214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:39:59.251 [DEBUG] [Thread-122214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:39:59.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:39:59.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-28T10:39:59.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-28T10:39:59.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:39:59.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:39:59.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:39:59.290 [DEBUG] [Thread-122214] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:03.547 [DEBUG] [Thread-122216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:07.610 [DEBUG] [Thread-122217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:09.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:40:09.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:40:09.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-28T10:40:09.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 39, 48), 13.39, 40.75, 0.0, 10.94, 16.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:40:09.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:39:48
2025-09-28T10:40:09.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:40:10.112 [DEBUG] [Thread-122218] [transport.py] [_log()] starting thread (client mode): 0x2b9462f0
2025-09-28T10:40:10.112 [DEBUG] [Thread-122218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:10.132 [DEBUG] [Thread-122218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:40:10.132 [INFO] [Thread-122218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:40:10.135 [DEBUG] [Thread-122218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] Compression: none
2025-09-28T10:40:10.136 [DEBUG] [Thread-122218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:10.152 [DEBUG] [Thread-122218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:10.152 [DEBUG] [Thread-122218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:10.153 [DEBUG] [Thread-122218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:40:10.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:40:10.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:10.155 [DEBUG] [Thread-122218] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:10.155 [DEBUG] [Thread-122218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:10.155 [DEBUG] [Thread-122218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:10.155 [DEBUG] [Thread-122218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:40:10.155 [DEBUG] [Thread-122218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:10.179 [INFO] [Thread-122218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:10.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:12.392 [DEBUG] [Thread-122218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:12.393 [DEBUG] [Thread-122218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:12.393 [DEBUG] [Thread-122218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:40:12.434 [DEBUG] [Thread-122218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:12.434 [DEBUG] [Thread-122218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:12.436 [DEBUG] [Thread-122218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:12.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:12.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:40:12.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:40:12.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:40:12.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:12.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:40:12.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:12.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360850 -999.00  +17.60  10.94     43   +5.20 1 1 1 1 1   888    0 14.23 75.44 ----- 9.1 10.9 196.6 14.6 26.1 -27.5 24.3 -25.6 23.4 -25.6 24.7 -26.9
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360850
2025-09-28T10:40:12.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:40:12.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:40:12.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:40:12.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:40:12.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:40:12.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:39:48', tmtdew=13.39, humidity=40.75, cloud=0.0, wind=10.94, temperature=16.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:40:12.510 [DEBUG] [Thread-122218] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:12.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-28T10:40:12.638 [DEBUG] [Thread-122221] [transport.py] [_log()] starting thread (client mode): 0x2b9bac20
2025-09-28T10:40:12.638 [DEBUG] [Thread-122221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:12.681 [DEBUG] [Thread-122221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:40:12.681 [INFO] [Thread-122221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:12.718 [DEBUG] [Thread-122221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] Compression: none
2025-09-28T10:40:12.719 [DEBUG] [Thread-122221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:12.801 [DEBUG] [Thread-122221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:12.802 [DEBUG] [Thread-122221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:12.802 [DEBUG] [Thread-122221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:40:12.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:40:12.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:12.915 [DEBUG] [Thread-122221] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:12.916 [DEBUG] [Thread-122221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:12.916 [DEBUG] [Thread-122221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:12.916 [DEBUG] [Thread-122221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:40:12.916 [DEBUG] [Thread-122221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:12.963 [INFO] [Thread-122221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:12.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-28T10:40:12.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:14.022 [DEBUG] [Thread-122221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:14.023 [DEBUG] [Thread-122221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:14.108 [DEBUG] [Thread-122221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:14.108 [DEBUG] [Thread-122221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:14.148 [DEBUG] [Thread-122221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:14.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:14.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-28T10:40:14.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T10:40:14.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:14.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:14.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:14.290 [DEBUG] [Thread-122221] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:22.656 [DEBUG] [Thread-122223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:24.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:40:24.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:40:24.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-28T10:40:24.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 40, 19), 13.32, 40.93, 0.0, 10.99, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:40:24.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:40:19
2025-09-28T10:40:24.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:40:25.125 [DEBUG] [Thread-122224] [transport.py] [_log()] starting thread (client mode): 0x2b947c10
2025-09-28T10:40:25.125 [DEBUG] [Thread-122224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:25.146 [DEBUG] [Thread-122224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:40:25.146 [INFO] [Thread-122224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:40:25.149 [DEBUG] [Thread-122224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] Compression: none
2025-09-28T10:40:25.150 [DEBUG] [Thread-122224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:25.167 [DEBUG] [Thread-122224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:25.167 [DEBUG] [Thread-122224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:25.168 [DEBUG] [Thread-122224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:40:25.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:40:25.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:25.171 [DEBUG] [Thread-122224] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:25.171 [DEBUG] [Thread-122224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:25.171 [DEBUG] [Thread-122224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:25.171 [DEBUG] [Thread-122224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:40:25.171 [DEBUG] [Thread-122224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:25.204 [INFO] [Thread-122224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:25.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:26.245 [DEBUG] [Thread-122224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:26.245 [DEBUG] [Thread-122224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:26.245 [DEBUG] [Thread-122224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:40:26.287 [DEBUG] [Thread-122224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:26.287 [DEBUG] [Thread-122224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:26.289 [DEBUG] [Thread-122224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:26.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:26.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:40:26.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:40:26.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:40:26.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:26.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:40:26.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:26.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:26.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:40:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360850 -999.00  +17.60  10.94     43   +5.20 1 1 1 1 1   888    0 14.23 75.44 ----- 9.1 10.9 196.6 14.6 26.1 -27.5 24.3 -25.6 23.4 -25.6 24.7 -26.9
2025-09-28T10:40:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:40:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:40:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360850
2025-09-28T10:40:26.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:40:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:40:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:40:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:40:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:40:26.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:40:19', tmtdew=13.32, humidity=40.93, cloud=0.0, wind=10.99, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:40:26.315 [DEBUG] [Thread-122224] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:26.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-28T10:40:26.410 [DEBUG] [Thread-122227] [transport.py] [_log()] starting thread (client mode): 0x2b945990
2025-09-28T10:40:26.410 [DEBUG] [Thread-122227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:26.424 [DEBUG] [Thread-122227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:40:26.425 [INFO] [Thread-122227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:40:26.432 [DEBUG] [Thread-122227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:26.432 [DEBUG] [Thread-122227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:40:26.432 [DEBUG] [Thread-122227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:26.432 [DEBUG] [Thread-122227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:26.433 [DEBUG] [Thread-122227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] Compression: none
2025-09-28T10:40:26.434 [DEBUG] [Thread-122227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:26.496 [DEBUG] [Thread-122227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:26.496 [DEBUG] [Thread-122227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:26.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:40:26.497 [DEBUG] [Thread-122227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:40:26.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:26.553 [DEBUG] [Thread-122227] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:26.553 [DEBUG] [Thread-122227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:26.553 [DEBUG] [Thread-122227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:26.553 [DEBUG] [Thread-122227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:40:26.553 [DEBUG] [Thread-122227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:26.574 [INFO] [Thread-122227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:26.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:40:26.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:27.576 [DEBUG] [Thread-122227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:27.576 [DEBUG] [Thread-122227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:27.624 [DEBUG] [Thread-122227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:27.624 [DEBUG] [Thread-122227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:27.633 [DEBUG] [Thread-122227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:27.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:27.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-28T10:40:27.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-28T10:40:27.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:27.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:27.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:27.666 [DEBUG] [Thread-122227] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:30.823 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:30.824 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:37.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:40:37.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:40:37.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-28T10:40:37.701 [DEBUG] [Thread-122229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:38.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 40, 19), 13.32, 40.93, 0.0, 10.99, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:40:38.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:40:19
2025-09-28T10:40:38.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:40:38.506 [DEBUG] [Thread-122230] [transport.py] [_log()] starting thread (client mode): 0x2b944b20
2025-09-28T10:40:38.506 [DEBUG] [Thread-122230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:38.527 [DEBUG] [Thread-122230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:40:38.527 [INFO] [Thread-122230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:38.530 [DEBUG] [Thread-122230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:38.531 [DEBUG] [Thread-122230] [transport.py] [_log()] Compression: none
2025-09-28T10:40:38.531 [DEBUG] [Thread-122230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:38.548 [DEBUG] [Thread-122230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:38.548 [DEBUG] [Thread-122230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:38.549 [DEBUG] [Thread-122230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:40:38.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:40:38.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:38.551 [DEBUG] [Thread-122230] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:38.551 [DEBUG] [Thread-122230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:38.551 [DEBUG] [Thread-122230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:38.551 [DEBUG] [Thread-122230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:40:38.551 [DEBUG] [Thread-122230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:38.574 [INFO] [Thread-122230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:38.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:39.316 [DEBUG] [Thread-122230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:39.316 [DEBUG] [Thread-122230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:39.316 [DEBUG] [Thread-122230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:40:39.357 [DEBUG] [Thread-122230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:39.357 [DEBUG] [Thread-122230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:39.361 [DEBUG] [Thread-122230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:39.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:39.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:40:39.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:40:39.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:40:39.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:39.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:40:39.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:39.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.360850 -999.00  +17.60  10.94     43   +5.20 1 1 1 1 1   888    0 14.23 75.44 ----- 9.1 10.9 196.6 14.6 26.1 -27.5 24.3 -25.6 23.4 -25.6 24.7 -26.9
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.360850
2025-09-28T10:40:39.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:40:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:40:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:40:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:40:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:40:39.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:40:19', tmtdew=13.32, humidity=40.93, cloud=0.0, wind=10.99, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:39:37.440', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:40:39.386 [DEBUG] [Thread-122230] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:39.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-28T10:40:39.511 [DEBUG] [Thread-122233] [transport.py] [_log()] starting thread (client mode): 0x2b9ceec0
2025-09-28T10:40:39.511 [DEBUG] [Thread-122233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:39.552 [DEBUG] [Thread-122233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:40:39.553 [INFO] [Thread-122233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:39.590 [DEBUG] [Thread-122233] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] Compression: none
2025-09-28T10:40:39.591 [DEBUG] [Thread-122233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:39.675 [DEBUG] [Thread-122233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:39.675 [DEBUG] [Thread-122233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:39.676 [DEBUG] [Thread-122233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:40:39.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:40:39.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:39.790 [DEBUG] [Thread-122233] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:39.791 [DEBUG] [Thread-122233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:39.791 [DEBUG] [Thread-122233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:39.791 [DEBUG] [Thread-122233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:40:39.791 [DEBUG] [Thread-122233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:39.838 [INFO] [Thread-122233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:39.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:40:39.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:40.815 [DEBUG] [Thread-122233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:40.815 [DEBUG] [Thread-122233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:40.892 [DEBUG] [Thread-122233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:40.892 [DEBUG] [Thread-122233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:40.930 [DEBUG] [Thread-122233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:40.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:40.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-28T10:40:41.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-28T10:40:41.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:41.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:41.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:41.082 [DEBUG] [Thread-122233] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:51.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:40:51.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:40:51.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:40:51.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 40, 19), 13.32, 40.93, 0.0, 10.99, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:40:51.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:40:19
2025-09-28T10:40:51.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:40:51.879 [DEBUG] [Thread-122235] [transport.py] [_log()] starting thread (client mode): 0x2b945fc0
2025-09-28T10:40:51.879 [DEBUG] [Thread-122235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:51.893 [DEBUG] [Thread-122235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:40:51.893 [INFO] [Thread-122235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] Compression: none
2025-09-28T10:40:51.896 [DEBUG] [Thread-122235] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:51.908 [DEBUG] [Thread-122235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:51.909 [DEBUG] [Thread-122235] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:51.909 [DEBUG] [Thread-122235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:40:51.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:40:51.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:51.910 [DEBUG] [Thread-122235] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:51.910 [DEBUG] [Thread-122235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:51.910 [DEBUG] [Thread-122235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:51.910 [DEBUG] [Thread-122235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:40:51.911 [DEBUG] [Thread-122235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:51.933 [INFO] [Thread-122235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:51.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:52.558 [DEBUG] [Thread-122235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:52.558 [DEBUG] [Thread-122235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:52.558 [DEBUG] [Thread-122235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:40:52.599 [DEBUG] [Thread-122235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:52.599 [DEBUG] [Thread-122235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:52.601 [DEBUG] [Thread-122235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:52.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:52.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:40:52.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:40:52.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:40:52.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:52.621 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:40:52.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.361544 -999.00  +17.60   4.83     44   +5.30 1 1 1 1 1   888    0 14.63 78.55 ----- 9.1 4.8 227.8 13.3 26.2 -26.9 24.3 -29.7 23.5 -25.9 24.9 -27.5
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.361544
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:40:52.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:40:19', tmtdew=13.32, humidity=40.93, cloud=0.0, wind=10.99, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:40:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:40:52.622 [DEBUG] [Thread-122235] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:40:52.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-28T10:40:52.735 [DEBUG] [Thread-122238] [transport.py] [_log()] starting thread (client mode): 0x2e3f93f0
2025-09-28T10:40:52.735 [DEBUG] [Thread-122238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:40:52.744 [DEBUG] [Thread-122239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:40:52.780 [DEBUG] [Thread-122238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:40:52.780 [INFO] [Thread-122238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:40:52.816 [DEBUG] [Thread-122238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:40:52.816 [DEBUG] [Thread-122238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:40:52.816 [DEBUG] [Thread-122238] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:40:52.816 [DEBUG] [Thread-122238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] client lang: <none>
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] server lang: <none>
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] kex follows: False
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] Compression: none
2025-09-28T10:40:52.817 [DEBUG] [Thread-122238] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:40:52.904 [DEBUG] [Thread-122238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:40:52.904 [DEBUG] [Thread-122238] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:40:52.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:40:52.904 [DEBUG] [Thread-122238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:40:52.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:40:53.022 [DEBUG] [Thread-122238] [transport.py] [_log()] userauth is OK
2025-09-28T10:40:53.022 [DEBUG] [Thread-122238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:40:53.022 [DEBUG] [Thread-122238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:40:53.022 [DEBUG] [Thread-122238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:40:53.022 [DEBUG] [Thread-122238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:40:53.068 [INFO] [Thread-122238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:40:53.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-28T10:40:53.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:40:54.070 [DEBUG] [Thread-122238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:40:54.070 [DEBUG] [Thread-122238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:40:54.150 [DEBUG] [Thread-122238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:40:54.151 [DEBUG] [Thread-122238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:40:54.192 [DEBUG] [Thread-122238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:40:54.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:40:54.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-28T10:40:54.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-28T10:40:54.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:40:54.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:40:54.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:40:54.351 [DEBUG] [Thread-122238] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:41:03.598 [DEBUG] [Thread-122241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:04.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:41:04.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:41:04.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-28T10:41:04.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 40, 51), 13.0, 41.6, 0.0, 7.27, 16.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:41:04.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:40:51
2025-09-28T10:41:05.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:41:05.153 [DEBUG] [Thread-122242] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e90
2025-09-28T10:41:05.153 [DEBUG] [Thread-122242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:41:05.173 [DEBUG] [Thread-122242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:41:05.174 [INFO] [Thread-122242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] client lang: <none>
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] server lang: <none>
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] kex follows: False
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:41:05.177 [DEBUG] [Thread-122242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:41:05.178 [DEBUG] [Thread-122242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:41:05.178 [DEBUG] [Thread-122242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:41:05.178 [DEBUG] [Thread-122242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:41:05.178 [DEBUG] [Thread-122242] [transport.py] [_log()] Compression: none
2025-09-28T10:41:05.178 [DEBUG] [Thread-122242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:41:05.189 [DEBUG] [Thread-122242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:41:05.190 [DEBUG] [Thread-122242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:41:05.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:41:05.191 [DEBUG] [Thread-122242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:41:05.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:41:05.193 [DEBUG] [Thread-122242] [transport.py] [_log()] userauth is OK
2025-09-28T10:41:05.193 [DEBUG] [Thread-122242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:41:05.193 [DEBUG] [Thread-122242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:41:05.193 [DEBUG] [Thread-122242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:41:05.193 [DEBUG] [Thread-122242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:41:05.216 [INFO] [Thread-122242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:41:05.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:41:05.829 [DEBUG] [Thread-122242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:41:05.829 [DEBUG] [Thread-122242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:41:05.829 [DEBUG] [Thread-122242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:41:05.870 [DEBUG] [Thread-122242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:41:05.870 [DEBUG] [Thread-122242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:41:05.874 [DEBUG] [Thread-122242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:41:05.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:41:05.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:41:05.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:41:05.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:41:05.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:41:05.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:41:05.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.361544 -999.00  +17.60   4.83     44   +5.30 1 1 1 1 1   888    0 14.63 78.55 ----- 9.1 4.8 227.8 13.3 26.2 -26.9 24.3 -29.7 23.5 -25.9 24.9 -27.5
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:41:05.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.361544
2025-09-28T10:41:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:41:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:41:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:41:05.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:41:05.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:41:05.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:40:51', tmtdew=13.0, humidity=41.6, cloud=0.0, wind=7.27, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:40:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:41:05.899 [DEBUG] [Thread-122242] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:41:05.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-28T10:41:06.027 [DEBUG] [Thread-122245] [transport.py] [_log()] starting thread (client mode): 0x2b96d1e0
2025-09-28T10:41:06.027 [DEBUG] [Thread-122245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:41:06.070 [DEBUG] [Thread-122245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:41:06.071 [INFO] [Thread-122245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:41:06.108 [DEBUG] [Thread-122245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:41:06.109 [DEBUG] [Thread-122245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] client lang: <none>
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] server lang: <none>
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] kex follows: False
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:41:06.110 [DEBUG] [Thread-122245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:41:06.111 [DEBUG] [Thread-122245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:41:06.111 [DEBUG] [Thread-122245] [transport.py] [_log()] Compression: none
2025-09-28T10:41:06.111 [DEBUG] [Thread-122245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:41:06.198 [DEBUG] [Thread-122245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:41:06.199 [DEBUG] [Thread-122245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:41:06.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:41:06.200 [DEBUG] [Thread-122245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:41:06.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:41:06.319 [DEBUG] [Thread-122245] [transport.py] [_log()] userauth is OK
2025-09-28T10:41:06.319 [DEBUG] [Thread-122245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:41:06.319 [DEBUG] [Thread-122245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:41:06.319 [DEBUG] [Thread-122245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:41:06.319 [DEBUG] [Thread-122245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:41:06.369 [INFO] [Thread-122245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:41:06.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-28T10:41:06.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:41:07.352 [DEBUG] [Thread-122245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:41:07.353 [DEBUG] [Thread-122245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:41:07.434 [DEBUG] [Thread-122245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:41:07.434 [DEBUG] [Thread-122245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:41:07.473 [DEBUG] [Thread-122245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:41:07.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:41:07.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-28T10:41:07.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-28T10:41:07.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:41:07.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:41:07.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:41:07.643 [DEBUG] [Thread-122245] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:41:07.778 [DEBUG] [Thread-122247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:17.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:41:17.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:41:17.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-28T10:41:18.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 40, 51), 13.0, 41.6, 0.0, 7.27, 16.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:41:18.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:40:51
2025-09-28T10:41:18.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:41:18.426 [DEBUG] [Thread-122248] [transport.py] [_log()] starting thread (client mode): 0x2b9ddd20
2025-09-28T10:41:18.426 [DEBUG] [Thread-122248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:41:18.443 [DEBUG] [Thread-122248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:41:18.443 [INFO] [Thread-122248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] client lang: <none>
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] server lang: <none>
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] kex follows: False
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] Compression: none
2025-09-28T10:41:18.445 [DEBUG] [Thread-122248] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:41:18.455 [DEBUG] [Thread-122248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:41:18.456 [DEBUG] [Thread-122248] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:41:18.456 [DEBUG] [Thread-122248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:41:18.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:41:18.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:41:18.457 [DEBUG] [Thread-122248] [transport.py] [_log()] userauth is OK
2025-09-28T10:41:18.457 [DEBUG] [Thread-122248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:41:18.457 [DEBUG] [Thread-122248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:41:18.457 [DEBUG] [Thread-122248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:41:18.458 [DEBUG] [Thread-122248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:41:18.469 [INFO] [Thread-122248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:41:18.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:41:19.085 [DEBUG] [Thread-122248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:41:19.086 [DEBUG] [Thread-122248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:41:19.086 [DEBUG] [Thread-122248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:41:19.126 [DEBUG] [Thread-122248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:41:19.127 [DEBUG] [Thread-122248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:41:19.132 [DEBUG] [Thread-122248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:41:19.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:41:19.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:41:19.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:41:19.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:41:19.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:41:19.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:41:19.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:41:19.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:41:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:41:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.361891 -999.00  +17.60  12.48     44   +5.30 1 1 1 1 1   888    0 14.36 79.93 ----- 8.5 12.5 187.8 15.9 26.1 -27.0 24.3 -25.8 23.5 -25.1 24.9 -26.2
2025-09-28T10:41:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:41:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:41:19.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.361891
2025-09-28T10:41:19.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:41:19.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:41:19.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:41:19.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:41:19.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:41:19.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:40:51', tmtdew=13.0, humidity=41.6, cloud=0.0, wind=7.27, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:41:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:41:19.157 [DEBUG] [Thread-122248] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:41:19.241 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:41:22.822 [DEBUG] [Thread-122251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:30.964 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:30.965 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:37.875 [DEBUG] [Thread-122252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:41:52.903 [DEBUG] [Thread-122253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:03.651 [DEBUG] [Thread-122254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:07.929 [DEBUG] [Thread-122255 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:22.961 [DEBUG] [Thread-122256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:31.107 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:31.108 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:37.990 [DEBUG] [Thread-122257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:42:53.022 [DEBUG] [Thread-122258 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:03.696 [DEBUG] [Thread-122259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:08.056 [DEBUG] [Thread-122260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:23.089 [DEBUG] [Thread-122261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:31.249 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:31.250 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:34.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-28T10:43:38.125 [DEBUG] [Thread-122262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:43:44.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:43:44.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-28T10:43:45.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 43, 31), 13.15, 41.73, 0.0, 11.01, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:43:45.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:43:31
2025-09-28T10:43:45.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:43:45.326 [DEBUG] [Thread-122263] [transport.py] [_log()] starting thread (client mode): 0x2b9dc2e0
2025-09-28T10:43:45.326 [DEBUG] [Thread-122263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:43:45.350 [DEBUG] [Thread-122263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:43:45.350 [INFO] [Thread-122263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:43:45.353 [DEBUG] [Thread-122263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:43:45.353 [DEBUG] [Thread-122263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:43:45.353 [DEBUG] [Thread-122263] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] client lang: <none>
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] server lang: <none>
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] kex follows: False
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] Compression: none
2025-09-28T10:43:45.354 [DEBUG] [Thread-122263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:43:45.371 [DEBUG] [Thread-122263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:43:45.372 [DEBUG] [Thread-122263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:43:45.372 [DEBUG] [Thread-122263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:43:45.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:43:45.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:43:45.416 [DEBUG] [Thread-122263] [transport.py] [_log()] userauth is OK
2025-09-28T10:43:45.416 [DEBUG] [Thread-122263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:43:45.416 [DEBUG] [Thread-122263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:43:45.416 [DEBUG] [Thread-122263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:43:45.416 [DEBUG] [Thread-122263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:43:45.453 [INFO] [Thread-122263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:43:45.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:43:46.085 [DEBUG] [Thread-122263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:43:46.085 [DEBUG] [Thread-122263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:43:46.086 [DEBUG] [Thread-122263] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:43:46.126 [DEBUG] [Thread-122263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:43:46.126 [DEBUG] [Thread-122263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:43:46.129 [DEBUG] [Thread-122263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:43:46.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:43:46.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:43:46.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:43:46.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:43:46.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:43:46.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:43:46.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:43:46.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:43:46.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:43:46.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.363280 -999.00  +17.30  12.10     44   +5.00 1 1 1 1 1   888    0 15.06 93.41 ----- 11.2 12.1 192.6 17.4 26.0 -28.1 24.3 -27.3 23.5 -26.0 24.8 -28.1
2025-09-28T10:43:46.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:43:46.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:43:46.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.363280
2025-09-28T10:43:46.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:43:46.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:43:46.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:43:46.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:43:46.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:43:46.157 [DEBUG] [Thread-122263] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:43:46.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:43:31', tmtdew=13.15, humidity=41.73, cloud=0.0, wind=11.01, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:43:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:43:46.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-28T10:43:46.255 [DEBUG] [Thread-122266] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T10:43:46.255 [DEBUG] [Thread-122266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:43:46.270 [DEBUG] [Thread-122266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:43:46.270 [INFO] [Thread-122266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:43:46.277 [DEBUG] [Thread-122266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:43:46.277 [DEBUG] [Thread-122266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:43:46.277 [DEBUG] [Thread-122266] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:43:46.277 [DEBUG] [Thread-122266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] client lang: <none>
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] server lang: <none>
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] kex follows: False
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] Compression: none
2025-09-28T10:43:46.278 [DEBUG] [Thread-122266] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:43:46.334 [DEBUG] [Thread-122266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:43:46.334 [DEBUG] [Thread-122266] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:43:46.334 [DEBUG] [Thread-122266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:43:46.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:43:46.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:43:46.391 [DEBUG] [Thread-122266] [transport.py] [_log()] userauth is OK
2025-09-28T10:43:46.391 [DEBUG] [Thread-122266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:43:46.391 [DEBUG] [Thread-122266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:43:46.391 [DEBUG] [Thread-122266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:43:46.391 [DEBUG] [Thread-122266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:43:46.405 [INFO] [Thread-122266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:43:46.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-28T10:43:46.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:43:47.441 [DEBUG] [Thread-122266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:43:47.441 [DEBUG] [Thread-122266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:43:47.489 [DEBUG] [Thread-122266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:43:47.489 [DEBUG] [Thread-122266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:43:47.497 [DEBUG] [Thread-122266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:43:47.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:43:47.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-28T10:43:47.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-28T10:43:47.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:43:47.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:43:47.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:43:47.529 [DEBUG] [Thread-122266] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:43:53.155 [DEBUG] [Thread-122268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:43:57.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:43:57.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:43:57.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-28T10:43:58.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 43, 31), 13.15, 41.73, 0.0, 11.01, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:43:58.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:43:31
2025-09-28T10:43:58.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:43:58.392 [DEBUG] [Thread-122269] [transport.py] [_log()] starting thread (client mode): 0x2e3fa2c0
2025-09-28T10:43:58.392 [DEBUG] [Thread-122269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:43:58.411 [DEBUG] [Thread-122269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:43:58.412 [INFO] [Thread-122269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:43:58.414 [DEBUG] [Thread-122269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:43:58.414 [DEBUG] [Thread-122269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] client lang: <none>
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] server lang: <none>
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] kex follows: False
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:43:58.415 [DEBUG] [Thread-122269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:43:58.416 [DEBUG] [Thread-122269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:43:58.416 [DEBUG] [Thread-122269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:43:58.416 [DEBUG] [Thread-122269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:43:58.416 [DEBUG] [Thread-122269] [transport.py] [_log()] Compression: none
2025-09-28T10:43:58.416 [DEBUG] [Thread-122269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:43:58.434 [DEBUG] [Thread-122269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:43:58.434 [DEBUG] [Thread-122269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:43:58.435 [DEBUG] [Thread-122269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:43:58.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:43:58.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:43:58.437 [DEBUG] [Thread-122269] [transport.py] [_log()] userauth is OK
2025-09-28T10:43:58.437 [DEBUG] [Thread-122269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:43:58.437 [DEBUG] [Thread-122269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:43:58.437 [DEBUG] [Thread-122269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:43:58.437 [DEBUG] [Thread-122269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:43:58.461 [INFO] [Thread-122269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:43:58.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:43:59.106 [DEBUG] [Thread-122269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:43:59.107 [DEBUG] [Thread-122269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:43:59.107 [DEBUG] [Thread-122269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:43:59.147 [DEBUG] [Thread-122269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:43:59.147 [DEBUG] [Thread-122269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:43:59.150 [DEBUG] [Thread-122269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:43:59.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:43:59.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:43:59.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:43:59.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:43:59.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:43:59.172 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:43:59.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:43:59.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.363280 -999.00  +17.30  12.10     44   +5.00 1 1 1 1 1   888    0 15.06 93.41 ----- 11.2 12.1 192.6 17.4 26.0 -28.1 24.3 -27.3 23.5 -26.0 24.8 -28.1
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.363280
2025-09-28T10:43:59.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:43:59.173 [DEBUG] [Thread-122269] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:43:59.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:43:59.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:43:59.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:43:59.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:43:59.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:43:31', tmtdew=13.15, humidity=41.73, cloud=0.0, wind=11.01, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:43:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:43:59.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-28T10:43:59.304 [DEBUG] [Thread-122272] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-28T10:43:59.305 [DEBUG] [Thread-122272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:43:59.355 [DEBUG] [Thread-122272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:43:59.355 [INFO] [Thread-122272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:43:59.399 [DEBUG] [Thread-122272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] client lang: <none>
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] server lang: <none>
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] kex follows: False
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:43:59.400 [DEBUG] [Thread-122272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:43:59.401 [DEBUG] [Thread-122272] [transport.py] [_log()] Compression: none
2025-09-28T10:43:59.401 [DEBUG] [Thread-122272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:43:59.494 [DEBUG] [Thread-122272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:43:59.494 [DEBUG] [Thread-122272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:43:59.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:43:59.495 [DEBUG] [Thread-122272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:43:59.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:43:59.622 [DEBUG] [Thread-122272] [transport.py] [_log()] userauth is OK
2025-09-28T10:43:59.622 [DEBUG] [Thread-122272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:43:59.622 [DEBUG] [Thread-122272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:43:59.622 [DEBUG] [Thread-122272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:43:59.623 [DEBUG] [Thread-122272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:43:59.677 [INFO] [Thread-122272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:43:59.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-28T10:43:59.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:00.624 [DEBUG] [Thread-122272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:00.624 [DEBUG] [Thread-122272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:00.704 [DEBUG] [Thread-122272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:00.704 [DEBUG] [Thread-122272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:00.748 [DEBUG] [Thread-122272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:00.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:00.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-28T10:44:00.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-28T10:44:00.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:00.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:00.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:00.903 [DEBUG] [Thread-122272] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:03.750 [DEBUG] [Thread-122274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:08.200 [DEBUG] [Thread-122275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:10.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:44:10.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:44:10.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-28T10:44:11.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 44, 3), 13.11, 41.86, 0.0, 13.82, 16.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:44:11.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:44:03
2025-09-28T10:44:11.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:44:11.743 [DEBUG] [Thread-122276] [transport.py] [_log()] starting thread (client mode): 0x2b9ded40
2025-09-28T10:44:11.743 [DEBUG] [Thread-122276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:11.763 [DEBUG] [Thread-122276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:44:11.763 [INFO] [Thread-122276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:11.766 [DEBUG] [Thread-122276] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] Compression: none
2025-09-28T10:44:11.767 [DEBUG] [Thread-122276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:11.784 [DEBUG] [Thread-122276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:11.785 [DEBUG] [Thread-122276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:11.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:44:11.786 [DEBUG] [Thread-122276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:44:11.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:11.787 [DEBUG] [Thread-122276] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:11.788 [DEBUG] [Thread-122276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:11.788 [DEBUG] [Thread-122276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:11.788 [DEBUG] [Thread-122276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:44:11.788 [DEBUG] [Thread-122276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:11.805 [INFO] [Thread-122276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:11.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:12.413 [DEBUG] [Thread-122276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:12.414 [DEBUG] [Thread-122276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:12.414 [DEBUG] [Thread-122276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:44:12.454 [DEBUG] [Thread-122276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:12.455 [DEBUG] [Thread-122276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:12.458 [DEBUG] [Thread-122276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:12.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:12.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:44:12.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:44:12.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:44:12.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:12.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:44:12.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:12.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:44:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.363627 -999.00  +17.10   5.06     44   +5.00 1 1 1 1 1   888    0 14.53 88.99 ----- 4.2 5.1 218.7 13.4 25.9 -27.1 24.0 -26.1 23.4 -25.3 24.8 -26.9
2025-09-28T10:44:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:44:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:44:12.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.363627
2025-09-28T10:44:12.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:44:12.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:44:12.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:44:12.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:44:12.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:44:12.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:44:03', tmtdew=13.11, humidity=41.86, cloud=0.0, wind=13.82, temperature=16.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:43:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:44:12.485 [DEBUG] [Thread-122276] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:12.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-28T10:44:12.581 [DEBUG] [Thread-122279] [transport.py] [_log()] starting thread (client mode): 0x30ddc6d0
2025-09-28T10:44:12.581 [DEBUG] [Thread-122279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:12.596 [DEBUG] [Thread-122279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:44:12.596 [INFO] [Thread-122279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:44:12.603 [DEBUG] [Thread-122279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:12.603 [DEBUG] [Thread-122279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] Compression: none
2025-09-28T10:44:12.604 [DEBUG] [Thread-122279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:12.663 [DEBUG] [Thread-122279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:12.663 [DEBUG] [Thread-122279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:12.664 [DEBUG] [Thread-122279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:44:12.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:44:12.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:12.719 [DEBUG] [Thread-122279] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:12.720 [DEBUG] [Thread-122279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:12.720 [DEBUG] [Thread-122279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:12.720 [DEBUG] [Thread-122279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:44:12.720 [DEBUG] [Thread-122279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:12.740 [INFO] [Thread-122279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:12.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-28T10:44:12.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:13.733 [DEBUG] [Thread-122279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:13.733 [DEBUG] [Thread-122279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:13.781 [DEBUG] [Thread-122279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:13.781 [DEBUG] [Thread-122279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:13.790 [DEBUG] [Thread-122279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:13.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:13.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-28T10:44:13.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-28T10:44:13.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:13.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:13.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:13.824 [DEBUG] [Thread-122279] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:23.227 [DEBUG] [Thread-122281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:23.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:44:23.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:44:23.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-28T10:44:24.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 44, 3), 13.11, 41.86, 0.0, 13.82, 16.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:44:24.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:44:03
2025-09-28T10:44:24.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:44:24.698 [DEBUG] [Thread-122282] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-28T10:44:24.698 [DEBUG] [Thread-122282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:24.718 [DEBUG] [Thread-122282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:44:24.718 [INFO] [Thread-122282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:24.721 [DEBUG] [Thread-122282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] Compression: none
2025-09-28T10:44:24.722 [DEBUG] [Thread-122282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:24.743 [DEBUG] [Thread-122282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:24.744 [DEBUG] [Thread-122282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:24.744 [DEBUG] [Thread-122282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:44:24.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:44:24.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:24.746 [DEBUG] [Thread-122282] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:24.746 [DEBUG] [Thread-122282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:24.746 [DEBUG] [Thread-122282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:24.746 [DEBUG] [Thread-122282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:44:24.747 [DEBUG] [Thread-122282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:24.769 [INFO] [Thread-122282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:24.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:25.409 [DEBUG] [Thread-122282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:25.409 [DEBUG] [Thread-122282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:25.409 [DEBUG] [Thread-122282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:44:25.450 [DEBUG] [Thread-122282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:25.451 [DEBUG] [Thread-122282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:25.454 [DEBUG] [Thread-122282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:25.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:25.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:44:25.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:44:25.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:44:25.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:25.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:44:25.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:25.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:25.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:44:25.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.363627 -999.00  +17.10   5.06     44   +5.00 1 1 1 1 1   888    0 14.53 88.99 ----- 4.2 5.1 218.7 13.4 25.9 -27.1 24.0 -26.1 23.4 -25.3 24.8 -26.9
2025-09-28T10:44:25.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:44:25.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:44:25.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.363627
2025-09-28T10:44:25.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:44:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:44:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:44:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:44:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:44:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:44:03', tmtdew=13.11, humidity=41.86, cloud=0.0, wind=13.82, temperature=16.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:43:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:44:25.480 [DEBUG] [Thread-122282] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:25.565 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:44:25.607 [DEBUG] [Thread-122285] [transport.py] [_log()] starting thread (client mode): 0x2b9dfd30
2025-09-28T10:44:25.608 [DEBUG] [Thread-122285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:25.654 [DEBUG] [Thread-122285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:44:25.655 [INFO] [Thread-122285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:25.685 [DEBUG] [Thread-122285] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] Compression: none
2025-09-28T10:44:25.686 [DEBUG] [Thread-122285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:25.784 [DEBUG] [Thread-122285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:25.785 [DEBUG] [Thread-122285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:25.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:44:25.786 [DEBUG] [Thread-122285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:44:25.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:25.909 [DEBUG] [Thread-122285] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:25.909 [DEBUG] [Thread-122285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:25.910 [DEBUG] [Thread-122285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:25.910 [DEBUG] [Thread-122285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:44:25.910 [DEBUG] [Thread-122285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:25.962 [INFO] [Thread-122285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:25.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-28T10:44:25.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:26.902 [DEBUG] [Thread-122285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:26.902 [DEBUG] [Thread-122285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:26.984 [DEBUG] [Thread-122285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:26.984 [DEBUG] [Thread-122285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:27.026 [DEBUG] [Thread-122285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:27.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:27.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-28T10:44:27.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-28T10:44:27.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:27.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:27.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:27.195 [DEBUG] [Thread-122285] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:31.401 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:31.402 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:37.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:44:37.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:44:37.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:44:37.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 44, 3), 13.11, 41.86, 0.0, 13.82, 16.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:44:37.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:44:03
2025-09-28T10:44:37.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:44:38.032 [DEBUG] [Thread-122287] [transport.py] [_log()] starting thread (client mode): 0x2e3fb3a0
2025-09-28T10:44:38.032 [DEBUG] [Thread-122287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:38.053 [DEBUG] [Thread-122287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:44:38.053 [INFO] [Thread-122287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:44:38.056 [DEBUG] [Thread-122287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] Compression: none
2025-09-28T10:44:38.057 [DEBUG] [Thread-122287] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:38.074 [DEBUG] [Thread-122287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:38.075 [DEBUG] [Thread-122287] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:38.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:44:38.076 [DEBUG] [Thread-122287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:44:38.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:38.078 [DEBUG] [Thread-122287] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:38.078 [DEBUG] [Thread-122287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:38.078 [DEBUG] [Thread-122287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:38.078 [DEBUG] [Thread-122287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:44:38.078 [DEBUG] [Thread-122287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:38.115 [INFO] [Thread-122287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:38.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:38.265 [DEBUG] [Thread-122289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:38.747 [DEBUG] [Thread-122287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:38.747 [DEBUG] [Thread-122287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:38.748 [DEBUG] [Thread-122287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:44:38.788 [DEBUG] [Thread-122287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:38.788 [DEBUG] [Thread-122287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:38.791 [DEBUG] [Thread-122287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:38.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:38.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:44:38.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:44:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:44:38.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:38.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:44:38.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:38.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:38.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:44:38.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.363627 -999.00  +17.10   5.06     44   +5.00 1 1 1 1 1   888    0 14.53 88.99 ----- 4.2 5.1 218.7 13.4 25.9 -27.1 24.0 -26.1 23.4 -25.3 24.8 -26.9
2025-09-28T10:44:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:44:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:44:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.363627
2025-09-28T10:44:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:44:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:44:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:44:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:44:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:44:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:44:03', tmtdew=13.11, humidity=41.86, cloud=0.0, wind=13.82, temperature=16.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:43:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:44:38.816 [DEBUG] [Thread-122287] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:38.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-28T10:44:38.940 [DEBUG] [Thread-122291] [transport.py] [_log()] starting thread (client mode): 0x2b9b8be0
2025-09-28T10:44:38.941 [DEBUG] [Thread-122291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:38.983 [DEBUG] [Thread-122291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:44:38.983 [INFO] [Thread-122291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:39.017 [DEBUG] [Thread-122291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] Compression: none
2025-09-28T10:44:39.018 [DEBUG] [Thread-122291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:39.105 [DEBUG] [Thread-122291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:39.105 [DEBUG] [Thread-122291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:39.106 [DEBUG] [Thread-122291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:44:39.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:44:39.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:39.217 [DEBUG] [Thread-122291] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:39.217 [DEBUG] [Thread-122291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:39.218 [DEBUG] [Thread-122291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:39.218 [DEBUG] [Thread-122291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:44:39.218 [DEBUG] [Thread-122291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:39.266 [INFO] [Thread-122291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:39.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-28T10:44:39.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:40.235 [DEBUG] [Thread-122291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:40.235 [DEBUG] [Thread-122291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:40.310 [DEBUG] [Thread-122291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:40.311 [DEBUG] [Thread-122291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:40.348 [DEBUG] [Thread-122291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:40.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:40.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-28T10:44:40.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-28T10:44:40.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:40.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:40.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:40.493 [DEBUG] [Thread-122291] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:50.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:44:50.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:44:50.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-28T10:44:51.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 44, 35), 13.0, 41.96, 0.0, 10.6, 16.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:44:51.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:44:35
2025-09-28T10:44:51.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:44:51.325 [DEBUG] [Thread-122293] [transport.py] [_log()] starting thread (client mode): 0x30ddef20
2025-09-28T10:44:51.325 [DEBUG] [Thread-122293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:51.344 [DEBUG] [Thread-122293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:44:51.344 [INFO] [Thread-122293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:44:51.347 [DEBUG] [Thread-122293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:51.348 [DEBUG] [Thread-122293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:51.349 [DEBUG] [Thread-122293] [transport.py] [_log()] Compression: none
2025-09-28T10:44:51.349 [DEBUG] [Thread-122293] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:51.366 [DEBUG] [Thread-122293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:51.366 [DEBUG] [Thread-122293] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:51.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:44:51.367 [DEBUG] [Thread-122293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:44:51.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:51.369 [DEBUG] [Thread-122293] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:51.369 [DEBUG] [Thread-122293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:51.370 [DEBUG] [Thread-122293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:51.370 [DEBUG] [Thread-122293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:44:51.370 [DEBUG] [Thread-122293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:51.394 [INFO] [Thread-122293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:51.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:52.012 [DEBUG] [Thread-122293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:52.013 [DEBUG] [Thread-122293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:52.013 [DEBUG] [Thread-122293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:44:52.053 [DEBUG] [Thread-122293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:52.053 [DEBUG] [Thread-122293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:52.057 [DEBUG] [Thread-122293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:52.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:52.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:44:52.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:44:52.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:44:52.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:52.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:44:52.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:52.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.364322 -999.00  +17.60   7.19     44   +5.30 1 1 1 1 1   888    0 14.54 78.72 ----- 10.9 7.2 175.5 11.2 26.3 -25.8 24.6 -24.7 23.7 -24.6 25.1 -25.0
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.364322
2025-09-28T10:44:52.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:44:52.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:44:52.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:44:52.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:44:52.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:44:52.082 [DEBUG] [Thread-122293] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:44:52.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:44:35', tmtdew=13.0, humidity=41.96, cloud=0.0, wind=10.6, temperature=16.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:44:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:44: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-28T10:44:52.176 [DEBUG] [Thread-122296] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-28T10:44:52.177 [DEBUG] [Thread-122296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:44:52.191 [DEBUG] [Thread-122296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:44:52.191 [INFO] [Thread-122296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:52.199 [DEBUG] [Thread-122296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] client lang: <none>
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] server lang: <none>
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] kex follows: False
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] Compression: none
2025-09-28T10:44:52.200 [DEBUG] [Thread-122296] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:44:52.258 [DEBUG] [Thread-122296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:44:52.259 [DEBUG] [Thread-122296] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:44:52.259 [DEBUG] [Thread-122296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:44:52.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:44:52.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:44:52.315 [DEBUG] [Thread-122296] [transport.py] [_log()] userauth is OK
2025-09-28T10:44:52.315 [DEBUG] [Thread-122296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:44:52.315 [DEBUG] [Thread-122296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:44:52.315 [DEBUG] [Thread-122296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:44:52.316 [DEBUG] [Thread-122296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:44:52.335 [INFO] [Thread-122296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:44:52.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-28T10:44:52.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:44:53.297 [DEBUG] [Thread-122298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:44:53.371 [DEBUG] [Thread-122296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:44:53.371 [DEBUG] [Thread-122296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:44:53.419 [DEBUG] [Thread-122296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:44:53.419 [DEBUG] [Thread-122296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:44:53.427 [DEBUG] [Thread-122296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:44:53.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:44:53.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-28T10:44:53.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-28T10:44:53.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:44:53.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:44:53.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:44:53.458 [DEBUG] [Thread-122296] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:03.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:45:03.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:45:03.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-28T10:45:03.798 [DEBUG] [Thread-122299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 44, 35), 13.0, 41.96, 0.0, 10.6, 16.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:45:04.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:44:35
2025-09-28T10:45:04.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:45:04.311 [DEBUG] [Thread-122300] [transport.py] [_log()] starting thread (client mode): 0x2b9dc190
2025-09-28T10:45:04.311 [DEBUG] [Thread-122300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:04.331 [DEBUG] [Thread-122300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:45:04.331 [INFO] [Thread-122300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:04.335 [DEBUG] [Thread-122300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] Compression: none
2025-09-28T10:45:04.336 [DEBUG] [Thread-122300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:04.353 [DEBUG] [Thread-122300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:04.353 [DEBUG] [Thread-122300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:04.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:45:04.354 [DEBUG] [Thread-122300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:45:04.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:04.356 [DEBUG] [Thread-122300] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:04.357 [DEBUG] [Thread-122300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:04.357 [DEBUG] [Thread-122300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:04.357 [DEBUG] [Thread-122300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:45:04.357 [DEBUG] [Thread-122300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:04.373 [INFO] [Thread-122300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:04.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:08.340 [DEBUG] [Thread-122302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:12.804 [DEBUG] [Thread-122300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:12.804 [DEBUG] [Thread-122300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:12.804 [DEBUG] [Thread-122300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:45:12.845 [DEBUG] [Thread-122300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:12.845 [DEBUG] [Thread-122300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:12.848 [DEBUG] [Thread-122300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:12.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:12.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:45:12.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:45:12.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:45:12.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:12.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:45:12.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.364322 -999.00  +17.60   7.19     44   +5.30 1 1 1 1 1   888    0 14.54 78.72 ----- 10.9 7.2 175.5 11.2 26.3 -25.8 24.6 -24.7 23.7 -24.6 25.1 -25.0
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:45:12.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.364322
2025-09-28T10:45:12.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:45:12.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:45:12.882 [DEBUG] [Thread-122300] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:12.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:45:12.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:45:12.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:45:12.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:44:35', tmtdew=13.0, humidity=41.96, cloud=0.0, wind=10.6, temperature=16.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:44:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:45:12.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-28T10:45:12.972 [DEBUG] [Thread-122304] [transport.py] [_log()] starting thread (client mode): 0x2b9de530
2025-09-28T10:45:12.972 [DEBUG] [Thread-122304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:12.987 [DEBUG] [Thread-122304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:45:12.987 [INFO] [Thread-122304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:45:12.995 [DEBUG] [Thread-122304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:12.995 [DEBUG] [Thread-122304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:45:12.995 [DEBUG] [Thread-122304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:12.995 [DEBUG] [Thread-122304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] Compression: none
2025-09-28T10:45:12.996 [DEBUG] [Thread-122304] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:13.054 [DEBUG] [Thread-122304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:13.055 [DEBUG] [Thread-122304] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:13.055 [DEBUG] [Thread-122304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:45:13.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:45:13.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:13.111 [DEBUG] [Thread-122304] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:13.111 [DEBUG] [Thread-122304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:13.111 [DEBUG] [Thread-122304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:13.111 [DEBUG] [Thread-122304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:45:13.111 [DEBUG] [Thread-122304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:13.130 [INFO] [Thread-122304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:13.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-28T10:45:13.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:14.103 [DEBUG] [Thread-122304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:14.103 [DEBUG] [Thread-122304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:14.152 [DEBUG] [Thread-122304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:14.152 [DEBUG] [Thread-122304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:14.161 [DEBUG] [Thread-122304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:14.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:14.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-28T10:45:14.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-28T10:45:14.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:14.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:14.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:14.197 [DEBUG] [Thread-122304] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:23.369 [DEBUG] [Thread-122306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:24.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:45:24.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:45:24.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-28T10:45:24.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 45, 7), 12.76, 42.58, 0.0, 7.08, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:45:24.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:45:07
2025-09-28T10:45:24.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:45:25.044 [DEBUG] [Thread-122307] [transport.py] [_log()] starting thread (client mode): 0x2b98b490
2025-09-28T10:45:25.044 [DEBUG] [Thread-122307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:25.064 [DEBUG] [Thread-122307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:45:25.064 [INFO] [Thread-122307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:25.067 [DEBUG] [Thread-122307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:25.068 [DEBUG] [Thread-122307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:25.068 [DEBUG] [Thread-122307] [transport.py] [_log()] Compression: none
2025-09-28T10:45:25.068 [DEBUG] [Thread-122307] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:25.083 [DEBUG] [Thread-122307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:25.084 [DEBUG] [Thread-122307] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:25.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:45:25.085 [DEBUG] [Thread-122307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:45:25.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:25.087 [DEBUG] [Thread-122307] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:25.087 [DEBUG] [Thread-122307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:25.087 [DEBUG] [Thread-122307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:25.087 [DEBUG] [Thread-122307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:45:25.087 [DEBUG] [Thread-122307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:25.111 [INFO] [Thread-122307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:25.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:25.766 [DEBUG] [Thread-122307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:25.766 [DEBUG] [Thread-122307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:25.766 [DEBUG] [Thread-122307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:45:25.807 [DEBUG] [Thread-122307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:25.807 [DEBUG] [Thread-122307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:25.809 [DEBUG] [Thread-122307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:25.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:25.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:45:25.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:45:25.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:45:25.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:25.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:45:25.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.364669 -999.00  +17.40   7.07     44   +5.00 1 1 1 1 1   888    0 14.31 76.22 ----- 5.7 7.1 168.4 11.3 26.3 -26.4 24.5 -25.4 23.7 -25.3 25.1 -26.0
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.364669
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:45:25.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:45:07', tmtdew=12.76, humidity=42.58, cloud=0.0, wind=7.08, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:45:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:45:25.826 [DEBUG] [Thread-122307] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:25.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-28T10:45:25.907 [DEBUG] [Thread-122310] [transport.py] [_log()] starting thread (client mode): 0x2b98ae30
2025-09-28T10:45:25.907 [DEBUG] [Thread-122310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:25.922 [DEBUG] [Thread-122310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:45:25.922 [INFO] [Thread-122310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:45:25.929 [DEBUG] [Thread-122310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:25.929 [DEBUG] [Thread-122310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:45:25.929 [DEBUG] [Thread-122310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:25.929 [DEBUG] [Thread-122310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:25.929 [DEBUG] [Thread-122310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] Compression: none
2025-09-28T10:45:25.930 [DEBUG] [Thread-122310] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:25.989 [DEBUG] [Thread-122310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:25.990 [DEBUG] [Thread-122310] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:25.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:45:25.990 [DEBUG] [Thread-122310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:45:25.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:26.048 [DEBUG] [Thread-122310] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:26.048 [DEBUG] [Thread-122310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:26.048 [DEBUG] [Thread-122310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:26.049 [DEBUG] [Thread-122310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:45:26.049 [DEBUG] [Thread-122310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:26.068 [INFO] [Thread-122310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:26.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-28T10:45:26.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:27.050 [DEBUG] [Thread-122310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:27.050 [DEBUG] [Thread-122310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:27.098 [DEBUG] [Thread-122310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:27.098 [DEBUG] [Thread-122310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:27.106 [DEBUG] [Thread-122310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:27.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:27.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:45:27.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-28T10:45:27.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:27.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:27.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:27.138 [DEBUG] [Thread-122310] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:31.542 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:31.543 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:37.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:45:37.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:45:37.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-28T10:45:37.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 45, 7), 12.76, 42.58, 0.0, 7.08, 16.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:45:37.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:45:07
2025-09-28T10:45:37.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:45:38.024 [DEBUG] [Thread-122312] [transport.py] [_log()] starting thread (client mode): 0x2e3c39a0
2025-09-28T10:45:38.024 [DEBUG] [Thread-122312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:38.047 [DEBUG] [Thread-122312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:45:38.048 [INFO] [Thread-122312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:38.049 [DEBUG] [Thread-122312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:38.050 [DEBUG] [Thread-122312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:38.050 [DEBUG] [Thread-122312] [transport.py] [_log()] Compression: none
2025-09-28T10:45:38.050 [DEBUG] [Thread-122312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:38.056 [DEBUG] [Thread-122312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:38.056 [DEBUG] [Thread-122312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:45:38.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:45:38.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:45:38.057 [DEBUG] [Thread-122312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:38.067 [INFO] [Thread-122312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:38.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:38.399 [DEBUG] [Thread-122314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:45:38.734 [DEBUG] [Thread-122312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:38.734 [DEBUG] [Thread-122312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:38.734 [DEBUG] [Thread-122312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:45:38.775 [DEBUG] [Thread-122312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:38.775 [DEBUG] [Thread-122312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:38.778 [DEBUG] [Thread-122312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:38.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:38.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:45:38.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:45:38.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:45:38.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:38.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:45:38.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.364669 -999.00  +17.40   7.07     44   +5.00 1 1 1 1 1   888    0 14.31 76.22 ----- 5.7 7.1 168.4 11.3 26.3 -26.4 24.5 -25.4 23.7 -25.3 25.1 -26.0
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:45:38.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.364669
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:45:38.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:45:07', tmtdew=12.76, humidity=42.58, cloud=0.0, wind=7.08, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:45:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:45:38.795 [DEBUG] [Thread-122312] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:38.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-28T10:45:38.884 [DEBUG] [Thread-122316] [transport.py] [_log()] starting thread (client mode): 0x2b98b0d0
2025-09-28T10:45:38.884 [DEBUG] [Thread-122316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:38.898 [DEBUG] [Thread-122316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:45:38.898 [INFO] [Thread-122316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:38.905 [DEBUG] [Thread-122316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] Compression: none
2025-09-28T10:45:38.906 [DEBUG] [Thread-122316] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:38.964 [DEBUG] [Thread-122316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:38.964 [DEBUG] [Thread-122316] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:38.964 [DEBUG] [Thread-122316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:45:38.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:45:38.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:39.021 [DEBUG] [Thread-122316] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:39.021 [DEBUG] [Thread-122316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:39.021 [DEBUG] [Thread-122316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:39.021 [DEBUG] [Thread-122316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:45:39.021 [DEBUG] [Thread-122316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:39.035 [INFO] [Thread-122316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:39.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:45:39.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:39.997 [DEBUG] [Thread-122316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:39.997 [DEBUG] [Thread-122316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:40.045 [DEBUG] [Thread-122316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:40.045 [DEBUG] [Thread-122316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:40.053 [DEBUG] [Thread-122316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:40.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:40.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')
2025-09-28T10:45:40.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') -> 00000000
2025-09-28T10:45:40.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:40.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:40.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:40.084 [DEBUG] [Thread-122316] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:50.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:45:50.087 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:45:50.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-28T10:45:50.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 45, 39), 12.95, 42.09, 0.0, 2.52, 16.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:45:50.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:45:39
2025-09-28T10:45:50.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:45:50.931 [DEBUG] [Thread-122318] [transport.py] [_log()] starting thread (client mode): 0x2b94ded0
2025-09-28T10:45:50.931 [DEBUG] [Thread-122318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:50.950 [DEBUG] [Thread-122318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:45:50.950 [INFO] [Thread-122318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] Compression: none
2025-09-28T10:45:50.952 [DEBUG] [Thread-122318] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:50.970 [DEBUG] [Thread-122318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:50.971 [DEBUG] [Thread-122318] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:50.971 [DEBUG] [Thread-122318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:45:50.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:45:50.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:50.973 [DEBUG] [Thread-122318] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:50.973 [DEBUG] [Thread-122318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:50.973 [DEBUG] [Thread-122318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:50.973 [DEBUG] [Thread-122318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:45:50.973 [DEBUG] [Thread-122318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:50.986 [INFO] [Thread-122318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:50.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:51.571 [DEBUG] [Thread-122318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:51.572 [DEBUG] [Thread-122318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:51.572 [DEBUG] [Thread-122318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:45:51.612 [DEBUG] [Thread-122318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:51.612 [DEBUG] [Thread-122318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:51.615 [DEBUG] [Thread-122318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:51.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:51.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:45:51.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:45:51.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:45:51.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:51.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:45:51.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:51.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:51.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:45:51.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365016 -999.00  +17.40   2.61     44   +5.10 1 1 1 1 1   888    0 14.34 73.28 ----- 4.0 2.6 167.7 7.4 26.5 -26.3 24.8 -25.0 23.8 -25.4 25.2 -26.5
2025-09-28T10:45:51.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:45:51.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:45:51.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365016
2025-09-28T10:45:51.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:45:51.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:45:51.631 [DEBUG] [Thread-122318] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:51.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:45:51.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:45:51.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:45:51.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:45:39', tmtdew=12.95, humidity=42.09, cloud=0.0, wind=2.52, temperature=16.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:45:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:45:51.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-28T10:45:51.723 [DEBUG] [Thread-122321] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T10:45:51.724 [DEBUG] [Thread-122321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:45:51.739 [DEBUG] [Thread-122321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:45:51.739 [INFO] [Thread-122321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] client lang: <none>
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] server lang: <none>
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] kex follows: False
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] Compression: none
2025-09-28T10:45:51.747 [DEBUG] [Thread-122321] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:45:51.802 [DEBUG] [Thread-122321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:45:51.803 [DEBUG] [Thread-122321] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:45:51.803 [DEBUG] [Thread-122321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:45:51.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:45:51.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:45:51.859 [DEBUG] [Thread-122321] [transport.py] [_log()] userauth is OK
2025-09-28T10:45:51.859 [DEBUG] [Thread-122321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:45:51.859 [DEBUG] [Thread-122321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:45:51.860 [DEBUG] [Thread-122321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:45:51.860 [DEBUG] [Thread-122321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:45:51.878 [INFO] [Thread-122321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:45:51.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-28T10:45:51.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:45:52.840 [DEBUG] [Thread-122321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:45:52.841 [DEBUG] [Thread-122321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:45:52.888 [DEBUG] [Thread-122321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:45:52.888 [DEBUG] [Thread-122321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:45:52.897 [DEBUG] [Thread-122321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:45:52.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:45:52.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-28T10:45:52.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-28T10:45:52.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:45:52.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:45:52.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:45:52.931 [DEBUG] [Thread-122321] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:45:53.443 [DEBUG] [Thread-122323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:02.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:46:02.934 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:46:02.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-28T10:46:03.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 45, 39), 12.95, 42.09, 0.0, 2.52, 16.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:46:03.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:45:39
2025-09-28T10:46:03.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:46:03.785 [DEBUG] [Thread-122324] [transport.py] [_log()] starting thread (client mode): 0x2b98a950
2025-09-28T10:46:03.785 [DEBUG] [Thread-122324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:03.805 [DEBUG] [Thread-122324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:46:03.805 [INFO] [Thread-122324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:03.808 [DEBUG] [Thread-122324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:03.809 [DEBUG] [Thread-122324] [transport.py] [_log()] Compression: none
2025-09-28T10:46:03.809 [DEBUG] [Thread-122324] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:03.827 [DEBUG] [Thread-122324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:03.828 [DEBUG] [Thread-122324] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:03.828 [DEBUG] [Thread-122324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:46:03.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:46:03.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:03.830 [DEBUG] [Thread-122324] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:03.831 [DEBUG] [Thread-122324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:03.831 [DEBUG] [Thread-122324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:03.831 [DEBUG] [Thread-122324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:46:03.831 [DEBUG] [Thread-122324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:03.853 [INFO] [Thread-122324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:03.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:03.864 [DEBUG] [Thread-122326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:04.525 [DEBUG] [Thread-122324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:04.525 [DEBUG] [Thread-122324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:04.526 [DEBUG] [Thread-122324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:46:04.566 [DEBUG] [Thread-122324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:04.566 [DEBUG] [Thread-122324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:04.569 [DEBUG] [Thread-122324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:04.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:04.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:46:04.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:46:04.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:46:04.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:04.592 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:46:04.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:04.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:04.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:46:04.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365016 -999.00  +17.40   2.61     44   +5.10 1 1 1 1 1   888    0 14.34 73.28 ----- 4.0 2.6 167.7 7.4 26.5 -26.3 24.8 -25.0 23.8 -25.4 25.2 -26.5
2025-09-28T10:46:04.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:46:04.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:46:04.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365016
2025-09-28T10:46:04.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:46:04.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:46:04.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:46:04.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:46:04.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:46:04.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:45:39', tmtdew=12.95, humidity=42.09, cloud=0.0, wind=2.52, temperature=16.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:45:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:46:04.594 [DEBUG] [Thread-122324] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:04.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-28T10:46:04.721 [DEBUG] [Thread-122328] [transport.py] [_log()] starting thread (client mode): 0x2b9462f0
2025-09-28T10:46:04.721 [DEBUG] [Thread-122328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:04.771 [DEBUG] [Thread-122328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:46:04.772 [INFO] [Thread-122328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:04.812 [DEBUG] [Thread-122328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] Compression: none
2025-09-28T10:46:04.813 [DEBUG] [Thread-122328] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:04.902 [DEBUG] [Thread-122328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:04.902 [DEBUG] [Thread-122328] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:04.903 [DEBUG] [Thread-122328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:46:04.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:46:04.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:05.023 [DEBUG] [Thread-122328] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:05.024 [DEBUG] [Thread-122328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:05.024 [DEBUG] [Thread-122328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:05.024 [DEBUG] [Thread-122328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:46:05.024 [DEBUG] [Thread-122328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:05.074 [INFO] [Thread-122328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:05.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-28T10:46:05.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:06.066 [DEBUG] [Thread-122328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:06.066 [DEBUG] [Thread-122328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:06.146 [DEBUG] [Thread-122328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:06.146 [DEBUG] [Thread-122328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:06.186 [DEBUG] [Thread-122328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:06.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:06.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-28T10:46:06.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-28T10:46:06.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:06.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:06.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:06.346 [DEBUG] [Thread-122328] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:08.486 [DEBUG] [Thread-122330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:16.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:46:16.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:46:16.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-28T10:46:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 46, 10), 12.91, 42.19, 0.0, 0.9, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:46:16.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:46:10
2025-09-28T10:46:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:46:17.197 [DEBUG] [Thread-122331] [transport.py] [_log()] starting thread (client mode): 0x2b9469e0
2025-09-28T10:46:17.197 [DEBUG] [Thread-122331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:17.218 [DEBUG] [Thread-122331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:46:17.218 [INFO] [Thread-122331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:17.221 [DEBUG] [Thread-122331] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] Compression: none
2025-09-28T10:46:17.222 [DEBUG] [Thread-122331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:17.237 [DEBUG] [Thread-122331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:17.238 [DEBUG] [Thread-122331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:17.238 [DEBUG] [Thread-122331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:46:17.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:46:17.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:17.239 [DEBUG] [Thread-122331] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:17.239 [DEBUG] [Thread-122331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:17.239 [DEBUG] [Thread-122331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:17.239 [DEBUG] [Thread-122331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:46:17.239 [DEBUG] [Thread-122331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:17.252 [INFO] [Thread-122331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:17.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:17.882 [DEBUG] [Thread-122331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:17.882 [DEBUG] [Thread-122331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:17.883 [DEBUG] [Thread-122331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:46:17.924 [DEBUG] [Thread-122331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:17.924 [DEBUG] [Thread-122331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:17.927 [DEBUG] [Thread-122331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:17.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:17.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:46:17.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:46:17.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:46:17.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:17.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:46:17.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:17.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:17.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:46:17.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365016 -999.00  +17.40   2.61     44   +5.10 1 1 1 1 1   888    0 14.34 73.28 ----- 4.0 2.6 167.7 7.4 26.5 -26.3 24.8 -25.0 23.8 -25.4 25.2 -26.5
2025-09-28T10:46:17.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:46:17.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:46:17.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365016
2025-09-28T10:46:17.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:46:17.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:46:17.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:46:17.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:46:17.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:46:17.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:46:10', tmtdew=12.91, humidity=42.19, cloud=0.0, wind=0.9, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:45:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:46:17.952 [DEBUG] [Thread-122331] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:18.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-28T10:46:18.048 [DEBUG] [Thread-122334] [transport.py] [_log()] starting thread (client mode): 0x2b9884c0
2025-09-28T10:46:18.048 [DEBUG] [Thread-122334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:18.066 [DEBUG] [Thread-122334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:46:18.067 [INFO] [Thread-122334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:46:18.074 [DEBUG] [Thread-122334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:18.074 [DEBUG] [Thread-122334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:46:18.074 [DEBUG] [Thread-122334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:18.074 [DEBUG] [Thread-122334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:18.075 [DEBUG] [Thread-122334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] Compression: none
2025-09-28T10:46:18.076 [DEBUG] [Thread-122334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:18.135 [DEBUG] [Thread-122334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:18.136 [DEBUG] [Thread-122334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:18.136 [DEBUG] [Thread-122334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:46:18.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:46:18.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:18.191 [DEBUG] [Thread-122334] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:18.191 [DEBUG] [Thread-122334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:18.191 [DEBUG] [Thread-122334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:18.191 [DEBUG] [Thread-122334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:46:18.191 [DEBUG] [Thread-122334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:18.215 [INFO] [Thread-122334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:18.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-28T10:46:18.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:19.205 [DEBUG] [Thread-122334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:19.205 [DEBUG] [Thread-122334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:19.253 [DEBUG] [Thread-122334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:19.253 [DEBUG] [Thread-122334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:19.262 [DEBUG] [Thread-122334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:19.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:19.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-28T10:46:19.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-28T10:46:19.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:19.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:19.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:19.296 [DEBUG] [Thread-122334] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:23.513 [DEBUG] [Thread-122336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:29.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:46:29.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:46: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-28T10:46:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 46, 10), 12.91, 42.19, 0.0, 0.9, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:46:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:46:10
2025-09-28T10:46:29.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:46:30.145 [DEBUG] [Thread-122337] [transport.py] [_log()] starting thread (client mode): 0x2b946b30
2025-09-28T10:46:30.145 [DEBUG] [Thread-122337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:30.163 [DEBUG] [Thread-122337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:46:30.164 [INFO] [Thread-122337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:46:30.166 [DEBUG] [Thread-122337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] Compression: none
2025-09-28T10:46:30.167 [DEBUG] [Thread-122337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:30.183 [DEBUG] [Thread-122337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:30.183 [DEBUG] [Thread-122337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:30.183 [DEBUG] [Thread-122337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:46:30.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:46:30.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:30.184 [DEBUG] [Thread-122337] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:30.184 [DEBUG] [Thread-122337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:30.184 [DEBUG] [Thread-122337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:30.184 [DEBUG] [Thread-122337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:46:30.184 [DEBUG] [Thread-122337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:30.193 [INFO] [Thread-122337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:30.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:30.764 [DEBUG] [Thread-122337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:30.764 [DEBUG] [Thread-122337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:30.764 [DEBUG] [Thread-122337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:46:30.805 [DEBUG] [Thread-122337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:30.805 [DEBUG] [Thread-122337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:30.808 [DEBUG] [Thread-122337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:30.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:30.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:46:30.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:46:30.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:46:30.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:30.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:46:30.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:30.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:30.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:46:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365363 -999.00  +17.50   3.90     44   +5.20 1 1 1 1 1   888    0 14.47 75.59 ----- 4.2 3.9 131.4 5.2 26.6 -26.3 25.0 -24.9 24.0 -24.7 25.5 -25.5
2025-09-28T10:46:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:46:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:46:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365363
2025-09-28T10:46:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:46:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:46:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:46:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:46:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:46:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:46:10', tmtdew=12.91, humidity=42.19, cloud=0.0, wind=0.9, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:46:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:46:30.833 [DEBUG] [Thread-122337] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:30.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-28T10:46:30.938 [DEBUG] [Thread-122340] [transport.py] [_log()] starting thread (client mode): 0x2e3fa350
2025-09-28T10:46:30.938 [DEBUG] [Thread-122340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:30.952 [DEBUG] [Thread-122340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:46:30.952 [INFO] [Thread-122340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:46:30.960 [DEBUG] [Thread-122340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:30.960 [DEBUG] [Thread-122340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] Compression: none
2025-09-28T10:46:30.961 [DEBUG] [Thread-122340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:31.020 [DEBUG] [Thread-122340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:31.020 [DEBUG] [Thread-122340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:31.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:46:31.022 [DEBUG] [Thread-122340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:46:31.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:31.076 [DEBUG] [Thread-122340] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:31.077 [DEBUG] [Thread-122340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:31.077 [DEBUG] [Thread-122340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:31.077 [DEBUG] [Thread-122340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:46:31.077 [DEBUG] [Thread-122340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:31.095 [INFO] [Thread-122340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46: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-28T10:46:31.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:31.685 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:31.686 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:32.144 [DEBUG] [Thread-122340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:32.144 [DEBUG] [Thread-122340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:32.192 [DEBUG] [Thread-122340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:32.192 [DEBUG] [Thread-122340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:32.201 [DEBUG] [Thread-122340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:32.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:32.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-28T10:46:32.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T10:46:32.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:32.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:32.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:32.237 [DEBUG] [Thread-122340] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:38.562 [DEBUG] [Thread-122342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:46:42.240 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:46:42.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-28T10:46:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 46, 10), 12.91, 42.19, 0.0, 0.9, 16.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:46:42.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:46:10
2025-09-28T10:46:42.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:46:43.083 [DEBUG] [Thread-122343] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T10:46:43.083 [DEBUG] [Thread-122343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:43.104 [DEBUG] [Thread-122343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:46:43.105 [INFO] [Thread-122343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] Compression: none
2025-09-28T10:46:43.106 [DEBUG] [Thread-122343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:43.114 [DEBUG] [Thread-122343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:43.115 [DEBUG] [Thread-122343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:43.115 [DEBUG] [Thread-122343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:46:43.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:46:43.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:43.117 [DEBUG] [Thread-122343] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:43.117 [DEBUG] [Thread-122343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:43.117 [DEBUG] [Thread-122343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:43.117 [DEBUG] [Thread-122343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:46:43.117 [DEBUG] [Thread-122343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:43.151 [INFO] [Thread-122343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:43.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:43.798 [DEBUG] [Thread-122343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:43.798 [DEBUG] [Thread-122343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:43.798 [DEBUG] [Thread-122343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:46:43.839 [DEBUG] [Thread-122343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:43.839 [DEBUG] [Thread-122343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:43.841 [DEBUG] [Thread-122343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:43.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:43.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:46:43.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:46:43.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:46:43.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:43.859 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:46:43.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:43.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:43.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:46:43.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365363 -999.00  +17.50   3.90     44   +5.20 1 1 1 1 1   888    0 14.47 75.59 ----- 4.2 3.9 131.4 5.2 26.6 -26.3 25.0 -24.9 24.0 -24.7 25.5 -25.5
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365363
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:46:43.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:46:10', tmtdew=12.91, humidity=42.19, cloud=0.0, wind=0.9, temperature=16.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:46:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:46:43.860 [DEBUG] [Thread-122343] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:43.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-28T10:46:43.979 [DEBUG] [Thread-122346] [transport.py] [_log()] starting thread (client mode): 0x2b9bb7c0
2025-09-28T10:46:43.979 [DEBUG] [Thread-122346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:44.027 [DEBUG] [Thread-122346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:46:44.027 [INFO] [Thread-122346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] Compression: none
2025-09-28T10:46:44.068 [DEBUG] [Thread-122346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:44.160 [DEBUG] [Thread-122346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:44.160 [DEBUG] [Thread-122346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:44.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:46:44.160 [DEBUG] [Thread-122346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:46:44.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:44.285 [DEBUG] [Thread-122346] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:44.285 [DEBUG] [Thread-122346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:44.285 [DEBUG] [Thread-122346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:44.285 [DEBUG] [Thread-122346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:46:44.285 [DEBUG] [Thread-122346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:44.335 [INFO] [Thread-122346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:44.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-28T10:46:44.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:45.288 [DEBUG] [Thread-122346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:45.288 [DEBUG] [Thread-122346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:45.369 [DEBUG] [Thread-122346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:45.369 [DEBUG] [Thread-122346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:45.412 [DEBUG] [Thread-122346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:45.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:45.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-28T10:46:45.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-28T10:46:45.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:45.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:45.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:45.579 [DEBUG] [Thread-122346] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:53.603 [DEBUG] [Thread-122348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:46:55.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:46:55.548 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:46:55.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-28T10:46:56.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 46, 42), 13.08, 41.61, 0.0, 5.44, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:46:56.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:46:42
2025-09-28T10:46:56.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:46:56.394 [DEBUG] [Thread-122349] [transport.py] [_log()] starting thread (client mode): 0x2b945840
2025-09-28T10:46:56.394 [DEBUG] [Thread-122349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:56.418 [DEBUG] [Thread-122349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:46:56.418 [INFO] [Thread-122349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:46:56.422 [DEBUG] [Thread-122349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:56.423 [DEBUG] [Thread-122349] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] Compression: none
2025-09-28T10:46:56.424 [DEBUG] [Thread-122349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:56.442 [DEBUG] [Thread-122349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:56.443 [DEBUG] [Thread-122349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:56.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:46:56.444 [DEBUG] [Thread-122349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:46:56.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:56.446 [DEBUG] [Thread-122349] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:56.446 [DEBUG] [Thread-122349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:56.446 [DEBUG] [Thread-122349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:56.446 [DEBUG] [Thread-122349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:46:56.446 [DEBUG] [Thread-122349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:56.481 [INFO] [Thread-122349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:56.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:57.133 [DEBUG] [Thread-122349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:57.134 [DEBUG] [Thread-122349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:57.134 [DEBUG] [Thread-122349] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:46:57.174 [DEBUG] [Thread-122349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:57.175 [DEBUG] [Thread-122349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:57.177 [DEBUG] [Thread-122349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:57.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:57.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:46:57.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:46:57.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:46:57.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:57.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:46:57.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365363 -999.00  +17.50   3.90     44   +5.20 1 1 1 1 1   888    0 14.47 75.59 ----- 4.2 3.9 131.4 5.2 26.6 -26.3 25.0 -24.9 24.0 -24.7 25.5 -25.5
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:46:57.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365363
2025-09-28T10:46:57.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:46:57.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:46:57.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:46:57.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:46:57.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:46:57.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:46:42', tmtdew=13.08, humidity=41.61, cloud=0.0, wind=5.44, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:46:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:46:57.201 [DEBUG] [Thread-122349] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:46:57.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-28T10:46:57.295 [DEBUG] [Thread-122352] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf70
2025-09-28T10:46:57.295 [DEBUG] [Thread-122352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:46:57.314 [DEBUG] [Thread-122352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:46:57.314 [INFO] [Thread-122352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] client lang: <none>
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] server lang: <none>
2025-09-28T10:46:57.325 [DEBUG] [Thread-122352] [transport.py] [_log()] kex follows: False
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] Compression: none
2025-09-28T10:46:57.326 [DEBUG] [Thread-122352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:46:57.383 [DEBUG] [Thread-122352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:46:57.384 [DEBUG] [Thread-122352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:46:57.384 [DEBUG] [Thread-122352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:46:57.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:46:57.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:46:57.439 [DEBUG] [Thread-122352] [transport.py] [_log()] userauth is OK
2025-09-28T10:46:57.439 [DEBUG] [Thread-122352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:46:57.439 [DEBUG] [Thread-122352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:46:57.440 [DEBUG] [Thread-122352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:46:57.440 [DEBUG] [Thread-122352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:46:57.458 [INFO] [Thread-122352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:46:57.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-28T10:46:57.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:46:58.471 [DEBUG] [Thread-122352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:46:58.471 [DEBUG] [Thread-122352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:46:58.519 [DEBUG] [Thread-122352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:46:58.519 [DEBUG] [Thread-122352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:46:58.527 [DEBUG] [Thread-122352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:46:58.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:46:58.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-28T10:46:58.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-28T10:46:58.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:46:58.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:46:58.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:46:58.559 [DEBUG] [Thread-122352] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:03.909 [DEBUG] [Thread-122354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:08.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:47:08.555 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:47:08.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:47:08.626 [DEBUG] [Thread-122355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:09.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 46, 42), 13.08, 41.61, 0.0, 5.44, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:47:09.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:46:42
2025-09-28T10:47:09.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:47:09.401 [DEBUG] [Thread-122356] [transport.py] [_log()] starting thread (client mode): 0x2b988be0
2025-09-28T10:47:09.402 [DEBUG] [Thread-122356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:09.416 [DEBUG] [Thread-122356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:47:09.416 [INFO] [Thread-122356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:47:09.419 [DEBUG] [Thread-122356] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:09.419 [DEBUG] [Thread-122356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] Compression: none
2025-09-28T10:47:09.420 [DEBUG] [Thread-122356] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:09.437 [DEBUG] [Thread-122356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:09.437 [DEBUG] [Thread-122356] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:09.438 [DEBUG] [Thread-122356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:47:09.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:47:09.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:09.439 [DEBUG] [Thread-122356] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:09.440 [DEBUG] [Thread-122356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:09.440 [DEBUG] [Thread-122356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:09.440 [DEBUG] [Thread-122356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:47:09.440 [DEBUG] [Thread-122356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:09.457 [INFO] [Thread-122356] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:09.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:10.069 [DEBUG] [Thread-122356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:10.070 [DEBUG] [Thread-122356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:10.070 [DEBUG] [Thread-122356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:47:10.110 [DEBUG] [Thread-122356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:10.110 [DEBUG] [Thread-122356] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:10.113 [DEBUG] [Thread-122356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:10.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:10.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:47:10.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:47:10.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:47:10.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:10.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:47:10.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365711 -999.00  +17.60   3.13     43   +5.20 1 1 1 1 1   888    0 14.08 68.54 ----- 3.2 3.1 133.4 4.9 26.9 -28.7 25.2 -24.9 24.1 -25.3 25.6 -25.4
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365711
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:47:10.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:46:42', tmtdew=13.08, humidity=41.61, cloud=0.0, wind=5.44, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:46:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:47:10.137 [DEBUG] [Thread-122356] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:10.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-28T10:47:10.231 [DEBUG] [Thread-122359] [transport.py] [_log()] starting thread (client mode): 0x2e3482b0
2025-09-28T10:47:10.231 [DEBUG] [Thread-122359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:10.245 [DEBUG] [Thread-122359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:47:10.245 [INFO] [Thread-122359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:10.253 [DEBUG] [Thread-122359] [transport.py] [_log()] Compression: none
2025-09-28T10:47:10.254 [DEBUG] [Thread-122359] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:10.317 [DEBUG] [Thread-122359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:10.318 [DEBUG] [Thread-122359] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:10.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:47:10.319 [DEBUG] [Thread-122359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:47:10.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:10.372 [DEBUG] [Thread-122359] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:10.372 [DEBUG] [Thread-122359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:10.373 [DEBUG] [Thread-122359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:10.373 [DEBUG] [Thread-122359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:47:10.373 [DEBUG] [Thread-122359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:10.395 [INFO] [Thread-122359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:10.395 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:47:10.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:11.390 [DEBUG] [Thread-122359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:11.390 [DEBUG] [Thread-122359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:11.437 [DEBUG] [Thread-122359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:11.437 [DEBUG] [Thread-122359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:11.446 [DEBUG] [Thread-122359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:11.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:11.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')
2025-09-28T10:47:11.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-28T10:47:11.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:11.473 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:11.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:11.481 [DEBUG] [Thread-122359] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:21.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:47:21.484 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:47:21.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:47:22.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 47, 14), 13.02, 41.83, 0.0, 7.69, 16.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:47:22.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:47:14
2025-09-28T10:47:22.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:47:22.341 [DEBUG] [Thread-122361] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T10:47:22.341 [DEBUG] [Thread-122361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:22.361 [DEBUG] [Thread-122361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:47:22.361 [INFO] [Thread-122361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] Compression: none
2025-09-28T10:47:22.364 [DEBUG] [Thread-122361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:22.382 [DEBUG] [Thread-122361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:22.382 [DEBUG] [Thread-122361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:22.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:47:22.383 [DEBUG] [Thread-122361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:47:22.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:22.385 [DEBUG] [Thread-122361] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:22.385 [DEBUG] [Thread-122361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:22.385 [DEBUG] [Thread-122361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:22.385 [DEBUG] [Thread-122361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:47:22.385 [DEBUG] [Thread-122361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:22.410 [INFO] [Thread-122361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:22.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:23.020 [DEBUG] [Thread-122361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:23.020 [DEBUG] [Thread-122361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:23.020 [DEBUG] [Thread-122361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:47:23.061 [DEBUG] [Thread-122361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:23.061 [DEBUG] [Thread-122361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:23.064 [DEBUG] [Thread-122361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:23.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:23.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:47:23.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:47:23.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:47:23.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:23.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:47:23.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:23.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.365711 -999.00  +17.60   3.13     43   +5.20 1 1 1 1 1   888    0 14.08 68.54 ----- 3.2 3.1 133.4 4.9 26.9 -28.7 25.2 -24.9 24.1 -25.3 25.6 -25.4
2025-09-28T10:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:47:23.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.365711
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:47:23.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:47:14', tmtdew=13.02, humidity=41.83, cloud=0.0, wind=7.69, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:46:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:47:23.089 [DEBUG] [Thread-122361] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:23.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-28T10:47:23.183 [DEBUG] [Thread-122364] [transport.py] [_log()] starting thread (client mode): 0x2e34a620
2025-09-28T10:47:23.183 [DEBUG] [Thread-122364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:23.198 [DEBUG] [Thread-122364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:47:23.198 [INFO] [Thread-122364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:47:23.206 [DEBUG] [Thread-122364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:23.206 [DEBUG] [Thread-122364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:47:23.206 [DEBUG] [Thread-122364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:23.206 [DEBUG] [Thread-122364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] Compression: none
2025-09-28T10:47:23.207 [DEBUG] [Thread-122364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:23.266 [DEBUG] [Thread-122364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:23.266 [DEBUG] [Thread-122364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:23.266 [DEBUG] [Thread-122364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:47:23.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:47:23.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:23.322 [DEBUG] [Thread-122364] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:23.322 [DEBUG] [Thread-122364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:23.323 [DEBUG] [Thread-122364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:23.323 [DEBUG] [Thread-122364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:47:23.323 [DEBUG] [Thread-122364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:23.342 [INFO] [Thread-122364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:23.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-28T10:47:23.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:23.660 [DEBUG] [Thread-122366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:24.309 [DEBUG] [Thread-122364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:24.309 [DEBUG] [Thread-122364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:24.358 [DEBUG] [Thread-122364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:24.358 [DEBUG] [Thread-122364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:24.367 [DEBUG] [Thread-122364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:24.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47: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')
2025-09-28T10:47: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') -> 00000000
2025-09-28T10:47:24.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:24.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:24.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:24.403 [DEBUG] [Thread-122364] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:31.826 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:31.827 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:34.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:47:34.406 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:47:34.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:47:34.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 47, 14), 13.02, 41.83, 0.0, 7.69, 16.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:47:34.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:47:14
2025-09-28T10:47:35.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:47:35.254 [DEBUG] [Thread-122367] [transport.py] [_log()] starting thread (client mode): 0x30ddded0
2025-09-28T10:47:35.254 [DEBUG] [Thread-122367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:35.275 [DEBUG] [Thread-122367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:47:35.275 [INFO] [Thread-122367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:35.278 [DEBUG] [Thread-122367] [transport.py] [_log()] Compression: none
2025-09-28T10:47:35.279 [DEBUG] [Thread-122367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:35.296 [DEBUG] [Thread-122367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:35.296 [DEBUG] [Thread-122367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:35.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:47:35.297 [DEBUG] [Thread-122367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:47:35.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:35.299 [DEBUG] [Thread-122367] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:35.299 [DEBUG] [Thread-122367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:35.300 [DEBUG] [Thread-122367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:35.300 [DEBUG] [Thread-122367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:47:35.300 [DEBUG] [Thread-122367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:35.314 [INFO] [Thread-122367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:35.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:35.955 [DEBUG] [Thread-122367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:35.956 [DEBUG] [Thread-122367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:35.956 [DEBUG] [Thread-122367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:47:35.996 [DEBUG] [Thread-122367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:35.996 [DEBUG] [Thread-122367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:35.999 [DEBUG] [Thread-122367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:36.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:36.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:47:36.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:47:36.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:47:36.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:36.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:47:36.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:36.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:47:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.366058 -999.00  +17.90   3.47     43   +5.30 1 1 1 1 1   888    0 14.09 61.68 ----- 3.6 3.5 137.6 4.9 26.9 -27.1 25.3 -26.4 24.3 -25.2 25.6 -27.3
2025-09-28T10:47:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:47:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:47:36.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.366058
2025-09-28T10:47:36.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:47:36.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:47:36.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:47:36.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:47:36.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:47:36.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:47:14', tmtdew=13.02, humidity=41.83, cloud=0.0, wind=7.69, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:47:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:47:36.023 [DEBUG] [Thread-122367] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:36.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-28T10:47:36.118 [DEBUG] [Thread-122370] [transport.py] [_log()] starting thread (client mode): 0x2e3fa5c0
2025-09-28T10:47:36.118 [DEBUG] [Thread-122370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:36.133 [DEBUG] [Thread-122370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:47:36.133 [INFO] [Thread-122370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:47:36.140 [DEBUG] [Thread-122370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:36.140 [DEBUG] [Thread-122370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:47:36.140 [DEBUG] [Thread-122370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] Compression: none
2025-09-28T10:47:36.141 [DEBUG] [Thread-122370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:36.199 [DEBUG] [Thread-122370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:36.200 [DEBUG] [Thread-122370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:36.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:47:36.201 [DEBUG] [Thread-122370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:47:36.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:36.255 [DEBUG] [Thread-122370] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:36.255 [DEBUG] [Thread-122370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:36.255 [DEBUG] [Thread-122370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:36.255 [DEBUG] [Thread-122370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:47:36.255 [DEBUG] [Thread-122370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:36.269 [INFO] [Thread-122370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:36.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-28T10:47:36.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:37.256 [DEBUG] [Thread-122370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:37.256 [DEBUG] [Thread-122370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:37.304 [DEBUG] [Thread-122370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:37.304 [DEBUG] [Thread-122370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:37.313 [DEBUG] [Thread-122370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:37.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:37.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:47:37.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-28T10:47:37.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:37.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:37.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:37.346 [DEBUG] [Thread-122370] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:38.694 [DEBUG] [Thread-122372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:47:47.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:47:47.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:47:47.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-28T10:47:47.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 47, 14), 13.02, 41.83, 0.0, 7.69, 16.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:47:47.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:47:14
2025-09-28T10:47:48.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:47:48.244 [DEBUG] [Thread-122373] [transport.py] [_log()] starting thread (client mode): 0x2b988af0
2025-09-28T10:47:48.244 [DEBUG] [Thread-122373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:48.264 [DEBUG] [Thread-122373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:47:48.264 [INFO] [Thread-122373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:48.267 [DEBUG] [Thread-122373] [transport.py] [_log()] Compression: none
2025-09-28T10:47:48.268 [DEBUG] [Thread-122373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:48.282 [DEBUG] [Thread-122373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:48.282 [DEBUG] [Thread-122373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:48.282 [DEBUG] [Thread-122373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:47:48.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:47:48.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:48.283 [DEBUG] [Thread-122373] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:48.283 [DEBUG] [Thread-122373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:48.283 [DEBUG] [Thread-122373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:48.283 [DEBUG] [Thread-122373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:47:48.283 [DEBUG] [Thread-122373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:48.298 [INFO] [Thread-122373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:48.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:48.922 [DEBUG] [Thread-122373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:48.922 [DEBUG] [Thread-122373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:48.922 [DEBUG] [Thread-122373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:47:48.963 [DEBUG] [Thread-122373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:48.963 [DEBUG] [Thread-122373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:48.965 [DEBUG] [Thread-122373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:48.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:48.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:47:48.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:47:48.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:47:48.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:48.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:47:48.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.366058 -999.00  +17.90   3.47     43   +5.30 1 1 1 1 1   888    0 14.09 61.68 ----- 3.6 3.5 137.6 4.9 26.9 -27.1 25.3 -26.4 24.3 -25.2 25.6 -27.3
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.366058
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:47:48.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:47:14', tmtdew=13.02, humidity=41.83, cloud=0.0, wind=7.69, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:47:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:47:48.977 [DEBUG] [Thread-122373] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:49.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-28T10:47:49.060 [DEBUG] [Thread-122376] [transport.py] [_log()] starting thread (client mode): 0x2b946350
2025-09-28T10:47:49.060 [DEBUG] [Thread-122376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:47:49.075 [DEBUG] [Thread-122376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:47:49.075 [INFO] [Thread-122376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:47:49.083 [DEBUG] [Thread-122376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] client lang: <none>
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] server lang: <none>
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] kex follows: False
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] Compression: none
2025-09-28T10:47:49.084 [DEBUG] [Thread-122376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:47:49.141 [DEBUG] [Thread-122376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:47:49.141 [DEBUG] [Thread-122376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:47:49.142 [DEBUG] [Thread-122376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:47:49.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:47:49.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:47:49.197 [DEBUG] [Thread-122376] [transport.py] [_log()] userauth is OK
2025-09-28T10:47:49.197 [DEBUG] [Thread-122376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:47:49.197 [DEBUG] [Thread-122376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:47:49.197 [DEBUG] [Thread-122376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:47:49.197 [DEBUG] [Thread-122376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:47:49.216 [INFO] [Thread-122376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:47:49.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-28T10:47:49.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:47:50.212 [DEBUG] [Thread-122376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:47:50.212 [DEBUG] [Thread-122376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:47:50.260 [DEBUG] [Thread-122376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:47:50.260 [DEBUG] [Thread-122376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:47:50.269 [DEBUG] [Thread-122376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:47:50.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:47:50.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-28T10:47:50.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-28T10:47:50.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:47:50.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:47:50.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:47:50.304 [DEBUG] [Thread-122376] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:47:53.736 [DEBUG] [Thread-122378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:00.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:48:00.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:48:00.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-28T10:48:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 47, 46), 13.37, 41.04, 0.0, 8.54, 16.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:48:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:47:46
2025-09-28T10:48:01.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:48:01.169 [DEBUG] [Thread-122379] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T10:48:01.169 [DEBUG] [Thread-122379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:48:01.188 [DEBUG] [Thread-122379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:48:01.188 [INFO] [Thread-122379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:48:01.190 [DEBUG] [Thread-122379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] client lang: <none>
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] server lang: <none>
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] kex follows: False
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] Compression: none
2025-09-28T10:48:01.191 [DEBUG] [Thread-122379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:48:01.202 [DEBUG] [Thread-122379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:48:01.203 [DEBUG] [Thread-122379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:48:01.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:48:01.204 [DEBUG] [Thread-122379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:48:01.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:48:01.206 [DEBUG] [Thread-122379] [transport.py] [_log()] userauth is OK
2025-09-28T10:48:01.206 [DEBUG] [Thread-122379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:48:01.206 [DEBUG] [Thread-122379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:48:01.206 [DEBUG] [Thread-122379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:48:01.207 [DEBUG] [Thread-122379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:48:01.228 [INFO] [Thread-122379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:48:01.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:48:01.837 [DEBUG] [Thread-122379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:48:01.837 [DEBUG] [Thread-122379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:48:01.837 [DEBUG] [Thread-122379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:48:01.878 [DEBUG] [Thread-122379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:48:01.878 [DEBUG] [Thread-122379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:48:01.880 [DEBUG] [Thread-122379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:48:01.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:48:01.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:48:01.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:48:01.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:48:01.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:48:01.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:48:01.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.366058 -999.00  +17.90   3.47     43   +5.30 1 1 1 1 1   888    0 14.09 61.68 ----- 3.6 3.5 137.6 4.9 26.9 -27.1 25.3 -26.4 24.3 -25.2 25.6 -27.3
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:48:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.366058
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:48:01.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:47:46', tmtdew=13.37, humidity=41.04, cloud=0.0, wind=8.54, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:47:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:48:01.900 [DEBUG] [Thread-122379] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:48:01.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-28T10:48:01.984 [DEBUG] [Thread-122382] [transport.py] [_log()] starting thread (client mode): 0x2b9895a0
2025-09-28T10:48:01.984 [DEBUG] [Thread-122382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:48:01.999 [DEBUG] [Thread-122382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:48:01.999 [INFO] [Thread-122382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:48:02.007 [DEBUG] [Thread-122382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:48:02.007 [DEBUG] [Thread-122382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:48:02.007 [DEBUG] [Thread-122382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:48:02.007 [DEBUG] [Thread-122382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:02.007 [DEBUG] [Thread-122382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] client lang: <none>
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] server lang: <none>
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] kex follows: False
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] Compression: none
2025-09-28T10:48:02.008 [DEBUG] [Thread-122382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:48:02.066 [DEBUG] [Thread-122382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:48:02.066 [DEBUG] [Thread-122382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:48:02.067 [DEBUG] [Thread-122382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:48:02.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:48:02.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:48:02.122 [DEBUG] [Thread-122382] [transport.py] [_log()] userauth is OK
2025-09-28T10:48:02.122 [DEBUG] [Thread-122382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:48:02.122 [DEBUG] [Thread-122382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:48:02.122 [DEBUG] [Thread-122382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:48:02.123 [DEBUG] [Thread-122382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:48:02.141 [INFO] [Thread-122382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:48:02.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-28T10:48:02.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:48:03.157 [DEBUG] [Thread-122382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:48:03.157 [DEBUG] [Thread-122382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:48:03.205 [DEBUG] [Thread-122382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:48:03.205 [DEBUG] [Thread-122382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:48:03.214 [DEBUG] [Thread-122382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:48:03.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:48:03.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-28T10:48:03.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-28T10:48:03.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:48:03.241 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:48:03.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:48:03.249 [DEBUG] [Thread-122382] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:48:03.959 [DEBUG] [Thread-122384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:08.764 [DEBUG] [Thread-122385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:13.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:48:13.252 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:48:13.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:48:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 47, 46), 13.37, 41.04, 0.0, 8.54, 16.53, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:48:13.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:47:46
2025-09-28T10:48:13.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:48:14.112 [DEBUG] [Thread-122386] [transport.py] [_log()] starting thread (client mode): 0x2b98b4f0
2025-09-28T10:48:14.112 [DEBUG] [Thread-122386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:48:14.133 [DEBUG] [Thread-122386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:48:14.133 [INFO] [Thread-122386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] client lang: <none>
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] server lang: <none>
2025-09-28T10:48:14.136 [DEBUG] [Thread-122386] [transport.py] [_log()] kex follows: False
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] Compression: none
2025-09-28T10:48:14.137 [DEBUG] [Thread-122386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:48:14.150 [DEBUG] [Thread-122386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:48:14.150 [DEBUG] [Thread-122386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:48:14.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:48:14.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] userauth is OK
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:48:14.151 [DEBUG] [Thread-122386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:48:14.160 [INFO] [Thread-122386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:48:14.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:48:14.781 [DEBUG] [Thread-122386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:48:14.782 [DEBUG] [Thread-122386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:48:14.782 [DEBUG] [Thread-122386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:48:14.822 [DEBUG] [Thread-122386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:48:14.823 [DEBUG] [Thread-122386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:48:14.826 [DEBUG] [Thread-122386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:48:14.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:48:14.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:48:14.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:48:14.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:48:14.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:48:14.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:48:14.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.366405 -999.00  +17.90  12.70     43   +5.20 1 1 1 1 1   888    0 13.96 60.49 ----- 8.9 12.7 151.0 16.2 27.1 -26.5 25.5 -25.4 24.4 -25.2 25.8 -26.2
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:48:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.366405
2025-09-28T10:48:14.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:48:14.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:48:14.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:48:14.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:48:14.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:48:14.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:47:46', tmtdew=13.37, humidity=41.04, cloud=0.0, wind=8.54, temperature=16.53, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:47:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:48:14.849 [DEBUG] [Thread-122386] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:48:14.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-28T10:48:14.950 [DEBUG] [Thread-122389] [transport.py] [_log()] starting thread (client mode): 0x2e362830
2025-09-28T10:48:14.950 [DEBUG] [Thread-122389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:48:14.966 [DEBUG] [Thread-122389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:48:14.966 [INFO] [Thread-122389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] client lang: <none>
2025-09-28T10:48:14.974 [DEBUG] [Thread-122389] [transport.py] [_log()] server lang: <none>
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] kex follows: False
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] Compression: none
2025-09-28T10:48:14.975 [DEBUG] [Thread-122389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:48:15.031 [DEBUG] [Thread-122389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:48:15.032 [DEBUG] [Thread-122389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:48:15.033 [DEBUG] [Thread-122389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:48:15.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:48:15.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:48:15.087 [DEBUG] [Thread-122389] [transport.py] [_log()] userauth is OK
2025-09-28T10:48:15.088 [DEBUG] [Thread-122389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:48:15.088 [DEBUG] [Thread-122389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:48:15.088 [DEBUG] [Thread-122389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:48:15.088 [DEBUG] [Thread-122389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:48:15.107 [INFO] [Thread-122389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:48:15.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-28T10:48:15.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:48:16.131 [DEBUG] [Thread-122389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:48:16.132 [DEBUG] [Thread-122389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:48:16.179 [DEBUG] [Thread-122389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:48:16.179 [DEBUG] [Thread-122389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:48:16.189 [DEBUG] [Thread-122389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:48:16.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:48:16.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-28T10:48:16.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-28T10:48:16.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:48:16.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:48:16.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:48:16.224 [DEBUG] [Thread-122389] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:48:23.807 [DEBUG] [Thread-122391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:26.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:48:26.226 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:48: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-28T10:48:26.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 48, 18), 13.39, 41.01, 0.0, 7.99, 16.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:48:26.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:48:18
2025-09-28T10:48:26.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:48:27.063 [DEBUG] [Thread-122392] [transport.py] [_log()] starting thread (client mode): 0x2b945150
2025-09-28T10:48:27.063 [DEBUG] [Thread-122392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:48:27.084 [DEBUG] [Thread-122392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:48:27.084 [INFO] [Thread-122392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] client lang: <none>
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] server lang: <none>
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] kex follows: False
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] Compression: none
2025-09-28T10:48:27.086 [DEBUG] [Thread-122392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:48:27.094 [DEBUG] [Thread-122392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:48:27.094 [DEBUG] [Thread-122392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:48:27.095 [DEBUG] [Thread-122392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:48:27.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:48:27.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:48:27.096 [DEBUG] [Thread-122392] [transport.py] [_log()] userauth is OK
2025-09-28T10:48:27.096 [DEBUG] [Thread-122392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:48:27.096 [DEBUG] [Thread-122392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:48:27.096 [DEBUG] [Thread-122392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:48:27.097 [DEBUG] [Thread-122392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:48:27.121 [INFO] [Thread-122392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:48:27.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:48:27.750 [DEBUG] [Thread-122392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:48:27.751 [DEBUG] [Thread-122392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:48:27.751 [DEBUG] [Thread-122392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:48:27.791 [DEBUG] [Thread-122392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:48:27.791 [DEBUG] [Thread-122392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:48:27.794 [DEBUG] [Thread-122392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:48:27.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:48:27.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:48:27.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:48:27.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:48:27.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:48:27.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:48:27.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:48:27.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:48:27.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:48:27.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.366405 -999.00  +17.90  12.70     43   +5.20 1 1 1 1 1   888    0 13.96 60.49 ----- 8.9 12.7 151.0 16.2 27.1 -26.5 25.5 -25.4 24.4 -25.2 25.8 -26.2
2025-09-28T10:48:27.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:48:27.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:48:27.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.366405
2025-09-28T10:48:27.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:48:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:48:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:48:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:48:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:48:27.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:48:18', tmtdew=13.39, humidity=41.01, cloud=0.0, wind=7.99, temperature=16.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:47:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:48:27.822 [DEBUG] [Thread-122392] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:48:27.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-28T10:48:31.968 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:31.969 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:38.851 [DEBUG] [Thread-122395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:48:53.901 [DEBUG] [Thread-122396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:04.027 [DEBUG] [Thread-122397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:08.932 [DEBUG] [Thread-122398 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:23.962 [DEBUG] [Thread-122399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:32.111 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:32.111 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:38.994 [DEBUG] [Thread-122400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:49:54.023 [DEBUG] [Thread-122401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:04.081 [DEBUG] [Thread-122402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:09.051 [DEBUG] [Thread-122403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:24.089 [DEBUG] [Thread-122404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:32.252 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:32.253 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50:39.117 [DEBUG] [Thread-122405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:50: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-28T10:50:50.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:50:50.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:50:50.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-28T10:50:51.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 50, 26), 13.57, 40.16, 0.0, 11.89, 16.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:50:51.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:50:26
2025-09-28T10:50:51.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:50:51.319 [DEBUG] [Thread-122406] [transport.py] [_log()] starting thread (client mode): 0x2e3fb640
2025-09-28T10:50:51.319 [DEBUG] [Thread-122406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:50:51.340 [DEBUG] [Thread-122406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:50:51.340 [INFO] [Thread-122406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:50:51.342 [DEBUG] [Thread-122406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] client lang: <none>
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] server lang: <none>
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] kex follows: False
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] Compression: none
2025-09-28T10:50:51.343 [DEBUG] [Thread-122406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:50:51.361 [DEBUG] [Thread-122406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:50:51.362 [DEBUG] [Thread-122406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:50:51.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:50:51.363 [DEBUG] [Thread-122406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:50:51.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:50:51.365 [DEBUG] [Thread-122406] [transport.py] [_log()] userauth is OK
2025-09-28T10:50:51.365 [DEBUG] [Thread-122406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:50:51.365 [DEBUG] [Thread-122406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:50:51.365 [DEBUG] [Thread-122406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:50:51.365 [DEBUG] [Thread-122406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:50:51.389 [INFO] [Thread-122406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:50:51.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:50:52.050 [DEBUG] [Thread-122406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:50:52.051 [DEBUG] [Thread-122406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:50:52.051 [DEBUG] [Thread-122406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:50:52.091 [DEBUG] [Thread-122406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:50:52.092 [DEBUG] [Thread-122406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:50:52.095 [DEBUG] [Thread-122406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:50:52.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:50:52.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:50:52.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:50:52.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:50:52.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:50:52.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:50:52.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368141 -999.00  +18.10  14.25     42   +5.20 1 1 1 1 1   888    0 13.96 53.78 ----- 9.9 14.2 189.4 18.3 27.2 -28.4 25.4 -32.0 24.6 -26.2 25.9 -27.8
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:50:52.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368141
2025-09-28T10:50:52.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:50:52.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:50:52.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:50:52.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:50:52.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:50:52.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:50:26', tmtdew=13.57, humidity=40.16, cloud=0.0, wind=11.89, temperature=16.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:50:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:50:52.122 [DEBUG] [Thread-122406] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:50:52.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-28T10:50:52.221 [DEBUG] [Thread-122409] [transport.py] [_log()] starting thread (client mode): 0x2e3dcbb0
2025-09-28T10:50:52.221 [DEBUG] [Thread-122409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:50:52.236 [DEBUG] [Thread-122409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:50:52.236 [INFO] [Thread-122409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:50:52.243 [DEBUG] [Thread-122409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:50:52.243 [DEBUG] [Thread-122409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] client lang: <none>
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] server lang: <none>
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] kex follows: False
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] Compression: none
2025-09-28T10:50:52.244 [DEBUG] [Thread-122409] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:50:52.301 [DEBUG] [Thread-122409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:50:52.301 [DEBUG] [Thread-122409] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:50:52.302 [DEBUG] [Thread-122409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:50:52.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:50:52.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:50:52.357 [DEBUG] [Thread-122409] [transport.py] [_log()] userauth is OK
2025-09-28T10:50:52.357 [DEBUG] [Thread-122409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:50:52.358 [DEBUG] [Thread-122409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:50:52.358 [DEBUG] [Thread-122409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:50:52.358 [DEBUG] [Thread-122409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:50:52.383 [INFO] [Thread-122409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:50:52.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-28T10:50:52.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:50:53.330 [DEBUG] [Thread-122409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:50:53.330 [DEBUG] [Thread-122409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:50:53.378 [DEBUG] [Thread-122409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:50:53.378 [DEBUG] [Thread-122409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:50:53.386 [DEBUG] [Thread-122409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:50:53.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:50:53.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-28T10:50:53.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-28T10:50:53.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:50:53.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:50:53.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:50:53.417 [DEBUG] [Thread-122409] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:50:54.145 [DEBUG] [Thread-122411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:03.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:51:03.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:51:03.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-28T10:51:04.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 50, 58), 13.77, 39.66, 0.0, 10.52, 16.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:51:04.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:50:58
2025-09-28T10:51:04.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:51:04.127 [DEBUG] [Thread-122412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:04.275 [DEBUG] [Thread-122413] [transport.py] [_log()] starting thread (client mode): 0x30ddfa30
2025-09-28T10:51:04.275 [DEBUG] [Thread-122413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:04.295 [DEBUG] [Thread-122413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:51:04.296 [INFO] [Thread-122413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] Compression: none
2025-09-28T10:51:04.299 [DEBUG] [Thread-122413] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:04.316 [DEBUG] [Thread-122413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:04.316 [DEBUG] [Thread-122413] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:04.317 [DEBUG] [Thread-122413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:51:04.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:51:04.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:04.318 [DEBUG] [Thread-122413] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:04.318 [DEBUG] [Thread-122413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:04.318 [DEBUG] [Thread-122413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:04.319 [DEBUG] [Thread-122413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:51:04.319 [DEBUG] [Thread-122413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:04.332 [INFO] [Thread-122413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:04.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:04.915 [DEBUG] [Thread-122413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:04.915 [DEBUG] [Thread-122413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:04.915 [DEBUG] [Thread-122413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:51:04.955 [DEBUG] [Thread-122413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:04.956 [DEBUG] [Thread-122413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:04.958 [DEBUG] [Thread-122413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:04.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:04.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:51:04.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:51:04.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:51:04.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:04.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:51:04.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:04.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:51:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368488 -999.00  +18.00  12.31     43   +5.20 1 1 1 1 1   888    0 14.08 54.86 ----- 10.6 12.3 186.4 16.2 27.1 -27.1 25.2 -29.0 24.6 -26.2 25.9 -27.8
2025-09-28T10:51:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:51:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:51:04.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368488
2025-09-28T10:51:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:51:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:51:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:51:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:51:04.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:51:04.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:50:58', tmtdew=13.77, humidity=39.66, cloud=0.0, wind=10.52, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:50:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:51:04.987 [DEBUG] [Thread-122413] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:05.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-28T10:51:05.081 [DEBUG] [Thread-122416] [transport.py] [_log()] starting thread (client mode): 0x2b9de410
2025-09-28T10:51:05.081 [DEBUG] [Thread-122416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:05.095 [DEBUG] [Thread-122416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:51:05.095 [INFO] [Thread-122416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:05.103 [DEBUG] [Thread-122416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:05.104 [DEBUG] [Thread-122416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:05.105 [DEBUG] [Thread-122416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:05.105 [DEBUG] [Thread-122416] [transport.py] [_log()] Compression: none
2025-09-28T10:51:05.105 [DEBUG] [Thread-122416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:05.162 [DEBUG] [Thread-122416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:05.163 [DEBUG] [Thread-122416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:05.164 [DEBUG] [Thread-122416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:51:05.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:51:05.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:05.221 [DEBUG] [Thread-122416] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:05.221 [DEBUG] [Thread-122416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:05.221 [DEBUG] [Thread-122416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:05.222 [DEBUG] [Thread-122416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:51:05.222 [DEBUG] [Thread-122416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:05.244 [INFO] [Thread-122416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:05.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-28T10:51:05.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:06.187 [DEBUG] [Thread-122416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:06.187 [DEBUG] [Thread-122416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:06.235 [DEBUG] [Thread-122416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:06.235 [DEBUG] [Thread-122416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:06.244 [DEBUG] [Thread-122416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:06.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:06.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-28T10:51:06.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-28T10:51:06.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:06.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:06.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:06.279 [DEBUG] [Thread-122416] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:09.189 [DEBUG] [Thread-122418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:16.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:51:16.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:51:16.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-28T10:51:16.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 50, 58), 13.77, 39.66, 0.0, 10.52, 16.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:51:16.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:50:58
2025-09-28T10:51:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:51:17.138 [DEBUG] [Thread-122419] [transport.py] [_log()] starting thread (client mode): 0x2b9dffa0
2025-09-28T10:51:17.138 [DEBUG] [Thread-122419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:17.158 [DEBUG] [Thread-122419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:51:17.158 [INFO] [Thread-122419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] Compression: none
2025-09-28T10:51:17.162 [DEBUG] [Thread-122419] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:17.178 [DEBUG] [Thread-122419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:17.179 [DEBUG] [Thread-122419] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:17.179 [DEBUG] [Thread-122419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:51:17.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:51:17.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:17.181 [DEBUG] [Thread-122419] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:17.181 [DEBUG] [Thread-122419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:17.181 [DEBUG] [Thread-122419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:17.181 [DEBUG] [Thread-122419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:51:17.181 [DEBUG] [Thread-122419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:17.205 [INFO] [Thread-122419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:17.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:17.843 [DEBUG] [Thread-122419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:17.844 [DEBUG] [Thread-122419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:17.844 [DEBUG] [Thread-122419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:51:17.884 [DEBUG] [Thread-122419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:17.884 [DEBUG] [Thread-122419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:17.887 [DEBUG] [Thread-122419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:17.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:17.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:51:17.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:51:17.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:51:17.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:17.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:51:17.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:17.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:17.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:51:17.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368488 -999.00  +18.00  12.31     43   +5.20 1 1 1 1 1   888    0 14.08 54.86 ----- 10.6 12.3 186.4 16.2 27.1 -27.1 25.2 -29.0 24.6 -26.2 25.9 -27.8
2025-09-28T10:51:17.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:51:17.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:51:17.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368488
2025-09-28T10:51:17.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:51:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:51:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:51:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:51:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:51:17.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:50:58', tmtdew=13.77, humidity=39.66, cloud=0.0, wind=10.52, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:50:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:51:17.911 [DEBUG] [Thread-122419] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:17.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-28T10:51:18.007 [DEBUG] [Thread-122422] [transport.py] [_log()] starting thread (client mode): 0x2b988af0
2025-09-28T10:51:18.007 [DEBUG] [Thread-122422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:18.028 [DEBUG] [Thread-122422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:51:18.028 [INFO] [Thread-122422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:51:18.037 [DEBUG] [Thread-122422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:18.037 [DEBUG] [Thread-122422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:51:18.037 [DEBUG] [Thread-122422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:18.037 [DEBUG] [Thread-122422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] Compression: none
2025-09-28T10:51:18.038 [DEBUG] [Thread-122422] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:18.094 [DEBUG] [Thread-122422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:18.095 [DEBUG] [Thread-122422] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:18.095 [DEBUG] [Thread-122422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:51:18.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:51:18.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:18.151 [DEBUG] [Thread-122422] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:18.151 [DEBUG] [Thread-122422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:18.151 [DEBUG] [Thread-122422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:18.151 [DEBUG] [Thread-122422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:51:18.151 [DEBUG] [Thread-122422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:18.171 [INFO] [Thread-122422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:18.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:51:18.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:19.173 [DEBUG] [Thread-122422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:19.174 [DEBUG] [Thread-122422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:19.222 [DEBUG] [Thread-122422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:19.222 [DEBUG] [Thread-122422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:19.231 [DEBUG] [Thread-122422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:19.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:19.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-28T10:51:19.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-28T10:51:19.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:19.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:19.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:19.265 [DEBUG] [Thread-122422] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:24.226 [DEBUG] [Thread-122424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:29.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:51:29.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:51:29.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-28T10:51:29.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 50, 58), 13.77, 39.66, 0.0, 10.52, 16.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:51:29.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:50:58
2025-09-28T10:51:29.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:51:30.107 [DEBUG] [Thread-122425] [transport.py] [_log()] starting thread (client mode): 0x2b9df370
2025-09-28T10:51:30.107 [DEBUG] [Thread-122425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:30.126 [DEBUG] [Thread-122425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:51:30.126 [INFO] [Thread-122425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:30.128 [DEBUG] [Thread-122425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:30.129 [DEBUG] [Thread-122425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:30.129 [DEBUG] [Thread-122425] [transport.py] [_log()] Compression: none
2025-09-28T10:51:30.129 [DEBUG] [Thread-122425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:30.147 [DEBUG] [Thread-122425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:30.148 [DEBUG] [Thread-122425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:30.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:51:30.149 [DEBUG] [Thread-122425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:51:30.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:30.151 [DEBUG] [Thread-122425] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:30.151 [DEBUG] [Thread-122425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:30.151 [DEBUG] [Thread-122425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:30.151 [DEBUG] [Thread-122425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:51:30.151 [DEBUG] [Thread-122425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:30.176 [INFO] [Thread-122425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:30.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:30.790 [DEBUG] [Thread-122425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:30.790 [DEBUG] [Thread-122425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:30.790 [DEBUG] [Thread-122425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:51:30.832 [DEBUG] [Thread-122425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:30.832 [DEBUG] [Thread-122425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:30.833 [DEBUG] [Thread-122425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:30.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:30.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:51:30.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:51:30.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:51:30.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:30.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:51:30.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368488 -999.00  +18.00  12.31     43   +5.20 1 1 1 1 1   888    0 14.08 54.86 ----- 10.6 12.3 186.4 16.2 27.1 -27.1 25.2 -29.0 24.6 -26.2 25.9 -27.8
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368488
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:51:30.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:50:58', tmtdew=13.77, humidity=39.66, cloud=0.0, wind=10.52, temperature=16.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:50:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:51:30.852 [DEBUG] [Thread-122425] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:30.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-28T10:51:30.936 [DEBUG] [Thread-122428] [transport.py] [_log()] starting thread (client mode): 0x30dde2c0
2025-09-28T10:51:30.936 [DEBUG] [Thread-122428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:30.951 [DEBUG] [Thread-122428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:51:30.951 [INFO] [Thread-122428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] Compression: none
2025-09-28T10:51:30.959 [DEBUG] [Thread-122428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:31.020 [DEBUG] [Thread-122428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:31.020 [DEBUG] [Thread-122428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:31.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:51:31.021 [DEBUG] [Thread-122428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:51:31.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:31.075 [DEBUG] [Thread-122428] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:31.076 [DEBUG] [Thread-122428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:31.076 [DEBUG] [Thread-122428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:31.076 [DEBUG] [Thread-122428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:51:31.076 [DEBUG] [Thread-122428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:31.094 [INFO] [Thread-122428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:31.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-28T10:51:31.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:32.059 [DEBUG] [Thread-122428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:32.060 [DEBUG] [Thread-122428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:32.108 [DEBUG] [Thread-122428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:32.108 [DEBUG] [Thread-122428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:32.116 [DEBUG] [Thread-122428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:32.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:32.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-28T10:51:32.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-28T10:51:32.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:32.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:32.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:32.147 [DEBUG] [Thread-122428] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:32.393 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:32.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:39.254 [DEBUG] [Thread-122430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:42.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:51:42.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:51:42.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:51:42.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 51, 30), 13.7, 39.88, 0.0, 9.04, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:51:42.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:51:30
2025-09-28T10:51:42.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:51:42.995 [DEBUG] [Thread-122431] [transport.py] [_log()] starting thread (client mode): 0x2e34bfa0
2025-09-28T10:51:42.996 [DEBUG] [Thread-122431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:43.016 [DEBUG] [Thread-122431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:51:43.016 [INFO] [Thread-122431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:43.019 [DEBUG] [Thread-122431] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] Compression: none
2025-09-28T10:51:43.020 [DEBUG] [Thread-122431] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:43.035 [DEBUG] [Thread-122431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:43.035 [DEBUG] [Thread-122431] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:43.036 [DEBUG] [Thread-122431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:51:43.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:51:43.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:43.038 [DEBUG] [Thread-122431] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:43.038 [DEBUG] [Thread-122431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:43.038 [DEBUG] [Thread-122431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:43.038 [DEBUG] [Thread-122431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:51:43.038 [DEBUG] [Thread-122431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:43.064 [INFO] [Thread-122431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:43.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:43.706 [DEBUG] [Thread-122431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:43.707 [DEBUG] [Thread-122431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:43.707 [DEBUG] [Thread-122431] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:51:43.747 [DEBUG] [Thread-122431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:43.747 [DEBUG] [Thread-122431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:43.750 [DEBUG] [Thread-122431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:43.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:43.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:51:43.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:51:43.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:51:43.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:43.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:51:43.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:43.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:43.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:51:43.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368836 -999.00  +17.90  10.10     43   +5.30 1 1 1 1 1   888    0 14.41 53.93 ----- 14.2 10.1 235.5 19.0 26.9 -28.6 25.0 -28.7 24.4 -27.0 25.7 -27.9
2025-09-28T10:51:43.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:51:43.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:51:43.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368836
2025-09-28T10:51:43.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:51:43.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:51:43.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:51:43.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:51:43.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:51:43.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:51:30', tmtdew=13.7, humidity=39.88, cloud=0.0, wind=9.04, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:51:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:51:43.777 [DEBUG] [Thread-122431] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:43.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-28T10:51:43.873 [DEBUG] [Thread-122434] [transport.py] [_log()] starting thread (client mode): 0x30ddd720
2025-09-28T10:51:43.873 [DEBUG] [Thread-122434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:43.889 [DEBUG] [Thread-122434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:51:43.889 [INFO] [Thread-122434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:51:43.896 [DEBUG] [Thread-122434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:43.896 [DEBUG] [Thread-122434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:51:43.896 [DEBUG] [Thread-122434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:43.896 [DEBUG] [Thread-122434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] Compression: none
2025-09-28T10:51:43.897 [DEBUG] [Thread-122434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:43.956 [DEBUG] [Thread-122434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:43.957 [DEBUG] [Thread-122434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:43.957 [DEBUG] [Thread-122434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:51:43.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:51:43.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:44.013 [DEBUG] [Thread-122434] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:44.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:44.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:44.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:51:44.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:44.033 [INFO] [Thread-122434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:44.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-28T10:51:44.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:45.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:45.013 [DEBUG] [Thread-122434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:45.060 [DEBUG] [Thread-122434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:45.060 [DEBUG] [Thread-122434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:45.069 [DEBUG] [Thread-122434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:45.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:45.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:51:45.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') -> 00000000
2025-09-28T10:51:45.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:45.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:45.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:45.103 [DEBUG] [Thread-122434] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:54.286 [DEBUG] [Thread-122436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:51:55.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:51:55.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:51:55.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:51:55.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 51, 30), 13.7, 39.88, 0.0, 9.04, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:51:55.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:51:30
2025-09-28T10:51:55.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:51:55.950 [DEBUG] [Thread-122437] [transport.py] [_log()] starting thread (client mode): 0x2b988280
2025-09-28T10:51:55.950 [DEBUG] [Thread-122437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:55.972 [DEBUG] [Thread-122437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:51:55.972 [INFO] [Thread-122437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] Compression: none
2025-09-28T10:51:55.976 [DEBUG] [Thread-122437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:55.990 [DEBUG] [Thread-122437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:55.990 [DEBUG] [Thread-122437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:55.991 [DEBUG] [Thread-122437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:51:55.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:51:55.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:55.992 [DEBUG] [Thread-122437] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:55.993 [DEBUG] [Thread-122437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:55.993 [DEBUG] [Thread-122437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:55.993 [DEBUG] [Thread-122437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:51:55.993 [DEBUG] [Thread-122437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:56.016 [INFO] [Thread-122437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:56.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:56.603 [DEBUG] [Thread-122437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:56.603 [DEBUG] [Thread-122437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:56.603 [DEBUG] [Thread-122437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:51:56.644 [DEBUG] [Thread-122437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:56.645 [DEBUG] [Thread-122437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:56.647 [DEBUG] [Thread-122437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:56.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:56.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:51:56.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:51:56.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:51:56.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:56.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:51:56.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:56.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:51:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.368836 -999.00  +17.90  10.10     43   +5.30 1 1 1 1 1   888    0 14.41 53.93 ----- 14.2 10.1 235.5 19.0 26.9 -28.6 25.0 -28.7 24.4 -27.0 25.7 -27.9
2025-09-28T10:51:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:51:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:51:56.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.368836
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:51:56.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:51:30', tmtdew=13.7, humidity=39.88, cloud=0.0, wind=9.04, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:51:07.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:51:56.672 [DEBUG] [Thread-122437] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:51:56.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-28T10:51:57.828 [DEBUG] [Thread-122440] [transport.py] [_log()] starting thread (client mode): 0x2b98ae30
2025-09-28T10:51:57.828 [DEBUG] [Thread-122440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:51:57.844 [DEBUG] [Thread-122440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:51:57.844 [INFO] [Thread-122440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] client lang: <none>
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] server lang: <none>
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] kex follows: False
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:51:57.852 [DEBUG] [Thread-122440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:51:57.853 [DEBUG] [Thread-122440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:51:57.853 [DEBUG] [Thread-122440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:51:57.853 [DEBUG] [Thread-122440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:51:57.853 [DEBUG] [Thread-122440] [transport.py] [_log()] Compression: none
2025-09-28T10:51:57.853 [DEBUG] [Thread-122440] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:51:57.910 [DEBUG] [Thread-122440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:51:57.911 [DEBUG] [Thread-122440] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:51:57.911 [DEBUG] [Thread-122440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:51:57.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:51:57.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:51:57.966 [DEBUG] [Thread-122440] [transport.py] [_log()] userauth is OK
2025-09-28T10:51:57.966 [DEBUG] [Thread-122440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:51:57.966 [DEBUG] [Thread-122440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:51:57.966 [DEBUG] [Thread-122440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:51:57.966 [DEBUG] [Thread-122440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:51:57.988 [INFO] [Thread-122440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:51:57.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:51:57.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:51:58.932 [DEBUG] [Thread-122440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:51:58.933 [DEBUG] [Thread-122440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:51:58.981 [DEBUG] [Thread-122440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:51:58.981 [DEBUG] [Thread-122440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:51:58.989 [DEBUG] [Thread-122440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:51:58.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:51:58.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-28T10:51:59.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-28T10:51:59.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:51:59.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:51:59.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:51:59.020 [DEBUG] [Thread-122440] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:04.188 [DEBUG] [Thread-122442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:09.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:52:09.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:52:09.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:52:09.330 [DEBUG] [Thread-122443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:09.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 52, 2), 13.87, 39.41, 0.0, 10.24, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:52:09.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:52:02
2025-09-28T10:52:09.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:52:09.865 [DEBUG] [Thread-122444] [transport.py] [_log()] starting thread (client mode): 0x2b96dc00
2025-09-28T10:52:09.865 [DEBUG] [Thread-122444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:09.885 [DEBUG] [Thread-122444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:52:09.885 [INFO] [Thread-122444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:09.888 [DEBUG] [Thread-122444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:09.889 [DEBUG] [Thread-122444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:09.889 [DEBUG] [Thread-122444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:09.889 [DEBUG] [Thread-122444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:09.889 [DEBUG] [Thread-122444] [transport.py] [_log()] Compression: none
2025-09-28T10:52:09.889 [DEBUG] [Thread-122444] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:09.907 [DEBUG] [Thread-122444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:09.907 [DEBUG] [Thread-122444] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:09.908 [DEBUG] [Thread-122444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:52:09.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:52:09.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:09.909 [DEBUG] [Thread-122444] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:09.910 [DEBUG] [Thread-122444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:09.910 [DEBUG] [Thread-122444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:09.910 [DEBUG] [Thread-122444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:52:09.910 [DEBUG] [Thread-122444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:09.927 [INFO] [Thread-122444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:09.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:10.545 [DEBUG] [Thread-122444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:10.546 [DEBUG] [Thread-122444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:10.546 [DEBUG] [Thread-122444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:52:10.587 [DEBUG] [Thread-122444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:10.587 [DEBUG] [Thread-122444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:10.590 [DEBUG] [Thread-122444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:10.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:10.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:52:10.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:52:10.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:52:10.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:10.613 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:52:10.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:10.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:10.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:52:10.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.369183 -999.00  +18.10  11.86     43   +5.40 1 1 1 1 1   888    0 13.73 44.29 ----- 10.7 11.9 191.8 17.6 26.8 -28.3 25.1 -25.7 24.4 -25.7 25.8 -26.6
2025-09-28T10:52:10.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:52:10.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:52:10.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.369183
2025-09-28T10:52:10.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:52:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:52:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:52:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:52:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:52:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:52:02', tmtdew=13.87, humidity=39.41, cloud=0.0, wind=10.24, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:51:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:52:10.616 [DEBUG] [Thread-122444] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:10.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-28T10:52:10.711 [DEBUG] [Thread-122447] [transport.py] [_log()] starting thread (client mode): 0x2e3c3550
2025-09-28T10:52:10.712 [DEBUG] [Thread-122447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:10.727 [DEBUG] [Thread-122447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:52:10.727 [INFO] [Thread-122447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:10.735 [DEBUG] [Thread-122447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:10.736 [DEBUG] [Thread-122447] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:10.737 [DEBUG] [Thread-122447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:10.737 [DEBUG] [Thread-122447] [transport.py] [_log()] Compression: none
2025-09-28T10:52:10.737 [DEBUG] [Thread-122447] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:10.795 [DEBUG] [Thread-122447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:10.796 [DEBUG] [Thread-122447] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:10.796 [DEBUG] [Thread-122447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:52:10.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:52:10.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:10.851 [DEBUG] [Thread-122447] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:10.851 [DEBUG] [Thread-122447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:10.851 [DEBUG] [Thread-122447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:10.852 [DEBUG] [Thread-122447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:52:10.852 [DEBUG] [Thread-122447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:10.875 [INFO] [Thread-122447] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:10.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-28T10:52:10.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:11.846 [DEBUG] [Thread-122447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:11.846 [DEBUG] [Thread-122447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:11.894 [DEBUG] [Thread-122447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:11.895 [DEBUG] [Thread-122447] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:11.903 [DEBUG] [Thread-122447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:11.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:11.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T10:52:11.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') -> 00000000
2025-09-28T10:52:11.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:11.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:11.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:11.938 [DEBUG] [Thread-122447] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:21.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:52:21.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:52:21.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-28T10:52:22.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 52, 2), 13.87, 39.41, 0.0, 10.24, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:52:22.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:52:02
2025-09-28T10:52:22.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:52:22.828 [DEBUG] [Thread-122449] [transport.py] [_log()] starting thread (client mode): 0x2b94ded0
2025-09-28T10:52:22.828 [DEBUG] [Thread-122449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:22.855 [DEBUG] [Thread-122449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:52:22.856 [INFO] [Thread-122449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] Compression: none
2025-09-28T10:52:22.859 [DEBUG] [Thread-122449] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:22.874 [DEBUG] [Thread-122449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:22.874 [DEBUG] [Thread-122449] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:22.874 [DEBUG] [Thread-122449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:52:22.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:52:22.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:22.875 [DEBUG] [Thread-122449] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:22.875 [DEBUG] [Thread-122449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:22.875 [DEBUG] [Thread-122449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:22.875 [DEBUG] [Thread-122449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:52:22.875 [DEBUG] [Thread-122449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:22.884 [INFO] [Thread-122449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:22.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:23.511 [DEBUG] [Thread-122449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:23.511 [DEBUG] [Thread-122449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:23.511 [DEBUG] [Thread-122449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:52:23.552 [DEBUG] [Thread-122449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:23.552 [DEBUG] [Thread-122449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:23.554 [DEBUG] [Thread-122449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:23.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:23.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:52:23.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:52:23.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:52:23.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:23.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:52:23.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.369183 -999.00  +18.10  11.86     43   +5.40 1 1 1 1 1   888    0 13.73 44.29 ----- 10.7 11.9 191.8 17.6 26.8 -28.3 25.1 -25.7 24.4 -25.7 25.8 -26.6
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.369183
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:52:23.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:52:02', tmtdew=13.87, humidity=39.41, cloud=0.0, wind=10.24, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:51:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:52:23.573 [DEBUG] [Thread-122449] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:23.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-28T10:52:23.657 [DEBUG] [Thread-122452] [transport.py] [_log()] starting thread (client mode): 0x2b9f2f80
2025-09-28T10:52:23.657 [DEBUG] [Thread-122452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:23.672 [DEBUG] [Thread-122452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:52:23.672 [INFO] [Thread-122452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:23.679 [DEBUG] [Thread-122452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:23.680 [DEBUG] [Thread-122452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:23.680 [DEBUG] [Thread-122452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:23.680 [DEBUG] [Thread-122452] [transport.py] [_log()] Compression: none
2025-09-28T10:52:23.680 [DEBUG] [Thread-122452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:23.734 [DEBUG] [Thread-122452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:23.734 [DEBUG] [Thread-122452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:23.734 [DEBUG] [Thread-122452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:52:23.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:52:23.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:23.797 [DEBUG] [Thread-122452] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:23.798 [DEBUG] [Thread-122452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:23.798 [DEBUG] [Thread-122452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:23.798 [DEBUG] [Thread-122452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:52:23.798 [DEBUG] [Thread-122452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:23.811 [INFO] [Thread-122452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:23.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:52:23.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:24.354 [DEBUG] [Thread-122454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:24.761 [DEBUG] [Thread-122452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:24.761 [DEBUG] [Thread-122452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:24.809 [DEBUG] [Thread-122452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:24.809 [DEBUG] [Thread-122452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:24.818 [DEBUG] [Thread-122452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:24.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:24.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-28T10:52:24.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-28T10:52:24.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:24.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:24.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:24.849 [DEBUG] [Thread-122452] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:32.536 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:32.537 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:34.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:52:34.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:52:34.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:52:35.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 52, 2), 13.87, 39.41, 0.0, 10.24, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:52:35.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:52:02
2025-09-28T10:52:35.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:52:35.743 [DEBUG] [Thread-122455] [transport.py] [_log()] starting thread (client mode): 0x2b9f32b0
2025-09-28T10:52:35.743 [DEBUG] [Thread-122455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:35.763 [DEBUG] [Thread-122455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:52:35.763 [INFO] [Thread-122455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] Compression: none
2025-09-28T10:52:35.766 [DEBUG] [Thread-122455] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:35.787 [DEBUG] [Thread-122455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:35.787 [DEBUG] [Thread-122455] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:35.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:52:35.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:52:35.788 [DEBUG] [Thread-122455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:35.804 [INFO] [Thread-122455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:35.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:36.393 [DEBUG] [Thread-122455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:36.393 [DEBUG] [Thread-122455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:36.394 [DEBUG] [Thread-122455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:52:36.434 [DEBUG] [Thread-122455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:36.434 [DEBUG] [Thread-122455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:36.437 [DEBUG] [Thread-122455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:36.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:36.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:52:36.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:52:36.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:52:36.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:36.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:52:36.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:36.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:36.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:52:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.369183 -999.00  +18.10  11.86     43   +5.40 1 1 1 1 1   888    0 13.73 44.29 ----- 10.7 11.9 191.8 17.6 26.8 -28.3 25.1 -25.7 24.4 -25.7 25.8 -26.6
2025-09-28T10:52:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:52:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:52:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.369183
2025-09-28T10:52:36.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:52:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:52:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:52:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:52:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:52:36.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:52:02', tmtdew=13.87, humidity=39.41, cloud=0.0, wind=10.24, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:51:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:52:36.461 [DEBUG] [Thread-122455] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:36.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-28T10:52:36.567 [DEBUG] [Thread-122458] [transport.py] [_log()] starting thread (client mode): 0x2b9f3a30
2025-09-28T10:52:36.567 [DEBUG] [Thread-122458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:36.583 [DEBUG] [Thread-122458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:52:36.583 [INFO] [Thread-122458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:36.591 [DEBUG] [Thread-122458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:36.592 [DEBUG] [Thread-122458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:36.592 [DEBUG] [Thread-122458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:36.592 [DEBUG] [Thread-122458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:36.592 [DEBUG] [Thread-122458] [transport.py] [_log()] Compression: none
2025-09-28T10:52:36.592 [DEBUG] [Thread-122458] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:36.648 [DEBUG] [Thread-122458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:36.648 [DEBUG] [Thread-122458] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:36.649 [DEBUG] [Thread-122458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:52:36.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:52:36.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:36.704 [DEBUG] [Thread-122458] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:36.704 [DEBUG] [Thread-122458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:36.704 [DEBUG] [Thread-122458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:36.705 [DEBUG] [Thread-122458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:52:36.705 [DEBUG] [Thread-122458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:36.723 [INFO] [Thread-122458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:36.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:52:36.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:37.708 [DEBUG] [Thread-122458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:37.708 [DEBUG] [Thread-122458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:37.757 [DEBUG] [Thread-122458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:37.757 [DEBUG] [Thread-122458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:37.766 [DEBUG] [Thread-122458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:37.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:37.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-28T10:52:37.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-28T10:52:37.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:37.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:37.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:37.800 [DEBUG] [Thread-122458] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:39.389 [DEBUG] [Thread-122460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:52:47.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:52:47.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:52:47.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-28T10:52:48.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 52, 33), 13.5, 40.61, 0.0, 7.54, 16.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:52:48.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:52:33
2025-09-28T10:52:48.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:52:48.641 [DEBUG] [Thread-122461] [transport.py] [_log()] starting thread (client mode): 0x2e362770
2025-09-28T10:52:48.641 [DEBUG] [Thread-122461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:48.660 [DEBUG] [Thread-122461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:52:48.660 [INFO] [Thread-122461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:48.663 [DEBUG] [Thread-122461] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] Compression: none
2025-09-28T10:52:48.664 [DEBUG] [Thread-122461] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:48.679 [DEBUG] [Thread-122461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:48.680 [DEBUG] [Thread-122461] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:48.681 [DEBUG] [Thread-122461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:52:48.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:52:48.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:48.682 [DEBUG] [Thread-122461] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:48.682 [DEBUG] [Thread-122461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:48.683 [DEBUG] [Thread-122461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:48.683 [DEBUG] [Thread-122461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:52:48.683 [DEBUG] [Thread-122461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:48.707 [INFO] [Thread-122461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:48.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:49.339 [DEBUG] [Thread-122461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:49.339 [DEBUG] [Thread-122461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:49.340 [DEBUG] [Thread-122461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:52:49.380 [DEBUG] [Thread-122461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:49.380 [DEBUG] [Thread-122461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:49.382 [DEBUG] [Thread-122461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:49.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:49.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:52:49.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:52:49.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:52:49.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:49.404 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:52:49.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.369530 -999.00  +18.20   7.38     42   +5.40 1 1 1 1 1   888    0 13.60 40.90 ----- 4.2 7.4 198.0 11.7 26.9 -27.0 25.2 -25.8 24.4 -25.7 -999.0 -999.0
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:52:49.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.369530
2025-09-28T10:52:49.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:52:49.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:52:49.407 [DEBUG] [Thread-122461] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:49.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:52:49.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:52:49.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:52:49.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:52:33', tmtdew=13.5, humidity=40.61, cloud=0.0, wind=7.54, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:52:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:52:49.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-28T10:52:49.501 [DEBUG] [Thread-122464] [transport.py] [_log()] starting thread (client mode): 0x2e3c3040
2025-09-28T10:52:49.501 [DEBUG] [Thread-122464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:52:49.517 [DEBUG] [Thread-122464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:52:49.517 [INFO] [Thread-122464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:52:49.525 [DEBUG] [Thread-122464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] client lang: <none>
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] server lang: <none>
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] kex follows: False
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:52:49.526 [DEBUG] [Thread-122464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:52:49.527 [DEBUG] [Thread-122464] [transport.py] [_log()] Compression: none
2025-09-28T10:52:49.527 [DEBUG] [Thread-122464] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:52:49.582 [DEBUG] [Thread-122464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:52:49.582 [DEBUG] [Thread-122464] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:52:49.583 [DEBUG] [Thread-122464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:52:49.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:52:49.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:52:49.637 [DEBUG] [Thread-122464] [transport.py] [_log()] userauth is OK
2025-09-28T10:52:49.637 [DEBUG] [Thread-122464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:52:49.638 [DEBUG] [Thread-122464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:52:49.638 [DEBUG] [Thread-122464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:52:49.638 [DEBUG] [Thread-122464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:52:49.657 [INFO] [Thread-122464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:52:49.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-28T10:52:49.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:52:50.659 [DEBUG] [Thread-122464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:52:50.659 [DEBUG] [Thread-122464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:52:50.707 [DEBUG] [Thread-122464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:52:50.707 [DEBUG] [Thread-122464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:52:50.716 [DEBUG] [Thread-122464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:52:50.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:52:50.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-28T10:52: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') -> 00000000
2025-09-28T10:52:50.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:52:50.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:52:50.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:52:50.751 [DEBUG] [Thread-122464] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:52:54.417 [DEBUG] [Thread-122466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:00.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:53:00.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:53:00.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-28T10:53:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 52, 33), 13.5, 40.61, 0.0, 7.54, 16.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:53:01.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:52:33
2025-09-28T10:53:01.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:53:01.627 [DEBUG] [Thread-122467] [transport.py] [_log()] starting thread (client mode): 0x2e3c0be0
2025-09-28T10:53:01.627 [DEBUG] [Thread-122467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:01.647 [DEBUG] [Thread-122467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:53:01.648 [INFO] [Thread-122467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] Compression: none
2025-09-28T10:53:01.651 [DEBUG] [Thread-122467] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:01.668 [DEBUG] [Thread-122467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:01.668 [DEBUG] [Thread-122467] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:01.668 [DEBUG] [Thread-122467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:53:01.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:53:01.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:01.669 [DEBUG] [Thread-122467] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:01.669 [DEBUG] [Thread-122467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:01.669 [DEBUG] [Thread-122467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:01.669 [DEBUG] [Thread-122467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:53:01.669 [DEBUG] [Thread-122467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:01.687 [INFO] [Thread-122467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:01.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:02.294 [DEBUG] [Thread-122467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:02.294 [DEBUG] [Thread-122467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:02.294 [DEBUG] [Thread-122467] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:53:02.335 [DEBUG] [Thread-122467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:02.335 [DEBUG] [Thread-122467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:02.337 [DEBUG] [Thread-122467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:02.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:02.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:53:02.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:53:02.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:53:02.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:02.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:53:02.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:02.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.369530 -999.00  +18.20   7.38     42   +5.40 1 1 1 1 1   888    0 13.60 40.90 ----- 4.2 7.4 198.0 11.7 26.9 -27.0 25.2 -25.8 24.4 -25.7 -999.0 -999.0
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.369530
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:53:02.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:52:33', tmtdew=13.5, humidity=40.61, cloud=0.0, wind=7.54, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:52:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:53:02.357 [DEBUG] [Thread-122467] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:02.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-28T10:53:02.446 [DEBUG] [Thread-122470] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T10:53:02.446 [DEBUG] [Thread-122470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:02.461 [DEBUG] [Thread-122470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:53:02.461 [INFO] [Thread-122470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:53:02.468 [DEBUG] [Thread-122470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] Compression: none
2025-09-28T10:53:02.469 [DEBUG] [Thread-122470] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:02.525 [DEBUG] [Thread-122470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:02.525 [DEBUG] [Thread-122470] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:02.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:53:02.525 [DEBUG] [Thread-122470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:53:02.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:02.582 [DEBUG] [Thread-122470] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:02.582 [DEBUG] [Thread-122470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:02.582 [DEBUG] [Thread-122470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:02.582 [DEBUG] [Thread-122470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:53:02.582 [DEBUG] [Thread-122470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:02.599 [INFO] [Thread-122470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:02.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-28T10:53:02.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:03.563 [DEBUG] [Thread-122470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:03.563 [DEBUG] [Thread-122470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:03.611 [DEBUG] [Thread-122470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:03.611 [DEBUG] [Thread-122470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:03.619 [DEBUG] [Thread-122470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:03.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53: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')
2025-09-28T10:53:03.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-28T10:53:03.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:03.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:03.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:03.650 [DEBUG] [Thread-122470] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:04.219 [DEBUG] [Thread-122472 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:09.452 [DEBUG] [Thread-122473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:13.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:53:13.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:53:13.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-28T10:53:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 53, 5), 13.51, 40.58, 0.0, 12.62, 16.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:53:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:53:05
2025-09-28T10:53:14.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:53:14.510 [DEBUG] [Thread-122474] [transport.py] [_log()] starting thread (client mode): 0x2e361960
2025-09-28T10:53:14.510 [DEBUG] [Thread-122474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:14.524 [DEBUG] [Thread-122474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:53:14.524 [INFO] [Thread-122474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:53:14.526 [DEBUG] [Thread-122474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:14.526 [DEBUG] [Thread-122474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] Compression: none
2025-09-28T10:53:14.527 [DEBUG] [Thread-122474] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:14.537 [DEBUG] [Thread-122474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:14.537 [DEBUG] [Thread-122474] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:14.538 [DEBUG] [Thread-122474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:53:14.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:53:14.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:14.539 [DEBUG] [Thread-122474] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:14.539 [DEBUG] [Thread-122474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:14.539 [DEBUG] [Thread-122474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:14.539 [DEBUG] [Thread-122474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:53:14.539 [DEBUG] [Thread-122474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:14.550 [INFO] [Thread-122474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:14.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:15.186 [DEBUG] [Thread-122474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:15.186 [DEBUG] [Thread-122474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:15.187 [DEBUG] [Thread-122474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:53:15.227 [DEBUG] [Thread-122474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:15.227 [DEBUG] [Thread-122474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:15.229 [DEBUG] [Thread-122474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:15.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:15.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:53:15.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:53:15.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:53:15.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:15.245 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:53:15.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:15.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370224 -999.00  +18.30   4.13     43   +5.60 1 1 1 1 1   888    0 13.70 39.26 ----- 9.3 4.1 254.2 8.3 27.1 -26.6 25.5 -24.9 24.6 -24.6 26.0 -26.1
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370224
2025-09-28T10:53:15.246 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:53:15.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:53:15.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:53:15.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:53:15.247 [DEBUG] [Thread-122474] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:15.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:53:15.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:53:05', tmtdew=13.51, humidity=40.58, cloud=0.0, wind=12.62, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:53:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:53:15.332 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:53:15.344 [DEBUG] [Thread-122477] [transport.py] [_log()] starting thread (client mode): 0x2b9f2e30
2025-09-28T10:53:15.344 [DEBUG] [Thread-122477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:15.359 [DEBUG] [Thread-122477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:53:15.359 [INFO] [Thread-122477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:53:15.367 [DEBUG] [Thread-122477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:15.367 [DEBUG] [Thread-122477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:15.368 [DEBUG] [Thread-122477] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] Compression: none
2025-09-28T10:53:15.369 [DEBUG] [Thread-122477] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:15.424 [DEBUG] [Thread-122477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:15.424 [DEBUG] [Thread-122477] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:15.425 [DEBUG] [Thread-122477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:53:15.425 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:53:15.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:15.489 [DEBUG] [Thread-122477] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:15.489 [DEBUG] [Thread-122477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:15.489 [DEBUG] [Thread-122477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:15.489 [DEBUG] [Thread-122477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:53:15.489 [DEBUG] [Thread-122477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:15.509 [INFO] [Thread-122477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:15.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-28T10:53:15.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:16.437 [DEBUG] [Thread-122477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:16.437 [DEBUG] [Thread-122477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:16.485 [DEBUG] [Thread-122477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:16.485 [DEBUG] [Thread-122477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:16.493 [DEBUG] [Thread-122477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:16.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:16.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-28T10:53:16.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-28T10:53:16.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:16.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:16.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:16.524 [DEBUG] [Thread-122477] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:24.482 [DEBUG] [Thread-122479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:26.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:53:26.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:53:26.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-28T10:53:27.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 53, 5), 13.51, 40.58, 0.0, 12.62, 16.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:53:27.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:53:05
2025-09-28T10:53:27.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:53:27.367 [DEBUG] [Thread-122480] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-28T10:53:27.367 [DEBUG] [Thread-122480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:27.389 [DEBUG] [Thread-122480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:53:27.389 [INFO] [Thread-122480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:27.391 [DEBUG] [Thread-122480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] Compression: none
2025-09-28T10:53:27.392 [DEBUG] [Thread-122480] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:27.409 [DEBUG] [Thread-122480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:27.409 [DEBUG] [Thread-122480] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:27.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:53:27.411 [DEBUG] [Thread-122480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:53:27.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:27.412 [DEBUG] [Thread-122480] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:27.413 [DEBUG] [Thread-122480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:27.413 [DEBUG] [Thread-122480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:27.413 [DEBUG] [Thread-122480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:53:27.413 [DEBUG] [Thread-122480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:27.438 [INFO] [Thread-122480] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:27.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:28.068 [DEBUG] [Thread-122480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:28.068 [DEBUG] [Thread-122480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:28.068 [DEBUG] [Thread-122480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:53:28.109 [DEBUG] [Thread-122480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:28.109 [DEBUG] [Thread-122480] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:28.112 [DEBUG] [Thread-122480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:28.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:28.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:53:28.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:53:28.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:53:28.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:28.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:53:28.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:28.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:28.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:53:28.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370224 -999.00  +18.30   4.13     43   +5.60 1 1 1 1 1   888    0 13.70 39.26 ----- 9.3 4.1 254.2 8.3 27.1 -26.6 25.5 -24.9 24.6 -24.6 26.0 -26.1
2025-09-28T10:53:28.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:53:28.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:53:28.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370224
2025-09-28T10:53:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:53:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:53:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:53:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:53:28.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:53:28.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:53:05', tmtdew=13.51, humidity=40.58, cloud=0.0, wind=12.62, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:53:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:53:28.139 [DEBUG] [Thread-122480] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:28.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-28T10:53:28.235 [DEBUG] [Thread-122483] [transport.py] [_log()] starting thread (client mode): 0x2b96d630
2025-09-28T10:53:28.235 [DEBUG] [Thread-122483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:28.250 [DEBUG] [Thread-122483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:53:28.251 [INFO] [Thread-122483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:53:28.258 [DEBUG] [Thread-122483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:28.258 [DEBUG] [Thread-122483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:28.259 [DEBUG] [Thread-122483] [transport.py] [_log()] Compression: none
2025-09-28T10:53:28.260 [DEBUG] [Thread-122483] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:28.315 [DEBUG] [Thread-122483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:28.316 [DEBUG] [Thread-122483] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:28.316 [DEBUG] [Thread-122483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:53:28.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:53:28.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:28.372 [DEBUG] [Thread-122483] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:28.372 [DEBUG] [Thread-122483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:28.372 [DEBUG] [Thread-122483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:28.372 [DEBUG] [Thread-122483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:53:28.372 [DEBUG] [Thread-122483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:28.392 [INFO] [Thread-122483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:28.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-28T10:53:28.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:29.401 [DEBUG] [Thread-122483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:29.401 [DEBUG] [Thread-122483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:29.449 [DEBUG] [Thread-122483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:29.449 [DEBUG] [Thread-122483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:29.459 [DEBUG] [Thread-122483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:29.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:29.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-28T10:53:29.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-28T10:53:29.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:29.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:29.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:29.494 [DEBUG] [Thread-122483] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:32.681 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:32.682 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:39.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:53:39.495 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:53:39.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-28T10:53:39.522 [DEBUG] [Thread-122485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:40.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 53, 5), 13.51, 40.58, 0.0, 12.62, 16.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:53:40.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:53:05
2025-09-28T10:53:40.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:53:40.392 [DEBUG] [Thread-122486] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-28T10:53:40.392 [DEBUG] [Thread-122486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:40.412 [DEBUG] [Thread-122486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:53:40.412 [INFO] [Thread-122486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] Compression: none
2025-09-28T10:53:40.415 [DEBUG] [Thread-122486] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:40.430 [DEBUG] [Thread-122486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:40.430 [DEBUG] [Thread-122486] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:40.430 [DEBUG] [Thread-122486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:53:40.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:53:40.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:40.431 [DEBUG] [Thread-122486] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:40.431 [DEBUG] [Thread-122486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:40.431 [DEBUG] [Thread-122486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:40.431 [DEBUG] [Thread-122486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:53:40.431 [DEBUG] [Thread-122486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:40.440 [INFO] [Thread-122486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:40.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:41.086 [DEBUG] [Thread-122486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:41.086 [DEBUG] [Thread-122486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:41.086 [DEBUG] [Thread-122486] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:53:41.127 [DEBUG] [Thread-122486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:41.127 [DEBUG] [Thread-122486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:41.129 [DEBUG] [Thread-122486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:41.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:41.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:53:41.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:53:41.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:53:41.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:41.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:53:41.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370224 -999.00  +18.30   4.13     43   +5.60 1 1 1 1 1   888    0 13.70 39.26 ----- 9.3 4.1 254.2 8.3 27.1 -26.6 25.5 -24.9 24.6 -24.6 26.0 -26.1
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370224
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:53:41.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:53:05', tmtdew=13.51, humidity=40.58, cloud=0.0, wind=12.62, temperature=16.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:53:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:53:41.148 [DEBUG] [Thread-122486] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:41.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-28T10:53:41.231 [DEBUG] [Thread-122489] [transport.py] [_log()] starting thread (client mode): 0x2b9f2b30
2025-09-28T10:53:41.232 [DEBUG] [Thread-122489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:41.245 [DEBUG] [Thread-122489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:53:41.245 [INFO] [Thread-122489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] Compression: none
2025-09-28T10:53:41.253 [DEBUG] [Thread-122489] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:41.311 [DEBUG] [Thread-122489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:41.311 [DEBUG] [Thread-122489] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:41.311 [DEBUG] [Thread-122489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:53:41.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:53:41.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:41.369 [DEBUG] [Thread-122489] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:41.369 [DEBUG] [Thread-122489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:41.369 [DEBUG] [Thread-122489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:41.369 [DEBUG] [Thread-122489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:53:41.369 [DEBUG] [Thread-122489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:41.387 [INFO] [Thread-122489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:41.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-28T10:53:41.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:42.375 [DEBUG] [Thread-122489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:42.375 [DEBUG] [Thread-122489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:42.425 [DEBUG] [Thread-122489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:42.425 [DEBUG] [Thread-122489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:42.433 [DEBUG] [Thread-122489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:42.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:42.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-28T10:53:42.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-28T10:53:42.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:42.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:42.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:42.468 [DEBUG] [Thread-122489] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:52.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:53:52.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:53:52.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:53:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 53, 37), 13.65, 40.11, 0.0, 13.46, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:53:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:53:37
2025-09-28T10:53:53.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:53:53.299 [DEBUG] [Thread-122491] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T10:53:53.299 [DEBUG] [Thread-122491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:53.320 [DEBUG] [Thread-122491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:53:53.320 [INFO] [Thread-122491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:53.323 [DEBUG] [Thread-122491] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] Compression: none
2025-09-28T10:53:53.324 [DEBUG] [Thread-122491] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:53.340 [DEBUG] [Thread-122491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:53.340 [DEBUG] [Thread-122491] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:53.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:53:53.340 [DEBUG] [Thread-122491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:53:53.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:53.341 [DEBUG] [Thread-122491] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:53.341 [DEBUG] [Thread-122491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:53.342 [DEBUG] [Thread-122491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:53.342 [DEBUG] [Thread-122491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:53:53.342 [DEBUG] [Thread-122491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:53.362 [INFO] [Thread-122491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:53.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:53.976 [DEBUG] [Thread-122491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:53.976 [DEBUG] [Thread-122491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:53.977 [DEBUG] [Thread-122491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:53:54.017 [DEBUG] [Thread-122491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:54.017 [DEBUG] [Thread-122491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:54.020 [DEBUG] [Thread-122491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:54.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:54.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:53:54.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:53:54.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:53:54.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:54.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:53:54.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370572 -999.00  +18.40   6.03     42   +5.50 1 1 1 1 1   888    0 13.62 37.05 ----- 8.5 6.0 214.1 8.6 27.1 -28.0 25.6 -25.6 24.6 -25.6 25.9 -27.6
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:53:54.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370572
2025-09-28T10:53:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:53:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:53:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:53:54.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:53:54.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:53:54.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:53:37', tmtdew=13.65, humidity=40.11, cloud=0.0, wind=13.46, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:53:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:53:54.047 [DEBUG] [Thread-122491] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:53:54.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-28T10:53:54.139 [DEBUG] [Thread-122494] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-28T10:53:54.139 [DEBUG] [Thread-122494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:53:54.155 [DEBUG] [Thread-122494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:53:54.155 [INFO] [Thread-122494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] client lang: <none>
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] server lang: <none>
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] kex follows: False
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] Compression: none
2025-09-28T10:53:54.163 [DEBUG] [Thread-122494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:53:54.221 [DEBUG] [Thread-122494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:53:54.222 [DEBUG] [Thread-122494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:53:54.222 [DEBUG] [Thread-122494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:53:54.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:53:54.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:53:54.277 [DEBUG] [Thread-122494] [transport.py] [_log()] userauth is OK
2025-09-28T10:53:54.277 [DEBUG] [Thread-122494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:53:54.277 [DEBUG] [Thread-122494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:53:54.277 [DEBUG] [Thread-122494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:53:54.277 [DEBUG] [Thread-122494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:53:54.291 [INFO] [Thread-122494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:53:54.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-28T10:53:54.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:53:54.552 [DEBUG] [Thread-122496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:53:55.228 [DEBUG] [Thread-122494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:53:55.228 [DEBUG] [Thread-122494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:53:55.276 [DEBUG] [Thread-122494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:53:55.277 [DEBUG] [Thread-122494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:53:55.285 [DEBUG] [Thread-122494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:53:55.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:53:55.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-28T10:53:55.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-28T10:53:55.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:53:55.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:53:55.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:53:55.321 [DEBUG] [Thread-122494] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:04.280 [DEBUG] [Thread-122497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:05.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:54:05.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:54:05.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-28T10:54:05.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 53, 37), 13.65, 40.11, 0.0, 13.46, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:54:05.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:53:37
2025-09-28T10:54:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:54:06.169 [DEBUG] [Thread-122498] [transport.py] [_log()] starting thread (client mode): 0x2b9f3d00
2025-09-28T10:54:06.169 [DEBUG] [Thread-122498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:06.189 [DEBUG] [Thread-122498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:54:06.189 [INFO] [Thread-122498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:54:06.192 [DEBUG] [Thread-122498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:06.193 [DEBUG] [Thread-122498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] Compression: none
2025-09-28T10:54:06.194 [DEBUG] [Thread-122498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:06.210 [DEBUG] [Thread-122498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:06.210 [DEBUG] [Thread-122498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:06.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:54:06.211 [DEBUG] [Thread-122498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:54:06.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:06.213 [DEBUG] [Thread-122498] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:06.214 [DEBUG] [Thread-122498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:06.214 [DEBUG] [Thread-122498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:06.214 [DEBUG] [Thread-122498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:54:06.214 [DEBUG] [Thread-122498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:06.237 [INFO] [Thread-122498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:06.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:06.901 [DEBUG] [Thread-122498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:06.901 [DEBUG] [Thread-122498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:06.901 [DEBUG] [Thread-122498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:54:06.942 [DEBUG] [Thread-122498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:06.942 [DEBUG] [Thread-122498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:06.944 [DEBUG] [Thread-122498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:06.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:06.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:54:06.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:54:06.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:54:06.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:06.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:54:06.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370572 -999.00  +18.40   6.03     42   +5.50 1 1 1 1 1   888    0 13.62 37.05 ----- 8.5 6.0 214.1 8.6 27.1 -28.0 25.6 -25.6 24.6 -25.6 25.9 -27.6
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370572
2025-09-28T10:54:06.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:54:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:54:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:54:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:54:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:54:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:53:37', tmtdew=13.65, humidity=40.11, cloud=0.0, wind=13.46, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:53:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:54:06.963 [DEBUG] [Thread-122498] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:07.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-28T10:54:07.047 [DEBUG] [Thread-122501] [transport.py] [_log()] starting thread (client mode): 0x2b9de290
2025-09-28T10:54:07.048 [DEBUG] [Thread-122501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:07.066 [DEBUG] [Thread-122501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:54:07.066 [INFO] [Thread-122501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:07.077 [DEBUG] [Thread-122501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:07.078 [DEBUG] [Thread-122501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:07.079 [DEBUG] [Thread-122501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:07.079 [DEBUG] [Thread-122501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:07.079 [DEBUG] [Thread-122501] [transport.py] [_log()] Compression: none
2025-09-28T10:54:07.079 [DEBUG] [Thread-122501] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:07.138 [DEBUG] [Thread-122501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:07.138 [DEBUG] [Thread-122501] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:07.139 [DEBUG] [Thread-122501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:54:07.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:54:07.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:07.194 [DEBUG] [Thread-122501] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:07.194 [DEBUG] [Thread-122501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:07.194 [DEBUG] [Thread-122501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:07.194 [DEBUG] [Thread-122501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:54:07.194 [DEBUG] [Thread-122501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:07.212 [INFO] [Thread-122501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:07.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-28T10:54:07.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:08.291 [DEBUG] [Thread-122501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:08.291 [DEBUG] [Thread-122501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:08.339 [DEBUG] [Thread-122501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:08.339 [DEBUG] [Thread-122501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:08.348 [DEBUG] [Thread-122501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:08.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:08.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-28T10:54: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') -> 00000000
2025-09-28T10:54:08.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:08.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:08.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:08.383 [DEBUG] [Thread-122501] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:09.595 [DEBUG] [Thread-122503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:18.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:54:18.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:54:18.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-28T10:54:18.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 54, 9), 13.66, 40.06, 0.0, 9.88, 16.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:54:18.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:54:09
2025-09-28T10:54:19.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:54:19.253 [DEBUG] [Thread-122504] [transport.py] [_log()] starting thread (client mode): 0x2b96d1e0
2025-09-28T10:54:19.253 [DEBUG] [Thread-122504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:19.272 [DEBUG] [Thread-122504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:54:19.272 [INFO] [Thread-122504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] Compression: none
2025-09-28T10:54:19.274 [DEBUG] [Thread-122504] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:19.282 [DEBUG] [Thread-122504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:19.282 [DEBUG] [Thread-122504] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:19.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:54:19.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:19.283 [DEBUG] [Thread-122504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:54:19.283 [DEBUG] [Thread-122504] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:19.284 [DEBUG] [Thread-122504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:19.284 [DEBUG] [Thread-122504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:19.284 [DEBUG] [Thread-122504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:54:19.284 [DEBUG] [Thread-122504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:19.296 [INFO] [Thread-122504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:19.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:19.835 [DEBUG] [Thread-122504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:19.835 [DEBUG] [Thread-122504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:19.835 [DEBUG] [Thread-122504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:54:19.876 [DEBUG] [Thread-122504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:19.876 [DEBUG] [Thread-122504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:19.879 [DEBUG] [Thread-122504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:19.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:19.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:54:19.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:54:19.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:54:19.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:19.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:54:19.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370919 -999.00  +18.30  11.98     42   +5.20 1 1 1 1 1   888    0 13.40 39.39 ----- 9.7 12.0 254.8 17.2 27.0 -27.7 25.5 -26.5 24.6 -26.5 25.9 -27.9
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370919
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:54:19.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:54:09', tmtdew=13.66, humidity=40.06, cloud=0.0, wind=9.88, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:54:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:54:19.903 [DEBUG] [Thread-122504] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:19.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-28T10:54:19.984 [DEBUG] [Thread-122507] [transport.py] [_log()] starting thread (client mode): 0x2b946b30
2025-09-28T10:54:19.984 [DEBUG] [Thread-122507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:20.000 [DEBUG] [Thread-122507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:54:20.000 [INFO] [Thread-122507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] Compression: none
2025-09-28T10:54:20.008 [DEBUG] [Thread-122507] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:20.070 [DEBUG] [Thread-122507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:20.070 [DEBUG] [Thread-122507] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:20.070 [DEBUG] [Thread-122507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:54:20.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:54:20.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:20.126 [DEBUG] [Thread-122507] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:20.127 [DEBUG] [Thread-122507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:20.127 [DEBUG] [Thread-122507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:20.127 [DEBUG] [Thread-122507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:54:20.127 [DEBUG] [Thread-122507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:20.146 [INFO] [Thread-122507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54: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-28T10:54:20.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:21.114 [DEBUG] [Thread-122507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:21.114 [DEBUG] [Thread-122507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:21.165 [DEBUG] [Thread-122507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:21.165 [DEBUG] [Thread-122507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:21.178 [DEBUG] [Thread-122507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:21.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:21.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-28T10:54:21.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-28T10:54:21.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:21.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:21.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:21.212 [DEBUG] [Thread-122507] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:24.623 [DEBUG] [Thread-122509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:54:31.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:54:31.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-28T10:54:31.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 54, 9), 13.66, 40.06, 0.0, 9.88, 16.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:54:31.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:54:09
2025-09-28T10:54:31.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:54:32.054 [DEBUG] [Thread-122510] [transport.py] [_log()] starting thread (client mode): 0x2b9cdc90
2025-09-28T10:54:32.054 [DEBUG] [Thread-122510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:32.074 [DEBUG] [Thread-122510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:54:32.074 [INFO] [Thread-122510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] Compression: none
2025-09-28T10:54:32.078 [DEBUG] [Thread-122510] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:32.093 [DEBUG] [Thread-122510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:32.093 [DEBUG] [Thread-122510] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:32.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:54:32.093 [DEBUG] [Thread-122510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:54:32.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:32.135 [DEBUG] [Thread-122510] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:32.135 [DEBUG] [Thread-122510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:32.135 [DEBUG] [Thread-122510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:32.135 [DEBUG] [Thread-122510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:54:32.135 [DEBUG] [Thread-122510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:32.150 [INFO] [Thread-122510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:32.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:32.717 [DEBUG] [Thread-122510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:32.717 [DEBUG] [Thread-122510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:32.717 [DEBUG] [Thread-122510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:54:32.758 [DEBUG] [Thread-122510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:32.758 [DEBUG] [Thread-122510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:32.760 [DEBUG] [Thread-122510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:32.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:32.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:54:32.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:54:32.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:54:32.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:32.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:54:32.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:32.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370919 -999.00  +18.30  11.98     42   +5.20 1 1 1 1 1   888    0 13.40 39.39 ----- 9.7 12.0 254.8 17.2 27.0 -27.7 25.5 -26.5 24.6 -26.5 25.9 -27.9
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370919
2025-09-28T10:54:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:54:32.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:54:32.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:54:32.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:54:32.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:54:32.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:54:09', tmtdew=13.66, humidity=40.06, cloud=0.0, wind=9.88, temperature=16.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:54:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:54:32.784 [DEBUG] [Thread-122510] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:32.822 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:32.823 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:32.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:54:32.879 [DEBUG] [Thread-122513] [transport.py] [_log()] starting thread (client mode): 0x2e375f30
2025-09-28T10:54:32.879 [DEBUG] [Thread-122513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:32.896 [DEBUG] [Thread-122513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:54:32.896 [INFO] [Thread-122513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:54:32.903 [DEBUG] [Thread-122513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:32.903 [DEBUG] [Thread-122513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:54:32.903 [DEBUG] [Thread-122513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:32.903 [DEBUG] [Thread-122513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] Compression: none
2025-09-28T10:54:32.904 [DEBUG] [Thread-122513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:32.963 [DEBUG] [Thread-122513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:32.963 [DEBUG] [Thread-122513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:32.964 [DEBUG] [Thread-122513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:54:32.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:54:32.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:33.019 [DEBUG] [Thread-122513] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:33.019 [DEBUG] [Thread-122513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:33.020 [DEBUG] [Thread-122513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:33.020 [DEBUG] [Thread-122513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:54:33.020 [DEBUG] [Thread-122513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:33.038 [INFO] [Thread-122513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:33.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-28T10:54:33.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:34.019 [DEBUG] [Thread-122513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:34.020 [DEBUG] [Thread-122513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:34.067 [DEBUG] [Thread-122513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:34.067 [DEBUG] [Thread-122513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:34.076 [DEBUG] [Thread-122513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:34.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:34.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-28T10:54: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-28T10:54:34.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:34.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:34.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:34.112 [DEBUG] [Thread-122513] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:39.663 [DEBUG] [Thread-122515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:44.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:54:44.114 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:54: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-28T10:54:44.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 54, 41), 13.7, 39.75, 0.0, 10.01, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:54:44.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:54:41
2025-09-28T10:54:44.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:54:44.964 [DEBUG] [Thread-122516] [transport.py] [_log()] starting thread (client mode): 0x2b946200
2025-09-28T10:54:44.965 [DEBUG] [Thread-122516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:44.985 [DEBUG] [Thread-122516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:54:44.985 [INFO] [Thread-122516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:44.988 [DEBUG] [Thread-122516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] Compression: none
2025-09-28T10:54:44.989 [DEBUG] [Thread-122516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:44.997 [DEBUG] [Thread-122516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:44.998 [DEBUG] [Thread-122516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:44.998 [DEBUG] [Thread-122516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:54:44.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:54:44.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:45.000 [DEBUG] [Thread-122516] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:45.000 [DEBUG] [Thread-122516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:45.000 [DEBUG] [Thread-122516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:45.000 [DEBUG] [Thread-122516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:54:45.000 [DEBUG] [Thread-122516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:45.018 [INFO] [Thread-122516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:45.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:45.648 [DEBUG] [Thread-122516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:45.649 [DEBUG] [Thread-122516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:45.649 [DEBUG] [Thread-122516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:54:45.689 [DEBUG] [Thread-122516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:45.689 [DEBUG] [Thread-122516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:45.692 [DEBUG] [Thread-122516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:45.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:45.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:54:45.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:54:45.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:54:45.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:45.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:54:45.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:45.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:54:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.370919 -999.00  +18.30  11.98     42   +5.20 1 1 1 1 1   888    0 13.40 39.39 ----- 9.7 12.0 254.8 17.2 27.0 -27.7 25.5 -26.5 24.6 -26.5 25.9 -27.9
2025-09-28T10:54:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:54:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:54:45.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.370919
2025-09-28T10:54:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:54:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:54:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:54:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:54:45.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:54:45.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:54:41', tmtdew=13.7, humidity=39.75, cloud=0.0, wind=10.01, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:54:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:54:45.718 [DEBUG] [Thread-122516] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:45.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:54:45.814 [DEBUG] [Thread-122519] [transport.py] [_log()] starting thread (client mode): 0x2b9f3a60
2025-09-28T10:54:45.814 [DEBUG] [Thread-122519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:45.828 [DEBUG] [Thread-122519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:54:45.828 [INFO] [Thread-122519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:45.835 [DEBUG] [Thread-122519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] Compression: none
2025-09-28T10:54:45.836 [DEBUG] [Thread-122519] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:45.892 [DEBUG] [Thread-122519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:45.892 [DEBUG] [Thread-122519] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:45.893 [DEBUG] [Thread-122519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:54:45.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:54:45.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:45.948 [DEBUG] [Thread-122519] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:45.949 [DEBUG] [Thread-122519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:45.949 [DEBUG] [Thread-122519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:45.949 [DEBUG] [Thread-122519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:54:45.949 [DEBUG] [Thread-122519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:45.967 [INFO] [Thread-122519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:45.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-28T10:54:45.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:46.915 [DEBUG] [Thread-122519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:46.915 [DEBUG] [Thread-122519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:46.963 [DEBUG] [Thread-122519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:46.963 [DEBUG] [Thread-122519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:46.972 [DEBUG] [Thread-122519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:46.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54: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')
2025-09-28T10:54:46.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-28T10:54:46.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:46.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:46.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:47.007 [DEBUG] [Thread-122519] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:54.696 [DEBUG] [Thread-122521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:54:57.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:54:57.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:54:57.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-28T10:54:57.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 54, 41), 13.7, 39.75, 0.0, 10.01, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:54:57.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:54:41
2025-09-28T10:54:57.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:54:57.891 [DEBUG] [Thread-122522] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T10:54:57.892 [DEBUG] [Thread-122522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:57.912 [DEBUG] [Thread-122522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:54:57.912 [INFO] [Thread-122522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:54:57.915 [DEBUG] [Thread-122522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:57.915 [DEBUG] [Thread-122522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:54:57.915 [DEBUG] [Thread-122522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:57.915 [DEBUG] [Thread-122522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] Compression: none
2025-09-28T10:54:57.916 [DEBUG] [Thread-122522] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:57.933 [DEBUG] [Thread-122522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:57.934 [DEBUG] [Thread-122522] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:57.934 [DEBUG] [Thread-122522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:54:57.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:54:57.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:57.935 [DEBUG] [Thread-122522] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:57.935 [DEBUG] [Thread-122522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:57.935 [DEBUG] [Thread-122522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:57.935 [DEBUG] [Thread-122522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:54:57.935 [DEBUG] [Thread-122522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:57.943 [INFO] [Thread-122522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:57.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:58.480 [DEBUG] [Thread-122522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:58.480 [DEBUG] [Thread-122522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:58.480 [DEBUG] [Thread-122522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:54:58.521 [DEBUG] [Thread-122522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:58.521 [DEBUG] [Thread-122522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:58.523 [DEBUG] [Thread-122522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:58.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:58.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:54:58.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:54:58.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:54:58.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:58.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:54:58.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:58.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371266 -999.00  +17.60  17.37     43   +5.00 1 1 1 1 1   888    0 14.01 40.27 ----- 20.1 17.4 262.0 24.4 26.9 -28.8 25.5 -26.5 24.4 -26.2 25.6 -28.7
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371266
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:54:58.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:54:41', tmtdew=13.7, humidity=39.75, cloud=0.0, wind=10.01, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:54:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:54:58.545 [DEBUG] [Thread-122522] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:54:58.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-28T10:54:58.627 [DEBUG] [Thread-122525] [transport.py] [_log()] starting thread (client mode): 0x2e3c0bb0
2025-09-28T10:54:58.627 [DEBUG] [Thread-122525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:54:58.642 [DEBUG] [Thread-122525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:54:58.642 [INFO] [Thread-122525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:54:58.649 [DEBUG] [Thread-122525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:54:58.649 [DEBUG] [Thread-122525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:54:58.649 [DEBUG] [Thread-122525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] client lang: <none>
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] server lang: <none>
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] kex follows: False
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] Compression: none
2025-09-28T10:54:58.650 [DEBUG] [Thread-122525] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:54:58.711 [DEBUG] [Thread-122525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:54:58.711 [DEBUG] [Thread-122525] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:54:58.711 [DEBUG] [Thread-122525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:54:58.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:54:58.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:54:58.769 [DEBUG] [Thread-122525] [transport.py] [_log()] userauth is OK
2025-09-28T10:54:58.769 [DEBUG] [Thread-122525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:54:58.769 [DEBUG] [Thread-122525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:54:58.769 [DEBUG] [Thread-122525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:54:58.769 [DEBUG] [Thread-122525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:54:58.783 [INFO] [Thread-122525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:54:58.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-28T10:54:58.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:54:59.731 [DEBUG] [Thread-122525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:54:59.731 [DEBUG] [Thread-122525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:54:59.779 [DEBUG] [Thread-122525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:54:59.779 [DEBUG] [Thread-122525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:54:59.787 [DEBUG] [Thread-122525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:54:59.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:54:59.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-28T10:54:59.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-28T10:54:59.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:54:59.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:54:59.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:54:59.819 [DEBUG] [Thread-122525] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:04.336 [DEBUG] [Thread-122527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:09.750 [DEBUG] [Thread-122528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:09.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:55:09.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:55:09.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-28T10:55:10.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 54, 41), 13.7, 39.75, 0.0, 10.01, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:55:10.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:54:41
2025-09-28T10:55:10.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:55:10.658 [DEBUG] [Thread-122529] [transport.py] [_log()] starting thread (client mode): 0x2e3f9030
2025-09-28T10:55:10.658 [DEBUG] [Thread-122529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:10.679 [DEBUG] [Thread-122529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:55:10.680 [INFO] [Thread-122529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:10.683 [DEBUG] [Thread-122529] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] Compression: none
2025-09-28T10:55:10.684 [DEBUG] [Thread-122529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:10.701 [DEBUG] [Thread-122529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:10.702 [DEBUG] [Thread-122529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:10.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:55:10.703 [DEBUG] [Thread-122529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:55:10.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:10.704 [DEBUG] [Thread-122529] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:10.705 [DEBUG] [Thread-122529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:10.705 [DEBUG] [Thread-122529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:10.705 [DEBUG] [Thread-122529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:55:10.705 [DEBUG] [Thread-122529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:10.728 [INFO] [Thread-122529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:10.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:18.924 [DEBUG] [Thread-122529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:18.924 [DEBUG] [Thread-122529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:18.925 [DEBUG] [Thread-122529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:55:18.965 [DEBUG] [Thread-122529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:18.966 [DEBUG] [Thread-122529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:18.968 [DEBUG] [Thread-122529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:19.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:19.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:55:19.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:55:19.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:55:19.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:19.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:55:19.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:19.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:19.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:55:19.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371266 -999.00  +17.60  17.37     43   +5.00 1 1 1 1 1   888    0 14.01 40.27 ----- 20.1 17.4 262.0 24.4 26.9 -28.8 25.5 -26.5 24.4 -26.2 25.6 -28.7
2025-09-28T10:55:19.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:55:19.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:55:19.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371266
2025-09-28T10:55:19.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:55:19.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:55:19.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:55:19.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:55:19.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:55:19.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:54:41', tmtdew=13.7, humidity=39.75, cloud=0.0, wind=10.01, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:54:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:55:19.055 [DEBUG] [Thread-122529] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:19.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-28T10:55:19.152 [DEBUG] [Thread-122532] [transport.py] [_log()] starting thread (client mode): 0x2e3f96c0
2025-09-28T10:55:19.152 [DEBUG] [Thread-122532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:19.167 [DEBUG] [Thread-122532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:55:19.167 [INFO] [Thread-122532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:55:19.174 [DEBUG] [Thread-122532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:19.175 [DEBUG] [Thread-122532] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:19.176 [DEBUG] [Thread-122532] [transport.py] [_log()] Compression: none
2025-09-28T10:55:19.177 [DEBUG] [Thread-122532] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:19.238 [DEBUG] [Thread-122532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:19.238 [DEBUG] [Thread-122532] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:19.239 [DEBUG] [Thread-122532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:55:19.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:55:19.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:19.293 [DEBUG] [Thread-122532] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:19.293 [DEBUG] [Thread-122532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:19.293 [DEBUG] [Thread-122532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:19.293 [DEBUG] [Thread-122532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:55:19.293 [DEBUG] [Thread-122532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:19.310 [INFO] [Thread-122532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:19.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-28T10:55:19.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:20.264 [DEBUG] [Thread-122532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:20.264 [DEBUG] [Thread-122532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:20.312 [DEBUG] [Thread-122532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:20.312 [DEBUG] [Thread-122532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:20.321 [DEBUG] [Thread-122532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:20.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:20.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-28T10:55:20.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-28T10:55:20.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:20.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:20.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:20.355 [DEBUG] [Thread-122532] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:24.795 [DEBUG] [Thread-122534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:55:30.358 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:55:30.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:55:30.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 55, 13), 13.69, 39.8, 0.0, 14.84, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:55:30.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:55:13
2025-09-28T10:55:31.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:55:31.201 [DEBUG] [Thread-122535] [transport.py] [_log()] starting thread (client mode): 0x2e3f8af0
2025-09-28T10:55:31.201 [DEBUG] [Thread-122535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:31.222 [DEBUG] [Thread-122535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:55:31.222 [INFO] [Thread-122535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:55:31.225 [DEBUG] [Thread-122535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] Compression: none
2025-09-28T10:55:31.226 [DEBUG] [Thread-122535] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:31.244 [DEBUG] [Thread-122535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:31.244 [DEBUG] [Thread-122535] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:31.245 [DEBUG] [Thread-122535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:55:31.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:55:31.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:31.247 [DEBUG] [Thread-122535] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:31.247 [DEBUG] [Thread-122535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:31.247 [DEBUG] [Thread-122535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:31.248 [DEBUG] [Thread-122535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:55:31.248 [DEBUG] [Thread-122535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:31.261 [INFO] [Thread-122535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:31.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:31.853 [DEBUG] [Thread-122535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:31.853 [DEBUG] [Thread-122535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:31.853 [DEBUG] [Thread-122535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:55:31.894 [DEBUG] [Thread-122535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:31.894 [DEBUG] [Thread-122535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:31.896 [DEBUG] [Thread-122535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:31.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:31.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:55:31.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:55:31.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:55:31.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:31.914 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:55:31.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371613 -999.00  +17.20  13.54     44   +5.00 1 1 1 1 1   888    0 13.61 35.37 ----- 18.7 13.5 258.8 20.6 26.7 -28.8 25.4 -26.4 24.3 -25.7 25.3 -28.3
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371613
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:55:31.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:55:13', tmtdew=13.69, humidity=39.8, cloud=0.0, wind=14.84, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:55:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:55:31.915 [DEBUG] [Thread-122535] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:31.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-28T10:55:31.997 [DEBUG] [Thread-122538] [transport.py] [_log()] starting thread (client mode): 0x2e3dd1e0
2025-09-28T10:55:31.997 [DEBUG] [Thread-122538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:32.013 [DEBUG] [Thread-122538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:55:32.013 [INFO] [Thread-122538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:55:32.020 [DEBUG] [Thread-122538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:32.021 [DEBUG] [Thread-122538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] Compression: none
2025-09-28T10:55:32.022 [DEBUG] [Thread-122538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:32.081 [DEBUG] [Thread-122538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:32.082 [DEBUG] [Thread-122538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:32.082 [DEBUG] [Thread-122538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:55:32.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:55:32.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:32.139 [DEBUG] [Thread-122538] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:32.139 [DEBUG] [Thread-122538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:32.139 [DEBUG] [Thread-122538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:32.139 [DEBUG] [Thread-122538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:55:32.139 [DEBUG] [Thread-122538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:32.164 [INFO] [Thread-122538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:32.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:55:32.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:32.962 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:32.963 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:33.136 [DEBUG] [Thread-122538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:33.136 [DEBUG] [Thread-122538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:33.186 [DEBUG] [Thread-122538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:33.187 [DEBUG] [Thread-122538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:33.195 [DEBUG] [Thread-122538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:33.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:33.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-28T10:55:33.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-28T10:55:33.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:33.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:33.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:33.231 [DEBUG] [Thread-122538] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:39.824 [DEBUG] [Thread-122540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:43.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:55:43.233 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:55:43.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-28T10:55:43.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 55, 13), 13.69, 39.8, 0.0, 14.84, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:55:43.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:55:13
2025-09-28T10:55:43.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:55:44.066 [DEBUG] [Thread-122541] [transport.py] [_log()] starting thread (client mode): 0x30dde770
2025-09-28T10:55:44.066 [DEBUG] [Thread-122541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:44.085 [DEBUG] [Thread-122541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:55:44.085 [INFO] [Thread-122541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:44.088 [DEBUG] [Thread-122541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] Compression: none
2025-09-28T10:55:44.089 [DEBUG] [Thread-122541] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:44.109 [DEBUG] [Thread-122541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:44.109 [DEBUG] [Thread-122541] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:44.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:55:44.110 [DEBUG] [Thread-122541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:55:44.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:44.112 [DEBUG] [Thread-122541] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:44.113 [DEBUG] [Thread-122541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:44.113 [DEBUG] [Thread-122541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:44.113 [DEBUG] [Thread-122541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:55:44.113 [DEBUG] [Thread-122541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:44.136 [INFO] [Thread-122541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:44.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:44.875 [DEBUG] [Thread-122541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:44.875 [DEBUG] [Thread-122541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:44.885 [DEBUG] [Thread-122541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:55:44.916 [DEBUG] [Thread-122541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:44.916 [DEBUG] [Thread-122541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:44.919 [DEBUG] [Thread-122541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:44.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:44.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:55:44.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:55:44.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:55:44.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:44.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:55:44.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:44.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371613 -999.00  +17.20  13.54     44   +5.00 1 1 1 1 1   888    0 13.61 35.37 ----- 18.7 13.5 258.8 20.6 26.7 -28.8 25.4 -26.4 24.3 -25.7 25.3 -28.3
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371613
2025-09-28T10:55:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:55:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:55:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:55:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:55:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:55:44.936 [DEBUG] [Thread-122541] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:44.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:55:13', tmtdew=13.69, humidity=39.8, cloud=0.0, wind=14.84, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:55:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:55:45.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-28T10:55:45.033 [DEBUG] [Thread-122544] [transport.py] [_log()] starting thread (client mode): 0x30ddcbb0
2025-09-28T10:55:45.033 [DEBUG] [Thread-122544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:45.051 [DEBUG] [Thread-122544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:55:45.051 [INFO] [Thread-122544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:45.059 [DEBUG] [Thread-122544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:45.060 [DEBUG] [Thread-122544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:45.061 [DEBUG] [Thread-122544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:45.061 [DEBUG] [Thread-122544] [transport.py] [_log()] Compression: none
2025-09-28T10:55:45.061 [DEBUG] [Thread-122544] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:45.119 [DEBUG] [Thread-122544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:45.120 [DEBUG] [Thread-122544] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:45.120 [DEBUG] [Thread-122544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:55:45.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:55:45.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:45.175 [DEBUG] [Thread-122544] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:45.175 [DEBUG] [Thread-122544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:45.175 [DEBUG] [Thread-122544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:45.175 [DEBUG] [Thread-122544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:55:45.175 [DEBUG] [Thread-122544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:45.194 [INFO] [Thread-122544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:45.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:55:45.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:46.241 [DEBUG] [Thread-122544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:46.241 [DEBUG] [Thread-122544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:46.290 [DEBUG] [Thread-122544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:46.290 [DEBUG] [Thread-122544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:46.301 [DEBUG] [Thread-122544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:46.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:46.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-28T10:55:46.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-28T10:55:46.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:46.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:46.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:46.336 [DEBUG] [Thread-122544] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55:54.873 [DEBUG] [Thread-122546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:55:56.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:55:56.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:55:56.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-28T10:55:56.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 55, 45), 13.92, 39.5, 0.0, 15.56, 17.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:55:56.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:55:45
2025-09-28T10:55:57.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:55:57.174 [DEBUG] [Thread-122547] [transport.py] [_log()] starting thread (client mode): 0x2b96e0b0
2025-09-28T10:55:57.174 [DEBUG] [Thread-122547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:57.193 [DEBUG] [Thread-122547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:55:57.193 [INFO] [Thread-122547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:55:57.196 [DEBUG] [Thread-122547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:57.196 [DEBUG] [Thread-122547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:55:57.196 [DEBUG] [Thread-122547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] Compression: none
2025-09-28T10:55:57.197 [DEBUG] [Thread-122547] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:57.213 [DEBUG] [Thread-122547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:57.213 [DEBUG] [Thread-122547] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:57.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:55:57.214 [DEBUG] [Thread-122547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:55:57.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:57.215 [DEBUG] [Thread-122547] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:57.216 [DEBUG] [Thread-122547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:57.216 [DEBUG] [Thread-122547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:57.216 [DEBUG] [Thread-122547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:55:57.216 [DEBUG] [Thread-122547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:57.235 [INFO] [Thread-122547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:57.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:58.013 [DEBUG] [Thread-122547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:58.013 [DEBUG] [Thread-122547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:58.013 [DEBUG] [Thread-122547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:55:58.055 [DEBUG] [Thread-122547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:58.055 [DEBUG] [Thread-122547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:58.058 [DEBUG] [Thread-122547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:58.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:58.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:55:58.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:55:58.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:55:58.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:58.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:55:58.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:58.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371613 -999.00  +17.20  13.54     44   +5.00 1 1 1 1 1   888    0 13.61 35.37 ----- 18.7 13.5 258.8 20.6 26.7 -28.8 25.4 -26.4 24.3 -25.7 25.3 -28.3
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371613
2025-09-28T10:55:58.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:55:58.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:55:58.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:55:58.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:55:58.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:55:58.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:55:45', tmtdew=13.92, humidity=39.5, cloud=0.0, wind=15.56, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:55:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:55:58.077 [DEBUG] [Thread-122547] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:55: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-28T10:55:58.170 [DEBUG] [Thread-122550] [transport.py] [_log()] starting thread (client mode): 0x2e3c0310
2025-09-28T10:55:58.170 [DEBUG] [Thread-122550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:55:58.185 [DEBUG] [Thread-122550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:55:58.185 [INFO] [Thread-122550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] client lang: <none>
2025-09-28T10:55:58.193 [DEBUG] [Thread-122550] [transport.py] [_log()] server lang: <none>
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] kex follows: False
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] Compression: none
2025-09-28T10:55:58.194 [DEBUG] [Thread-122550] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:55:58.251 [DEBUG] [Thread-122550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:55:58.252 [DEBUG] [Thread-122550] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:55:58.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:55:58.253 [DEBUG] [Thread-122550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:55:58.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:55:58.307 [DEBUG] [Thread-122550] [transport.py] [_log()] userauth is OK
2025-09-28T10:55:58.308 [DEBUG] [Thread-122550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:55:58.308 [DEBUG] [Thread-122550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:55:58.308 [DEBUG] [Thread-122550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:55:58.308 [DEBUG] [Thread-122550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:55:58.327 [INFO] [Thread-122550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:55:58.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:55:58.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:55:59.266 [DEBUG] [Thread-122550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:55:59.266 [DEBUG] [Thread-122550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:55:59.314 [DEBUG] [Thread-122550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:55:59.314 [DEBUG] [Thread-122550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:55:59.323 [DEBUG] [Thread-122550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:55:59.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:55:59.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-28T10:55:59.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-28T10:55:59.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:55:59.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:55:59.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:55:59.358 [DEBUG] [Thread-122550] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:04.385 [DEBUG] [Thread-122552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:09.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:56:09.361 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:56:09.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-28T10:56:09.906 [DEBUG] [Thread-122553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:09.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 55, 45), 13.92, 39.5, 0.0, 15.56, 17.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:56:09.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:55:45
2025-09-28T10:56:10.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:56:10.202 [DEBUG] [Thread-122554] [transport.py] [_log()] starting thread (client mode): 0x2e3def80
2025-09-28T10:56:10.202 [DEBUG] [Thread-122554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:10.223 [DEBUG] [Thread-122554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:56:10.223 [INFO] [Thread-122554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:56:10.227 [DEBUG] [Thread-122554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:10.227 [DEBUG] [Thread-122554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:56:10.227 [DEBUG] [Thread-122554] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:10.227 [DEBUG] [Thread-122554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] Compression: none
2025-09-28T10:56:10.228 [DEBUG] [Thread-122554] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:10.245 [DEBUG] [Thread-122554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:10.246 [DEBUG] [Thread-122554] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:10.246 [DEBUG] [Thread-122554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:56:10.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:56:10.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:10.248 [DEBUG] [Thread-122554] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:10.248 [DEBUG] [Thread-122554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:10.248 [DEBUG] [Thread-122554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:10.248 [DEBUG] [Thread-122554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:56:10.249 [DEBUG] [Thread-122554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:10.266 [INFO] [Thread-122554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:10.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:10.914 [DEBUG] [Thread-122554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:10.915 [DEBUG] [Thread-122554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:10.915 [DEBUG] [Thread-122554] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:56:10.955 [DEBUG] [Thread-122554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:10.955 [DEBUG] [Thread-122554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:10.958 [DEBUG] [Thread-122554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:10.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:10.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:56:10.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:56:10.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:56:10.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:10.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:56:10.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:10.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371961 -999.00  +16.90  12.05     45   +4.90 1 1 1 1 1   888    0 13.42 28.94 ----- 12.9 12.1 288.4 18.4 26.7 -28.4 25.4 -26.4 24.1 -30.6 25.1 -27.3
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371961
2025-09-28T10:56:10.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:56:10.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:56:10.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:56:10.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:56:10.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:56:10.984 [DEBUG] [Thread-122554] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:10.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:55:45', tmtdew=13.92, humidity=39.5, cloud=0.0, wind=15.56, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:55:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:56:11.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-28T10:56:11.090 [DEBUG] [Thread-122557] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T10:56:11.090 [DEBUG] [Thread-122557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:11.104 [DEBUG] [Thread-122557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:56:11.104 [INFO] [Thread-122557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:11.111 [DEBUG] [Thread-122557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] Compression: none
2025-09-28T10:56:11.112 [DEBUG] [Thread-122557] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:11.169 [DEBUG] [Thread-122557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:11.169 [DEBUG] [Thread-122557] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:11.170 [DEBUG] [Thread-122557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:56:11.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:56:11.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:11.224 [DEBUG] [Thread-122557] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:11.225 [DEBUG] [Thread-122557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:11.225 [DEBUG] [Thread-122557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:11.225 [DEBUG] [Thread-122557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:56:11.225 [DEBUG] [Thread-122557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:11.244 [INFO] [Thread-122557] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:11.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-28T10:56:11.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:12.317 [DEBUG] [Thread-122557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:12.317 [DEBUG] [Thread-122557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:12.365 [DEBUG] [Thread-122557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:12.365 [DEBUG] [Thread-122557] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:12.373 [DEBUG] [Thread-122557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:12.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:12.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-28T10:56:12.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-28T10:56:12.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:12.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:12.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:12.407 [DEBUG] [Thread-122557] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:22.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:56:22.410 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:56:22.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-28T10:56:22.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 56, 17), 14.09, 39.07, 0.0, 15.28, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:56:22.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:56:17
2025-09-28T10:56:23.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:56:23.243 [DEBUG] [Thread-122559] [transport.py] [_log()] starting thread (client mode): 0x2e3f8970
2025-09-28T10:56:23.243 [DEBUG] [Thread-122559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:23.262 [DEBUG] [Thread-122559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:56:23.262 [INFO] [Thread-122559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:23.266 [DEBUG] [Thread-122559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] Compression: none
2025-09-28T10:56:23.267 [DEBUG] [Thread-122559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:23.285 [DEBUG] [Thread-122559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:23.285 [DEBUG] [Thread-122559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:23.286 [DEBUG] [Thread-122559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:56:23.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:56:23.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:23.288 [DEBUG] [Thread-122559] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:23.288 [DEBUG] [Thread-122559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:23.288 [DEBUG] [Thread-122559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:23.288 [DEBUG] [Thread-122559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:56:23.289 [DEBUG] [Thread-122559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:23.322 [INFO] [Thread-122559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:23.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:24.084 [DEBUG] [Thread-122559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:24.085 [DEBUG] [Thread-122559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:24.085 [DEBUG] [Thread-122559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:56:24.125 [DEBUG] [Thread-122559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:24.125 [DEBUG] [Thread-122559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:24.128 [DEBUG] [Thread-122559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:24.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:24.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:56:24.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:56:24.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:56:24.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:24.144 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:56:24.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:24.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:56:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.371961 -999.00  +16.90  12.05     45   +4.90 1 1 1 1 1   888    0 13.42 28.94 ----- 12.9 12.1 288.4 18.4 26.7 -28.4 25.4 -26.4 24.1 -30.6 25.1 -27.3
2025-09-28T10:56:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:56:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:56:24.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.371961
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:56:24.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:56:17', tmtdew=14.09, humidity=39.07, cloud=0.0, wind=15.28, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:55:37.430', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:56:24.147 [DEBUG] [Thread-122559] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:24.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-28T10:56:24.240 [DEBUG] [Thread-122562] [transport.py] [_log()] starting thread (client mode): 0x2e374e50
2025-09-28T10:56:24.240 [DEBUG] [Thread-122562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:24.255 [DEBUG] [Thread-122562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:56:24.256 [INFO] [Thread-122562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:56:24.263 [DEBUG] [Thread-122562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:24.263 [DEBUG] [Thread-122562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:56:24.263 [DEBUG] [Thread-122562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:24.264 [DEBUG] [Thread-122562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] Compression: none
2025-09-28T10:56:24.265 [DEBUG] [Thread-122562] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:24.323 [DEBUG] [Thread-122562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:24.323 [DEBUG] [Thread-122562] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:24.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:56:24.324 [DEBUG] [Thread-122562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:56:24.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:24.381 [DEBUG] [Thread-122562] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:24.381 [DEBUG] [Thread-122562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:24.382 [DEBUG] [Thread-122562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:24.382 [DEBUG] [Thread-122562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:56:24.382 [DEBUG] [Thread-122562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:24.402 [INFO] [Thread-122562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:24.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-28T10:56:24.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:24.942 [DEBUG] [Thread-122564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:25.363 [DEBUG] [Thread-122562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:25.363 [DEBUG] [Thread-122562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:25.411 [DEBUG] [Thread-122562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:25.411 [DEBUG] [Thread-122562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:25.419 [DEBUG] [Thread-122562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:25.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:25.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-28T10:56:25.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-28T10:56:25.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:25.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:25.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:25.450 [DEBUG] [Thread-122562] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:33.104 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:33.105 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:35.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:56:35.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:56:35.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-28T10:56:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 56, 17), 14.09, 39.07, 0.0, 15.28, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:56:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:56:17
2025-09-28T10:56:36.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:56:36.281 [DEBUG] [Thread-122565] [transport.py] [_log()] starting thread (client mode): 0x2e3df670
2025-09-28T10:56:36.281 [DEBUG] [Thread-122565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:36.300 [DEBUG] [Thread-122565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:56:36.301 [INFO] [Thread-122565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:36.302 [DEBUG] [Thread-122565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] Compression: none
2025-09-28T10:56:36.303 [DEBUG] [Thread-122565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:36.313 [DEBUG] [Thread-122565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:36.314 [DEBUG] [Thread-122565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:36.315 [DEBUG] [Thread-122565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:56:36.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:56:36.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:36.317 [DEBUG] [Thread-122565] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:36.317 [DEBUG] [Thread-122565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:36.317 [DEBUG] [Thread-122565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:36.317 [DEBUG] [Thread-122565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:56:36.318 [DEBUG] [Thread-122565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:36.346 [INFO] [Thread-122565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:36.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:36.933 [DEBUG] [Thread-122565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:36.933 [DEBUG] [Thread-122565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:36.933 [DEBUG] [Thread-122565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:56:36.973 [DEBUG] [Thread-122565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:36.974 [DEBUG] [Thread-122565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:36.976 [DEBUG] [Thread-122565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:36.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:36.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:56:36.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:56:36.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:56:36.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:36.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:56:36.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:36.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.372308 -999.00  +16.80  11.86     45   +5.00 1 1 1 1 1   888    0 13.58 26.38 ----- 12.6 11.9 272.4 15.0 26.6 -28.2 25.4 -25.9 23.9 -25.3 25.1 -27.1
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.372308
2025-09-28T10:56:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:56:36.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:56:36.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:56:36.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:56:36.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:56:36.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:56:17', tmtdew=14.09, humidity=39.07, cloud=0.0, wind=15.28, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:56:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:56:36.995 [DEBUG] [Thread-122565] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:37.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-28T10:56:37.087 [DEBUG] [Thread-122568] [transport.py] [_log()] starting thread (client mode): 0x2b9dc7f0
2025-09-28T10:56:37.087 [DEBUG] [Thread-122568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:37.103 [DEBUG] [Thread-122568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:56:37.104 [INFO] [Thread-122568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:56:37.111 [DEBUG] [Thread-122568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:37.111 [DEBUG] [Thread-122568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:37.112 [DEBUG] [Thread-122568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:37.113 [DEBUG] [Thread-122568] [transport.py] [_log()] Compression: none
2025-09-28T10:56:37.113 [DEBUG] [Thread-122568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:37.169 [DEBUG] [Thread-122568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:37.170 [DEBUG] [Thread-122568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:37.170 [DEBUG] [Thread-122568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:56:37.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:56:37.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:37.225 [DEBUG] [Thread-122568] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:37.226 [DEBUG] [Thread-122568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:37.226 [DEBUG] [Thread-122568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:37.226 [DEBUG] [Thread-122568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:56:37.226 [DEBUG] [Thread-122568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:37.247 [INFO] [Thread-122568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:37.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-28T10:56:37.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:38.224 [DEBUG] [Thread-122568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:38.225 [DEBUG] [Thread-122568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:38.272 [DEBUG] [Thread-122568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:38.272 [DEBUG] [Thread-122568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:38.281 [DEBUG] [Thread-122568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:38.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:38.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')
2025-09-28T10:56: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') -> 00000000
2025-09-28T10:56:38.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:38.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:38.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:38.321 [DEBUG] [Thread-122568] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:39.993 [DEBUG] [Thread-122570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:56:48.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:56:48.321 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:56:48.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-28T10:56:48.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 56, 17), 14.09, 39.07, 0.0, 15.28, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:56:48.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:56:17
2025-09-28T10:56:49.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:56:49.159 [DEBUG] [Thread-122571] [transport.py] [_log()] starting thread (client mode): 0x2b9debc0
2025-09-28T10:56:49.159 [DEBUG] [Thread-122571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:49.178 [DEBUG] [Thread-122571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:56:49.178 [INFO] [Thread-122571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:56:49.181 [DEBUG] [Thread-122571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] Compression: none
2025-09-28T10:56:49.182 [DEBUG] [Thread-122571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:49.198 [DEBUG] [Thread-122571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:49.198 [DEBUG] [Thread-122571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:49.199 [DEBUG] [Thread-122571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:56:49.199 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:56:49.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:49.240 [DEBUG] [Thread-122571] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:49.240 [DEBUG] [Thread-122571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:49.240 [DEBUG] [Thread-122571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:49.240 [DEBUG] [Thread-122571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:56:49.240 [DEBUG] [Thread-122571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:49.263 [INFO] [Thread-122571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:49.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:49.849 [DEBUG] [Thread-122571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:49.849 [DEBUG] [Thread-122571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:49.849 [DEBUG] [Thread-122571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:56:49.891 [DEBUG] [Thread-122571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:49.891 [DEBUG] [Thread-122571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:49.893 [DEBUG] [Thread-122571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:49.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:49.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:56:49.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:56:49.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:56:49.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:49.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:56:49.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:49.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.372308 -999.00  +16.80  11.86     45   +5.00 1 1 1 1 1   888    0 13.58 26.38 ----- 12.6 11.9 272.4 15.0 26.6 -28.2 25.4 -25.9 23.9 -25.3 25.1 -27.1
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.372308
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:56:49.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:56:17', tmtdew=14.09, humidity=39.07, cloud=0.0, wind=15.28, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:56:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:56:49.913 [DEBUG] [Thread-122571] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:49.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-28T10:56:49.997 [DEBUG] [Thread-122574] [transport.py] [_log()] starting thread (client mode): 0x2e362710
2025-09-28T10:56:49.997 [DEBUG] [Thread-122574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:56:50.014 [DEBUG] [Thread-122574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:56:50.014 [INFO] [Thread-122574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] client lang: <none>
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] server lang: <none>
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] kex follows: False
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] Compression: none
2025-09-28T10:56:50.022 [DEBUG] [Thread-122574] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:56:50.077 [DEBUG] [Thread-122574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:56:50.077 [DEBUG] [Thread-122574] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:56:50.077 [DEBUG] [Thread-122574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:56:50.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:56:50.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:56:50.134 [DEBUG] [Thread-122574] [transport.py] [_log()] userauth is OK
2025-09-28T10:56:50.134 [DEBUG] [Thread-122574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:56:50.134 [DEBUG] [Thread-122574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:56:50.134 [DEBUG] [Thread-122574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:56:50.134 [DEBUG] [Thread-122574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:56:50.151 [INFO] [Thread-122574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:56:50.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-28T10:56:50.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:56:51.150 [DEBUG] [Thread-122574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:56:51.150 [DEBUG] [Thread-122574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:56:51.199 [DEBUG] [Thread-122574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:56:51.199 [DEBUG] [Thread-122574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:56:51.207 [DEBUG] [Thread-122574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:56:51.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:56:51.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')
2025-09-28T10:56: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') -> 00000000
2025-09-28T10:56:51.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:56:51.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:56:51.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:56:51.240 [DEBUG] [Thread-122574] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:56:55.039 [DEBUG] [Thread-122576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:01.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:57:01.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:57:01.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:57:01.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 56, 49), 14.17, 38.84, 0.0, 12.35, 17.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:57:01.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:56:49
2025-09-28T10:57:01.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:57:02.080 [DEBUG] [Thread-122577] [transport.py] [_log()] starting thread (client mode): 0x2b946ef0
2025-09-28T10:57:02.080 [DEBUG] [Thread-122577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:02.100 [DEBUG] [Thread-122577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:57:02.100 [INFO] [Thread-122577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:02.103 [DEBUG] [Thread-122577] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] Compression: none
2025-09-28T10:57:02.104 [DEBUG] [Thread-122577] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:02.123 [DEBUG] [Thread-122577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:02.124 [DEBUG] [Thread-122577] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:02.124 [DEBUG] [Thread-122577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:57:02.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:57:02.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:02.126 [DEBUG] [Thread-122577] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:02.126 [DEBUG] [Thread-122577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:02.126 [DEBUG] [Thread-122577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:02.126 [DEBUG] [Thread-122577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:57:02.126 [DEBUG] [Thread-122577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:02.151 [INFO] [Thread-122577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:02.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:02.882 [DEBUG] [Thread-122577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:02.883 [DEBUG] [Thread-122577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:02.883 [DEBUG] [Thread-122577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:57:02.923 [DEBUG] [Thread-122577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:02.923 [DEBUG] [Thread-122577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:02.925 [DEBUG] [Thread-122577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:02.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:02.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:57:02.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:57:02.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:57:02.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:02.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:57:02.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:02.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:02.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:57:02.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.372308 -999.00  +16.80  11.86     45   +5.00 1 1 1 1 1   888    0 13.58 26.38 ----- 12.6 11.9 272.4 15.0 26.6 -28.2 25.4 -25.9 23.9 -25.3 25.1 -27.1
2025-09-28T10:57:02.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:57:02.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:57:02.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.372308
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:57:02.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:56:49', tmtdew=14.17, humidity=38.84, cloud=0.0, wind=12.35, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:56:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:57:02.944 [DEBUG] [Thread-122577] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:03.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:57:03.039 [DEBUG] [Thread-122580] [transport.py] [_log()] starting thread (client mode): 0x2b9cc6a0
2025-09-28T10:57:03.040 [DEBUG] [Thread-122580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:03.054 [DEBUG] [Thread-122580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:57:03.054 [INFO] [Thread-122580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:57:03.062 [DEBUG] [Thread-122580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:03.062 [DEBUG] [Thread-122580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] Compression: none
2025-09-28T10:57:03.063 [DEBUG] [Thread-122580] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:03.118 [DEBUG] [Thread-122580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:03.119 [DEBUG] [Thread-122580] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:03.119 [DEBUG] [Thread-122580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:57:03.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:57:03.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:03.175 [DEBUG] [Thread-122580] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:03.175 [DEBUG] [Thread-122580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:03.175 [DEBUG] [Thread-122580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:03.175 [DEBUG] [Thread-122580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:57:03.175 [DEBUG] [Thread-122580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:03.189 [INFO] [Thread-122580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:03.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-28T10:57:03.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:04.181 [DEBUG] [Thread-122580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:04.182 [DEBUG] [Thread-122580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:04.229 [DEBUG] [Thread-122580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:04.229 [DEBUG] [Thread-122580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:04.238 [DEBUG] [Thread-122580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:04.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:04.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-28T10:57:04.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-28T10:57:04.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:04.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:04.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:04.273 [DEBUG] [Thread-122580] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:04.440 [DEBUG] [Thread-122582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:10.071 [DEBUG] [Thread-122583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:14.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:57:14.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:57:14.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-28T10:57:14.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 56, 49), 14.17, 38.84, 0.0, 12.35, 17.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:57:14.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:56:49
2025-09-28T10:57:14.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:57:15.094 [DEBUG] [Thread-122584] [transport.py] [_log()] starting thread (client mode): 0x2e3df5b0
2025-09-28T10:57:15.094 [DEBUG] [Thread-122584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:15.112 [DEBUG] [Thread-122584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:57:15.112 [INFO] [Thread-122584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:15.115 [DEBUG] [Thread-122584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] Compression: none
2025-09-28T10:57:15.116 [DEBUG] [Thread-122584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:15.133 [DEBUG] [Thread-122584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:15.134 [DEBUG] [Thread-122584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:15.134 [DEBUG] [Thread-122584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:57:15.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:57:15.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:15.136 [DEBUG] [Thread-122584] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:15.137 [DEBUG] [Thread-122584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:15.137 [DEBUG] [Thread-122584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:15.137 [DEBUG] [Thread-122584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:57:15.137 [DEBUG] [Thread-122584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:15.155 [INFO] [Thread-122584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:15.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:15.809 [DEBUG] [Thread-122584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:15.809 [DEBUG] [Thread-122584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:15.809 [DEBUG] [Thread-122584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:57:15.850 [DEBUG] [Thread-122584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:15.850 [DEBUG] [Thread-122584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:15.852 [DEBUG] [Thread-122584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:15.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:15.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:57:15.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:57:15.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:57:15.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:15.869 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:57:15.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373002 -999.00  +17.10   3.54     45   +5.00 1 1 1 1 1   888    0 13.08 18.35 ----- 3.8 3.5 232.2 9.6 26.8 -25.9 25.4 -25.5 24.1 -24.7 25.2 -25.4
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373002
2025-09-28T10:57:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:57:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:57:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:57:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:57:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:57:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:56:49', tmtdew=14.17, humidity=38.84, cloud=0.0, wind=12.35, temperature=17.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:57:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:57:15.870 [DEBUG] [Thread-122584] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:15.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-28T10:57:15.952 [DEBUG] [Thread-122587] [transport.py] [_log()] starting thread (client mode): 0x2e3df340
2025-09-28T10:57:15.952 [DEBUG] [Thread-122587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:15.967 [DEBUG] [Thread-122587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:57:15.967 [INFO] [Thread-122587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:57:15.974 [DEBUG] [Thread-122587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:15.974 [DEBUG] [Thread-122587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:57:15.974 [DEBUG] [Thread-122587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] Compression: none
2025-09-28T10:57:15.975 [DEBUG] [Thread-122587] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:16.032 [DEBUG] [Thread-122587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:16.032 [DEBUG] [Thread-122587] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:16.033 [DEBUG] [Thread-122587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:57:16.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:57:16.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:16.087 [DEBUG] [Thread-122587] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:16.088 [DEBUG] [Thread-122587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:16.088 [DEBUG] [Thread-122587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:16.088 [DEBUG] [Thread-122587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:57:16.088 [DEBUG] [Thread-122587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:16.107 [INFO] [Thread-122587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:16.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-28T10:57:16.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:17.098 [DEBUG] [Thread-122587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:17.098 [DEBUG] [Thread-122587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:17.146 [DEBUG] [Thread-122587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:17.146 [DEBUG] [Thread-122587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:17.155 [DEBUG] [Thread-122587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:17.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:17.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-28T10:57:17.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-28T10:57:17.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:17.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:17.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:17.190 [DEBUG] [Thread-122587] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:25.117 [DEBUG] [Thread-122589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:27.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:57:27.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:57:27.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:57:27.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 57, 21), 14.03, 39.19, 0.0, 10.73, 17.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:57:27.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:57:21
2025-09-28T10:57:27.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:57:28.070 [DEBUG] [Thread-122590] [transport.py] [_log()] starting thread (client mode): 0x2e3deda0
2025-09-28T10:57:28.070 [DEBUG] [Thread-122590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:28.085 [DEBUG] [Thread-122590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:57:28.085 [INFO] [Thread-122590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:28.088 [DEBUG] [Thread-122590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:28.089 [DEBUG] [Thread-122590] [transport.py] [_log()] Compression: none
2025-09-28T10:57:28.089 [DEBUG] [Thread-122590] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:28.104 [DEBUG] [Thread-122590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:28.104 [DEBUG] [Thread-122590] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:28.104 [DEBUG] [Thread-122590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:57:28.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:57:28.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:28.105 [DEBUG] [Thread-122590] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:28.105 [DEBUG] [Thread-122590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:28.105 [DEBUG] [Thread-122590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:28.105 [DEBUG] [Thread-122590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:57:28.105 [DEBUG] [Thread-122590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:28.115 [INFO] [Thread-122590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:28.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:28.923 [DEBUG] [Thread-122590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:28.923 [DEBUG] [Thread-122590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:28.923 [DEBUG] [Thread-122590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:57:28.964 [DEBUG] [Thread-122590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:28.964 [DEBUG] [Thread-122590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:28.966 [DEBUG] [Thread-122590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:28.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:28.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:57:28.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:57:28.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:57:28.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:28.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:57:28.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373002 -999.00  +17.10   3.54     45   +5.00 1 1 1 1 1   888    0 13.08 18.35 ----- 3.8 3.5 232.2 9.6 26.8 -25.9 25.4 -25.5 24.1 -24.7 25.2 -25.4
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:57:28.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373002
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:57:28.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:57:21', tmtdew=14.03, humidity=39.19, cloud=0.0, wind=10.73, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:57:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:57:28.984 [DEBUG] [Thread-122590] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:29.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:57:29.070 [DEBUG] [Thread-122593] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-28T10:57:29.070 [DEBUG] [Thread-122593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:29.088 [DEBUG] [Thread-122593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:57:29.088 [INFO] [Thread-122593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:57:29.095 [DEBUG] [Thread-122593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:29.095 [DEBUG] [Thread-122593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:57:29.095 [DEBUG] [Thread-122593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] Compression: none
2025-09-28T10:57:29.096 [DEBUG] [Thread-122593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:29.155 [DEBUG] [Thread-122593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:29.155 [DEBUG] [Thread-122593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:29.156 [DEBUG] [Thread-122593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:57:29.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:57:29.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:29.212 [DEBUG] [Thread-122593] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:29.212 [DEBUG] [Thread-122593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:29.212 [DEBUG] [Thread-122593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:29.212 [DEBUG] [Thread-122593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:57:29.212 [DEBUG] [Thread-122593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:29.226 [INFO] [Thread-122593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:29.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-28T10:57:29.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:30.210 [DEBUG] [Thread-122593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:30.210 [DEBUG] [Thread-122593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:30.258 [DEBUG] [Thread-122593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:30.258 [DEBUG] [Thread-122593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:30.266 [DEBUG] [Thread-122593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:30.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:30.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-28T10:57:30.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-28T10:57:30.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:30.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:30.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:30.297 [DEBUG] [Thread-122593] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:33.246 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:33.247 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:40.170 [DEBUG] [Thread-122595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:40.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:57:40.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:57:40.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-28T10:57:40.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 57, 21), 14.03, 39.19, 0.0, 10.73, 17.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:57:40.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:57:21
2025-09-28T10:57:40.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:57:41.130 [DEBUG] [Thread-122596] [transport.py] [_log()] starting thread (client mode): 0x2e3766e0
2025-09-28T10:57:41.130 [DEBUG] [Thread-122596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:41.149 [DEBUG] [Thread-122596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:57:41.149 [INFO] [Thread-122596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] Compression: none
2025-09-28T10:57:41.150 [DEBUG] [Thread-122596] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:41.169 [DEBUG] [Thread-122596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:41.169 [DEBUG] [Thread-122596] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:41.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:57:41.170 [DEBUG] [Thread-122596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:57:41.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:41.172 [DEBUG] [Thread-122596] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:41.173 [DEBUG] [Thread-122596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:41.173 [DEBUG] [Thread-122596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:41.173 [DEBUG] [Thread-122596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:57:41.173 [DEBUG] [Thread-122596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:41.186 [INFO] [Thread-122596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:41.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:41.944 [DEBUG] [Thread-122596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:41.944 [DEBUG] [Thread-122596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:41.944 [DEBUG] [Thread-122596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:57:41.985 [DEBUG] [Thread-122596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:41.985 [DEBUG] [Thread-122596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:41.988 [DEBUG] [Thread-122596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:42.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:42.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:57:42.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:57:42.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:57:42.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:42.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:57:42.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:42.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373002 -999.00  +17.10   3.54     45   +5.00 1 1 1 1 1   888    0 13.08 18.35 ----- 3.8 3.5 232.2 9.6 26.8 -25.9 25.4 -25.5 24.1 -24.7 25.2 -25.4
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373002
2025-09-28T10:57:42.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:57:42.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:57:42.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:57:42.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:57:42.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:57:42.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:57:21', tmtdew=14.03, humidity=39.19, cloud=0.0, wind=10.73, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:57:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:57:42.014 [DEBUG] [Thread-122596] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:42.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-28T10:57:42.111 [DEBUG] [Thread-122599] [transport.py] [_log()] starting thread (client mode): 0x2b947c10
2025-09-28T10:57:42.112 [DEBUG] [Thread-122599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:42.127 [DEBUG] [Thread-122599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:57:42.127 [INFO] [Thread-122599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:57:42.134 [DEBUG] [Thread-122599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:42.135 [DEBUG] [Thread-122599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] Compression: none
2025-09-28T10:57:42.136 [DEBUG] [Thread-122599] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:42.192 [DEBUG] [Thread-122599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:42.193 [DEBUG] [Thread-122599] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:42.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:57:42.194 [DEBUG] [Thread-122599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:57:42.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:42.249 [DEBUG] [Thread-122599] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:42.249 [DEBUG] [Thread-122599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:42.249 [DEBUG] [Thread-122599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:42.249 [DEBUG] [Thread-122599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:57:42.249 [DEBUG] [Thread-122599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:42.268 [INFO] [Thread-122599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:42.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-28T10:57:42.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:43.264 [DEBUG] [Thread-122599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:43.264 [DEBUG] [Thread-122599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:43.312 [DEBUG] [Thread-122599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:43.312 [DEBUG] [Thread-122599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:43.321 [DEBUG] [Thread-122599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:43.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:43.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-28T10:57: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') -> 00000000
2025-09-28T10:57:43.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:43.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:43.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:43.356 [DEBUG] [Thread-122599] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:53.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:57:53.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:57:53.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-28T10:57:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 57, 21), 14.03, 39.19, 0.0, 10.73, 17.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:57:53.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:57:21
2025-09-28T10:57:54.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:57:54.268 [DEBUG] [Thread-122601] [transport.py] [_log()] starting thread (client mode): 0x2b98a830
2025-09-28T10:57:54.269 [DEBUG] [Thread-122601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:54.287 [DEBUG] [Thread-122601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:57:54.287 [INFO] [Thread-122601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:57:54.290 [DEBUG] [Thread-122601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] Compression: none
2025-09-28T10:57:54.291 [DEBUG] [Thread-122601] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:54.307 [DEBUG] [Thread-122601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:54.308 [DEBUG] [Thread-122601] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:54.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:57:54.308 [DEBUG] [Thread-122601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:57:54.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:54.308 [DEBUG] [Thread-122601] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:54.309 [DEBUG] [Thread-122601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:54.309 [DEBUG] [Thread-122601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:54.309 [DEBUG] [Thread-122601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:57:54.309 [DEBUG] [Thread-122601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:54.325 [INFO] [Thread-122601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:54.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:54.957 [DEBUG] [Thread-122601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:54.957 [DEBUG] [Thread-122601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:54.957 [DEBUG] [Thread-122601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:57:54.998 [DEBUG] [Thread-122601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:54.998 [DEBUG] [Thread-122601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:55.000 [DEBUG] [Thread-122601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:55.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:55.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:57:55.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:57:55.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:57:55.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:55.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:57:55.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373349 -999.00  +17.60   4.64     44   +5.30 1 1 1 1 1   888    0 12.50 13.06 ----- 3.9 4.6 138.9 6.7 26.9 -26.2 25.3 -24.9 24.1 -24.4 25.4 -25.0
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373349
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:57:55.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:57:21', tmtdew=14.03, humidity=39.19, cloud=0.0, wind=10.73, temperature=17.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:57:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:57:55.018 [DEBUG] [Thread-122601] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:57:55.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-28T10:57:55.103 [DEBUG] [Thread-122604] [transport.py] [_log()] starting thread (client mode): 0x2e349b10
2025-09-28T10:57:55.103 [DEBUG] [Thread-122604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:57:55.118 [DEBUG] [Thread-122604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:57:55.118 [INFO] [Thread-122604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:55.125 [DEBUG] [Thread-122604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] client lang: <none>
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] server lang: <none>
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] kex follows: False
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] Compression: none
2025-09-28T10:57:55.126 [DEBUG] [Thread-122604] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:57:55.184 [DEBUG] [Thread-122604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:57:55.184 [DEBUG] [Thread-122604] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:57:55.184 [DEBUG] [Thread-122604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:57:55.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:57:55.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:57:55.210 [DEBUG] [Thread-122606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:57:55.241 [DEBUG] [Thread-122604] [transport.py] [_log()] userauth is OK
2025-09-28T10:57:55.241 [DEBUG] [Thread-122604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:57:55.241 [DEBUG] [Thread-122604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:57:55.241 [DEBUG] [Thread-122604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:57:55.241 [DEBUG] [Thread-122604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:57:55.254 [INFO] [Thread-122604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:57:55.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-28T10:57:55.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:57:56.235 [DEBUG] [Thread-122604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:57:56.236 [DEBUG] [Thread-122604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:57:56.288 [DEBUG] [Thread-122604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:57:56.288 [DEBUG] [Thread-122604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:57:56.299 [DEBUG] [Thread-122604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:57:56.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:57:56.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-28T10:57:56.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-28T10:57:56.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:57:56.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:57:56.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:57:56.337 [DEBUG] [Thread-122604] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:04.503 [DEBUG] [Thread-122607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:06.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:58:06.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:58:06.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-28T10:58:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 57, 53), 14.36, 38.36, 0.0, 13.76, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:58:06.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:57:53
2025-09-28T10:58:07.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:58:07.184 [DEBUG] [Thread-122608] [transport.py] [_log()] starting thread (client mode): 0x30ddead0
2025-09-28T10:58:07.185 [DEBUG] [Thread-122608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:07.204 [DEBUG] [Thread-122608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:58:07.205 [INFO] [Thread-122608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] Compression: none
2025-09-28T10:58:07.208 [DEBUG] [Thread-122608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:07.228 [DEBUG] [Thread-122608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:07.228 [DEBUG] [Thread-122608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:07.228 [DEBUG] [Thread-122608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:58:07.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:58:07.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:07.229 [DEBUG] [Thread-122608] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:07.229 [DEBUG] [Thread-122608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:07.229 [DEBUG] [Thread-122608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:07.229 [DEBUG] [Thread-122608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:58:07.230 [DEBUG] [Thread-122608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:07.246 [INFO] [Thread-122608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:07.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:08.064 [DEBUG] [Thread-122608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:08.064 [DEBUG] [Thread-122608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:08.064 [DEBUG] [Thread-122608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:58:08.105 [DEBUG] [Thread-122608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:08.105 [DEBUG] [Thread-122608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:08.108 [DEBUG] [Thread-122608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:08.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:08.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:58:08.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:58:08.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:58:08.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:08.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:58:08.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373349 -999.00  +17.60   4.64     44   +5.30 1 1 1 1 1   888    0 12.50 13.06 ----- 3.9 4.6 138.9 6.7 26.9 -26.2 25.3 -24.9 24.1 -24.4 25.4 -25.0
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373349
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:58:08.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:57:53', tmtdew=14.36, humidity=38.36, cloud=0.0, wind=13.76, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:57:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:58:08.128 [DEBUG] [Thread-122608] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:08.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-28T10:58:08.213 [DEBUG] [Thread-122611] [transport.py] [_log()] starting thread (client mode): 0x30ddf9a0
2025-09-28T10:58:08.213 [DEBUG] [Thread-122611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:08.230 [DEBUG] [Thread-122611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:58:08.230 [INFO] [Thread-122611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:58:08.237 [DEBUG] [Thread-122611] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:08.237 [DEBUG] [Thread-122611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:58:08.237 [DEBUG] [Thread-122611] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:08.237 [DEBUG] [Thread-122611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:08.237 [DEBUG] [Thread-122611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] Compression: none
2025-09-28T10:58:08.238 [DEBUG] [Thread-122611] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:08.295 [DEBUG] [Thread-122611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:08.296 [DEBUG] [Thread-122611] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:08.296 [DEBUG] [Thread-122611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:58:08.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:58:08.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:08.353 [DEBUG] [Thread-122611] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:08.353 [DEBUG] [Thread-122611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:08.353 [DEBUG] [Thread-122611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:08.353 [DEBUG] [Thread-122611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:58:08.353 [DEBUG] [Thread-122611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:08.367 [INFO] [Thread-122611] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:08.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-28T10:58:08.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:09.418 [DEBUG] [Thread-122611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:09.418 [DEBUG] [Thread-122611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:09.466 [DEBUG] [Thread-122611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:09.466 [DEBUG] [Thread-122611] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:09.474 [DEBUG] [Thread-122611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:09.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:09.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-28T10:58:09.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-28T10:58:09.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:09.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:09.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:09.508 [DEBUG] [Thread-122611] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:10.252 [DEBUG] [Thread-122613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:19.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:58:19.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:58:19.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-28T10:58:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 57, 53), 14.36, 38.36, 0.0, 13.76, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:58:20.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:57:53
2025-09-28T10:58:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:58:20.341 [DEBUG] [Thread-122614] [transport.py] [_log()] starting thread (client mode): 0x2e374e50
2025-09-28T10:58:20.341 [DEBUG] [Thread-122614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:20.357 [DEBUG] [Thread-122614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:58:20.357 [INFO] [Thread-122614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:20.360 [DEBUG] [Thread-122614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:20.361 [DEBUG] [Thread-122614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:20.361 [DEBUG] [Thread-122614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:20.361 [DEBUG] [Thread-122614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:20.361 [DEBUG] [Thread-122614] [transport.py] [_log()] Compression: none
2025-09-28T10:58:20.361 [DEBUG] [Thread-122614] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:20.377 [DEBUG] [Thread-122614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:20.377 [DEBUG] [Thread-122614] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:20.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:58:20.378 [DEBUG] [Thread-122614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:58:20.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:20.379 [DEBUG] [Thread-122614] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:20.379 [DEBUG] [Thread-122614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:20.379 [DEBUG] [Thread-122614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:20.380 [DEBUG] [Thread-122614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:58:20.380 [DEBUG] [Thread-122614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:20.394 [INFO] [Thread-122614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:20.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:21.004 [DEBUG] [Thread-122614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:21.004 [DEBUG] [Thread-122614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:21.005 [DEBUG] [Thread-122614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:58:21.045 [DEBUG] [Thread-122614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:21.045 [DEBUG] [Thread-122614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:21.048 [DEBUG] [Thread-122614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:21.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:21.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:58:21.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:58:21.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:58:21.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:21.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:58:21.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:21.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373697 -999.00  +17.90   9.86     43   +5.20 1 1 1 1 1   888    0 12.91 10.96 ----- 9.4 9.9 168.4 12.2 27.1 -27.2 25.4 -25.7 24.3 -25.6 25.5 -26.0
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373697
2025-09-28T10:58:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:58:21.069 [DEBUG] [Thread-122614] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:58:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:58:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:58:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:58:21.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:57:53', tmtdew=14.36, humidity=38.36, cloud=0.0, wind=13.76, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:58:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:58:21.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:58:21.163 [DEBUG] [Thread-122617] [transport.py] [_log()] starting thread (client mode): 0x2e3744c0
2025-09-28T10:58:21.163 [DEBUG] [Thread-122617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:21.178 [DEBUG] [Thread-122617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:58:21.178 [INFO] [Thread-122617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] Compression: none
2025-09-28T10:58:21.186 [DEBUG] [Thread-122617] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:21.246 [DEBUG] [Thread-122617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:21.247 [DEBUG] [Thread-122617] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:21.247 [DEBUG] [Thread-122617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:58:21.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:58:21.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:21.302 [DEBUG] [Thread-122617] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:21.302 [DEBUG] [Thread-122617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:21.303 [DEBUG] [Thread-122617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:21.303 [DEBUG] [Thread-122617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:58:21.303 [DEBUG] [Thread-122617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:21.322 [INFO] [Thread-122617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:21.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-28T10:58:21.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:22.285 [DEBUG] [Thread-122617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:22.285 [DEBUG] [Thread-122617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:22.333 [DEBUG] [Thread-122617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:22.333 [DEBUG] [Thread-122617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:22.342 [DEBUG] [Thread-122617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:22.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:22.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')
2025-09-28T10:58:22.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-28T10:58:22.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:22.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:22.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:22.376 [DEBUG] [Thread-122617] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:25.290 [DEBUG] [Thread-122619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:32.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:58:32.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:58:32.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-28T10:58:32.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 58, 25), 14.11, 38.99, 0.0, 13.39, 17.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:58:32.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:58:25
2025-09-28T10:58:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:58:33.221 [DEBUG] [Thread-122620] [transport.py] [_log()] starting thread (client mode): 0x2e361d50
2025-09-28T10:58:33.221 [DEBUG] [Thread-122620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:33.232 [DEBUG] [Thread-122620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:58:33.232 [INFO] [Thread-122620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] Compression: none
2025-09-28T10:58:33.235 [DEBUG] [Thread-122620] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:33.252 [DEBUG] [Thread-122620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:33.252 [DEBUG] [Thread-122620] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:33.253 [DEBUG] [Thread-122620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:58:33.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:58:33.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:33.254 [DEBUG] [Thread-122620] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:33.254 [DEBUG] [Thread-122620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:33.254 [DEBUG] [Thread-122620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:33.254 [DEBUG] [Thread-122620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:58:33.254 [DEBUG] [Thread-122620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:33.272 [INFO] [Thread-122620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:33.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:33.388 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:33.389 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:33.974 [DEBUG] [Thread-122620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:33.974 [DEBUG] [Thread-122620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:33.975 [DEBUG] [Thread-122620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:58:34.015 [DEBUG] [Thread-122620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:34.015 [DEBUG] [Thread-122620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:34.018 [DEBUG] [Thread-122620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:34.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:34.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:58:34.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:58:34.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:58:34.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:34.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:58:34.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:34.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:58:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373697 -999.00  +17.90   9.86     43   +5.20 1 1 1 1 1   888    0 12.91 10.96 ----- 9.4 9.9 168.4 12.2 27.1 -27.2 25.4 -25.7 24.3 -25.6 25.5 -26.0
2025-09-28T10:58:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:58:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:58:34.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373697
2025-09-28T10:58:34.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:58:34.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:58:34.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:58:34.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:58:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:58:34.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:58:25', tmtdew=14.11, humidity=38.99, cloud=0.0, wind=13.39, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:58:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:58:34.043 [DEBUG] [Thread-122620] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:34.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:58:34.138 [DEBUG] [Thread-122623] [transport.py] [_log()] starting thread (client mode): 0x2e3fbe50
2025-09-28T10:58:34.138 [DEBUG] [Thread-122623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:34.153 [DEBUG] [Thread-122623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:58:34.153 [INFO] [Thread-122623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:58:34.161 [DEBUG] [Thread-122623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:34.161 [DEBUG] [Thread-122623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:58:34.161 [DEBUG] [Thread-122623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:34.161 [DEBUG] [Thread-122623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:34.162 [DEBUG] [Thread-122623] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] Compression: none
2025-09-28T10:58:34.163 [DEBUG] [Thread-122623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:34.218 [DEBUG] [Thread-122623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:34.218 [DEBUG] [Thread-122623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:34.219 [DEBUG] [Thread-122623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:58:34.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:58:34.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:34.275 [DEBUG] [Thread-122623] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:34.275 [DEBUG] [Thread-122623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:34.275 [DEBUG] [Thread-122623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:34.275 [DEBUG] [Thread-122623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:58:34.275 [DEBUG] [Thread-122623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:34.294 [INFO] [Thread-122623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58: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-28T10:58:34.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:35.243 [DEBUG] [Thread-122623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:35.243 [DEBUG] [Thread-122623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:35.291 [DEBUG] [Thread-122623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:35.291 [DEBUG] [Thread-122623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:35.300 [DEBUG] [Thread-122623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:35.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:35.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-28T10:58:35.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-28T10:58:35.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:35.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:35.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:35.335 [DEBUG] [Thread-122623] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:40.334 [DEBUG] [Thread-122625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:45.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:58:45.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:58:45.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:58:45.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 58, 25), 14.11, 38.99, 0.0, 13.39, 17.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:58:45.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:58:25
2025-09-28T10:58:46.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:58:46.203 [DEBUG] [Thread-122626] [transport.py] [_log()] starting thread (client mode): 0x2b9448b0
2025-09-28T10:58:46.203 [DEBUG] [Thread-122626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:46.225 [DEBUG] [Thread-122626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:58:46.225 [INFO] [Thread-122626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] Compression: none
2025-09-28T10:58:46.229 [DEBUG] [Thread-122626] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:46.241 [DEBUG] [Thread-122626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:46.241 [DEBUG] [Thread-122626] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:46.241 [DEBUG] [Thread-122626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:58:46.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:58:46.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:46.242 [DEBUG] [Thread-122626] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:46.242 [DEBUG] [Thread-122626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:46.242 [DEBUG] [Thread-122626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:46.242 [DEBUG] [Thread-122626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:58:46.242 [DEBUG] [Thread-122626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:46.270 [INFO] [Thread-122626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:46.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:47.087 [DEBUG] [Thread-122626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:47.087 [DEBUG] [Thread-122626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:47.087 [DEBUG] [Thread-122626] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:58:47.128 [DEBUG] [Thread-122626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:47.128 [DEBUG] [Thread-122626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:47.130 [DEBUG] [Thread-122626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:47.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:47.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:58:47.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:58:47.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:58:47.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:47.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:58:47.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.373697 -999.00  +17.90   9.86     43   +5.20 1 1 1 1 1   888    0 12.91 10.96 ----- 9.4 9.9 168.4 12.2 27.1 -27.2 25.4 -25.7 24.3 -25.6 25.5 -26.0
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.373697
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:58:47.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:58:25', tmtdew=14.11, humidity=38.99, cloud=0.0, wind=13.39, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:58:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:58:47.148 [DEBUG] [Thread-122626] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:47.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-28T10:58:47.234 [DEBUG] [Thread-122629] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T10:58:47.234 [DEBUG] [Thread-122629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:47.249 [DEBUG] [Thread-122629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:58:47.249 [INFO] [Thread-122629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] Compression: none
2025-09-28T10:58:47.257 [DEBUG] [Thread-122629] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:47.322 [DEBUG] [Thread-122629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:47.322 [DEBUG] [Thread-122629] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:47.322 [DEBUG] [Thread-122629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:58:47.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:58:47.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:47.379 [DEBUG] [Thread-122629] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:47.379 [DEBUG] [Thread-122629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:47.379 [DEBUG] [Thread-122629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:47.379 [DEBUG] [Thread-122629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:58:47.379 [DEBUG] [Thread-122629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:47.393 [INFO] [Thread-122629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:47.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-28T10:58:47.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:58:48.355 [DEBUG] [Thread-122629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:58:48.355 [DEBUG] [Thread-122629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:58:48.407 [DEBUG] [Thread-122629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:58:48.407 [DEBUG] [Thread-122629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:58:48.421 [DEBUG] [Thread-122629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:58:48.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:58:48.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-28T10:58:48.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-28T10:58:48.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:58:48.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:58:48.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:58:48.466 [DEBUG] [Thread-122629] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:58:55.388 [DEBUG] [Thread-122631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:58:58.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:58:58.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:58:58.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-28T10:58:59.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 58, 25), 14.11, 38.99, 0.0, 13.39, 17.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:58:59.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:58:25
2025-09-28T10:58:59.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:58:59.343 [DEBUG] [Thread-122632] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-28T10:58:59.343 [DEBUG] [Thread-122632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:58:59.363 [DEBUG] [Thread-122632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:58:59.363 [INFO] [Thread-122632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] client lang: <none>
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] server lang: <none>
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] kex follows: False
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] Compression: none
2025-09-28T10:58:59.367 [DEBUG] [Thread-122632] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:58:59.385 [DEBUG] [Thread-122632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:58:59.385 [DEBUG] [Thread-122632] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:58:59.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:58:59.386 [DEBUG] [Thread-122632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:58:59.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:58:59.388 [DEBUG] [Thread-122632] [transport.py] [_log()] userauth is OK
2025-09-28T10:58:59.388 [DEBUG] [Thread-122632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:58:59.388 [DEBUG] [Thread-122632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:58:59.388 [DEBUG] [Thread-122632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:58:59.389 [DEBUG] [Thread-122632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:58:59.412 [INFO] [Thread-122632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:58:59.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:00.008 [DEBUG] [Thread-122632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:00.008 [DEBUG] [Thread-122632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:00.008 [DEBUG] [Thread-122632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:59:00.049 [DEBUG] [Thread-122632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:00.049 [DEBUG] [Thread-122632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:00.052 [DEBUG] [Thread-122632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:00.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:00.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:59:00.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:59:00.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:59:00.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:00.073 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:59:00.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:00.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374044 -999.00  +18.00  12.25     42   +5.20 1 1 1 1 1   888    0 12.81 11.02 ----- 9.8 12.2 190.4 14.3 27.1 -26.7 25.3 -27.2 24.4 -24.9 25.6 -26.3
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374044
2025-09-28T10:59:00.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:59:00.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:59:00.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:59:00.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:59:00.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:59:00.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:58:25', tmtdew=14.11, humidity=38.99, cloud=0.0, wind=13.39, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:58:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:59:00.075 [DEBUG] [Thread-122632] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:00.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-28T10:59:00.172 [DEBUG] [Thread-122635] [transport.py] [_log()] starting thread (client mode): 0x2b9f3310
2025-09-28T10:59:00.172 [DEBUG] [Thread-122635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:00.187 [DEBUG] [Thread-122635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:59:00.187 [INFO] [Thread-122635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] Compression: none
2025-09-28T10:59:00.195 [DEBUG] [Thread-122635] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:00.251 [DEBUG] [Thread-122635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:00.252 [DEBUG] [Thread-122635] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:00.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:59:00.253 [DEBUG] [Thread-122635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:59:00.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:00.308 [DEBUG] [Thread-122635] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:00.308 [DEBUG] [Thread-122635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:00.308 [DEBUG] [Thread-122635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:00.308 [DEBUG] [Thread-122635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:59:00.308 [DEBUG] [Thread-122635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:00.327 [INFO] [Thread-122635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:00.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:59:00.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:01.285 [DEBUG] [Thread-122635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:01.285 [DEBUG] [Thread-122635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:01.333 [DEBUG] [Thread-122635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:01.333 [DEBUG] [Thread-122635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:01.342 [DEBUG] [Thread-122635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:01.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:01.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-28T10:59:01.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-28T10:59:01.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:01.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:01.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:01.377 [DEBUG] [Thread-122635] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:04.555 [DEBUG] [Thread-122637 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:10.423 [DEBUG] [Thread-122638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:11.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:59:11.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:59:11.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:59:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 58, 57), 14.17, 38.47, 0.0, 11.01, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:59:11.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:58:57
2025-09-28T10:59:12.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:59:12.225 [DEBUG] [Thread-122639] [transport.py] [_log()] starting thread (client mode): 0x2e3dd990
2025-09-28T10:59:12.226 [DEBUG] [Thread-122639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:12.246 [DEBUG] [Thread-122639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:59:12.246 [INFO] [Thread-122639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] Compression: none
2025-09-28T10:59:12.249 [DEBUG] [Thread-122639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:12.273 [DEBUG] [Thread-122639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:12.274 [DEBUG] [Thread-122639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:12.274 [DEBUG] [Thread-122639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:59:12.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:59:12.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:12.276 [DEBUG] [Thread-122639] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:12.277 [DEBUG] [Thread-122639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:12.277 [DEBUG] [Thread-122639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:12.277 [DEBUG] [Thread-122639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:59:12.277 [DEBUG] [Thread-122639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:12.292 [INFO] [Thread-122639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:12.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:13.066 [DEBUG] [Thread-122639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:13.067 [DEBUG] [Thread-122639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:13.067 [DEBUG] [Thread-122639] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:59:13.107 [DEBUG] [Thread-122639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:13.107 [DEBUG] [Thread-122639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:13.110 [DEBUG] [Thread-122639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:13.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:13.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:59:13.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:59:13.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:59:13.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:13.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:59:13.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:13.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:59:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374044 -999.00  +18.00  12.25     42   +5.20 1 1 1 1 1   888    0 12.81 11.02 ----- 9.8 12.2 190.4 14.3 27.1 -26.7 25.3 -27.2 24.4 -24.9 25.6 -26.3
2025-09-28T10:59:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:59:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:59:13.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374044
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:59:13.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:58:57', tmtdew=14.17, humidity=38.47, cloud=0.0, wind=11.01, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:58:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:59:13.135 [DEBUG] [Thread-122639] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:13.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-28T10:59:13.231 [DEBUG] [Thread-122642] [transport.py] [_log()] starting thread (client mode): 0x2e348cd0
2025-09-28T10:59:13.231 [DEBUG] [Thread-122642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:13.246 [DEBUG] [Thread-122642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:59:13.246 [INFO] [Thread-122642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:59:13.253 [DEBUG] [Thread-122642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:13.254 [DEBUG] [Thread-122642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:13.255 [DEBUG] [Thread-122642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:13.256 [DEBUG] [Thread-122642] [transport.py] [_log()] Compression: none
2025-09-28T10:59:13.256 [DEBUG] [Thread-122642] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:13.317 [DEBUG] [Thread-122642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:13.317 [DEBUG] [Thread-122642] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:13.318 [DEBUG] [Thread-122642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:59:13.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:59:13.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:13.372 [DEBUG] [Thread-122642] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:13.372 [DEBUG] [Thread-122642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:13.372 [DEBUG] [Thread-122642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:13.372 [DEBUG] [Thread-122642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:59:13.373 [DEBUG] [Thread-122642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:13.394 [INFO] [Thread-122642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:13.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-28T10:59:13.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:14.355 [DEBUG] [Thread-122642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:14.355 [DEBUG] [Thread-122642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:14.403 [DEBUG] [Thread-122642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:14.403 [DEBUG] [Thread-122642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:14.412 [DEBUG] [Thread-122642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:14.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:14.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-28T10:59:14.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-28T10:59:14.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:14.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:14.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:14.447 [DEBUG] [Thread-122642] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:24.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:59:24.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:59:24.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-28T10:59:25.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 58, 57), 14.17, 38.47, 0.0, 11.01, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:59:25.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:58:57
2025-09-28T10:59:25.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:59:25.305 [DEBUG] [Thread-122644] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T10:59:25.305 [DEBUG] [Thread-122644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:25.325 [DEBUG] [Thread-122644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:59:25.325 [INFO] [Thread-122644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:25.326 [DEBUG] [Thread-122644] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] Compression: none
2025-09-28T10:59:25.327 [DEBUG] [Thread-122644] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:25.343 [DEBUG] [Thread-122644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:25.343 [DEBUG] [Thread-122644] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:25.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:59:25.344 [DEBUG] [Thread-122644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:59:25.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:25.344 [DEBUG] [Thread-122644] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:25.344 [DEBUG] [Thread-122644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:25.344 [DEBUG] [Thread-122644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:25.344 [DEBUG] [Thread-122644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:59:25.345 [DEBUG] [Thread-122644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:25.354 [INFO] [Thread-122644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:25.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:25.467 [DEBUG] [Thread-122646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:25.921 [DEBUG] [Thread-122644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:25.922 [DEBUG] [Thread-122644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:25.922 [DEBUG] [Thread-122644] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:59:25.963 [DEBUG] [Thread-122644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:25.963 [DEBUG] [Thread-122644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:25.964 [DEBUG] [Thread-122644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:25.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:25.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:59:25.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:59:25.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:59:25.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:25.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:59:25.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374391 -999.00  +17.90   8.72     42   +5.00 1 1 1 1 1   888    0 12.48 11.48 ----- 5.9 8.7 190.4 14.0 26.9 -27.3 25.1 -28.2 24.3 -26.3 25.5 -27.2
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374391
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:59:25.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:58:57', tmtdew=14.17, humidity=38.47, cloud=0.0, wind=11.01, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:59:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:59:25.974 [DEBUG] [Thread-122644] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:26.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T10:59:26.057 [DEBUG] [Thread-122648] [transport.py] [_log()] starting thread (client mode): 0x2b9f2e90
2025-09-28T10:59:26.057 [DEBUG] [Thread-122648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:26.072 [DEBUG] [Thread-122648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:59:26.072 [INFO] [Thread-122648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:26.079 [DEBUG] [Thread-122648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] Compression: none
2025-09-28T10:59:26.080 [DEBUG] [Thread-122648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:26.135 [DEBUG] [Thread-122648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:26.136 [DEBUG] [Thread-122648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:26.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:59:26.136 [DEBUG] [Thread-122648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:59:26.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:26.192 [DEBUG] [Thread-122648] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:26.192 [DEBUG] [Thread-122648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:26.192 [DEBUG] [Thread-122648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:26.192 [DEBUG] [Thread-122648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:59:26.192 [DEBUG] [Thread-122648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:26.206 [INFO] [Thread-122648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:26.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-28T10:59:26.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:27.188 [DEBUG] [Thread-122648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:27.188 [DEBUG] [Thread-122648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:27.239 [DEBUG] [Thread-122648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:27.240 [DEBUG] [Thread-122648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:27.248 [DEBUG] [Thread-122648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:27.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:27.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-28T10:59: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-28T10:59:27.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:27.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:27.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:27.280 [DEBUG] [Thread-122648] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:33.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:33.533 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:37.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:59:37.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:59:37.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-28T10:59:37.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 59, 29), 14.08, 38.65, 0.0, 11.49, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:59:37.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:59:29
2025-09-28T10:59:37.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:59:38.119 [DEBUG] [Thread-122650] [transport.py] [_log()] starting thread (client mode): 0x2b9f3580
2025-09-28T10:59:38.119 [DEBUG] [Thread-122650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:38.138 [DEBUG] [Thread-122650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:59:38.138 [INFO] [Thread-122650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:38.142 [DEBUG] [Thread-122650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] Compression: none
2025-09-28T10:59:38.143 [DEBUG] [Thread-122650] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:38.160 [DEBUG] [Thread-122650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:38.160 [DEBUG] [Thread-122650] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:38.161 [DEBUG] [Thread-122650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:59:38.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:59:38.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:38.163 [DEBUG] [Thread-122650] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:38.163 [DEBUG] [Thread-122650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:38.163 [DEBUG] [Thread-122650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:38.163 [DEBUG] [Thread-122650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:59:38.163 [DEBUG] [Thread-122650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:38.181 [INFO] [Thread-122650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:38.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:38.791 [DEBUG] [Thread-122650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:38.791 [DEBUG] [Thread-122650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:38.791 [DEBUG] [Thread-122650] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:59:38.832 [DEBUG] [Thread-122650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:38.832 [DEBUG] [Thread-122650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:38.835 [DEBUG] [Thread-122650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:38.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:38.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:59:38.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:59:38.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:59:38.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:38.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:59:38.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:38.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:38.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:59:38.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374391 -999.00  +17.90   8.72     42   +5.00 1 1 1 1 1   888    0 12.48 11.48 ----- 5.9 8.7 190.4 14.0 26.9 -27.3 25.1 -28.2 24.3 -26.3 25.5 -27.2
2025-09-28T10:59:38.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:59:38.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:59:38.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374391
2025-09-28T10:59:38.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:59:38.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:59:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:59:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:59:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:59:38.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:59:29', tmtdew=14.08, humidity=38.65, cloud=0.0, wind=11.49, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:59:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:59:38.859 [DEBUG] [Thread-122650] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:38.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-28T10:59:38.954 [DEBUG] [Thread-122653] [transport.py] [_log()] starting thread (client mode): 0x2b9f39d0
2025-09-28T10:59:38.954 [DEBUG] [Thread-122653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:38.969 [DEBUG] [Thread-122653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:59:38.969 [INFO] [Thread-122653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:38.978 [DEBUG] [Thread-122653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] Compression: none
2025-09-28T10:59:38.979 [DEBUG] [Thread-122653] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:39.033 [DEBUG] [Thread-122653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:39.034 [DEBUG] [Thread-122653] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:39.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:59:39.035 [DEBUG] [Thread-122653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:59:39.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:39.089 [DEBUG] [Thread-122653] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:39.089 [DEBUG] [Thread-122653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:39.090 [DEBUG] [Thread-122653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:39.090 [DEBUG] [Thread-122653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:59:39.090 [DEBUG] [Thread-122653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:39.108 [INFO] [Thread-122653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:39.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T10:59:39.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:40.062 [DEBUG] [Thread-122653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:40.062 [DEBUG] [Thread-122653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:40.110 [DEBUG] [Thread-122653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:40.110 [DEBUG] [Thread-122653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:40.119 [DEBUG] [Thread-122653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:40.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:40.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')
2025-09-28T10:59:40.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-28T10:59:40.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:40.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:40.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:40.154 [DEBUG] [Thread-122653] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:40.502 [DEBUG] [Thread-122655 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T10:59:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T10:59:50.150 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T10:59:50.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T10:59:50.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 59, 29), 14.08, 38.65, 0.0, 11.49, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T10:59:50.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:59:29
2025-09-28T10:59:50.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T10:59:50.978 [DEBUG] [Thread-122656] [transport.py] [_log()] starting thread (client mode): 0x2b9ddbd0
2025-09-28T10:59:50.978 [DEBUG] [Thread-122656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:50.999 [DEBUG] [Thread-122656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T10:59:50.999 [INFO] [Thread-122656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:51.002 [DEBUG] [Thread-122656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:51.003 [DEBUG] [Thread-122656] [transport.py] [_log()] Compression: none
2025-09-28T10:59:51.003 [DEBUG] [Thread-122656] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:51.019 [DEBUG] [Thread-122656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:51.020 [DEBUG] [Thread-122656] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:51.020 [DEBUG] [Thread-122656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T10:59:51.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T10:59:51.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:51.022 [DEBUG] [Thread-122656] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:51.022 [DEBUG] [Thread-122656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:51.022 [DEBUG] [Thread-122656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:51.022 [DEBUG] [Thread-122656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T10:59:51.022 [DEBUG] [Thread-122656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:51.046 [INFO] [Thread-122656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:51.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:51.844 [DEBUG] [Thread-122656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:51.844 [DEBUG] [Thread-122656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:51.844 [DEBUG] [Thread-122656] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T10:59:51.884 [DEBUG] [Thread-122656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:51.884 [DEBUG] [Thread-122656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:51.887 [DEBUG] [Thread-122656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:51.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:51.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T10:59:51.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T10:59:51.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T10:59:51.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:51.910 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T10:59:51.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374391 -999.00  +17.90   8.72     42   +5.00 1 1 1 1 1   888    0 12.48 11.48 ----- 5.9 8.7 190.4 14.0 26.9 -27.3 25.1 -28.2 24.3 -26.3 25.5 -27.2
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T10:59:51.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374391
2025-09-28T10:59:51.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T10:59:51.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T10:59:51.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T10:59:51.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T10:59:51.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T10:59:51.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:59:29', tmtdew=14.08, humidity=38.65, cloud=0.0, wind=11.49, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:59:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T10:59:51.913 [DEBUG] [Thread-122656] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:51.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-28T10:59:52.008 [DEBUG] [Thread-122659] [transport.py] [_log()] starting thread (client mode): 0x2b9dd5a0
2025-09-28T10:59:52.008 [DEBUG] [Thread-122659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T10:59:52.023 [DEBUG] [Thread-122659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T10:59:52.023 [INFO] [Thread-122659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] client lang: <none>
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] server lang: <none>
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] kex follows: False
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T10:59:52.034 [DEBUG] [Thread-122659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T10:59:52.035 [DEBUG] [Thread-122659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T10:59:52.035 [DEBUG] [Thread-122659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T10:59:52.035 [DEBUG] [Thread-122659] [transport.py] [_log()] Compression: none
2025-09-28T10:59:52.035 [DEBUG] [Thread-122659] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T10:59:52.102 [DEBUG] [Thread-122659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T10:59:52.103 [DEBUG] [Thread-122659] [transport.py] [_log()] Switch to new keys ...
2025-09-28T10:59:52.103 [DEBUG] [Thread-122659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T10:59:52.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T10:59:52.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T10:59:52.158 [DEBUG] [Thread-122659] [transport.py] [_log()] userauth is OK
2025-09-28T10:59:52.158 [DEBUG] [Thread-122659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T10:59:52.158 [DEBUG] [Thread-122659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T10:59:52.158 [DEBUG] [Thread-122659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T10:59:52.158 [DEBUG] [Thread-122659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T10:59:52.177 [INFO] [Thread-122659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T10:59:52.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-28T10:59:52.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T10:59:53.179 [DEBUG] [Thread-122659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T10:59:53.180 [DEBUG] [Thread-122659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T10:59:53.227 [DEBUG] [Thread-122659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T10:59:53.227 [DEBUG] [Thread-122659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T10:59:53.235 [DEBUG] [Thread-122659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T10:59:53.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T10:59:53.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-28T10:59:53.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-28T10:59:53.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T10:59:53.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T10:59:53.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T10:59:53.267 [DEBUG] [Thread-122659] [transport.py] [_log()] EOF in transport thread
2025-09-28T10:59:55.548 [DEBUG] [Thread-122661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:03.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:00:03.270 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:00:03.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-28T11:00:03.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 10, 59, 29), 14.08, 38.65, 0.0, 11.49, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:00:03.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 10:59:29
2025-09-28T11:00:03.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:00:04.118 [DEBUG] [Thread-122662] [transport.py] [_log()] starting thread (client mode): 0x2b9f3070
2025-09-28T11:00:04.119 [DEBUG] [Thread-122662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:04.133 [DEBUG] [Thread-122662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:00:04.133 [INFO] [Thread-122662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] Compression: none
2025-09-28T11:00:04.136 [DEBUG] [Thread-122662] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:04.148 [DEBUG] [Thread-122662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:04.148 [DEBUG] [Thread-122662] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:04.148 [DEBUG] [Thread-122662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:00:04.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:00:04.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:04.149 [DEBUG] [Thread-122662] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:04.149 [DEBUG] [Thread-122662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:04.149 [DEBUG] [Thread-122662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:04.149 [DEBUG] [Thread-122662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:00:04.149 [DEBUG] [Thread-122662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:04.158 [INFO] [Thread-122662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:04.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:04.604 [DEBUG] [Thread-122664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:10.577 [DEBUG] [Thread-122665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:10.654 [DEBUG] [Thread-122662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:10.654 [DEBUG] [Thread-122662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:10.655 [DEBUG] [Thread-122662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:00:10.695 [DEBUG] [Thread-122662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:10.695 [DEBUG] [Thread-122662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:10.698 [DEBUG] [Thread-122662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:10.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:10.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:00:10.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:00:10.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:00:10.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:10.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:00:10.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:10.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374738 -999.00  +18.10   9.23     43   +5.50 1 1 1 1 1   888    0 12.89 10.61 ----- 8.6 9.2 185.4 12.7 26.9 -26.4 25.0 -29.3 24.3 -25.4 25.6 -25.9
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374738
2025-09-28T11:00:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:00:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:00:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:00:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:00:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:00:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T10:59:29', tmtdew=14.08, humidity=38.65, cloud=0.0, wind=11.49, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:59:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:00:10.734 [DEBUG] [Thread-122662] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:10.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-28T11:00:10.825 [DEBUG] [Thread-122667] [transport.py] [_log()] starting thread (client mode): 0x2e38ee30
2025-09-28T11:00:10.826 [DEBUG] [Thread-122667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:10.842 [DEBUG] [Thread-122667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:00:10.842 [INFO] [Thread-122667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:10.850 [DEBUG] [Thread-122667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] Compression: none
2025-09-28T11:00:10.851 [DEBUG] [Thread-122667] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:10.910 [DEBUG] [Thread-122667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:10.910 [DEBUG] [Thread-122667] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:10.910 [DEBUG] [Thread-122667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:00:10.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:00:10.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:10.966 [DEBUG] [Thread-122667] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:10.966 [DEBUG] [Thread-122667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:10.967 [DEBUG] [Thread-122667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:10.967 [DEBUG] [Thread-122667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:00:10.967 [DEBUG] [Thread-122667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:10.991 [INFO] [Thread-122667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:10.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-28T11:00:10.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:12.032 [DEBUG] [Thread-122667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:12.032 [DEBUG] [Thread-122667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:12.080 [DEBUG] [Thread-122667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:12.080 [DEBUG] [Thread-122667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:12.088 [DEBUG] [Thread-122667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:12.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:12.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-28T11:00:12.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-28T11:00:12.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:12.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:12.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:12.122 [DEBUG] [Thread-122667] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:22.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:00:22.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:00:22.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-28T11:00:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 0, 1), 13.73, 40.05, 0.0, 12.3, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:00:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:00:01
2025-09-28T11:00:22.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:00:22.945 [DEBUG] [Thread-122669] [transport.py] [_log()] starting thread (client mode): 0x2b9893c0
2025-09-28T11:00:22.945 [DEBUG] [Thread-122669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:22.966 [DEBUG] [Thread-122669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:00:22.966 [INFO] [Thread-122669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:22.969 [DEBUG] [Thread-122669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] Compression: none
2025-09-28T11:00:22.970 [DEBUG] [Thread-122669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:22.989 [DEBUG] [Thread-122669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:22.990 [DEBUG] [Thread-122669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:22.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:00:22.991 [DEBUG] [Thread-122669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:00:22.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:22.994 [DEBUG] [Thread-122669] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:22.995 [DEBUG] [Thread-122669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:22.995 [DEBUG] [Thread-122669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:22.995 [DEBUG] [Thread-122669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:00:22.995 [DEBUG] [Thread-122669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:23.018 [INFO] [Thread-122669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:23.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:24.988 [DEBUG] [Thread-122669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:24.989 [DEBUG] [Thread-122669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:24.989 [DEBUG] [Thread-122669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:00:25.029 [DEBUG] [Thread-122669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:25.030 [DEBUG] [Thread-122669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:25.032 [DEBUG] [Thread-122669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:25.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:25.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:00:25.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:00:25.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:00:25.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:25.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:00:25.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:25.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:00:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.374738 -999.00  +18.10   9.23     43   +5.50 1 1 1 1 1   888    0 12.89 10.61 ----- 8.6 9.2 185.4 12.7 26.9 -26.4 25.0 -29.3 24.3 -25.4 25.6 -25.9
2025-09-28T11:00:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:00:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:00:25.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.374738
2025-09-28T11:00:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:00:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:00:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:00:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:00:25.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:00:25.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:00:01', tmtdew=13.73, humidity=40.05, cloud=0.0, wind=12.3, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T08:59:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:00:25.058 [DEBUG] [Thread-122669] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:25.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-28T11:00:25.154 [DEBUG] [Thread-122672] [transport.py] [_log()] starting thread (client mode): 0x30ddcc70
2025-09-28T11:00:25.154 [DEBUG] [Thread-122672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:25.169 [DEBUG] [Thread-122672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:00:25.169 [INFO] [Thread-122672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:25.177 [DEBUG] [Thread-122672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:25.178 [DEBUG] [Thread-122672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:25.179 [DEBUG] [Thread-122672] [transport.py] [_log()] Compression: none
2025-09-28T11:00:25.179 [DEBUG] [Thread-122672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:25.239 [DEBUG] [Thread-122672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:25.240 [DEBUG] [Thread-122672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:25.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:00:25.241 [DEBUG] [Thread-122672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:00:25.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:25.295 [DEBUG] [Thread-122672] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:25.295 [DEBUG] [Thread-122672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:25.295 [DEBUG] [Thread-122672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:25.296 [DEBUG] [Thread-122672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:00:25.296 [DEBUG] [Thread-122672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:25.317 [INFO] [Thread-122672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:25.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:00:25.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:25.614 [DEBUG] [Thread-122674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:26.307 [DEBUG] [Thread-122672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:26.307 [DEBUG] [Thread-122672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:26.355 [DEBUG] [Thread-122672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:26.355 [DEBUG] [Thread-122672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:26.364 [DEBUG] [Thread-122672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:26.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:26.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-28T11:00:26.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-28T11:00:26.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:26.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:26.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:26.400 [DEBUG] [Thread-122672] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:33.674 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:33.675 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:36.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:00:36.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:00:36.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-28T11:00:36.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 0, 33), 13.66, 40.23, 0.0, 11.49, 16.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:00:36.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:00:33
2025-09-28T11:00:37.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:00:37.246 [DEBUG] [Thread-122675] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T11:00:37.246 [DEBUG] [Thread-122675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:37.267 [DEBUG] [Thread-122675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:00:37.267 [INFO] [Thread-122675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:37.270 [DEBUG] [Thread-122675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:37.271 [DEBUG] [Thread-122675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:37.271 [DEBUG] [Thread-122675] [transport.py] [_log()] Compression: none
2025-09-28T11:00:37.271 [DEBUG] [Thread-122675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:37.286 [DEBUG] [Thread-122675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:37.286 [DEBUG] [Thread-122675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:37.286 [DEBUG] [Thread-122675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:00:37.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:00:37.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:37.287 [DEBUG] [Thread-122675] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:37.287 [DEBUG] [Thread-122675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:37.287 [DEBUG] [Thread-122675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:37.287 [DEBUG] [Thread-122675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:00:37.287 [DEBUG] [Thread-122675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:37.296 [INFO] [Thread-122675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:37.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:37.893 [DEBUG] [Thread-122675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:37.894 [DEBUG] [Thread-122675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:37.894 [DEBUG] [Thread-122675] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:00:37.934 [DEBUG] [Thread-122675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:37.934 [DEBUG] [Thread-122675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:37.937 [DEBUG] [Thread-122675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:37.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:37.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:00:37.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:00:37.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:00:37.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:37.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:00:37.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:37.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:37.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:00:37.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.375085 -999.00  +18.20  14.67     42   +5.10 1 1 1 1 1   888    0 12.63 13.38 ----- 19.0 14.7 160.7 19.9 26.9 -27.9 25.2 -26.4 24.3 -26.2 25.7 -28.1
2025-09-28T11:00:37.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:00:37.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:00:37.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.375085
2025-09-28T11:00:37.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:00:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:00:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:00:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:00:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:00:37.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:00:33', tmtdew=13.66, humidity=40.23, cloud=0.0, wind=11.49, temperature=16.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:00:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:00:37.956 [DEBUG] [Thread-122675] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:38.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-28T11:00:38.059 [DEBUG] [Thread-122678] [transport.py] [_log()] starting thread (client mode): 0x30dde6b0
2025-09-28T11:00:38.059 [DEBUG] [Thread-122678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:38.073 [DEBUG] [Thread-122678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:00:38.073 [INFO] [Thread-122678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:38.081 [DEBUG] [Thread-122678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] Compression: none
2025-09-28T11:00:38.082 [DEBUG] [Thread-122678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:38.139 [DEBUG] [Thread-122678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:38.140 [DEBUG] [Thread-122678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:38.140 [DEBUG] [Thread-122678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:00:38.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:00:38.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:38.195 [DEBUG] [Thread-122678] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:38.196 [DEBUG] [Thread-122678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:38.196 [DEBUG] [Thread-122678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:38.196 [DEBUG] [Thread-122678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:00:38.196 [DEBUG] [Thread-122678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:38.214 [INFO] [Thread-122678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:38.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-28T11:00:38.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:39.141 [DEBUG] [Thread-122678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:39.141 [DEBUG] [Thread-122678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:39.189 [DEBUG] [Thread-122678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:39.189 [DEBUG] [Thread-122678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:39.197 [DEBUG] [Thread-122678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:39.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:39.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-28T11:00:39.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-28T11:00:39.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:39.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:39.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:39.229 [DEBUG] [Thread-122678] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:40.658 [DEBUG] [Thread-122680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:00:49.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:00:49.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:00:49.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-28T11:00:49.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 0, 33), 13.66, 40.23, 0.0, 11.49, 16.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:00:49.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:00:33
2025-09-28T11:00:49.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:00:50.054 [DEBUG] [Thread-122681] [transport.py] [_log()] starting thread (client mode): 0x2b9dd1b0
2025-09-28T11:00:50.054 [DEBUG] [Thread-122681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:50.073 [DEBUG] [Thread-122681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:00:50.073 [INFO] [Thread-122681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:50.076 [DEBUG] [Thread-122681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] Compression: none
2025-09-28T11:00:50.077 [DEBUG] [Thread-122681] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:50.090 [DEBUG] [Thread-122681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:50.090 [DEBUG] [Thread-122681] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:50.091 [DEBUG] [Thread-122681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:00:50.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:00:50.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:50.093 [DEBUG] [Thread-122681] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:50.093 [DEBUG] [Thread-122681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:50.093 [DEBUG] [Thread-122681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:50.093 [DEBUG] [Thread-122681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:00:50.093 [DEBUG] [Thread-122681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:50.111 [INFO] [Thread-122681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:50.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:50.870 [DEBUG] [Thread-122681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:50.870 [DEBUG] [Thread-122681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:50.870 [DEBUG] [Thread-122681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:00:50.911 [DEBUG] [Thread-122681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:50.911 [DEBUG] [Thread-122681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:50.914 [DEBUG] [Thread-122681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:50.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:50.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:00:50.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:00:50.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:00:50.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:50.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:00:50.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:50.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.375085 -999.00  +18.20  14.67     42   +5.10 1 1 1 1 1   888    0 12.63 13.38 ----- 19.0 14.7 160.7 19.9 26.9 -27.9 25.2 -26.4 24.3 -26.2 25.7 -28.1
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.375085
2025-09-28T11:00:50.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:00:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:00:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:00:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:00:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:00:50.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:00:33', tmtdew=13.66, humidity=40.23, cloud=0.0, wind=11.49, temperature=16.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:00:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:00:50.940 [DEBUG] [Thread-122681] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:51.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-28T11:00:51.035 [DEBUG] [Thread-122684] [transport.py] [_log()] starting thread (client mode): 0x2e3c03a0
2025-09-28T11:00:51.035 [DEBUG] [Thread-122684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:00:51.050 [DEBUG] [Thread-122684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:00:51.050 [INFO] [Thread-122684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] client lang: <none>
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] server lang: <none>
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] kex follows: False
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:00:51.058 [DEBUG] [Thread-122684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:00:51.059 [DEBUG] [Thread-122684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:00:51.059 [DEBUG] [Thread-122684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:00:51.059 [DEBUG] [Thread-122684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:00:51.059 [DEBUG] [Thread-122684] [transport.py] [_log()] Compression: none
2025-09-28T11:00:51.059 [DEBUG] [Thread-122684] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:00:51.116 [DEBUG] [Thread-122684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:00:51.116 [DEBUG] [Thread-122684] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:00:51.117 [DEBUG] [Thread-122684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:00:51.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:00:51.117 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:00:51.172 [DEBUG] [Thread-122684] [transport.py] [_log()] userauth is OK
2025-09-28T11:00:51.172 [DEBUG] [Thread-122684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:00:51.173 [DEBUG] [Thread-122684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:00:51.173 [DEBUG] [Thread-122684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:00:51.173 [DEBUG] [Thread-122684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:00:51.192 [INFO] [Thread-122684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:00:51.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-28T11:00:51.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:00:52.188 [DEBUG] [Thread-122684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:00:52.188 [DEBUG] [Thread-122684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:00:52.237 [DEBUG] [Thread-122684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:00:52.237 [DEBUG] [Thread-122684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:00:52.246 [DEBUG] [Thread-122684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:00:52.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:00:52.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-28T11:00:52.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-28T11:00:52.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:00:52.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:00:52.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:00:52.281 [DEBUG] [Thread-122684] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:00:55.691 [DEBUG] [Thread-122686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:02.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:01:02.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:01:02.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-28T11:01:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 0, 33), 13.66, 40.23, 0.0, 11.49, 16.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:01:02.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:00:33
2025-09-28T11:01:02.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:01:03.121 [DEBUG] [Thread-122687] [transport.py] [_log()] starting thread (client mode): 0x2b9f3280
2025-09-28T11:01:03.121 [DEBUG] [Thread-122687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:03.142 [DEBUG] [Thread-122687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:01:03.142 [INFO] [Thread-122687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:01:03.145 [DEBUG] [Thread-122687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:03.145 [DEBUG] [Thread-122687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] Compression: none
2025-09-28T11:01:03.146 [DEBUG] [Thread-122687] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:03.163 [DEBUG] [Thread-122687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:03.163 [DEBUG] [Thread-122687] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:03.164 [DEBUG] [Thread-122687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:01:03.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:01:03.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:03.165 [DEBUG] [Thread-122687] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:03.166 [DEBUG] [Thread-122687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:03.166 [DEBUG] [Thread-122687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:03.166 [DEBUG] [Thread-122687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:01:03.166 [DEBUG] [Thread-122687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:03.183 [INFO] [Thread-122687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:03.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:03.969 [DEBUG] [Thread-122687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:03.969 [DEBUG] [Thread-122687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:03.969 [DEBUG] [Thread-122687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:01:04.010 [DEBUG] [Thread-122687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:04.010 [DEBUG] [Thread-122687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:04.014 [DEBUG] [Thread-122687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:04.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:04.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:01:04.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:01:04.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:01:04.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:04.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:01:04.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.375085 -999.00  +18.20  14.67     42   +5.10 1 1 1 1 1   888    0 12.63 13.38 ----- 19.0 14.7 160.7 19.9 26.9 -27.9 25.2 -26.4 24.3 -26.2 25.7 -28.1
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:01:04.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.375085
2025-09-28T11:01:04.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:01:04.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:01:04.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:01:04.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:01:04.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:01:04.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:00:33', tmtdew=13.66, humidity=40.23, cloud=0.0, wind=11.49, temperature=16.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:00:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:01:04.037 [DEBUG] [Thread-122687] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:04.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:01:04.133 [DEBUG] [Thread-122690] [transport.py] [_log()] starting thread (client mode): 0x30ddd090
2025-09-28T11:01:04.134 [DEBUG] [Thread-122690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:04.149 [DEBUG] [Thread-122690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:01:04.149 [INFO] [Thread-122690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:04.157 [DEBUG] [Thread-122690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:04.158 [DEBUG] [Thread-122690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:04.158 [DEBUG] [Thread-122690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:04.158 [DEBUG] [Thread-122690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:04.158 [DEBUG] [Thread-122690] [transport.py] [_log()] Compression: none
2025-09-28T11:01:04.158 [DEBUG] [Thread-122690] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:04.221 [DEBUG] [Thread-122690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:04.222 [DEBUG] [Thread-122690] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:04.222 [DEBUG] [Thread-122690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:01:04.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:01:04.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:04.285 [DEBUG] [Thread-122690] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:04.285 [DEBUG] [Thread-122690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:04.285 [DEBUG] [Thread-122690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:04.285 [DEBUG] [Thread-122690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:01:04.286 [DEBUG] [Thread-122690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:04.305 [INFO] [Thread-122690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:04.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-28T11:01:04.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:04.659 [DEBUG] [Thread-122692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:05.310 [DEBUG] [Thread-122690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:05.310 [DEBUG] [Thread-122690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:05.358 [DEBUG] [Thread-122690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:05.358 [DEBUG] [Thread-122690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:05.367 [DEBUG] [Thread-122690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:05.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:05.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-28T11:01:05.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-28T11:01:05.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:05.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:05.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:05.402 [DEBUG] [Thread-122690] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:10.723 [DEBUG] [Thread-122693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:15.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:01:15.404 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:01:15.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:01:15.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 1, 5), 13.81, 39.85, 0.0, 13.71, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:01:15.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:01:05
2025-09-28T11:01:16.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:01:16.232 [DEBUG] [Thread-122694] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d70
2025-09-28T11:01:16.232 [DEBUG] [Thread-122694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:16.252 [DEBUG] [Thread-122694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:01:16.252 [INFO] [Thread-122694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:16.256 [DEBUG] [Thread-122694] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] Compression: none
2025-09-28T11:01:16.257 [DEBUG] [Thread-122694] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:16.274 [DEBUG] [Thread-122694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:16.274 [DEBUG] [Thread-122694] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:16.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:01:16.275 [DEBUG] [Thread-122694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:01:16.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:16.277 [DEBUG] [Thread-122694] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:16.277 [DEBUG] [Thread-122694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:16.277 [DEBUG] [Thread-122694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:16.278 [DEBUG] [Thread-122694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:01:16.278 [DEBUG] [Thread-122694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:16.302 [INFO] [Thread-122694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:16.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:16.929 [DEBUG] [Thread-122694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:16.929 [DEBUG] [Thread-122694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:16.929 [DEBUG] [Thread-122694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:01:16.970 [DEBUG] [Thread-122694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:16.970 [DEBUG] [Thread-122694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:16.972 [DEBUG] [Thread-122694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:16.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:16.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:01:16.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:01:16.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:01:16.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:16.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:01:16.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.375433 -999.00  +17.70  11.43     43   +5.00 1 1 1 1 1   888    0 12.98 13.82 ----- 9.9 11.4 163.4 21.9 26.7 -26.9 24.9 -25.2 24.2 -27.0 25.6 -27.0
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.375433
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:01:16.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:01:05', tmtdew=13.81, humidity=39.85, cloud=0.0, wind=13.71, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:00:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:01:16.992 [DEBUG] [Thread-122694] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:17.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-28T11:01:17.076 [DEBUG] [Thread-122697] [transport.py] [_log()] starting thread (client mode): 0x2e3c3f70
2025-09-28T11:01:17.076 [DEBUG] [Thread-122697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:17.091 [DEBUG] [Thread-122697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:01:17.091 [INFO] [Thread-122697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:17.098 [DEBUG] [Thread-122697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] Compression: none
2025-09-28T11:01:17.099 [DEBUG] [Thread-122697] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:17.155 [DEBUG] [Thread-122697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:17.156 [DEBUG] [Thread-122697] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:17.156 [DEBUG] [Thread-122697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:01:17.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:01:17.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:17.212 [DEBUG] [Thread-122697] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:17.212 [DEBUG] [Thread-122697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:17.213 [DEBUG] [Thread-122697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:17.213 [DEBUG] [Thread-122697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:01:17.213 [DEBUG] [Thread-122697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:17.229 [INFO] [Thread-122697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:17.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-28T11:01:17.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:18.188 [DEBUG] [Thread-122697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:18.188 [DEBUG] [Thread-122697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:18.239 [DEBUG] [Thread-122697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:18.239 [DEBUG] [Thread-122697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:18.251 [DEBUG] [Thread-122697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:18.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:18.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-28T11:01:18.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-28T11:01:18.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:18.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:18.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:18.297 [DEBUG] [Thread-122697] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:25.754 [DEBUG] [Thread-122699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:28.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:01:28.291 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:01:28.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-28T11:01:28.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 1, 5), 13.81, 39.85, 0.0, 13.71, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:01:28.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:01:05
2025-09-28T11:01:28.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:01:29.112 [DEBUG] [Thread-122700] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-28T11:01:29.112 [DEBUG] [Thread-122700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:29.128 [DEBUG] [Thread-122700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:01:29.128 [INFO] [Thread-122700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] Compression: none
2025-09-28T11:01:29.132 [DEBUG] [Thread-122700] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:29.148 [DEBUG] [Thread-122700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:29.148 [DEBUG] [Thread-122700] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:29.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:01:29.149 [DEBUG] [Thread-122700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:01:29.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:29.151 [DEBUG] [Thread-122700] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:29.151 [DEBUG] [Thread-122700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:29.151 [DEBUG] [Thread-122700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:29.151 [DEBUG] [Thread-122700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:01:29.151 [DEBUG] [Thread-122700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:29.173 [INFO] [Thread-122700] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:29.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:29.906 [DEBUG] [Thread-122700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:29.906 [DEBUG] [Thread-122700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:29.907 [DEBUG] [Thread-122700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:01:29.947 [DEBUG] [Thread-122700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:29.947 [DEBUG] [Thread-122700] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:29.949 [DEBUG] [Thread-122700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:29.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:29.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:01:29.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:01:29.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:01:29.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:29.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:01:29.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:29.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:01:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.375433 -999.00  +17.70  11.43     43   +5.00 1 1 1 1 1   888    0 12.98 13.82 ----- 9.9 11.4 163.4 21.9 26.7 -26.9 24.9 -25.2 24.2 -27.0 25.6 -27.0
2025-09-28T11:01:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:01:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:01:29.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.375433
2025-09-28T11:01:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:01:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:01:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:01:29.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:01:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:01:29.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:01:05', tmtdew=13.81, humidity=39.85, cloud=0.0, wind=13.71, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:00:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:01:29.982 [DEBUG] [Thread-122700] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:30.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-28T11:01:30.078 [DEBUG] [Thread-122703] [transport.py] [_log()] starting thread (client mode): 0x2e38dc30
2025-09-28T11:01:30.078 [DEBUG] [Thread-122703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:30.094 [DEBUG] [Thread-122703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:01:30.094 [INFO] [Thread-122703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:01:30.102 [DEBUG] [Thread-122703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:30.102 [DEBUG] [Thread-122703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:01:30.102 [DEBUG] [Thread-122703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:30.103 [DEBUG] [Thread-122703] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:30.104 [DEBUG] [Thread-122703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:30.105 [DEBUG] [Thread-122703] [transport.py] [_log()] Compression: none
2025-09-28T11:01:30.105 [DEBUG] [Thread-122703] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:30.161 [DEBUG] [Thread-122703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:30.161 [DEBUG] [Thread-122703] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:30.162 [DEBUG] [Thread-122703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:01:30.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:01:30.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:30.217 [DEBUG] [Thread-122703] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:30.218 [DEBUG] [Thread-122703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:30.218 [DEBUG] [Thread-122703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:30.218 [DEBUG] [Thread-122703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:01:30.218 [DEBUG] [Thread-122703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:30.237 [INFO] [Thread-122703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:30.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-28T11:01:30.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:31.236 [DEBUG] [Thread-122703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:31.236 [DEBUG] [Thread-122703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:31.285 [DEBUG] [Thread-122703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:31.285 [DEBUG] [Thread-122703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:31.294 [DEBUG] [Thread-122703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:31.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:31.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')
2025-09-28T11:01:31.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-28T11:01:31.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:31.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:31.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:31.329 [DEBUG] [Thread-122703] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:33.816 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:33.817 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:40.797 [DEBUG] [Thread-122705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:01:41.331 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:01:41.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-28T11:01:41.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 1, 37), 14.31, 38.37, 0.0, 12.19, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:01:41.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:01:37
2025-09-28T11:01:42.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:01:42.155 [DEBUG] [Thread-122706] [transport.py] [_log()] starting thread (client mode): 0x2b9bac20
2025-09-28T11:01:42.155 [DEBUG] [Thread-122706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:42.172 [DEBUG] [Thread-122706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:01:42.172 [INFO] [Thread-122706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] Compression: none
2025-09-28T11:01:42.174 [DEBUG] [Thread-122706] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:42.183 [DEBUG] [Thread-122706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:42.183 [DEBUG] [Thread-122706] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:42.184 [DEBUG] [Thread-122706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:01:42.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:01:42.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:42.185 [DEBUG] [Thread-122706] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:42.185 [DEBUG] [Thread-122706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:42.185 [DEBUG] [Thread-122706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:42.185 [DEBUG] [Thread-122706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:01:42.185 [DEBUG] [Thread-122706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:42.204 [INFO] [Thread-122706] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:42.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:42.814 [DEBUG] [Thread-122706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:42.815 [DEBUG] [Thread-122706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:42.815 [DEBUG] [Thread-122706] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:01:42.855 [DEBUG] [Thread-122706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:42.856 [DEBUG] [Thread-122706] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:42.859 [DEBUG] [Thread-122706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:42.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:42.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:01:42.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:01:42.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:01:42.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:42.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:01:42.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:42.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:42.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:01:42.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376127 -999.00  +17.80  10.40     43   +5.30 1 1 1 1 1   888    0 13.10 11.10 ----- 10.1 10.4 210.2 15.6 26.7 -27.4 24.8 -30.6 24.3 -25.3 25.6 -26.9
2025-09-28T11:01:42.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:01:42.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:01:42.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376127
2025-09-28T11:01:42.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:01:42.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:01:42.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:01:42.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:01:42.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:01:42.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:01:37', tmtdew=14.31, humidity=38.37, cloud=0.0, wind=12.19, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:01:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:01:42.884 [DEBUG] [Thread-122706] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:42.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-28T11:01:42.981 [DEBUG] [Thread-122709] [transport.py] [_log()] starting thread (client mode): 0x2e38d000
2025-09-28T11:01:42.981 [DEBUG] [Thread-122709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:42.996 [DEBUG] [Thread-122709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:01:42.996 [INFO] [Thread-122709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:01:43.003 [DEBUG] [Thread-122709] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:43.003 [DEBUG] [Thread-122709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:01:43.003 [DEBUG] [Thread-122709] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] Compression: none
2025-09-28T11:01:43.004 [DEBUG] [Thread-122709] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:43.061 [DEBUG] [Thread-122709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:43.062 [DEBUG] [Thread-122709] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:43.062 [DEBUG] [Thread-122709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:01:43.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:01:43.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:43.118 [DEBUG] [Thread-122709] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:43.118 [DEBUG] [Thread-122709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:43.118 [DEBUG] [Thread-122709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:43.118 [DEBUG] [Thread-122709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:01:43.118 [DEBUG] [Thread-122709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:43.138 [INFO] [Thread-122709] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:43.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-28T11:01:43.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:44.093 [DEBUG] [Thread-122709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:44.093 [DEBUG] [Thread-122709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:44.141 [DEBUG] [Thread-122709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:44.141 [DEBUG] [Thread-122709] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:44.150 [DEBUG] [Thread-122709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:44.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:44.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-28T11:01:44.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-28T11:01:44.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:44.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:44.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:44.185 [DEBUG] [Thread-122709] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:54.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:01:54.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:01:54.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-28T11:01:54.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 1, 37), 14.31, 38.37, 0.0, 12.19, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:01:54.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:01:37
2025-09-28T11:01:54.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:01:55.008 [DEBUG] [Thread-122711] [transport.py] [_log()] starting thread (client mode): 0x2e38f130
2025-09-28T11:01:55.008 [DEBUG] [Thread-122711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:55.029 [DEBUG] [Thread-122711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:01:55.029 [INFO] [Thread-122711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:55.032 [DEBUG] [Thread-122711] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] Compression: none
2025-09-28T11:01:55.033 [DEBUG] [Thread-122711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:55.049 [DEBUG] [Thread-122711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:55.049 [DEBUG] [Thread-122711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:55.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:01:55.050 [DEBUG] [Thread-122711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:01:55.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:55.050 [DEBUG] [Thread-122711] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:55.050 [DEBUG] [Thread-122711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:55.051 [DEBUG] [Thread-122711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:55.051 [DEBUG] [Thread-122711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:01:55.051 [DEBUG] [Thread-122711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:55.068 [INFO] [Thread-122711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:55.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:55.715 [DEBUG] [Thread-122711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:55.715 [DEBUG] [Thread-122711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:55.715 [DEBUG] [Thread-122711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:01:55.756 [DEBUG] [Thread-122711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:55.756 [DEBUG] [Thread-122711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:55.758 [DEBUG] [Thread-122711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:55.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01:55.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:01:55.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:01:55.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:01:55.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:55.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:01:55.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376127 -999.00  +17.80  10.40     43   +5.30 1 1 1 1 1   888    0 13.10 11.10 ----- 10.1 10.4 210.2 15.6 26.7 -27.4 24.8 -30.6 24.3 -25.3 25.6 -26.9
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376127
2025-09-28T11:01:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:01:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:01:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:01:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:01:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:01:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:01:37', tmtdew=14.31, humidity=38.37, cloud=0.0, wind=12.19, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:01:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:01:55.776 [DEBUG] [Thread-122711] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:01:55.830 [DEBUG] [Thread-122714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:01:55.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-28T11:01:55.858 [DEBUG] [Thread-122715] [transport.py] [_log()] starting thread (client mode): 0x2b9bb580
2025-09-28T11:01:55.859 [DEBUG] [Thread-122715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:01:55.873 [DEBUG] [Thread-122715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:01:55.873 [INFO] [Thread-122715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] client lang: <none>
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] server lang: <none>
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] kex follows: False
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] Compression: none
2025-09-28T11:01:55.881 [DEBUG] [Thread-122715] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:01:55.936 [DEBUG] [Thread-122715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:01:55.937 [DEBUG] [Thread-122715] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:01:55.937 [DEBUG] [Thread-122715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:01:55.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:01:55.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:01:55.993 [DEBUG] [Thread-122715] [transport.py] [_log()] userauth is OK
2025-09-28T11:01:55.994 [DEBUG] [Thread-122715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:01:55.994 [DEBUG] [Thread-122715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:01:55.994 [DEBUG] [Thread-122715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:01:55.994 [DEBUG] [Thread-122715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:01:56.009 [INFO] [Thread-122715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:01:56.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-28T11:01:56.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:01:56.979 [DEBUG] [Thread-122715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:01:56.979 [DEBUG] [Thread-122715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:01:57.028 [DEBUG] [Thread-122715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:01:57.028 [DEBUG] [Thread-122715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:01:57.036 [DEBUG] [Thread-122715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:01:57.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:01: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')
2025-09-28T11:01:57.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-28T11:01:57.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:01:57.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:01:57.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:01:57.070 [DEBUG] [Thread-122715] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:04.710 [DEBUG] [Thread-122717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:07.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:02:07.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:02:07.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:02:07.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 1, 37), 14.31, 38.37, 0.0, 12.19, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:02:07.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:01:37
2025-09-28T11:02:07.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:02:07.895 [DEBUG] [Thread-122718] [transport.py] [_log()] starting thread (client mode): 0x2e38ca00
2025-09-28T11:02:07.895 [DEBUG] [Thread-122718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:07.915 [DEBUG] [Thread-122718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:02:07.915 [INFO] [Thread-122718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:02:07.918 [DEBUG] [Thread-122718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:07.919 [DEBUG] [Thread-122718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:07.920 [DEBUG] [Thread-122718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:07.920 [DEBUG] [Thread-122718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:07.920 [DEBUG] [Thread-122718] [transport.py] [_log()] Compression: none
2025-09-28T11:02:07.920 [DEBUG] [Thread-122718] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:07.935 [DEBUG] [Thread-122718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:07.935 [DEBUG] [Thread-122718] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:07.936 [DEBUG] [Thread-122718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:02:07.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:02:07.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:07.937 [DEBUG] [Thread-122718] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:07.937 [DEBUG] [Thread-122718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:07.937 [DEBUG] [Thread-122718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:07.937 [DEBUG] [Thread-122718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:02:07.937 [DEBUG] [Thread-122718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:07.954 [INFO] [Thread-122718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:07.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:08.762 [DEBUG] [Thread-122718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:08.762 [DEBUG] [Thread-122718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:08.762 [DEBUG] [Thread-122718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:02:08.803 [DEBUG] [Thread-122718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:08.803 [DEBUG] [Thread-122718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:08.805 [DEBUG] [Thread-122718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:08.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:08.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:02:08.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:02:08.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:02:08.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:08.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:02:08.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:08.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376127 -999.00  +17.80  10.40     43   +5.30 1 1 1 1 1   888    0 13.10 11.10 ----- 10.1 10.4 210.2 15.6 26.7 -27.4 24.8 -30.6 24.3 -25.3 25.6 -26.9
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376127
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:02:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:01:37', tmtdew=14.31, humidity=38.37, cloud=0.0, wind=12.19, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:01:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:02:08.824 [DEBUG] [Thread-122718] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:08.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-28T11:02:08.912 [DEBUG] [Thread-122721] [transport.py] [_log()] starting thread (client mode): 0x2e38c850
2025-09-28T11:02:08.912 [DEBUG] [Thread-122721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:08.927 [DEBUG] [Thread-122721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:02:08.927 [INFO] [Thread-122721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:08.935 [DEBUG] [Thread-122721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] Compression: none
2025-09-28T11:02:08.936 [DEBUG] [Thread-122721] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:08.994 [DEBUG] [Thread-122721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:08.995 [DEBUG] [Thread-122721] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:08.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:02:08.996 [DEBUG] [Thread-122721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:02:08.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:09.050 [DEBUG] [Thread-122721] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:09.051 [DEBUG] [Thread-122721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:09.051 [DEBUG] [Thread-122721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:09.051 [DEBUG] [Thread-122721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:02:09.051 [DEBUG] [Thread-122721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:09.070 [INFO] [Thread-122721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:09.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-28T11:02:09.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:09.998 [DEBUG] [Thread-122721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:09.998 [DEBUG] [Thread-122721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:10.046 [DEBUG] [Thread-122721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:10.046 [DEBUG] [Thread-122721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:10.054 [DEBUG] [Thread-122721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:10.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:10.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-28T11:02:10.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') -> 00000000
2025-09-28T11:02:10.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:10.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:10.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:10.086 [DEBUG] [Thread-122721] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:10.861 [DEBUG] [Thread-122723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:20.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:02:20.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:02:20.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-28T11:02:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 2, 9), 14.44, 38.05, 0.0, 12.05, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:02:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:02:09
2025-09-28T11:02:20.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:02:20.920 [DEBUG] [Thread-122724] [transport.py] [_log()] starting thread (client mode): 0x2b9dfeb0
2025-09-28T11:02:20.921 [DEBUG] [Thread-122724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:20.940 [DEBUG] [Thread-122724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:02:20.940 [INFO] [Thread-122724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] Compression: none
2025-09-28T11:02:20.942 [DEBUG] [Thread-122724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:20.955 [DEBUG] [Thread-122724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:20.955 [DEBUG] [Thread-122724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:20.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:02:20.956 [DEBUG] [Thread-122724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:02:20.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:20.958 [DEBUG] [Thread-122724] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:20.958 [DEBUG] [Thread-122724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:20.958 [DEBUG] [Thread-122724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:20.958 [DEBUG] [Thread-122724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:02:20.958 [DEBUG] [Thread-122724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:20.976 [INFO] [Thread-122724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:20.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:21.655 [DEBUG] [Thread-122724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:21.655 [DEBUG] [Thread-122724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:21.655 [DEBUG] [Thread-122724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:02:21.696 [DEBUG] [Thread-122724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:21.696 [DEBUG] [Thread-122724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:21.699 [DEBUG] [Thread-122724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:21.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:21.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:02:21.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:02:21.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:02:21.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:21.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:02:21.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376474 -999.00  +18.20   6.32     43   +5.50 1 1 1 1 1   888    0 13.11 11.63 ----- 10.4 6.3 173.2 12.2 26.7 -26.4 24.9 -30.1 24.4 -24.8 25.7 -25.8
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:02:21.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376474
2025-09-28T11:02:21.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:02:21.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:02:21.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:02:21.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:02:21.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:02:21.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:02:09', tmtdew=14.44, humidity=38.05, cloud=0.0, wind=12.05, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:02:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:02:21.724 [DEBUG] [Thread-122724] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:21.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-28T11:02:21.817 [DEBUG] [Thread-122727] [transport.py] [_log()] starting thread (client mode): 0x2e38c4f0
2025-09-28T11:02:21.817 [DEBUG] [Thread-122727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:21.832 [DEBUG] [Thread-122727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:02:21.833 [INFO] [Thread-122727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:02:21.844 [DEBUG] [Thread-122727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:21.845 [DEBUG] [Thread-122727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:21.846 [DEBUG] [Thread-122727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:21.847 [DEBUG] [Thread-122727] [transport.py] [_log()] Compression: none
2025-09-28T11:02:21.847 [DEBUG] [Thread-122727] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:21.899 [DEBUG] [Thread-122727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:21.899 [DEBUG] [Thread-122727] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:21.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:02:21.900 [DEBUG] [Thread-122727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:02:21.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:21.955 [DEBUG] [Thread-122727] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:21.956 [DEBUG] [Thread-122727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:21.956 [DEBUG] [Thread-122727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:21.956 [DEBUG] [Thread-122727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:02:21.956 [DEBUG] [Thread-122727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:21.975 [INFO] [Thread-122727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:21.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-28T11:02:21.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:22.926 [DEBUG] [Thread-122727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:22.926 [DEBUG] [Thread-122727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:22.978 [DEBUG] [Thread-122727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:22.978 [DEBUG] [Thread-122727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:22.987 [DEBUG] [Thread-122727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:22.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:22.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T11:02:23.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') -> 00000000
2025-09-28T11:02:23.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:23.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:23.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:23.022 [DEBUG] [Thread-122727] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:25.888 [DEBUG] [Thread-122729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:02:33.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:02:33.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-28T11:02:33.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 2, 9), 14.44, 38.05, 0.0, 12.05, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:02:33.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:02:09
2025-09-28T11:02:33.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:02:33.881 [DEBUG] [Thread-122730] [transport.py] [_log()] starting thread (client mode): 0x2b9dfd90
2025-09-28T11:02:33.881 [DEBUG] [Thread-122730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:33.901 [DEBUG] [Thread-122730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:02:33.901 [INFO] [Thread-122730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] Compression: none
2025-09-28T11:02:33.904 [DEBUG] [Thread-122730] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:33.920 [DEBUG] [Thread-122730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:33.921 [DEBUG] [Thread-122730] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:33.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:02:33.921 [DEBUG] [Thread-122730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:02:33.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:33.922 [DEBUG] [Thread-122730] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:33.922 [DEBUG] [Thread-122730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:33.922 [DEBUG] [Thread-122730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:33.922 [DEBUG] [Thread-122730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:02:33.922 [DEBUG] [Thread-122730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:33.941 [INFO] [Thread-122730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:33.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:33.955 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:33.956 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:34.716 [DEBUG] [Thread-122730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:34.716 [DEBUG] [Thread-122730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:34.717 [DEBUG] [Thread-122730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:02:34.757 [DEBUG] [Thread-122730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:34.757 [DEBUG] [Thread-122730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:34.759 [DEBUG] [Thread-122730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:34.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:34.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:02:34.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:02:34.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:02:34.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:34.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:02:34.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376474 -999.00  +18.20   6.32     43   +5.50 1 1 1 1 1   888    0 13.11 11.63 ----- 10.4 6.3 173.2 12.2 26.7 -26.4 24.9 -30.1 24.4 -24.8 25.7 -25.8
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376474
2025-09-28T11:02:34.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:02:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:02:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:02:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:02:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:02:34.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:02:09', tmtdew=14.44, humidity=38.05, cloud=0.0, wind=12.05, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:02:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:02:34.778 [DEBUG] [Thread-122730] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:34.850 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:02:34.862 [DEBUG] [Thread-122733] [transport.py] [_log()] starting thread (client mode): 0x2b9ded10
2025-09-28T11:02:34.862 [DEBUG] [Thread-122733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:34.876 [DEBUG] [Thread-122733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:02:34.876 [INFO] [Thread-122733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] Compression: none
2025-09-28T11:02:34.884 [DEBUG] [Thread-122733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:34.946 [DEBUG] [Thread-122733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:34.947 [DEBUG] [Thread-122733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:34.947 [DEBUG] [Thread-122733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:02:34.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:02:34.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:35.006 [DEBUG] [Thread-122733] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:35.006 [DEBUG] [Thread-122733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:35.006 [DEBUG] [Thread-122733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:35.006 [DEBUG] [Thread-122733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:02:35.006 [DEBUG] [Thread-122733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:35.020 [INFO] [Thread-122733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:35.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-28T11:02:35.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:35.991 [DEBUG] [Thread-122733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:35.991 [DEBUG] [Thread-122733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:36.039 [DEBUG] [Thread-122733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:36.039 [DEBUG] [Thread-122733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:36.047 [DEBUG] [Thread-122733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:36.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:36.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-28T11:02:36.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-28T11:02:36.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:36.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:36.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:36.082 [DEBUG] [Thread-122733] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:40.931 [DEBUG] [Thread-122735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:46.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:02:46.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:02:46.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-28T11:02:46.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 2, 41), 14.28, 38.59, 0.0, 10.98, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:02:46.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:02:41
2025-09-28T11:02:46.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:02:46.920 [DEBUG] [Thread-122736] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T11:02:46.920 [DEBUG] [Thread-122736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:46.935 [DEBUG] [Thread-122736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:02:46.935 [INFO] [Thread-122736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:02:46.938 [DEBUG] [Thread-122736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:46.939 [DEBUG] [Thread-122736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:46.940 [DEBUG] [Thread-122736] [transport.py] [_log()] Compression: none
2025-09-28T11:02:46.940 [DEBUG] [Thread-122736] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:46.957 [DEBUG] [Thread-122736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:46.957 [DEBUG] [Thread-122736] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:46.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:02:46.958 [DEBUG] [Thread-122736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:02:46.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:46.960 [DEBUG] [Thread-122736] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:46.961 [DEBUG] [Thread-122736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:46.961 [DEBUG] [Thread-122736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:46.961 [DEBUG] [Thread-122736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:02:46.961 [DEBUG] [Thread-122736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:46.979 [INFO] [Thread-122736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:46.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:47.745 [DEBUG] [Thread-122736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:47.746 [DEBUG] [Thread-122736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:47.746 [DEBUG] [Thread-122736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:02:47.786 [DEBUG] [Thread-122736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:47.786 [DEBUG] [Thread-122736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:47.789 [DEBUG] [Thread-122736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:47.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:47.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:02:47.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:02:47.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:02:47.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:47.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:02:47.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376474 -999.00  +18.20   6.32     43   +5.50 1 1 1 1 1   888    0 13.11 11.63 ----- 10.4 6.3 173.2 12.2 26.7 -26.4 24.9 -30.1 24.4 -24.8 25.7 -25.8
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:02:47.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376474
2025-09-28T11:02:47.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:02:47.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:02:47.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:02:47.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:02:47.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:02:47.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:02:41', tmtdew=14.28, humidity=38.59, cloud=0.0, wind=10.98, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:02:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:02:47.815 [DEBUG] [Thread-122736] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:47.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-28T11:02:47.909 [DEBUG] [Thread-122739] [transport.py] [_log()] starting thread (client mode): 0x2b9df370
2025-09-28T11:02:47.909 [DEBUG] [Thread-122739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:02:47.924 [DEBUG] [Thread-122739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:02:47.924 [INFO] [Thread-122739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:02:47.931 [DEBUG] [Thread-122739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] client lang: <none>
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] server lang: <none>
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] kex follows: False
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] Compression: none
2025-09-28T11:02:47.932 [DEBUG] [Thread-122739] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:02:47.991 [DEBUG] [Thread-122739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:02:47.992 [DEBUG] [Thread-122739] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:02:47.992 [DEBUG] [Thread-122739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:02:47.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:02:47.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:02:48.047 [DEBUG] [Thread-122739] [transport.py] [_log()] userauth is OK
2025-09-28T11:02:48.047 [DEBUG] [Thread-122739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:02:48.048 [DEBUG] [Thread-122739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:02:48.048 [DEBUG] [Thread-122739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:02:48.048 [DEBUG] [Thread-122739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:02:48.066 [INFO] [Thread-122739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:02:48.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-28T11:02:48.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:02:49.082 [DEBUG] [Thread-122739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:02:49.082 [DEBUG] [Thread-122739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:02:49.130 [DEBUG] [Thread-122739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:02:49.130 [DEBUG] [Thread-122739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:02:49.139 [DEBUG] [Thread-122739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:02:49.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:02:49.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-28T11:02:49.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-28T11:02:49.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:02:49.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:02:49.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:02:49.174 [DEBUG] [Thread-122739] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:02:55.960 [DEBUG] [Thread-122741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:02:59.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:02:59.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:02:59.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-28T11:02:59.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 2, 41), 14.28, 38.59, 0.0, 10.98, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:02:59.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:02:41
2025-09-28T11:02:59.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:02:59.995 [DEBUG] [Thread-122742] [transport.py] [_log()] starting thread (client mode): 0x2e38e1a0
2025-09-28T11:02:59.995 [DEBUG] [Thread-122742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:00.017 [DEBUG] [Thread-122742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:03:00.017 [INFO] [Thread-122742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] Compression: none
2025-09-28T11:03:00.021 [DEBUG] [Thread-122742] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:00.039 [DEBUG] [Thread-122742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:00.039 [DEBUG] [Thread-122742] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:00.040 [DEBUG] [Thread-122742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:03:00.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:03:00.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:00.041 [DEBUG] [Thread-122742] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:00.041 [DEBUG] [Thread-122742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:00.042 [DEBUG] [Thread-122742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:00.042 [DEBUG] [Thread-122742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:03:00.042 [DEBUG] [Thread-122742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:00.065 [INFO] [Thread-122742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:00.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:00.739 [DEBUG] [Thread-122742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:00.740 [DEBUG] [Thread-122742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:00.740 [DEBUG] [Thread-122742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:03:00.780 [DEBUG] [Thread-122742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:00.781 [DEBUG] [Thread-122742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:00.784 [DEBUG] [Thread-122742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:00.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:00.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:03:00.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:03:00.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:03:00.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:00.807 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:03:00.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:00.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376822 -999.00  +18.20   9.30     42   +5.30 1 1 1 1 1   888    0 12.89 10.79 ----- 7.0 9.3 200.4 13.5 26.8 -26.5 24.9 -25.9 24.4 -25.2 25.8 -26.3
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376822
2025-09-28T11:03:00.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:03:00.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:03:00.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:03:00.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:03:00.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:03:00.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:02:41', tmtdew=14.28, humidity=38.59, cloud=0.0, wind=10.98, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:02:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:03:00.810 [DEBUG] [Thread-122742] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:00.905 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:03:00.918 [DEBUG] [Thread-122745] [transport.py] [_log()] starting thread (client mode): 0x2e3745b0
2025-09-28T11:03:00.918 [DEBUG] [Thread-122745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:00.932 [DEBUG] [Thread-122745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:03:00.933 [INFO] [Thread-122745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:03:00.940 [DEBUG] [Thread-122745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:00.940 [DEBUG] [Thread-122745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:00.941 [DEBUG] [Thread-122745] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] Compression: none
2025-09-28T11:03:00.942 [DEBUG] [Thread-122745] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:01.005 [DEBUG] [Thread-122745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:01.005 [DEBUG] [Thread-122745] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:01.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:03:01.006 [DEBUG] [Thread-122745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:03:01.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:01.060 [DEBUG] [Thread-122745] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:01.061 [DEBUG] [Thread-122745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:01.061 [DEBUG] [Thread-122745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:01.061 [DEBUG] [Thread-122745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:03:01.061 [DEBUG] [Thread-122745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:01.079 [INFO] [Thread-122745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:01.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:03:01.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:02.194 [DEBUG] [Thread-122745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:02.194 [DEBUG] [Thread-122745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:02.242 [DEBUG] [Thread-122745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:02.242 [DEBUG] [Thread-122745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:02.251 [DEBUG] [Thread-122745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:02.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:02.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-28T11:03:02.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-28T11:03:02.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:02.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:02.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:02.284 [DEBUG] [Thread-122745] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:04.760 [DEBUG] [Thread-122747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:10.995 [DEBUG] [Thread-122748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:12.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:03:12.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:03:12.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-28T11:03:12.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 2, 41), 14.28, 38.59, 0.0, 10.98, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:03:12.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:02:41
2025-09-28T11:03:12.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:03:13.115 [DEBUG] [Thread-122749] [transport.py] [_log()] starting thread (client mode): 0x2b9ddb70
2025-09-28T11:03:13.115 [DEBUG] [Thread-122749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:13.132 [DEBUG] [Thread-122749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:03:13.132 [INFO] [Thread-122749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:03:13.135 [DEBUG] [Thread-122749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:13.135 [DEBUG] [Thread-122749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:03:13.135 [DEBUG] [Thread-122749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:13.135 [DEBUG] [Thread-122749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] Compression: none
2025-09-28T11:03:13.136 [DEBUG] [Thread-122749] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:13.153 [DEBUG] [Thread-122749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:13.154 [DEBUG] [Thread-122749] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:13.154 [DEBUG] [Thread-122749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:03:13.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:03:13.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:13.156 [DEBUG] [Thread-122749] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:13.156 [DEBUG] [Thread-122749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:13.156 [DEBUG] [Thread-122749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:13.156 [DEBUG] [Thread-122749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:03:13.156 [DEBUG] [Thread-122749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:13.189 [INFO] [Thread-122749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:13.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:14.010 [DEBUG] [Thread-122749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:14.010 [DEBUG] [Thread-122749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:14.010 [DEBUG] [Thread-122749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:03:14.051 [DEBUG] [Thread-122749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:14.051 [DEBUG] [Thread-122749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:14.053 [DEBUG] [Thread-122749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:14.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:14.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:03:14.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:03:14.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:03:14.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:14.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:03:14.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.376822 -999.00  +18.20   9.30     42   +5.30 1 1 1 1 1   888    0 12.89 10.79 ----- 7.0 9.3 200.4 13.5 26.8 -26.5 24.9 -25.9 24.4 -25.2 25.8 -26.3
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.376822
2025-09-28T11:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:03:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:03:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:03:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:03:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:03:14.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:02:41', tmtdew=14.28, humidity=38.59, cloud=0.0, wind=10.98, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:02:37.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:03:14.072 [DEBUG] [Thread-122749] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:14.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-28T11:03:14.175 [DEBUG] [Thread-122752] [transport.py] [_log()] starting thread (client mode): 0x2b9de560
2025-09-28T11:03:14.175 [DEBUG] [Thread-122752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:14.189 [DEBUG] [Thread-122752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:03:14.189 [INFO] [Thread-122752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] Compression: none
2025-09-28T11:03:14.197 [DEBUG] [Thread-122752] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:14.255 [DEBUG] [Thread-122752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:14.256 [DEBUG] [Thread-122752] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:14.256 [DEBUG] [Thread-122752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:03:14.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:03:14.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:14.312 [DEBUG] [Thread-122752] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:14.312 [DEBUG] [Thread-122752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:14.312 [DEBUG] [Thread-122752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:14.312 [DEBUG] [Thread-122752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:03:14.312 [DEBUG] [Thread-122752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:14.330 [INFO] [Thread-122752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:14.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-28T11:03:14.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:15.285 [DEBUG] [Thread-122752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:15.285 [DEBUG] [Thread-122752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:15.333 [DEBUG] [Thread-122752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:15.333 [DEBUG] [Thread-122752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:15.342 [DEBUG] [Thread-122752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:15.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03: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-28T11:03: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-28T11:03:15.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:15.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:15.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:15.377 [DEBUG] [Thread-122752] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:25.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:03:25.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:03:25.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-28T11:03:25.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 3, 12), 14.36, 38.37, 0.0, 11.03, 17.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:03:25.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:03:12
2025-09-28T11:03:26.041 [DEBUG] [Thread-122754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:26.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:03:26.222 [DEBUG] [Thread-122755] [transport.py] [_log()] starting thread (client mode): 0x2b9de380
2025-09-28T11:03:26.223 [DEBUG] [Thread-122755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:26.235 [DEBUG] [Thread-122755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:03:26.236 [INFO] [Thread-122755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:03:26.237 [DEBUG] [Thread-122755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] Compression: none
2025-09-28T11:03:26.238 [DEBUG] [Thread-122755] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:26.252 [DEBUG] [Thread-122755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:26.252 [DEBUG] [Thread-122755] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:26.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:03:26.253 [DEBUG] [Thread-122755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:03:26.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:26.255 [DEBUG] [Thread-122755] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:26.255 [DEBUG] [Thread-122755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:26.255 [DEBUG] [Thread-122755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:26.255 [DEBUG] [Thread-122755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:03:26.255 [DEBUG] [Thread-122755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:26.280 [INFO] [Thread-122755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:26.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:26.979 [DEBUG] [Thread-122755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:26.979 [DEBUG] [Thread-122755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:26.979 [DEBUG] [Thread-122755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:03:27.020 [DEBUG] [Thread-122755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:27.021 [DEBUG] [Thread-122755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:27.023 [DEBUG] [Thread-122755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:27.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:27.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:03:27.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:03:27.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:03:27.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:27.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:03:27.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:27.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:27.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:03:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377169 -999.00  +18.20   5.21     42   +5.20 1 1 1 1 1   888    0 12.71 10.36 ----- 4.8 5.2 246.6 8.6 26.7 -27.4 25.2 -24.8 24.5 -24.8 25.8 -26.5
2025-09-28T11:03:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:03:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:03:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377169
2025-09-28T11:03:27.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:03:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:03:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:03:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:03:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:03:27.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:03:12', tmtdew=14.36, humidity=38.37, cloud=0.0, wind=11.03, temperature=17.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:03:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:03:27.047 [DEBUG] [Thread-122755] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:27.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-28T11:03:27.148 [DEBUG] [Thread-122758] [transport.py] [_log()] starting thread (client mode): 0x2e3df5b0
2025-09-28T11:03:27.148 [DEBUG] [Thread-122758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:27.164 [DEBUG] [Thread-122758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:03:27.164 [INFO] [Thread-122758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:03:27.171 [DEBUG] [Thread-122758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:27.172 [DEBUG] [Thread-122758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:27.173 [DEBUG] [Thread-122758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:27.173 [DEBUG] [Thread-122758] [transport.py] [_log()] Compression: none
2025-09-28T11:03:27.173 [DEBUG] [Thread-122758] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:27.230 [DEBUG] [Thread-122758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:27.231 [DEBUG] [Thread-122758] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:27.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:03:27.232 [DEBUG] [Thread-122758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:03:27.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:27.289 [DEBUG] [Thread-122758] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:27.289 [DEBUG] [Thread-122758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:27.289 [DEBUG] [Thread-122758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:27.289 [DEBUG] [Thread-122758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:03:27.289 [DEBUG] [Thread-122758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:27.310 [INFO] [Thread-122758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:27.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-28T11:03:27.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:28.330 [DEBUG] [Thread-122758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:28.330 [DEBUG] [Thread-122758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:28.378 [DEBUG] [Thread-122758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:28.379 [DEBUG] [Thread-122758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:28.388 [DEBUG] [Thread-122758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:28.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:28.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-28T11:03:28.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-28T11:03:28.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:28.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:28.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:28.422 [DEBUG] [Thread-122758] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:34.098 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:34.099 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:38.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:03:38.422 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:03:38.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-28T11:03:38.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 3, 12), 14.36, 38.37, 0.0, 11.03, 17.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:03:38.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:03:12
2025-09-28T11:03:39.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:03:39.248 [DEBUG] [Thread-122760] [transport.py] [_log()] starting thread (client mode): 0x2b9f3220
2025-09-28T11:03:39.248 [DEBUG] [Thread-122760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:39.267 [DEBUG] [Thread-122760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:03:39.268 [INFO] [Thread-122760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:03:39.270 [DEBUG] [Thread-122760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:39.271 [DEBUG] [Thread-122760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] Compression: none
2025-09-28T11:03:39.272 [DEBUG] [Thread-122760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:39.288 [DEBUG] [Thread-122760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:39.289 [DEBUG] [Thread-122760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:39.289 [DEBUG] [Thread-122760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:03:39.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:03:39.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:39.291 [DEBUG] [Thread-122760] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:39.291 [DEBUG] [Thread-122760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:39.291 [DEBUG] [Thread-122760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:39.291 [DEBUG] [Thread-122760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:03:39.292 [DEBUG] [Thread-122760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:39.316 [INFO] [Thread-122760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:39.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:40.088 [DEBUG] [Thread-122760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:40.088 [DEBUG] [Thread-122760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:40.089 [DEBUG] [Thread-122760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:03:40.129 [DEBUG] [Thread-122760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:40.130 [DEBUG] [Thread-122760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:40.132 [DEBUG] [Thread-122760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:40.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:40.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:03:40.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:03:40.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:03:40.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:40.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:03:40.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:40.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377169 -999.00  +18.20   5.21     42   +5.20 1 1 1 1 1   888    0 12.71 10.36 ----- 4.8 5.2 246.6 8.6 26.7 -27.4 25.2 -24.8 24.5 -24.8 25.8 -26.5
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377169
2025-09-28T11:03:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:03:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:03:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:03:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:03:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:03:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:03:12', tmtdew=14.36, humidity=38.37, cloud=0.0, wind=11.03, temperature=17.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:03:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:03:40.156 [DEBUG] [Thread-122760] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:40.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-28T11:03:40.262 [DEBUG] [Thread-122763] [transport.py] [_log()] starting thread (client mode): 0x2e3c2680
2025-09-28T11:03:40.262 [DEBUG] [Thread-122763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:40.276 [DEBUG] [Thread-122763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:03:40.277 [INFO] [Thread-122763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:03:40.284 [DEBUG] [Thread-122763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:40.285 [DEBUG] [Thread-122763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:40.286 [DEBUG] [Thread-122763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:40.286 [DEBUG] [Thread-122763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:40.286 [DEBUG] [Thread-122763] [transport.py] [_log()] Compression: none
2025-09-28T11:03:40.286 [DEBUG] [Thread-122763] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:40.341 [DEBUG] [Thread-122763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:40.341 [DEBUG] [Thread-122763] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:40.342 [DEBUG] [Thread-122763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:03:40.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:03:40.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:40.397 [DEBUG] [Thread-122763] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:40.397 [DEBUG] [Thread-122763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:40.398 [DEBUG] [Thread-122763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:40.398 [DEBUG] [Thread-122763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:03:40.398 [DEBUG] [Thread-122763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:40.420 [INFO] [Thread-122763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:40.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-28T11:03:40.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:41.077 [DEBUG] [Thread-122765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:03:41.380 [DEBUG] [Thread-122763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:41.381 [DEBUG] [Thread-122763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:41.428 [DEBUG] [Thread-122763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:41.428 [DEBUG] [Thread-122763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:41.437 [DEBUG] [Thread-122763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:41.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:41.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')
2025-09-28T11:03:41.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-28T11:03:41.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:41.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:41.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:41.473 [DEBUG] [Thread-122763] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:51.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:03:51.473 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:03:51.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:03:52.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 3, 44), 15.35, 35.95, 0.0, 12.49, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:03:52.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:03:44
2025-09-28T11:03:52.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:03:52.308 [DEBUG] [Thread-122766] [transport.py] [_log()] starting thread (client mode): 0x2e3df670
2025-09-28T11:03:52.308 [DEBUG] [Thread-122766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:52.328 [DEBUG] [Thread-122766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:03:52.328 [INFO] [Thread-122766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:03:52.331 [DEBUG] [Thread-122766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:52.331 [DEBUG] [Thread-122766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:03:52.331 [DEBUG] [Thread-122766] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:52.331 [DEBUG] [Thread-122766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] Compression: none
2025-09-28T11:03:52.332 [DEBUG] [Thread-122766] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:52.352 [DEBUG] [Thread-122766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:52.353 [DEBUG] [Thread-122766] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:52.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:03:52.354 [DEBUG] [Thread-122766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:03:52.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:52.355 [DEBUG] [Thread-122766] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:52.355 [DEBUG] [Thread-122766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:52.355 [DEBUG] [Thread-122766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:52.356 [DEBUG] [Thread-122766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:03:52.356 [DEBUG] [Thread-122766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:52.374 [INFO] [Thread-122766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:52.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:53.172 [DEBUG] [Thread-122766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:53.172 [DEBUG] [Thread-122766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:53.172 [DEBUG] [Thread-122766] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:03:53.213 [DEBUG] [Thread-122766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:53.213 [DEBUG] [Thread-122766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:53.215 [DEBUG] [Thread-122766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:53.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:53.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:03:53.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:03:53.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:03:53.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:53.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:03:53.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:53.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:53.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:03:53.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377169 -999.00  +18.20   5.21     42   +5.20 1 1 1 1 1   888    0 12.71 10.36 ----- 4.8 5.2 246.6 8.6 26.7 -27.4 25.2 -24.8 24.5 -24.8 25.8 -26.5
2025-09-28T11:03:53.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:03:53.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:03:53.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377169
2025-09-28T11:03:53.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:03:53.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:03:53.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:03:53.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:03:53.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:03:53.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:03:44', tmtdew=15.35, humidity=35.95, cloud=0.0, wind=12.49, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:03:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:03:53.241 [DEBUG] [Thread-122766] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:53.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-28T11:03:53.338 [DEBUG] [Thread-122769] [transport.py] [_log()] starting thread (client mode): 0x2e374370
2025-09-28T11:03:53.338 [DEBUG] [Thread-122769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:03:53.353 [DEBUG] [Thread-122769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:03:53.353 [INFO] [Thread-122769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:03:53.360 [DEBUG] [Thread-122769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:03:53.360 [DEBUG] [Thread-122769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] client lang: <none>
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] server lang: <none>
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] kex follows: False
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] Compression: none
2025-09-28T11:03:53.361 [DEBUG] [Thread-122769] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:03:53.420 [DEBUG] [Thread-122769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:03:53.421 [DEBUG] [Thread-122769] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:03:53.421 [DEBUG] [Thread-122769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:03:53.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:03:53.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:03:53.478 [DEBUG] [Thread-122769] [transport.py] [_log()] userauth is OK
2025-09-28T11:03:53.478 [DEBUG] [Thread-122769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:03:53.478 [DEBUG] [Thread-122769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:03:53.478 [DEBUG] [Thread-122769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:03:53.478 [DEBUG] [Thread-122769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:03:53.496 [INFO] [Thread-122769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:03:53.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-28T11:03:53.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:03:54.467 [DEBUG] [Thread-122769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:03:54.467 [DEBUG] [Thread-122769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:03:54.515 [DEBUG] [Thread-122769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:03:54.515 [DEBUG] [Thread-122769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:03:54.523 [DEBUG] [Thread-122769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:03:54.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:03:54.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-28T11:03:54.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-28T11:03:54.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:03:54.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:03:54.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:03:54.554 [DEBUG] [Thread-122769] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:03:56.135 [DEBUG] [Thread-122771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:04.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:04:04.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:04:04.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-28T11:04:04.806 [DEBUG] [Thread-122772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:05.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 3, 44), 15.35, 35.95, 0.0, 12.49, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:04:05.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:03:44
2025-09-28T11:04:05.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:04:05.402 [DEBUG] [Thread-122773] [transport.py] [_log()] starting thread (client mode): 0x2e3c3280
2025-09-28T11:04:05.403 [DEBUG] [Thread-122773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:05.422 [DEBUG] [Thread-122773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:04:05.423 [INFO] [Thread-122773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:05.426 [DEBUG] [Thread-122773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:05.427 [DEBUG] [Thread-122773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:05.427 [DEBUG] [Thread-122773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:05.427 [DEBUG] [Thread-122773] [transport.py] [_log()] Compression: none
2025-09-28T11:04:05.427 [DEBUG] [Thread-122773] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:05.445 [DEBUG] [Thread-122773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:05.445 [DEBUG] [Thread-122773] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:05.446 [DEBUG] [Thread-122773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:04:05.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:04:05.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:05.447 [DEBUG] [Thread-122773] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:05.448 [DEBUG] [Thread-122773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:05.448 [DEBUG] [Thread-122773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:05.448 [DEBUG] [Thread-122773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:04:05.448 [DEBUG] [Thread-122773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:05.472 [INFO] [Thread-122773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:05.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:06.111 [DEBUG] [Thread-122773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:06.111 [DEBUG] [Thread-122773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:06.111 [DEBUG] [Thread-122773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:04:06.152 [DEBUG] [Thread-122773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:06.152 [DEBUG] [Thread-122773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:06.155 [DEBUG] [Thread-122773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:06.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:06.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:04:06.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:04:06.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:04:06.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:06.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:04:06.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:06.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:06.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:04:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377516 -999.00  +18.40   3.64     40   +4.80 1 1 1 1 1   888    0 12.91 13.46 ----- 7.0 3.6 291.5 11.6 26.7 -26.8 25.2 -25.8 24.5 -25.0 25.8 -26.3
2025-09-28T11:04:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:04:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:04:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377516
2025-09-28T11:04:06.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:04:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:04:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:04:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:04:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:04:06.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:03:44', tmtdew=15.35, humidity=35.95, cloud=0.0, wind=12.49, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:03:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:04:06.181 [DEBUG] [Thread-122773] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:06.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-28T11:04:06.290 [DEBUG] [Thread-122776] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a50
2025-09-28T11:04:06.290 [DEBUG] [Thread-122776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:06.309 [DEBUG] [Thread-122776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:04:06.309 [INFO] [Thread-122776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:04:06.317 [DEBUG] [Thread-122776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:06.318 [DEBUG] [Thread-122776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] Compression: none
2025-09-28T11:04:06.319 [DEBUG] [Thread-122776] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:06.375 [DEBUG] [Thread-122776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:06.376 [DEBUG] [Thread-122776] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:06.376 [DEBUG] [Thread-122776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:04:06.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:04:06.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:06.443 [DEBUG] [Thread-122776] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:06.444 [DEBUG] [Thread-122776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:06.444 [DEBUG] [Thread-122776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:06.444 [DEBUG] [Thread-122776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:04:06.444 [DEBUG] [Thread-122776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:06.463 [INFO] [Thread-122776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:06.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-28T11:04:06.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:07.459 [DEBUG] [Thread-122776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:07.459 [DEBUG] [Thread-122776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:07.507 [DEBUG] [Thread-122776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:07.507 [DEBUG] [Thread-122776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:07.516 [DEBUG] [Thread-122776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:07.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:07.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-28T11:04:07.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-28T11:04:07.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:07.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:07.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:07.551 [DEBUG] [Thread-122776] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:11.185 [DEBUG] [Thread-122778 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:17.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:04:17.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:04:17.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:04:18.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 3, 44), 15.35, 35.95, 0.0, 12.49, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:04:18.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:03:44
2025-09-28T11:04:18.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:04:18.443 [DEBUG] [Thread-122779] [transport.py] [_log()] starting thread (client mode): 0x30dde710
2025-09-28T11:04:18.443 [DEBUG] [Thread-122779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:18.458 [DEBUG] [Thread-122779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:04:18.458 [INFO] [Thread-122779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] Compression: none
2025-09-28T11:04:18.462 [DEBUG] [Thread-122779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:18.481 [DEBUG] [Thread-122779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:18.481 [DEBUG] [Thread-122779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:18.481 [DEBUG] [Thread-122779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:04:18.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:04:18.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:18.482 [DEBUG] [Thread-122779] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:18.482 [DEBUG] [Thread-122779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:18.482 [DEBUG] [Thread-122779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:18.482 [DEBUG] [Thread-122779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:04:18.482 [DEBUG] [Thread-122779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:18.492 [INFO] [Thread-122779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:18.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:19.219 [DEBUG] [Thread-122779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:19.220 [DEBUG] [Thread-122779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:19.220 [DEBUG] [Thread-122779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:04:19.260 [DEBUG] [Thread-122779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:19.260 [DEBUG] [Thread-122779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:19.263 [DEBUG] [Thread-122779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:19.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:19.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:04:19.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:04:19.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:04:19.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:19.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:04:19.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:19.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:04:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377516 -999.00  +18.40   3.64     40   +4.80 1 1 1 1 1   888    0 12.91 13.46 ----- 7.0 3.6 291.5 11.6 26.7 -26.8 25.2 -25.8 24.5 -25.0 25.8 -26.3
2025-09-28T11:04:19.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:04:19.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:04:19.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377516
2025-09-28T11:04:19.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:04:19.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:04:19.289 [DEBUG] [Thread-122779] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:19.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:04:19.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:04:19.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:04:19.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:03:44', tmtdew=15.35, humidity=35.95, cloud=0.0, wind=12.49, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:03:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:04:19.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-28T11:04:19.392 [DEBUG] [Thread-122782] [transport.py] [_log()] starting thread (client mode): 0x30ddf730
2025-09-28T11:04:19.393 [DEBUG] [Thread-122782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:19.407 [DEBUG] [Thread-122782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:04:19.407 [INFO] [Thread-122782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:04:19.417 [DEBUG] [Thread-122782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:19.418 [DEBUG] [Thread-122782] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] Compression: none
2025-09-28T11:04:19.419 [DEBUG] [Thread-122782] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:19.474 [DEBUG] [Thread-122782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:19.474 [DEBUG] [Thread-122782] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:19.475 [DEBUG] [Thread-122782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:04:19.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:04:19.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:19.530 [DEBUG] [Thread-122782] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:19.531 [DEBUG] [Thread-122782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:19.531 [DEBUG] [Thread-122782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:19.531 [DEBUG] [Thread-122782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:04:19.531 [DEBUG] [Thread-122782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:19.549 [INFO] [Thread-122782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:19.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-28T11:04:19.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:20.525 [DEBUG] [Thread-122782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:20.526 [DEBUG] [Thread-122782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:20.579 [DEBUG] [Thread-122782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:20.579 [DEBUG] [Thread-122782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:20.591 [DEBUG] [Thread-122782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:20.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:20.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-28T11:04:20.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-28T11:04:20.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:20.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:20.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:20.625 [DEBUG] [Thread-122782] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:26.253 [DEBUG] [Thread-122784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:04:30.627 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:04:30.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-28T11:04:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 4, 16), 15.57, 35.37, 0.0, 12.9, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:04:31.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:04:16
2025-09-28T11:04:31.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:04:31.479 [DEBUG] [Thread-122785] [transport.py] [_log()] starting thread (client mode): 0x2b9dc670
2025-09-28T11:04:31.479 [DEBUG] [Thread-122785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:31.500 [DEBUG] [Thread-122785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:04:31.500 [INFO] [Thread-122785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:04:31.502 [DEBUG] [Thread-122785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:31.503 [DEBUG] [Thread-122785] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:31.504 [DEBUG] [Thread-122785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:31.505 [DEBUG] [Thread-122785] [transport.py] [_log()] Compression: none
2025-09-28T11:04:31.505 [DEBUG] [Thread-122785] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:31.518 [DEBUG] [Thread-122785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:31.519 [DEBUG] [Thread-122785] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:31.519 [DEBUG] [Thread-122785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:04:31.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:04:31.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:31.521 [DEBUG] [Thread-122785] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:31.521 [DEBUG] [Thread-122785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:31.522 [DEBUG] [Thread-122785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:31.522 [DEBUG] [Thread-122785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:04:31.522 [DEBUG] [Thread-122785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:31.556 [INFO] [Thread-122785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:31.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:32.165 [DEBUG] [Thread-122785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:32.165 [DEBUG] [Thread-122785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:32.166 [DEBUG] [Thread-122785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:04:32.206 [DEBUG] [Thread-122785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:32.206 [DEBUG] [Thread-122785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:32.208 [DEBUG] [Thread-122785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:32.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:32.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:04:32.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:04:32.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:04:32.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:32.232 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:04:32.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377863 -999.00  +18.60   9.50     35   +3.00 1 1 1 1 1   888    0 13.25 26.83 ----- 6.0 9.5 267.0 10.7 26.8 -26.7 25.4 -25.5 24.5 -26.4 25.9 -26.4
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:04:32.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377863
2025-09-28T11:04:32.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:04:32.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:04:32.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:04:32.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:04:32.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:04:32.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:04:16', tmtdew=15.57, humidity=35.37, cloud=0.0, wind=12.9, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:04:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:04:32.235 [DEBUG] [Thread-122785] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:32.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-28T11:04:32.336 [DEBUG] [Thread-122788] [transport.py] [_log()] starting thread (client mode): 0x2b9dda80
2025-09-28T11:04:32.336 [DEBUG] [Thread-122788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:32.351 [DEBUG] [Thread-122788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:04:32.352 [INFO] [Thread-122788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:04:32.359 [DEBUG] [Thread-122788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:32.359 [DEBUG] [Thread-122788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:04:32.359 [DEBUG] [Thread-122788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:32.360 [DEBUG] [Thread-122788] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] Compression: none
2025-09-28T11:04:32.361 [DEBUG] [Thread-122788] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:32.419 [DEBUG] [Thread-122788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:32.419 [DEBUG] [Thread-122788] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:32.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:04:32.420 [DEBUG] [Thread-122788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:04:32.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:32.475 [DEBUG] [Thread-122788] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:32.475 [DEBUG] [Thread-122788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:32.475 [DEBUG] [Thread-122788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:32.475 [DEBUG] [Thread-122788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:04:32.475 [DEBUG] [Thread-122788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:32.498 [INFO] [Thread-122788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:32.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-28T11:04:32.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:33.512 [DEBUG] [Thread-122788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:33.512 [DEBUG] [Thread-122788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:33.560 [DEBUG] [Thread-122788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:33.560 [DEBUG] [Thread-122788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:33.568 [DEBUG] [Thread-122788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:33.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:33.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-28T11:04:33.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-28T11:04:33.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:33.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:33.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:33.599 [DEBUG] [Thread-122788] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:34.240 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:34.241 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:41.292 [DEBUG] [Thread-122790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:43.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:04:43.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:04:43.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-28T11:04:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 4, 16), 15.57, 35.37, 0.0, 12.9, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:04:44.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:04:16
2025-09-28T11:04:44.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:04:44.428 [DEBUG] [Thread-122791] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T11:04:44.428 [DEBUG] [Thread-122791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:44.447 [DEBUG] [Thread-122791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:04:44.447 [INFO] [Thread-122791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:44.450 [DEBUG] [Thread-122791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] Compression: none
2025-09-28T11:04:44.451 [DEBUG] [Thread-122791] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:44.460 [DEBUG] [Thread-122791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:44.461 [DEBUG] [Thread-122791] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:44.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:04:44.462 [DEBUG] [Thread-122791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:04:44.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:44.464 [DEBUG] [Thread-122791] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:44.464 [DEBUG] [Thread-122791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:44.464 [DEBUG] [Thread-122791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:44.464 [DEBUG] [Thread-122791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:04:44.464 [DEBUG] [Thread-122791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:44.482 [INFO] [Thread-122791] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:44.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:45.079 [DEBUG] [Thread-122791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:45.079 [DEBUG] [Thread-122791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:45.080 [DEBUG] [Thread-122791] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:04:45.120 [DEBUG] [Thread-122791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:45.120 [DEBUG] [Thread-122791] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:45.123 [DEBUG] [Thread-122791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:45.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:45.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:04:45.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:04:45.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:04:45.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:45.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:04:45.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377863 -999.00  +18.60   9.50     35   +3.00 1 1 1 1 1   888    0 13.25 26.83 ----- 6.0 9.5 267.0 10.7 26.8 -26.7 25.4 -25.5 24.5 -26.4 25.9 -26.4
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:04:45.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377863
2025-09-28T11:04:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:04:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:04:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:04:45.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:04:45.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:04:45.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:04:16', tmtdew=15.57, humidity=35.37, cloud=0.0, wind=12.9, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:04:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:04:45.148 [DEBUG] [Thread-122791] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:45.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-28T11:04:45.249 [DEBUG] [Thread-122794] [transport.py] [_log()] starting thread (client mode): 0x2e3c0310
2025-09-28T11:04:45.249 [DEBUG] [Thread-122794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:45.263 [DEBUG] [Thread-122794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:04:45.263 [INFO] [Thread-122794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:45.274 [DEBUG] [Thread-122794] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] Compression: none
2025-09-28T11:04:45.275 [DEBUG] [Thread-122794] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:45.334 [DEBUG] [Thread-122794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:45.335 [DEBUG] [Thread-122794] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:45.335 [DEBUG] [Thread-122794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:04:45.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:04:45.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:45.397 [DEBUG] [Thread-122794] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:45.398 [DEBUG] [Thread-122794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:45.398 [DEBUG] [Thread-122794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:45.398 [DEBUG] [Thread-122794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:04:45.398 [DEBUG] [Thread-122794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:45.420 [INFO] [Thread-122794] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:45.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-28T11:04:45.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:46.376 [DEBUG] [Thread-122794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:46.377 [DEBUG] [Thread-122794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:46.424 [DEBUG] [Thread-122794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:46.424 [DEBUG] [Thread-122794] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:46.433 [DEBUG] [Thread-122794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:46.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:46.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-28T11:04:46.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-28T11:04:46.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:46.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:46.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:46.468 [DEBUG] [Thread-122794] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:56.352 [DEBUG] [Thread-122796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:04:56.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:04:56.471 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:04:56.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:04:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 4, 48), 16.31, 33.25, 0.0, 10.59, 17.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:04:57.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:04:48
2025-09-28T11:04:57.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:04:57.300 [DEBUG] [Thread-122797] [transport.py] [_log()] starting thread (client mode): 0x2e376380
2025-09-28T11:04:57.300 [DEBUG] [Thread-122797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:57.320 [DEBUG] [Thread-122797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:04:57.320 [INFO] [Thread-122797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:04:57.323 [DEBUG] [Thread-122797] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] Compression: none
2025-09-28T11:04:57.324 [DEBUG] [Thread-122797] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:57.337 [DEBUG] [Thread-122797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:57.337 [DEBUG] [Thread-122797] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:57.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:04:57.338 [DEBUG] [Thread-122797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:04:57.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:57.341 [DEBUG] [Thread-122797] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:57.341 [DEBUG] [Thread-122797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:57.341 [DEBUG] [Thread-122797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:57.341 [DEBUG] [Thread-122797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:04:57.341 [DEBUG] [Thread-122797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:57.376 [INFO] [Thread-122797] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:57.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:58.136 [DEBUG] [Thread-122797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:58.136 [DEBUG] [Thread-122797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:58.136 [DEBUG] [Thread-122797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:04:58.177 [DEBUG] [Thread-122797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:58.178 [DEBUG] [Thread-122797] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:58.180 [DEBUG] [Thread-122797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:58.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:58.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:04:58.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:04:58.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:04:58.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:58.202 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:04:58.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:58.202 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:58.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:04:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.377863 -999.00  +18.60   9.50     35   +3.00 1 1 1 1 1   888    0 13.25 26.83 ----- 6.0 9.5 267.0 10.7 26.8 -26.7 25.4 -25.5 24.5 -26.4 25.9 -26.4
2025-09-28T11:04:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:04:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:04:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.377863
2025-09-28T11:04:58.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:04:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:04:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:04:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:04:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:04:58.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:04:48', tmtdew=16.31, humidity=33.25, cloud=0.0, wind=10.59, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:04:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:04:58.205 [DEBUG] [Thread-122797] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:04:58.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-28T11:04:58.309 [DEBUG] [Thread-122800] [transport.py] [_log()] starting thread (client mode): 0x2b98a590
2025-09-28T11:04:58.309 [DEBUG] [Thread-122800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:04:58.324 [DEBUG] [Thread-122800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:04:58.324 [INFO] [Thread-122800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:04:58.331 [DEBUG] [Thread-122800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] client lang: <none>
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] server lang: <none>
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] kex follows: False
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:04:58.332 [DEBUG] [Thread-122800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:04:58.333 [DEBUG] [Thread-122800] [transport.py] [_log()] Compression: none
2025-09-28T11:04:58.333 [DEBUG] [Thread-122800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:04:58.391 [DEBUG] [Thread-122800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:04:58.392 [DEBUG] [Thread-122800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:04:58.392 [DEBUG] [Thread-122800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:04:58.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:04:58.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:04:58.447 [DEBUG] [Thread-122800] [transport.py] [_log()] userauth is OK
2025-09-28T11:04:58.447 [DEBUG] [Thread-122800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:04:58.448 [DEBUG] [Thread-122800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:04:58.448 [DEBUG] [Thread-122800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:04:58.448 [DEBUG] [Thread-122800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:04:58.467 [INFO] [Thread-122800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:04:58.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-28T11:04:58.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:04:59.439 [DEBUG] [Thread-122800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:04:59.439 [DEBUG] [Thread-122800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:04:59.487 [DEBUG] [Thread-122800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:04:59.487 [DEBUG] [Thread-122800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:04:59.496 [DEBUG] [Thread-122800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:04:59.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:04:59.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-28T11:04:59.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-28T11:04:59.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:04:59.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:04:59.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:04:59.531 [DEBUG] [Thread-122800] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:04.858 [DEBUG] [Thread-122802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:09.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:05:09.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:05:09.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-28T11:05:10.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 4, 48), 16.31, 33.25, 0.0, 10.59, 17.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:05:10.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:04:48
2025-09-28T11:05:10.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:05:10.360 [DEBUG] [Thread-122803] [transport.py] [_log()] starting thread (client mode): 0x30ddde70
2025-09-28T11:05:10.360 [DEBUG] [Thread-122803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:10.380 [DEBUG] [Thread-122803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:05:10.380 [INFO] [Thread-122803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:05:10.383 [DEBUG] [Thread-122803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:10.383 [DEBUG] [Thread-122803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:05:10.383 [DEBUG] [Thread-122803] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:10.383 [DEBUG] [Thread-122803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:10.384 [DEBUG] [Thread-122803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] Compression: none
2025-09-28T11:05:10.385 [DEBUG] [Thread-122803] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:10.400 [DEBUG] [Thread-122803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:10.401 [DEBUG] [Thread-122803] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:10.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:05:10.402 [DEBUG] [Thread-122803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:05:10.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:10.404 [DEBUG] [Thread-122803] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:10.404 [DEBUG] [Thread-122803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:10.404 [DEBUG] [Thread-122803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:10.404 [DEBUG] [Thread-122803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:05:10.404 [DEBUG] [Thread-122803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:10.440 [INFO] [Thread-122803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:10.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:11.388 [DEBUG] [Thread-122805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:13.667 [DEBUG] [Thread-122803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:13.667 [DEBUG] [Thread-122803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:13.667 [DEBUG] [Thread-122803] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:05:13.707 [DEBUG] [Thread-122803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:13.708 [DEBUG] [Thread-122803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:13.710 [DEBUG] [Thread-122803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:13.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:13.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:05:13.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:05:13.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:05:13.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:13.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:05:13.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:13.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:13.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:05:13.855 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-28T11:05:13.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:04:48', tmtdew=16.31, humidity=33.25, cloud=0.0, wind=10.59, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:05:13.856 [DEBUG] [Thread-122803] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:13.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:05:13.952 [DEBUG] [Thread-122807] [transport.py] [_log()] starting thread (client mode): 0x30ddfa00
2025-09-28T11:05:13.953 [DEBUG] [Thread-122807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:13.967 [DEBUG] [Thread-122807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:05:13.967 [INFO] [Thread-122807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:13.975 [DEBUG] [Thread-122807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:13.976 [DEBUG] [Thread-122807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:13.976 [DEBUG] [Thread-122807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:13.976 [DEBUG] [Thread-122807] [transport.py] [_log()] Compression: none
2025-09-28T11:05:13.976 [DEBUG] [Thread-122807] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:14.031 [DEBUG] [Thread-122807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:14.031 [DEBUG] [Thread-122807] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:14.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:05:14.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:14.032 [DEBUG] [Thread-122807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:05:14.089 [DEBUG] [Thread-122807] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:14.089 [DEBUG] [Thread-122807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:14.089 [DEBUG] [Thread-122807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:14.089 [DEBUG] [Thread-122807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:05:14.089 [DEBUG] [Thread-122807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:14.107 [INFO] [Thread-122807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:14.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-28T11:05:14.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:15.180 [DEBUG] [Thread-122807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:15.180 [DEBUG] [Thread-122807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:15.228 [DEBUG] [Thread-122807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:15.228 [DEBUG] [Thread-122807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:15.236 [DEBUG] [Thread-122807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:15.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:15.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-28T11:05:15.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-28T11:05:15.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:15.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:15.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:15.269 [DEBUG] [Thread-122807] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:25.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:05:25.269 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:05:25.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-28T11:05:25.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 5, 20), 16.28, 33.32, 0.0, 10.29, 17.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:05:25.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:05:20
2025-09-28T11:05:25.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:05:26.107 [DEBUG] [Thread-122809] [transport.py] [_log()] starting thread (client mode): 0x30dddc00
2025-09-28T11:05:26.108 [DEBUG] [Thread-122809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:26.128 [DEBUG] [Thread-122809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:05:26.128 [INFO] [Thread-122809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:05:26.131 [DEBUG] [Thread-122809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] Compression: none
2025-09-28T11:05:26.132 [DEBUG] [Thread-122809] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:26.149 [DEBUG] [Thread-122809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:26.150 [DEBUG] [Thread-122809] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:26.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:05:26.151 [DEBUG] [Thread-122809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:05:26.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:26.153 [DEBUG] [Thread-122809] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:26.153 [DEBUG] [Thread-122809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:26.153 [DEBUG] [Thread-122809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:26.153 [DEBUG] [Thread-122809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:05:26.153 [DEBUG] [Thread-122809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:26.176 [INFO] [Thread-122809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:26.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:26.449 [DEBUG] [Thread-122811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:26.733 [DEBUG] [Thread-122809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:26.733 [DEBUG] [Thread-122809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:26.733 [DEBUG] [Thread-122809] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:05:26.774 [DEBUG] [Thread-122809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:26.774 [DEBUG] [Thread-122809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:26.776 [DEBUG] [Thread-122809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:26.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:26.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:05:26.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:05:26.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:05:26.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:26.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:05:26.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:26.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.378210 -999.00  +18.00  12.11     35   +2.40 1 1 1 1 1   888    0 14.31 50.19 ----- 12.4 12.1 247.2 16.7 26.8 -27.9 25.4 -26.2 24.5 -26.3 25.6 -29.1
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.378210
2025-09-28T11:05:26.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:05:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:05:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:05:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:05:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:05:26.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:05:20', tmtdew=16.28, humidity=33.32, cloud=0.0, wind=10.29, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:04:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:05:26.794 [DEBUG] [Thread-122809] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:26.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-28T11:05:26.907 [DEBUG] [Thread-122813] [transport.py] [_log()] starting thread (client mode): 0x2b98ba60
2025-09-28T11:05:26.907 [DEBUG] [Thread-122813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:26.922 [DEBUG] [Thread-122813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:05:26.923 [INFO] [Thread-122813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:26.930 [DEBUG] [Thread-122813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] Compression: none
2025-09-28T11:05:26.931 [DEBUG] [Thread-122813] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:26.993 [DEBUG] [Thread-122813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:26.993 [DEBUG] [Thread-122813] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:26.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:05:26.994 [DEBUG] [Thread-122813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:05:26.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:27.052 [DEBUG] [Thread-122813] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:27.052 [DEBUG] [Thread-122813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:27.052 [DEBUG] [Thread-122813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:27.052 [DEBUG] [Thread-122813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:05:27.052 [DEBUG] [Thread-122813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:27.066 [INFO] [Thread-122813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:27.066 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:05:27.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:28.060 [DEBUG] [Thread-122813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:28.060 [DEBUG] [Thread-122813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:28.107 [DEBUG] [Thread-122813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:28.107 [DEBUG] [Thread-122813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:28.118 [DEBUG] [Thread-122813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:28.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:28.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-28T11:05:28.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-28T11:05:28.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:28.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:28.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:28.157 [DEBUG] [Thread-122813] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:34.381 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:34.381 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:38.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:05:38.155 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:05:38.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-28T11:05:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 5, 20), 16.28, 33.32, 0.0, 10.29, 17.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:05:38.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:05:20
2025-09-28T11:05:38.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:05:38.985 [DEBUG] [Thread-122815] [transport.py] [_log()] starting thread (client mode): 0x2e377be0
2025-09-28T11:05:38.985 [DEBUG] [Thread-122815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:39.004 [DEBUG] [Thread-122815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:05:39.005 [INFO] [Thread-122815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:39.006 [DEBUG] [Thread-122815] [transport.py] [_log()] Compression: none
2025-09-28T11:05:39.007 [DEBUG] [Thread-122815] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:39.019 [DEBUG] [Thread-122815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:39.020 [DEBUG] [Thread-122815] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:39.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:05:39.021 [DEBUG] [Thread-122815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:05:39.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:39.023 [DEBUG] [Thread-122815] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:39.023 [DEBUG] [Thread-122815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:39.023 [DEBUG] [Thread-122815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:39.023 [DEBUG] [Thread-122815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:05:39.024 [DEBUG] [Thread-122815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:39.040 [INFO] [Thread-122815] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:39.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:40.638 [DEBUG] [Thread-122815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:40.638 [DEBUG] [Thread-122815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:40.639 [DEBUG] [Thread-122815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:05:40.679 [DEBUG] [Thread-122815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:40.679 [DEBUG] [Thread-122815] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:40.686 [DEBUG] [Thread-122815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:40.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:40.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:05:40.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:05:40.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:05:40.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:40.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:05:40.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.378210 -999.00  +18.00  12.11     35   +2.40 1 1 1 1 1   888    0 14.31 50.19 ----- 12.4 12.1 247.2 16.7 26.8 -27.9 25.4 -26.2 24.5 -26.3 25.6 -29.1
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:05:40.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.378210
2025-09-28T11:05:40.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:05:40.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:05:40.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:05:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:05:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:05:40.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:05:20', tmtdew=16.28, humidity=33.32, cloud=0.0, wind=10.29, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:04:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:05:40.720 [DEBUG] [Thread-122815] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:40.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-28T11:05:40.823 [DEBUG] [Thread-122818] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T11:05:40.823 [DEBUG] [Thread-122818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:40.839 [DEBUG] [Thread-122818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:05:40.839 [INFO] [Thread-122818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:05:40.846 [DEBUG] [Thread-122818] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:40.847 [DEBUG] [Thread-122818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:40.848 [DEBUG] [Thread-122818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:40.848 [DEBUG] [Thread-122818] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:40.848 [DEBUG] [Thread-122818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:40.848 [DEBUG] [Thread-122818] [transport.py] [_log()] Compression: none
2025-09-28T11:05:40.848 [DEBUG] [Thread-122818] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:40.904 [DEBUG] [Thread-122818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:40.905 [DEBUG] [Thread-122818] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:40.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:05:40.905 [DEBUG] [Thread-122818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:05:40.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:40.961 [DEBUG] [Thread-122818] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:40.961 [DEBUG] [Thread-122818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:40.961 [DEBUG] [Thread-122818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:40.961 [DEBUG] [Thread-122818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:05:40.961 [DEBUG] [Thread-122818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:40.980 [INFO] [Thread-122818] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:40.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-28T11:05:40.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:41.518 [DEBUG] [Thread-122820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:05:41.943 [DEBUG] [Thread-122818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:41.943 [DEBUG] [Thread-122818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:41.991 [DEBUG] [Thread-122818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:41.991 [DEBUG] [Thread-122818] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:42.001 [DEBUG] [Thread-122818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:42.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:42.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')
2025-09-28T11:05:42.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') -> 00000000
2025-09-28T11:05:42.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:42.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:42.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:42.036 [DEBUG] [Thread-122818] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:52.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:05:52.038 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:05:52.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-28T11:05:52.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 5, 20), 16.28, 33.32, 0.0, 10.29, 17.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:05:52.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:05:20
2025-09-28T11:05:52.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:05:52.902 [DEBUG] [Thread-122821] [transport.py] [_log()] starting thread (client mode): 0x2b96f820
2025-09-28T11:05:52.902 [DEBUG] [Thread-122821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:52.921 [DEBUG] [Thread-122821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:05:52.921 [INFO] [Thread-122821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] Compression: none
2025-09-28T11:05:52.925 [DEBUG] [Thread-122821] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:52.940 [DEBUG] [Thread-122821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:52.940 [DEBUG] [Thread-122821] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:52.940 [DEBUG] [Thread-122821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:05:52.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:05:52.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:52.941 [DEBUG] [Thread-122821] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:52.941 [DEBUG] [Thread-122821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:52.941 [DEBUG] [Thread-122821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:52.941 [DEBUG] [Thread-122821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:05:52.941 [DEBUG] [Thread-122821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:52.959 [INFO] [Thread-122821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:52.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:53.567 [DEBUG] [Thread-122821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:53.567 [DEBUG] [Thread-122821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:53.567 [DEBUG] [Thread-122821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:05:53.608 [DEBUG] [Thread-122821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:53.608 [DEBUG] [Thread-122821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:53.610 [DEBUG] [Thread-122821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:53.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:53.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:05:53.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:05:53.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:05:53.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:53.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:05:53.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.378905 -999.00  +17.80   6.75     39   +3.70 1 1 1 1 1   888    0 14.90 67.66 ----- 7.5 6.8 264.9 16.7 26.7 -26.5 25.2 -25.2 24.4 -27.1 25.6 -26.5
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.378905
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:05:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:05:20', tmtdew=16.28, humidity=33.32, cloud=0.0, wind=10.29, temperature=17.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:05:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:05:53.627 [DEBUG] [Thread-122821] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:53.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-28T11:05:53.726 [DEBUG] [Thread-122824] [transport.py] [_log()] starting thread (client mode): 0x2b9ceec0
2025-09-28T11:05:53.726 [DEBUG] [Thread-122824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:05:53.744 [DEBUG] [Thread-122824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:05:53.744 [INFO] [Thread-122824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:05:53.754 [DEBUG] [Thread-122824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:05:53.754 [DEBUG] [Thread-122824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:05:53.754 [DEBUG] [Thread-122824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:05:53.754 [DEBUG] [Thread-122824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:53.754 [DEBUG] [Thread-122824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] client lang: <none>
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] server lang: <none>
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] kex follows: False
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] Compression: none
2025-09-28T11:05:53.755 [DEBUG] [Thread-122824] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:05:53.812 [DEBUG] [Thread-122824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:05:53.812 [DEBUG] [Thread-122824] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:05:53.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:05:53.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:05:53.813 [DEBUG] [Thread-122824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:05:53.869 [DEBUG] [Thread-122824] [transport.py] [_log()] userauth is OK
2025-09-28T11:05:53.869 [DEBUG] [Thread-122824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:05:53.869 [DEBUG] [Thread-122824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:05:53.869 [DEBUG] [Thread-122824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:05:53.870 [DEBUG] [Thread-122824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:05:53.888 [INFO] [Thread-122824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:05:53.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-28T11:05:53.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:05:54.895 [DEBUG] [Thread-122824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:05:54.895 [DEBUG] [Thread-122824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:05:54.943 [DEBUG] [Thread-122824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:05:54.943 [DEBUG] [Thread-122824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:05:54.955 [DEBUG] [Thread-122824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:05:54.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:05:54.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-28T11:05: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') -> 00000000
2025-09-28T11:05:54.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:05:54.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:05:54.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:05:55.002 [DEBUG] [Thread-122824] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:05:56.587 [DEBUG] [Thread-122826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:04.886 [DEBUG] [Thread-122827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:05.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:06:05.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:06:05.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:06:05.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 5, 52), 15.77, 34.44, 0.0, 10.99, 17.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:06:05.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:05:52
2025-09-28T11:06:05.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:06:05.853 [DEBUG] [Thread-122828] [transport.py] [_log()] starting thread (client mode): 0x2b9cdc90
2025-09-28T11:06:05.853 [DEBUG] [Thread-122828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:05.874 [DEBUG] [Thread-122828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:06:05.874 [INFO] [Thread-122828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:06:05.877 [DEBUG] [Thread-122828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:05.877 [DEBUG] [Thread-122828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:05.878 [DEBUG] [Thread-122828] [transport.py] [_log()] Compression: none
2025-09-28T11:06:05.879 [DEBUG] [Thread-122828] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:05.897 [DEBUG] [Thread-122828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:05.897 [DEBUG] [Thread-122828] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:05.898 [DEBUG] [Thread-122828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:06:05.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:06:05.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:05.900 [DEBUG] [Thread-122828] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:05.900 [DEBUG] [Thread-122828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:05.900 [DEBUG] [Thread-122828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:05.900 [DEBUG] [Thread-122828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:06:05.900 [DEBUG] [Thread-122828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:05.918 [INFO] [Thread-122828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:05.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:06.654 [DEBUG] [Thread-122828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:06.654 [DEBUG] [Thread-122828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:06.655 [DEBUG] [Thread-122828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:06:06.695 [DEBUG] [Thread-122828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:06.695 [DEBUG] [Thread-122828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:06.697 [DEBUG] [Thread-122828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:06.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:06.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:06:06.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:06:06.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:06:06.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:06.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:06:06.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:06.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:06.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:06:06.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.378905 -999.00  +17.80   6.75     39   +3.70 1 1 1 1 1   888    0 14.90 67.66 ----- 7.5 6.8 264.9 16.7 26.7 -26.5 25.2 -25.2 24.4 -27.1 25.6 -26.5
2025-09-28T11:06:06.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:06:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:06:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.378905
2025-09-28T11:06:06.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:06:06.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:06:06.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:06:06.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:06:06.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:06:06.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:05:52', tmtdew=15.77, humidity=34.44, cloud=0.0, wind=10.99, temperature=17.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:05:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:06:06.720 [DEBUG] [Thread-122828] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:06.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-28T11:06:06.822 [DEBUG] [Thread-122831] [transport.py] [_log()] starting thread (client mode): 0x2b98a7d0
2025-09-28T11:06:06.822 [DEBUG] [Thread-122831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:06.837 [DEBUG] [Thread-122831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:06:06.837 [INFO] [Thread-122831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:06:06.845 [DEBUG] [Thread-122831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:06.845 [DEBUG] [Thread-122831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:06:06.845 [DEBUG] [Thread-122831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:06.845 [DEBUG] [Thread-122831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:06.845 [DEBUG] [Thread-122831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:06.846 [DEBUG] [Thread-122831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:06.847 [DEBUG] [Thread-122831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:06.847 [DEBUG] [Thread-122831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:06.847 [DEBUG] [Thread-122831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:06.847 [DEBUG] [Thread-122831] [transport.py] [_log()] Compression: none
2025-09-28T11:06:06.847 [DEBUG] [Thread-122831] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:06.907 [DEBUG] [Thread-122831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:06.908 [DEBUG] [Thread-122831] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:06.908 [DEBUG] [Thread-122831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:06:06.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:06:06.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:06.966 [DEBUG] [Thread-122831] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:06.966 [DEBUG] [Thread-122831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:06.966 [DEBUG] [Thread-122831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:06.966 [DEBUG] [Thread-122831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:06:06.966 [DEBUG] [Thread-122831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:06.984 [INFO] [Thread-122831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:06.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:06:06.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:07.946 [DEBUG] [Thread-122831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:07.946 [DEBUG] [Thread-122831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:07.995 [DEBUG] [Thread-122831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:07.995 [DEBUG] [Thread-122831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:08.003 [DEBUG] [Thread-122831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:08.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:08.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-28T11:06:08.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') -> 00000000
2025-09-28T11:06:08.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:08.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:08.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:08.036 [DEBUG] [Thread-122831] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:11.650 [DEBUG] [Thread-122833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:18.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:06:18.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:06:18.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-28T11:06:18.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 5, 52), 15.77, 34.44, 0.0, 10.99, 17.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:06:18.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:05:52
2025-09-28T11:06:18.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:06:18.858 [DEBUG] [Thread-122834] [transport.py] [_log()] starting thread (client mode): 0x2b989600
2025-09-28T11:06:18.858 [DEBUG] [Thread-122834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:18.879 [DEBUG] [Thread-122834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:06:18.879 [INFO] [Thread-122834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:06:18.882 [DEBUG] [Thread-122834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:18.882 [DEBUG] [Thread-122834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:06:18.882 [DEBUG] [Thread-122834] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:18.882 [DEBUG] [Thread-122834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] Compression: none
2025-09-28T11:06:18.883 [DEBUG] [Thread-122834] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:18.901 [DEBUG] [Thread-122834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:18.902 [DEBUG] [Thread-122834] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:18.902 [DEBUG] [Thread-122834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:06:18.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:06:18.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:18.944 [DEBUG] [Thread-122834] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:18.944 [DEBUG] [Thread-122834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:18.944 [DEBUG] [Thread-122834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:18.944 [DEBUG] [Thread-122834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:06:18.944 [DEBUG] [Thread-122834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:18.976 [INFO] [Thread-122834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:18.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:19.754 [DEBUG] [Thread-122834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:19.755 [DEBUG] [Thread-122834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:19.755 [DEBUG] [Thread-122834] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:06:19.795 [DEBUG] [Thread-122834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:19.796 [DEBUG] [Thread-122834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:19.798 [DEBUG] [Thread-122834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:19.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:19.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:06:19.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:06:19.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:06:19.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:19.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:06:19.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.378905 -999.00  +17.80   6.75     39   +3.70 1 1 1 1 1   888    0 14.90 67.66 ----- 7.5 6.8 264.9 16.7 26.7 -26.5 25.2 -25.2 24.4 -27.1 25.6 -26.5
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:06:19.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.378905
2025-09-28T11:06:19.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:06:19.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:06:19.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:06:19.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:06:19.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:06:19.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:05:52', tmtdew=15.77, humidity=34.44, cloud=0.0, wind=10.99, temperature=17.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:05:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:06:19.824 [DEBUG] [Thread-122834] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:19.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-28T11:06:19.928 [DEBUG] [Thread-122837] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T11:06:19.928 [DEBUG] [Thread-122837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:19.942 [DEBUG] [Thread-122837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:06:19.943 [INFO] [Thread-122837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:19.950 [DEBUG] [Thread-122837] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] Compression: none
2025-09-28T11:06:19.951 [DEBUG] [Thread-122837] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:20.010 [DEBUG] [Thread-122837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:20.010 [DEBUG] [Thread-122837] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:20.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:06:20.011 [DEBUG] [Thread-122837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:06:20.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:20.066 [DEBUG] [Thread-122837] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:20.066 [DEBUG] [Thread-122837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:20.066 [DEBUG] [Thread-122837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:20.067 [DEBUG] [Thread-122837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:06:20.067 [DEBUG] [Thread-122837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:20.085 [INFO] [Thread-122837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:20.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-28T11:06:20.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:21.019 [DEBUG] [Thread-122837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:21.019 [DEBUG] [Thread-122837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:21.069 [DEBUG] [Thread-122837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:21.070 [DEBUG] [Thread-122837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:21.081 [DEBUG] [Thread-122837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:21.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06: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')
2025-09-28T11:06:21.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-28T11:06:21.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:21.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:21.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:21.118 [DEBUG] [Thread-122837] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:26.710 [DEBUG] [Thread-122839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:31.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:06:31.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:06:31.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-28T11:06:31.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 6, 24), 16.83, 31.97, 0.0, 12.25, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:06:31.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:06:24
2025-09-28T11:06:31.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:06:31.971 [DEBUG] [Thread-122840] [transport.py] [_log()] starting thread (client mode): 0x2b98a170
2025-09-28T11:06:31.971 [DEBUG] [Thread-122840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:31.991 [DEBUG] [Thread-122840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:06:31.992 [INFO] [Thread-122840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:06:31.994 [DEBUG] [Thread-122840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:31.994 [DEBUG] [Thread-122840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] Compression: none
2025-09-28T11:06:31.995 [DEBUG] [Thread-122840] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:32.011 [DEBUG] [Thread-122840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:32.011 [DEBUG] [Thread-122840] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:32.011 [DEBUG] [Thread-122840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:06:32.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:06:32.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:32.012 [DEBUG] [Thread-122840] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:32.012 [DEBUG] [Thread-122840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:32.012 [DEBUG] [Thread-122840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:32.013 [DEBUG] [Thread-122840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:06:32.013 [DEBUG] [Thread-122840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:32.022 [INFO] [Thread-122840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:32.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:32.565 [DEBUG] [Thread-122840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:32.565 [DEBUG] [Thread-122840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:32.566 [DEBUG] [Thread-122840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:06:32.606 [DEBUG] [Thread-122840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:32.606 [DEBUG] [Thread-122840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:32.608 [DEBUG] [Thread-122840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:32.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:32.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:06:32.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:06:32.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:06:32.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:32.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:06:32.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:32.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:06:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379252 -999.00  +18.00  17.04     31   +0.90 1 1 1 1 1   888    0 15.43 81.01 ----- 19.9 17.0 276.4 25.2 26.4 -28.3 25.2 -27.5 23.9 -30.3 25.5 -27.1
2025-09-28T11:06:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:06:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:06:32.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379252
2025-09-28T11:06:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:06:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:06:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:06:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:06:32.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:06:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:06:24', tmtdew=16.83, humidity=31.97, cloud=0.0, wind=12.25, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:06:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:06:32.633 [DEBUG] [Thread-122840] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:32.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-28T11:06:32.748 [DEBUG] [Thread-122843] [transport.py] [_log()] starting thread (client mode): 0x2b988430
2025-09-28T11:06:32.748 [DEBUG] [Thread-122843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:32.763 [DEBUG] [Thread-122843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:06:32.763 [INFO] [Thread-122843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:32.771 [DEBUG] [Thread-122843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] Compression: none
2025-09-28T11:06:32.772 [DEBUG] [Thread-122843] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:32.833 [DEBUG] [Thread-122843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:32.834 [DEBUG] [Thread-122843] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:32.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:06:32.835 [DEBUG] [Thread-122843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:06:32.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:32.890 [DEBUG] [Thread-122843] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:32.890 [DEBUG] [Thread-122843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:32.890 [DEBUG] [Thread-122843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:32.890 [DEBUG] [Thread-122843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:06:32.890 [DEBUG] [Thread-122843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:32.913 [INFO] [Thread-122843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:32.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-28T11:06:32.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:33.905 [DEBUG] [Thread-122843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:33.906 [DEBUG] [Thread-122843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:33.953 [DEBUG] [Thread-122843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:33.953 [DEBUG] [Thread-122843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:33.962 [DEBUG] [Thread-122843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:33.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:33.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-28T11:06:33.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') -> 00000000
2025-09-28T11:06:33.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:33.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:33.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:33.996 [DEBUG] [Thread-122843] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:34.523 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:34.524 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:41.746 [DEBUG] [Thread-122845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:43.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:06:43.995 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:06:43.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-28T11:06:44.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 6, 24), 16.83, 31.97, 0.0, 12.25, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:06:44.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:06:24
2025-09-28T11:06:44.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:06:44.824 [DEBUG] [Thread-122846] [transport.py] [_log()] starting thread (client mode): 0x2b96cd30
2025-09-28T11:06:44.825 [DEBUG] [Thread-122846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:44.850 [DEBUG] [Thread-122846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:06:44.851 [INFO] [Thread-122846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:06:44.854 [DEBUG] [Thread-122846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:44.854 [DEBUG] [Thread-122846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:06:44.854 [DEBUG] [Thread-122846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] Compression: none
2025-09-28T11:06:44.855 [DEBUG] [Thread-122846] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:44.871 [DEBUG] [Thread-122846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:44.872 [DEBUG] [Thread-122846] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:44.872 [DEBUG] [Thread-122846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:06:44.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:06:44.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:44.874 [DEBUG] [Thread-122846] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:44.875 [DEBUG] [Thread-122846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:44.875 [DEBUG] [Thread-122846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:44.875 [DEBUG] [Thread-122846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:06:44.875 [DEBUG] [Thread-122846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:44.899 [INFO] [Thread-122846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:44.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:45.656 [DEBUG] [Thread-122846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:45.656 [DEBUG] [Thread-122846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:45.657 [DEBUG] [Thread-122846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:06:45.697 [DEBUG] [Thread-122846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:45.698 [DEBUG] [Thread-122846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:45.700 [DEBUG] [Thread-122846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:45.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:45.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:06:45.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:06:45.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:06:45.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:45.719 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:06:45.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:45.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:06:45.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379252 -999.00  +18.00  17.04     31   +0.90 1 1 1 1 1   888    0 15.43 81.01 ----- 19.9 17.0 276.4 25.2 26.4 -28.3 25.2 -27.5 23.9 -30.3 25.5 -27.1
2025-09-28T11:06:45.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:06:45.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:06:45.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379252
2025-09-28T11:06:45.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:06:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:06:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:06:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:06:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:06:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:06:24', tmtdew=16.83, humidity=31.97, cloud=0.0, wind=12.25, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:06:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:06:45.721 [DEBUG] [Thread-122846] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:45.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-28T11:06:45.828 [DEBUG] [Thread-122849] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T11:06:45.829 [DEBUG] [Thread-122849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:45.844 [DEBUG] [Thread-122849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:06:45.844 [INFO] [Thread-122849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:45.851 [DEBUG] [Thread-122849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:45.852 [DEBUG] [Thread-122849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:45.852 [DEBUG] [Thread-122849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:45.852 [DEBUG] [Thread-122849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:45.852 [DEBUG] [Thread-122849] [transport.py] [_log()] Compression: none
2025-09-28T11:06:45.852 [DEBUG] [Thread-122849] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:45.909 [DEBUG] [Thread-122849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:45.909 [DEBUG] [Thread-122849] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:45.909 [DEBUG] [Thread-122849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:06:45.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:06:45.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:45.966 [DEBUG] [Thread-122849] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:45.966 [DEBUG] [Thread-122849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:45.966 [DEBUG] [Thread-122849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:45.967 [DEBUG] [Thread-122849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:06:45.967 [DEBUG] [Thread-122849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:45.985 [INFO] [Thread-122849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:45.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-28T11:06:45.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:46.981 [DEBUG] [Thread-122849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:46.981 [DEBUG] [Thread-122849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:47.029 [DEBUG] [Thread-122849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:47.029 [DEBUG] [Thread-122849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:47.038 [DEBUG] [Thread-122849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:47.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:47.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-28T11:06:47.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-28T11:06:47.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:47.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:47.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:47.072 [DEBUG] [Thread-122849] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:56.807 [DEBUG] [Thread-122851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:06:57.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:06:57.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:06:57.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:06:57.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 6, 24), 16.83, 31.97, 0.0, 12.25, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:06:57.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:06:24
2025-09-28T11:06:57.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:06:57.970 [DEBUG] [Thread-122852] [transport.py] [_log()] starting thread (client mode): 0x2e3f8940
2025-09-28T11:06:57.970 [DEBUG] [Thread-122852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:57.992 [DEBUG] [Thread-122852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:06:57.992 [INFO] [Thread-122852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:06:57.995 [DEBUG] [Thread-122852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] Compression: none
2025-09-28T11:06:57.996 [DEBUG] [Thread-122852] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:58.004 [DEBUG] [Thread-122852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:58.004 [DEBUG] [Thread-122852] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:58.004 [DEBUG] [Thread-122852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:06:58.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:06:58.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:58.005 [DEBUG] [Thread-122852] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:58.005 [DEBUG] [Thread-122852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:58.005 [DEBUG] [Thread-122852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:58.005 [DEBUG] [Thread-122852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:06:58.005 [DEBUG] [Thread-122852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:58.022 [INFO] [Thread-122852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:58.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:58.575 [DEBUG] [Thread-122852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:58.575 [DEBUG] [Thread-122852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:58.575 [DEBUG] [Thread-122852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:06:58.616 [DEBUG] [Thread-122852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:58.616 [DEBUG] [Thread-122852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:58.618 [DEBUG] [Thread-122852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:58.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:58.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:06:58.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:06:58.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:06:58.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:58.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:06:58.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379599 -999.00  +17.80  17.40     32   +1.00 1 1 1 1 1   888    0 15.72 91.90 ----- 17.8 17.4 274.5 24.7 26.2 -29.8 25.1 -26.4 23.6 -28.1 25.1 -28.2
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379599
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:06:58.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:06:58.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:06:24', tmtdew=16.83, humidity=31.97, cloud=0.0, wind=12.25, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:06:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:06:58.633 [DEBUG] [Thread-122852] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:06:58.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-28T11:06:58.725 [DEBUG] [Thread-122855] [transport.py] [_log()] starting thread (client mode): 0x2e3dc130
2025-09-28T11:06:58.726 [DEBUG] [Thread-122855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:06:58.742 [DEBUG] [Thread-122855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:06:58.743 [INFO] [Thread-122855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:58.751 [DEBUG] [Thread-122855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] client lang: <none>
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] server lang: <none>
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] kex follows: False
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] Compression: none
2025-09-28T11:06:58.752 [DEBUG] [Thread-122855] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:06:58.814 [DEBUG] [Thread-122855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:06:58.814 [DEBUG] [Thread-122855] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:06:58.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:06:58.815 [DEBUG] [Thread-122855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:06:58.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:06:58.871 [DEBUG] [Thread-122855] [transport.py] [_log()] userauth is OK
2025-09-28T11:06:58.871 [DEBUG] [Thread-122855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:06:58.871 [DEBUG] [Thread-122855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:06:58.871 [DEBUG] [Thread-122855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:06:58.872 [DEBUG] [Thread-122855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:06:58.892 [INFO] [Thread-122855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:06:58.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:06:58.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:06:59.851 [DEBUG] [Thread-122855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:06:59.851 [DEBUG] [Thread-122855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:06:59.899 [DEBUG] [Thread-122855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:06:59.900 [DEBUG] [Thread-122855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:06:59.909 [DEBUG] [Thread-122855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:06:59.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:06:59.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-28T11:06:59.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-28T11:06:59.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:06:59.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:06:59.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:06:59.944 [DEBUG] [Thread-122855] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:04.956 [DEBUG] [Thread-122857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:09.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:07:09.946 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:07:09.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-28T11:07:10.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 6, 56), 19.24, 27.0, 0.0, 17.84, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:07:10.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:06:56
2025-09-28T11:07:10.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:07:10.766 [DEBUG] [Thread-122858] [transport.py] [_log()] starting thread (client mode): 0x2b9f3760
2025-09-28T11:07:10.766 [DEBUG] [Thread-122858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:10.787 [DEBUG] [Thread-122858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:07:10.787 [INFO] [Thread-122858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:10.788 [DEBUG] [Thread-122858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] Compression: none
2025-09-28T11:07:10.789 [DEBUG] [Thread-122858] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:10.802 [DEBUG] [Thread-122858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:10.803 [DEBUG] [Thread-122858] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:10.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:07:10.804 [DEBUG] [Thread-122858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:07:10.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:10.805 [DEBUG] [Thread-122858] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:10.806 [DEBUG] [Thread-122858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:10.806 [DEBUG] [Thread-122858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:10.806 [DEBUG] [Thread-122858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:07:10.806 [DEBUG] [Thread-122858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:10.826 [INFO] [Thread-122858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:10.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:11.611 [DEBUG] [Thread-122858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:11.611 [DEBUG] [Thread-122858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:11.611 [DEBUG] [Thread-122858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:07:11.651 [DEBUG] [Thread-122858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:11.651 [DEBUG] [Thread-122858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:11.657 [DEBUG] [Thread-122858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:11.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:11.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:07:11.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:07:11.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:07:11.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:11.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:07:11.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:11.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:11.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:07:11.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379599 -999.00  +17.80  17.40     32   +1.00 1 1 1 1 1   888    0 15.72 91.90 ----- 17.8 17.4 274.5 24.7 26.2 -29.8 25.1 -26.4 23.6 -28.1 25.1 -28.2
2025-09-28T11:07:11.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:07:11.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:07:11.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379599
2025-09-28T11:07:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:07:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:07:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:07:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:07:11.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:07:11.674 [DEBUG] [Thread-122858] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:11.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:06:56', tmtdew=19.24, humidity=27.0, cloud=0.0, wind=17.84, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:06:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:07:11.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-28T11:07:11.779 [DEBUG] [Thread-122861] [transport.py] [_log()] starting thread (client mode): 0x2e3fa5c0
2025-09-28T11:07:11.779 [DEBUG] [Thread-122861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:11.794 [DEBUG] [Thread-122861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:07:11.795 [INFO] [Thread-122861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:11.802 [DEBUG] [Thread-122861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] Compression: none
2025-09-28T11:07:11.803 [DEBUG] [Thread-122861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:11.842 [DEBUG] [Thread-122863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:11.859 [DEBUG] [Thread-122861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:11.859 [DEBUG] [Thread-122861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:11.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:07:11.860 [DEBUG] [Thread-122861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:07:11.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:11.915 [DEBUG] [Thread-122861] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:11.915 [DEBUG] [Thread-122861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:11.916 [DEBUG] [Thread-122861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:11.916 [DEBUG] [Thread-122861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:07:11.916 [DEBUG] [Thread-122861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:11.935 [INFO] [Thread-122861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:11.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-28T11:07:11.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:12.966 [DEBUG] [Thread-122861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:12.966 [DEBUG] [Thread-122861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:13.014 [DEBUG] [Thread-122861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:13.014 [DEBUG] [Thread-122861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:13.023 [DEBUG] [Thread-122861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:13.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:13.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-28T11:07:13.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') -> 00000000
2025-09-28T11:07:13.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:13.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:13.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:13.059 [DEBUG] [Thread-122861] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:23.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:07:23.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:07:23.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:07:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 6, 56), 19.24, 27.0, 0.0, 17.84, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:07:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:06:56
2025-09-28T11:07:23.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:07:23.892 [DEBUG] [Thread-122864] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T11:07:23.892 [DEBUG] [Thread-122864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:23.913 [DEBUG] [Thread-122864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:07:23.913 [INFO] [Thread-122864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:07:23.915 [DEBUG] [Thread-122864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:23.915 [DEBUG] [Thread-122864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:07:23.915 [DEBUG] [Thread-122864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:23.915 [DEBUG] [Thread-122864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:23.915 [DEBUG] [Thread-122864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:23.916 [DEBUG] [Thread-122864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] Compression: none
2025-09-28T11:07:23.917 [DEBUG] [Thread-122864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:23.930 [DEBUG] [Thread-122864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:23.931 [DEBUG] [Thread-122864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:23.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:07:23.932 [DEBUG] [Thread-122864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:07:23.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:23.934 [DEBUG] [Thread-122864] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:23.934 [DEBUG] [Thread-122864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:23.934 [DEBUG] [Thread-122864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:23.935 [DEBUG] [Thread-122864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:07:23.935 [DEBUG] [Thread-122864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:23.959 [INFO] [Thread-122864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:23.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:24.710 [DEBUG] [Thread-122864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:24.711 [DEBUG] [Thread-122864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:24.711 [DEBUG] [Thread-122864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:07:24.751 [DEBUG] [Thread-122864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:24.752 [DEBUG] [Thread-122864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:24.755 [DEBUG] [Thread-122864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:24.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:24.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:07:24.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:07:24.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:07:24.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:24.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:07:24.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:24.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379599 -999.00  +17.80  17.40     32   +1.00 1 1 1 1 1   888    0 15.72 91.90 ----- 17.8 17.4 274.5 24.7 26.2 -29.8 25.1 -26.4 23.6 -28.1 25.1 -28.2
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379599
2025-09-28T11:07:24.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:07:24.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:07:24.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:07:24.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:07:24.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:07:24.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:06:56', tmtdew=19.24, humidity=27.0, cloud=0.0, wind=17.84, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:06:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:07:24.776 [DEBUG] [Thread-122864] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:24.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-28T11:07:24.880 [DEBUG] [Thread-122867] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-28T11:07:24.880 [DEBUG] [Thread-122867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:24.894 [DEBUG] [Thread-122867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:07:24.895 [INFO] [Thread-122867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:07:24.902 [DEBUG] [Thread-122867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:24.902 [DEBUG] [Thread-122867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:07:24.902 [DEBUG] [Thread-122867] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] Compression: none
2025-09-28T11:07:24.903 [DEBUG] [Thread-122867] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:24.961 [DEBUG] [Thread-122867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:24.961 [DEBUG] [Thread-122867] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:24.962 [DEBUG] [Thread-122867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:07:24.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:07:24.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:25.019 [DEBUG] [Thread-122867] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:25.020 [DEBUG] [Thread-122867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:25.020 [DEBUG] [Thread-122867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:25.020 [DEBUG] [Thread-122867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:07:25.020 [DEBUG] [Thread-122867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:25.041 [INFO] [Thread-122867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:25.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-28T11:07:25.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:26.128 [DEBUG] [Thread-122867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:26.128 [DEBUG] [Thread-122867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:26.176 [DEBUG] [Thread-122867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:26.176 [DEBUG] [Thread-122867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:26.188 [DEBUG] [Thread-122867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:26.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:26.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-28T11:07:26.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-28T11:07:26.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:26.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:26.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:26.226 [DEBUG] [Thread-122867] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:26.901 [DEBUG] [Thread-122869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:34.673 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:34.674 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:36.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:07:36.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:07:36.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-28T11:07:36.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 7, 28), 19.74, 26.12, 0.0, 19.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:07:36.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:07:28
2025-09-28T11:07:36.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:07:37.043 [DEBUG] [Thread-122870] [transport.py] [_log()] starting thread (client mode): 0x2b9895d0
2025-09-28T11:07:37.043 [DEBUG] [Thread-122870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:37.063 [DEBUG] [Thread-122870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:07:37.063 [INFO] [Thread-122870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:37.067 [DEBUG] [Thread-122870] [transport.py] [_log()] Compression: none
2025-09-28T11:07:37.068 [DEBUG] [Thread-122870] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:37.087 [DEBUG] [Thread-122870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:37.087 [DEBUG] [Thread-122870] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:37.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:07:37.088 [DEBUG] [Thread-122870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:07:37.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:37.090 [DEBUG] [Thread-122870] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:37.091 [DEBUG] [Thread-122870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:37.091 [DEBUG] [Thread-122870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:37.091 [DEBUG] [Thread-122870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:07:37.091 [DEBUG] [Thread-122870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:37.109 [INFO] [Thread-122870] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:37.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:37.664 [DEBUG] [Thread-122870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:37.665 [DEBUG] [Thread-122870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:37.665 [DEBUG] [Thread-122870] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:07:37.705 [DEBUG] [Thread-122870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:37.706 [DEBUG] [Thread-122870] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:37.708 [DEBUG] [Thread-122870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:37.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:37.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:07:37.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:07:37.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:07:37.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:37.729 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:07:37.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:37.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:07:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379947 -999.00  +17.30  19.20     33   +1.00 1 1 1 1 1   888    0 16.38 116.22 ----- 26.8 19.2 284.0 27.3 26.1 -28.1 25.0 -26.1 23.5 -30.4 25.0 -26.6
2025-09-28T11:07:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:07:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:07:37.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379947
2025-09-28T11:07:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:07:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:07:37.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:07:37.731 [DEBUG] [Thread-122870] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:37.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:07:37.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:07:37.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:07:28', tmtdew=19.74, humidity=26.12, cloud=0.0, wind=19.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:07:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:07:37.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-28T11:07:37.840 [DEBUG] [Thread-122873] [transport.py] [_log()] starting thread (client mode): 0x2b9f2e30
2025-09-28T11:07:37.840 [DEBUG] [Thread-122873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:37.854 [DEBUG] [Thread-122873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:07:37.855 [INFO] [Thread-122873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:37.862 [DEBUG] [Thread-122873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] Compression: none
2025-09-28T11:07:37.863 [DEBUG] [Thread-122873] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:37.924 [DEBUG] [Thread-122873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:37.925 [DEBUG] [Thread-122873] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:37.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:07:37.926 [DEBUG] [Thread-122873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:07:37.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:37.980 [DEBUG] [Thread-122873] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:37.980 [DEBUG] [Thread-122873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:37.981 [DEBUG] [Thread-122873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:37.981 [DEBUG] [Thread-122873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:07:37.981 [DEBUG] [Thread-122873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:38.000 [INFO] [Thread-122873] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:38.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-28T11:07:38.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:38.985 [DEBUG] [Thread-122873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:38.985 [DEBUG] [Thread-122873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:39.033 [DEBUG] [Thread-122873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:39.034 [DEBUG] [Thread-122873] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:39.043 [DEBUG] [Thread-122873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:39.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:39.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-28T11:07:39.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-28T11:07:39.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:39.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:39.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:39.078 [DEBUG] [Thread-122873] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:41.937 [DEBUG] [Thread-122875 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:07:49.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:07:49.081 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:07:49.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-28T11:07:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 7, 28), 19.74, 26.12, 0.0, 19.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:07:49.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:07:28
2025-09-28T11:07:49.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:07:49.922 [DEBUG] [Thread-122876] [transport.py] [_log()] starting thread (client mode): 0x2e3deda0
2025-09-28T11:07:49.922 [DEBUG] [Thread-122876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:49.941 [DEBUG] [Thread-122876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:07:49.942 [INFO] [Thread-122876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:07:49.945 [DEBUG] [Thread-122876] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:49.945 [DEBUG] [Thread-122876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:07:49.945 [DEBUG] [Thread-122876] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:49.945 [DEBUG] [Thread-122876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] Compression: none
2025-09-28T11:07:49.946 [DEBUG] [Thread-122876] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:49.963 [DEBUG] [Thread-122876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:49.964 [DEBUG] [Thread-122876] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:49.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:07:49.964 [DEBUG] [Thread-122876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:07:49.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:49.967 [DEBUG] [Thread-122876] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:49.967 [DEBUG] [Thread-122876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:49.967 [DEBUG] [Thread-122876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:49.967 [DEBUG] [Thread-122876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:07:49.967 [DEBUG] [Thread-122876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:49.991 [INFO] [Thread-122876] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:49.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:50.732 [DEBUG] [Thread-122876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:50.732 [DEBUG] [Thread-122876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:50.732 [DEBUG] [Thread-122876] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:07:50.773 [DEBUG] [Thread-122876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:50.774 [DEBUG] [Thread-122876] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:50.776 [DEBUG] [Thread-122876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:50.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:50.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:07:50.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:07:50.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:07:50.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:50.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:07:50.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:50.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:50.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:07:50.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.379947 -999.00  +17.30  19.20     33   +1.00 1 1 1 1 1   888    0 16.38 116.22 ----- 26.8 19.2 284.0 27.3 26.1 -28.1 25.0 -26.1 23.5 -30.4 25.0 -26.6
2025-09-28T11:07:50.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:07:50.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:07:50.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.379947
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:07:50.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:07:28', tmtdew=19.74, humidity=26.12, cloud=0.0, wind=19.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:07:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:07:50.801 [DEBUG] [Thread-122876] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:50.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-28T11:07:50.904 [DEBUG] [Thread-122879] [transport.py] [_log()] starting thread (client mode): 0x2b98b520
2025-09-28T11:07:50.904 [DEBUG] [Thread-122879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:07:50.920 [DEBUG] [Thread-122879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:07:50.920 [INFO] [Thread-122879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:07:50.927 [DEBUG] [Thread-122879] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:07:50.928 [DEBUG] [Thread-122879] [transport.py] [_log()] client lang: <none>
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] server lang: <none>
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] kex follows: False
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:07:50.929 [DEBUG] [Thread-122879] [transport.py] [_log()] Compression: none
2025-09-28T11:07:50.930 [DEBUG] [Thread-122879] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:07:50.993 [DEBUG] [Thread-122879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:07:50.993 [DEBUG] [Thread-122879] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:07:50.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:07:50.995 [DEBUG] [Thread-122879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:07:50.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:07:51.053 [DEBUG] [Thread-122879] [transport.py] [_log()] userauth is OK
2025-09-28T11:07:51.053 [DEBUG] [Thread-122879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:07:51.053 [DEBUG] [Thread-122879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:07:51.054 [DEBUG] [Thread-122879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:07:51.054 [DEBUG] [Thread-122879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:07:51.074 [INFO] [Thread-122879] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:07:51.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-28T11:07:51.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:07:52.085 [DEBUG] [Thread-122879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:07:52.085 [DEBUG] [Thread-122879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:07:52.133 [DEBUG] [Thread-122879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:07:52.133 [DEBUG] [Thread-122879] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:07:52.142 [DEBUG] [Thread-122879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:07:52.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:07:52.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')
2025-09-28T11:07:52.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') -> 00000000
2025-09-28T11:07:52.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:07:52.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:07:52.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:07:52.176 [DEBUG] [Thread-122879] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:07:57.001 [DEBUG] [Thread-122881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:02.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:08:02.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:08:02.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-28T11:08:02.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 7, 28), 19.74, 26.12, 0.0, 19.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:08:02.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:07:28
2025-09-28T11:08:02.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:08:03.054 [DEBUG] [Thread-122882] [transport.py] [_log()] starting thread (client mode): 0x2e3dd000
2025-09-28T11:08:03.054 [DEBUG] [Thread-122882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:03.075 [DEBUG] [Thread-122882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:08:03.075 [INFO] [Thread-122882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:03.078 [DEBUG] [Thread-122882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] Compression: none
2025-09-28T11:08:03.079 [DEBUG] [Thread-122882] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:03.096 [DEBUG] [Thread-122882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:03.096 [DEBUG] [Thread-122882] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:03.097 [DEBUG] [Thread-122882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:08:03.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:08:03.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:03.099 [DEBUG] [Thread-122882] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:03.099 [DEBUG] [Thread-122882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:03.099 [DEBUG] [Thread-122882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:03.100 [DEBUG] [Thread-122882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:08:03.100 [DEBUG] [Thread-122882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:03.118 [INFO] [Thread-122882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:03.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:03.722 [DEBUG] [Thread-122882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:03.723 [DEBUG] [Thread-122882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:03.723 [DEBUG] [Thread-122882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:08:03.763 [DEBUG] [Thread-122882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:03.763 [DEBUG] [Thread-122882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:03.766 [DEBUG] [Thread-122882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:03.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:03.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:08:03.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:08:03.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:08:03.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:03.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:08:03.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.380294 -999.00  +17.20  16.51     33   +1.00 1 1 1 1 1   888    0 17.07 128.72 ----- 16.1 16.5 293.8 25.2 26.2 -27.9 24.9 -26.6 23.6 -26.4 24.9 -25.8
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:08:03.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.380294
2025-09-28T11:08:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:08:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:08:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:08:03.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:08:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:08:03.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:07:28', tmtdew=19.74, humidity=26.12, cloud=0.0, wind=19.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:07:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:08:03.791 [DEBUG] [Thread-122882] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:03.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-28T11:08:03.897 [DEBUG] [Thread-122885] [transport.py] [_log()] starting thread (client mode): 0x2b9f35e0
2025-09-28T11:08:03.897 [DEBUG] [Thread-122885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:03.913 [DEBUG] [Thread-122885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:08:03.913 [INFO] [Thread-122885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:03.921 [DEBUG] [Thread-122885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] Compression: none
2025-09-28T11:08:03.922 [DEBUG] [Thread-122885] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:03.980 [DEBUG] [Thread-122885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:03.981 [DEBUG] [Thread-122885] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:03.981 [DEBUG] [Thread-122885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:08:03.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:08:03.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:04.040 [DEBUG] [Thread-122885] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:04.041 [DEBUG] [Thread-122885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:04.041 [DEBUG] [Thread-122885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:04.041 [DEBUG] [Thread-122885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:08:04.041 [DEBUG] [Thread-122885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:04.060 [INFO] [Thread-122885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:04.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:08:04.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:05.010 [DEBUG] [Thread-122887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:05.142 [DEBUG] [Thread-122885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:05.142 [DEBUG] [Thread-122885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:05.193 [DEBUG] [Thread-122885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:05.193 [DEBUG] [Thread-122885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:05.204 [DEBUG] [Thread-122885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:05.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:05.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-28T11:08:05.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') -> 00000000
2025-09-28T11:08:05.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:05.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:05.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:05.253 [DEBUG] [Thread-122885] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:12.039 [DEBUG] [Thread-122888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:08:15.253 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:08:15.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:08:15.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 8), 19.85, 26.01, 0.0, 17.45, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:08:15.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:08:00
2025-09-28T11:08:15.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:08:16.095 [DEBUG] [Thread-122889] [transport.py] [_log()] starting thread (client mode): 0x2b9de200
2025-09-28T11:08:16.095 [DEBUG] [Thread-122889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:16.116 [DEBUG] [Thread-122889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:08:16.117 [INFO] [Thread-122889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:08:16.120 [DEBUG] [Thread-122889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:16.120 [DEBUG] [Thread-122889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:16.121 [DEBUG] [Thread-122889] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] Compression: none
2025-09-28T11:08:16.122 [DEBUG] [Thread-122889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:16.141 [DEBUG] [Thread-122889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:16.142 [DEBUG] [Thread-122889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:16.142 [DEBUG] [Thread-122889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:08:16.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:08:16.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:16.145 [DEBUG] [Thread-122889] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:16.145 [DEBUG] [Thread-122889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:16.145 [DEBUG] [Thread-122889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:16.145 [DEBUG] [Thread-122889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:08:16.145 [DEBUG] [Thread-122889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:16.168 [INFO] [Thread-122889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:16.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:16.758 [DEBUG] [Thread-122889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:16.758 [DEBUG] [Thread-122889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:16.759 [DEBUG] [Thread-122889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:08:16.799 [DEBUG] [Thread-122889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:16.800 [DEBUG] [Thread-122889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:16.801 [DEBUG] [Thread-122889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:16.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:16.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:08:16.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:08:16.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:08:16.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:16.826 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:08:16.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:16.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.380294 -999.00  +17.20  16.51     33   +1.00 1 1 1 1 1   888    0 17.07 128.72 ----- 16.1 16.5 293.8 25.2 26.2 -27.9 24.9 -26.6 23.6 -26.4 24.9 -25.8
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.380294
2025-09-28T11:08:16.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:08:16.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:08:16.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:08:16.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:08:16.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:08:16.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:08:00', tmtdew=19.85, humidity=26.01, cloud=0.0, wind=17.45, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:07:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:08:16.829 [DEBUG] [Thread-122889] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:16.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-28T11:08:16.931 [DEBUG] [Thread-122892] [transport.py] [_log()] starting thread (client mode): 0x2b9dfdc0
2025-09-28T11:08:16.931 [DEBUG] [Thread-122892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:16.947 [DEBUG] [Thread-122892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:08:16.947 [INFO] [Thread-122892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:16.955 [DEBUG] [Thread-122892] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] Compression: none
2025-09-28T11:08:16.956 [DEBUG] [Thread-122892] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:17.012 [DEBUG] [Thread-122892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:17.013 [DEBUG] [Thread-122892] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:17.013 [DEBUG] [Thread-122892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:08:17.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:08:17.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:17.069 [DEBUG] [Thread-122892] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:17.070 [DEBUG] [Thread-122892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:17.070 [DEBUG] [Thread-122892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:17.070 [DEBUG] [Thread-122892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:08:17.070 [DEBUG] [Thread-122892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:17.089 [INFO] [Thread-122892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:17.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-28T11:08:17.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:18.013 [DEBUG] [Thread-122892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:18.013 [DEBUG] [Thread-122892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:18.062 [DEBUG] [Thread-122892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:18.062 [DEBUG] [Thread-122892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:18.071 [DEBUG] [Thread-122892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:18.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:18.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T11:08:18.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') -> 00000000
2025-09-28T11:08:18.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:18.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:18.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:18.108 [DEBUG] [Thread-122892] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:27.095 [DEBUG] [Thread-122894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:28.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:08:28.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:08:28.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-28T11:08:28.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 8), 19.85, 26.01, 0.0, 17.45, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:08:28.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:08:00
2025-09-28T11:08:28.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:08:28.954 [DEBUG] [Thread-122895] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-28T11:08:28.955 [DEBUG] [Thread-122895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:28.973 [DEBUG] [Thread-122895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:08:28.973 [INFO] [Thread-122895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:08:28.976 [DEBUG] [Thread-122895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:28.977 [DEBUG] [Thread-122895] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:28.978 [DEBUG] [Thread-122895] [transport.py] [_log()] Compression: none
2025-09-28T11:08:28.979 [DEBUG] [Thread-122895] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:28.999 [DEBUG] [Thread-122895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:28.999 [DEBUG] [Thread-122895] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:29.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:08:29.001 [DEBUG] [Thread-122895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:08:29.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:29.003 [DEBUG] [Thread-122895] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:29.003 [DEBUG] [Thread-122895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:29.004 [DEBUG] [Thread-122895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:29.004 [DEBUG] [Thread-122895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:08:29.004 [DEBUG] [Thread-122895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:29.019 [INFO] [Thread-122895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:29.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:29.769 [DEBUG] [Thread-122895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:29.769 [DEBUG] [Thread-122895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:29.769 [DEBUG] [Thread-122895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:08:29.810 [DEBUG] [Thread-122895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:29.810 [DEBUG] [Thread-122895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:29.812 [DEBUG] [Thread-122895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:29.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:29.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:08:29.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:08:29.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:08:29.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:29.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:08:29.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:29.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:29.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.380294 -999.00  +17.20  16.51     33   +1.00 1 1 1 1 1   888    0 17.07 128.72 ----- 16.1 16.5 293.8 25.2 26.2 -27.9 24.9 -26.6 23.6 -26.4 24.9 -25.8
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.380294
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:08:29.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:08:00', tmtdew=19.85, humidity=26.01, cloud=0.0, wind=17.45, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:07:37.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:08:29.832 [DEBUG] [Thread-122895] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:29.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-28T11:08:29.926 [DEBUG] [Thread-122898] [transport.py] [_log()] starting thread (client mode): 0x2e3dd840
2025-09-28T11:08:29.926 [DEBUG] [Thread-122898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:29.941 [DEBUG] [Thread-122898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:08:29.941 [INFO] [Thread-122898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:29.949 [DEBUG] [Thread-122898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] Compression: none
2025-09-28T11:08:29.950 [DEBUG] [Thread-122898] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:30.009 [DEBUG] [Thread-122898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:30.010 [DEBUG] [Thread-122898] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:30.010 [DEBUG] [Thread-122898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:08:30.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:08:30.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:30.069 [DEBUG] [Thread-122898] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:30.069 [DEBUG] [Thread-122898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:30.070 [DEBUG] [Thread-122898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:30.070 [DEBUG] [Thread-122898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:08:30.070 [DEBUG] [Thread-122898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:30.089 [INFO] [Thread-122898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:30.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-28T11:08:30.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:31.152 [DEBUG] [Thread-122898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:31.152 [DEBUG] [Thread-122898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:31.203 [DEBUG] [Thread-122898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:31.204 [DEBUG] [Thread-122898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:31.213 [DEBUG] [Thread-122898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:31.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:31.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-28T11:08:31.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-28T11:08:31.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:31.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:31.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:31.249 [DEBUG] [Thread-122898] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:34.822 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:34.823 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:41.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:08:41.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:08:41.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-28T11:08:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 8, 32), 19.92, 25.86, 0.0, 13.53, 17.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:08:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:08:32
2025-09-28T11:08:41.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:08:42.081 [DEBUG] [Thread-122900] [transport.py] [_log()] starting thread (client mode): 0x2b98bf10
2025-09-28T11:08:42.081 [DEBUG] [Thread-122900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:08:42.105 [DEBUG] [Thread-122900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:08:42.105 [INFO] [Thread-122900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:08:42.107 [DEBUG] [Thread-122900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:08:42.107 [DEBUG] [Thread-122900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:08:42.107 [DEBUG] [Thread-122900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:08:42.107 [DEBUG] [Thread-122900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] client lang: <none>
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] server lang: <none>
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] kex follows: False
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] Compression: none
2025-09-28T11:08:42.108 [DEBUG] [Thread-122900] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:08:42.121 [DEBUG] [Thread-122900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:08:42.122 [DEBUG] [Thread-122900] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:08:42.122 [DEBUG] [Thread-122900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:08:42.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:08:42.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:08:42.124 [DEBUG] [Thread-122900] [transport.py] [_log()] userauth is OK
2025-09-28T11:08:42.124 [DEBUG] [Thread-122900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:08:42.125 [DEBUG] [Thread-122900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:08:42.125 [DEBUG] [Thread-122900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:08:42.125 [DEBUG] [Thread-122900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:08:42.148 [INFO] [Thread-122900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:08:42.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:08:42.160 [DEBUG] [Thread-122902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:08:42.764 [DEBUG] [Thread-122900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:08:42.764 [DEBUG] [Thread-122900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:08:42.773 [DEBUG] [Thread-122900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:08:42.805 [DEBUG] [Thread-122900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:08:42.805 [DEBUG] [Thread-122900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:08:42.808 [DEBUG] [Thread-122900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:08:42.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:08:42.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:08:42.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:08:42.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:08:42.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:08:42.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:08:42.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.380641 -999.00  +17.10  11.17     35   +1.50 1 1 1 1 1   888    0 17.18 134.94 ----- 7.3 11.2 281.6 19.7 26.1 -28.6 24.9 -26.1 23.5 -29.2 24.9 -25.6
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:08:42.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.380641
2025-09-28T11:08:42.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:08:42.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:08:42.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:08:42.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:08:42.828 [DEBUG] [Thread-122900] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:08:42.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:08:42.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:08:32', tmtdew=19.92, humidity=25.86, cloud=0.0, wind=13.53, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:08:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:08:42.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:08:57.201 [DEBUG] [Thread-122904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:05.056 [DEBUG] [Thread-122905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:12.271 [DEBUG] [Thread-122906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:27.310 [DEBUG] [Thread-122907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:34.966 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:34.967 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:42.346 [DEBUG] [Thread-122908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:09:57.386 [DEBUG] [Thread-122909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:05.115 [DEBUG] [Thread-122910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:12.427 [DEBUG] [Thread-122911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:27.464 [DEBUG] [Thread-122912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:35.108 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:35.110 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:42.507 [DEBUG] [Thread-122913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:10:56.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-28T11:10:57.542 [DEBUG] [Thread-122914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:05.170 [DEBUG] [Thread-122915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:11:06.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:11:06.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:11:07.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 10, 40), 17.71, 30.24, 0.0, 13.22, 17.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:11:07.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:10:40
2025-09-28T11:11:07.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:11:07.831 [DEBUG] [Thread-122916] [transport.py] [_log()] starting thread (client mode): 0x2e3ddcf0
2025-09-28T11:11:07.831 [DEBUG] [Thread-122916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:07.852 [DEBUG] [Thread-122916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:11:07.853 [INFO] [Thread-122916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:11:07.855 [DEBUG] [Thread-122916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:07.856 [DEBUG] [Thread-122916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:07.857 [DEBUG] [Thread-122916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:07.858 [DEBUG] [Thread-122916] [transport.py] [_log()] Compression: none
2025-09-28T11:11:07.858 [DEBUG] [Thread-122916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:07.875 [DEBUG] [Thread-122916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:07.875 [DEBUG] [Thread-122916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:07.876 [DEBUG] [Thread-122916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:11:07.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:11:07.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:07.878 [DEBUG] [Thread-122916] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:07.878 [DEBUG] [Thread-122916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:07.879 [DEBUG] [Thread-122916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:07.879 [DEBUG] [Thread-122916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:11:07.879 [DEBUG] [Thread-122916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:07.902 [INFO] [Thread-122916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:07.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:08.498 [DEBUG] [Thread-122916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:08.499 [DEBUG] [Thread-122916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:08.499 [DEBUG] [Thread-122916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:11:08.539 [DEBUG] [Thread-122916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:08.540 [DEBUG] [Thread-122916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:08.542 [DEBUG] [Thread-122916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:08.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:08.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:11:08.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:11:08.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:11:08.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:08.565 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:11:08.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:08.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.382377 -999.00  +17.40  13.92     36   +2.30 1 1 1 1 1   888    0 18.19 154.69 ----- 14.5 13.9 257.8 15.5 26.2 -27.6 25.1 -25.7 23.6 -25.0 24.8 -26.7
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.382377
2025-09-28T11:11:08.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:11:08.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:11:08.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:11:08.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:11:08.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:11:08.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:10:40', tmtdew=17.71, humidity=30.24, cloud=0.0, wind=13.22, temperature=17.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:10:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:11:08.567 [DEBUG] [Thread-122916] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:08.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:11:08.661 [DEBUG] [Thread-122919] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T11:11:08.662 [DEBUG] [Thread-122919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:08.676 [DEBUG] [Thread-122919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:11:08.676 [INFO] [Thread-122919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:08.684 [DEBUG] [Thread-122919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:08.685 [DEBUG] [Thread-122919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:08.686 [DEBUG] [Thread-122919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:08.686 [DEBUG] [Thread-122919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:08.686 [DEBUG] [Thread-122919] [transport.py] [_log()] Compression: none
2025-09-28T11:11:08.686 [DEBUG] [Thread-122919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:08.748 [DEBUG] [Thread-122919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:08.748 [DEBUG] [Thread-122919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:08.749 [DEBUG] [Thread-122919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:11:08.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:11:08.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:08.805 [DEBUG] [Thread-122919] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:08.805 [DEBUG] [Thread-122919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:08.805 [DEBUG] [Thread-122919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:08.805 [DEBUG] [Thread-122919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:11:08.806 [DEBUG] [Thread-122919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:08.825 [INFO] [Thread-122919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:08.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-28T11:11:08.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:09.805 [DEBUG] [Thread-122919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:09.805 [DEBUG] [Thread-122919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:09.853 [DEBUG] [Thread-122919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:09.853 [DEBUG] [Thread-122919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:09.863 [DEBUG] [Thread-122919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:09.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:09.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')
2025-09-28T11:11:09.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') -> 00000000
2025-09-28T11:11:09.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:09.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:09.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:09.897 [DEBUG] [Thread-122919] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:12.574 [DEBUG] [Thread-122921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:19.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:11:19.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:11:19.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-28T11:11:20.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 11, 12), 17.53, 30.56, 0.0, 10.57, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:11:20.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:11:12
2025-09-28T11:11:20.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:11:20.766 [DEBUG] [Thread-122922] [transport.py] [_log()] starting thread (client mode): 0x2b9dd990
2025-09-28T11:11:20.766 [DEBUG] [Thread-122922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:20.786 [DEBUG] [Thread-122922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:11:20.786 [INFO] [Thread-122922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:20.789 [DEBUG] [Thread-122922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] Compression: none
2025-09-28T11:11:20.790 [DEBUG] [Thread-122922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:20.808 [DEBUG] [Thread-122922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:20.808 [DEBUG] [Thread-122922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:20.809 [DEBUG] [Thread-122922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:11:20.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:11:20.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:20.812 [DEBUG] [Thread-122922] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:20.812 [DEBUG] [Thread-122922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:20.812 [DEBUG] [Thread-122922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:20.812 [DEBUG] [Thread-122922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:11:20.812 [DEBUG] [Thread-122922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:20.836 [INFO] [Thread-122922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:20.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:21.462 [DEBUG] [Thread-122922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:21.462 [DEBUG] [Thread-122922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:21.462 [DEBUG] [Thread-122922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:11:21.503 [DEBUG] [Thread-122922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:21.503 [DEBUG] [Thread-122922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:21.506 [DEBUG] [Thread-122922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:21.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:21.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:11:21.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:11:21.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:11:21.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:21.532 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:11:21.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:21.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:11:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.382377 -999.00  +17.40  13.92     36   +2.30 1 1 1 1 1   888    0 18.19 154.69 ----- 14.5 13.9 257.8 15.5 26.2 -27.6 25.1 -25.7 23.6 -25.0 24.8 -26.7
2025-09-28T11:11:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:11:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:11:21.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.382377
2025-09-28T11:11:21.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:11:21.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:11:21.535 [DEBUG] [Thread-122922] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:21.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:11:21.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:11:21.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:11:21.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:11:12', tmtdew=17.53, humidity=30.56, cloud=0.0, wind=10.57, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:10:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:11:21.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-28T11:11:21.642 [DEBUG] [Thread-122925] [transport.py] [_log()] starting thread (client mode): 0x2b98a7d0
2025-09-28T11:11:21.642 [DEBUG] [Thread-122925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:21.657 [DEBUG] [Thread-122925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:11:21.657 [INFO] [Thread-122925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:21.665 [DEBUG] [Thread-122925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:21.666 [DEBUG] [Thread-122925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:21.667 [DEBUG] [Thread-122925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:21.667 [DEBUG] [Thread-122925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:21.667 [DEBUG] [Thread-122925] [transport.py] [_log()] Compression: none
2025-09-28T11:11:21.667 [DEBUG] [Thread-122925] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:21.725 [DEBUG] [Thread-122925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:21.726 [DEBUG] [Thread-122925] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:21.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:11:21.727 [DEBUG] [Thread-122925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:11:21.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:21.781 [DEBUG] [Thread-122925] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:21.782 [DEBUG] [Thread-122925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:21.782 [DEBUG] [Thread-122925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:21.782 [DEBUG] [Thread-122925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:11:21.782 [DEBUG] [Thread-122925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:21.801 [INFO] [Thread-122925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:21.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-28T11:11:21.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:22.780 [DEBUG] [Thread-122925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:22.780 [DEBUG] [Thread-122925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:22.828 [DEBUG] [Thread-122925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:22.828 [DEBUG] [Thread-122925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:22.837 [DEBUG] [Thread-122925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:22.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:22.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-28T11:11:22.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-28T11:11:22.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:22.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:22.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:22.873 [DEBUG] [Thread-122925] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:27.632 [DEBUG] [Thread-122927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:32.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:11:32.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:11:32.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-28T11:11:33.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 11, 12), 17.53, 30.56, 0.0, 10.57, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:11:33.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:11:12
2025-09-28T11:11:33.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:11:33.775 [DEBUG] [Thread-122928] [transport.py] [_log()] starting thread (client mode): 0x2b9dfcd0
2025-09-28T11:11:33.776 [DEBUG] [Thread-122928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:33.791 [DEBUG] [Thread-122928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:11:33.791 [INFO] [Thread-122928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] Compression: none
2025-09-28T11:11:33.794 [DEBUG] [Thread-122928] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:33.811 [DEBUG] [Thread-122928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:33.812 [DEBUG] [Thread-122928] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:33.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:11:33.812 [DEBUG] [Thread-122928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:11:33.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:33.813 [DEBUG] [Thread-122928] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:33.813 [DEBUG] [Thread-122928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:33.813 [DEBUG] [Thread-122928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:33.813 [DEBUG] [Thread-122928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:11:33.813 [DEBUG] [Thread-122928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:33.823 [INFO] [Thread-122928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:33.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:34.441 [DEBUG] [Thread-122928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:34.441 [DEBUG] [Thread-122928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:34.441 [DEBUG] [Thread-122928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:11:34.482 [DEBUG] [Thread-122928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:34.482 [DEBUG] [Thread-122928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:34.484 [DEBUG] [Thread-122928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:34.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:34.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:11:34.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:11:34.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:11:34.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:34.503 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:11:34.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.382724 -999.00  +17.30  12.33     36   +2.30 1 1 1 1 1   888    0 18.66 170.21 ----- 9.1 12.3 299.8 21.0 26.3 -27.4 25.0 -25.3 23.5 -27.4 24.8 -25.2
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.382724
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:11:34.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:11:34.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:11:12', tmtdew=17.53, humidity=30.56, cloud=0.0, wind=10.57, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:11:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:11:34.504 [DEBUG] [Thread-122928] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:34.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-28T11:11:34.605 [DEBUG] [Thread-122931] [transport.py] [_log()] starting thread (client mode): 0x2b98a170
2025-09-28T11:11:34.605 [DEBUG] [Thread-122931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:34.623 [DEBUG] [Thread-122931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:11:34.623 [INFO] [Thread-122931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:34.632 [DEBUG] [Thread-122931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] Compression: none
2025-09-28T11:11:34.633 [DEBUG] [Thread-122931] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:34.688 [DEBUG] [Thread-122931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:34.689 [DEBUG] [Thread-122931] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:34.689 [DEBUG] [Thread-122931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:11:34.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:11:34.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:34.757 [DEBUG] [Thread-122931] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:34.757 [DEBUG] [Thread-122931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:34.757 [DEBUG] [Thread-122931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:34.757 [DEBUG] [Thread-122931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:11:34.757 [DEBUG] [Thread-122931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:34.772 [INFO] [Thread-122931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:34.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-28T11:11:34.772 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:35.252 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:35.252 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:35.736 [DEBUG] [Thread-122931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:35.737 [DEBUG] [Thread-122931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:35.785 [DEBUG] [Thread-122931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:35.785 [DEBUG] [Thread-122931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:35.794 [DEBUG] [Thread-122931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:35.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:35.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-28T11:11:35.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-28T11:11:35.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:35.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:35.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:35.831 [DEBUG] [Thread-122931] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:42.691 [DEBUG] [Thread-122933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:45.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:11:45.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:11:45.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-28T11:11:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 11, 12), 17.53, 30.56, 0.0, 10.57, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:11:46.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:11:12
2025-09-28T11:11:46.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:11:46.683 [DEBUG] [Thread-122934] [transport.py] [_log()] starting thread (client mode): 0x2b9dc430
2025-09-28T11:11:46.683 [DEBUG] [Thread-122934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:46.702 [DEBUG] [Thread-122934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:11:46.703 [INFO] [Thread-122934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] Compression: none
2025-09-28T11:11:46.706 [DEBUG] [Thread-122934] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:46.723 [DEBUG] [Thread-122934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:46.724 [DEBUG] [Thread-122934] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:46.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:11:46.725 [DEBUG] [Thread-122934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:11:46.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:46.727 [DEBUG] [Thread-122934] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:46.727 [DEBUG] [Thread-122934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:46.727 [DEBUG] [Thread-122934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:46.727 [DEBUG] [Thread-122934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:11:46.727 [DEBUG] [Thread-122934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:46.752 [INFO] [Thread-122934] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:46.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:47.381 [DEBUG] [Thread-122934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:47.381 [DEBUG] [Thread-122934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:47.381 [DEBUG] [Thread-122934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:11:47.422 [DEBUG] [Thread-122934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:47.422 [DEBUG] [Thread-122934] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:47.425 [DEBUG] [Thread-122934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:47.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:47.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:11:47.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:11:47.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:11:47.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:47.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:11:47.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.382724 -999.00  +17.30  12.33     36   +2.30 1 1 1 1 1   888    0 18.66 170.21 ----- 9.1 12.3 299.8 21.0 26.3 -27.4 25.0 -25.3 23.5 -27.4 24.8 -25.2
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.382724
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:11:47.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:11:12', tmtdew=17.53, humidity=30.56, cloud=0.0, wind=10.57, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:11:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:11:47.441 [DEBUG] [Thread-122934] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:47.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-28T11:11:47.533 [DEBUG] [Thread-122937] [transport.py] [_log()] starting thread (client mode): 0x2b9dfbe0
2025-09-28T11:11:47.534 [DEBUG] [Thread-122937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:47.549 [DEBUG] [Thread-122937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:11:47.549 [INFO] [Thread-122937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] Compression: none
2025-09-28T11:11:47.557 [DEBUG] [Thread-122937] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:47.612 [DEBUG] [Thread-122937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:47.612 [DEBUG] [Thread-122937] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:47.612 [DEBUG] [Thread-122937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:11:47.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:11:47.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:47.670 [DEBUG] [Thread-122937] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:47.670 [DEBUG] [Thread-122937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:47.670 [DEBUG] [Thread-122937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:47.670 [DEBUG] [Thread-122937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:11:47.670 [DEBUG] [Thread-122937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:47.683 [INFO] [Thread-122937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:47.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-28T11:11:47.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:11:48.644 [DEBUG] [Thread-122937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:11:48.645 [DEBUG] [Thread-122937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:11:48.695 [DEBUG] [Thread-122937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:11:48.696 [DEBUG] [Thread-122937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:11:48.709 [DEBUG] [Thread-122937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:11:48.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:11:48.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-28T11:11:48.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-28T11:11:48.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:11:48.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:11:48.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:11:48.756 [DEBUG] [Thread-122937] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:11:57.751 [DEBUG] [Thread-122939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:11:58.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:11:58.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:11:58.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-28T11:11:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 11, 45), 17.42, 31.01, 0.0, 12.0, 17.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:11:59.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:11:45
2025-09-28T11:11:59.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:11:59.628 [DEBUG] [Thread-122940] [transport.py] [_log()] starting thread (client mode): 0x2e3dc5b0
2025-09-28T11:11:59.628 [DEBUG] [Thread-122940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:11:59.648 [DEBUG] [Thread-122940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:11:59.648 [INFO] [Thread-122940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:11:59.651 [DEBUG] [Thread-122940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:11:59.651 [DEBUG] [Thread-122940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] client lang: <none>
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] server lang: <none>
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] kex follows: False
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] Compression: none
2025-09-28T11:11:59.652 [DEBUG] [Thread-122940] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:11:59.669 [DEBUG] [Thread-122940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:11:59.670 [DEBUG] [Thread-122940] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:11:59.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:11:59.671 [DEBUG] [Thread-122940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:11:59.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:11:59.673 [DEBUG] [Thread-122940] [transport.py] [_log()] userauth is OK
2025-09-28T11:11:59.673 [DEBUG] [Thread-122940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:11:59.673 [DEBUG] [Thread-122940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:11:59.673 [DEBUG] [Thread-122940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:11:59.673 [DEBUG] [Thread-122940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:11:59.697 [INFO] [Thread-122940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:11:59.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:00.303 [DEBUG] [Thread-122940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:00.303 [DEBUG] [Thread-122940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:00.303 [DEBUG] [Thread-122940] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:12:00.344 [DEBUG] [Thread-122940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:00.344 [DEBUG] [Thread-122940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:00.347 [DEBUG] [Thread-122940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:00.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:00.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:12:00.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:12:00.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:12:00.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:00.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:12:00.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:00.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.382724 -999.00  +17.30  12.33     36   +2.30 1 1 1 1 1   888    0 18.66 170.21 ----- 9.1 12.3 299.8 21.0 26.3 -27.4 25.0 -25.3 23.5 -27.4 24.8 -25.2
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.382724
2025-09-28T11:12:00.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:12:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:12:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:12:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:12:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:12:00.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:11:45', tmtdew=17.42, humidity=31.01, cloud=0.0, wind=12.0, temperature=17.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:11:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:12:00.371 [DEBUG] [Thread-122940] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:00.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-28T11:12:00.477 [DEBUG] [Thread-122943] [transport.py] [_log()] starting thread (client mode): 0x2e3c0d30
2025-09-28T11:12:00.477 [DEBUG] [Thread-122943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:00.491 [DEBUG] [Thread-122943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:12:00.492 [INFO] [Thread-122943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:00.499 [DEBUG] [Thread-122943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] Compression: none
2025-09-28T11:12:00.500 [DEBUG] [Thread-122943] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:00.558 [DEBUG] [Thread-122943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:00.558 [DEBUG] [Thread-122943] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:00.558 [DEBUG] [Thread-122943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:12:00.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:12:00.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:00.614 [DEBUG] [Thread-122943] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:00.614 [DEBUG] [Thread-122943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:00.614 [DEBUG] [Thread-122943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:00.614 [DEBUG] [Thread-122943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:12:00.614 [DEBUG] [Thread-122943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:00.637 [INFO] [Thread-122943] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:00.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-28T11:12:00.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:01.691 [DEBUG] [Thread-122943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:01.691 [DEBUG] [Thread-122943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:01.742 [DEBUG] [Thread-122943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:01.742 [DEBUG] [Thread-122943] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:01.756 [DEBUG] [Thread-122943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:01.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:01.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-28T11:12:01.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-28T11:12:01.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:01.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:01.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:01.800 [DEBUG] [Thread-122943] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:05.225 [DEBUG] [Thread-122945 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:11.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:12:11.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:12: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-28T11:12:12.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 11, 45), 17.42, 31.01, 0.0, 12.0, 17.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:12:12.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:11:45
2025-09-28T11:12:12.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:12:12.707 [DEBUG] [Thread-122946] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a80
2025-09-28T11:12:12.707 [DEBUG] [Thread-122946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:12.727 [DEBUG] [Thread-122946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:12:12.727 [INFO] [Thread-122946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] Compression: none
2025-09-28T11:12:12.730 [DEBUG] [Thread-122946] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:12.746 [DEBUG] [Thread-122946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:12.746 [DEBUG] [Thread-122946] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:12.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:12:12.746 [DEBUG] [Thread-122946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:12:12.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:12.747 [DEBUG] [Thread-122946] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:12.747 [DEBUG] [Thread-122946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:12.747 [DEBUG] [Thread-122946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:12.747 [DEBUG] [Thread-122946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:12:12.747 [DEBUG] [Thread-122946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:12.775 [INFO] [Thread-122946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:12.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:12.791 [DEBUG] [Thread-122948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:13.382 [DEBUG] [Thread-122946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:13.382 [DEBUG] [Thread-122946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:13.382 [DEBUG] [Thread-122946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:12:13.423 [DEBUG] [Thread-122946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:13.423 [DEBUG] [Thread-122946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:13.425 [DEBUG] [Thread-122946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:13.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:13.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:12:13.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:12:13.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:12:13.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:13.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:12:13.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.383071 -999.00  +17.20  13.46     36   +2.30 1 1 1 1 1   888    0 18.71 172.86 ----- 10.4 13.5 301.4 16.1 26.4 -26.0 25.1 -25.3 23.7 -24.3 24.9 -24.6
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.383071
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:12:13.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:11:45', tmtdew=17.42, humidity=31.01, cloud=0.0, wind=12.0, temperature=17.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:11:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:12:13.445 [DEBUG] [Thread-122946] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12: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-28T11:12:13.538 [DEBUG] [Thread-122950] [transport.py] [_log()] starting thread (client mode): 0x2b9b8be0
2025-09-28T11:12:13.538 [DEBUG] [Thread-122950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:13.553 [DEBUG] [Thread-122950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:12:13.553 [INFO] [Thread-122950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:12:13.560 [DEBUG] [Thread-122950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:13.560 [DEBUG] [Thread-122950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] Compression: none
2025-09-28T11:12:13.561 [DEBUG] [Thread-122950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:13.617 [DEBUG] [Thread-122950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:13.617 [DEBUG] [Thread-122950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:13.617 [DEBUG] [Thread-122950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:12:13.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:12:13.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:13.674 [DEBUG] [Thread-122950] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:13.674 [DEBUG] [Thread-122950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:13.675 [DEBUG] [Thread-122950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:13.675 [DEBUG] [Thread-122950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:12:13.675 [DEBUG] [Thread-122950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:13.689 [INFO] [Thread-122950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12: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-28T11:12:13.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:14.643 [DEBUG] [Thread-122950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:14.644 [DEBUG] [Thread-122950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:14.694 [DEBUG] [Thread-122950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:14.694 [DEBUG] [Thread-122950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:14.702 [DEBUG] [Thread-122950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:14.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:14.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-28T11:12:14.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-28T11:12:14.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:14.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:14.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:14.734 [DEBUG] [Thread-122950] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:24.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:12:24.737 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:12:24.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-28T11:12:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 12, 18), 17.53, 30.79, 0.0, 11.29, 17.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:12:25.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:12:18
2025-09-28T11:12:25.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:12:25.623 [DEBUG] [Thread-122952] [transport.py] [_log()] starting thread (client mode): 0x2b9ae7a0
2025-09-28T11:12:25.623 [DEBUG] [Thread-122952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:25.643 [DEBUG] [Thread-122952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:12:25.644 [INFO] [Thread-122952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:25.647 [DEBUG] [Thread-122952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:25.648 [DEBUG] [Thread-122952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:25.648 [DEBUG] [Thread-122952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:25.648 [DEBUG] [Thread-122952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:25.648 [DEBUG] [Thread-122952] [transport.py] [_log()] Compression: none
2025-09-28T11:12:25.648 [DEBUG] [Thread-122952] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:25.665 [DEBUG] [Thread-122952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:25.666 [DEBUG] [Thread-122952] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:25.666 [DEBUG] [Thread-122952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:12:25.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:12:25.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:25.668 [DEBUG] [Thread-122952] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:25.668 [DEBUG] [Thread-122952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:25.668 [DEBUG] [Thread-122952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:25.669 [DEBUG] [Thread-122952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:12:25.669 [DEBUG] [Thread-122952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:25.693 [INFO] [Thread-122952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:25.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:26.279 [DEBUG] [Thread-122952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:26.279 [DEBUG] [Thread-122952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:26.279 [DEBUG] [Thread-122952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:12:26.320 [DEBUG] [Thread-122952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:26.320 [DEBUG] [Thread-122952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:26.323 [DEBUG] [Thread-122952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:26.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:26.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:12:26.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:12:26.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:12:26.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:26.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:12:26.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.383071 -999.00  +17.20  13.46     36   +2.30 1 1 1 1 1   888    0 18.71 172.86 ----- 10.4 13.5 301.4 16.1 26.4 -26.0 25.1 -25.3 23.7 -24.3 24.9 -24.6
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:12:26.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.383071
2025-09-28T11:12:26.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:12:26.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:12:26.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:12:26.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:12:26.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:12:26.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:12:18', tmtdew=17.53, humidity=30.79, cloud=0.0, wind=11.29, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:11:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:12:26.348 [DEBUG] [Thread-122952] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:26.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-28T11:12:26.458 [DEBUG] [Thread-122955] [transport.py] [_log()] starting thread (client mode): 0x2b9ae5c0
2025-09-28T11:12:26.458 [DEBUG] [Thread-122955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:26.480 [DEBUG] [Thread-122955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:12:26.481 [INFO] [Thread-122955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:26.491 [DEBUG] [Thread-122955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] Compression: none
2025-09-28T11:12:26.492 [DEBUG] [Thread-122955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:26.550 [DEBUG] [Thread-122955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:26.551 [DEBUG] [Thread-122955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:26.551 [DEBUG] [Thread-122955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:12:26.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:12:26.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:26.609 [DEBUG] [Thread-122955] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:26.609 [DEBUG] [Thread-122955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:26.609 [DEBUG] [Thread-122955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:26.609 [DEBUG] [Thread-122955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:12:26.609 [DEBUG] [Thread-122955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:26.630 [INFO] [Thread-122955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:26.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-28T11:12:26.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:27.629 [DEBUG] [Thread-122955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:27.629 [DEBUG] [Thread-122955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:27.677 [DEBUG] [Thread-122955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:27.677 [DEBUG] [Thread-122955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:27.686 [DEBUG] [Thread-122955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:27.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:27.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-28T11:12:27.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-28T11:12:27.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:27.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:27.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:27.722 [DEBUG] [Thread-122955] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:27.840 [DEBUG] [Thread-122957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:35.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:35.395 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:37.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:12:37.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:12:37.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-28T11:12:38.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 12, 18), 17.53, 30.79, 0.0, 11.29, 17.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:12:38.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:12:18
2025-09-28T11:12:38.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:12:38.599 [DEBUG] [Thread-122958] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T11:12:38.600 [DEBUG] [Thread-122958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:38.616 [DEBUG] [Thread-122958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:12:38.616 [INFO] [Thread-122958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:38.618 [DEBUG] [Thread-122958] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] Compression: none
2025-09-28T11:12:38.619 [DEBUG] [Thread-122958] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:38.632 [DEBUG] [Thread-122958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:38.632 [DEBUG] [Thread-122958] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:38.632 [DEBUG] [Thread-122958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:12:38.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:12:38.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:38.633 [DEBUG] [Thread-122958] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:38.633 [DEBUG] [Thread-122958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:38.633 [DEBUG] [Thread-122958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:38.633 [DEBUG] [Thread-122958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:12:38.633 [DEBUG] [Thread-122958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:38.642 [INFO] [Thread-122958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:38.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:39.198 [DEBUG] [Thread-122958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:39.198 [DEBUG] [Thread-122958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:39.199 [DEBUG] [Thread-122958] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:12:39.239 [DEBUG] [Thread-122958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:39.239 [DEBUG] [Thread-122958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:39.242 [DEBUG] [Thread-122958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:39.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:39.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:12:39.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:12:39.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:12:39.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:39.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:12:39.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:39.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:39.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:12:39.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.383419 -999.00  +17.60  14.13     37   +2.80 1 1 1 1 1   888    0 18.55 172.32 ----- 15.2 14.1 297.2 16.2 26.5 -26.8 25.2 -25.0 23.8 -25.6 -999.0 -999.0
2025-09-28T11:12:39.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:12:39.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:12:39.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.383419
2025-09-28T11:12:39.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:12:39.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:12:39.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:12:39.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:12:39.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:12:39.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:12:18', tmtdew=17.53, humidity=30.79, cloud=0.0, wind=11.29, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:12:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:12:39.269 [DEBUG] [Thread-122958] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:39.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-28T11:12:39.372 [DEBUG] [Thread-122961] [transport.py] [_log()] starting thread (client mode): 0x2e3602b0
2025-09-28T11:12:39.372 [DEBUG] [Thread-122961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:39.386 [DEBUG] [Thread-122961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:12:39.387 [INFO] [Thread-122961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:12:39.394 [DEBUG] [Thread-122961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:39.395 [DEBUG] [Thread-122961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:39.396 [DEBUG] [Thread-122961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:39.396 [DEBUG] [Thread-122961] [transport.py] [_log()] Compression: none
2025-09-28T11:12:39.396 [DEBUG] [Thread-122961] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:39.458 [DEBUG] [Thread-122961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:39.458 [DEBUG] [Thread-122961] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:39.459 [DEBUG] [Thread-122961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:12:39.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:12:39.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:39.515 [DEBUG] [Thread-122961] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:39.515 [DEBUG] [Thread-122961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:39.515 [DEBUG] [Thread-122961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:39.515 [DEBUG] [Thread-122961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:12:39.515 [DEBUG] [Thread-122961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:39.534 [INFO] [Thread-122961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:39.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-28T11:12:39.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:40.510 [DEBUG] [Thread-122961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:40.510 [DEBUG] [Thread-122961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:40.558 [DEBUG] [Thread-122961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:40.558 [DEBUG] [Thread-122961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:40.567 [DEBUG] [Thread-122961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:40.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:40.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-28T11:12:40.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-28T11:12:40.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:40.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:40.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:40.602 [DEBUG] [Thread-122961] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:42.911 [DEBUG] [Thread-122963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:12:50.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:12:50.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:12:50.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:12:51.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 12, 18), 17.53, 30.79, 0.0, 11.29, 17.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:12:51.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:12:18
2025-09-28T11:12:51.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:12:51.559 [DEBUG] [Thread-122964] [transport.py] [_log()] starting thread (client mode): 0x2b944ee0
2025-09-28T11:12:51.559 [DEBUG] [Thread-122964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:12:51.580 [DEBUG] [Thread-122964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:12:51.580 [INFO] [Thread-122964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] client lang: <none>
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] server lang: <none>
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] kex follows: False
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:12:51.583 [DEBUG] [Thread-122964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:12:51.584 [DEBUG] [Thread-122964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:12:51.584 [DEBUG] [Thread-122964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:12:51.584 [DEBUG] [Thread-122964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:12:51.584 [DEBUG] [Thread-122964] [transport.py] [_log()] Compression: none
2025-09-28T11:12:51.584 [DEBUG] [Thread-122964] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:12:51.600 [DEBUG] [Thread-122964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:12:51.600 [DEBUG] [Thread-122964] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:12:51.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:12:51.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:12:51.600 [DEBUG] [Thread-122964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:12:51.601 [DEBUG] [Thread-122964] [transport.py] [_log()] userauth is OK
2025-09-28T11:12:51.601 [DEBUG] [Thread-122964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:12:51.601 [DEBUG] [Thread-122964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:12:51.601 [DEBUG] [Thread-122964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:12:51.601 [DEBUG] [Thread-122964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:12:51.615 [INFO] [Thread-122964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:12:51.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:12:52.228 [DEBUG] [Thread-122964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:12:52.228 [DEBUG] [Thread-122964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:12:52.228 [DEBUG] [Thread-122964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:12:52.269 [DEBUG] [Thread-122964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:12:52.269 [DEBUG] [Thread-122964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:12:52.271 [DEBUG] [Thread-122964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:12:52.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:12:52.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:12:52.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:12:52.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:12:52.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:12:52.288 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:12:52.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.383419 -999.00  +17.60  14.13     37   +2.80 1 1 1 1 1   888    0 18.55 172.32 ----- 15.2 14.1 297.2 16.2 26.5 -26.8 25.2 -25.0 23.8 -25.6 -999.0 -999.0
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.383419
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:12:52.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:12:18', tmtdew=17.53, humidity=30.79, cloud=0.0, wind=11.29, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:12:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:12:52.289 [DEBUG] [Thread-122964] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:12:52.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-28T11:12:57.969 [DEBUG] [Thread-122967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:05.284 [DEBUG] [Thread-122968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:13.006 [DEBUG] [Thread-122969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:28.053 [DEBUG] [Thread-122970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:35.534 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:35.535 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:43.092 [DEBUG] [Thread-122971 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:13:58.128 [DEBUG] [Thread-122972 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:05.334 [DEBUG] [Thread-122973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:13.165 [DEBUG] [Thread-122974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:28.198 [DEBUG] [Thread-122975 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:35.674 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:35.676 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:43.236 [DEBUG] [Thread-122976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:14:58.270 [DEBUG] [Thread-122977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:05.387 [DEBUG] [Thread-122978 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:06.810 [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-28T11:15:13.313 [DEBUG] [Thread-122979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:16.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:15:16.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:15:16.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-28T11:15:17.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 14, 58), 17.55, 30.57, 0.0, 14.65, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:15:17.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:14:58
2025-09-28T11:15:17.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:15:17.712 [DEBUG] [Thread-122980] [transport.py] [_log()] starting thread (client mode): 0x2b9bb7c0
2025-09-28T11:15:17.712 [DEBUG] [Thread-122980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:17.731 [DEBUG] [Thread-122980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:15:17.732 [INFO] [Thread-122980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:17.735 [DEBUG] [Thread-122980] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] Compression: none
2025-09-28T11:15:17.736 [DEBUG] [Thread-122980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:17.754 [DEBUG] [Thread-122980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:17.754 [DEBUG] [Thread-122980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:17.755 [DEBUG] [Thread-122980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:15:17.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:15:17.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:17.757 [DEBUG] [Thread-122980] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:17.757 [DEBUG] [Thread-122980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:17.757 [DEBUG] [Thread-122980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:17.757 [DEBUG] [Thread-122980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:15:17.757 [DEBUG] [Thread-122980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:17.782 [INFO] [Thread-122980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:17.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:18.406 [DEBUG] [Thread-122980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:18.406 [DEBUG] [Thread-122980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:18.406 [DEBUG] [Thread-122980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:15:18.447 [DEBUG] [Thread-122980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:18.447 [DEBUG] [Thread-122980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:18.450 [DEBUG] [Thread-122980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:18.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:18.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:15:18.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:15:18.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:15:18.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:18.472 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:15:18.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:18.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:18.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:15:18.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385155 -999.00  +18.10   6.76     36   +2.80 1 1 1 1 1   888    0 19.41 188.75 ----- 5.4 6.8 268.2 9.3 26.6 -25.9 25.2 -24.5 24.1 -23.8 25.1 -24.9
2025-09-28T11:15:18.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:15:18.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:15:18.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385155
2025-09-28T11:15:18.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:15:18.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:15:18.474 [DEBUG] [Thread-122980] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:18.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:15:18.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:15:18.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:15:18.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:14:58', tmtdew=17.55, humidity=30.57, cloud=0.0, wind=14.65, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:14:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:15:18.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-28T11:15:18.577 [DEBUG] [Thread-122983] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T11:15:18.577 [DEBUG] [Thread-122983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:18.591 [DEBUG] [Thread-122983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:15:18.592 [INFO] [Thread-122983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:15:18.599 [DEBUG] [Thread-122983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:18.599 [DEBUG] [Thread-122983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] Compression: none
2025-09-28T11:15:18.600 [DEBUG] [Thread-122983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:18.657 [DEBUG] [Thread-122983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:18.658 [DEBUG] [Thread-122983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:18.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:15:18.659 [DEBUG] [Thread-122983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:15:18.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:18.714 [DEBUG] [Thread-122983] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:18.714 [DEBUG] [Thread-122983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:18.714 [DEBUG] [Thread-122983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:18.714 [DEBUG] [Thread-122983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:15:18.714 [DEBUG] [Thread-122983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:18.736 [INFO] [Thread-122983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:18.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:15:18.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:19.684 [DEBUG] [Thread-122983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:19.685 [DEBUG] [Thread-122983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:19.732 [DEBUG] [Thread-122983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:19.732 [DEBUG] [Thread-122983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:19.741 [DEBUG] [Thread-122983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:19.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:19.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-28T11:15:19.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T11:15:19.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:19.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:19.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:19.776 [DEBUG] [Thread-122983] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:28.349 [DEBUG] [Thread-122985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:29.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:15:29.778 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:15:29.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:15:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 14, 58), 17.55, 30.57, 0.0, 14.65, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:15:30.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:14:58
2025-09-28T11:15:30.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:15:30.679 [DEBUG] [Thread-122986] [transport.py] [_log()] starting thread (client mode): 0x2b9aee60
2025-09-28T11:15:30.680 [DEBUG] [Thread-122986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:30.699 [DEBUG] [Thread-122986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:15:30.699 [INFO] [Thread-122986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:30.702 [DEBUG] [Thread-122986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] Compression: none
2025-09-28T11:15:30.703 [DEBUG] [Thread-122986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:30.717 [DEBUG] [Thread-122986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:30.717 [DEBUG] [Thread-122986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:30.717 [DEBUG] [Thread-122986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:15:30.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:15:30.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:30.718 [DEBUG] [Thread-122986] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:30.718 [DEBUG] [Thread-122986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:30.718 [DEBUG] [Thread-122986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:30.718 [DEBUG] [Thread-122986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:15:30.718 [DEBUG] [Thread-122986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:30.727 [INFO] [Thread-122986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:30.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:31.356 [DEBUG] [Thread-122986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:31.356 [DEBUG] [Thread-122986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:31.356 [DEBUG] [Thread-122986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:15:31.397 [DEBUG] [Thread-122986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:31.397 [DEBUG] [Thread-122986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:31.399 [DEBUG] [Thread-122986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:31.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:31.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:15:31.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:15:31.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:15:31.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:31.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:15:31.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385502 -999.00  +17.90  19.35     36   +2.90 1 1 1 1 1   888    0 19.65 189.71 ----- 14.2 19.4 250.0 20.2 26.4 -27.5 25.2 -25.5 24.0 -24.6 24.9 -26.4
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:15:31.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385502
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:15:31.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:14:58', tmtdew=17.55, humidity=30.57, cloud=0.0, wind=14.65, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:15:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:15:31.423 [DEBUG] [Thread-122986] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:31.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-28T11:15:31.511 [DEBUG] [Thread-122989] [transport.py] [_log()] starting thread (client mode): 0x2b9acd60
2025-09-28T11:15:31.511 [DEBUG] [Thread-122989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:31.526 [DEBUG] [Thread-122989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:15:31.526 [INFO] [Thread-122989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] Compression: none
2025-09-28T11:15:31.534 [DEBUG] [Thread-122989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:31.592 [DEBUG] [Thread-122989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:31.592 [DEBUG] [Thread-122989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:31.593 [DEBUG] [Thread-122989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:15:31.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:15:31.593 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:31.650 [DEBUG] [Thread-122989] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:31.650 [DEBUG] [Thread-122989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:31.650 [DEBUG] [Thread-122989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:31.650 [DEBUG] [Thread-122989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:15:31.650 [DEBUG] [Thread-122989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:31.664 [INFO] [Thread-122989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:31.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-28T11:15:31.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:32.643 [DEBUG] [Thread-122989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:32.643 [DEBUG] [Thread-122989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:32.691 [DEBUG] [Thread-122989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:32.691 [DEBUG] [Thread-122989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:32.701 [DEBUG] [Thread-122989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:32.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:32.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-28T11:15: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') -> 00000000
2025-09-28T11:15:32.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:32.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:32.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:32.736 [DEBUG] [Thread-122989] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:35.818 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:35.820 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:42.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:15:42.736 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:15:42.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-28T11:15:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 15, 29), 17.45, 30.8, 0.0, 15.78, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:15:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:15:29
2025-09-28T11:15:43.402 [DEBUG] [Thread-122991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:43.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:15:43.614 [DEBUG] [Thread-122992] [transport.py] [_log()] starting thread (client mode): 0x2e38c550
2025-09-28T11:15:43.614 [DEBUG] [Thread-122992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:43.634 [DEBUG] [Thread-122992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:15:43.634 [INFO] [Thread-122992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:15:43.637 [DEBUG] [Thread-122992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:43.637 [DEBUG] [Thread-122992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:15:43.637 [DEBUG] [Thread-122992] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:43.637 [DEBUG] [Thread-122992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:43.637 [DEBUG] [Thread-122992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] Compression: none
2025-09-28T11:15:43.638 [DEBUG] [Thread-122992] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:43.656 [DEBUG] [Thread-122992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:43.656 [DEBUG] [Thread-122992] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:43.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:15:43.657 [DEBUG] [Thread-122992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:15:43.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:43.659 [DEBUG] [Thread-122992] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:43.660 [DEBUG] [Thread-122992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:43.660 [DEBUG] [Thread-122992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:43.660 [DEBUG] [Thread-122992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:15:43.660 [DEBUG] [Thread-122992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:43.695 [INFO] [Thread-122992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:43.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:44.329 [DEBUG] [Thread-122992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:44.330 [DEBUG] [Thread-122992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:44.330 [DEBUG] [Thread-122992] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:15:44.370 [DEBUG] [Thread-122992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:44.370 [DEBUG] [Thread-122992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:44.373 [DEBUG] [Thread-122992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:44.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:44.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:15:44.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:15:44.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:15:44.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:44.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:15:44.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:44.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:44.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:15:44.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385502 -999.00  +17.90  19.35     36   +2.90 1 1 1 1 1   888    0 19.65 189.71 ----- 14.2 19.4 250.0 20.2 26.4 -27.5 25.2 -25.5 24.0 -24.6 24.9 -26.4
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385502
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:15:44.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:15:29', tmtdew=17.45, humidity=30.8, cloud=0.0, wind=15.78, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:15:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:15:44.393 [DEBUG] [Thread-122992] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:44.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-28T11:15:44.485 [DEBUG] [Thread-122995] [transport.py] [_log()] starting thread (client mode): 0x2b946ef0
2025-09-28T11:15:44.485 [DEBUG] [Thread-122995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:44.500 [DEBUG] [Thread-122995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:15:44.500 [INFO] [Thread-122995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] Compression: none
2025-09-28T11:15:44.508 [DEBUG] [Thread-122995] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:44.568 [DEBUG] [Thread-122995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:44.568 [DEBUG] [Thread-122995] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:44.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:15:44.569 [DEBUG] [Thread-122995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:15:44.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:44.627 [DEBUG] [Thread-122995] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:44.627 [DEBUG] [Thread-122995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:44.627 [DEBUG] [Thread-122995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:44.627 [DEBUG] [Thread-122995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:15:44.627 [DEBUG] [Thread-122995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:44.648 [INFO] [Thread-122995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:44.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-28T11:15:44.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:45.605 [DEBUG] [Thread-122995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:45.606 [DEBUG] [Thread-122995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:45.653 [DEBUG] [Thread-122995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:45.653 [DEBUG] [Thread-122995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:45.662 [DEBUG] [Thread-122995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:45.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15: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-28T11:15: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-28T11:15:45.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:45.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:45.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:45.698 [DEBUG] [Thread-122995] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:55.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:15:55.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:15:55.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-28T11:15:56.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 15, 29), 17.45, 30.8, 0.0, 15.78, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:15:56.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:15:29
2025-09-28T11:15:56.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:15:56.556 [DEBUG] [Thread-122997] [transport.py] [_log()] starting thread (client mode): 0x2e377be0
2025-09-28T11:15:56.556 [DEBUG] [Thread-122997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:56.576 [DEBUG] [Thread-122997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:15:56.577 [INFO] [Thread-122997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:56.580 [DEBUG] [Thread-122997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:56.581 [DEBUG] [Thread-122997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:56.582 [DEBUG] [Thread-122997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:56.582 [DEBUG] [Thread-122997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:56.582 [DEBUG] [Thread-122997] [transport.py] [_log()] Compression: none
2025-09-28T11:15:56.582 [DEBUG] [Thread-122997] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:56.600 [DEBUG] [Thread-122997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:56.600 [DEBUG] [Thread-122997] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:56.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:15:56.601 [DEBUG] [Thread-122997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:15:56.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:56.603 [DEBUG] [Thread-122997] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:56.603 [DEBUG] [Thread-122997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:56.604 [DEBUG] [Thread-122997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:56.604 [DEBUG] [Thread-122997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:15:56.604 [DEBUG] [Thread-122997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:56.639 [INFO] [Thread-122997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:56.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:57.273 [DEBUG] [Thread-122997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:57.274 [DEBUG] [Thread-122997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:57.274 [DEBUG] [Thread-122997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:15:57.314 [DEBUG] [Thread-122997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:57.315 [DEBUG] [Thread-122997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:57.318 [DEBUG] [Thread-122997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:57.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:57.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:15:57.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:15:57.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:15:57.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:57.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:15:57.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:57.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:15:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385502 -999.00  +17.90  19.35     36   +2.90 1 1 1 1 1   888    0 19.65 189.71 ----- 14.2 19.4 250.0 20.2 26.4 -27.5 25.2 -25.5 24.0 -24.6 24.9 -26.4
2025-09-28T11:15:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:15:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:15:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385502
2025-09-28T11:15:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:15:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:15:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:15:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:15:57.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:15:57.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:15:29', tmtdew=17.45, humidity=30.8, cloud=0.0, wind=15.78, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:15:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:15:57.343 [DEBUG] [Thread-122997] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:15:57.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-28T11:15:57.445 [DEBUG] [Thread-123000] [transport.py] [_log()] starting thread (client mode): 0x2e38fcd0
2025-09-28T11:15:57.445 [DEBUG] [Thread-123000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:15:57.459 [DEBUG] [Thread-123000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:15:57.460 [INFO] [Thread-123000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:15:57.467 [DEBUG] [Thread-123000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:15:57.467 [DEBUG] [Thread-123000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] client lang: <none>
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] server lang: <none>
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] kex follows: False
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:15:57.468 [DEBUG] [Thread-123000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:15:57.469 [DEBUG] [Thread-123000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:15:57.469 [DEBUG] [Thread-123000] [transport.py] [_log()] Compression: none
2025-09-28T11:15:57.469 [DEBUG] [Thread-123000] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:15:57.530 [DEBUG] [Thread-123000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:15:57.530 [DEBUG] [Thread-123000] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:15:57.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:15:57.531 [DEBUG] [Thread-123000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:15:57.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:15:57.594 [DEBUG] [Thread-123000] [transport.py] [_log()] userauth is OK
2025-09-28T11:15:57.595 [DEBUG] [Thread-123000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:15:57.595 [DEBUG] [Thread-123000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:15:57.595 [DEBUG] [Thread-123000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:15:57.595 [DEBUG] [Thread-123000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:15:57.614 [INFO] [Thread-123000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:15:57.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-28T11:15:57.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:15:58.450 [DEBUG] [Thread-123002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:15:58.564 [DEBUG] [Thread-123000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:15:58.564 [DEBUG] [Thread-123000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:15:58.612 [DEBUG] [Thread-123000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:15:58.612 [DEBUG] [Thread-123000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:15:58.621 [DEBUG] [Thread-123000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:15:58.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:15:58.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-28T11:15:58.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') -> 00000000
2025-09-28T11:15:58.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:15:58.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:15:58.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:15:58.655 [DEBUG] [Thread-123000] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:05.437 [DEBUG] [Thread-123003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:08.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:16:08.658 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:16:08.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:16:09.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 16, 1), 17.55, 30.59, 0.0, 17.87, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:16:09.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:16:01
2025-09-28T11:16:09.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:16:09.519 [DEBUG] [Thread-123004] [transport.py] [_log()] starting thread (client mode): 0x2e3c30d0
2025-09-28T11:16:09.519 [DEBUG] [Thread-123004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:16:09.539 [DEBUG] [Thread-123004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:16:09.540 [INFO] [Thread-123004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:16:09.542 [DEBUG] [Thread-123004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] client lang: <none>
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] server lang: <none>
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] kex follows: False
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:16:09.543 [DEBUG] [Thread-123004] [transport.py] [_log()] Compression: none
2025-09-28T11:16:09.544 [DEBUG] [Thread-123004] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:16:09.561 [DEBUG] [Thread-123004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:16:09.561 [DEBUG] [Thread-123004] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:16:09.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:16:09.562 [DEBUG] [Thread-123004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:16:09.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:16:09.564 [DEBUG] [Thread-123004] [transport.py] [_log()] userauth is OK
2025-09-28T11:16:09.564 [DEBUG] [Thread-123004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:16:09.564 [DEBUG] [Thread-123004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:16:09.565 [DEBUG] [Thread-123004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:16:09.565 [DEBUG] [Thread-123004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:16:09.588 [INFO] [Thread-123004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:16:09.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:16:10.249 [DEBUG] [Thread-123004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:16:10.249 [DEBUG] [Thread-123004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:16:10.249 [DEBUG] [Thread-123004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:16:10.289 [DEBUG] [Thread-123004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:16:10.289 [DEBUG] [Thread-123004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:16:10.292 [DEBUG] [Thread-123004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:16:10.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:16:10.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:16:10.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:16:10.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:16:10.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:16:10.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:16:10.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385849 -999.00  +18.10  12.73     36   +3.20 1 1 1 1 1   888    0 20.09 199.87 ----- 20.5 12.7 252.4 17.6 26.4 -26.2 25.1 -25.1 24.0 -24.2 25.0 -25.9
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385849
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:16:10.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:16:10.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:16:01', tmtdew=17.55, humidity=30.59, cloud=0.0, wind=17.87, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:15:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:16:10.316 [DEBUG] [Thread-123004] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:10.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-28T11:16:10.417 [DEBUG] [Thread-123007] [transport.py] [_log()] starting thread (client mode): 0x2b9aef50
2025-09-28T11:16:10.417 [DEBUG] [Thread-123007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:16:10.434 [DEBUG] [Thread-123007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:16:10.435 [INFO] [Thread-123007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] client lang: <none>
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] server lang: <none>
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] kex follows: False
2025-09-28T11:16:10.442 [DEBUG] [Thread-123007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] Compression: none
2025-09-28T11:16:10.443 [DEBUG] [Thread-123007] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:16:10.502 [DEBUG] [Thread-123007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:16:10.503 [DEBUG] [Thread-123007] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:16:10.503 [DEBUG] [Thread-123007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:16:10.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:16:10.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:16:10.559 [DEBUG] [Thread-123007] [transport.py] [_log()] userauth is OK
2025-09-28T11:16:10.559 [DEBUG] [Thread-123007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:16:10.560 [DEBUG] [Thread-123007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:16:10.560 [DEBUG] [Thread-123007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:16:10.560 [DEBUG] [Thread-123007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:16:10.581 [INFO] [Thread-123007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:16:10.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:16:10.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:16:11.577 [DEBUG] [Thread-123007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:16:11.577 [DEBUG] [Thread-123007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:16:11.625 [DEBUG] [Thread-123007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:16:11.625 [DEBUG] [Thread-123007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:16:11.634 [DEBUG] [Thread-123007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:16:11.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:16:11.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-28T11:16:11.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-28T11:16:11.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:16:11.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:16:11.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:16:11.670 [DEBUG] [Thread-123007] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:13.513 [DEBUG] [Thread-123009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:21.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:16:21.673 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:16:21.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-28T11:16:22.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 16, 1), 17.55, 30.59, 0.0, 17.87, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:16:22.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:16:01
2025-09-28T11:16:22.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:16:22.534 [DEBUG] [Thread-123010] [transport.py] [_log()] starting thread (client mode): 0x2e3fa2c0
2025-09-28T11:16:22.534 [DEBUG] [Thread-123010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:16:22.553 [DEBUG] [Thread-123010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:16:22.554 [INFO] [Thread-123010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:16:22.557 [DEBUG] [Thread-123010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:16:22.557 [DEBUG] [Thread-123010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:16:22.557 [DEBUG] [Thread-123010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] client lang: <none>
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] server lang: <none>
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] kex follows: False
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:16:22.558 [DEBUG] [Thread-123010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:16:22.559 [DEBUG] [Thread-123010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:16:22.559 [DEBUG] [Thread-123010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:16:22.559 [DEBUG] [Thread-123010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:16:22.559 [DEBUG] [Thread-123010] [transport.py] [_log()] Compression: none
2025-09-28T11:16:22.559 [DEBUG] [Thread-123010] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:16:22.578 [DEBUG] [Thread-123010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:16:22.579 [DEBUG] [Thread-123010] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:16:22.579 [DEBUG] [Thread-123010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:16:22.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:16:22.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:16:22.582 [DEBUG] [Thread-123010] [transport.py] [_log()] userauth is OK
2025-09-28T11:16:22.582 [DEBUG] [Thread-123010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:16:22.582 [DEBUG] [Thread-123010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:16:22.582 [DEBUG] [Thread-123010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:16:22.583 [DEBUG] [Thread-123010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:16:22.617 [INFO] [Thread-123010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:16:22.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:16:23.237 [DEBUG] [Thread-123010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:16:23.237 [DEBUG] [Thread-123010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:16:23.237 [DEBUG] [Thread-123010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:16:23.278 [DEBUG] [Thread-123010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:16:23.278 [DEBUG] [Thread-123010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:16:23.281 [DEBUG] [Thread-123010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:16:23.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:16:23.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:16:23.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:16:23.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:16:23.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:16:23.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:16:23.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:16:23.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:16:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:16:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.385849 -999.00  +18.10  12.73     36   +3.20 1 1 1 1 1   888    0 20.09 199.87 ----- 20.5 12.7 252.4 17.6 26.4 -26.2 25.1 -25.1 24.0 -24.2 25.0 -25.9
2025-09-28T11:16:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:16:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:16:23.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.385849
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:16:23.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:16:01', tmtdew=17.55, humidity=30.59, cloud=0.0, wind=17.87, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:15:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:16:23.305 [DEBUG] [Thread-123010] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:23.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-28T11:16:23.422 [DEBUG] [Thread-123013] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T11:16:23.422 [DEBUG] [Thread-123013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:16:23.438 [DEBUG] [Thread-123013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:16:23.438 [INFO] [Thread-123013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:16:23.446 [DEBUG] [Thread-123013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] client lang: <none>
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] server lang: <none>
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] kex follows: False
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:16:23.447 [DEBUG] [Thread-123013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:16:23.448 [DEBUG] [Thread-123013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:16:23.448 [DEBUG] [Thread-123013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:16:23.448 [DEBUG] [Thread-123013] [transport.py] [_log()] Compression: none
2025-09-28T11:16:23.448 [DEBUG] [Thread-123013] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:16:23.507 [DEBUG] [Thread-123013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:16:23.507 [DEBUG] [Thread-123013] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:16:23.508 [DEBUG] [Thread-123013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:16:23.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:16:23.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:16:23.563 [DEBUG] [Thread-123013] [transport.py] [_log()] userauth is OK
2025-09-28T11:16:23.563 [DEBUG] [Thread-123013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:16:23.563 [DEBUG] [Thread-123013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:16:23.563 [DEBUG] [Thread-123013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:16:23.564 [DEBUG] [Thread-123013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:16:23.583 [INFO] [Thread-123013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:16:23.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-28T11:16:23.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:16:24.573 [DEBUG] [Thread-123013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:16:24.573 [DEBUG] [Thread-123013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:16:24.621 [DEBUG] [Thread-123013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:16:24.621 [DEBUG] [Thread-123013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:16:24.630 [DEBUG] [Thread-123013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:16:24.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:16:24.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-28T11:16: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-28T11:16:24.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:16:24.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:16:24.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:16:24.663 [DEBUG] [Thread-123013] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:28.574 [DEBUG] [Thread-123015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:34.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:16:34.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:16:34.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-28T11:16:35.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 16, 1), 17.55, 30.59, 0.0, 17.87, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:16:35.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:16:01
2025-09-28T11:16:35.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:16:35.592 [DEBUG] [Thread-123016] [transport.py] [_log()] starting thread (client mode): 0x2e3fb3a0
2025-09-28T11:16:35.593 [DEBUG] [Thread-123016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:16:35.612 [DEBUG] [Thread-123016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:16:35.612 [INFO] [Thread-123016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] client lang: <none>
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] server lang: <none>
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] kex follows: False
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] Compression: none
2025-09-28T11:16:35.615 [DEBUG] [Thread-123016] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:16:35.623 [DEBUG] [Thread-123016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:16:35.623 [DEBUG] [Thread-123016] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:16:35.623 [DEBUG] [Thread-123016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:16:35.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:16:35.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:16:35.624 [DEBUG] [Thread-123016] [transport.py] [_log()] userauth is OK
2025-09-28T11:16:35.624 [DEBUG] [Thread-123016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:16:35.624 [DEBUG] [Thread-123016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:16:35.624 [DEBUG] [Thread-123016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:16:35.624 [DEBUG] [Thread-123016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:16:35.636 [INFO] [Thread-123016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:16:35.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:16:35.959 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:35.960 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:36.200 [DEBUG] [Thread-123016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:16:36.200 [DEBUG] [Thread-123016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:16:36.201 [DEBUG] [Thread-123016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:16:36.241 [DEBUG] [Thread-123016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:16:36.242 [DEBUG] [Thread-123016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:16:36.245 [DEBUG] [Thread-123016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:16:36.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:16:36.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:16:36.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:16:36.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:16:36.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:16:36.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:16:36.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:16:36.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:16:36.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:16:36.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.386197 -999.00  +18.00  18.49     36   +2.90 1 1 1 1 1   888    0 19.47 176.68 ----- 18.9 18.5 254.6 27.0 26.2 -28.8 25.1 -25.8 23.9 -25.7 24.8 -27.1
2025-09-28T11:16:36.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:16:36.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:16:36.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.386197
2025-09-28T11:16:36.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:16:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:16:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:16:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:16:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:16:36.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:16:01', tmtdew=17.55, humidity=30.59, cloud=0.0, wind=17.87, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:16:07.421', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:16:36.269 [DEBUG] [Thread-123016] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:16:36.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-28T11:16:43.607 [DEBUG] [Thread-123019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:16:58.660 [DEBUG] [Thread-123020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:05.489 [DEBUG] [Thread-123021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:13.698 [DEBUG] [Thread-123022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:28.739 [DEBUG] [Thread-123023 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:36.102 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:36.104 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:43.780 [DEBUG] [Thread-123024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:17:58.817 [DEBUG] [Thread-123025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:05.539 [DEBUG] [Thread-123026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:13.853 [DEBUG] [Thread-123027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:28.892 [DEBUG] [Thread-123028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:36.244 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:36.245 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:43.930 [DEBUG] [Thread-123029 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:47.995 [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-28T11:18:58.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:18:58.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:18:58.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-28T11:18:58.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 18, 41), 17.71, 30.25, 0.0, 13.55, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:18:58.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:18:41
2025-09-28T11:18:58.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:18:58.880 [DEBUG] [Thread-123030] [transport.py] [_log()] starting thread (client mode): 0x2b9afdc0
2025-09-28T11:18:58.881 [DEBUG] [Thread-123030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:18:58.893 [DEBUG] [Thread-123030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:18:58.893 [INFO] [Thread-123030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:18:58.896 [DEBUG] [Thread-123030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:18:58.896 [DEBUG] [Thread-123030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:18:58.896 [DEBUG] [Thread-123030] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] client lang: <none>
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] server lang: <none>
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] kex follows: False
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:18:58.897 [DEBUG] [Thread-123030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:18:58.898 [DEBUG] [Thread-123030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:18:58.898 [DEBUG] [Thread-123030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:18:58.898 [DEBUG] [Thread-123030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:18:58.898 [DEBUG] [Thread-123030] [transport.py] [_log()] Compression: none
2025-09-28T11:18:58.898 [DEBUG] [Thread-123030] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:18:58.914 [DEBUG] [Thread-123030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:18:58.915 [DEBUG] [Thread-123030] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:18:58.915 [DEBUG] [Thread-123030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:18:58.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:18:58.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:18:58.918 [DEBUG] [Thread-123030] [transport.py] [_log()] userauth is OK
2025-09-28T11:18:58.918 [DEBUG] [Thread-123030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:18:58.918 [DEBUG] [Thread-123030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:18:58.918 [DEBUG] [Thread-123030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:18:58.918 [DEBUG] [Thread-123030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:18:58.941 [INFO] [Thread-123030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:18:58.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:18:58.972 [DEBUG] [Thread-123032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:18:59.575 [DEBUG] [Thread-123030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:18:59.575 [DEBUG] [Thread-123030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:18:59.575 [DEBUG] [Thread-123030] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:18:59.616 [DEBUG] [Thread-123030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:18:59.617 [DEBUG] [Thread-123030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:18:59.620 [DEBUG] [Thread-123030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:18:59.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:18:59.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:18:59.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:18:59.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:18:59.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:18:59.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:18:59.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.387933 -999.00  +17.60   7.59     36   +2.40 1 1 1 1 1   888    0 20.14 196.93 ----- 6.0 7.6 267.0 14.6 26.1 -26.7 24.9 -24.6 23.4 -24.6 24.6 -24.9
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:18:59.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.387933
2025-09-28T11:18:59.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:18:59.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:18:59.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:18:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:18:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:18:59.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:18:41', tmtdew=17.71, humidity=30.25, cloud=0.0, wind=13.55, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:18:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:18:59.645 [DEBUG] [Thread-123030] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:18:59.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-28T11:18:59.751 [DEBUG] [Thread-123034] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d60
2025-09-28T11:18:59.751 [DEBUG] [Thread-123034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:18:59.766 [DEBUG] [Thread-123034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:18:59.766 [INFO] [Thread-123034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] client lang: <none>
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] server lang: <none>
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] kex follows: False
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] Compression: none
2025-09-28T11:18:59.774 [DEBUG] [Thread-123034] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:18:59.828 [DEBUG] [Thread-123034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:18:59.829 [DEBUG] [Thread-123034] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:18:59.829 [DEBUG] [Thread-123034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:18:59.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:18:59.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:18:59.886 [DEBUG] [Thread-123034] [transport.py] [_log()] userauth is OK
2025-09-28T11:18:59.886 [DEBUG] [Thread-123034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:18:59.886 [DEBUG] [Thread-123034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:18:59.886 [DEBUG] [Thread-123034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:18:59.886 [DEBUG] [Thread-123034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:18:59.909 [INFO] [Thread-123034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:18:59.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-28T11:18:59.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:00.959 [DEBUG] [Thread-123034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:00.959 [DEBUG] [Thread-123034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:01.007 [DEBUG] [Thread-123034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:01.007 [DEBUG] [Thread-123034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:01.016 [DEBUG] [Thread-123034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:01.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:01.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-28T11:19:01.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-28T11:19:01.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:01.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:01.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:01.051 [DEBUG] [Thread-123034] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:05.576 [DEBUG] [Thread-123036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:11.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:19:11.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:19:11.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:19:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 18, 41), 17.71, 30.25, 0.0, 13.55, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:19:11.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:18:41
2025-09-28T11:19:11.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:19:11.924 [DEBUG] [Thread-123037] [transport.py] [_log()] starting thread (client mode): 0x2b9ae440
2025-09-28T11:19:11.924 [DEBUG] [Thread-123037] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:11.944 [DEBUG] [Thread-123037] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:19:11.944 [INFO] [Thread-123037] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:11.954 [DEBUG] [Thread-123037] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:11.955 [DEBUG] [Thread-123037] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:11.955 [DEBUG] [Thread-123037] [transport.py] [_log()] Compression: none
2025-09-28T11:19:11.955 [DEBUG] [Thread-123037] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:11.971 [DEBUG] [Thread-123037] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:11.971 [DEBUG] [Thread-123037] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:11.972 [DEBUG] [Thread-123037] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:19:11.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:19:11.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:11.973 [DEBUG] [Thread-123037] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:11.973 [DEBUG] [Thread-123037] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:11.973 [DEBUG] [Thread-123037] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:11.973 [DEBUG] [Thread-123037] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:19:11.973 [DEBUG] [Thread-123037] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:11.989 [INFO] [Thread-123037] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:11.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:12.612 [DEBUG] [Thread-123037] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:12.612 [DEBUG] [Thread-123037] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:12.612 [DEBUG] [Thread-123037] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:19:12.652 [DEBUG] [Thread-123037] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:12.652 [DEBUG] [Thread-123037] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:12.655 [DEBUG] [Thread-123037] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:12.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:12.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:19:12.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:19:12.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:19:12.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:12.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:19:12.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:12.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.387933 -999.00  +17.60   7.59     36   +2.40 1 1 1 1 1   888    0 20.14 196.93 ----- 6.0 7.6 267.0 14.6 26.1 -26.7 24.9 -24.6 23.4 -24.6 24.6 -24.9
2025-09-28T11:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.387933
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:19:12.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:18:41', tmtdew=17.71, humidity=30.25, cloud=0.0, wind=13.55, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:18:37.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:19:12.679 [DEBUG] [Thread-123037] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:12.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-28T11:19:12.787 [DEBUG] [Thread-123040] [transport.py] [_log()] starting thread (client mode): 0x2b9ac220
2025-09-28T11:19:12.787 [DEBUG] [Thread-123040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:12.801 [DEBUG] [Thread-123040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:19:12.801 [INFO] [Thread-123040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] Compression: none
2025-09-28T11:19:12.809 [DEBUG] [Thread-123040] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:12.865 [DEBUG] [Thread-123040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:12.865 [DEBUG] [Thread-123040] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:12.865 [DEBUG] [Thread-123040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:19:12.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:19:12.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:12.922 [DEBUG] [Thread-123040] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:12.922 [DEBUG] [Thread-123040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:12.922 [DEBUG] [Thread-123040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:12.922 [DEBUG] [Thread-123040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:19:12.922 [DEBUG] [Thread-123040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:12.935 [INFO] [Thread-123040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:12.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-28T11:19:12.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:13.902 [DEBUG] [Thread-123040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:13.902 [DEBUG] [Thread-123040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:13.950 [DEBUG] [Thread-123040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:13.950 [DEBUG] [Thread-123040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:13.959 [DEBUG] [Thread-123040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:13.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:13.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-28T11:19:13.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-28T11:19:13.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:13.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:13.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:13.993 [DEBUG] [Thread-123040] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:14.008 [DEBUG] [Thread-123042 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:23.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:19:23.989 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:19:23.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-28T11:19:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 19, 13), 17.89, 29.88, 0.0, 13.34, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:19:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:19:13
2025-09-28T11:19:24.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:19:24.850 [DEBUG] [Thread-123043] [transport.py] [_log()] starting thread (client mode): 0x2b9de7a0
2025-09-28T11:19:24.850 [DEBUG] [Thread-123043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:24.861 [DEBUG] [Thread-123043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:19:24.862 [INFO] [Thread-123043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:24.864 [DEBUG] [Thread-123043] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] Compression: none
2025-09-28T11:19:24.865 [DEBUG] [Thread-123043] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:24.874 [DEBUG] [Thread-123043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:24.875 [DEBUG] [Thread-123043] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:24.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:19:24.876 [DEBUG] [Thread-123043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:19:24.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:24.878 [DEBUG] [Thread-123043] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:24.878 [DEBUG] [Thread-123043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:24.878 [DEBUG] [Thread-123043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:24.878 [DEBUG] [Thread-123043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:19:24.878 [DEBUG] [Thread-123043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:24.894 [INFO] [Thread-123043] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:24.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:25.498 [DEBUG] [Thread-123043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:25.498 [DEBUG] [Thread-123043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:25.499 [DEBUG] [Thread-123043] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:19:25.539 [DEBUG] [Thread-123043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:25.540 [DEBUG] [Thread-123043] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:25.542 [DEBUG] [Thread-123043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:25.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:25.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:19:25.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:19:25.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:19:25.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:25.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:19:25.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:25.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388280 -999.00  +17.40   8.25     36   +2.50 1 1 1 1 1   888    0 20.34 197.76 ----- 9.8 8.2 242.9 14.8 26.1 -26.7 24.9 -25.2 23.6 -24.2 24.6 -26.2
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388280
2025-09-28T11:19:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:19:25.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:19:25.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:19:25.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:19:25.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:19:25.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:19:13', tmtdew=17.89, humidity=29.88, cloud=0.0, wind=13.34, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:19:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:19:25.563 [DEBUG] [Thread-123043] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:25.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:19:25.668 [DEBUG] [Thread-123046] [transport.py] [_log()] starting thread (client mode): 0x2b9f3730
2025-09-28T11:19:25.668 [DEBUG] [Thread-123046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:25.684 [DEBUG] [Thread-123046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:19:25.684 [INFO] [Thread-123046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:25.691 [DEBUG] [Thread-123046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] Compression: none
2025-09-28T11:19:25.692 [DEBUG] [Thread-123046] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:25.750 [DEBUG] [Thread-123046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:25.750 [DEBUG] [Thread-123046] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:25.751 [DEBUG] [Thread-123046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:19:25.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:19:25.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:25.807 [DEBUG] [Thread-123046] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:25.808 [DEBUG] [Thread-123046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:25.808 [DEBUG] [Thread-123046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:25.808 [DEBUG] [Thread-123046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:19:25.808 [DEBUG] [Thread-123046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:25.826 [INFO] [Thread-123046] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:25.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-28T11:19:25.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:26.804 [DEBUG] [Thread-123046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:26.804 [DEBUG] [Thread-123046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:26.862 [DEBUG] [Thread-123046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:26.862 [DEBUG] [Thread-123046] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:26.884 [DEBUG] [Thread-123046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:26.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:26.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-28T11:19:26.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-28T11:19:26.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:26.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:26.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:26.972 [DEBUG] [Thread-123046] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:29.057 [DEBUG] [Thread-123048 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:36.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:36.394 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:36.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:19:36.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:19:36.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-28T11:19:37.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 19, 13), 17.89, 29.88, 0.0, 13.34, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:19:37.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:19:13
2025-09-28T11:19:37.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:19:37.828 [DEBUG] [Thread-123049] [transport.py] [_log()] starting thread (client mode): 0x2b9ad960
2025-09-28T11:19:37.829 [DEBUG] [Thread-123049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:37.848 [DEBUG] [Thread-123049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:19:37.848 [INFO] [Thread-123049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:19:37.851 [DEBUG] [Thread-123049] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] Compression: none
2025-09-28T11:19:37.852 [DEBUG] [Thread-123049] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:37.867 [DEBUG] [Thread-123049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:37.868 [DEBUG] [Thread-123049] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:37.868 [DEBUG] [Thread-123049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:19:37.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:19:37.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:37.872 [DEBUG] [Thread-123049] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:37.872 [DEBUG] [Thread-123049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:37.872 [DEBUG] [Thread-123049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:37.872 [DEBUG] [Thread-123049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:19:37.873 [DEBUG] [Thread-123049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:37.896 [INFO] [Thread-123049] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:37.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:38.533 [DEBUG] [Thread-123049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:38.534 [DEBUG] [Thread-123049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:38.534 [DEBUG] [Thread-123049] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:19:38.574 [DEBUG] [Thread-123049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:38.574 [DEBUG] [Thread-123049] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:38.578 [DEBUG] [Thread-123049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:38.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:38.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:19:38.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:19:38.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:19:38.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:38.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:19:38.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:38.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:19:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388280 -999.00  +17.40   8.25     36   +2.50 1 1 1 1 1   888    0 20.34 197.76 ----- 9.8 8.2 242.9 14.8 26.1 -26.7 24.9 -25.2 23.6 -24.2 24.6 -26.2
2025-09-28T11:19:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:19:38.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:19:38.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388280
2025-09-28T11:19:38.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:19:38.602 [DEBUG] [Thread-123049] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:38.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:19:38.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:19:38.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:19:38.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:19:38.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:19:13', tmtdew=17.89, humidity=29.88, cloud=0.0, wind=13.34, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:19:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:19:38.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-28T11:19:38.713 [DEBUG] [Thread-123052] [transport.py] [_log()] starting thread (client mode): 0x2b9de290
2025-09-28T11:19:38.713 [DEBUG] [Thread-123052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:38.728 [DEBUG] [Thread-123052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:19:38.729 [INFO] [Thread-123052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:38.738 [DEBUG] [Thread-123052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] Compression: none
2025-09-28T11:19:38.739 [DEBUG] [Thread-123052] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:38.800 [DEBUG] [Thread-123052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:38.801 [DEBUG] [Thread-123052] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:38.801 [DEBUG] [Thread-123052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:19:38.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:19:38.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:38.862 [DEBUG] [Thread-123052] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:38.862 [DEBUG] [Thread-123052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:38.862 [DEBUG] [Thread-123052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:38.862 [DEBUG] [Thread-123052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:19:38.862 [DEBUG] [Thread-123052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:38.885 [INFO] [Thread-123052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:38.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-28T11:19:38.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:39.830 [DEBUG] [Thread-123052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:39.830 [DEBUG] [Thread-123052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:39.878 [DEBUG] [Thread-123052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:39.879 [DEBUG] [Thread-123052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:39.888 [DEBUG] [Thread-123052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:39.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:39.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T11:19:39.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') -> 00000000
2025-09-28T11:19:39.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:39.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:39.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:39.938 [DEBUG] [Thread-123052] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:44.120 [DEBUG] [Thread-123054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:19:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:19:49.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:19:49.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-28T11:19:50.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 19, 45), 17.56, 30.58, 0.0, 13.66, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:19:50.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:19:45
2025-09-28T11:19:50.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:19:50.833 [DEBUG] [Thread-123055] [transport.py] [_log()] starting thread (client mode): 0x2e3fb9a0
2025-09-28T11:19:50.833 [DEBUG] [Thread-123055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:50.854 [DEBUG] [Thread-123055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:19:50.854 [INFO] [Thread-123055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] Compression: none
2025-09-28T11:19:50.857 [DEBUG] [Thread-123055] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:50.872 [DEBUG] [Thread-123055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:50.872 [DEBUG] [Thread-123055] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:19:50.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:19:50.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:19:50.873 [DEBUG] [Thread-123055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:50.888 [INFO] [Thread-123055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:50.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:51.454 [DEBUG] [Thread-123055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:51.454 [DEBUG] [Thread-123055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:51.455 [DEBUG] [Thread-123055] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:19:51.496 [DEBUG] [Thread-123055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:51.496 [DEBUG] [Thread-123055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:51.498 [DEBUG] [Thread-123055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:51.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:51.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:19:51.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:19:51.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:19:51.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:51.516 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:19:51.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388280 -999.00  +17.40   8.25     36   +2.50 1 1 1 1 1   888    0 20.34 197.76 ----- 9.8 8.2 242.9 14.8 26.1 -26.7 24.9 -25.2 23.6 -24.2 24.6 -26.2
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388280
2025-09-28T11:19:51.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:19:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:19:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:19:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:19:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:19:51.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:19:45', tmtdew=17.56, humidity=30.58, cloud=0.0, wind=13.66, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:19:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:19:51.517 [DEBUG] [Thread-123055] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:51.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-28T11:19:51.610 [DEBUG] [Thread-123058] [transport.py] [_log()] starting thread (client mode): 0x2e3c2b00
2025-09-28T11:19:51.610 [DEBUG] [Thread-123058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:19:51.625 [DEBUG] [Thread-123058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:19:51.625 [INFO] [Thread-123058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] client lang: <none>
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] server lang: <none>
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] kex follows: False
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] Compression: none
2025-09-28T11:19:51.633 [DEBUG] [Thread-123058] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:19:51.687 [DEBUG] [Thread-123058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:19:51.687 [DEBUG] [Thread-123058] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:19:51.687 [DEBUG] [Thread-123058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:19:51.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:19:51.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:19:51.748 [DEBUG] [Thread-123058] [transport.py] [_log()] userauth is OK
2025-09-28T11:19:51.748 [DEBUG] [Thread-123058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:19:51.748 [DEBUG] [Thread-123058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:19:51.748 [DEBUG] [Thread-123058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:19:51.748 [DEBUG] [Thread-123058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:19:51.762 [INFO] [Thread-123058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:19:51.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-28T11:19:51.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:19:52.769 [DEBUG] [Thread-123058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:19:52.769 [DEBUG] [Thread-123058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:19:52.817 [DEBUG] [Thread-123058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:19:52.817 [DEBUG] [Thread-123058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:19:52.826 [DEBUG] [Thread-123058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:19:52.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:19:52.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-28T11:19:52.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') -> 00000000
2025-09-28T11:19:52.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:19:52.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:19:52.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:19:52.860 [DEBUG] [Thread-123058] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:19:59.158 [DEBUG] [Thread-123060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:02.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:20:02.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:20:02.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-28T11:20:03.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 19, 45), 17.56, 30.58, 0.0, 13.66, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:20:03.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:19:45
2025-09-28T11:20:03.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:20:03.719 [DEBUG] [Thread-123061] [transport.py] [_log()] starting thread (client mode): 0x2b9cde40
2025-09-28T11:20:03.719 [DEBUG] [Thread-123061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:03.737 [DEBUG] [Thread-123061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:20:03.737 [INFO] [Thread-123061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:20:03.741 [DEBUG] [Thread-123061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:03.741 [DEBUG] [Thread-123061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:20:03.741 [DEBUG] [Thread-123061] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] Compression: none
2025-09-28T11:20:03.742 [DEBUG] [Thread-123061] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:03.759 [DEBUG] [Thread-123061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:03.760 [DEBUG] [Thread-123061] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:03.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:20:03.761 [DEBUG] [Thread-123061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:20:03.761 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:03.762 [DEBUG] [Thread-123061] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:03.762 [DEBUG] [Thread-123061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:03.763 [DEBUG] [Thread-123061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:03.763 [DEBUG] [Thread-123061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:20:03.763 [DEBUG] [Thread-123061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:03.779 [INFO] [Thread-123061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:03.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:05.633 [DEBUG] [Thread-123063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:10.424 [DEBUG] [Thread-123061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:10.424 [DEBUG] [Thread-123061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:10.424 [DEBUG] [Thread-123061] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:20:10.465 [DEBUG] [Thread-123061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:10.465 [DEBUG] [Thread-123061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:10.468 [DEBUG] [Thread-123061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:10.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:10.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:20:10.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:20:10.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:20:10.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:10.494 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:20:10.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:10.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388627 -999.00  +18.00   5.68     37   +3.10 1 1 1 1 1   888    0 20.08 192.57 ----- 7.6 5.7 189.2 13.8 26.2 -25.7 24.8 -25.7 23.7 -23.9 24.8 -25.5
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388627
2025-09-28T11:20:10.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:20:10.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:20:10.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:20:10.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:20:10.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:20:10.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:19:45', tmtdew=17.56, humidity=30.58, cloud=0.0, wind=13.66, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:19:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:20:10.497 [DEBUG] [Thread-123061] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:10.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-28T11:20:10.588 [DEBUG] [Thread-123065] [transport.py] [_log()] starting thread (client mode): 0x2e377be0
2025-09-28T11:20:10.589 [DEBUG] [Thread-123065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:10.604 [DEBUG] [Thread-123065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:20:10.604 [INFO] [Thread-123065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:20:10.611 [DEBUG] [Thread-123065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:10.612 [DEBUG] [Thread-123065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:10.613 [DEBUG] [Thread-123065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:10.613 [DEBUG] [Thread-123065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:10.613 [DEBUG] [Thread-123065] [transport.py] [_log()] Compression: none
2025-09-28T11:20:10.613 [DEBUG] [Thread-123065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:10.676 [DEBUG] [Thread-123065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:10.677 [DEBUG] [Thread-123065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:10.677 [DEBUG] [Thread-123065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:20:10.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:20:10.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:10.736 [DEBUG] [Thread-123065] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:10.736 [DEBUG] [Thread-123065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:10.736 [DEBUG] [Thread-123065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:10.736 [DEBUG] [Thread-123065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:20:10.736 [DEBUG] [Thread-123065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:10.755 [INFO] [Thread-123065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:10.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:20:10.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:11.841 [DEBUG] [Thread-123065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:11.841 [DEBUG] [Thread-123065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:11.889 [DEBUG] [Thread-123065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:11.889 [DEBUG] [Thread-123065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:11.898 [DEBUG] [Thread-123065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:11.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:11.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-28T11:20:11.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-28T11:20:11.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:11.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:11.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:11.934 [DEBUG] [Thread-123065] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:14.218 [DEBUG] [Thread-123067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:21.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:20:21.937 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:20:21.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-28T11:20:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 20, 17), 17.4, 30.89, 0.0, 13.27, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:20:22.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:20:17
2025-09-28T11:20:22.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:20:27.807 [DEBUG] [Thread-123068] [transport.py] [_log()] starting thread (client mode): 0x2b9f3730
2025-09-28T11:20:27.807 [DEBUG] [Thread-123068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:27.820 [DEBUG] [Thread-123068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:20:27.820 [INFO] [Thread-123068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] Compression: none
2025-09-28T11:20:27.823 [DEBUG] [Thread-123068] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:27.838 [DEBUG] [Thread-123068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:27.839 [DEBUG] [Thread-123068] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:27.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:20:27.839 [DEBUG] [Thread-123068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:20:27.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:27.840 [DEBUG] [Thread-123068] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:27.840 [DEBUG] [Thread-123068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:27.840 [DEBUG] [Thread-123068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:27.840 [DEBUG] [Thread-123068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:20:27.840 [DEBUG] [Thread-123068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:27.850 [INFO] [Thread-123068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:27.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:28.468 [DEBUG] [Thread-123068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:28.469 [DEBUG] [Thread-123068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:28.469 [DEBUG] [Thread-123068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:20:28.510 [DEBUG] [Thread-123068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:28.510 [DEBUG] [Thread-123068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:28.512 [DEBUG] [Thread-123068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:28.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:28.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:20:28.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:20:28.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:20:28.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:28.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:20:28.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388627 -999.00  +18.00   5.68     37   +3.10 1 1 1 1 1   888    0 20.08 192.57 ----- 7.6 5.7 189.2 13.8 26.2 -25.7 24.8 -25.7 23.7 -23.9 24.8 -25.5
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388627
2025-09-28T11:20:28.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:20:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:20:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:20:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:20:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:20:28.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:20:17', tmtdew=17.4, humidity=30.89, cloud=0.0, wind=13.27, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:19:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:20:28.531 [DEBUG] [Thread-123068] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:28.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-28T11:20:28.619 [DEBUG] [Thread-123071] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-28T11:20:28.619 [DEBUG] [Thread-123071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:28.634 [DEBUG] [Thread-123071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:20:28.634 [INFO] [Thread-123071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:28.641 [DEBUG] [Thread-123071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] Compression: none
2025-09-28T11:20:28.642 [DEBUG] [Thread-123071] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:28.697 [DEBUG] [Thread-123071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:28.697 [DEBUG] [Thread-123071] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:28.698 [DEBUG] [Thread-123071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:20:28.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:20:28.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:28.755 [DEBUG] [Thread-123071] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:28.755 [DEBUG] [Thread-123071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:28.755 [DEBUG] [Thread-123071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:28.755 [DEBUG] [Thread-123071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:20:28.755 [DEBUG] [Thread-123071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:28.770 [INFO] [Thread-123071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:28.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-28T11:20:28.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:29.269 [DEBUG] [Thread-123073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:29.751 [DEBUG] [Thread-123071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:29.751 [DEBUG] [Thread-123071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:29.799 [DEBUG] [Thread-123071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:29.799 [DEBUG] [Thread-123071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:29.807 [DEBUG] [Thread-123071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:29.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:29.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-28T11:20:29.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T11:20:29.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:29.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:29.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:29.838 [DEBUG] [Thread-123071] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:36.536 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:36.538 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:39.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:20:39.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:20:39.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-28T11:20:40.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 20, 17), 17.4, 30.89, 0.0, 13.27, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:20:40.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:20:17
2025-09-28T11:20:40.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:20:40.709 [DEBUG] [Thread-123074] [transport.py] [_log()] starting thread (client mode): 0x2e3c3fd0
2025-09-28T11:20:40.709 [DEBUG] [Thread-123074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:40.729 [DEBUG] [Thread-123074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:20:40.729 [INFO] [Thread-123074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:20:40.732 [DEBUG] [Thread-123074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:40.732 [DEBUG] [Thread-123074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:20:40.732 [DEBUG] [Thread-123074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:40.733 [DEBUG] [Thread-123074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:40.734 [DEBUG] [Thread-123074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:40.734 [DEBUG] [Thread-123074] [transport.py] [_log()] Compression: none
2025-09-28T11:20:40.734 [DEBUG] [Thread-123074] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:40.752 [DEBUG] [Thread-123074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:40.752 [DEBUG] [Thread-123074] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:40.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:20:40.753 [DEBUG] [Thread-123074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:20:40.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:40.756 [DEBUG] [Thread-123074] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:40.756 [DEBUG] [Thread-123074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:40.756 [DEBUG] [Thread-123074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:40.756 [DEBUG] [Thread-123074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:20:40.756 [DEBUG] [Thread-123074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:40.790 [INFO] [Thread-123074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:40.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:41.420 [DEBUG] [Thread-123074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:41.421 [DEBUG] [Thread-123074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:41.421 [DEBUG] [Thread-123074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:20:41.462 [DEBUG] [Thread-123074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:41.462 [DEBUG] [Thread-123074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:41.464 [DEBUG] [Thread-123074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:41.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:41.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:20:41.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:20:41.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:20:41.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:41.486 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:20:41.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:41.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388974 -999.00  +18.50   2.29     36   +3.20 1 1 1 1 1   888    0 20.04 188.44 ----- 10.2 2.3 271.4 12.5 26.2 -26.7 24.7 -25.4 23.8 -24.6 24.9 -26.4
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388974
2025-09-28T11:20:41.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:20:41.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:20:41.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:20:41.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:20:41.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:20:41.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:20:17', tmtdew=17.4, humidity=30.89, cloud=0.0, wind=13.27, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:20:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:20:41.488 [DEBUG] [Thread-123074] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:41.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-28T11:20:41.582 [DEBUG] [Thread-123077] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-28T11:20:41.583 [DEBUG] [Thread-123077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:41.601 [DEBUG] [Thread-123077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:20:41.601 [INFO] [Thread-123077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:20:41.608 [DEBUG] [Thread-123077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:41.609 [DEBUG] [Thread-123077] [transport.py] [_log()] Compression: none
2025-09-28T11:20:41.610 [DEBUG] [Thread-123077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:41.666 [DEBUG] [Thread-123077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:41.667 [DEBUG] [Thread-123077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:41.667 [DEBUG] [Thread-123077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:20:41.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:20:41.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:41.723 [DEBUG] [Thread-123077] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:41.723 [DEBUG] [Thread-123077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:41.723 [DEBUG] [Thread-123077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:41.723 [DEBUG] [Thread-123077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:20:41.723 [DEBUG] [Thread-123077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:41.742 [INFO] [Thread-123077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:41.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-28T11:20:41.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:42.740 [DEBUG] [Thread-123077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:42.740 [DEBUG] [Thread-123077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:42.796 [DEBUG] [Thread-123077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:42.796 [DEBUG] [Thread-123077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:42.813 [DEBUG] [Thread-123077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:42.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:42.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-28T11:20:42.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-28T11:20:42.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:42.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:42.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:42.880 [DEBUG] [Thread-123077] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:44.304 [DEBUG] [Thread-123079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:20:52.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:20:52.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:20:52.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-28T11:20:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 20, 49), 17.36, 30.72, 0.0, 11.82, 17.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:20:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:20:49
2025-09-28T11:20:53.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:20:53.745 [DEBUG] [Thread-123080] [transport.py] [_log()] starting thread (client mode): 0x2b9dcb20
2025-09-28T11:20:53.745 [DEBUG] [Thread-123080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:53.769 [DEBUG] [Thread-123080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:20:53.770 [INFO] [Thread-123080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:20:53.771 [DEBUG] [Thread-123080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:53.771 [DEBUG] [Thread-123080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:20:53.771 [DEBUG] [Thread-123080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:53.771 [DEBUG] [Thread-123080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:53.772 [DEBUG] [Thread-123080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:53.773 [DEBUG] [Thread-123080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:53.773 [DEBUG] [Thread-123080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:53.773 [DEBUG] [Thread-123080] [transport.py] [_log()] Compression: none
2025-09-28T11:20:53.773 [DEBUG] [Thread-123080] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:53.792 [DEBUG] [Thread-123080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:53.792 [DEBUG] [Thread-123080] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:53.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:20:53.793 [DEBUG] [Thread-123080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:20:53.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:53.795 [DEBUG] [Thread-123080] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:53.796 [DEBUG] [Thread-123080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:53.796 [DEBUG] [Thread-123080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:53.796 [DEBUG] [Thread-123080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:20:53.796 [DEBUG] [Thread-123080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:53.820 [INFO] [Thread-123080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:53.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:54.413 [DEBUG] [Thread-123080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:54.414 [DEBUG] [Thread-123080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:54.414 [DEBUG] [Thread-123080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:20:54.454 [DEBUG] [Thread-123080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:54.455 [DEBUG] [Thread-123080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:54.458 [DEBUG] [Thread-123080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:54.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:54.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:20:54.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:20:54.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:20:54.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:54.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:20:54.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.388974 -999.00  +18.50   2.29     36   +3.20 1 1 1 1 1   888    0 20.04 188.44 ----- 10.2 2.3 271.4 12.5 26.2 -26.7 24.7 -25.4 23.8 -24.6 24.9 -26.4
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:20:54.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.388974
2025-09-28T11:20:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:20:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:20:54.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:20:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:20:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:20:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:20:49', tmtdew=17.36, humidity=30.72, cloud=0.0, wind=11.82, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:20:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:20:54.482 [DEBUG] [Thread-123080] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:54.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-28T11:20:54.582 [DEBUG] [Thread-123083] [transport.py] [_log()] starting thread (client mode): 0x2b9ad990
2025-09-28T11:20:54.582 [DEBUG] [Thread-123083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:20:54.596 [DEBUG] [Thread-123083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:20:54.597 [INFO] [Thread-123083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:54.604 [DEBUG] [Thread-123083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] client lang: <none>
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] server lang: <none>
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] kex follows: False
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] Compression: none
2025-09-28T11:20:54.605 [DEBUG] [Thread-123083] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:20:54.662 [DEBUG] [Thread-123083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:20:54.662 [DEBUG] [Thread-123083] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:20:54.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:20:54.663 [DEBUG] [Thread-123083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:20:54.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:20:54.722 [DEBUG] [Thread-123083] [transport.py] [_log()] userauth is OK
2025-09-28T11:20:54.722 [DEBUG] [Thread-123083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:20:54.722 [DEBUG] [Thread-123083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:20:54.722 [DEBUG] [Thread-123083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:20:54.722 [DEBUG] [Thread-123083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:20:54.741 [INFO] [Thread-123083] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:20:54.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:20:54.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:20:55.717 [DEBUG] [Thread-123083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:20:55.717 [DEBUG] [Thread-123083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:20:55.766 [DEBUG] [Thread-123083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:20:55.766 [DEBUG] [Thread-123083] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:20:55.778 [DEBUG] [Thread-123083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:20:55.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:20:55.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-28T11:20:55.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-28T11:20:55.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:20:55.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:20:55.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:20:55.824 [DEBUG] [Thread-123083] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:20:59.345 [DEBUG] [Thread-123085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:05.680 [DEBUG] [Thread-123086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:05.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:21:05.825 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:21:05.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-28T11:21:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 20, 49), 17.36, 30.72, 0.0, 11.82, 17.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:21:06.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:20:49
2025-09-28T11:21:06.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:21:06.723 [DEBUG] [Thread-123087] [transport.py] [_log()] starting thread (client mode): 0x2b9f3820
2025-09-28T11:21:06.723 [DEBUG] [Thread-123087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:21:06.743 [DEBUG] [Thread-123087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:21:06.743 [INFO] [Thread-123087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:21:06.744 [DEBUG] [Thread-123087] [transport.py] [_log()] client lang: <none>
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] server lang: <none>
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] kex follows: False
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] Compression: none
2025-09-28T11:21:06.745 [DEBUG] [Thread-123087] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:21:06.752 [DEBUG] [Thread-123087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:21:06.753 [DEBUG] [Thread-123087] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:21:06.753 [DEBUG] [Thread-123087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:21:06.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:21:06.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:21:06.754 [DEBUG] [Thread-123087] [transport.py] [_log()] userauth is OK
2025-09-28T11:21:06.754 [DEBUG] [Thread-123087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:21:06.754 [DEBUG] [Thread-123087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:21:06.754 [DEBUG] [Thread-123087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:21:06.754 [DEBUG] [Thread-123087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:21:06.767 [INFO] [Thread-123087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:21:06.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:21:07.314 [DEBUG] [Thread-123087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:21:07.314 [DEBUG] [Thread-123087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:21:07.314 [DEBUG] [Thread-123087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:21:07.355 [DEBUG] [Thread-123087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:21:07.355 [DEBUG] [Thread-123087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:21:07.358 [DEBUG] [Thread-123087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:21:07.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:21:07.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:21:07.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:21:07.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:21:07.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:21:07.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:21:07.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.389321 -999.00  +18.10   6.63     36   +2.80 1 1 1 1 1   888    0 20.35 194.43 ----- 8.4 6.6 235.7 11.6 26.2 -26.5 24.8 -25.6 23.8 -24.0 24.9 -26.0
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.389321
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:21:07.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:20:49', tmtdew=17.36, humidity=30.72, cloud=0.0, wind=11.82, temperature=17.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:20:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:21:07.377 [DEBUG] [Thread-123087] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:21:07.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-28T11:21:14.378 [DEBUG] [Thread-123090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:29.424 [DEBUG] [Thread-123091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:36.679 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:36.680 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:44.451 [DEBUG] [Thread-123092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:21:59.481 [DEBUG] [Thread-123093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:05.730 [DEBUG] [Thread-123094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:14.513 [DEBUG] [Thread-123095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:29.543 [DEBUG] [Thread-123096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:36.827 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:36.829 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:44.574 [DEBUG] [Thread-123097 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:22:59.600 [DEBUG] [Thread-123098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:05.786 [DEBUG] [Thread-123099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:14.626 [DEBUG] [Thread-123100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:22.426 [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-28T11:23:29.658 [DEBUG] [Thread-123101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:32.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:23:32.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:23:32.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-28T11:23:33.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 23, 28), 17.58, 30.22, 0.0, 12.03, 17.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:23:33.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:23:28
2025-09-28T11:23:33.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:23:33.364 [DEBUG] [Thread-123102] [transport.py] [_log()] starting thread (client mode): 0x2e38ed10
2025-09-28T11:23:33.364 [DEBUG] [Thread-123102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:23:33.384 [DEBUG] [Thread-123102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:23:33.384 [INFO] [Thread-123102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] client lang: <none>
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] server lang: <none>
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] kex follows: False
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:23:33.387 [DEBUG] [Thread-123102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:23:33.388 [DEBUG] [Thread-123102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:23:33.388 [DEBUG] [Thread-123102] [transport.py] [_log()] Compression: none
2025-09-28T11:23:33.388 [DEBUG] [Thread-123102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:23:33.402 [DEBUG] [Thread-123102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:23:33.402 [DEBUG] [Thread-123102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:23:33.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:23:33.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] userauth is OK
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:23:33.403 [DEBUG] [Thread-123102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:23:33.419 [INFO] [Thread-123102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:23:33.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:23:34.087 [DEBUG] [Thread-123102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:23:34.087 [DEBUG] [Thread-123102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:23:34.087 [DEBUG] [Thread-123102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:23:34.128 [DEBUG] [Thread-123102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:23:34.128 [DEBUG] [Thread-123102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:23:34.130 [DEBUG] [Thread-123102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:23:34.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:23:34.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:23:34.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:23:34.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:23:34.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:23:34.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:23:34.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391058 -999.00  +18.00  11.56     35   +2.60 1 1 1 1 1   888    0 19.85 172.39 ----- 17.2 11.6 272.0 18.0 26.4 -28.2 25.1 -24.4 23.9 -29.0 25.2 -26.1
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391058
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:23:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:23:28', tmtdew=17.58, humidity=30.22, cloud=0.0, wind=12.03, temperature=17.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:23:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:23:34.148 [DEBUG] [Thread-123102] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:23:34.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-28T11:23:34.234 [DEBUG] [Thread-123105] [transport.py] [_log()] starting thread (client mode): 0x2b98b1c0
2025-09-28T11:23:34.234 [DEBUG] [Thread-123105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:23:34.253 [DEBUG] [Thread-123105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:23:34.253 [INFO] [Thread-123105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:34.260 [DEBUG] [Thread-123105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] client lang: <none>
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] server lang: <none>
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] kex follows: False
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] Compression: none
2025-09-28T11:23:34.261 [DEBUG] [Thread-123105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:23:34.318 [DEBUG] [Thread-123105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:23:34.319 [DEBUG] [Thread-123105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:23:34.319 [DEBUG] [Thread-123105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:23:34.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:23:34.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:23:34.376 [DEBUG] [Thread-123105] [transport.py] [_log()] userauth is OK
2025-09-28T11:23:34.376 [DEBUG] [Thread-123105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:23:34.376 [DEBUG] [Thread-123105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:23:34.376 [DEBUG] [Thread-123105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:23:34.376 [DEBUG] [Thread-123105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:23:34.390 [INFO] [Thread-123105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:23:34.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-28T11:23:34.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:23:35.358 [DEBUG] [Thread-123105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:23:35.358 [DEBUG] [Thread-123105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:23:35.406 [DEBUG] [Thread-123105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:23:35.406 [DEBUG] [Thread-123105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:23:35.414 [DEBUG] [Thread-123105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:23:35.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:23:35.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-28T11:23:35.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-28T11:23:35.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:23:35.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:23:35.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:23:35.447 [DEBUG] [Thread-123105] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:23:36.970 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:36.971 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:44.688 [DEBUG] [Thread-123107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:45.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:23:45.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11: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-28T11:23:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 23, 28), 17.58, 30.22, 0.0, 12.03, 17.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:23:46.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:23:28
2025-09-28T11:23:46.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:23:46.306 [DEBUG] [Thread-123108] [transport.py] [_log()] starting thread (client mode): 0x2b944ee0
2025-09-28T11:23:46.306 [DEBUG] [Thread-123108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:23:46.325 [DEBUG] [Thread-123108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:23:46.325 [INFO] [Thread-123108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] client lang: <none>
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] server lang: <none>
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] kex follows: False
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] Compression: none
2025-09-28T11:23:46.329 [DEBUG] [Thread-123108] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:23:46.343 [DEBUG] [Thread-123108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:23:46.343 [DEBUG] [Thread-123108] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:23:46.343 [DEBUG] [Thread-123108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:23:46.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:23:46.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:23:46.344 [DEBUG] [Thread-123108] [transport.py] [_log()] userauth is OK
2025-09-28T11:23:46.344 [DEBUG] [Thread-123108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:23:46.344 [DEBUG] [Thread-123108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:23:46.344 [DEBUG] [Thread-123108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:23:46.344 [DEBUG] [Thread-123108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:23:46.353 [INFO] [Thread-123108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:23:46.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:23:47.008 [DEBUG] [Thread-123108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:23:47.008 [DEBUG] [Thread-123108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:23:47.008 [DEBUG] [Thread-123108] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:23:47.050 [DEBUG] [Thread-123108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:23:47.050 [DEBUG] [Thread-123108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:23:47.053 [DEBUG] [Thread-123108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:23:47.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:23:47.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:23:47.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:23:47.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:23:47.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:23:47.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:23:47.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:23:47.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:23:47.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:23:47.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391058 -999.00  +18.00  11.56     35   +2.60 1 1 1 1 1   888    0 19.85 172.39 ----- 17.2 11.6 272.0 18.0 26.4 -28.2 25.1 -24.4 23.9 -29.0 25.2 -26.1
2025-09-28T11:23:47.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:23:47.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:23:47.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391058
2025-09-28T11:23:47.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:23:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:23:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:23:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:23:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:23:47.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:23:28', tmtdew=17.58, humidity=30.22, cloud=0.0, wind=12.03, temperature=17.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:23:07.411', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:23:47.080 [DEBUG] [Thread-123108] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:23:47.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-28T11:23:47.183 [DEBUG] [Thread-123111] [transport.py] [_log()] starting thread (client mode): 0x2e3de200
2025-09-28T11:23:47.183 [DEBUG] [Thread-123111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:23:47.198 [DEBUG] [Thread-123111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:23:47.198 [INFO] [Thread-123111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:23:47.206 [DEBUG] [Thread-123111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:23:47.206 [DEBUG] [Thread-123111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] client lang: <none>
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] server lang: <none>
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] kex follows: False
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] Compression: none
2025-09-28T11:23:47.207 [DEBUG] [Thread-123111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:23:47.263 [DEBUG] [Thread-123111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:23:47.264 [DEBUG] [Thread-123111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:23:47.264 [DEBUG] [Thread-123111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:23:47.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:23:47.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:23:47.319 [DEBUG] [Thread-123111] [transport.py] [_log()] userauth is OK
2025-09-28T11:23:47.320 [DEBUG] [Thread-123111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:23:47.320 [DEBUG] [Thread-123111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:23:47.320 [DEBUG] [Thread-123111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:23:47.320 [DEBUG] [Thread-123111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:23:47.339 [INFO] [Thread-123111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:23:47.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-28T11:23:47.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:23:48.329 [DEBUG] [Thread-123111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:23:48.330 [DEBUG] [Thread-123111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:23:48.377 [DEBUG] [Thread-123111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:23:48.377 [DEBUG] [Thread-123111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:23:48.386 [DEBUG] [Thread-123111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:23:48.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:23:48.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-28T11:23:48.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-28T11:23:48.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:23:48.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:23:48.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:23:48.424 [DEBUG] [Thread-123111] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:23:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:23:58.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:23: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-28T11:23:59.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 23, 28), 17.58, 30.22, 0.0, 12.03, 17.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:23:59.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:23:28
2025-09-28T11:23:59.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:23:59.300 [DEBUG] [Thread-123113] [transport.py] [_log()] starting thread (client mode): 0x30ddee30
2025-09-28T11:23:59.300 [DEBUG] [Thread-123113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:23:59.314 [DEBUG] [Thread-123113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:23:59.314 [INFO] [Thread-123113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:23:59.317 [DEBUG] [Thread-123113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:23:59.317 [DEBUG] [Thread-123113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:23:59.317 [DEBUG] [Thread-123113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] client lang: <none>
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] server lang: <none>
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] kex follows: False
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] Compression: none
2025-09-28T11:23:59.318 [DEBUG] [Thread-123113] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:23:59.336 [DEBUG] [Thread-123113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:23:59.336 [DEBUG] [Thread-123113] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:23:59.337 [DEBUG] [Thread-123113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:23:59.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:23:59.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:23:59.339 [DEBUG] [Thread-123113] [transport.py] [_log()] userauth is OK
2025-09-28T11:23:59.339 [DEBUG] [Thread-123113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:23:59.339 [DEBUG] [Thread-123113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:23:59.339 [DEBUG] [Thread-123113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:23:59.339 [DEBUG] [Thread-123113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:23:59.362 [INFO] [Thread-123113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:23:59.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:23:59.733 [DEBUG] [Thread-123115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:23:59.993 [DEBUG] [Thread-123113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:23:59.993 [DEBUG] [Thread-123113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:23:59.993 [DEBUG] [Thread-123113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:24:00.034 [DEBUG] [Thread-123113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:00.034 [DEBUG] [Thread-123113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:00.036 [DEBUG] [Thread-123113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:00.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:00.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:24:00.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:24:00.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:24:00.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:00.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:24:00.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391405 -999.00  +17.90  18.81     37   +3.10 1 1 1 1 1   888    0 19.66 167.71 ----- 13.7 18.8 281.2 24.6 26.1 -27.1 25.0 -25.8 23.5 -25.9 25.0 -24.3
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:24:00.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391405
2025-09-28T11:24:00.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:24:00.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:24:00.056 [DEBUG] [Thread-123113] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:00.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:24:00.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:24:00.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:24:00.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:23:28', tmtdew=17.58, humidity=30.22, cloud=0.0, wind=12.03, temperature=17.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:23:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:24:00.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-28T11:24:00.154 [DEBUG] [Thread-123117] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-28T11:24:00.155 [DEBUG] [Thread-123117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:00.170 [DEBUG] [Thread-123117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:24:00.170 [INFO] [Thread-123117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:24:00.177 [DEBUG] [Thread-123117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:00.178 [DEBUG] [Thread-123117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:00.179 [DEBUG] [Thread-123117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:00.179 [DEBUG] [Thread-123117] [transport.py] [_log()] Compression: none
2025-09-28T11:24:00.179 [DEBUG] [Thread-123117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:00.234 [DEBUG] [Thread-123117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:00.235 [DEBUG] [Thread-123117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:00.235 [DEBUG] [Thread-123117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:24:00.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:24:00.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:00.291 [DEBUG] [Thread-123117] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:00.291 [DEBUG] [Thread-123117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:00.291 [DEBUG] [Thread-123117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:00.292 [DEBUG] [Thread-123117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:24:00.292 [DEBUG] [Thread-123117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:00.310 [INFO] [Thread-123117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:00.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-28T11:24:00.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:01.266 [DEBUG] [Thread-123117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:01.266 [DEBUG] [Thread-123117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:01.314 [DEBUG] [Thread-123117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:01.314 [DEBUG] [Thread-123117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:01.322 [DEBUG] [Thread-123117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:01.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:01.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-28T11:24:01.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-28T11:24:01.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:01.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:01.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:01.354 [DEBUG] [Thread-123117] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:05.840 [DEBUG] [Thread-123119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:11.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:24:11.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:24:11.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-28T11:24:11.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 24), 17.37, 31.16, 0.0, 13.13, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:24:11.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:24:00
2025-09-28T11:24:12.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:24:12.265 [DEBUG] [Thread-123120] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T11:24:12.265 [DEBUG] [Thread-123120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:12.285 [DEBUG] [Thread-123120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:24:12.285 [INFO] [Thread-123120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] Compression: none
2025-09-28T11:24:12.289 [DEBUG] [Thread-123120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:12.306 [DEBUG] [Thread-123120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:12.306 [DEBUG] [Thread-123120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:12.306 [DEBUG] [Thread-123120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:24:12.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:24:12.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:12.307 [DEBUG] [Thread-123120] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:12.307 [DEBUG] [Thread-123120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:12.307 [DEBUG] [Thread-123120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:12.307 [DEBUG] [Thread-123120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:24:12.307 [DEBUG] [Thread-123120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:12.322 [INFO] [Thread-123120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:12.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:12.950 [DEBUG] [Thread-123120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:12.950 [DEBUG] [Thread-123120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:12.950 [DEBUG] [Thread-123120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:24:12.991 [DEBUG] [Thread-123120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:12.991 [DEBUG] [Thread-123120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:12.993 [DEBUG] [Thread-123120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:13.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:13.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:24:13.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:24:13.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:24:13.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:13.009 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:24:13.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391405 -999.00  +17.90  18.81     37   +3.10 1 1 1 1 1   888    0 19.66 167.71 ----- 13.7 18.8 281.2 24.6 26.1 -27.1 25.0 -25.8 23.5 -25.9 25.0 -24.3
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391405
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:24:13.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:24:00', tmtdew=17.37, humidity=31.16, cloud=0.0, wind=13.13, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:23:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:24:13.010 [DEBUG] [Thread-123120] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:13.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-28T11:24:13.097 [DEBUG] [Thread-123123] [transport.py] [_log()] starting thread (client mode): 0x30ddee30
2025-09-28T11:24:13.098 [DEBUG] [Thread-123123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:13.112 [DEBUG] [Thread-123123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:24:13.113 [INFO] [Thread-123123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:13.124 [DEBUG] [Thread-123123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:13.125 [DEBUG] [Thread-123123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:13.125 [DEBUG] [Thread-123123] [transport.py] [_log()] Compression: none
2025-09-28T11:24:13.125 [DEBUG] [Thread-123123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:13.181 [DEBUG] [Thread-123123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:13.182 [DEBUG] [Thread-123123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:13.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:24:13.182 [DEBUG] [Thread-123123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:24:13.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:13.239 [DEBUG] [Thread-123123] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:13.239 [DEBUG] [Thread-123123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:13.239 [DEBUG] [Thread-123123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:13.239 [DEBUG] [Thread-123123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:24:13.239 [DEBUG] [Thread-123123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:13.254 [INFO] [Thread-123123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:13.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:24:13.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:14.201 [DEBUG] [Thread-123123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:14.201 [DEBUG] [Thread-123123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:14.249 [DEBUG] [Thread-123123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:14.249 [DEBUG] [Thread-123123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:14.257 [DEBUG] [Thread-123123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:14.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:14.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-28T11:24:14.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-28T11:24:14.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:14.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:14.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:14.291 [DEBUG] [Thread-123123] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:14.765 [DEBUG] [Thread-123125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:24.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:24:24.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:24:24.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-28T11:24:24.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 24), 17.37, 31.16, 0.0, 13.13, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:24:24.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:24:00
2025-09-28T11:24:25.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:24:25.148 [DEBUG] [Thread-123126] [transport.py] [_log()] starting thread (client mode): 0x30ddcb80
2025-09-28T11:24:25.148 [DEBUG] [Thread-123126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:25.168 [DEBUG] [Thread-123126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:24:25.168 [INFO] [Thread-123126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:25.171 [DEBUG] [Thread-123126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] Compression: none
2025-09-28T11:24:25.172 [DEBUG] [Thread-123126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:25.189 [DEBUG] [Thread-123126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:25.190 [DEBUG] [Thread-123126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:25.190 [DEBUG] [Thread-123126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:24:25.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:24:25.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:25.193 [DEBUG] [Thread-123126] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:25.193 [DEBUG] [Thread-123126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:25.194 [DEBUG] [Thread-123126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:25.194 [DEBUG] [Thread-123126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:24:25.194 [DEBUG] [Thread-123126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:25.228 [INFO] [Thread-123126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:25.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:25.866 [DEBUG] [Thread-123126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:25.867 [DEBUG] [Thread-123126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:25.867 [DEBUG] [Thread-123126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:24:25.907 [DEBUG] [Thread-123126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:25.907 [DEBUG] [Thread-123126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:25.910 [DEBUG] [Thread-123126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:25.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:25.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:24:25.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:24:25.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:24:25.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:25.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:24:25.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:25.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:25.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:24:25.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391405 -999.00  +17.90  18.81     37   +3.10 1 1 1 1 1   888    0 19.66 167.71 ----- 13.7 18.8 281.2 24.6 26.1 -27.1 25.0 -25.8 23.5 -25.9 25.0 -24.3
2025-09-28T11:24:25.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:24:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:24:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391405
2025-09-28T11:24:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:24:25.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:24:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:24:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:24:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:24:25.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:24:00', tmtdew=17.37, humidity=31.16, cloud=0.0, wind=13.13, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:23:37.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:24:25.936 [DEBUG] [Thread-123126] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:26.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:24:26.033 [DEBUG] [Thread-123129] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-28T11:24:26.033 [DEBUG] [Thread-123129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:26.048 [DEBUG] [Thread-123129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:24:26.048 [INFO] [Thread-123129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:24:26.055 [DEBUG] [Thread-123129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] Compression: none
2025-09-28T11:24:26.056 [DEBUG] [Thread-123129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:26.114 [DEBUG] [Thread-123129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:26.115 [DEBUG] [Thread-123129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:26.115 [DEBUG] [Thread-123129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:24:26.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:24:26.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:26.171 [DEBUG] [Thread-123129] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:26.171 [DEBUG] [Thread-123129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:26.171 [DEBUG] [Thread-123129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:26.171 [DEBUG] [Thread-123129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:24:26.171 [DEBUG] [Thread-123129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:26.194 [INFO] [Thread-123129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:26.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:24:26.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:27.222 [DEBUG] [Thread-123129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:27.223 [DEBUG] [Thread-123129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:27.270 [DEBUG] [Thread-123129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:27.270 [DEBUG] [Thread-123129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:27.279 [DEBUG] [Thread-123129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:27.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:27.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-28T11:24:27.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-28T11:24:27.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:27.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:27.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:27.312 [DEBUG] [Thread-123129] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:29.812 [DEBUG] [Thread-123131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:37.110 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:37.111 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:37.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:24:37.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:24:37.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-28T11:24:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 24, 32), 17.57, 30.74, 0.0, 13.52, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:24:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:24:32
2025-09-28T11:24:38.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:24:38.178 [DEBUG] [Thread-123132] [transport.py] [_log()] starting thread (client mode): 0x2b98b340
2025-09-28T11:24:38.179 [DEBUG] [Thread-123132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:24:38.199 [DEBUG] [Thread-123132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:24:38.199 [INFO] [Thread-123132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:24:38.202 [DEBUG] [Thread-123132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:24:38.202 [DEBUG] [Thread-123132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] client lang: <none>
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] server lang: <none>
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] kex follows: False
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] Compression: none
2025-09-28T11:24:38.203 [DEBUG] [Thread-123132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:24:38.219 [DEBUG] [Thread-123132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:24:38.219 [DEBUG] [Thread-123132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:24:38.220 [DEBUG] [Thread-123132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:24:38.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:24:38.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:24:38.222 [DEBUG] [Thread-123132] [transport.py] [_log()] userauth is OK
2025-09-28T11:24:38.222 [DEBUG] [Thread-123132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:24:38.222 [DEBUG] [Thread-123132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:24:38.222 [DEBUG] [Thread-123132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:24:38.222 [DEBUG] [Thread-123132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:24:38.246 [INFO] [Thread-123132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:24:38.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:24:38.829 [DEBUG] [Thread-123132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:24:38.829 [DEBUG] [Thread-123132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:24:38.830 [DEBUG] [Thread-123132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:24:38.870 [DEBUG] [Thread-123132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:24:38.871 [DEBUG] [Thread-123132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:24:38.873 [DEBUG] [Thread-123132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:24:38.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:24:38.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:24:38.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:24:38.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:24:38.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:24:38.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:24:38.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:24:38.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:24:38.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:24:38.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.391752 -999.00  +18.20  15.39     39   +4.30 1 1 1 1 1   888    0 19.15 155.01 ----- 10.4 15.4 265.6 26.4 26.3 -25.6 25.0 -25.0 23.8 -23.4 24.9 -24.6
2025-09-28T11:24:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:24:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:24:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.391752
2025-09-28T11:24:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:24:38.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:24:38.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:24:38.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:24:38.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:24:38.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:24:32', tmtdew=17.57, humidity=30.74, cloud=0.0, wind=13.52, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:24:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:24:38.900 [DEBUG] [Thread-123132] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:24:38.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:24:44.843 [DEBUG] [Thread-123135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:24:59.889 [DEBUG] [Thread-123136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:05.890 [DEBUG] [Thread-123137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:14.923 [DEBUG] [Thread-123138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:29.959 [DEBUG] [Thread-123139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:37.252 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:37.253 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:25:44.988 [DEBUG] [Thread-123140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:00.018 [DEBUG] [Thread-123141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:05.945 [DEBUG] [Thread-123142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:15.048 [DEBUG] [Thread-123143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:30.086 [DEBUG] [Thread-123144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:37.395 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:37.395 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:45.114 [DEBUG] [Thread-123145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:26:51.323 [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-28T11:27:00.147 [DEBUG] [Thread-123146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:01.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:27:01.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:27:01.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:27:01.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 26, 40), 19.05, 27.42, 0.0, 18.92, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:27:01.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:26:40
2025-09-28T11:27:02.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:27:02.212 [DEBUG] [Thread-123147] [transport.py] [_log()] starting thread (client mode): 0x2b988640
2025-09-28T11:27:02.212 [DEBUG] [Thread-123147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:02.230 [DEBUG] [Thread-123147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:27:02.231 [INFO] [Thread-123147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:02.234 [DEBUG] [Thread-123147] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] Compression: none
2025-09-28T11:27:02.235 [DEBUG] [Thread-123147] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:02.252 [DEBUG] [Thread-123147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:02.252 [DEBUG] [Thread-123147] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:02.252 [DEBUG] [Thread-123147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:27:02.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:27:02.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:02.253 [DEBUG] [Thread-123147] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:02.253 [DEBUG] [Thread-123147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:02.253 [DEBUG] [Thread-123147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:02.253 [DEBUG] [Thread-123147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:27:02.253 [DEBUG] [Thread-123147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:02.262 [INFO] [Thread-123147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:02.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:02.868 [DEBUG] [Thread-123147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:02.868 [DEBUG] [Thread-123147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:02.869 [DEBUG] [Thread-123147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:27:02.909 [DEBUG] [Thread-123147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:02.910 [DEBUG] [Thread-123147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:02.912 [DEBUG] [Thread-123147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:02.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:02.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:27:02.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:27:02.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:27:02.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:02.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:27:02.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:02.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.393487 -999.00  +18.20  15.46     34   +2.10 1 1 1 1 1   888    0 18.09 112.88 ----- 16.6 15.5 232.6 18.8 26.0 -27.7 24.9 -24.8 23.8 -24.3 24.8 -26.1
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.393487
2025-09-28T11:27:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:27:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:27:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:27:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:27:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:27:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:26:40', tmtdew=19.05, humidity=27.42, cloud=0.0, wind=18.92, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:26:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:27:02.936 [DEBUG] [Thread-123147] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:03.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-28T11:27:03.035 [DEBUG] [Thread-123150] [transport.py] [_log()] starting thread (client mode): 0x2b9f2b90
2025-09-28T11:27:03.035 [DEBUG] [Thread-123150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:03.050 [DEBUG] [Thread-123150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:27:03.050 [INFO] [Thread-123150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:03.059 [DEBUG] [Thread-123150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:03.060 [DEBUG] [Thread-123150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:03.061 [DEBUG] [Thread-123150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:03.061 [DEBUG] [Thread-123150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:03.061 [DEBUG] [Thread-123150] [transport.py] [_log()] Compression: none
2025-09-28T11:27:03.061 [DEBUG] [Thread-123150] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:03.120 [DEBUG] [Thread-123150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:03.120 [DEBUG] [Thread-123150] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:03.121 [DEBUG] [Thread-123150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:27:03.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:27:03.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:03.175 [DEBUG] [Thread-123150] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:03.175 [DEBUG] [Thread-123150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:03.175 [DEBUG] [Thread-123150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:03.175 [DEBUG] [Thread-123150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:27:03.175 [DEBUG] [Thread-123150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:03.194 [INFO] [Thread-123150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:03.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:27:03.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:04.226 [DEBUG] [Thread-123150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:04.226 [DEBUG] [Thread-123150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:04.276 [DEBUG] [Thread-123150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:04.276 [DEBUG] [Thread-123150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:04.285 [DEBUG] [Thread-123150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:04.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:04.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-28T11:27:04.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-28T11:27:04.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:04.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:04.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:04.319 [DEBUG] [Thread-123150] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:06.000 [DEBUG] [Thread-123152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:14.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:27:14.322 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:27:14.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-28T11:27:14.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 27, 11), 18.88, 27.75, 0.0, 17.72, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:27:14.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:27:11
2025-09-28T11:27:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:27:15.180 [DEBUG] [Thread-123153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:15.246 [DEBUG] [Thread-123154] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T11:27:15.246 [DEBUG] [Thread-123154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:15.266 [DEBUG] [Thread-123154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:27:15.266 [INFO] [Thread-123154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] Compression: none
2025-09-28T11:27:15.269 [DEBUG] [Thread-123154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:15.283 [DEBUG] [Thread-123154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:15.283 [DEBUG] [Thread-123154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:15.283 [DEBUG] [Thread-123154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:27:15.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:27:15.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:15.284 [DEBUG] [Thread-123154] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:15.284 [DEBUG] [Thread-123154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:15.284 [DEBUG] [Thread-123154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:15.284 [DEBUG] [Thread-123154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:27:15.284 [DEBUG] [Thread-123154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:15.301 [INFO] [Thread-123154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:15.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:15.923 [DEBUG] [Thread-123154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:15.923 [DEBUG] [Thread-123154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:15.923 [DEBUG] [Thread-123154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:27:15.964 [DEBUG] [Thread-123154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:15.964 [DEBUG] [Thread-123154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:15.965 [DEBUG] [Thread-123154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:15.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:15.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:27:15.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:27:15.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:27:15.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:15.982 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:27:15.982 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.393487 -999.00  +18.20  15.46     34   +2.10 1 1 1 1 1   888    0 18.09 112.88 ----- 16.6 15.5 232.6 18.8 26.0 -27.7 24.9 -24.8 23.8 -24.3 24.8 -26.1
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.393487
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:27:15.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:27:15.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:27:11', tmtdew=18.88, humidity=27.75, cloud=0.0, wind=17.72, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:26:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:27:15.983 [DEBUG] [Thread-123154] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:16.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-28T11:27:16.070 [DEBUG] [Thread-123157] [transport.py] [_log()] starting thread (client mode): 0x2b988250
2025-09-28T11:27:16.070 [DEBUG] [Thread-123157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:16.085 [DEBUG] [Thread-123157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:27:16.085 [INFO] [Thread-123157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] Compression: none
2025-09-28T11:27:16.094 [DEBUG] [Thread-123157] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:16.149 [DEBUG] [Thread-123157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:16.149 [DEBUG] [Thread-123157] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:16.149 [DEBUG] [Thread-123157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:27:16.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:27:16.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:16.207 [DEBUG] [Thread-123157] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:16.207 [DEBUG] [Thread-123157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:16.207 [DEBUG] [Thread-123157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:16.207 [DEBUG] [Thread-123157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:27:16.207 [DEBUG] [Thread-123157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:16.221 [INFO] [Thread-123157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27: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-28T11:27:16.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:17.207 [DEBUG] [Thread-123157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:17.208 [DEBUG] [Thread-123157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:17.256 [DEBUG] [Thread-123157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:17.256 [DEBUG] [Thread-123157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:17.265 [DEBUG] [Thread-123157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:17.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27: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-28T11:27: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-28T11:27:17.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:17.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:17.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:17.297 [DEBUG] [Thread-123157] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:27.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:27:27.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:27:27.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-28T11:27:27.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 27, 11), 18.88, 27.75, 0.0, 17.72, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:27:27.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:27:11
2025-09-28T11:27:28.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:27:28.162 [DEBUG] [Thread-123159] [transport.py] [_log()] starting thread (client mode): 0x2b98b190
2025-09-28T11:27:28.162 [DEBUG] [Thread-123159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:28.182 [DEBUG] [Thread-123159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:27:28.182 [INFO] [Thread-123159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:28.185 [DEBUG] [Thread-123159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] Compression: none
2025-09-28T11:27:28.186 [DEBUG] [Thread-123159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:28.204 [DEBUG] [Thread-123159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:28.204 [DEBUG] [Thread-123159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:28.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:27:28.205 [DEBUG] [Thread-123159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:27:28.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:28.207 [DEBUG] [Thread-123159] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:28.207 [DEBUG] [Thread-123159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:28.207 [DEBUG] [Thread-123159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:28.207 [DEBUG] [Thread-123159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:27:28.207 [DEBUG] [Thread-123159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:28.243 [INFO] [Thread-123159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:28.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:28.848 [DEBUG] [Thread-123159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:28.848 [DEBUG] [Thread-123159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:28.848 [DEBUG] [Thread-123159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:27:28.889 [DEBUG] [Thread-123159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:28.889 [DEBUG] [Thread-123159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:28.892 [DEBUG] [Thread-123159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:28.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:28.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:27:28.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:27:28.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:27:28.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:28.911 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:27:28.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.393487 -999.00  +18.20  15.46     34   +2.10 1 1 1 1 1   888    0 18.09 112.88 ----- 16.6 15.5 232.6 18.8 26.0 -27.7 24.9 -24.8 23.8 -24.3 24.8 -26.1
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:27:28.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.393487
2025-09-28T11:27:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:27:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:27:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:27:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:27:28.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:27:28.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:27:11', tmtdew=18.88, humidity=27.75, cloud=0.0, wind=17.72, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:26:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:27:28.914 [DEBUG] [Thread-123159] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:28.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-28T11:27:29.008 [DEBUG] [Thread-123162] [transport.py] [_log()] starting thread (client mode): 0x2e38cdf0
2025-09-28T11:27:29.008 [DEBUG] [Thread-123162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:29.022 [DEBUG] [Thread-123162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:27:29.022 [INFO] [Thread-123162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:27:29.029 [DEBUG] [Thread-123162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] Compression: none
2025-09-28T11:27:29.030 [DEBUG] [Thread-123162] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:29.086 [DEBUG] [Thread-123162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:29.086 [DEBUG] [Thread-123162] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:29.087 [DEBUG] [Thread-123162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:27:29.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:27:29.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:29.142 [DEBUG] [Thread-123162] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:29.143 [DEBUG] [Thread-123162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:29.143 [DEBUG] [Thread-123162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:29.143 [DEBUG] [Thread-123162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:27:29.143 [DEBUG] [Thread-123162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:29.165 [INFO] [Thread-123162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:29.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-28T11:27:29.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:30.127 [DEBUG] [Thread-123162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:30.127 [DEBUG] [Thread-123162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:30.176 [DEBUG] [Thread-123162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:30.176 [DEBUG] [Thread-123162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:30.184 [DEBUG] [Thread-123162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:30.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:30.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-28T11:27:30.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-28T11:27:30.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:30.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:30.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:30.215 [DEBUG] [Thread-123162] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:30.219 [DEBUG] [Thread-123164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:37.537 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:37.538 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:40.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:27:40.210 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:27:40.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-28T11:27:40.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 27, 11), 18.88, 27.75, 0.0, 17.72, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:27:40.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:27:11
2025-09-28T11:27:40.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:27:41.081 [DEBUG] [Thread-123165] [transport.py] [_log()] starting thread (client mode): 0x2b98a6b0
2025-09-28T11:27:41.081 [DEBUG] [Thread-123165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:41.100 [DEBUG] [Thread-123165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:27:41.100 [INFO] [Thread-123165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:27:41.103 [DEBUG] [Thread-123165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] Compression: none
2025-09-28T11:27:41.104 [DEBUG] [Thread-123165] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:41.120 [DEBUG] [Thread-123165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:41.120 [DEBUG] [Thread-123165] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:41.120 [DEBUG] [Thread-123165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:27:41.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:27:41.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:41.122 [DEBUG] [Thread-123165] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:41.123 [DEBUG] [Thread-123165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:41.123 [DEBUG] [Thread-123165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:41.123 [DEBUG] [Thread-123165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:27:41.123 [DEBUG] [Thread-123165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:41.144 [INFO] [Thread-123165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:41.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:41.796 [DEBUG] [Thread-123165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:41.796 [DEBUG] [Thread-123165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:41.796 [DEBUG] [Thread-123165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:27:41.838 [DEBUG] [Thread-123165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:41.838 [DEBUG] [Thread-123165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:41.841 [DEBUG] [Thread-123165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:41.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:41.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:27:41.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:27:41.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:27:41.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:41.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:27:41.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:41.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:27:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.393835 -999.00  +18.20  16.32     33   +1.90 1 1 1 1 1   888    0 18.01 108.03 ----- 15.3 16.3 255.4 20.1 26.1 -27.6 24.9 -25.0 23.8 -24.6 24.7 -26.3
2025-09-28T11:27:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:27:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:27:41.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.393835
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:27:41.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:27:11', tmtdew=18.88, humidity=27.75, cloud=0.0, wind=17.72, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:27:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:27:41.867 [DEBUG] [Thread-123165] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:41.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-28T11:27:41.974 [DEBUG] [Thread-123168] [transport.py] [_log()] starting thread (client mode): 0x2b988670
2025-09-28T11:27:41.974 [DEBUG] [Thread-123168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:41.989 [DEBUG] [Thread-123168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:27:41.989 [INFO] [Thread-123168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:27:41.997 [DEBUG] [Thread-123168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:41.997 [DEBUG] [Thread-123168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:27:41.997 [DEBUG] [Thread-123168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:41.997 [DEBUG] [Thread-123168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:41.998 [DEBUG] [Thread-123168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:41.999 [DEBUG] [Thread-123168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:41.999 [DEBUG] [Thread-123168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:41.999 [DEBUG] [Thread-123168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:41.999 [DEBUG] [Thread-123168] [transport.py] [_log()] Compression: none
2025-09-28T11:27:41.999 [DEBUG] [Thread-123168] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:42.055 [DEBUG] [Thread-123168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:42.055 [DEBUG] [Thread-123168] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:42.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:27:42.056 [DEBUG] [Thread-123168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:27:42.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:42.110 [DEBUG] [Thread-123168] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:42.110 [DEBUG] [Thread-123168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:42.111 [DEBUG] [Thread-123168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:42.111 [DEBUG] [Thread-123168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:27:42.111 [DEBUG] [Thread-123168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:42.131 [INFO] [Thread-123168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:42.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-28T11:27:42.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:43.086 [DEBUG] [Thread-123168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:43.087 [DEBUG] [Thread-123168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:43.134 [DEBUG] [Thread-123168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:43.134 [DEBUG] [Thread-123168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:43.143 [DEBUG] [Thread-123168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:43.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27: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')
2025-09-28T11:27:43.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-28T11:27:43.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:43.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:43.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:43.178 [DEBUG] [Thread-123168] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:45.252 [DEBUG] [Thread-123170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:27:53.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:27:53.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:27:53.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-28T11:27:53.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 27, 43), 19.01, 27.45, 0.0, 15.51, 18.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:27:53.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:27:43
2025-09-28T11:27:53.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:27:54.086 [DEBUG] [Thread-123171] [transport.py] [_log()] starting thread (client mode): 0x30dde710
2025-09-28T11:27:54.086 [DEBUG] [Thread-123171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:54.107 [DEBUG] [Thread-123171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:27:54.107 [INFO] [Thread-123171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:27:54.110 [DEBUG] [Thread-123171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] Compression: none
2025-09-28T11:27:54.111 [DEBUG] [Thread-123171] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:54.126 [DEBUG] [Thread-123171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:54.126 [DEBUG] [Thread-123171] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:54.126 [DEBUG] [Thread-123171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:27:54.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:27:54.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:54.127 [DEBUG] [Thread-123171] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:54.127 [DEBUG] [Thread-123171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:54.127 [DEBUG] [Thread-123171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:54.127 [DEBUG] [Thread-123171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:27:54.127 [DEBUG] [Thread-123171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:54.137 [INFO] [Thread-123171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:54.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:54.736 [DEBUG] [Thread-123171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:54.737 [DEBUG] [Thread-123171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:54.737 [DEBUG] [Thread-123171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:27:54.778 [DEBUG] [Thread-123171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:54.778 [DEBUG] [Thread-123171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:54.781 [DEBUG] [Thread-123171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:54.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:54.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:27:54.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:27:54.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:27:54.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:54.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:27:54.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:54.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.393835 -999.00  +18.20  16.32     33   +1.90 1 1 1 1 1   888    0 18.01 108.03 ----- 15.3 16.3 255.4 20.1 26.1 -27.6 24.9 -25.0 23.8 -24.6 24.7 -26.3
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.393835
2025-09-28T11:27:54.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:27:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:27:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:27:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:27:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:27:54.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:27:43', tmtdew=19.01, humidity=27.45, cloud=0.0, wind=15.51, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:27:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:27:54.804 [DEBUG] [Thread-123171] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:27:54.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-28T11:27:54.898 [DEBUG] [Thread-123174] [transport.py] [_log()] starting thread (client mode): 0x30ddef20
2025-09-28T11:27:54.898 [DEBUG] [Thread-123174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:27:54.913 [DEBUG] [Thread-123174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:27:54.913 [INFO] [Thread-123174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:27:54.920 [DEBUG] [Thread-123174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:27:54.920 [DEBUG] [Thread-123174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] client lang: <none>
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] server lang: <none>
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] kex follows: False
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] Compression: none
2025-09-28T11:27:54.921 [DEBUG] [Thread-123174] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:27:54.978 [DEBUG] [Thread-123174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:27:54.978 [DEBUG] [Thread-123174] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:27:54.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:27:54.979 [DEBUG] [Thread-123174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:27:54.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:27:55.034 [DEBUG] [Thread-123174] [transport.py] [_log()] userauth is OK
2025-09-28T11:27:55.034 [DEBUG] [Thread-123174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:27:55.035 [DEBUG] [Thread-123174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:27:55.035 [DEBUG] [Thread-123174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:27:55.035 [DEBUG] [Thread-123174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:27:55.053 [INFO] [Thread-123174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:27:55.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-28T11:27:55.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:27:56.017 [DEBUG] [Thread-123174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:27:56.017 [DEBUG] [Thread-123174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:27:56.065 [DEBUG] [Thread-123174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:27:56.065 [DEBUG] [Thread-123174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:27:56.074 [DEBUG] [Thread-123174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:27:56.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:27:56.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-28T11:27: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') -> 00000000
2025-09-28T11:27:56.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:27:56.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:27:56.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:27:56.110 [DEBUG] [Thread-123174] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:00.286 [DEBUG] [Thread-123176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:06.052 [DEBUG] [Thread-123177 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:06.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:28:06.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:28:06.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-28T11:28:06.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 27, 43), 19.01, 27.45, 0.0, 15.51, 18.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:28:06.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:27:43
2025-09-28T11:28:06.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:28:06.986 [DEBUG] [Thread-123178] [transport.py] [_log()] starting thread (client mode): 0x30ddffd0
2025-09-28T11:28:06.986 [DEBUG] [Thread-123178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:07.003 [DEBUG] [Thread-123178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:28:07.004 [INFO] [Thread-123178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:28:07.005 [DEBUG] [Thread-123178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:07.006 [DEBUG] [Thread-123178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:07.007 [DEBUG] [Thread-123178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:07.007 [DEBUG] [Thread-123178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:07.007 [DEBUG] [Thread-123178] [transport.py] [_log()] Compression: none
2025-09-28T11:28:07.007 [DEBUG] [Thread-123178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:07.015 [DEBUG] [Thread-123178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:07.015 [DEBUG] [Thread-123178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:07.015 [DEBUG] [Thread-123178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:28:07.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:28:07.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:07.017 [DEBUG] [Thread-123178] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:07.017 [DEBUG] [Thread-123178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:07.017 [DEBUG] [Thread-123178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:07.017 [DEBUG] [Thread-123178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:28:07.017 [DEBUG] [Thread-123178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:07.034 [INFO] [Thread-123178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:07.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:07.662 [DEBUG] [Thread-123178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:07.662 [DEBUG] [Thread-123178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:07.663 [DEBUG] [Thread-123178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:28:07.703 [DEBUG] [Thread-123178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:07.704 [DEBUG] [Thread-123178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:07.706 [DEBUG] [Thread-123178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:07.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:07.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:28:07.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:28:07.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:28:07.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:07.729 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:28:07.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:07.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:07.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:28:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.394182 -999.00  +18.10  14.88     33   +1.80 1 1 1 1 1   888    0 18.17 105.35 ----- 13.3 14.9 251.2 18.1 26.0 -26.3 24.8 -25.2 23.8 -24.4 24.8 -26.1
2025-09-28T11:28:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:28:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:28:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.394182
2025-09-28T11:28:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:28:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:28:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:28:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:28:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:28:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:27:43', tmtdew=19.01, humidity=27.45, cloud=0.0, wind=15.51, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:27:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:28:07.732 [DEBUG] [Thread-123178] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:07.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-28T11:28:07.828 [DEBUG] [Thread-123181] [transport.py] [_log()] starting thread (client mode): 0x2b9de7d0
2025-09-28T11:28:07.828 [DEBUG] [Thread-123181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:07.844 [DEBUG] [Thread-123181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:28:07.844 [INFO] [Thread-123181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:28:07.851 [DEBUG] [Thread-123181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:07.852 [DEBUG] [Thread-123181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:07.853 [DEBUG] [Thread-123181] [transport.py] [_log()] Compression: none
2025-09-28T11:28:07.853 [DEBUG] [Thread-123181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:07.909 [DEBUG] [Thread-123181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:07.909 [DEBUG] [Thread-123181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:07.909 [DEBUG] [Thread-123181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:28:07.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:28:07.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:07.965 [DEBUG] [Thread-123181] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:07.966 [DEBUG] [Thread-123181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:07.966 [DEBUG] [Thread-123181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:07.966 [DEBUG] [Thread-123181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:28:07.966 [DEBUG] [Thread-123181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:07.979 [INFO] [Thread-123181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:07.979 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:28:07.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:08.957 [DEBUG] [Thread-123181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:08.958 [DEBUG] [Thread-123181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:09.005 [DEBUG] [Thread-123181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:09.005 [DEBUG] [Thread-123181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:09.014 [DEBUG] [Thread-123181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:09.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:09.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-28T11:28:09.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-28T11:28:09.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:09.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:09.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:09.056 [DEBUG] [Thread-123181] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:15.340 [DEBUG] [Thread-123183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:19.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:28:19.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:28:19.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-28T11:28:19.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 28, 15), 19.27, 26.95, 0.0, 17.01, 18.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:28:19.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:28:15
2025-09-28T11:28:19.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:28:19.913 [DEBUG] [Thread-123184] [transport.py] [_log()] starting thread (client mode): 0x2b9f2b90
2025-09-28T11:28:19.913 [DEBUG] [Thread-123184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:19.932 [DEBUG] [Thread-123184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:28:19.932 [INFO] [Thread-123184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:28:19.935 [DEBUG] [Thread-123184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:19.936 [DEBUG] [Thread-123184] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] Compression: none
2025-09-28T11:28:19.937 [DEBUG] [Thread-123184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:19.954 [DEBUG] [Thread-123184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:19.954 [DEBUG] [Thread-123184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:19.955 [DEBUG] [Thread-123184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:28:19.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:28:19.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:19.957 [DEBUG] [Thread-123184] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:19.957 [DEBUG] [Thread-123184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:19.957 [DEBUG] [Thread-123184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:19.957 [DEBUG] [Thread-123184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:28:19.957 [DEBUG] [Thread-123184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:19.994 [INFO] [Thread-123184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:19.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:20.630 [DEBUG] [Thread-123184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:20.630 [DEBUG] [Thread-123184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:20.630 [DEBUG] [Thread-123184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:28:20.671 [DEBUG] [Thread-123184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:20.672 [DEBUG] [Thread-123184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:20.675 [DEBUG] [Thread-123184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:20.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:20.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:28:20.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:28:20.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:28:20.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:20.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:28:20.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:20.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.394182 -999.00  +18.10  14.88     33   +1.80 1 1 1 1 1   888    0 18.17 105.35 ----- 13.3 14.9 251.2 18.1 26.0 -26.3 24.8 -25.2 23.8 -24.4 24.8 -26.1
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.394182
2025-09-28T11:28:20.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:28:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:28:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:28:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:28:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:28:20.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:28:15', tmtdew=19.27, humidity=26.95, cloud=0.0, wind=17.01, temperature=18.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:27:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:28:20.701 [DEBUG] [Thread-123184] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:20.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-28T11:28:20.796 [DEBUG] [Thread-123187] [transport.py] [_log()] starting thread (client mode): 0x30dde3b0
2025-09-28T11:28:20.796 [DEBUG] [Thread-123187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:20.816 [DEBUG] [Thread-123187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:28:20.816 [INFO] [Thread-123187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:20.824 [DEBUG] [Thread-123187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] Compression: none
2025-09-28T11:28:20.825 [DEBUG] [Thread-123187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:20.881 [DEBUG] [Thread-123187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:20.882 [DEBUG] [Thread-123187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:20.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:28:20.883 [DEBUG] [Thread-123187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:28:20.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:20.938 [DEBUG] [Thread-123187] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:20.938 [DEBUG] [Thread-123187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:20.938 [DEBUG] [Thread-123187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:20.939 [DEBUG] [Thread-123187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:28:20.939 [DEBUG] [Thread-123187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:20.957 [INFO] [Thread-123187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:20.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-28T11:28:20.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:21.931 [DEBUG] [Thread-123187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:21.931 [DEBUG] [Thread-123187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:21.979 [DEBUG] [Thread-123187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:21.979 [DEBUG] [Thread-123187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:21.987 [DEBUG] [Thread-123187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:21.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:21.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')
2025-09-28T11:28:22.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-28T11:28:22.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:22.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:22.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:22.024 [DEBUG] [Thread-123187] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:30.381 [DEBUG] [Thread-123189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:32.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:28:32.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:28:32.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-28T11:28:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 28, 15), 19.27, 26.95, 0.0, 17.01, 18.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:28:32.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:28:15
2025-09-28T11:28:32.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:28:32.886 [DEBUG] [Thread-123190] [transport.py] [_log()] starting thread (client mode): 0x2b9deb00
2025-09-28T11:28:32.887 [DEBUG] [Thread-123190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:32.907 [DEBUG] [Thread-123190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:28:32.907 [INFO] [Thread-123190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:32.911 [DEBUG] [Thread-123190] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] Compression: none
2025-09-28T11:28:32.912 [DEBUG] [Thread-123190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:32.928 [DEBUG] [Thread-123190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:32.929 [DEBUG] [Thread-123190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:32.929 [DEBUG] [Thread-123190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:28:32.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:28:32.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:32.931 [DEBUG] [Thread-123190] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:32.931 [DEBUG] [Thread-123190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:32.931 [DEBUG] [Thread-123190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:32.931 [DEBUG] [Thread-123190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:28:32.931 [DEBUG] [Thread-123190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:32.952 [INFO] [Thread-123190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:32.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:33.591 [DEBUG] [Thread-123190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:33.592 [DEBUG] [Thread-123190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:33.592 [DEBUG] [Thread-123190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:28:33.632 [DEBUG] [Thread-123190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:33.632 [DEBUG] [Thread-123190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:33.635 [DEBUG] [Thread-123190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:33.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:33.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:28:33.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:28:33.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:28:33.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:33.658 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:28:33.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.394182 -999.00  +18.10  14.88     33   +1.80 1 1 1 1 1   888    0 18.17 105.35 ----- 13.3 14.9 251.2 18.1 26.0 -26.3 24.8 -25.2 23.8 -24.4 24.8 -26.1
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:28:33.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.394182
2025-09-28T11:28:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:28:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:28:33.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:28:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:28:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:28:33.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:28:15', tmtdew=19.27, humidity=26.95, cloud=0.0, wind=17.01, temperature=18.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:27:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:28:33.661 [DEBUG] [Thread-123190] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:33.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-28T11:28:33.757 [DEBUG] [Thread-123193] [transport.py] [_log()] starting thread (client mode): 0x30dde680
2025-09-28T11:28:33.757 [DEBUG] [Thread-123193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:33.775 [DEBUG] [Thread-123193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:28:33.775 [INFO] [Thread-123193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:33.783 [DEBUG] [Thread-123193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] Compression: none
2025-09-28T11:28:33.784 [DEBUG] [Thread-123193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:33.844 [DEBUG] [Thread-123193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:33.845 [DEBUG] [Thread-123193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:33.845 [DEBUG] [Thread-123193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:28:33.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:28:33.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:33.902 [DEBUG] [Thread-123193] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:33.902 [DEBUG] [Thread-123193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:33.902 [DEBUG] [Thread-123193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:33.902 [DEBUG] [Thread-123193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:28:33.902 [DEBUG] [Thread-123193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:33.923 [INFO] [Thread-123193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:33.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-28T11:28:33.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:34.859 [DEBUG] [Thread-123193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:34.859 [DEBUG] [Thread-123193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:34.907 [DEBUG] [Thread-123193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:34.907 [DEBUG] [Thread-123193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:34.916 [DEBUG] [Thread-123193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:34.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:34.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')
2025-09-28T11:28:34.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-28T11:28:34.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:34.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:34.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:34.950 [DEBUG] [Thread-123193] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:37.679 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:37.679 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:44.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:28:44.953 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:28:44.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-28T11:28:45.415 [DEBUG] [Thread-123195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:28:45.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 28, 15), 19.27, 26.95, 0.0, 17.01, 18.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:28:45.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:28:15
2025-09-28T11:28:45.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:28:45.805 [DEBUG] [Thread-123196] [transport.py] [_log()] starting thread (client mode): 0x2b98beb0
2025-09-28T11:28:45.805 [DEBUG] [Thread-123196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:45.825 [DEBUG] [Thread-123196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:28:45.825 [INFO] [Thread-123196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:45.828 [DEBUG] [Thread-123196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:45.829 [DEBUG] [Thread-123196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:45.829 [DEBUG] [Thread-123196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:45.829 [DEBUG] [Thread-123196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:45.829 [DEBUG] [Thread-123196] [transport.py] [_log()] Compression: none
2025-09-28T11:28:45.829 [DEBUG] [Thread-123196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:45.845 [DEBUG] [Thread-123196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:45.845 [DEBUG] [Thread-123196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:45.846 [DEBUG] [Thread-123196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:28:45.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:28:45.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:45.848 [DEBUG] [Thread-123196] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:45.848 [DEBUG] [Thread-123196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:45.848 [DEBUG] [Thread-123196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:45.848 [DEBUG] [Thread-123196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:28:45.848 [DEBUG] [Thread-123196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:45.872 [INFO] [Thread-123196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:45.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:46.482 [DEBUG] [Thread-123196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:46.482 [DEBUG] [Thread-123196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:46.482 [DEBUG] [Thread-123196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:28:46.523 [DEBUG] [Thread-123196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:46.523 [DEBUG] [Thread-123196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:46.526 [DEBUG] [Thread-123196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:46.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:46.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:28:46.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:28:46.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:28:46.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:46.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:28:46.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:46.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.394530 -999.00  +17.90  12.92     33   +1.50 1 1 1 1 1   888    0 17.63 98.03 ----- 14.8 12.9 249.3 19.1 25.9 -27.6 24.8 -25.1 23.8 -24.6 24.7 -26.4
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.394530
2025-09-28T11:28:46.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:28:46.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:28:46.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:28:46.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:28:46.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:28:46.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:28:15', tmtdew=19.27, humidity=26.95, cloud=0.0, wind=17.01, temperature=18.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:28:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:28:46.552 [DEBUG] [Thread-123196] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:46.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-28T11:28:46.645 [DEBUG] [Thread-123199] [transport.py] [_log()] starting thread (client mode): 0x2b98bd00
2025-09-28T11:28:46.645 [DEBUG] [Thread-123199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:46.660 [DEBUG] [Thread-123199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:28:46.660 [INFO] [Thread-123199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:28:46.667 [DEBUG] [Thread-123199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] Compression: none
2025-09-28T11:28:46.668 [DEBUG] [Thread-123199] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:46.725 [DEBUG] [Thread-123199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:46.726 [DEBUG] [Thread-123199] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:46.726 [DEBUG] [Thread-123199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:28:46.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:28:46.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:46.789 [DEBUG] [Thread-123199] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:46.790 [DEBUG] [Thread-123199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:46.790 [DEBUG] [Thread-123199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:46.790 [DEBUG] [Thread-123199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:28:46.790 [DEBUG] [Thread-123199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:46.809 [INFO] [Thread-123199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:46.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:28:46.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:47.882 [DEBUG] [Thread-123199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:47.883 [DEBUG] [Thread-123199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:47.930 [DEBUG] [Thread-123199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:47.930 [DEBUG] [Thread-123199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:47.939 [DEBUG] [Thread-123199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:47.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:47.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-28T11:28:47.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-28T11:28:47.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:47.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:47.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:47.977 [DEBUG] [Thread-123199] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:57.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:28:57.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:28:57.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-28T11:28:58.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 28, 47), 19.74, 26.1, 0.0, 21.51, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:28:58.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:28:47
2025-09-28T11:28:58.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:28:58.841 [DEBUG] [Thread-123201] [transport.py] [_log()] starting thread (client mode): 0x2b9dca30
2025-09-28T11:28:58.841 [DEBUG] [Thread-123201] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:58.861 [DEBUG] [Thread-123201] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:28:58.861 [INFO] [Thread-123201] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:58.863 [DEBUG] [Thread-123201] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:58.864 [DEBUG] [Thread-123201] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:58.864 [DEBUG] [Thread-123201] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:58.864 [DEBUG] [Thread-123201] [transport.py] [_log()] Compression: none
2025-09-28T11:28:58.864 [DEBUG] [Thread-123201] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:58.880 [DEBUG] [Thread-123201] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:58.881 [DEBUG] [Thread-123201] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:58.881 [DEBUG] [Thread-123201] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:28:58.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:28:58.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:58.883 [DEBUG] [Thread-123201] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:58.883 [DEBUG] [Thread-123201] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:58.884 [DEBUG] [Thread-123201] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:58.884 [DEBUG] [Thread-123201] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:28:58.884 [DEBUG] [Thread-123201] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:58.907 [INFO] [Thread-123201] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:58.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:28:59.557 [DEBUG] [Thread-123201] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:28:59.557 [DEBUG] [Thread-123201] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:28:59.557 [DEBUG] [Thread-123201] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:28:59.598 [DEBUG] [Thread-123201] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:28:59.598 [DEBUG] [Thread-123201] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:28:59.601 [DEBUG] [Thread-123201] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:28:59.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:28:59.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:28:59.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:28:59.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:28:59.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:28:59.623 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:28:59.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:28:59.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.394530 -999.00  +17.90  12.92     33   +1.50 1 1 1 1 1   888    0 17.63 98.03 ----- 14.8 12.9 249.3 19.1 25.9 -27.6 24.8 -25.1 23.8 -24.6 24.7 -26.4
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.394530
2025-09-28T11:28:59.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:28:59.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:28:59.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:28:59.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:28:59.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:28:59.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:28:47', tmtdew=19.74, humidity=26.1, cloud=0.0, wind=21.51, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:28:07.392', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:28:59.625 [DEBUG] [Thread-123201] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:28:59.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-28T11:28:59.722 [DEBUG] [Thread-123204] [transport.py] [_log()] starting thread (client mode): 0x2e38fc40
2025-09-28T11:28:59.722 [DEBUG] [Thread-123204] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:28:59.737 [DEBUG] [Thread-123204] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:28:59.737 [INFO] [Thread-123204] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:28:59.744 [DEBUG] [Thread-123204] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] client lang: <none>
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] server lang: <none>
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] kex follows: False
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] Compression: none
2025-09-28T11:28:59.745 [DEBUG] [Thread-123204] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:28:59.801 [DEBUG] [Thread-123204] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:28:59.801 [DEBUG] [Thread-123204] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:28:59.801 [DEBUG] [Thread-123204] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:28:59.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:28:59.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:28:59.857 [DEBUG] [Thread-123204] [transport.py] [_log()] userauth is OK
2025-09-28T11:28:59.857 [DEBUG] [Thread-123204] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:28:59.857 [DEBUG] [Thread-123204] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:28:59.858 [DEBUG] [Thread-123204] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:28:59.858 [DEBUG] [Thread-123204] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:28:59.876 [INFO] [Thread-123204] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:28:59.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-28T11:28:59.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:00.444 [DEBUG] [Thread-123206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:00.840 [DEBUG] [Thread-123204] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:00.840 [DEBUG] [Thread-123204] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:00.888 [DEBUG] [Thread-123204] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:00.888 [DEBUG] [Thread-123204] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:00.897 [DEBUG] [Thread-123204] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:00.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:00.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-28T11:29:00.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-28T11:29:00.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:00.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:00.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:00.931 [DEBUG] [Thread-123204] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:06.105 [DEBUG] [Thread-123207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:10.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:29:10.933 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:29:10.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-28T11:29:11.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 28, 47), 19.74, 26.1, 0.0, 21.51, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:29:11.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:28:47
2025-09-28T11:29:11.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:29:11.781 [DEBUG] [Thread-123208] [transport.py] [_log()] starting thread (client mode): 0x2e38cfa0
2025-09-28T11:29:11.781 [DEBUG] [Thread-123208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:11.793 [DEBUG] [Thread-123208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:29:11.793 [INFO] [Thread-123208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] Compression: none
2025-09-28T11:29:11.796 [DEBUG] [Thread-123208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:11.803 [DEBUG] [Thread-123208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:11.803 [DEBUG] [Thread-123208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:11.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:29:11.804 [DEBUG] [Thread-123208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:29:11.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:11.805 [DEBUG] [Thread-123208] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:11.805 [DEBUG] [Thread-123208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:11.805 [DEBUG] [Thread-123208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:11.805 [DEBUG] [Thread-123208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:29:11.805 [DEBUG] [Thread-123208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:11.825 [INFO] [Thread-123208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:11.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:12.366 [DEBUG] [Thread-123208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:12.366 [DEBUG] [Thread-123208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:12.367 [DEBUG] [Thread-123208] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:29:12.407 [DEBUG] [Thread-123208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:12.407 [DEBUG] [Thread-123208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:12.410 [DEBUG] [Thread-123208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:12.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:12.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:29:12.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:29:12.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:29:12.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:12.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:29:12.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395224 -999.00  +18.00  19.90     32   +1.10 1 1 1 1 1   888    0 17.89 91.48 ----- 18.1 19.9 274.2 24.8 25.7 -27.2 24.7 -26.1 23.3 -27.2 24.7 -25.3
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:29:12.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395224
2025-09-28T11:29:12.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:29:12.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:29:12.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:29:12.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:29:12.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:29:12.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:28:47', tmtdew=19.74, humidity=26.1, cloud=0.0, wind=21.51, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:29:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:29:12.436 [DEBUG] [Thread-123208] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:12.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-28T11:29:12.531 [DEBUG] [Thread-123211] [transport.py] [_log()] starting thread (client mode): 0x2b9cde40
2025-09-28T11:29:12.531 [DEBUG] [Thread-123211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:12.546 [DEBUG] [Thread-123211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:29:12.546 [INFO] [Thread-123211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:29:12.553 [DEBUG] [Thread-123211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:12.554 [DEBUG] [Thread-123211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:12.555 [DEBUG] [Thread-123211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:12.556 [DEBUG] [Thread-123211] [transport.py] [_log()] Compression: none
2025-09-28T11:29:12.556 [DEBUG] [Thread-123211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:12.614 [DEBUG] [Thread-123211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:12.615 [DEBUG] [Thread-123211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:12.615 [DEBUG] [Thread-123211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:29:12.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:29:12.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:12.673 [DEBUG] [Thread-123211] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:12.673 [DEBUG] [Thread-123211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:12.674 [DEBUG] [Thread-123211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:12.674 [DEBUG] [Thread-123211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:29:12.674 [DEBUG] [Thread-123211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:12.696 [INFO] [Thread-123211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:12.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-28T11:29:12.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:13.663 [DEBUG] [Thread-123211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:13.667 [DEBUG] [Thread-123211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:13.712 [DEBUG] [Thread-123211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:13.713 [DEBUG] [Thread-123211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:13.722 [DEBUG] [Thread-123211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:13.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:13.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-28T11:29:13.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') -> 00000000
2025-09-28T11:29:13.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:13.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:13.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:13.756 [DEBUG] [Thread-123211] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:15.496 [DEBUG] [Thread-123213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:23.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:29:23.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:29:23.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-28T11:29:24.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 29, 19), 19.85, 25.87, 0.0, 22.39, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:29:24.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:29:19
2025-09-28T11:29:24.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:29:24.626 [DEBUG] [Thread-123214] [transport.py] [_log()] starting thread (client mode): 0x2e38e470
2025-09-28T11:29:24.626 [DEBUG] [Thread-123214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:24.646 [DEBUG] [Thread-123214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:29:24.646 [INFO] [Thread-123214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:29:24.649 [DEBUG] [Thread-123214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:24.649 [DEBUG] [Thread-123214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:29:24.649 [DEBUG] [Thread-123214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:24.649 [DEBUG] [Thread-123214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:24.649 [DEBUG] [Thread-123214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] Compression: none
2025-09-28T11:29:24.650 [DEBUG] [Thread-123214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:24.667 [DEBUG] [Thread-123214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:24.668 [DEBUG] [Thread-123214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:24.668 [DEBUG] [Thread-123214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:29:24.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:29:24.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:24.670 [DEBUG] [Thread-123214] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:24.670 [DEBUG] [Thread-123214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:24.670 [DEBUG] [Thread-123214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:24.670 [DEBUG] [Thread-123214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:29:24.670 [DEBUG] [Thread-123214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:24.688 [INFO] [Thread-123214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:24.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:25.277 [DEBUG] [Thread-123214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:25.278 [DEBUG] [Thread-123214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:25.278 [DEBUG] [Thread-123214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:29:25.318 [DEBUG] [Thread-123214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:25.318 [DEBUG] [Thread-123214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:25.322 [DEBUG] [Thread-123214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:25.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:25.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:29:25.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:29:25.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:29:25.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:25.344 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:29:25.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:25.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:25.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:29:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395224 -999.00  +18.00  19.90     32   +1.10 1 1 1 1 1   888    0 17.89 91.48 ----- 18.1 19.9 274.2 24.8 25.7 -27.2 24.7 -26.1 23.3 -27.2 24.7 -25.3
2025-09-28T11:29:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:29:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:29:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395224
2025-09-28T11:29:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:29:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:29:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:29:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:29:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:29:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:29:19', tmtdew=19.85, humidity=25.87, cloud=0.0, wind=22.39, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:29:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:29:25.346 [DEBUG] [Thread-123214] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:25.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-28T11:29:25.441 [DEBUG] [Thread-123217] [transport.py] [_log()] starting thread (client mode): 0x2b9aeb90
2025-09-28T11:29:25.441 [DEBUG] [Thread-123217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:25.455 [DEBUG] [Thread-123217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:29:25.455 [INFO] [Thread-123217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:29:25.463 [DEBUG] [Thread-123217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] Compression: none
2025-09-28T11:29:25.464 [DEBUG] [Thread-123217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:25.522 [DEBUG] [Thread-123217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:25.523 [DEBUG] [Thread-123217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:25.523 [DEBUG] [Thread-123217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:29:25.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:29:25.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:25.585 [DEBUG] [Thread-123217] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:25.586 [DEBUG] [Thread-123217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:25.586 [DEBUG] [Thread-123217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:25.586 [DEBUG] [Thread-123217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:29:25.586 [DEBUG] [Thread-123217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:25.606 [INFO] [Thread-123217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:25.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-28T11:29:25.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:26.602 [DEBUG] [Thread-123217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:26.602 [DEBUG] [Thread-123217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:26.650 [DEBUG] [Thread-123217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:26.650 [DEBUG] [Thread-123217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:26.659 [DEBUG] [Thread-123217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:26.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:26.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-28T11:29:26.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-28T11:29:26.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:26.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:26.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:26.694 [DEBUG] [Thread-123217] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:30.540 [DEBUG] [Thread-123219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:36.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:29:36.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:29:36.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-28T11:29:37.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 29, 19), 19.85, 25.87, 0.0, 22.39, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:29:37.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:29:19
2025-09-28T11:29:37.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:29:37.536 [DEBUG] [Thread-123220] [transport.py] [_log()] starting thread (client mode): 0x2e3fabf0
2025-09-28T11:29:37.536 [DEBUG] [Thread-123220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:37.556 [DEBUG] [Thread-123220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:29:37.556 [INFO] [Thread-123220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] Compression: none
2025-09-28T11:29:37.559 [DEBUG] [Thread-123220] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:37.575 [DEBUG] [Thread-123220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:37.576 [DEBUG] [Thread-123220] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:37.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:29:37.577 [DEBUG] [Thread-123220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:29:37.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:37.579 [DEBUG] [Thread-123220] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:37.579 [DEBUG] [Thread-123220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:37.579 [DEBUG] [Thread-123220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:37.579 [DEBUG] [Thread-123220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:29:37.579 [DEBUG] [Thread-123220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:37.603 [INFO] [Thread-123220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:37.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:37.820 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:37.821 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:38.249 [DEBUG] [Thread-123220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:38.249 [DEBUG] [Thread-123220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:38.250 [DEBUG] [Thread-123220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:29:38.290 [DEBUG] [Thread-123220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:38.291 [DEBUG] [Thread-123220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:38.294 [DEBUG] [Thread-123220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:38.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:38.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:29:38.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:29:38.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:29:38.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:38.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:29:38.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:38.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395224 -999.00  +18.00  19.90     32   +1.10 1 1 1 1 1   888    0 17.89 91.48 ----- 18.1 19.9 274.2 24.8 25.7 -27.2 24.7 -26.1 23.3 -27.2 24.7 -25.3
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395224
2025-09-28T11:29:38.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:29:38.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:29:38.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:29:38.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:29:38.319 [DEBUG] [Thread-123220] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:38.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:29:38.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:29:19', tmtdew=19.85, humidity=25.87, cloud=0.0, wind=22.39, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:29:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:29:38.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:29:38.431 [DEBUG] [Thread-123223] [transport.py] [_log()] starting thread (client mode): 0x30ddcc70
2025-09-28T11:29:38.431 [DEBUG] [Thread-123223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:38.446 [DEBUG] [Thread-123223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:29:38.446 [INFO] [Thread-123223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:38.454 [DEBUG] [Thread-123223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:38.455 [DEBUG] [Thread-123223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:38.455 [DEBUG] [Thread-123223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:38.455 [DEBUG] [Thread-123223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:38.455 [DEBUG] [Thread-123223] [transport.py] [_log()] Compression: none
2025-09-28T11:29:38.455 [DEBUG] [Thread-123223] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:38.512 [DEBUG] [Thread-123223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:38.512 [DEBUG] [Thread-123223] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:38.512 [DEBUG] [Thread-123223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:29:38.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:29:38.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:38.569 [DEBUG] [Thread-123223] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:38.569 [DEBUG] [Thread-123223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:38.569 [DEBUG] [Thread-123223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:38.569 [DEBUG] [Thread-123223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:29:38.569 [DEBUG] [Thread-123223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:38.589 [INFO] [Thread-123223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:38.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-28T11:29:38.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:39.633 [DEBUG] [Thread-123223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:39.633 [DEBUG] [Thread-123223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:39.681 [DEBUG] [Thread-123223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:39.681 [DEBUG] [Thread-123223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:39.691 [DEBUG] [Thread-123223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:39.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:39.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-28T11:29:39.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-28T11:29:39.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:39.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:39.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:39.726 [DEBUG] [Thread-123223] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:45.592 [DEBUG] [Thread-123225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:29:49.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:29:49.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:29:49.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:29:50.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 29, 19), 19.85, 25.87, 0.0, 22.39, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:29:50.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:29:19
2025-09-28T11:29:50.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:29:50.583 [DEBUG] [Thread-123226] [transport.py] [_log()] starting thread (client mode): 0x2b9aee60
2025-09-28T11:29:50.583 [DEBUG] [Thread-123226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:50.598 [DEBUG] [Thread-123226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:29:50.598 [INFO] [Thread-123226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:29:50.601 [DEBUG] [Thread-123226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:50.602 [DEBUG] [Thread-123226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:50.603 [DEBUG] [Thread-123226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:50.603 [DEBUG] [Thread-123226] [transport.py] [_log()] Compression: none
2025-09-28T11:29:50.603 [DEBUG] [Thread-123226] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:50.618 [DEBUG] [Thread-123226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:50.619 [DEBUG] [Thread-123226] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:50.619 [DEBUG] [Thread-123226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:29:50.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:29:50.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:50.621 [DEBUG] [Thread-123226] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:50.621 [DEBUG] [Thread-123226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:50.622 [DEBUG] [Thread-123226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:50.622 [DEBUG] [Thread-123226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:29:50.622 [DEBUG] [Thread-123226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:50.640 [INFO] [Thread-123226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:50.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:51.283 [DEBUG] [Thread-123226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:51.284 [DEBUG] [Thread-123226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:51.284 [DEBUG] [Thread-123226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:29:51.324 [DEBUG] [Thread-123226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:51.325 [DEBUG] [Thread-123226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:51.328 [DEBUG] [Thread-123226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:51.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:51.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:29:51.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:29:51.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:29:51.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:51.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:29:51.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:51.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:51.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:29:51.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395571 -999.00  +17.90  16.51     32   +1.10 1 1 1 1 1   888    0 17.83 88.56 ----- 15.7 16.5 268.8 19.1 25.7 -28.0 24.7 -25.0 23.4 -28.3 24.6 -25.5
2025-09-28T11:29:51.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:29:51.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:29:51.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395571
2025-09-28T11:29:51.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:29:51.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:29:51.355 [DEBUG] [Thread-123226] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:29:51.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:29:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:29:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:29:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:29:19', tmtdew=19.85, humidity=25.87, cloud=0.0, wind=22.39, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:29:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:29:51.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-28T11:29:51.461 [DEBUG] [Thread-123229] [transport.py] [_log()] starting thread (client mode): 0x2b9ae9b0
2025-09-28T11:29:51.461 [DEBUG] [Thread-123229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:29:51.476 [DEBUG] [Thread-123229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:29:51.476 [INFO] [Thread-123229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:29:51.483 [DEBUG] [Thread-123229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] client lang: <none>
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] server lang: <none>
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] kex follows: False
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:29:51.484 [DEBUG] [Thread-123229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:29:51.485 [DEBUG] [Thread-123229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:29:51.485 [DEBUG] [Thread-123229] [transport.py] [_log()] Compression: none
2025-09-28T11:29:51.485 [DEBUG] [Thread-123229] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:29:51.540 [DEBUG] [Thread-123229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:29:51.541 [DEBUG] [Thread-123229] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:29:51.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:29:51.541 [DEBUG] [Thread-123229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:29:51.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:29:51.597 [DEBUG] [Thread-123229] [transport.py] [_log()] userauth is OK
2025-09-28T11:29:51.597 [DEBUG] [Thread-123229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:29:51.597 [DEBUG] [Thread-123229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:29:51.597 [DEBUG] [Thread-123229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:29:51.597 [DEBUG] [Thread-123229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:29:51.616 [INFO] [Thread-123229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:29:51.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-28T11:29:51.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:29:52.616 [DEBUG] [Thread-123229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:29:52.616 [DEBUG] [Thread-123229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:29:52.664 [DEBUG] [Thread-123229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:29:52.664 [DEBUG] [Thread-123229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:29:52.672 [DEBUG] [Thread-123229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:29:52.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:29:52.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-28T11:29: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') -> 00000000
2025-09-28T11:29:52.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:29:52.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:29:52.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:29:52.703 [DEBUG] [Thread-123229] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:30:00.620 [DEBUG] [Thread-123231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:02.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:30:02.705 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:30:02.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:30:03.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 29, 51), 19.64, 26.34, 0.0, 14.61, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:30:03.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:29:51
2025-09-28T11:30:03.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:30:03.556 [DEBUG] [Thread-123232] [transport.py] [_log()] starting thread (client mode): 0x30ddfac0
2025-09-28T11:30:03.556 [DEBUG] [Thread-123232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:30:03.579 [DEBUG] [Thread-123232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:30:03.579 [INFO] [Thread-123232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:30:03.582 [DEBUG] [Thread-123232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] client lang: <none>
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] server lang: <none>
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] kex follows: False
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:30:03.583 [DEBUG] [Thread-123232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:30:03.584 [DEBUG] [Thread-123232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:30:03.584 [DEBUG] [Thread-123232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:30:03.584 [DEBUG] [Thread-123232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:30:03.584 [DEBUG] [Thread-123232] [transport.py] [_log()] Compression: none
2025-09-28T11:30:03.584 [DEBUG] [Thread-123232] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:30:03.599 [DEBUG] [Thread-123232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:30:03.599 [DEBUG] [Thread-123232] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:30:03.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:30:03.600 [DEBUG] [Thread-123232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:30:03.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:30:03.602 [DEBUG] [Thread-123232] [transport.py] [_log()] userauth is OK
2025-09-28T11:30:03.602 [DEBUG] [Thread-123232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:30:03.603 [DEBUG] [Thread-123232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:30:03.603 [DEBUG] [Thread-123232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:30:03.603 [DEBUG] [Thread-123232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:30:03.624 [INFO] [Thread-123232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:30:03.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:30:06.158 [DEBUG] [Thread-123234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:10.982 [DEBUG] [Thread-123232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:30:10.982 [DEBUG] [Thread-123232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:30:10.983 [DEBUG] [Thread-123232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:30:11.023 [DEBUG] [Thread-123232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:30:11.023 [DEBUG] [Thread-123232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:30:11.026 [DEBUG] [Thread-123232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:30:11.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:30:11.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:30:11.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:30:11.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:30:11.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:30:11.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:30:11.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:30:11.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395571 -999.00  +17.90  16.51     32   +1.10 1 1 1 1 1   888    0 17.83 88.56 ----- 15.7 16.5 268.8 19.1 25.7 -28.0 24.7 -25.0 23.4 -28.3 24.6 -25.5
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395571
2025-09-28T11:30:11.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:30:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:30:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:30:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:30:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:30:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:29:51', tmtdew=19.64, humidity=26.34, cloud=0.0, wind=14.61, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:29:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:30:11.054 [DEBUG] [Thread-123232] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:30:11.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-28T11:30:11.148 [DEBUG] [Thread-123236] [transport.py] [_log()] starting thread (client mode): 0x2b9892d0
2025-09-28T11:30:11.148 [DEBUG] [Thread-123236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:30:11.164 [DEBUG] [Thread-123236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:30:11.164 [INFO] [Thread-123236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:30:11.172 [DEBUG] [Thread-123236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:30:11.172 [DEBUG] [Thread-123236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:30:11.172 [DEBUG] [Thread-123236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:30:11.172 [DEBUG] [Thread-123236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] client lang: <none>
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] server lang: <none>
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] kex follows: False
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:30:11.173 [DEBUG] [Thread-123236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:30:11.174 [DEBUG] [Thread-123236] [transport.py] [_log()] Compression: none
2025-09-28T11:30:11.174 [DEBUG] [Thread-123236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:30:11.233 [DEBUG] [Thread-123236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:30:11.234 [DEBUG] [Thread-123236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:30:11.234 [DEBUG] [Thread-123236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:30:11.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:30:11.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:30:11.294 [DEBUG] [Thread-123236] [transport.py] [_log()] userauth is OK
2025-09-28T11:30:11.294 [DEBUG] [Thread-123236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:30:11.294 [DEBUG] [Thread-123236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:30:11.294 [DEBUG] [Thread-123236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:30:11.294 [DEBUG] [Thread-123236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:30:11.314 [INFO] [Thread-123236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:30:11.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-28T11:30:11.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:30:12.260 [DEBUG] [Thread-123236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:30:12.260 [DEBUG] [Thread-123236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:30:12.308 [DEBUG] [Thread-123236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:30:12.308 [DEBUG] [Thread-123236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:30:12.318 [DEBUG] [Thread-123236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:30:12.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:30:12.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-28T11:30:12.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-28T11:30:12.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:30:12.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:30:12.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:30:12.353 [DEBUG] [Thread-123236] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:30:15.671 [DEBUG] [Thread-123238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:22.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:30:22.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:30:22.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-28T11:30:22.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 29, 51), 19.64, 26.34, 0.0, 14.61, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:30:22.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:29:51
2025-09-28T11:30:23.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:30:23.224 [DEBUG] [Thread-123239] [transport.py] [_log()] starting thread (client mode): 0x2e3c1240
2025-09-28T11:30:23.224 [DEBUG] [Thread-123239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:30:23.245 [DEBUG] [Thread-123239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:30:23.245 [INFO] [Thread-123239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] client lang: <none>
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] server lang: <none>
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] kex follows: False
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] Compression: none
2025-09-28T11:30:23.248 [DEBUG] [Thread-123239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:30:23.265 [DEBUG] [Thread-123239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:30:23.266 [DEBUG] [Thread-123239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:30:23.266 [DEBUG] [Thread-123239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:30:23.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:30:23.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:30:23.268 [DEBUG] [Thread-123239] [transport.py] [_log()] userauth is OK
2025-09-28T11:30:23.268 [DEBUG] [Thread-123239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:30:23.269 [DEBUG] [Thread-123239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:30:23.269 [DEBUG] [Thread-123239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:30:23.269 [DEBUG] [Thread-123239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:30:23.291 [INFO] [Thread-123239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:30:23.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:30:23.880 [DEBUG] [Thread-123239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:30:23.881 [DEBUG] [Thread-123239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:30:23.881 [DEBUG] [Thread-123239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:30:23.922 [DEBUG] [Thread-123239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:30:23.922 [DEBUG] [Thread-123239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:30:23.924 [DEBUG] [Thread-123239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:30:23.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:30:23.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:30:23.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:30:23.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:30:23.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:30:23.934 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:30:23.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.395918 -999.00  +17.90   8.84     32   +1.20 1 1 1 1 1   888    0 17.75 86.95 ----- 13.9 8.8 276.5 14.8 25.8 -26.8 24.7 -25.2 23.6 -24.2 24.6 -26.0
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.395918
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:30:23.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:29:51', tmtdew=19.64, humidity=26.34, cloud=0.0, wind=14.61, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:30:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:30:23.935 [DEBUG] [Thread-123239] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:30:24.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-28T11:30:30.716 [DEBUG] [Thread-123242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:37.962 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:37.963 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:30:45.758 [DEBUG] [Thread-123243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:00.786 [DEBUG] [Thread-123244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:06.208 [DEBUG] [Thread-123245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:15.815 [DEBUG] [Thread-123246 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:30.845 [DEBUG] [Thread-123247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:38.112 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:38.113 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:31:45.875 [DEBUG] [Thread-123248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:00.903 [DEBUG] [Thread-123249 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:06.257 [DEBUG] [Thread-123250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:15.928 [DEBUG] [Thread-123251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:30.963 [DEBUG] [Thread-123252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:38.260 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:38.261 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:39.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-28T11:32:45.993 [DEBUG] [Thread-123253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:32:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:32:49.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:32:49.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-28T11:32:50.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 32, 31), 19.6, 26.4, 0.0, 21.17, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:32:50.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:32:31
2025-09-28T11:32:50.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:32:50.357 [DEBUG] [Thread-123254] [transport.py] [_log()] starting thread (client mode): 0x2e3dc400
2025-09-28T11:32:50.357 [DEBUG] [Thread-123254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:32:50.377 [DEBUG] [Thread-123254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:32:50.377 [INFO] [Thread-123254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] client lang: <none>
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] server lang: <none>
2025-09-28T11:32:50.380 [DEBUG] [Thread-123254] [transport.py] [_log()] kex follows: False
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] Compression: none
2025-09-28T11:32:50.381 [DEBUG] [Thread-123254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:32:50.397 [DEBUG] [Thread-123254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:32:50.398 [DEBUG] [Thread-123254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:32:50.398 [DEBUG] [Thread-123254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:32:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:32:50.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:32:50.400 [DEBUG] [Thread-123254] [transport.py] [_log()] userauth is OK
2025-09-28T11:32:50.401 [DEBUG] [Thread-123254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:32:50.401 [DEBUG] [Thread-123254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:32:50.401 [DEBUG] [Thread-123254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:32:50.401 [DEBUG] [Thread-123254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:32:50.424 [INFO] [Thread-123254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:32:50.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:32:51.066 [DEBUG] [Thread-123254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:32:51.066 [DEBUG] [Thread-123254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:32:51.066 [DEBUG] [Thread-123254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:32:51.107 [DEBUG] [Thread-123254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:32:51.107 [DEBUG] [Thread-123254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:32:51.110 [DEBUG] [Thread-123254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:32:51.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:32:51.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:32:51.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:32:51.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:32:51.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:32:51.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:32:51.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:32:51.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:32:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:32:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.397307 -999.00  +18.40   3.45     33   +1.90 1 1 1 1 1   888    0 17.22 62.45 ----- 6.4 3.5 181.8 12.2 25.9 -26.6 24.5 -25.4 23.6 -24.1 24.8 -25.1
2025-09-28T11:32:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:32:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:32:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.397307
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:32:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:32:31', tmtdew=19.6, humidity=26.4, cloud=0.0, wind=21.17, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:32:07.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:32:51.137 [DEBUG] [Thread-123254] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:32:51.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-28T11:32:51.236 [DEBUG] [Thread-123257] [transport.py] [_log()] starting thread (client mode): 0x2b9cd0c0
2025-09-28T11:32:51.236 [DEBUG] [Thread-123257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:32:51.254 [DEBUG] [Thread-123257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:32:51.254 [INFO] [Thread-123257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:32:51.263 [DEBUG] [Thread-123257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] client lang: <none>
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] server lang: <none>
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] kex follows: False
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] Compression: none
2025-09-28T11:32:51.264 [DEBUG] [Thread-123257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:32:51.318 [DEBUG] [Thread-123257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:32:51.319 [DEBUG] [Thread-123257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:32:51.319 [DEBUG] [Thread-123257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:32:51.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:32:51.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:32:51.378 [DEBUG] [Thread-123257] [transport.py] [_log()] userauth is OK
2025-09-28T11:32:51.378 [DEBUG] [Thread-123257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:32:51.378 [DEBUG] [Thread-123257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:32:51.378 [DEBUG] [Thread-123257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:32:51.378 [DEBUG] [Thread-123257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:32:51.393 [INFO] [Thread-123257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:32:51.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-28T11:32:51.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:32:52.385 [DEBUG] [Thread-123257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:32:52.385 [DEBUG] [Thread-123257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:32:52.437 [DEBUG] [Thread-123257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:32:52.437 [DEBUG] [Thread-123257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:32:52.449 [DEBUG] [Thread-123257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:32:52.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:32:52.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-28T11:32:52.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-28T11:32:52.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:32:52.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:32:52.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:32:52.493 [DEBUG] [Thread-123257] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:01.024 [DEBUG] [Thread-123259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:02.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:33:02.489 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:33:02.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-28T11:33:03.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 32, 31), 19.6, 26.4, 0.0, 21.17, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:33:03.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:32:31
2025-09-28T11:33:03.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:33:03.392 [DEBUG] [Thread-123260] [transport.py] [_log()] starting thread (client mode): 0x2e3c10f0
2025-09-28T11:33:03.392 [DEBUG] [Thread-123260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:03.412 [DEBUG] [Thread-123260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:33:03.413 [INFO] [Thread-123260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] Compression: none
2025-09-28T11:33:03.416 [DEBUG] [Thread-123260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:03.432 [DEBUG] [Thread-123260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:03.432 [DEBUG] [Thread-123260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:03.433 [DEBUG] [Thread-123260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:33:03.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:33:03.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:03.434 [DEBUG] [Thread-123260] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:03.434 [DEBUG] [Thread-123260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:03.434 [DEBUG] [Thread-123260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:03.434 [DEBUG] [Thread-123260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:33:03.434 [DEBUG] [Thread-123260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:03.452 [INFO] [Thread-123260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:03.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:04.088 [DEBUG] [Thread-123260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:04.088 [DEBUG] [Thread-123260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:04.088 [DEBUG] [Thread-123260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:33:04.129 [DEBUG] [Thread-123260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:04.129 [DEBUG] [Thread-123260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:04.132 [DEBUG] [Thread-123260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:04.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:04.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:33:04.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:33:04.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:33:04.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:04.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:33:04.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.397307 -999.00  +18.40   3.45     33   +1.90 1 1 1 1 1   888    0 17.22 62.45 ----- 6.4 3.5 181.8 12.2 25.9 -26.6 24.5 -25.4 23.6 -24.1 24.8 -25.1
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.397307
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:33:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:32:31', tmtdew=19.6, humidity=26.4, cloud=0.0, wind=21.17, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:32:07.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:33:04.151 [DEBUG] [Thread-123260] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:04.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:33:04.240 [DEBUG] [Thread-123263] [transport.py] [_log()] starting thread (client mode): 0x2b9ac460
2025-09-28T11:33:04.240 [DEBUG] [Thread-123263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:04.255 [DEBUG] [Thread-123263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:33:04.255 [INFO] [Thread-123263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] Compression: none
2025-09-28T11:33:04.263 [DEBUG] [Thread-123263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:04.318 [DEBUG] [Thread-123263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:04.318 [DEBUG] [Thread-123263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:04.318 [DEBUG] [Thread-123263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:33:04.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:33:04.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:04.375 [DEBUG] [Thread-123263] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:04.375 [DEBUG] [Thread-123263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:04.375 [DEBUG] [Thread-123263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:04.375 [DEBUG] [Thread-123263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:33:04.375 [DEBUG] [Thread-123263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:04.391 [INFO] [Thread-123263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:04.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-28T11:33:04.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:05.390 [DEBUG] [Thread-123263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:05.390 [DEBUG] [Thread-123263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:05.439 [DEBUG] [Thread-123263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:05.440 [DEBUG] [Thread-123263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:05.450 [DEBUG] [Thread-123263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:05.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:05.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-28T11:33:05.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-28T11:33:05.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:05.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:05.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:05.488 [DEBUG] [Thread-123263] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:06.315 [DEBUG] [Thread-123265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:15.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:33:15.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:33:15.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-28T11:33:16.070 [DEBUG] [Thread-123266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:16.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 33, 2), 19.33, 26.85, 0.0, 18.02, 18.05, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:33:16.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:33:02
2025-09-28T11:33:16.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:33:16.339 [DEBUG] [Thread-123267] [transport.py] [_log()] starting thread (client mode): 0x2b9ae920
2025-09-28T11:33:16.339 [DEBUG] [Thread-123267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:16.359 [DEBUG] [Thread-123267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:33:16.359 [INFO] [Thread-123267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:33:16.362 [DEBUG] [Thread-123267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:16.362 [DEBUG] [Thread-123267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] Compression: none
2025-09-28T11:33:16.363 [DEBUG] [Thread-123267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:16.374 [DEBUG] [Thread-123267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:16.374 [DEBUG] [Thread-123267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:16.375 [DEBUG] [Thread-123267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:33:16.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:33:16.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:16.377 [DEBUG] [Thread-123267] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:16.377 [DEBUG] [Thread-123267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:16.377 [DEBUG] [Thread-123267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:16.377 [DEBUG] [Thread-123267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:33:16.377 [DEBUG] [Thread-123267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:16.401 [INFO] [Thread-123267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:16.402 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:17.032 [DEBUG] [Thread-123267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:17.032 [DEBUG] [Thread-123267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:17.033 [DEBUG] [Thread-123267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:33:17.073 [DEBUG] [Thread-123267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:17.074 [DEBUG] [Thread-123267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:17.076 [DEBUG] [Thread-123267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:17.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:17.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:33:17.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:33:17.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:33:17.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:17.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:33:17.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:17.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398002 -999.00  +18.60  19.54     31   +1.20 1 1 1 1 1   888    0 17.33 54.47 ----- 19.8 19.5 263.0 23.1 25.9 -27.2 24.7 -25.1 23.8 -25.8 24.9 -25.6
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398002
2025-09-28T11:33:17.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:33:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:33:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:33:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:33:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:33:17.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:33:02', tmtdew=19.33, humidity=26.85, cloud=0.0, wind=18.02, temperature=18.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:33:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:33:17.109 [DEBUG] [Thread-123267] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:17.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:33:17.204 [DEBUG] [Thread-123270] [transport.py] [_log()] starting thread (client mode): 0x2e3de620
2025-09-28T11:33:17.204 [DEBUG] [Thread-123270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:17.219 [DEBUG] [Thread-123270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:33:17.219 [INFO] [Thread-123270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:33:17.226 [DEBUG] [Thread-123270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:17.227 [DEBUG] [Thread-123270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:17.228 [DEBUG] [Thread-123270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:17.229 [DEBUG] [Thread-123270] [transport.py] [_log()] Compression: none
2025-09-28T11:33:17.229 [DEBUG] [Thread-123270] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:17.288 [DEBUG] [Thread-123270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:17.288 [DEBUG] [Thread-123270] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:17.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:33:17.290 [DEBUG] [Thread-123270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:33:17.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:17.344 [DEBUG] [Thread-123270] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:17.344 [DEBUG] [Thread-123270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:17.344 [DEBUG] [Thread-123270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:17.344 [DEBUG] [Thread-123270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:33:17.344 [DEBUG] [Thread-123270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:17.368 [INFO] [Thread-123270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:17.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-28T11:33:17.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:18.343 [DEBUG] [Thread-123270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:18.343 [DEBUG] [Thread-123270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:18.391 [DEBUG] [Thread-123270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:18.391 [DEBUG] [Thread-123270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:18.400 [DEBUG] [Thread-123270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:18.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:18.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')
2025-09-28T11:33:18.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-28T11:33:18.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:18.426 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:18.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:18.434 [DEBUG] [Thread-123270] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:33:28.437 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:33:28.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-28T11:33:29.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 33, 2), 19.33, 26.85, 0.0, 18.02, 18.05, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:33:29.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:33:02
2025-09-28T11:33:29.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:33:29.289 [DEBUG] [Thread-123272] [transport.py] [_log()] starting thread (client mode): 0x2e3de290
2025-09-28T11:33:29.290 [DEBUG] [Thread-123272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:29.309 [DEBUG] [Thread-123272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:33:29.309 [INFO] [Thread-123272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] Compression: none
2025-09-28T11:33:29.312 [DEBUG] [Thread-123272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:29.334 [DEBUG] [Thread-123272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:29.335 [DEBUG] [Thread-123272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:29.335 [DEBUG] [Thread-123272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:33:29.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:33:29.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:29.338 [DEBUG] [Thread-123272] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:29.338 [DEBUG] [Thread-123272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:29.338 [DEBUG] [Thread-123272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:29.338 [DEBUG] [Thread-123272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:33:29.338 [DEBUG] [Thread-123272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:29.360 [INFO] [Thread-123272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:29.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:30.019 [DEBUG] [Thread-123272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:30.019 [DEBUG] [Thread-123272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:30.019 [DEBUG] [Thread-123272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:33:30.060 [DEBUG] [Thread-123272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:30.061 [DEBUG] [Thread-123272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:30.064 [DEBUG] [Thread-123272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:30.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:30.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:33:30.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:33:30.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:33:30.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:30.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:33:30.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:30.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:30.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:33:30.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398002 -999.00  +18.60  19.54     31   +1.20 1 1 1 1 1   888    0 17.33 54.47 ----- 19.8 19.5 263.0 23.1 25.9 -27.2 24.7 -25.1 23.8 -25.8 24.9 -25.6
2025-09-28T11:33:30.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:33:30.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:33:30.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398002
2025-09-28T11:33:30.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:33:30.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:33:30.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:33:30.090 [DEBUG] [Thread-123272] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:30.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:33:30.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:33:30.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:33:02', tmtdew=19.33, humidity=26.85, cloud=0.0, wind=18.02, temperature=18.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:33:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:33:30.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-28T11:33:30.188 [DEBUG] [Thread-123275] [transport.py] [_log()] starting thread (client mode): 0x2e3dcca0
2025-09-28T11:33:30.188 [DEBUG] [Thread-123275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:30.203 [DEBUG] [Thread-123275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:33:30.204 [INFO] [Thread-123275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:33:30.211 [DEBUG] [Thread-123275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] Compression: none
2025-09-28T11:33:30.212 [DEBUG] [Thread-123275] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:30.271 [DEBUG] [Thread-123275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:30.271 [DEBUG] [Thread-123275] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:30.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:33:30.272 [DEBUG] [Thread-123275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:33:30.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:30.327 [DEBUG] [Thread-123275] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:30.327 [DEBUG] [Thread-123275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:30.328 [DEBUG] [Thread-123275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:30.328 [DEBUG] [Thread-123275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:33:30.328 [DEBUG] [Thread-123275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:30.348 [INFO] [Thread-123275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:30.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-28T11:33:30.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:31.101 [DEBUG] [Thread-123277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:31.360 [DEBUG] [Thread-123275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:31.361 [DEBUG] [Thread-123275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:31.408 [DEBUG] [Thread-123275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:31.408 [DEBUG] [Thread-123275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:31.417 [DEBUG] [Thread-123275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:31.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:31.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-28T11:33:31.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-28T11:33:31.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:31.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:31.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:31.452 [DEBUG] [Thread-123275] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:38.404 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:38.405 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:41.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:33:41.455 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:33:41.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-28T11:33:42.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 33, 34), 19.96, 25.52, 0.0, 17.73, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:33:42.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:33:34
2025-09-28T11:33:42.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:33:42.321 [DEBUG] [Thread-123278] [transport.py] [_log()] starting thread (client mode): 0x2e3fb7f0
2025-09-28T11:33:42.321 [DEBUG] [Thread-123278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:42.349 [DEBUG] [Thread-123278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:33:42.349 [INFO] [Thread-123278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:33:42.351 [DEBUG] [Thread-123278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] Compression: none
2025-09-28T11:33:42.352 [DEBUG] [Thread-123278] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:42.367 [DEBUG] [Thread-123278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:42.368 [DEBUG] [Thread-123278] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:42.368 [DEBUG] [Thread-123278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:33:42.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:33:42.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:42.370 [DEBUG] [Thread-123278] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:42.370 [DEBUG] [Thread-123278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:42.371 [DEBUG] [Thread-123278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:42.371 [DEBUG] [Thread-123278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:33:42.371 [DEBUG] [Thread-123278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:42.405 [INFO] [Thread-123278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:42.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:42.990 [DEBUG] [Thread-123278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:42.990 [DEBUG] [Thread-123278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:42.990 [DEBUG] [Thread-123278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:33:43.031 [DEBUG] [Thread-123278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:43.031 [DEBUG] [Thread-123278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:43.034 [DEBUG] [Thread-123278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:43.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:43.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:33:43.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:33:43.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:33:43.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:43.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:33:43.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:43.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398002 -999.00  +18.60  19.54     31   +1.20 1 1 1 1 1   888    0 17.33 54.47 ----- 19.8 19.5 263.0 23.1 25.9 -27.2 24.7 -25.1 23.8 -25.8 24.9 -25.6
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398002
2025-09-28T11:33:43.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:33:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:33:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:33:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:33:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:33:43.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:33:34', tmtdew=19.96, humidity=25.52, cloud=0.0, wind=17.73, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:33:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:33:43.062 [DEBUG] [Thread-123278] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:43.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-28T11:33:43.152 [DEBUG] [Thread-123281] [transport.py] [_log()] starting thread (client mode): 0x2e3c35b0
2025-09-28T11:33:43.152 [DEBUG] [Thread-123281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:43.167 [DEBUG] [Thread-123281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:33:43.167 [INFO] [Thread-123281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:43.176 [DEBUG] [Thread-123281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] Compression: none
2025-09-28T11:33:43.177 [DEBUG] [Thread-123281] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:43.235 [DEBUG] [Thread-123281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:43.235 [DEBUG] [Thread-123281] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:43.236 [DEBUG] [Thread-123281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:33:43.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:33:43.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:43.291 [DEBUG] [Thread-123281] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:43.291 [DEBUG] [Thread-123281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:43.291 [DEBUG] [Thread-123281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:43.292 [DEBUG] [Thread-123281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:33:43.292 [DEBUG] [Thread-123281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:43.311 [INFO] [Thread-123281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:43.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-28T11:33:43.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:44.260 [DEBUG] [Thread-123281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:44.261 [DEBUG] [Thread-123281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:44.308 [DEBUG] [Thread-123281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:44.308 [DEBUG] [Thread-123281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:44.317 [DEBUG] [Thread-123281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:44.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:44.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-28T11:33: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-28T11:33:44.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:44.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:44.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:44.356 [DEBUG] [Thread-123281] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:46.142 [DEBUG] [Thread-123283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:33:54.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:33:54.354 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:33:54.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-28T11:33:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 33, 34), 19.96, 25.52, 0.0, 17.73, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:33:54.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:33:34
2025-09-28T11:33:55.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:33:55.202 [DEBUG] [Thread-123284] [transport.py] [_log()] starting thread (client mode): 0x2b9aea10
2025-09-28T11:33:55.202 [DEBUG] [Thread-123284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:55.225 [DEBUG] [Thread-123284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:33:55.225 [INFO] [Thread-123284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:33:55.228 [DEBUG] [Thread-123284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:55.228 [DEBUG] [Thread-123284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:33:55.228 [DEBUG] [Thread-123284] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:55.228 [DEBUG] [Thread-123284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:55.229 [DEBUG] [Thread-123284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:55.230 [DEBUG] [Thread-123284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:55.230 [DEBUG] [Thread-123284] [transport.py] [_log()] Compression: none
2025-09-28T11:33:55.230 [DEBUG] [Thread-123284] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:55.249 [DEBUG] [Thread-123284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:55.250 [DEBUG] [Thread-123284] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:55.250 [DEBUG] [Thread-123284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:33:55.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:33:55.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:55.252 [DEBUG] [Thread-123284] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:55.253 [DEBUG] [Thread-123284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:55.253 [DEBUG] [Thread-123284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:55.253 [DEBUG] [Thread-123284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:33:55.253 [DEBUG] [Thread-123284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:55.290 [INFO] [Thread-123284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:55.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:55.934 [DEBUG] [Thread-123284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:55.934 [DEBUG] [Thread-123284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:55.934 [DEBUG] [Thread-123284] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:33:55.976 [DEBUG] [Thread-123284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:55.976 [DEBUG] [Thread-123284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:55.979 [DEBUG] [Thread-123284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:55.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:55.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:33:55.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:33:55.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:33:56.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:56.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:33:56.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398349 -999.00  +18.50  19.30     31   +1.10 1 1 1 1 1   888    0 17.50 55.33 ----- 15.2 19.3 245.4 21.8 25.9 -27.7 24.7 -26.1 23.8 -24.8 24.8 -27.4
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:33:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398349
2025-09-28T11:33:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:33:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:33:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:33:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:33:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:33:56.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:33:34', tmtdew=19.96, humidity=25.52, cloud=0.0, wind=17.73, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:33:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:33:56.006 [DEBUG] [Thread-123284] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:33:56.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-28T11:33:56.105 [DEBUG] [Thread-123287] [transport.py] [_log()] starting thread (client mode): 0x2b9ad480
2025-09-28T11:33:56.105 [DEBUG] [Thread-123287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:33:56.120 [DEBUG] [Thread-123287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:33:56.120 [INFO] [Thread-123287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:33:56.127 [DEBUG] [Thread-123287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] client lang: <none>
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] server lang: <none>
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] kex follows: False
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:33:56.128 [DEBUG] [Thread-123287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:33:56.129 [DEBUG] [Thread-123287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:33:56.129 [DEBUG] [Thread-123287] [transport.py] [_log()] Compression: none
2025-09-28T11:33:56.129 [DEBUG] [Thread-123287] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:33:56.187 [DEBUG] [Thread-123287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:33:56.187 [DEBUG] [Thread-123287] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:33:56.188 [DEBUG] [Thread-123287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:33:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:33:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:33:56.243 [DEBUG] [Thread-123287] [transport.py] [_log()] userauth is OK
2025-09-28T11:33:56.243 [DEBUG] [Thread-123287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:33:56.243 [DEBUG] [Thread-123287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:33:56.243 [DEBUG] [Thread-123287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:33:56.243 [DEBUG] [Thread-123287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:33:56.262 [INFO] [Thread-123287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:33:56.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-28T11:33:56.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:33:57.201 [DEBUG] [Thread-123287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:33:57.201 [DEBUG] [Thread-123287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:33:57.255 [DEBUG] [Thread-123287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:33:57.255 [DEBUG] [Thread-123287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:33:57.269 [DEBUG] [Thread-123287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:33:57.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:33:57.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-28T11:33:57.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-28T11:33:57.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:33:57.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:33:57.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:33:57.305 [DEBUG] [Thread-123287] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:01.186 [DEBUG] [Thread-123289 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:06.365 [DEBUG] [Thread-123290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:07.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:34:07.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:34:07.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-28T11:34:07.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 33, 34), 19.96, 25.52, 0.0, 17.73, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:34:07.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:33:34
2025-09-28T11:34:08.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:34:08.213 [DEBUG] [Thread-123291] [transport.py] [_log()] starting thread (client mode): 0x2b9adab0
2025-09-28T11:34:08.213 [DEBUG] [Thread-123291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:08.233 [DEBUG] [Thread-123291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:34:08.233 [INFO] [Thread-123291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] Compression: none
2025-09-28T11:34:08.236 [DEBUG] [Thread-123291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:08.252 [DEBUG] [Thread-123291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:08.252 [DEBUG] [Thread-123291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:08.252 [DEBUG] [Thread-123291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:34:08.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:34:08.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:08.252 [DEBUG] [Thread-123291] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:08.252 [DEBUG] [Thread-123291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:08.253 [DEBUG] [Thread-123291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:08.253 [DEBUG] [Thread-123291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:34:08.253 [DEBUG] [Thread-123291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:08.261 [INFO] [Thread-123291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:08.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:08.874 [DEBUG] [Thread-123291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:08.874 [DEBUG] [Thread-123291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:08.874 [DEBUG] [Thread-123291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:34:08.915 [DEBUG] [Thread-123291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:08.916 [DEBUG] [Thread-123291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:08.919 [DEBUG] [Thread-123291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:08.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:08.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:34:08.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:34:08.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:34:08.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:08.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:34:08.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:08.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398349 -999.00  +18.50  19.30     31   +1.10 1 1 1 1 1   888    0 17.50 55.33 ----- 15.2 19.3 245.4 21.8 25.9 -27.7 24.7 -26.1 23.8 -24.8 24.8 -27.4
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398349
2025-09-28T11:34:08.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:34:08.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:34:08.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:34:08.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:34:08.941 [DEBUG] [Thread-123291] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:08.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:34:08.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:33:34', tmtdew=19.96, humidity=25.52, cloud=0.0, wind=17.73, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:33:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:34:09.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-28T11:34:09.257 [DEBUG] [Thread-123294] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc40
2025-09-28T11:34:09.257 [DEBUG] [Thread-123294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:09.271 [DEBUG] [Thread-123294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:34:09.271 [INFO] [Thread-123294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:34:09.278 [DEBUG] [Thread-123294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:09.279 [DEBUG] [Thread-123294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:09.280 [DEBUG] [Thread-123294] [transport.py] [_log()] Compression: none
2025-09-28T11:34:09.280 [DEBUG] [Thread-123294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:09.343 [DEBUG] [Thread-123294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:09.343 [DEBUG] [Thread-123294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:09.344 [DEBUG] [Thread-123294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:34:09.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:34:09.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:09.399 [DEBUG] [Thread-123294] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:09.399 [DEBUG] [Thread-123294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:09.399 [DEBUG] [Thread-123294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:09.399 [DEBUG] [Thread-123294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:34:09.399 [DEBUG] [Thread-123294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:09.418 [INFO] [Thread-123294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:09.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-28T11:34:09.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:10.363 [DEBUG] [Thread-123294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:10.363 [DEBUG] [Thread-123294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:10.411 [DEBUG] [Thread-123294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:10.411 [DEBUG] [Thread-123294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:10.422 [DEBUG] [Thread-123294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:10.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:10.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-28T11:34:10.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') -> 00000000
2025-09-28T11:34:10.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:10.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:10.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:10.456 [DEBUG] [Thread-123294] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:16.222 [DEBUG] [Thread-123296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:20.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:34:20.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:34:20.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:34:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 34, 6), 20.0, 25.45, 0.0, 16.75, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:34:21.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:34:06
2025-09-28T11:34:21.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:34:21.322 [DEBUG] [Thread-123297] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T11:34:21.322 [DEBUG] [Thread-123297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:21.341 [DEBUG] [Thread-123297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:34:21.341 [INFO] [Thread-123297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:34:21.344 [DEBUG] [Thread-123297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:21.345 [DEBUG] [Thread-123297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:21.346 [DEBUG] [Thread-123297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:21.346 [DEBUG] [Thread-123297] [transport.py] [_log()] Compression: none
2025-09-28T11:34:21.346 [DEBUG] [Thread-123297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:21.364 [DEBUG] [Thread-123297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:21.364 [DEBUG] [Thread-123297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:21.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:34:21.365 [DEBUG] [Thread-123297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:34:21.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:21.367 [DEBUG] [Thread-123297] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:21.367 [DEBUG] [Thread-123297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:21.367 [DEBUG] [Thread-123297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:21.368 [DEBUG] [Thread-123297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:34:21.368 [DEBUG] [Thread-123297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:21.391 [INFO] [Thread-123297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:21.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:22.017 [DEBUG] [Thread-123297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:22.017 [DEBUG] [Thread-123297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:22.017 [DEBUG] [Thread-123297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:34:22.058 [DEBUG] [Thread-123297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:22.059 [DEBUG] [Thread-123297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:22.062 [DEBUG] [Thread-123297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:22.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:22.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:34:22.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:34:22.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:34:22.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:22.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:34:22.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:22.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:22.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:34:22.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398696 -999.00  +18.20  14.84     31   +1.10 1 1 1 1 1   888    0 17.43 59.50 ----- 12.8 14.8 255.6 22.8 25.8 -26.2 24.6 -25.5 23.8 -24.1 24.8 -25.0
2025-09-28T11:34:22.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:34:22.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:34:22.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398696
2025-09-28T11:34:22.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:34:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:34:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:34:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:34:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:34:22.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:34:06', tmtdew=20.0, humidity=25.45, cloud=0.0, wind=16.75, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:34:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:34:22.086 [DEBUG] [Thread-123297] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:22.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-28T11:34:22.183 [DEBUG] [Thread-123300] [transport.py] [_log()] starting thread (client mode): 0x2e3f9030
2025-09-28T11:34:22.183 [DEBUG] [Thread-123300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:22.198 [DEBUG] [Thread-123300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:34:22.198 [INFO] [Thread-123300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] Compression: none
2025-09-28T11:34:22.206 [DEBUG] [Thread-123300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:22.263 [DEBUG] [Thread-123300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:22.263 [DEBUG] [Thread-123300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:22.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:34:22.264 [DEBUG] [Thread-123300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:34:22.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:22.320 [DEBUG] [Thread-123300] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:22.320 [DEBUG] [Thread-123300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:22.320 [DEBUG] [Thread-123300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:22.320 [DEBUG] [Thread-123300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:34:22.320 [DEBUG] [Thread-123300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:22.339 [INFO] [Thread-123300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:22.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-28T11:34:22.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:23.284 [DEBUG] [Thread-123300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:23.284 [DEBUG] [Thread-123300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:23.333 [DEBUG] [Thread-123300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:23.333 [DEBUG] [Thread-123300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:23.342 [DEBUG] [Thread-123300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:23.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:23.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-28T11:34:23.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-28T11:34:23.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:23.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:23.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:23.378 [DEBUG] [Thread-123300] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:31.253 [DEBUG] [Thread-123302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:33.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:34:33.380 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:34:33.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-28T11:34:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 34, 6), 20.0, 25.45, 0.0, 16.75, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:34:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:34:06
2025-09-28T11:34:34.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:34:34.234 [DEBUG] [Thread-123303] [transport.py] [_log()] starting thread (client mode): 0x2b9dc820
2025-09-28T11:34:34.234 [DEBUG] [Thread-123303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:34.254 [DEBUG] [Thread-123303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:34:34.254 [INFO] [Thread-123303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:34:34.255 [DEBUG] [Thread-123303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:34.255 [DEBUG] [Thread-123303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:34:34.255 [DEBUG] [Thread-123303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] Compression: none
2025-09-28T11:34:34.256 [DEBUG] [Thread-123303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:34.264 [DEBUG] [Thread-123303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:34.264 [DEBUG] [Thread-123303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:34.265 [DEBUG] [Thread-123303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:34:34.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:34:34.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:34.266 [DEBUG] [Thread-123303] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:34.267 [DEBUG] [Thread-123303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:34.267 [DEBUG] [Thread-123303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:34.267 [DEBUG] [Thread-123303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:34:34.267 [DEBUG] [Thread-123303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:34.284 [INFO] [Thread-123303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:34.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:34.936 [DEBUG] [Thread-123303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:34.936 [DEBUG] [Thread-123303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:34.936 [DEBUG] [Thread-123303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:34:34.977 [DEBUG] [Thread-123303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:34.977 [DEBUG] [Thread-123303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:34.979 [DEBUG] [Thread-123303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:34.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:34.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:34:34.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:34:34.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:34:34.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:34.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:34:34.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.398696 -999.00  +18.20  14.84     31   +1.10 1 1 1 1 1   888    0 17.43 59.50 ----- 12.8 14.8 255.6 22.8 25.8 -26.2 24.6 -25.5 23.8 -24.1 24.8 -25.0
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.398696
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:34:34.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:34:06', tmtdew=20.0, humidity=25.45, cloud=0.0, wind=16.75, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:34:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:34:34.998 [DEBUG] [Thread-123303] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:35.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-28T11:34:35.083 [DEBUG] [Thread-123306] [transport.py] [_log()] starting thread (client mode): 0x2b9af130
2025-09-28T11:34:35.083 [DEBUG] [Thread-123306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:35.098 [DEBUG] [Thread-123306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:34:35.098 [INFO] [Thread-123306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] Compression: none
2025-09-28T11:34:35.106 [DEBUG] [Thread-123306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:35.161 [DEBUG] [Thread-123306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:35.161 [DEBUG] [Thread-123306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:35.161 [DEBUG] [Thread-123306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:34:35.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:34:35.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:35.222 [DEBUG] [Thread-123306] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:35.222 [DEBUG] [Thread-123306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:35.222 [DEBUG] [Thread-123306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:35.222 [DEBUG] [Thread-123306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:34:35.222 [DEBUG] [Thread-123306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:35.236 [INFO] [Thread-123306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34: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-28T11:34:35.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:36.225 [DEBUG] [Thread-123306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:36.225 [DEBUG] [Thread-123306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:36.273 [DEBUG] [Thread-123306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:36.273 [DEBUG] [Thread-123306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:36.281 [DEBUG] [Thread-123306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:36.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:36.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-28T11:34:36.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-28T11:34:36.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:36.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:36.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:36.312 [DEBUG] [Thread-123306] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:38.548 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:38.549 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:46.305 [DEBUG] [Thread-123308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:34:46.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:34:46.315 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:34:46.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-28T11:34:46.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 34, 38), 20.03, 25.4, 0.0, 15.92, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:34:46.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:34:38
2025-09-28T11:34:47.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:34:52.177 [DEBUG] [Thread-123309] [transport.py] [_log()] starting thread (client mode): 0x2e3fb640
2025-09-28T11:34:52.178 [DEBUG] [Thread-123309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:52.197 [DEBUG] [Thread-123309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:34:52.197 [INFO] [Thread-123309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:34:52.199 [DEBUG] [Thread-123309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:52.199 [DEBUG] [Thread-123309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:34:52.199 [DEBUG] [Thread-123309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:52.199 [DEBUG] [Thread-123309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:52.199 [DEBUG] [Thread-123309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] Compression: none
2025-09-28T11:34:52.200 [DEBUG] [Thread-123309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:52.224 [DEBUG] [Thread-123309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:52.224 [DEBUG] [Thread-123309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:52.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:34:52.226 [DEBUG] [Thread-123309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:34:52.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:52.228 [DEBUG] [Thread-123309] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:52.228 [DEBUG] [Thread-123309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:52.228 [DEBUG] [Thread-123309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:52.228 [DEBUG] [Thread-123309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:34:52.228 [DEBUG] [Thread-123309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:52.251 [INFO] [Thread-123309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:52.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:52.878 [DEBUG] [Thread-123309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:52.878 [DEBUG] [Thread-123309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:52.878 [DEBUG] [Thread-123309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:34:52.919 [DEBUG] [Thread-123309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:52.920 [DEBUG] [Thread-123309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:52.922 [DEBUG] [Thread-123309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:52.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:52.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:34:52.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:34:52.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:34:52.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:52.945 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:34:52.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:52.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399043 -999.00  +18.50   7.75     31   +1.50 1 1 1 1 1   888    0 17.80 65.86 ----- 13.4 7.8 230.0 14.5 26.0 -26.9 24.8 -25.4 23.9 -24.5 24.9 -25.2
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399043
2025-09-28T11:34:52.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:34:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:34:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:34:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:34:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:34:52.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:34:38', tmtdew=20.03, humidity=25.4, cloud=0.0, wind=15.92, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:34:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:34:52.948 [DEBUG] [Thread-123309] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:34:53.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:34:53.040 [DEBUG] [Thread-123312] [transport.py] [_log()] starting thread (client mode): 0x2b9ac5e0
2025-09-28T11:34:53.041 [DEBUG] [Thread-123312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:34:53.058 [DEBUG] [Thread-123312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:34:53.058 [INFO] [Thread-123312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:34:53.065 [DEBUG] [Thread-123312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:53.066 [DEBUG] [Thread-123312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] client lang: <none>
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] server lang: <none>
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] kex follows: False
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:34:53.067 [DEBUG] [Thread-123312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:34:53.068 [DEBUG] [Thread-123312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:34:53.068 [DEBUG] [Thread-123312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:34:53.068 [DEBUG] [Thread-123312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:34:53.068 [DEBUG] [Thread-123312] [transport.py] [_log()] Compression: none
2025-09-28T11:34:53.068 [DEBUG] [Thread-123312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:34:53.125 [DEBUG] [Thread-123312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:34:53.126 [DEBUG] [Thread-123312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:34:53.127 [DEBUG] [Thread-123312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:34:53.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:34:53.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:34:53.187 [DEBUG] [Thread-123312] [transport.py] [_log()] userauth is OK
2025-09-28T11:34:53.187 [DEBUG] [Thread-123312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:34:53.187 [DEBUG] [Thread-123312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:34:53.187 [DEBUG] [Thread-123312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:34:53.187 [DEBUG] [Thread-123312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:34:53.207 [INFO] [Thread-123312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:34:53.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-28T11:34:53.209 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:34:54.186 [DEBUG] [Thread-123312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:34:54.186 [DEBUG] [Thread-123312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:34:54.234 [DEBUG] [Thread-123312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:34:54.234 [DEBUG] [Thread-123312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:34:54.242 [DEBUG] [Thread-123312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:34:54.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:34:54.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T11:34:54.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-28T11:34:54.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:34:54.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:34:54.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:34:54.274 [DEBUG] [Thread-123312] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:01.336 [DEBUG] [Thread-123314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:04.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:35:04.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:35:04.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-28T11:35:04.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 34, 38), 20.03, 25.4, 0.0, 15.92, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:35:04.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:34:38
2025-09-28T11:35:04.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:35:05.124 [DEBUG] [Thread-123315] [transport.py] [_log()] starting thread (client mode): 0x2e38c700
2025-09-28T11:35:05.124 [DEBUG] [Thread-123315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:05.145 [DEBUG] [Thread-123315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:35:05.145 [INFO] [Thread-123315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:05.147 [DEBUG] [Thread-123315] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] Compression: none
2025-09-28T11:35:05.148 [DEBUG] [Thread-123315] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:05.163 [DEBUG] [Thread-123315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:05.163 [DEBUG] [Thread-123315] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:05.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:35:05.165 [DEBUG] [Thread-123315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:35:05.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:05.166 [DEBUG] [Thread-123315] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:05.166 [DEBUG] [Thread-123315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:05.167 [DEBUG] [Thread-123315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:05.167 [DEBUG] [Thread-123315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:35:05.167 [DEBUG] [Thread-123315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:05.196 [INFO] [Thread-123315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:05.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:06.414 [DEBUG] [Thread-123317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:12.344 [DEBUG] [Thread-123315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:12.344 [DEBUG] [Thread-123315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:12.344 [DEBUG] [Thread-123315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:35:12.385 [DEBUG] [Thread-123315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:12.385 [DEBUG] [Thread-123315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:12.387 [DEBUG] [Thread-123315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:12.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:12.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:35:12.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:35:12.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:35:12.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:12.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:35:12.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399043 -999.00  +18.50   7.75     31   +1.50 1 1 1 1 1   888    0 17.80 65.86 ----- 13.4 7.8 230.0 14.5 26.0 -26.9 24.8 -25.4 23.9 -24.5 24.9 -25.2
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:35:12.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399043
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:35:12.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:34:38', tmtdew=20.03, humidity=25.4, cloud=0.0, wind=15.92, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:34:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:35:12.573 [DEBUG] [Thread-123315] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:12.648 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:35:12.657 [DEBUG] [Thread-123319] [transport.py] [_log()] starting thread (client mode): 0x2b9dc250
2025-09-28T11:35:12.657 [DEBUG] [Thread-123319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:12.673 [DEBUG] [Thread-123319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:35:12.673 [INFO] [Thread-123319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:35:12.680 [DEBUG] [Thread-123319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:12.680 [DEBUG] [Thread-123319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:35:12.680 [DEBUG] [Thread-123319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:12.680 [DEBUG] [Thread-123319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:12.680 [DEBUG] [Thread-123319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] Compression: none
2025-09-28T11:35:12.681 [DEBUG] [Thread-123319] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:12.737 [DEBUG] [Thread-123319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:12.737 [DEBUG] [Thread-123319] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:12.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:35:12.737 [DEBUG] [Thread-123319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:35:12.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:12.794 [DEBUG] [Thread-123319] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:12.794 [DEBUG] [Thread-123319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:12.794 [DEBUG] [Thread-123319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:12.794 [DEBUG] [Thread-123319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:35:12.794 [DEBUG] [Thread-123319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:12.809 [INFO] [Thread-123319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:12.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-28T11:35:12.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:13.769 [DEBUG] [Thread-123319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:13.769 [DEBUG] [Thread-123319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:13.817 [DEBUG] [Thread-123319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:13.817 [DEBUG] [Thread-123319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:13.825 [DEBUG] [Thread-123319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:13.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:13.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')
2025-09-28T11:35:13.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-28T11:35:13.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:13.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:13.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:13.869 [DEBUG] [Thread-123319] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:16.381 [DEBUG] [Thread-123321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:35:23.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:35:23.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:35:24.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 35, 10), 20.25, 25.02, 0.0, 15.99, 18.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:35:24.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:35:10
2025-09-28T11:35:24.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:35:24.714 [DEBUG] [Thread-123322] [transport.py] [_log()] starting thread (client mode): 0x2b9ad480
2025-09-28T11:35:24.714 [DEBUG] [Thread-123322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:24.733 [DEBUG] [Thread-123322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:35:24.733 [INFO] [Thread-123322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:24.736 [DEBUG] [Thread-123322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] Compression: none
2025-09-28T11:35:24.737 [DEBUG] [Thread-123322] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:24.756 [DEBUG] [Thread-123322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:24.756 [DEBUG] [Thread-123322] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:24.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:35:24.757 [DEBUG] [Thread-123322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:35:24.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:24.759 [DEBUG] [Thread-123322] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:24.759 [DEBUG] [Thread-123322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:24.760 [DEBUG] [Thread-123322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:24.760 [DEBUG] [Thread-123322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:35:24.760 [DEBUG] [Thread-123322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:24.775 [INFO] [Thread-123322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:24.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:25.994 [DEBUG] [Thread-123322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:25.994 [DEBUG] [Thread-123322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:25.994 [DEBUG] [Thread-123322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:35:26.034 [DEBUG] [Thread-123322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:26.035 [DEBUG] [Thread-123322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:26.037 [DEBUG] [Thread-123322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:26.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:26.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:35:26.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:35:26.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:35:26.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:26.062 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:35:26.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:26.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399043 -999.00  +18.50   7.75     31   +1.50 1 1 1 1 1   888    0 17.80 65.86 ----- 13.4 7.8 230.0 14.5 26.0 -26.9 24.8 -25.4 23.9 -24.5 24.9 -25.2
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399043
2025-09-28T11:35:26.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:35:26.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:35:26.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:35:26.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:35:26.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:35:26.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:35:10', tmtdew=20.25, humidity=25.02, cloud=0.0, wind=15.99, temperature=18.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:34:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:35:26.065 [DEBUG] [Thread-123322] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:26.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:35:26.164 [DEBUG] [Thread-123325] [transport.py] [_log()] starting thread (client mode): 0x2b9f2d40
2025-09-28T11:35:26.164 [DEBUG] [Thread-123325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:26.179 [DEBUG] [Thread-123325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:35:26.179 [INFO] [Thread-123325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:26.186 [DEBUG] [Thread-123325] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] Compression: none
2025-09-28T11:35:26.187 [DEBUG] [Thread-123325] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:26.247 [DEBUG] [Thread-123325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:26.247 [DEBUG] [Thread-123325] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:26.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:35:26.248 [DEBUG] [Thread-123325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:35:26.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:26.306 [DEBUG] [Thread-123325] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:26.306 [DEBUG] [Thread-123325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:26.306 [DEBUG] [Thread-123325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:26.307 [DEBUG] [Thread-123325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:35:26.307 [DEBUG] [Thread-123325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:26.330 [INFO] [Thread-123325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:26.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-28T11:35:26.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:27.370 [DEBUG] [Thread-123325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:27.371 [DEBUG] [Thread-123325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:27.418 [DEBUG] [Thread-123325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:27.418 [DEBUG] [Thread-123325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:27.427 [DEBUG] [Thread-123325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:27.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:27.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-28T11:35: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-28T11:35:27.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:27.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:27.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:27.462 [DEBUG] [Thread-123325] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:31.411 [DEBUG] [Thread-123327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:37.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:35:37.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:35:37.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-28T11:35:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 35, 10), 20.25, 25.02, 0.0, 15.99, 18.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:35:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:35:10
2025-09-28T11:35:38.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:35:38.307 [DEBUG] [Thread-123328] [transport.py] [_log()] starting thread (client mode): 0x2e38fa30
2025-09-28T11:35:38.307 [DEBUG] [Thread-123328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:38.327 [DEBUG] [Thread-123328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:35:38.327 [INFO] [Thread-123328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:35:38.330 [DEBUG] [Thread-123328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:38.330 [DEBUG] [Thread-123328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:35:38.330 [DEBUG] [Thread-123328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:38.330 [DEBUG] [Thread-123328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:38.330 [DEBUG] [Thread-123328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] Compression: none
2025-09-28T11:35:38.331 [DEBUG] [Thread-123328] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:38.347 [DEBUG] [Thread-123328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:38.347 [DEBUG] [Thread-123328] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:38.347 [DEBUG] [Thread-123328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:35:38.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:35:38.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:38.347 [DEBUG] [Thread-123328] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:38.348 [DEBUG] [Thread-123328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:38.348 [DEBUG] [Thread-123328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:38.348 [DEBUG] [Thread-123328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:35:38.348 [DEBUG] [Thread-123328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:38.357 [INFO] [Thread-123328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:38.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:38.692 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:38.693 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:38.983 [DEBUG] [Thread-123328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:38.983 [DEBUG] [Thread-123328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:38.984 [DEBUG] [Thread-123328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:35:39.025 [DEBUG] [Thread-123328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:39.025 [DEBUG] [Thread-123328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:39.028 [DEBUG] [Thread-123328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:39.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:39.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:35:39.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:35:39.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:35:39.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:39.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:35:39.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:39.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:39.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:35:39.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399390 -999.00  +18.50  13.43     30   +0.80 1 1 1 1 1   888    0 18.10 76.67 ----- 15.1 13.4 228.6 19.2 25.9 -27.0 24.7 -25.8 23.9 -24.4 24.9 -26.2
2025-09-28T11:35:39.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:35:39.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:35:39.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399390
2025-09-28T11:35:39.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:35:39.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:35:39.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:35:39.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:35:39.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:35:39.056 [DEBUG] [Thread-123328] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:39.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:35:10', tmtdew=20.25, humidity=25.02, cloud=0.0, wind=15.99, temperature=18.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:35:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:35:39.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-28T11:35:39.144 [DEBUG] [Thread-123331] [transport.py] [_log()] starting thread (client mode): 0x2b9ddff0
2025-09-28T11:35:39.144 [DEBUG] [Thread-123331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:39.159 [DEBUG] [Thread-123331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:35:39.159 [INFO] [Thread-123331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:39.167 [DEBUG] [Thread-123331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:39.168 [DEBUG] [Thread-123331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:39.168 [DEBUG] [Thread-123331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:39.168 [DEBUG] [Thread-123331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:39.168 [DEBUG] [Thread-123331] [transport.py] [_log()] Compression: none
2025-09-28T11:35:39.168 [DEBUG] [Thread-123331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:39.227 [DEBUG] [Thread-123331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:39.227 [DEBUG] [Thread-123331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:39.228 [DEBUG] [Thread-123331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:35:39.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:35:39.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:39.283 [DEBUG] [Thread-123331] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:39.283 [DEBUG] [Thread-123331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:39.283 [DEBUG] [Thread-123331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:39.283 [DEBUG] [Thread-123331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:35:39.283 [DEBUG] [Thread-123331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:39.302 [INFO] [Thread-123331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:39.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-28T11:35:39.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:40.324 [DEBUG] [Thread-123331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:40.324 [DEBUG] [Thread-123331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:40.372 [DEBUG] [Thread-123331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:40.372 [DEBUG] [Thread-123331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:40.381 [DEBUG] [Thread-123331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:40.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:40.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-28T11:35:40.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-28T11:35:40.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:40.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:40.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:40.417 [DEBUG] [Thread-123331] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:46.455 [DEBUG] [Thread-123333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:35:50.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:35:50.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:35:50.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-28T11:35:51.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 35, 42), 20.59, 24.67, 0.0, 20.06, 18.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:35:51.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:35:42
2025-09-28T11:35:51.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:35:51.312 [DEBUG] [Thread-123334] [transport.py] [_log()] starting thread (client mode): 0x2e38c700
2025-09-28T11:35:51.312 [DEBUG] [Thread-123334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:51.328 [DEBUG] [Thread-123334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:35:51.328 [INFO] [Thread-123334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] Compression: none
2025-09-28T11:35:51.331 [DEBUG] [Thread-123334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:51.345 [DEBUG] [Thread-123334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:51.345 [DEBUG] [Thread-123334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:51.345 [DEBUG] [Thread-123334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:35:51.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:35:51.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:51.346 [DEBUG] [Thread-123334] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:51.346 [DEBUG] [Thread-123334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:51.346 [DEBUG] [Thread-123334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:51.346 [DEBUG] [Thread-123334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:35:51.346 [DEBUG] [Thread-123334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:51.355 [INFO] [Thread-123334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:51.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:52.138 [DEBUG] [Thread-123334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:52.138 [DEBUG] [Thread-123334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:52.139 [DEBUG] [Thread-123334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:35:52.180 [DEBUG] [Thread-123334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:52.180 [DEBUG] [Thread-123334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:52.182 [DEBUG] [Thread-123334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:52.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:52.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:35:52.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:35:52.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:35:52.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:52.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:35:52.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399390 -999.00  +18.50  13.43     30   +0.80 1 1 1 1 1   888    0 18.10 76.67 ----- 15.1 13.4 228.6 19.2 25.9 -27.0 24.7 -25.8 23.9 -24.4 24.9 -26.2
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399390
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:35:52.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:35:42', tmtdew=20.59, humidity=24.67, cloud=0.0, wind=20.06, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:35:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:35:52.202 [DEBUG] [Thread-123334] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:35:52.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-28T11:35:52.286 [DEBUG] [Thread-123337] [transport.py] [_log()] starting thread (client mode): 0x30ddcd00
2025-09-28T11:35:52.286 [DEBUG] [Thread-123337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:35:52.301 [DEBUG] [Thread-123337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:35:52.301 [INFO] [Thread-123337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:35:52.308 [DEBUG] [Thread-123337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:35:52.308 [DEBUG] [Thread-123337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:35:52.308 [DEBUG] [Thread-123337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] client lang: <none>
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] server lang: <none>
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] kex follows: False
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] Compression: none
2025-09-28T11:35:52.309 [DEBUG] [Thread-123337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:35:52.369 [DEBUG] [Thread-123337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:35:52.370 [DEBUG] [Thread-123337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:35:52.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:35:52.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:35:52.370 [DEBUG] [Thread-123337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:35:52.426 [DEBUG] [Thread-123337] [transport.py] [_log()] userauth is OK
2025-09-28T11:35:52.426 [DEBUG] [Thread-123337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:35:52.426 [DEBUG] [Thread-123337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:35:52.426 [DEBUG] [Thread-123337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:35:52.426 [DEBUG] [Thread-123337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:35:52.441 [INFO] [Thread-123337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:35:52.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-28T11:35:52.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:35:53.495 [DEBUG] [Thread-123337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:35:53.495 [DEBUG] [Thread-123337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:35:53.543 [DEBUG] [Thread-123337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:35:53.543 [DEBUG] [Thread-123337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:35:53.552 [DEBUG] [Thread-123337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:35:53.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:35:53.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-28T11:35:53.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-28T11:35:53.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:35:53.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:35:53.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:35:53.585 [DEBUG] [Thread-123337] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:01.499 [DEBUG] [Thread-123339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:03.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:36:03.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:36:03.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-28T11:36:04.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 35, 42), 20.59, 24.67, 0.0, 20.06, 18.73, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:36:04.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:35:42
2025-09-28T11:36:04.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:36:04.421 [DEBUG] [Thread-123340] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T11:36:04.421 [DEBUG] [Thread-123340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:04.440 [DEBUG] [Thread-123340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:36:04.440 [INFO] [Thread-123340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:04.444 [DEBUG] [Thread-123340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] Compression: none
2025-09-28T11:36:04.445 [DEBUG] [Thread-123340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:04.462 [DEBUG] [Thread-123340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:04.462 [DEBUG] [Thread-123340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:04.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:36:04.463 [DEBUG] [Thread-123340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:36:04.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:04.464 [DEBUG] [Thread-123340] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:04.464 [DEBUG] [Thread-123340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:04.465 [DEBUG] [Thread-123340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:04.465 [DEBUG] [Thread-123340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:36:04.465 [DEBUG] [Thread-123340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:04.488 [INFO] [Thread-123340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:04.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:05.111 [DEBUG] [Thread-123340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:05.111 [DEBUG] [Thread-123340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:05.112 [DEBUG] [Thread-123340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:36:05.152 [DEBUG] [Thread-123340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:05.152 [DEBUG] [Thread-123340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:05.155 [DEBUG] [Thread-123340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:05.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:05.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:36:05.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:36:05.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:36:05.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:05.172 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:36:05.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399738 -999.00  +18.60  12.22     30   +1.10 1 1 1 1 1   888    0 18.09 76.99 ----- 9.9 12.2 273.6 18.3 26.1 -27.2 24.8 -25.2 23.9 -25.4 25.1 -26.2
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:36:05.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399738
2025-09-28T11:36:05.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:36:05.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:36:05.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:36:05.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:36:05.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:36:05.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:35:42', tmtdew=20.59, humidity=24.67, cloud=0.0, wind=20.06, temperature=18.73, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:35:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:36:05.175 [DEBUG] [Thread-123340] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:05.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-28T11:36:05.273 [DEBUG] [Thread-123343] [transport.py] [_log()] starting thread (client mode): 0x2e3c0eb0
2025-09-28T11:36:05.273 [DEBUG] [Thread-123343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:05.288 [DEBUG] [Thread-123343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:36:05.289 [INFO] [Thread-123343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:36:05.296 [DEBUG] [Thread-123343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:05.296 [DEBUG] [Thread-123343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:36:05.296 [DEBUG] [Thread-123343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:05.297 [DEBUG] [Thread-123343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] Compression: none
2025-09-28T11:36:05.298 [DEBUG] [Thread-123343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:05.355 [DEBUG] [Thread-123343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:05.356 [DEBUG] [Thread-123343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:05.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:36:05.357 [DEBUG] [Thread-123343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:36:05.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:05.411 [DEBUG] [Thread-123343] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:05.411 [DEBUG] [Thread-123343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:05.411 [DEBUG] [Thread-123343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:05.412 [DEBUG] [Thread-123343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:36:05.412 [DEBUG] [Thread-123343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:05.432 [INFO] [Thread-123343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:05.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-28T11:36:05.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:06.423 [DEBUG] [Thread-123343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:06.424 [DEBUG] [Thread-123343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:06.467 [DEBUG] [Thread-123345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:06.471 [DEBUG] [Thread-123343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:06.471 [DEBUG] [Thread-123343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:06.479 [DEBUG] [Thread-123343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:06.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:06.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-28T11:36:06.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') -> 00000000
2025-09-28T11:36:06.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:06.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:06.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:06.513 [DEBUG] [Thread-123343] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:16.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:36:16.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:36:16.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-28T11:36:16.546 [DEBUG] [Thread-123346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 36, 14), 20.87, 24.23, 0.0, 18.55, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:36:17.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:36:14
2025-09-28T11:36:17.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:36:17.357 [DEBUG] [Thread-123347] [transport.py] [_log()] starting thread (client mode): 0x2e3c3fd0
2025-09-28T11:36:17.357 [DEBUG] [Thread-123347] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:17.377 [DEBUG] [Thread-123347] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:36:17.377 [INFO] [Thread-123347] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:17.380 [DEBUG] [Thread-123347] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] Compression: none
2025-09-28T11:36:17.381 [DEBUG] [Thread-123347] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:17.398 [DEBUG] [Thread-123347] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:17.399 [DEBUG] [Thread-123347] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:17.399 [DEBUG] [Thread-123347] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:36:17.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:36:17.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:17.401 [DEBUG] [Thread-123347] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:17.401 [DEBUG] [Thread-123347] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:17.401 [DEBUG] [Thread-123347] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:17.401 [DEBUG] [Thread-123347] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:36:17.401 [DEBUG] [Thread-123347] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:17.416 [INFO] [Thread-123347] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:17.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:18.233 [DEBUG] [Thread-123347] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:18.234 [DEBUG] [Thread-123347] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:18.234 [DEBUG] [Thread-123347] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:36:18.274 [DEBUG] [Thread-123347] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:18.274 [DEBUG] [Thread-123347] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:18.277 [DEBUG] [Thread-123347] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:18.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:18.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:36:18.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:36:18.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:36:18.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:18.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:36:18.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:18.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:18.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:36:18.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399738 -999.00  +18.60  12.22     30   +1.10 1 1 1 1 1   888    0 18.09 76.99 ----- 9.9 12.2 273.6 18.3 26.1 -27.2 24.8 -25.2 23.9 -25.4 25.1 -26.2
2025-09-28T11:36:18.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:36:18.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:36:18.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399738
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:36:18.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:36:14', tmtdew=20.87, humidity=24.23, cloud=0.0, wind=18.55, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:35:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:36:18.305 [DEBUG] [Thread-123347] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:18.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-28T11:36:18.399 [DEBUG] [Thread-123350] [transport.py] [_log()] starting thread (client mode): 0x2b9f3b50
2025-09-28T11:36:18.399 [DEBUG] [Thread-123350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:18.414 [DEBUG] [Thread-123350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:36:18.414 [INFO] [Thread-123350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:36:18.422 [DEBUG] [Thread-123350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:18.422 [DEBUG] [Thread-123350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] Compression: none
2025-09-28T11:36:18.423 [DEBUG] [Thread-123350] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:18.479 [DEBUG] [Thread-123350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:18.480 [DEBUG] [Thread-123350] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:18.480 [DEBUG] [Thread-123350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:36:18.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:36:18.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:18.535 [DEBUG] [Thread-123350] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:18.535 [DEBUG] [Thread-123350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:18.535 [DEBUG] [Thread-123350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:18.535 [DEBUG] [Thread-123350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:36:18.535 [DEBUG] [Thread-123350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:18.554 [INFO] [Thread-123350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:18.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-28T11:36:18.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:19.521 [DEBUG] [Thread-123350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:19.521 [DEBUG] [Thread-123350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:19.572 [DEBUG] [Thread-123350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:19.572 [DEBUG] [Thread-123350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:19.583 [DEBUG] [Thread-123350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:19.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:19.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-28T11:36:19.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-28T11:36:19.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:19.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:19.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:19.632 [DEBUG] [Thread-123350] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:36:29.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:36:29.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-28T11:36:30.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 36, 14), 20.87, 24.23, 0.0, 18.55, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:36:30.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:36:14
2025-09-28T11:36:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:36:30.509 [DEBUG] [Thread-123352] [transport.py] [_log()] starting thread (client mode): 0x2b9f3460
2025-09-28T11:36:30.509 [DEBUG] [Thread-123352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:30.528 [DEBUG] [Thread-123352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:36:30.528 [INFO] [Thread-123352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:30.531 [DEBUG] [Thread-123352] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] Compression: none
2025-09-28T11:36:30.532 [DEBUG] [Thread-123352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:30.548 [DEBUG] [Thread-123352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:30.548 [DEBUG] [Thread-123352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:36:30.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:36:30.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:36:30.549 [DEBUG] [Thread-123352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:30.564 [INFO] [Thread-123352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:30.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:31.337 [DEBUG] [Thread-123352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:31.337 [DEBUG] [Thread-123352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:31.337 [DEBUG] [Thread-123352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:36:31.378 [DEBUG] [Thread-123352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:31.379 [DEBUG] [Thread-123352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:31.381 [DEBUG] [Thread-123352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:31.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:31.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:36:31.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:36:31.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:36:31.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:31.403 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:36:31.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:31.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:31.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:36:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.399738 -999.00  +18.60  12.22     30   +1.10 1 1 1 1 1   888    0 18.09 76.99 ----- 9.9 12.2 273.6 18.3 26.1 -27.2 24.8 -25.2 23.9 -25.4 25.1 -26.2
2025-09-28T11:36:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:36:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:36:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.399738
2025-09-28T11:36:31.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:36:14', tmtdew=20.87, humidity=24.23, cloud=0.0, wind=18.55, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:35:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:36:31.405 [DEBUG] [Thread-123352] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:31.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-28T11:36:31.504 [DEBUG] [Thread-123355] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e40
2025-09-28T11:36:31.504 [DEBUG] [Thread-123355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:31.519 [DEBUG] [Thread-123355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:36:31.520 [INFO] [Thread-123355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:36:31.527 [DEBUG] [Thread-123355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:31.527 [DEBUG] [Thread-123355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:36:31.527 [DEBUG] [Thread-123355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] Compression: none
2025-09-28T11:36:31.528 [DEBUG] [Thread-123355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:31.587 [DEBUG] [Thread-123355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:31.587 [DEBUG] [Thread-123355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:31.588 [DEBUG] [Thread-123355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:36:31.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:36:31.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:31.589 [DEBUG] [Thread-123357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:31.643 [DEBUG] [Thread-123355] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:31.643 [DEBUG] [Thread-123355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:31.643 [DEBUG] [Thread-123355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:31.643 [DEBUG] [Thread-123355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:36:31.643 [DEBUG] [Thread-123355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:31.663 [INFO] [Thread-123355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:31.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-28T11:36:31.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:32.650 [DEBUG] [Thread-123355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:32.651 [DEBUG] [Thread-123355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:32.698 [DEBUG] [Thread-123355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:32.698 [DEBUG] [Thread-123355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:32.708 [DEBUG] [Thread-123355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:32.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:32.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-28T11:36:32.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-28T11:36:32.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:32.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:32.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:32.744 [DEBUG] [Thread-123355] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:38.835 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:38.836 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:42.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:36:42.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:36:42.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-28T11:36:43.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 36, 14), 20.87, 24.23, 0.0, 18.55, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:36:43.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:36:14
2025-09-28T11:36:43.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:36:43.598 [DEBUG] [Thread-123358] [transport.py] [_log()] starting thread (client mode): 0x2e3fb520
2025-09-28T11:36:43.599 [DEBUG] [Thread-123358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:43.618 [DEBUG] [Thread-123358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:36:43.618 [INFO] [Thread-123358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] Compression: none
2025-09-28T11:36:43.621 [DEBUG] [Thread-123358] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:43.640 [DEBUG] [Thread-123358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:43.640 [DEBUG] [Thread-123358] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:43.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:36:43.641 [DEBUG] [Thread-123358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:36:43.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:43.643 [DEBUG] [Thread-123358] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:43.643 [DEBUG] [Thread-123358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:43.643 [DEBUG] [Thread-123358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:43.643 [DEBUG] [Thread-123358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:36:43.643 [DEBUG] [Thread-123358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:43.665 [INFO] [Thread-123358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:43.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:44.281 [DEBUG] [Thread-123358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:44.281 [DEBUG] [Thread-123358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:44.281 [DEBUG] [Thread-123358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:36:44.322 [DEBUG] [Thread-123358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:44.322 [DEBUG] [Thread-123358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:44.325 [DEBUG] [Thread-123358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:44.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:44.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:36:44.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:36:44.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:36:44.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:44.347 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:36:44.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.400085 -999.00  +18.70  18.67     30   +1.00 1 1 1 1 1   888    0 18.23 83.57 ----- 14.9 18.7 273.0 21.9 26.0 -26.2 24.8 -25.9 23.8 -24.8 25.1 -26.5
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:36:44.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.400085
2025-09-28T11:36:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:36:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:36:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:36:44.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:36:44.349 [DEBUG] [Thread-123358] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:36:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:36:14', tmtdew=20.87, humidity=24.23, cloud=0.0, wind=18.55, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:36:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:36:44.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-28T11:36:44.447 [DEBUG] [Thread-123361] [transport.py] [_log()] starting thread (client mode): 0x2b9ae530
2025-09-28T11:36:44.447 [DEBUG] [Thread-123361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:44.461 [DEBUG] [Thread-123361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:36:44.461 [INFO] [Thread-123361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:44.471 [DEBUG] [Thread-123361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] Compression: none
2025-09-28T11:36:44.472 [DEBUG] [Thread-123361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:44.530 [DEBUG] [Thread-123361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:44.531 [DEBUG] [Thread-123361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:44.531 [DEBUG] [Thread-123361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:36:44.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:36:44.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:44.587 [DEBUG] [Thread-123361] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:44.587 [DEBUG] [Thread-123361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:44.588 [DEBUG] [Thread-123361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:44.588 [DEBUG] [Thread-123361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:36:44.588 [DEBUG] [Thread-123361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:44.606 [INFO] [Thread-123361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:44.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-28T11:36:44.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:45.571 [DEBUG] [Thread-123361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:45.571 [DEBUG] [Thread-123361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:45.619 [DEBUG] [Thread-123361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:45.619 [DEBUG] [Thread-123361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:45.628 [DEBUG] [Thread-123361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:45.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:45.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-28T11:36:45.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-28T11:36:45.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:45.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:45.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:45.665 [DEBUG] [Thread-123361] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:46.631 [DEBUG] [Thread-123363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:36:55.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:36:55.668 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:36:55.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-28T11:36:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 36, 46), 20.51, 24.86, 0.0, 17.84, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:36:56.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:36:46
2025-09-28T11:36:56.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:36:56.499 [DEBUG] [Thread-123364] [transport.py] [_log()] starting thread (client mode): 0x2b9f3dc0
2025-09-28T11:36:56.499 [DEBUG] [Thread-123364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:56.521 [DEBUG] [Thread-123364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:36:56.521 [INFO] [Thread-123364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:56.525 [DEBUG] [Thread-123364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:56.526 [DEBUG] [Thread-123364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:56.527 [DEBUG] [Thread-123364] [transport.py] [_log()] Compression: none
2025-09-28T11:36:56.527 [DEBUG] [Thread-123364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:56.545 [DEBUG] [Thread-123364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:56.546 [DEBUG] [Thread-123364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:56.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:36:56.547 [DEBUG] [Thread-123364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:36:56.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:56.549 [DEBUG] [Thread-123364] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:56.550 [DEBUG] [Thread-123364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:56.550 [DEBUG] [Thread-123364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:56.550 [DEBUG] [Thread-123364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:36:56.550 [DEBUG] [Thread-123364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:56.573 [INFO] [Thread-123364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:56.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:57.351 [DEBUG] [Thread-123364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:57.351 [DEBUG] [Thread-123364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:57.352 [DEBUG] [Thread-123364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:36:57.392 [DEBUG] [Thread-123364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:57.392 [DEBUG] [Thread-123364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:57.395 [DEBUG] [Thread-123364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:57.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:57.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:36:57.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:36:57.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:36:57.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:57.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:36:57.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:57.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:36:57.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.400085 -999.00  +18.70  18.67     30   +1.00 1 1 1 1 1   888    0 18.23 83.57 ----- 14.9 18.7 273.0 21.9 26.0 -26.2 24.8 -25.9 23.8 -24.8 25.1 -26.5
2025-09-28T11:36:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:36:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:36:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.400085
2025-09-28T11:36:57.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:36:57.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:36:57.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:36:57.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:36:57.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:36:57.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:36:46', tmtdew=20.51, humidity=24.86, cloud=0.0, wind=17.84, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:36:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:36:57.422 [DEBUG] [Thread-123364] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:36:57.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-28T11:36:57.515 [DEBUG] [Thread-123367] [transport.py] [_log()] starting thread (client mode): 0x2e3c13c0
2025-09-28T11:36:57.516 [DEBUG] [Thread-123367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:36:57.534 [DEBUG] [Thread-123367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:36:57.535 [INFO] [Thread-123367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:36:57.541 [DEBUG] [Thread-123367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] client lang: <none>
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] server lang: <none>
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] kex follows: False
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:36:57.542 [DEBUG] [Thread-123367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:36:57.543 [DEBUG] [Thread-123367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:36:57.543 [DEBUG] [Thread-123367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:36:57.543 [DEBUG] [Thread-123367] [transport.py] [_log()] Compression: none
2025-09-28T11:36:57.543 [DEBUG] [Thread-123367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:36:57.597 [DEBUG] [Thread-123367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:36:57.598 [DEBUG] [Thread-123367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:36:57.598 [DEBUG] [Thread-123367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:36:57.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:36:57.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:36:57.654 [DEBUG] [Thread-123367] [transport.py] [_log()] userauth is OK
2025-09-28T11:36:57.655 [DEBUG] [Thread-123367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:36:57.655 [DEBUG] [Thread-123367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:36:57.655 [DEBUG] [Thread-123367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:36:57.655 [DEBUG] [Thread-123367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:36:57.674 [INFO] [Thread-123367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:36:57.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-28T11:36:57.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:36:58.660 [DEBUG] [Thread-123367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:36:58.660 [DEBUG] [Thread-123367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:36:58.708 [DEBUG] [Thread-123367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:36:58.708 [DEBUG] [Thread-123367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:36:58.717 [DEBUG] [Thread-123367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:36:58.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:36:58.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-28T11:36:58.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-28T11:36:58.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:36:58.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:36:58.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:36:58.758 [DEBUG] [Thread-123367] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:01.667 [DEBUG] [Thread-123369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:06.515 [DEBUG] [Thread-123370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:08.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:37:08.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:37:08.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-28T11:37:09.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 36, 46), 20.51, 24.86, 0.0, 17.84, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:37:09.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:36:46
2025-09-28T11:37:09.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:37:09.620 [DEBUG] [Thread-123371] [transport.py] [_log()] starting thread (client mode): 0x2b9f3610
2025-09-28T11:37:09.620 [DEBUG] [Thread-123371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:09.631 [DEBUG] [Thread-123371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:37:09.631 [INFO] [Thread-123371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:09.633 [DEBUG] [Thread-123371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:09.634 [DEBUG] [Thread-123371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:09.634 [DEBUG] [Thread-123371] [transport.py] [_log()] Compression: none
2025-09-28T11:37:09.634 [DEBUG] [Thread-123371] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:09.645 [DEBUG] [Thread-123371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:09.645 [DEBUG] [Thread-123371] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:09.645 [DEBUG] [Thread-123371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:37:09.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:37:09.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:09.646 [DEBUG] [Thread-123371] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:09.646 [DEBUG] [Thread-123371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:09.646 [DEBUG] [Thread-123371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:09.646 [DEBUG] [Thread-123371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:37:09.646 [DEBUG] [Thread-123371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:09.656 [INFO] [Thread-123371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:09.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:10.304 [DEBUG] [Thread-123371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:10.305 [DEBUG] [Thread-123371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:10.305 [DEBUG] [Thread-123371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:37:10.345 [DEBUG] [Thread-123371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:10.345 [DEBUG] [Thread-123371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:10.348 [DEBUG] [Thread-123371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:10.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:10.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:37:10.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:37:10.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:37:10.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:10.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:37:10.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:10.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:10.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:37:10.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.400432 -999.00  +18.40  12.02     31   +1.00 1 1 1 1 1   888    0 19.15 104.80 ----- 10.7 12.0 281.8 19.1 26.0 -26.8 24.8 -25.2 23.7 -26.2 25.1 -24.8
2025-09-28T11:37:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:37:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:37:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.400432
2025-09-28T11:37:10.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:37:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:37:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:37:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:37:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:37:10.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:36:46', tmtdew=20.51, humidity=24.86, cloud=0.0, wind=17.84, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:36:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:37:10.372 [DEBUG] [Thread-123371] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:10.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-28T11:37:10.472 [DEBUG] [Thread-123374] [transport.py] [_log()] starting thread (client mode): 0x2b989480
2025-09-28T11:37:10.472 [DEBUG] [Thread-123374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:10.487 [DEBUG] [Thread-123374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:37:10.487 [INFO] [Thread-123374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:10.496 [DEBUG] [Thread-123374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:10.497 [DEBUG] [Thread-123374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:10.498 [DEBUG] [Thread-123374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:10.498 [DEBUG] [Thread-123374] [transport.py] [_log()] Compression: none
2025-09-28T11:37:10.498 [DEBUG] [Thread-123374] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:10.562 [DEBUG] [Thread-123374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:10.562 [DEBUG] [Thread-123374] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:10.563 [DEBUG] [Thread-123374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:37:10.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:37:10.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:10.627 [DEBUG] [Thread-123374] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:10.627 [DEBUG] [Thread-123374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:10.627 [DEBUG] [Thread-123374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:10.627 [DEBUG] [Thread-123374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:37:10.627 [DEBUG] [Thread-123374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:10.646 [INFO] [Thread-123374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:10.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-28T11:37:10.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:11.635 [DEBUG] [Thread-123374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:11.635 [DEBUG] [Thread-123374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:11.683 [DEBUG] [Thread-123374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:11.683 [DEBUG] [Thread-123374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:11.692 [DEBUG] [Thread-123374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:11.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:11.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-28T11:37:11.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-28T11:37:11.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:11.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:11.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:11.727 [DEBUG] [Thread-123374] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:16.713 [DEBUG] [Thread-123376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:21.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:37:21.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:37:21.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-28T11:37:22.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 37, 18), 20.51, 24.87, 0.0, 16.41, 18.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:37:22.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:37:18
2025-09-28T11:37:22.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:37:22.570 [DEBUG] [Thread-123377] [transport.py] [_log()] starting thread (client mode): 0x2e375f30
2025-09-28T11:37:22.570 [DEBUG] [Thread-123377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:22.589 [DEBUG] [Thread-123377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:37:22.589 [INFO] [Thread-123377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:22.591 [DEBUG] [Thread-123377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:22.592 [DEBUG] [Thread-123377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:22.592 [DEBUG] [Thread-123377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:22.592 [DEBUG] [Thread-123377] [transport.py] [_log()] Compression: none
2025-09-28T11:37:22.592 [DEBUG] [Thread-123377] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:22.606 [DEBUG] [Thread-123377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:22.607 [DEBUG] [Thread-123377] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:22.607 [DEBUG] [Thread-123377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:37:22.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:37:22.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:22.610 [DEBUG] [Thread-123377] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:22.610 [DEBUG] [Thread-123377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:22.610 [DEBUG] [Thread-123377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:22.610 [DEBUG] [Thread-123377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:37:22.611 [DEBUG] [Thread-123377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:22.629 [INFO] [Thread-123377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:22.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:23.392 [DEBUG] [Thread-123377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:23.392 [DEBUG] [Thread-123377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:23.392 [DEBUG] [Thread-123377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:37:23.433 [DEBUG] [Thread-123377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:23.433 [DEBUG] [Thread-123377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:23.436 [DEBUG] [Thread-123377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:23.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:23.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:37:23.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:37:23.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:37:23.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:23.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:37:23.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.400432 -999.00  +18.40  12.02     31   +1.00 1 1 1 1 1   888    0 19.15 104.80 ----- 10.7 12.0 281.8 19.1 26.0 -26.8 24.8 -25.2 23.7 -26.2 25.1 -24.8
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:37:23.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.400432
2025-09-28T11:37:23.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:37:23.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:37:23.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:37:23.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:37:23.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:37:23.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:37:18', tmtdew=20.51, humidity=24.87, cloud=0.0, wind=16.41, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:36:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:37:23.463 [DEBUG] [Thread-123377] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:23.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-28T11:37:23.559 [DEBUG] [Thread-123380] [transport.py] [_log()] starting thread (client mode): 0x2b9b8be0
2025-09-28T11:37:23.559 [DEBUG] [Thread-123380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:23.579 [DEBUG] [Thread-123380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:37:23.580 [INFO] [Thread-123380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:37:23.587 [DEBUG] [Thread-123380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:23.587 [DEBUG] [Thread-123380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:37:23.587 [DEBUG] [Thread-123380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:23.587 [DEBUG] [Thread-123380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:23.588 [DEBUG] [Thread-123380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:23.589 [DEBUG] [Thread-123380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:23.589 [DEBUG] [Thread-123380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:23.589 [DEBUG] [Thread-123380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:23.589 [DEBUG] [Thread-123380] [transport.py] [_log()] Compression: none
2025-09-28T11:37:23.589 [DEBUG] [Thread-123380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:23.647 [DEBUG] [Thread-123380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:23.647 [DEBUG] [Thread-123380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:23.648 [DEBUG] [Thread-123380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:37:23.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:37:23.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:23.705 [DEBUG] [Thread-123380] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:23.705 [DEBUG] [Thread-123380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:23.705 [DEBUG] [Thread-123380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:23.705 [DEBUG] [Thread-123380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:37:23.705 [DEBUG] [Thread-123380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:23.729 [INFO] [Thread-123380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:23.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:37:23.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:24.713 [DEBUG] [Thread-123380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:24.713 [DEBUG] [Thread-123380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:24.761 [DEBUG] [Thread-123380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:24.762 [DEBUG] [Thread-123380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:24.770 [DEBUG] [Thread-123380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:24.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:24.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-28T11:37:24.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-28T11:37:24.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:24.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:24.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:24.805 [DEBUG] [Thread-123380] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:31.769 [DEBUG] [Thread-123382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:34.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:37:34.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:37:34.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-28T11:37:35.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 37, 18), 20.51, 24.87, 0.0, 16.41, 18.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:37:35.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:37:18
2025-09-28T11:37:35.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:37:35.636 [DEBUG] [Thread-123383] [transport.py] [_log()] starting thread (client mode): 0x2b96e110
2025-09-28T11:37:35.636 [DEBUG] [Thread-123383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:35.658 [DEBUG] [Thread-123383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:37:35.658 [INFO] [Thread-123383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:37:35.661 [DEBUG] [Thread-123383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:35.662 [DEBUG] [Thread-123383] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] Compression: none
2025-09-28T11:37:35.663 [DEBUG] [Thread-123383] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:35.681 [DEBUG] [Thread-123383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:35.682 [DEBUG] [Thread-123383] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:35.682 [DEBUG] [Thread-123383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:37:35.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:37:35.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:35.684 [DEBUG] [Thread-123383] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:35.684 [DEBUG] [Thread-123383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:35.684 [DEBUG] [Thread-123383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:35.684 [DEBUG] [Thread-123383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:37:35.684 [DEBUG] [Thread-123383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:35.701 [INFO] [Thread-123383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:35.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:36.511 [DEBUG] [Thread-123383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:36.511 [DEBUG] [Thread-123383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:36.512 [DEBUG] [Thread-123383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:37:36.552 [DEBUG] [Thread-123383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:36.553 [DEBUG] [Thread-123383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:36.555 [DEBUG] [Thread-123383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:36.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:36.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:37:36.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:37:36.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:37:36.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:36.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:37:36.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:36.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:36.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:37:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.400432 -999.00  +18.40  12.02     31   +1.00 1 1 1 1 1   888    0 19.15 104.80 ----- 10.7 12.0 281.8 19.1 26.0 -26.8 24.8 -25.2 23.7 -26.2 25.1 -24.8
2025-09-28T11:37:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:37:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:37:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.400432
2025-09-28T11:37:36.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:37:36.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:37:36.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:37:36.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:37:36.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:37:36.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:37:18', tmtdew=20.51, humidity=24.87, cloud=0.0, wind=16.41, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:36:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:37:36.585 [DEBUG] [Thread-123383] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:36.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-28T11:37:36.679 [DEBUG] [Thread-123386] [transport.py] [_log()] starting thread (client mode): 0x30ddd810
2025-09-28T11:37:36.679 [DEBUG] [Thread-123386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:36.695 [DEBUG] [Thread-123386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:37:36.695 [INFO] [Thread-123386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:36.703 [DEBUG] [Thread-123386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] Compression: none
2025-09-28T11:37:36.704 [DEBUG] [Thread-123386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:36.762 [DEBUG] [Thread-123386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:36.762 [DEBUG] [Thread-123386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:36.763 [DEBUG] [Thread-123386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:37:36.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:37:36.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:36.820 [DEBUG] [Thread-123386] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:36.820 [DEBUG] [Thread-123386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:36.820 [DEBUG] [Thread-123386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:36.820 [DEBUG] [Thread-123386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:37:36.820 [DEBUG] [Thread-123386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:36.841 [INFO] [Thread-123386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:36.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-28T11:37:36.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:37.799 [DEBUG] [Thread-123386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:37.799 [DEBUG] [Thread-123386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:37.847 [DEBUG] [Thread-123386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:37.847 [DEBUG] [Thread-123386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:37.855 [DEBUG] [Thread-123386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:37.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:37.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-28T11:37:37.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-28T11:37:37.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:37.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:37.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:37.887 [DEBUG] [Thread-123386] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:38.977 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:38.978 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:46.821 [DEBUG] [Thread-123388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:37:47.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:37:47.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:37:47.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-28T11:37:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 37, 18), 20.51, 24.87, 0.0, 16.41, 18.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:37:48.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:37:18
2025-09-28T11:37:48.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:37:48.723 [DEBUG] [Thread-123389] [transport.py] [_log()] starting thread (client mode): 0x2b98ac50
2025-09-28T11:37:48.723 [DEBUG] [Thread-123389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:48.744 [DEBUG] [Thread-123389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:37:48.744 [INFO] [Thread-123389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:48.747 [DEBUG] [Thread-123389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] Compression: none
2025-09-28T11:37:48.748 [DEBUG] [Thread-123389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:48.765 [DEBUG] [Thread-123389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:48.766 [DEBUG] [Thread-123389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:48.766 [DEBUG] [Thread-123389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:37:48.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:37:48.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:48.768 [DEBUG] [Thread-123389] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:48.769 [DEBUG] [Thread-123389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:48.769 [DEBUG] [Thread-123389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:48.769 [DEBUG] [Thread-123389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:37:48.769 [DEBUG] [Thread-123389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:48.794 [INFO] [Thread-123389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:48.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:49.465 [DEBUG] [Thread-123389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:49.466 [DEBUG] [Thread-123389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:49.466 [DEBUG] [Thread-123389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:37:49.506 [DEBUG] [Thread-123389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:49.507 [DEBUG] [Thread-123389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:49.509 [DEBUG] [Thread-123389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:49.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:49.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:37:49.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:37:49.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:37:49.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:49.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:37:49.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:49.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:49.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:37:49.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401127 -999.00  +18.30  11.32     30   +0.80 1 1 1 1 1   888    0 20.13 129.83 ----- 9.2 11.3 259.2 14.6 26.2 -26.2 24.9 -25.6 24.0 -24.4 25.1 -25.0
2025-09-28T11:37:49.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:37:49.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:37:49.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401127
2025-09-28T11:37:49.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:37:49.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:37:49.530 [DEBUG] [Thread-123389] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:37:49.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:37:49.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:37:49.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:37:49.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:37:18', tmtdew=20.51, humidity=24.87, cloud=0.0, wind=16.41, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:37:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:37:49.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-28T11:37:49.627 [DEBUG] [Thread-123392] [transport.py] [_log()] starting thread (client mode): 0x2b989780
2025-09-28T11:37:49.627 [DEBUG] [Thread-123392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:37:49.654 [DEBUG] [Thread-123392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:37:49.655 [INFO] [Thread-123392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:37:49.662 [DEBUG] [Thread-123392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:37:49.662 [DEBUG] [Thread-123392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:37:49.662 [DEBUG] [Thread-123392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] client lang: <none>
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] server lang: <none>
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] kex follows: False
2025-09-28T11:37:49.663 [DEBUG] [Thread-123392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] Compression: none
2025-09-28T11:37:49.664 [DEBUG] [Thread-123392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:37:49.726 [DEBUG] [Thread-123392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:37:49.727 [DEBUG] [Thread-123392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:37:49.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:37:49.727 [DEBUG] [Thread-123392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:37:49.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:37:49.786 [DEBUG] [Thread-123392] [transport.py] [_log()] userauth is OK
2025-09-28T11:37:49.787 [DEBUG] [Thread-123392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:37:49.787 [DEBUG] [Thread-123392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:37:49.787 [DEBUG] [Thread-123392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:37:49.787 [DEBUG] [Thread-123392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:37:49.808 [INFO] [Thread-123392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:37:49.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-28T11:37:49.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:37:50.775 [DEBUG] [Thread-123392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:37:50.775 [DEBUG] [Thread-123392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:37:50.823 [DEBUG] [Thread-123392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:37:50.823 [DEBUG] [Thread-123392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:37:50.832 [DEBUG] [Thread-123392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:37:50.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:37:50.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-28T11:37:50.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-28T11:37:50.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:37:50.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:37:50.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:37:50.864 [DEBUG] [Thread-123392] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:00.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:38:00.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:38:00.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:38:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 37, 50), 20.42, 24.87, 0.0, 12.81, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:38:01.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:37:50
2025-09-28T11:38:01.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:38:01.716 [DEBUG] [Thread-123394] [transport.py] [_log()] starting thread (client mode): 0x2b988fd0
2025-09-28T11:38:01.716 [DEBUG] [Thread-123394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:01.738 [DEBUG] [Thread-123394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:38:01.739 [INFO] [Thread-123394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:01.742 [DEBUG] [Thread-123394] [transport.py] [_log()] Compression: none
2025-09-28T11:38:01.743 [DEBUG] [Thread-123394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:01.758 [DEBUG] [Thread-123394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:01.758 [DEBUG] [Thread-123394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:01.759 [DEBUG] [Thread-123394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:38:01.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:38:01.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:01.761 [DEBUG] [Thread-123394] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:01.761 [DEBUG] [Thread-123394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:01.761 [DEBUG] [Thread-123394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:01.761 [DEBUG] [Thread-123394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:38:01.761 [DEBUG] [Thread-123394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:01.785 [INFO] [Thread-123394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:01.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:01.856 [DEBUG] [Thread-123396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:02.649 [DEBUG] [Thread-123394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:02.649 [DEBUG] [Thread-123394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:02.649 [DEBUG] [Thread-123394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:38:02.691 [DEBUG] [Thread-123394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:02.691 [DEBUG] [Thread-123394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:02.694 [DEBUG] [Thread-123394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:02.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:02.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:38:02.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:38:02.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:38:02.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:02.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:38:02.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401127 -999.00  +18.30  11.32     30   +0.80 1 1 1 1 1   888    0 20.13 129.83 ----- 9.2 11.3 259.2 14.6 26.2 -26.2 24.9 -25.6 24.0 -24.4 25.1 -25.0
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:38:02.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401127
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:38:02.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:37:50', tmtdew=20.42, humidity=24.87, cloud=0.0, wind=12.81, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:37:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:38:02.716 [DEBUG] [Thread-123394] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:02.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-28T11:38:02.822 [DEBUG] [Thread-123398] [transport.py] [_log()] starting thread (client mode): 0x2b9f3d30
2025-09-28T11:38:02.822 [DEBUG] [Thread-123398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:02.837 [DEBUG] [Thread-123398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:38:02.837 [INFO] [Thread-123398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:38:02.844 [DEBUG] [Thread-123398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:02.844 [DEBUG] [Thread-123398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] Compression: none
2025-09-28T11:38:02.845 [DEBUG] [Thread-123398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:02.902 [DEBUG] [Thread-123398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:02.903 [DEBUG] [Thread-123398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:02.903 [DEBUG] [Thread-123398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:38:02.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:38:02.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:02.962 [DEBUG] [Thread-123398] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:02.963 [DEBUG] [Thread-123398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:02.963 [DEBUG] [Thread-123398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:02.963 [DEBUG] [Thread-123398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:38:02.963 [DEBUG] [Thread-123398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:02.983 [INFO] [Thread-123398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:02.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-28T11:38:02.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:03.977 [DEBUG] [Thread-123398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:03.977 [DEBUG] [Thread-123398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:04.027 [DEBUG] [Thread-123398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:04.027 [DEBUG] [Thread-123398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:04.040 [DEBUG] [Thread-123398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:04.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:04.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')
2025-09-28T11:38:04.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-28T11:38:04.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:04.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:04.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:04.081 [DEBUG] [Thread-123398] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:06.566 [DEBUG] [Thread-123400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:14.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:38:14.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:38:14.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-28T11:38:14.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 37, 50), 20.42, 24.87, 0.0, 12.81, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:38:14.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:37:50
2025-09-28T11:38:14.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:38:14.905 [DEBUG] [Thread-123401] [transport.py] [_log()] starting thread (client mode): 0x2e3fa860
2025-09-28T11:38:14.906 [DEBUG] [Thread-123401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:14.926 [DEBUG] [Thread-123401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:38:14.926 [INFO] [Thread-123401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:38:14.929 [DEBUG] [Thread-123401] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:14.929 [DEBUG] [Thread-123401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:38:14.929 [DEBUG] [Thread-123401] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:14.929 [DEBUG] [Thread-123401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] Compression: none
2025-09-28T11:38:14.930 [DEBUG] [Thread-123401] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:14.946 [DEBUG] [Thread-123401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:14.946 [DEBUG] [Thread-123401] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:14.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:38:14.947 [DEBUG] [Thread-123401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:38:14.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:14.949 [DEBUG] [Thread-123401] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:14.949 [DEBUG] [Thread-123401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:14.949 [DEBUG] [Thread-123401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:14.949 [DEBUG] [Thread-123401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:38:14.949 [DEBUG] [Thread-123401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:14.967 [INFO] [Thread-123401] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:14.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:15.760 [DEBUG] [Thread-123401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:15.760 [DEBUG] [Thread-123401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:15.760 [DEBUG] [Thread-123401] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:38:15.801 [DEBUG] [Thread-123401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:15.801 [DEBUG] [Thread-123401] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:15.802 [DEBUG] [Thread-123401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:15.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:15.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:38:15.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:38:15.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:38:15.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:15.818 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:38:15.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:15.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401127 -999.00  +18.30  11.32     30   +0.80 1 1 1 1 1   888    0 20.13 129.83 ----- 9.2 11.3 259.2 14.6 26.2 -26.2 24.9 -25.6 24.0 -24.4 25.1 -25.0
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401127
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:38:15.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:37:50', tmtdew=20.42, humidity=24.87, cloud=0.0, wind=12.81, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:37:37.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:38:15.819 [DEBUG] [Thread-123401] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:15.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-28T11:38:15.901 [DEBUG] [Thread-123404] [transport.py] [_log()] starting thread (client mode): 0x2e3fad10
2025-09-28T11:38:15.902 [DEBUG] [Thread-123404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:15.916 [DEBUG] [Thread-123404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:38:15.916 [INFO] [Thread-123404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] Compression: none
2025-09-28T11:38:15.924 [DEBUG] [Thread-123404] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:15.986 [DEBUG] [Thread-123404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:15.986 [DEBUG] [Thread-123404] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:15.986 [DEBUG] [Thread-123404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:38:15.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:38:15.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:16.042 [DEBUG] [Thread-123404] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:16.042 [DEBUG] [Thread-123404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:16.042 [DEBUG] [Thread-123404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:16.042 [DEBUG] [Thread-123404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:38:16.042 [DEBUG] [Thread-123404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:16.056 [INFO] [Thread-123404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:16.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-28T11:38:16.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:16.900 [DEBUG] [Thread-123406 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:17.036 [DEBUG] [Thread-123404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:17.036 [DEBUG] [Thread-123404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:17.085 [DEBUG] [Thread-123404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:17.085 [DEBUG] [Thread-123404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:17.093 [DEBUG] [Thread-123404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:17.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:17.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-28T11:38:17.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-28T11:38:17.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:17.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:17.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:17.124 [DEBUG] [Thread-123404] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:27.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:38:27.120 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:38:27.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-28T11:38:27.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 38, 22), 20.49, 24.71, 0.0, 11.4, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:38:27.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:38:22
2025-09-28T11:38:27.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:38:27.949 [DEBUG] [Thread-123407] [transport.py] [_log()] starting thread (client mode): 0x30ddfc10
2025-09-28T11:38:27.949 [DEBUG] [Thread-123407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:27.969 [DEBUG] [Thread-123407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:38:27.969 [INFO] [Thread-123407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:38:27.972 [DEBUG] [Thread-123407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:27.973 [DEBUG] [Thread-123407] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] Compression: none
2025-09-28T11:38:27.974 [DEBUG] [Thread-123407] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:27.991 [DEBUG] [Thread-123407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:27.991 [DEBUG] [Thread-123407] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:27.992 [DEBUG] [Thread-123407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:38:27.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:38:27.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:27.994 [DEBUG] [Thread-123407] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:27.994 [DEBUG] [Thread-123407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:27.994 [DEBUG] [Thread-123407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:27.995 [DEBUG] [Thread-123407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:38:27.995 [DEBUG] [Thread-123407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:28.029 [INFO] [Thread-123407] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:28.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:28.646 [DEBUG] [Thread-123407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:28.647 [DEBUG] [Thread-123407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:28.647 [DEBUG] [Thread-123407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:38:28.687 [DEBUG] [Thread-123407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:28.688 [DEBUG] [Thread-123407] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:28.690 [DEBUG] [Thread-123407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:28.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:28.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:38:28.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:38:28.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:38:28.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:28.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:38:28.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:28.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:38:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401474 -999.00  +18.30   4.45     31   +1.20 1 1 1 1 1   888    0 20.23 145.24 ----- 4.2 4.5 258.1 11.4 26.4 -26.0 25.0 -25.0 24.1 -24.4 25.1 -25.7
2025-09-28T11:38:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:38:28.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:38:28.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401474
2025-09-28T11:38:28.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:38:28.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:38:28.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:38:28.716 [DEBUG] [Thread-123407] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:28.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:38:28.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:38:28.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:38:22', tmtdew=20.49, humidity=24.71, cloud=0.0, wind=11.4, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:38:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:38:28.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-28T11:38:28.823 [DEBUG] [Thread-123410] [transport.py] [_log()] starting thread (client mode): 0x2b988d00
2025-09-28T11:38:28.823 [DEBUG] [Thread-123410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:28.838 [DEBUG] [Thread-123410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:38:28.838 [INFO] [Thread-123410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] Compression: none
2025-09-28T11:38:28.846 [DEBUG] [Thread-123410] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:28.903 [DEBUG] [Thread-123410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:28.903 [DEBUG] [Thread-123410] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:28.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:38:28.905 [DEBUG] [Thread-123410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:38:28.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:28.961 [DEBUG] [Thread-123410] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:28.961 [DEBUG] [Thread-123410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:28.961 [DEBUG] [Thread-123410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:28.961 [DEBUG] [Thread-123410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:38:28.961 [DEBUG] [Thread-123410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:28.981 [INFO] [Thread-123410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:28.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-28T11:38:28.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:29.952 [DEBUG] [Thread-123410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:29.952 [DEBUG] [Thread-123410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:30.000 [DEBUG] [Thread-123410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:30.000 [DEBUG] [Thread-123410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:30.009 [DEBUG] [Thread-123410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:30.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:30.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-28T11:38:30.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-28T11:38:30.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:30.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:30.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:30.044 [DEBUG] [Thread-123410] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:31.937 [DEBUG] [Thread-123412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:39.118 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:39.120 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:40.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:38:40.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:38:40.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:38:40.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 38, 22), 20.49, 24.71, 0.0, 11.4, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:38:40.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:38:22
2025-09-28T11:38:40.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:38:40.881 [DEBUG] [Thread-123413] [transport.py] [_log()] starting thread (client mode): 0x2e375f30
2025-09-28T11:38:40.881 [DEBUG] [Thread-123413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:40.902 [DEBUG] [Thread-123413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:38:40.902 [INFO] [Thread-123413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:40.903 [DEBUG] [Thread-123413] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] Compression: none
2025-09-28T11:38:40.904 [DEBUG] [Thread-123413] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:40.911 [DEBUG] [Thread-123413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:40.911 [DEBUG] [Thread-123413] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:40.912 [DEBUG] [Thread-123413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:38:40.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:38:40.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:40.913 [DEBUG] [Thread-123413] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:40.913 [DEBUG] [Thread-123413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:40.913 [DEBUG] [Thread-123413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:40.913 [DEBUG] [Thread-123413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:38:40.913 [DEBUG] [Thread-123413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:40.923 [INFO] [Thread-123413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:40.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:41.690 [DEBUG] [Thread-123413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:41.690 [DEBUG] [Thread-123413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:41.691 [DEBUG] [Thread-123413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:38:41.731 [DEBUG] [Thread-123413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:41.731 [DEBUG] [Thread-123413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:41.734 [DEBUG] [Thread-123413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:41.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:41.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:38:41.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:38:41.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:38:41.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:41.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:38:41.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401474 -999.00  +18.30   4.45     31   +1.20 1 1 1 1 1   888    0 20.23 145.24 ----- 4.2 4.5 258.1 11.4 26.4 -26.0 25.0 -25.0 24.1 -24.4 25.1 -25.7
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:38:41.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401474
2025-09-28T11:38:41.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:38:41.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:38:41.759 [DEBUG] [Thread-123413] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:41.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:38:41.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:38:41.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:38:41.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:38:22', tmtdew=20.49, humidity=24.71, cloud=0.0, wind=11.4, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:38:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:38:41.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-28T11:38:41.855 [DEBUG] [Thread-123416] [transport.py] [_log()] starting thread (client mode): 0x2e3751b0
2025-09-28T11:38:41.856 [DEBUG] [Thread-123416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:41.870 [DEBUG] [Thread-123416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:38:41.870 [INFO] [Thread-123416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] Compression: none
2025-09-28T11:38:41.878 [DEBUG] [Thread-123416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:41.934 [DEBUG] [Thread-123416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:41.935 [DEBUG] [Thread-123416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:41.935 [DEBUG] [Thread-123416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:38:41.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:38:41.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:41.992 [DEBUG] [Thread-123416] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:41.993 [DEBUG] [Thread-123416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:41.993 [DEBUG] [Thread-123416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:41.993 [DEBUG] [Thread-123416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:38:41.993 [DEBUG] [Thread-123416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:42.014 [INFO] [Thread-123416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38: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-28T11:38:42.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:42.975 [DEBUG] [Thread-123416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:42.975 [DEBUG] [Thread-123416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:43.024 [DEBUG] [Thread-123416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:43.024 [DEBUG] [Thread-123416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:43.035 [DEBUG] [Thread-123416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:43.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:43.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-28T11:38:43.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-28T11:38:43.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:43.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:43.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:43.070 [DEBUG] [Thread-123416] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:46.984 [DEBUG] [Thread-123418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:38:53.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:38:53.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:38:53.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:38:53.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 38, 22), 20.49, 24.71, 0.0, 11.4, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:38:53.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:38:22
2025-09-28T11:38:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:38:53.959 [DEBUG] [Thread-123419] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T11:38:53.959 [DEBUG] [Thread-123419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:53.978 [DEBUG] [Thread-123419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:38:53.978 [INFO] [Thread-123419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] Compression: none
2025-09-28T11:38:53.982 [DEBUG] [Thread-123419] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:53.996 [DEBUG] [Thread-123419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:53.996 [DEBUG] [Thread-123419] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:53.996 [DEBUG] [Thread-123419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:38:53.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:38:53.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:53.997 [DEBUG] [Thread-123419] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:53.997 [DEBUG] [Thread-123419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:53.997 [DEBUG] [Thread-123419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:53.997 [DEBUG] [Thread-123419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:38:53.997 [DEBUG] [Thread-123419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:54.016 [INFO] [Thread-123419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:54.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:54.619 [DEBUG] [Thread-123419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:54.619 [DEBUG] [Thread-123419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:54.619 [DEBUG] [Thread-123419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:38:54.660 [DEBUG] [Thread-123419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:54.660 [DEBUG] [Thread-123419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:54.662 [DEBUG] [Thread-123419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:54.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:54.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:38:54.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:38:54.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:38:54.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:54.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:38:54.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:54.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:54.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:38:54.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401821 -999.00  +18.50   5.61     31   +1.40 1 1 1 1 1   888    0 20.32 146.45 ----- 8.3 5.6 262.5 7.3 26.5 -26.0 25.1 -25.2 24.2 -24.1 25.3 -24.6
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401821
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:38:54.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:38:22', tmtdew=20.49, humidity=24.71, cloud=0.0, wind=11.4, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:38:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:38:54.679 [DEBUG] [Thread-123419] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:38:54.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-28T11:38:54.765 [DEBUG] [Thread-123422] [transport.py] [_log()] starting thread (client mode): 0x2b9f3850
2025-09-28T11:38:54.765 [DEBUG] [Thread-123422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:38:54.779 [DEBUG] [Thread-123422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:38:54.779 [INFO] [Thread-123422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] client lang: <none>
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] server lang: <none>
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] kex follows: False
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] Compression: none
2025-09-28T11:38:54.787 [DEBUG] [Thread-123422] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:38:54.846 [DEBUG] [Thread-123422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:38:54.846 [DEBUG] [Thread-123422] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:38:54.847 [DEBUG] [Thread-123422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:38:54.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:38:54.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:38:54.906 [DEBUG] [Thread-123422] [transport.py] [_log()] userauth is OK
2025-09-28T11:38:54.906 [DEBUG] [Thread-123422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:38:54.906 [DEBUG] [Thread-123422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:38:54.906 [DEBUG] [Thread-123422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:38:54.906 [DEBUG] [Thread-123422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:38:54.930 [INFO] [Thread-123422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:38:54.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-28T11:38:54.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:38:55.901 [DEBUG] [Thread-123422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:38:55.901 [DEBUG] [Thread-123422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:38:55.950 [DEBUG] [Thread-123422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:38:55.950 [DEBUG] [Thread-123422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:38:55.958 [DEBUG] [Thread-123422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:38:55.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:38:55.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-28T11:38: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') -> 00000000
2025-09-28T11:38:55.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:38:55.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:38:55.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:38:55.993 [DEBUG] [Thread-123422] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:02.016 [DEBUG] [Thread-123424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:05.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:39:05.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:39:05.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-28T11:39:06.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 38, 53), 20.14, 25.36, 0.0, 10.96, 18.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:39:06.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:38:53
2025-09-28T11:39:06.612 [DEBUG] [Thread-123425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:06.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:39:06.825 [DEBUG] [Thread-123426] [transport.py] [_log()] starting thread (client mode): 0x2e38e5f0
2025-09-28T11:39:06.826 [DEBUG] [Thread-123426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:06.845 [DEBUG] [Thread-123426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:39:06.845 [INFO] [Thread-123426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:06.849 [DEBUG] [Thread-123426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] Compression: none
2025-09-28T11:39:06.850 [DEBUG] [Thread-123426] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:06.867 [DEBUG] [Thread-123426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:06.867 [DEBUG] [Thread-123426] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:06.868 [DEBUG] [Thread-123426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:39:06.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:39:06.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:06.870 [DEBUG] [Thread-123426] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:06.870 [DEBUG] [Thread-123426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:06.870 [DEBUG] [Thread-123426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:06.870 [DEBUG] [Thread-123426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:39:06.870 [DEBUG] [Thread-123426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:06.888 [INFO] [Thread-123426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:06.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:07.702 [DEBUG] [Thread-123426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:07.702 [DEBUG] [Thread-123426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:07.702 [DEBUG] [Thread-123426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:39:07.743 [DEBUG] [Thread-123426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:07.743 [DEBUG] [Thread-123426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:07.746 [DEBUG] [Thread-123426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:07.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:07.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:39:07.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:39:07.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:39:07.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:07.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:39:07.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401821 -999.00  +18.50   5.61     31   +1.40 1 1 1 1 1   888    0 20.32 146.45 ----- 8.3 5.6 262.5 7.3 26.5 -26.0 25.1 -25.2 24.2 -24.1 25.3 -24.6
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:39:07.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401821
2025-09-28T11:39:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:39:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:39:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:39:07.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:39:07.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:39:07.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:38:53', tmtdew=20.14, humidity=25.36, cloud=0.0, wind=10.96, temperature=18.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:38:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:39:07.772 [DEBUG] [Thread-123426] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:07.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-28T11:39:07.872 [DEBUG] [Thread-123429] [transport.py] [_log()] starting thread (client mode): 0x2e3c0100
2025-09-28T11:39:07.872 [DEBUG] [Thread-123429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:07.892 [DEBUG] [Thread-123429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:39:07.892 [INFO] [Thread-123429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:39:07.904 [DEBUG] [Thread-123429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:07.905 [DEBUG] [Thread-123429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:07.906 [DEBUG] [Thread-123429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:07.906 [DEBUG] [Thread-123429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:07.906 [DEBUG] [Thread-123429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:07.906 [DEBUG] [Thread-123429] [transport.py] [_log()] Compression: none
2025-09-28T11:39:07.906 [DEBUG] [Thread-123429] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:07.964 [DEBUG] [Thread-123429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:07.965 [DEBUG] [Thread-123429] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:07.965 [DEBUG] [Thread-123429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:39:07.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:39:07.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:08.023 [DEBUG] [Thread-123429] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:08.023 [DEBUG] [Thread-123429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:08.023 [DEBUG] [Thread-123429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:08.023 [DEBUG] [Thread-123429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:39:08.023 [DEBUG] [Thread-123429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:08.042 [INFO] [Thread-123429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:08.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:39:08.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:09.040 [DEBUG] [Thread-123429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:09.041 [DEBUG] [Thread-123429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:09.088 [DEBUG] [Thread-123429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:09.088 [DEBUG] [Thread-123429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:09.097 [DEBUG] [Thread-123429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:09.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39: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')
2025-09-28T11:39:09.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-28T11:39:09.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:09.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:09.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:09.132 [DEBUG] [Thread-123429] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:17.052 [DEBUG] [Thread-123431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:19.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:39:19.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:39: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-28T11:39:19.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 38, 53), 20.14, 25.36, 0.0, 10.96, 18.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:39:19.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:38:53
2025-09-28T11:39:19.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:39:19.958 [DEBUG] [Thread-123432] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-28T11:39:19.958 [DEBUG] [Thread-123432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:19.972 [DEBUG] [Thread-123432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:39:19.973 [INFO] [Thread-123432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:19.974 [DEBUG] [Thread-123432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] Compression: none
2025-09-28T11:39:19.975 [DEBUG] [Thread-123432] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:19.984 [DEBUG] [Thread-123432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:19.985 [DEBUG] [Thread-123432] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:19.985 [DEBUG] [Thread-123432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:39:19.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:39:19.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:19.986 [DEBUG] [Thread-123432] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:19.986 [DEBUG] [Thread-123432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:19.986 [DEBUG] [Thread-123432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:19.986 [DEBUG] [Thread-123432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:39:19.986 [DEBUG] [Thread-123432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:20.001 [INFO] [Thread-123432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:20.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:20.833 [DEBUG] [Thread-123432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:20.833 [DEBUG] [Thread-123432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:20.834 [DEBUG] [Thread-123432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:39:20.874 [DEBUG] [Thread-123432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:20.875 [DEBUG] [Thread-123432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:20.877 [DEBUG] [Thread-123432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:20.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:20.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:39:20.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:39:20.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:39:20.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:20.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:39:20.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.401821 -999.00  +18.50   5.61     31   +1.40 1 1 1 1 1   888    0 20.32 146.45 ----- 8.3 5.6 262.5 7.3 26.5 -26.0 25.1 -25.2 24.2 -24.1 25.3 -24.6
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:39:20.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.401821
2025-09-28T11:39:20.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:39:20.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:39:20.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:39:20.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:39:20.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:39:20.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:38:53', tmtdew=20.14, humidity=25.36, cloud=0.0, wind=10.96, temperature=18.13, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:38:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:39:20.902 [DEBUG] [Thread-123432] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:20.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:39:20.997 [DEBUG] [Thread-123435] [transport.py] [_log()] starting thread (client mode): 0x2b9f2d10
2025-09-28T11:39:20.997 [DEBUG] [Thread-123435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:21.012 [DEBUG] [Thread-123435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:39:21.012 [INFO] [Thread-123435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:39:21.020 [DEBUG] [Thread-123435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:21.020 [DEBUG] [Thread-123435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:39:21.020 [DEBUG] [Thread-123435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] Compression: none
2025-09-28T11:39:21.021 [DEBUG] [Thread-123435] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:21.079 [DEBUG] [Thread-123435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:21.080 [DEBUG] [Thread-123435] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:21.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:39:21.081 [DEBUG] [Thread-123435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:39:21.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:21.138 [DEBUG] [Thread-123435] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:21.139 [DEBUG] [Thread-123435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:21.139 [DEBUG] [Thread-123435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:21.139 [DEBUG] [Thread-123435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:39:21.139 [DEBUG] [Thread-123435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:21.159 [INFO] [Thread-123435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:21.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-28T11:39:21.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:22.165 [DEBUG] [Thread-123435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:22.165 [DEBUG] [Thread-123435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:22.213 [DEBUG] [Thread-123435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:22.214 [DEBUG] [Thread-123435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:22.223 [DEBUG] [Thread-123435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:22.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:22.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-28T11:39:22.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-28T11:39:22.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:22.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:22.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:22.261 [DEBUG] [Thread-123435] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:32.093 [DEBUG] [Thread-123437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:32.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:39:32.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:39:32.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-28T11:39:32.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 39, 25), 19.79, 25.94, 0.0, 8.52, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:39:32.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:39:25
2025-09-28T11:39:32.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:39:33.119 [DEBUG] [Thread-123438] [transport.py] [_log()] starting thread (client mode): 0x2e3dc400
2025-09-28T11:39:33.119 [DEBUG] [Thread-123438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:33.139 [DEBUG] [Thread-123438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:39:33.139 [INFO] [Thread-123438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:33.142 [DEBUG] [Thread-123438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:33.143 [DEBUG] [Thread-123438] [transport.py] [_log()] Compression: none
2025-09-28T11:39:33.143 [DEBUG] [Thread-123438] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:33.157 [DEBUG] [Thread-123438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:33.157 [DEBUG] [Thread-123438] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:33.157 [DEBUG] [Thread-123438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:39:33.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:39:33.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:33.158 [DEBUG] [Thread-123438] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:33.158 [DEBUG] [Thread-123438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:33.158 [DEBUG] [Thread-123438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:33.158 [DEBUG] [Thread-123438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:39:33.158 [DEBUG] [Thread-123438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:33.167 [INFO] [Thread-123438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:33.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:33.751 [DEBUG] [Thread-123438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:33.751 [DEBUG] [Thread-123438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:33.751 [DEBUG] [Thread-123438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:39:33.792 [DEBUG] [Thread-123438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:33.792 [DEBUG] [Thread-123438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:33.794 [DEBUG] [Thread-123438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:33.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:33.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:39:33.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:39:33.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:39:33.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:33.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:39:33.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402168 -999.00  +18.60   6.65     31   +1.50 1 1 1 1 1   888    0 21.17 172.79 ----- 6.2 6.7 272.6 12.6 26.7 -25.8 25.2 -24.6 24.2 -24.0 25.4 -25.0
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402168
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:39:33.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:39:25', tmtdew=19.79, humidity=25.94, cloud=0.0, wind=8.52, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:39:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:39:33.813 [DEBUG] [Thread-123438] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:33.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-28T11:39:33.900 [DEBUG] [Thread-123441] [transport.py] [_log()] starting thread (client mode): 0x2b9b9150
2025-09-28T11:39:33.900 [DEBUG] [Thread-123441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:33.915 [DEBUG] [Thread-123441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:39:33.916 [INFO] [Thread-123441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:39:33.923 [DEBUG] [Thread-123441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:33.923 [DEBUG] [Thread-123441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:39:33.923 [DEBUG] [Thread-123441] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] Compression: none
2025-09-28T11:39:33.924 [DEBUG] [Thread-123441] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:33.986 [DEBUG] [Thread-123441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:33.986 [DEBUG] [Thread-123441] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:33.986 [DEBUG] [Thread-123441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:39:33.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:39:33.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:34.047 [DEBUG] [Thread-123441] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:34.047 [DEBUG] [Thread-123441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:34.047 [DEBUG] [Thread-123441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:34.047 [DEBUG] [Thread-123441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:39:34.047 [DEBUG] [Thread-123441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:34.064 [INFO] [Thread-123441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:34.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-28T11:39:34.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:35.040 [DEBUG] [Thread-123441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:35.040 [DEBUG] [Thread-123441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:35.091 [DEBUG] [Thread-123441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:35.091 [DEBUG] [Thread-123441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:35.100 [DEBUG] [Thread-123441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:35.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:35.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')
2025-09-28T11:39:35.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') -> 00000000
2025-09-28T11:39:35.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:35.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:35.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:35.135 [DEBUG] [Thread-123441] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:39.261 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:39.262 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:45.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:39:45.137 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:39:45.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-28T11:39:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 39, 25), 19.79, 25.94, 0.0, 8.52, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:39:45.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:39:25
2025-09-28T11:39:45.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:39:45.975 [DEBUG] [Thread-123443] [transport.py] [_log()] starting thread (client mode): 0x2e38cfa0
2025-09-28T11:39:45.975 [DEBUG] [Thread-123443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:45.993 [DEBUG] [Thread-123443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:39:45.993 [INFO] [Thread-123443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:45.996 [DEBUG] [Thread-123443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] Compression: none
2025-09-28T11:39:45.997 [DEBUG] [Thread-123443] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:46.011 [DEBUG] [Thread-123443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:46.012 [DEBUG] [Thread-123443] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:46.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:39:46.013 [DEBUG] [Thread-123443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:39:46.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:46.014 [DEBUG] [Thread-123443] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:46.015 [DEBUG] [Thread-123443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:46.015 [DEBUG] [Thread-123443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:46.015 [DEBUG] [Thread-123443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:39:46.015 [DEBUG] [Thread-123443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:46.039 [INFO] [Thread-123443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:46.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:46.799 [DEBUG] [Thread-123443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:46.799 [DEBUG] [Thread-123443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:46.800 [DEBUG] [Thread-123443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:39:46.840 [DEBUG] [Thread-123443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:46.840 [DEBUG] [Thread-123443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:46.843 [DEBUG] [Thread-123443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:46.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:46.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:39:46.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:39:46.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:39:46.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:46.866 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:39:46.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402168 -999.00  +18.60   6.65     31   +1.50 1 1 1 1 1   888    0 21.17 172.79 ----- 6.2 6.7 272.6 12.6 26.7 -25.8 25.2 -24.6 24.2 -24.0 25.4 -25.0
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:39:46.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402168
2025-09-28T11:39:46.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:39:46.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:39:46.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:39:46.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:39:46.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:39:46.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:39:25', tmtdew=19.79, humidity=25.94, cloud=0.0, wind=8.52, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:39:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:39:46.869 [DEBUG] [Thread-123443] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:46.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:39:46.964 [DEBUG] [Thread-123446] [transport.py] [_log()] starting thread (client mode): 0x2b96d990
2025-09-28T11:39:46.964 [DEBUG] [Thread-123446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:46.979 [DEBUG] [Thread-123446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:39:46.979 [INFO] [Thread-123446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:46.986 [DEBUG] [Thread-123446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] Compression: none
2025-09-28T11:39:46.987 [DEBUG] [Thread-123446] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:47.041 [DEBUG] [Thread-123446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:47.042 [DEBUG] [Thread-123446] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:47.042 [DEBUG] [Thread-123446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:39:47.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:39:47.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:47.098 [DEBUG] [Thread-123446] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:47.098 [DEBUG] [Thread-123446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:47.098 [DEBUG] [Thread-123446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:47.099 [DEBUG] [Thread-123446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:39:47.099 [DEBUG] [Thread-123446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:47.113 [INFO] [Thread-123446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:47.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:39:47.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:47.121 [DEBUG] [Thread-123448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:39:48.091 [DEBUG] [Thread-123446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:48.092 [DEBUG] [Thread-123446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:48.139 [DEBUG] [Thread-123446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:48.140 [DEBUG] [Thread-123446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:48.149 [DEBUG] [Thread-123446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:48.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:48.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-28T11:39:48.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T11:39:48.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:48.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:48.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:48.185 [DEBUG] [Thread-123446] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:58.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:39:58.187 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:39:58.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-28T11:39:58.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 39, 25), 19.79, 25.94, 0.0, 8.52, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:39:58.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:39:25
2025-09-28T11:39:58.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:39:59.056 [DEBUG] [Thread-123449] [transport.py] [_log()] starting thread (client mode): 0x2b9f3010
2025-09-28T11:39:59.056 [DEBUG] [Thread-123449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:59.071 [DEBUG] [Thread-123449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:39:59.071 [INFO] [Thread-123449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:59.072 [DEBUG] [Thread-123449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] Compression: none
2025-09-28T11:39:59.073 [DEBUG] [Thread-123449] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:59.081 [DEBUG] [Thread-123449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:59.081 [DEBUG] [Thread-123449] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:59.081 [DEBUG] [Thread-123449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:39:59.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:39:59.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:59.082 [DEBUG] [Thread-123449] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:59.082 [DEBUG] [Thread-123449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:59.082 [DEBUG] [Thread-123449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:59.082 [DEBUG] [Thread-123449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:39:59.082 [DEBUG] [Thread-123449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:59.095 [INFO] [Thread-123449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:59.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:39:59.655 [DEBUG] [Thread-123449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:39:59.655 [DEBUG] [Thread-123449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:39:59.655 [DEBUG] [Thread-123449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:39:59.696 [DEBUG] [Thread-123449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:39:59.696 [DEBUG] [Thread-123449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:39:59.697 [DEBUG] [Thread-123449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:39:59.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:39:59.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:39:59.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:39:59.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:39:59.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:39:59.709 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:39:59.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402516 -999.00  +18.70  11.58     31   +1.60 1 1 1 1 1   888    0 21.30 173.58 ----- 11.6 11.6 266.7 15.6 26.6 -27.5 25.3 -25.1 24.3 -24.3 25.6 -24.8
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402516
2025-09-28T11:39:59.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:39:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:39:59.710 [DEBUG] [Thread-123449] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:39:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:39:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:39:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:39:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:39:25', tmtdew=19.79, humidity=25.94, cloud=0.0, wind=8.52, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:39:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:39:59.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:39:59.796 [DEBUG] [Thread-123452] [transport.py] [_log()] starting thread (client mode): 0x2b9f3e50
2025-09-28T11:39:59.796 [DEBUG] [Thread-123452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:39:59.811 [DEBUG] [Thread-123452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:39:59.811 [INFO] [Thread-123452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] client lang: <none>
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] server lang: <none>
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] kex follows: False
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] Compression: none
2025-09-28T11:39:59.819 [DEBUG] [Thread-123452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:39:59.891 [DEBUG] [Thread-123452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:39:59.891 [DEBUG] [Thread-123452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:39:59.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:39:59.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:39:59.892 [DEBUG] [Thread-123452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:39:59.966 [DEBUG] [Thread-123452] [transport.py] [_log()] userauth is OK
2025-09-28T11:39:59.966 [DEBUG] [Thread-123452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:39:59.966 [DEBUG] [Thread-123452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:39:59.966 [DEBUG] [Thread-123452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:39:59.966 [DEBUG] [Thread-123452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:39:59.981 [INFO] [Thread-123452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:39:59.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:39:59.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:00.961 [DEBUG] [Thread-123452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:00.962 [DEBUG] [Thread-123452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:01.009 [DEBUG] [Thread-123452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:01.009 [DEBUG] [Thread-123452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:01.018 [DEBUG] [Thread-123452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:01.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:01.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-28T11:40:01.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-28T11:40:01.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:01.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:01.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:01.053 [DEBUG] [Thread-123452] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:02.158 [DEBUG] [Thread-123454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:06.661 [DEBUG] [Thread-123455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:11.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:40:11.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:40:11.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-28T11:40:11.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 39, 57), 19.61, 26.25, 0.0, 12.18, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:40:11.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:39:57
2025-09-28T11:40:11.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:40:11.892 [DEBUG] [Thread-123456] [transport.py] [_log()] starting thread (client mode): 0x2e38cbb0
2025-09-28T11:40:11.892 [DEBUG] [Thread-123456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:11.912 [DEBUG] [Thread-123456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:40:11.912 [INFO] [Thread-123456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:11.916 [DEBUG] [Thread-123456] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] Compression: none
2025-09-28T11:40:11.917 [DEBUG] [Thread-123456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:11.936 [DEBUG] [Thread-123456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:11.936 [DEBUG] [Thread-123456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:11.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:40:11.937 [DEBUG] [Thread-123456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:40:11.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:11.939 [DEBUG] [Thread-123456] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:11.939 [DEBUG] [Thread-123456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:11.940 [DEBUG] [Thread-123456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:11.940 [DEBUG] [Thread-123456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:40:11.940 [DEBUG] [Thread-123456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:11.965 [INFO] [Thread-123456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:11.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:17.198 [DEBUG] [Thread-123458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:19.599 [DEBUG] [Thread-123456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:19.600 [DEBUG] [Thread-123456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:19.600 [DEBUG] [Thread-123456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:40:19.640 [DEBUG] [Thread-123456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:19.641 [DEBUG] [Thread-123456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:19.644 [DEBUG] [Thread-123456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:19.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:19.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:40:19.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:40:19.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:40:19.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:19.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:40:19.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:19.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:40:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402516 -999.00  +18.70  11.58     31   +1.60 1 1 1 1 1   888    0 21.30 173.58 ----- 11.6 11.6 266.7 15.6 26.6 -27.5 25.3 -25.1 24.3 -24.3 25.6 -24.8
2025-09-28T11:40:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:40:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:40:19.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402516
2025-09-28T11:40:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:40:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:40:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:40:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:40:19.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:40:19.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:39:57', tmtdew=19.61, humidity=26.25, cloud=0.0, wind=12.18, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:39:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:40:19.668 [DEBUG] [Thread-123456] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:19.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-28T11:40:19.764 [DEBUG] [Thread-123460] [transport.py] [_log()] starting thread (client mode): 0x2e3f8160
2025-09-28T11:40:19.765 [DEBUG] [Thread-123460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:19.783 [DEBUG] [Thread-123460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:40:19.783 [INFO] [Thread-123460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:19.791 [DEBUG] [Thread-123460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] Compression: none
2025-09-28T11:40:19.792 [DEBUG] [Thread-123460] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:19.851 [DEBUG] [Thread-123460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:19.851 [DEBUG] [Thread-123460] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:19.852 [DEBUG] [Thread-123460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:40:19.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:40:19.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:19.909 [DEBUG] [Thread-123460] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:19.910 [DEBUG] [Thread-123460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:19.910 [DEBUG] [Thread-123460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:19.910 [DEBUG] [Thread-123460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:40:19.910 [DEBUG] [Thread-123460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:19.934 [INFO] [Thread-123460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:19.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:40:19.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:20.924 [DEBUG] [Thread-123460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:20.924 [DEBUG] [Thread-123460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:20.972 [DEBUG] [Thread-123460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:20.973 [DEBUG] [Thread-123460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:20.982 [DEBUG] [Thread-123460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:20.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:20.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-28T11:40:21.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-28T11:40:21.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:21.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:21.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:21.022 [DEBUG] [Thread-123460] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:31.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:40:31.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:40:31.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-28T11:40:31.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 39, 57), 19.61, 26.25, 0.0, 12.18, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:40:31.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:39:57
2025-09-28T11:40:31.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:40:31.892 [DEBUG] [Thread-123462] [transport.py] [_log()] starting thread (client mode): 0x2e38ea40
2025-09-28T11:40:31.892 [DEBUG] [Thread-123462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:31.912 [DEBUG] [Thread-123462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:40:31.912 [INFO] [Thread-123462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] Compression: none
2025-09-28T11:40:31.914 [DEBUG] [Thread-123462] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:31.926 [DEBUG] [Thread-123462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:31.926 [DEBUG] [Thread-123462] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:31.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:40:31.926 [DEBUG] [Thread-123462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:40:31.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:31.927 [DEBUG] [Thread-123462] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:31.927 [DEBUG] [Thread-123462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:31.927 [DEBUG] [Thread-123462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:31.927 [DEBUG] [Thread-123462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:40:31.927 [DEBUG] [Thread-123462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:31.936 [INFO] [Thread-123462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:31.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:32.228 [DEBUG] [Thread-123464 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:32.495 [DEBUG] [Thread-123462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:32.496 [DEBUG] [Thread-123462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:32.496 [DEBUG] [Thread-123462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:40:32.536 [DEBUG] [Thread-123462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:32.536 [DEBUG] [Thread-123462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:32.541 [DEBUG] [Thread-123462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:32.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:32.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:40:32.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:40:32.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:40:32.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:32.564 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:40:32.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:32.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402862 -999.00  +18.70   6.86     33   +2.20 1 1 1 1 1   888    0 21.33 165.75 ----- 8.1 6.9 249.9 14.1 26.6 -27.0 25.3 -24.9 24.4 -26.9 25.5 -27.4
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402862
2025-09-28T11:40:32.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:40:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:40:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:40:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:40:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:40:32.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:39:57', tmtdew=19.61, humidity=26.25, cloud=0.0, wind=12.18, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:40:32.570 [DEBUG] [Thread-123462] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:32.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-28T11:40:32.656 [DEBUG] [Thread-123466] [transport.py] [_log()] starting thread (client mode): 0x2b9dcbb0
2025-09-28T11:40:32.656 [DEBUG] [Thread-123466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:32.678 [DEBUG] [Thread-123466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:40:32.678 [INFO] [Thread-123466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:32.686 [DEBUG] [Thread-123466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:32.687 [DEBUG] [Thread-123466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:32.687 [DEBUG] [Thread-123466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:32.687 [DEBUG] [Thread-123466] [transport.py] [_log()] Compression: none
2025-09-28T11:40:32.687 [DEBUG] [Thread-123466] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:32.744 [DEBUG] [Thread-123466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:32.745 [DEBUG] [Thread-123466] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:32.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:40:32.745 [DEBUG] [Thread-123466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:40:32.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:32.803 [DEBUG] [Thread-123466] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:32.803 [DEBUG] [Thread-123466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:32.803 [DEBUG] [Thread-123466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:32.803 [DEBUG] [Thread-123466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:40:32.803 [DEBUG] [Thread-123466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:32.822 [INFO] [Thread-123466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:32.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-28T11:40:32.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:33.813 [DEBUG] [Thread-123466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:33.813 [DEBUG] [Thread-123466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:33.861 [DEBUG] [Thread-123466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:33.861 [DEBUG] [Thread-123466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:33.871 [DEBUG] [Thread-123466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:33.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:33.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')
2025-09-28T11:40:33.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-28T11:40:33.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:33.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:33.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:33.905 [DEBUG] [Thread-123466] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:39.403 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:39.404 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:40:43.898 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:40:43.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:40:44.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 40, 29), 19.22, 26.98, 0.0, 10.98, 18.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:40:44.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:40:29
2025-09-28T11:40:44.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:40:44.744 [DEBUG] [Thread-123468] [transport.py] [_log()] starting thread (client mode): 0x2e38ccd0
2025-09-28T11:40:44.744 [DEBUG] [Thread-123468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:44.765 [DEBUG] [Thread-123468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:40:44.765 [INFO] [Thread-123468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] Compression: none
2025-09-28T11:40:44.768 [DEBUG] [Thread-123468] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:44.785 [DEBUG] [Thread-123468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:44.785 [DEBUG] [Thread-123468] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:44.785 [DEBUG] [Thread-123468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:40:44.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:40:44.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:44.786 [DEBUG] [Thread-123468] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:44.786 [DEBUG] [Thread-123468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:44.786 [DEBUG] [Thread-123468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:44.786 [DEBUG] [Thread-123468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:40:44.786 [DEBUG] [Thread-123468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:44.796 [INFO] [Thread-123468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:44.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:45.394 [DEBUG] [Thread-123468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:45.394 [DEBUG] [Thread-123468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:45.394 [DEBUG] [Thread-123468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:40:45.435 [DEBUG] [Thread-123468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:45.435 [DEBUG] [Thread-123468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:45.437 [DEBUG] [Thread-123468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:45.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:45.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:40:45.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:40:45.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:40:45.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:45.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:40:45.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402862 -999.00  +18.70   6.86     33   +2.20 1 1 1 1 1   888    0 21.33 165.75 ----- 8.1 6.9 249.9 14.1 26.6 -27.0 25.3 -24.9 24.4 -26.9 25.5 -27.4
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402862
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:40:45.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:40:45.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:40:45.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:40:29', tmtdew=19.22, humidity=26.98, cloud=0.0, wind=10.98, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:40:45.457 [DEBUG] [Thread-123468] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:45.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:40:45.543 [DEBUG] [Thread-123471] [transport.py] [_log()] starting thread (client mode): 0x2e38d330
2025-09-28T11:40:45.543 [DEBUG] [Thread-123471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:45.560 [DEBUG] [Thread-123471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:40:45.560 [INFO] [Thread-123471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] Compression: none
2025-09-28T11:40:45.568 [DEBUG] [Thread-123471] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:45.630 [DEBUG] [Thread-123471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:45.630 [DEBUG] [Thread-123471] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:45.630 [DEBUG] [Thread-123471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:40:45.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:40:45.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:45.687 [DEBUG] [Thread-123471] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:45.687 [DEBUG] [Thread-123471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:45.687 [DEBUG] [Thread-123471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:45.687 [DEBUG] [Thread-123471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:40:45.687 [DEBUG] [Thread-123471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:45.701 [INFO] [Thread-123471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:45.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-28T11:40:45.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:46.660 [DEBUG] [Thread-123471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:46.660 [DEBUG] [Thread-123471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:46.709 [DEBUG] [Thread-123471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:46.709 [DEBUG] [Thread-123471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:46.718 [DEBUG] [Thread-123471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:46.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:46.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-28T11:40:46.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-28T11:40:46.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:46.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:46.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:46.749 [DEBUG] [Thread-123471] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:47.273 [DEBUG] [Thread-123473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:40:56.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:40:56.752 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:40:56.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-28T11:40:57.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 40, 29), 19.22, 26.98, 0.0, 10.98, 18.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:40:57.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:40:29
2025-09-28T11:40:57.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:40:57.591 [DEBUG] [Thread-123474] [transport.py] [_log()] starting thread (client mode): 0x2b9ae7a0
2025-09-28T11:40:57.591 [DEBUG] [Thread-123474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:57.607 [DEBUG] [Thread-123474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:40:57.607 [INFO] [Thread-123474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:57.609 [DEBUG] [Thread-123474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:57.610 [DEBUG] [Thread-123474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:57.610 [DEBUG] [Thread-123474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:57.610 [DEBUG] [Thread-123474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:57.610 [DEBUG] [Thread-123474] [transport.py] [_log()] Compression: none
2025-09-28T11:40:57.610 [DEBUG] [Thread-123474] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:57.626 [DEBUG] [Thread-123474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:57.626 [DEBUG] [Thread-123474] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:57.627 [DEBUG] [Thread-123474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:40:57.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:40:57.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:57.629 [DEBUG] [Thread-123474] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:57.629 [DEBUG] [Thread-123474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:57.629 [DEBUG] [Thread-123474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:57.629 [DEBUG] [Thread-123474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:40:57.629 [DEBUG] [Thread-123474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:57.649 [INFO] [Thread-123474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:57.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:58.428 [DEBUG] [Thread-123474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:58.429 [DEBUG] [Thread-123474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:58.429 [DEBUG] [Thread-123474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:40:58.469 [DEBUG] [Thread-123474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:58.470 [DEBUG] [Thread-123474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:58.472 [DEBUG] [Thread-123474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:58.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:58.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:40:58.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:40:58.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:40:58.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:58.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:40:58.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:58.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:58.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:40:58.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.402862 -999.00  +18.70   6.86     33   +2.20 1 1 1 1 1   888    0 21.33 165.75 ----- 8.1 6.9 249.9 14.1 26.6 -27.0 25.3 -24.9 24.4 -26.9 25.5 -27.4
2025-09-28T11:40:58.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:40:58.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:40:58.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.402862
2025-09-28T11:40:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:40:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:40:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:40:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:40:58.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:40:58.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:40:29', tmtdew=19.22, humidity=26.98, cloud=0.0, wind=10.98, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:40:58.496 [DEBUG] [Thread-123474] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:40:58.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-28T11:40:58.590 [DEBUG] [Thread-123477] [transport.py] [_log()] starting thread (client mode): 0x30dddc00
2025-09-28T11:40:58.590 [DEBUG] [Thread-123477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:40:58.605 [DEBUG] [Thread-123477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:40:58.605 [INFO] [Thread-123477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:58.613 [DEBUG] [Thread-123477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] client lang: <none>
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] server lang: <none>
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] kex follows: False
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] Compression: none
2025-09-28T11:40:58.614 [DEBUG] [Thread-123477] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:40:58.671 [DEBUG] [Thread-123477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:40:58.671 [DEBUG] [Thread-123477] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:40:58.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:40:58.672 [DEBUG] [Thread-123477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:40:58.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:40:58.727 [DEBUG] [Thread-123477] [transport.py] [_log()] userauth is OK
2025-09-28T11:40:58.727 [DEBUG] [Thread-123477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:40:58.727 [DEBUG] [Thread-123477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:40:58.727 [DEBUG] [Thread-123477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:40:58.727 [DEBUG] [Thread-123477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:40:58.746 [INFO] [Thread-123477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:40:58.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-28T11:40:58.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:40:59.737 [DEBUG] [Thread-123477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:40:59.738 [DEBUG] [Thread-123477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:40:59.785 [DEBUG] [Thread-123477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:40:59.785 [DEBUG] [Thread-123477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:40:59.794 [DEBUG] [Thread-123477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:40:59.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:40:59.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-28T11:40:59.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-28T11:40:59.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:40:59.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:40:59.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:40:59.829 [DEBUG] [Thread-123477] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:02.308 [DEBUG] [Thread-123479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:06.711 [DEBUG] [Thread-123480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:41:09.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:41:09.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:41:10.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 41, 1), 19.42, 26.62, 0.0, 14.66, 18.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:41:10.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:41:01
2025-09-28T11:41:10.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:41:10.656 [DEBUG] [Thread-123481] [transport.py] [_log()] starting thread (client mode): 0x2e38c550
2025-09-28T11:41:10.656 [DEBUG] [Thread-123481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:10.676 [DEBUG] [Thread-123481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:41:10.676 [INFO] [Thread-123481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] Compression: none
2025-09-28T11:41:10.679 [DEBUG] [Thread-123481] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:10.696 [DEBUG] [Thread-123481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:10.697 [DEBUG] [Thread-123481] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:10.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:41:10.698 [DEBUG] [Thread-123481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:41:10.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:10.700 [DEBUG] [Thread-123481] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:10.700 [DEBUG] [Thread-123481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:10.700 [DEBUG] [Thread-123481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:10.700 [DEBUG] [Thread-123481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:41:10.700 [DEBUG] [Thread-123481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:10.718 [INFO] [Thread-123481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:10.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:11.309 [DEBUG] [Thread-123481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:11.309 [DEBUG] [Thread-123481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:11.309 [DEBUG] [Thread-123481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:41:11.350 [DEBUG] [Thread-123481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:11.351 [DEBUG] [Thread-123481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:11.353 [DEBUG] [Thread-123481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:11.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:11.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:41:11.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:41:11.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:41:11.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:11.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:41:11.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:11.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:11.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:41:11.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.403210 -999.00  +18.30  16.86     34   +2.10 1 1 1 1 1   888    0 20.51 156.37 ----- 13.8 16.9 276.2 23.3 26.4 -27.0 25.2 -26.5 24.1 -25.0 25.6 -26.4
2025-09-28T11:41:11.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:41:11.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:41:11.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.403210
2025-09-28T11:41:11.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:41:11.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:41:11.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:41:11.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:41:11.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:41:11.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:41:01', tmtdew=19.42, humidity=26.62, cloud=0.0, wind=14.66, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:41:11.372 [DEBUG] [Thread-123481] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:11.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-28T11:41:11.469 [DEBUG] [Thread-123484] [transport.py] [_log()] starting thread (client mode): 0x2b9ac310
2025-09-28T11:41:11.469 [DEBUG] [Thread-123484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:11.484 [DEBUG] [Thread-123484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:41:11.485 [INFO] [Thread-123484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:41:11.492 [DEBUG] [Thread-123484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:11.492 [DEBUG] [Thread-123484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:11.493 [DEBUG] [Thread-123484] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] Compression: none
2025-09-28T11:41:11.494 [DEBUG] [Thread-123484] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:11.550 [DEBUG] [Thread-123484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:11.550 [DEBUG] [Thread-123484] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:11.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:41:11.552 [DEBUG] [Thread-123484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:41:11.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:11.607 [DEBUG] [Thread-123484] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:11.607 [DEBUG] [Thread-123484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:11.608 [DEBUG] [Thread-123484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:11.608 [DEBUG] [Thread-123484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:41:11.608 [DEBUG] [Thread-123484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:11.626 [INFO] [Thread-123484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:11.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-28T11:41:11.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:12.604 [DEBUG] [Thread-123484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:12.604 [DEBUG] [Thread-123484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:12.652 [DEBUG] [Thread-123484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:12.653 [DEBUG] [Thread-123484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:12.661 [DEBUG] [Thread-123484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:12.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:12.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-28T11:41:12.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-28T11:41:12.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:12.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:12.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:12.696 [DEBUG] [Thread-123484] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:17.335 [DEBUG] [Thread-123486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:22.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:41:22.698 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:41:22.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-28T11:41:23.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 41, 1), 19.42, 26.62, 0.0, 14.66, 18.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:41:23.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:41:01
2025-09-28T11:41:23.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:41:23.557 [DEBUG] [Thread-123487] [transport.py] [_log()] starting thread (client mode): 0x2b9ac220
2025-09-28T11:41:23.557 [DEBUG] [Thread-123487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:23.578 [DEBUG] [Thread-123487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:41:23.578 [INFO] [Thread-123487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:23.582 [DEBUG] [Thread-123487] [transport.py] [_log()] Compression: none
2025-09-28T11:41:23.583 [DEBUG] [Thread-123487] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:23.600 [DEBUG] [Thread-123487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:23.601 [DEBUG] [Thread-123487] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:23.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:41:23.601 [DEBUG] [Thread-123487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:41:23.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:23.602 [DEBUG] [Thread-123487] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:23.602 [DEBUG] [Thread-123487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:23.602 [DEBUG] [Thread-123487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:23.602 [DEBUG] [Thread-123487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:41:23.602 [DEBUG] [Thread-123487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:23.617 [INFO] [Thread-123487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:23.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:24.366 [DEBUG] [Thread-123487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:24.366 [DEBUG] [Thread-123487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:24.367 [DEBUG] [Thread-123487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:41:24.407 [DEBUG] [Thread-123487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:24.408 [DEBUG] [Thread-123487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:24.410 [DEBUG] [Thread-123487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:24.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:24.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:41:24.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:41:24.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:41:24.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:24.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:41:24.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:24.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:24.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:41:24.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.403210 -999.00  +18.30  16.86     34   +2.10 1 1 1 1 1   888    0 20.51 156.37 ----- 13.8 16.9 276.2 23.3 26.4 -27.0 25.2 -26.5 24.1 -25.0 25.6 -26.4
2025-09-28T11:41:24.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:41:24.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:41:24.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.403210
2025-09-28T11:41:24.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:41:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:41:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:41:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:41:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:41:24.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:41:01', tmtdew=19.42, humidity=26.62, cloud=0.0, wind=14.66, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:41:24.436 [DEBUG] [Thread-123487] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:24.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-28T11:41:24.534 [DEBUG] [Thread-123490] [transport.py] [_log()] starting thread (client mode): 0x2e38d330
2025-09-28T11:41:24.534 [DEBUG] [Thread-123490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:24.549 [DEBUG] [Thread-123490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:41:24.549 [INFO] [Thread-123490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:41:24.556 [DEBUG] [Thread-123490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:24.556 [DEBUG] [Thread-123490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:24.557 [DEBUG] [Thread-123490] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] Compression: none
2025-09-28T11:41:24.558 [DEBUG] [Thread-123490] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:24.618 [DEBUG] [Thread-123490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:24.618 [DEBUG] [Thread-123490] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:24.618 [DEBUG] [Thread-123490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:41:24.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:41:24.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:24.675 [DEBUG] [Thread-123490] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:24.675 [DEBUG] [Thread-123490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:24.675 [DEBUG] [Thread-123490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:24.675 [DEBUG] [Thread-123490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:41:24.675 [DEBUG] [Thread-123490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:24.689 [INFO] [Thread-123490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:24.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-28T11:41:24.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:25.682 [DEBUG] [Thread-123490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:25.683 [DEBUG] [Thread-123490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:25.730 [DEBUG] [Thread-123490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:25.730 [DEBUG] [Thread-123490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:25.739 [DEBUG] [Thread-123490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:25.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:25.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-28T11:41:25.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') -> 00000000
2025-09-28T11:41:25.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:25.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:25.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:25.774 [DEBUG] [Thread-123490] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:32.380 [DEBUG] [Thread-123492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:35.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:41:35.777 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:41:35.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-28T11:41:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 41, 33), 19.29, 26.86, 0.0, 12.44, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:41:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:41:33
2025-09-28T11:41:36.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:41:36.605 [DEBUG] [Thread-123493] [transport.py] [_log()] starting thread (client mode): 0x2b9ae500
2025-09-28T11:41:36.605 [DEBUG] [Thread-123493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:36.626 [DEBUG] [Thread-123493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:41:36.626 [INFO] [Thread-123493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] Compression: none
2025-09-28T11:41:36.629 [DEBUG] [Thread-123493] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:36.647 [DEBUG] [Thread-123493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:36.648 [DEBUG] [Thread-123493] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:36.648 [DEBUG] [Thread-123493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:41:36.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:41:36.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:36.651 [DEBUG] [Thread-123493] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:36.651 [DEBUG] [Thread-123493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:36.651 [DEBUG] [Thread-123493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:36.651 [DEBUG] [Thread-123493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:41:36.651 [DEBUG] [Thread-123493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:36.677 [INFO] [Thread-123493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:36.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:37.384 [DEBUG] [Thread-123493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:37.385 [DEBUG] [Thread-123493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:37.385 [DEBUG] [Thread-123493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:41:37.425 [DEBUG] [Thread-123493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:37.425 [DEBUG] [Thread-123493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:37.428 [DEBUG] [Thread-123493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:37.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:37.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:41:37.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:41:37.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:41:37.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:37.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:41:37.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:37.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:37.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:41:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.403210 -999.00  +18.30  16.86     34   +2.10 1 1 1 1 1   888    0 20.51 156.37 ----- 13.8 16.9 276.2 23.3 26.4 -27.0 25.2 -26.5 24.1 -25.0 25.6 -26.4
2025-09-28T11:41:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:41:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:41:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.403210
2025-09-28T11:41:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:41:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:41:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:41:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:41:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:41:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:41:33', tmtdew=19.29, humidity=26.86, cloud=0.0, wind=12.44, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:40:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:41:37.451 [DEBUG] [Thread-123493] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:37.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-28T11:41:37.548 [DEBUG] [Thread-123496] [transport.py] [_log()] starting thread (client mode): 0x2b9ae320
2025-09-28T11:41:37.548 [DEBUG] [Thread-123496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:37.563 [DEBUG] [Thread-123496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:41:37.563 [INFO] [Thread-123496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:37.571 [DEBUG] [Thread-123496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:37.572 [DEBUG] [Thread-123496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:37.572 [DEBUG] [Thread-123496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:37.572 [DEBUG] [Thread-123496] [transport.py] [_log()] Compression: none
2025-09-28T11:41:37.572 [DEBUG] [Thread-123496] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:37.627 [DEBUG] [Thread-123496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:37.627 [DEBUG] [Thread-123496] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:37.628 [DEBUG] [Thread-123496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:41:37.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:41:37.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:37.683 [DEBUG] [Thread-123496] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:37.683 [DEBUG] [Thread-123496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:37.683 [DEBUG] [Thread-123496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:37.684 [DEBUG] [Thread-123496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:41:37.684 [DEBUG] [Thread-123496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:37.702 [INFO] [Thread-123496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:37.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-28T11:41:37.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:38.673 [DEBUG] [Thread-123496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:38.673 [DEBUG] [Thread-123496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:38.721 [DEBUG] [Thread-123496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:38.721 [DEBUG] [Thread-123496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:38.730 [DEBUG] [Thread-123496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:38.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:38.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-28T11:41:38.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-28T11:41:38.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:38.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:38.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:38.766 [DEBUG] [Thread-123496] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:39.545 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:39.546 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:47.409 [DEBUG] [Thread-123498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:41:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:41:48.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:41:48.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-28T11:41:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 41, 33), 19.29, 26.86, 0.0, 12.44, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:41:49.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:41:33
2025-09-28T11:41:49.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:41:49.588 [DEBUG] [Thread-123499] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T11:41:49.588 [DEBUG] [Thread-123499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:41:49.609 [DEBUG] [Thread-123499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:41:49.609 [INFO] [Thread-123499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:41:49.611 [DEBUG] [Thread-123499] [transport.py] [_log()] client lang: <none>
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] server lang: <none>
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] kex follows: False
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] Compression: none
2025-09-28T11:41:49.612 [DEBUG] [Thread-123499] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:41:49.626 [DEBUG] [Thread-123499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:41:49.627 [DEBUG] [Thread-123499] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:41:49.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:41:49.629 [DEBUG] [Thread-123499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:41:49.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:41:49.631 [DEBUG] [Thread-123499] [transport.py] [_log()] userauth is OK
2025-09-28T11:41:49.631 [DEBUG] [Thread-123499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:41:49.631 [DEBUG] [Thread-123499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:41:49.631 [DEBUG] [Thread-123499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:41:49.631 [DEBUG] [Thread-123499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:41:49.655 [INFO] [Thread-123499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:41:49.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:41:50.263 [DEBUG] [Thread-123499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:41:50.263 [DEBUG] [Thread-123499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:41:50.263 [DEBUG] [Thread-123499] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:41:50.304 [DEBUG] [Thread-123499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:41:50.305 [DEBUG] [Thread-123499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:41:50.308 [DEBUG] [Thread-123499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:41:50.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:41:50.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:41:50.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:41:50.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:41:50.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:41:50.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:41:50.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:41:50.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.403904 -999.00  +18.30  11.95     35   +2.50 1 1 1 1 1   888    0 20.73 153.18 ----- 7.0 11.9 212.4 16.9 26.4 -27.2 25.1 -25.1 24.1 -24.7 25.1 -27.5
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.403904
2025-09-28T11:41:50.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:41:50.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:41:50.334 [DEBUG] [Thread-123499] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:41:50.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:41:50.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:41:50.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:41:50.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:41:33', tmtdew=19.29, humidity=26.86, cloud=0.0, wind=12.44, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:41:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:41:50.419 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:42:02.446 [DEBUG] [Thread-123502 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:06.740 [DEBUG] [Thread-123503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:17.486 [DEBUG] [Thread-123504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:32.516 [DEBUG] [Thread-123505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:39.689 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:39.690 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:42:47.543 [DEBUG] [Thread-123506 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:02.573 [DEBUG] [Thread-123507 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:06.803 [DEBUG] [Thread-123508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:17.602 [DEBUG] [Thread-123509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:32.630 [DEBUG] [Thread-123510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:39.830 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:39.831 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:43:47.656 [DEBUG] [Thread-123511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:02.686 [DEBUG] [Thread-123512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:03.515 [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-28T11:44:06.851 [DEBUG] [Thread-123513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:13.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:44:13.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:44: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-28T11:44:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 43, 41), 18.53, 28.65, 0.0, 15.55, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:44:14.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:43:41
2025-09-28T11:44:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:44:14.419 [DEBUG] [Thread-123514] [transport.py] [_log()] starting thread (client mode): 0x2e3df760
2025-09-28T11:44:14.419 [DEBUG] [Thread-123514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:14.438 [DEBUG] [Thread-123514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:44:14.438 [INFO] [Thread-123514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] Compression: none
2025-09-28T11:44:14.440 [DEBUG] [Thread-123514] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:14.450 [DEBUG] [Thread-123514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:14.450 [DEBUG] [Thread-123514] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:14.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:44:14.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:44:14.451 [DEBUG] [Thread-123514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:14.461 [INFO] [Thread-123514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:14.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:15.193 [DEBUG] [Thread-123514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:15.193 [DEBUG] [Thread-123514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:15.193 [DEBUG] [Thread-123514] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:44:15.234 [DEBUG] [Thread-123514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:15.234 [DEBUG] [Thread-123514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:15.237 [DEBUG] [Thread-123514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:15.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:15.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:44:15.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:44:15.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:44:15.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:15.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:44:15.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405293 -999.00  +17.90   8.04     35   +2.40 1 1 1 1 1   888    0 20.43 133.82 ----- 9.0 8.0 249.2 15.5 26.1 -25.4 24.9 -24.6 23.9 -24.8 25.1 -24.5
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405293
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:44:15.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:43:41', tmtdew=18.53, humidity=28.65, cloud=0.0, wind=15.55, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:43:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:44:15.255 [DEBUG] [Thread-123514] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:15.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-28T11:44:15.341 [DEBUG] [Thread-123517] [transport.py] [_log()] starting thread (client mode): 0x2b9cd030
2025-09-28T11:44:15.341 [DEBUG] [Thread-123517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:15.356 [DEBUG] [Thread-123517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:44:15.356 [INFO] [Thread-123517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:15.363 [DEBUG] [Thread-123517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] Compression: none
2025-09-28T11:44:15.364 [DEBUG] [Thread-123517] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:15.419 [DEBUG] [Thread-123517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:15.420 [DEBUG] [Thread-123517] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:15.420 [DEBUG] [Thread-123517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:44:15.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:44:15.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:15.476 [DEBUG] [Thread-123517] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:15.476 [DEBUG] [Thread-123517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:15.476 [DEBUG] [Thread-123517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:15.476 [DEBUG] [Thread-123517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:44:15.476 [DEBUG] [Thread-123517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:15.498 [INFO] [Thread-123517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:15.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-28T11:44:15.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:16.483 [DEBUG] [Thread-123517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:16.484 [DEBUG] [Thread-123517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:16.531 [DEBUG] [Thread-123517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:16.531 [DEBUG] [Thread-123517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:16.541 [DEBUG] [Thread-123517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:16.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:16.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')
2025-09-28T11:44:16.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-28T11:44:16.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:16.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:16.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:16.576 [DEBUG] [Thread-123517] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:17.719 [DEBUG] [Thread-123519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:26.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:44:26.578 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:44:26.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-28T11:44:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 44, 13), 18.48, 28.73, 0.0, 13.41, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:44:27.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:44:13
2025-09-28T11:44:27.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:44:27.455 [DEBUG] [Thread-123520] [transport.py] [_log()] starting thread (client mode): 0x2b9f3100
2025-09-28T11:44:27.456 [DEBUG] [Thread-123520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:27.476 [DEBUG] [Thread-123520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:44:27.476 [INFO] [Thread-123520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] Compression: none
2025-09-28T11:44:27.479 [DEBUG] [Thread-123520] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:27.496 [DEBUG] [Thread-123520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:27.496 [DEBUG] [Thread-123520] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:27.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:44:27.496 [DEBUG] [Thread-123520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:44:27.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:27.541 [DEBUG] [Thread-123520] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:27.541 [DEBUG] [Thread-123520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:27.541 [DEBUG] [Thread-123520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:27.541 [DEBUG] [Thread-123520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:44:27.541 [DEBUG] [Thread-123520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:27.560 [INFO] [Thread-123520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:27.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:28.298 [DEBUG] [Thread-123520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:28.299 [DEBUG] [Thread-123520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:28.299 [DEBUG] [Thread-123520] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:44:28.340 [DEBUG] [Thread-123520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:28.340 [DEBUG] [Thread-123520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:28.341 [DEBUG] [Thread-123520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:28.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:28.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:44:28.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:44:28.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:44:28.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:28.352 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:44:28.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405293 -999.00  +17.90   8.04     35   +2.40 1 1 1 1 1   888    0 20.43 133.82 ----- 9.0 8.0 249.2 15.5 26.1 -25.4 24.9 -24.6 23.9 -24.8 25.1 -24.5
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405293
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:44:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:44:13', tmtdew=18.48, humidity=28.73, cloud=0.0, wind=13.41, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:43:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:44:28.353 [DEBUG] [Thread-123520] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:28.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-28T11:44:28.437 [DEBUG] [Thread-123523] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T11:44:28.437 [DEBUG] [Thread-123523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:28.452 [DEBUG] [Thread-123523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:44:28.452 [INFO] [Thread-123523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:44:28.459 [DEBUG] [Thread-123523] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] Compression: none
2025-09-28T11:44:28.460 [DEBUG] [Thread-123523] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:28.519 [DEBUG] [Thread-123523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:28.519 [DEBUG] [Thread-123523] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:28.519 [DEBUG] [Thread-123523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:44:28.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:44:28.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:28.576 [DEBUG] [Thread-123523] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:28.576 [DEBUG] [Thread-123523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:28.576 [DEBUG] [Thread-123523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:28.576 [DEBUG] [Thread-123523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:44:28.576 [DEBUG] [Thread-123523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:28.596 [INFO] [Thread-123523] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:28.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-28T11:44:28.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:29.628 [DEBUG] [Thread-123523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:29.628 [DEBUG] [Thread-123523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:29.676 [DEBUG] [Thread-123523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:29.676 [DEBUG] [Thread-123523] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:29.684 [DEBUG] [Thread-123523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:29.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:29.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T11:44:29.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-28T11:44:29.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:29.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:29.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:29.716 [DEBUG] [Thread-123523] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:32.762 [DEBUG] [Thread-123525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:39.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:44:39.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:44:39.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-28T11:44:39.972 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:39.973 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 44, 13), 18.48, 28.73, 0.0, 13.41, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:44:40.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:44:13
2025-09-28T11:44:40.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:44:40.564 [DEBUG] [Thread-123526] [transport.py] [_log()] starting thread (client mode): 0x2b9acc70
2025-09-28T11:44:40.564 [DEBUG] [Thread-123526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:40.584 [DEBUG] [Thread-123526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:44:40.584 [INFO] [Thread-123526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] Compression: none
2025-09-28T11:44:40.587 [DEBUG] [Thread-123526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:40.604 [DEBUG] [Thread-123526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:40.604 [DEBUG] [Thread-123526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:40.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:44:40.605 [DEBUG] [Thread-123526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:44:40.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:40.607 [DEBUG] [Thread-123526] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:40.607 [DEBUG] [Thread-123526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:40.608 [DEBUG] [Thread-123526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:40.608 [DEBUG] [Thread-123526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:44:40.608 [DEBUG] [Thread-123526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:40.632 [INFO] [Thread-123526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:40.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:41.287 [DEBUG] [Thread-123526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:41.287 [DEBUG] [Thread-123526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:41.288 [DEBUG] [Thread-123526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:44:41.328 [DEBUG] [Thread-123526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:41.328 [DEBUG] [Thread-123526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:41.331 [DEBUG] [Thread-123526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:41.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:41.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:44:41.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:44:41.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:44:41.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:41.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:44:41.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:41.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:41.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:44:41.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405641 -999.00  +18.00  20.84     35   +2.50 1 1 1 1 1   888    0 19.40 118.06 ----- 22.5 20.8 266.6 25.7 26.1 -27.1 24.8 -25.8 23.8 -24.9 25.0 -26.4
2025-09-28T11:44:41.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:44:41.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:44:41.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405641
2025-09-28T11:44:41.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:44:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:44:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:44:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:44:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:44:41.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:44:13', tmtdew=18.48, humidity=28.73, cloud=0.0, wind=13.41, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:44:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:44:41.353 [DEBUG] [Thread-123526] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:41.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-28T11:44:41.451 [DEBUG] [Thread-123529] [transport.py] [_log()] starting thread (client mode): 0x2b9ad750
2025-09-28T11:44:41.451 [DEBUG] [Thread-123529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:41.465 [DEBUG] [Thread-123529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:44:41.465 [INFO] [Thread-123529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:44:41.473 [DEBUG] [Thread-123529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:41.473 [DEBUG] [Thread-123529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] Compression: none
2025-09-28T11:44:41.474 [DEBUG] [Thread-123529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:41.531 [DEBUG] [Thread-123529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:41.532 [DEBUG] [Thread-123529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:41.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:44:41.533 [DEBUG] [Thread-123529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:44:41.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:41.592 [DEBUG] [Thread-123529] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:41.592 [DEBUG] [Thread-123529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:41.592 [DEBUG] [Thread-123529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:41.592 [DEBUG] [Thread-123529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:44:41.592 [DEBUG] [Thread-123529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:41.611 [INFO] [Thread-123529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:41.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-28T11:44:41.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:42.635 [DEBUG] [Thread-123529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:42.636 [DEBUG] [Thread-123529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:42.683 [DEBUG] [Thread-123529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:42.684 [DEBUG] [Thread-123529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:42.692 [DEBUG] [Thread-123529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:42.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:42.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-28T11:44:42.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-28T11:44:42.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:42.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:42.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:42.727 [DEBUG] [Thread-123529] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:47.806 [DEBUG] [Thread-123531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:44:52.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:44:52.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:44:52.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-28T11:44:53.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 44, 45), 18.31, 28.73, 0.0, 24.46, 18.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:44:53.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:44:45
2025-09-28T11:44:53.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:44:53.591 [DEBUG] [Thread-123532] [transport.py] [_log()] starting thread (client mode): 0x2b9af880
2025-09-28T11:44:53.591 [DEBUG] [Thread-123532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:53.602 [DEBUG] [Thread-123532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:44:53.602 [INFO] [Thread-123532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:44:53.605 [DEBUG] [Thread-123532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:53.605 [DEBUG] [Thread-123532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] Compression: none
2025-09-28T11:44:53.606 [DEBUG] [Thread-123532] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:53.624 [DEBUG] [Thread-123532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:53.624 [DEBUG] [Thread-123532] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:53.624 [DEBUG] [Thread-123532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:44:53.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:44:53.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:53.626 [DEBUG] [Thread-123532] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:53.626 [DEBUG] [Thread-123532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:53.626 [DEBUG] [Thread-123532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:53.626 [DEBUG] [Thread-123532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:44:53.626 [DEBUG] [Thread-123532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:53.650 [INFO] [Thread-123532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:44:53.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:54.424 [DEBUG] [Thread-123532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:54.425 [DEBUG] [Thread-123532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:54.425 [DEBUG] [Thread-123532] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:44:54.465 [DEBUG] [Thread-123532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:54.465 [DEBUG] [Thread-123532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:54.467 [DEBUG] [Thread-123532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:54.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:44:54.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:44:54.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:44:54.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:44:54.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:54.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:44:54.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:54.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:44:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405641 -999.00  +18.00  20.84     35   +2.50 1 1 1 1 1   888    0 19.40 118.06 ----- 22.5 20.8 266.6 25.7 26.1 -27.1 24.8 -25.8 23.8 -24.9 25.0 -26.4
2025-09-28T11:44:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:44:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:44:54.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405641
2025-09-28T11:44:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:44:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:44:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:44:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:44:54.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:44:54.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:44:45', tmtdew=18.31, humidity=28.73, cloud=0.0, wind=24.46, temperature=18.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:44:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:44:54.484 [DEBUG] [Thread-123532] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:44:54.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-28T11:44:54.580 [DEBUG] [Thread-123535] [transport.py] [_log()] starting thread (client mode): 0x2b9ad120
2025-09-28T11:44:54.580 [DEBUG] [Thread-123535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:44:54.599 [DEBUG] [Thread-123535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:44:54.600 [INFO] [Thread-123535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:44:54.607 [DEBUG] [Thread-123535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] client lang: <none>
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] server lang: <none>
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] kex follows: False
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:44:54.608 [DEBUG] [Thread-123535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:44:54.609 [DEBUG] [Thread-123535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:44:54.609 [DEBUG] [Thread-123535] [transport.py] [_log()] Compression: none
2025-09-28T11:44:54.609 [DEBUG] [Thread-123535] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:44:54.663 [DEBUG] [Thread-123535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:44:54.664 [DEBUG] [Thread-123535] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:44:54.664 [DEBUG] [Thread-123535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:44:54.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:44:54.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:44:54.720 [DEBUG] [Thread-123535] [transport.py] [_log()] userauth is OK
2025-09-28T11:44:54.720 [DEBUG] [Thread-123535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:44:54.720 [DEBUG] [Thread-123535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:44:54.720 [DEBUG] [Thread-123535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:44:54.720 [DEBUG] [Thread-123535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:44:54.739 [INFO] [Thread-123535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11: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-28T11:44:54.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:44:55.708 [DEBUG] [Thread-123535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:44:55.708 [DEBUG] [Thread-123535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:44:55.756 [DEBUG] [Thread-123535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:44:55.756 [DEBUG] [Thread-123535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:44:55.765 [DEBUG] [Thread-123535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:44:55.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11: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-28T11: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-28T11:44:55.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:44:55.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:44:55.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:44:55.800 [DEBUG] [Thread-123535] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:45:02.852 [DEBUG] [Thread-123537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:05.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:45:05.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:45:05.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-28T11:45:06.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 44, 45), 18.31, 28.73, 0.0, 24.46, 18.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:45:06.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:44:45
2025-09-28T11:45:06.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:45:06.699 [DEBUG] [Thread-123538] [transport.py] [_log()] starting thread (client mode): 0x2b9ad690
2025-09-28T11:45:06.699 [DEBUG] [Thread-123538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:45:06.719 [DEBUG] [Thread-123538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:45:06.719 [INFO] [Thread-123538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] client lang: <none>
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] server lang: <none>
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] kex follows: False
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] Compression: none
2025-09-28T11:45:06.723 [DEBUG] [Thread-123538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:45:06.738 [DEBUG] [Thread-123538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:45:06.738 [DEBUG] [Thread-123538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:45:06.738 [DEBUG] [Thread-123538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:45:06.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:45:06.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:45:06.739 [DEBUG] [Thread-123538] [transport.py] [_log()] userauth is OK
2025-09-28T11:45:06.739 [DEBUG] [Thread-123538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:45:06.739 [DEBUG] [Thread-123538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:45:06.739 [DEBUG] [Thread-123538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:45:06.739 [DEBUG] [Thread-123538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:45:06.749 [INFO] [Thread-123538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:45:06.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:45:06.897 [DEBUG] [Thread-123540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:11.173 [DEBUG] [Thread-123538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:45:11.173 [DEBUG] [Thread-123538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:45:11.173 [DEBUG] [Thread-123538] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:45:11.214 [DEBUG] [Thread-123538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:45:11.214 [DEBUG] [Thread-123538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:45:11.217 [DEBUG] [Thread-123538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:45:11.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:45:11.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:45:11.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:45:11.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:45:11.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:45:11.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:45:11.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405988 -999.00  +17.80  18.42     35   +2.30 1 1 1 1 1   888    0 19.51 115.99 ----- 17.6 18.4 264.4 26.6 25.9 -28.0 24.6 -25.5 23.7 -26.9 24.8 -26.4
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:45:11.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405988
2025-09-28T11:45:11.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:45:11.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:45:11.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:45:11.237 [DEBUG] [Thread-123538] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:45:11.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:45:11.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:45:11.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:44:45', tmtdew=18.31, humidity=28.73, cloud=0.0, wind=24.46, temperature=18.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:44:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:45:11.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-28T11:45:11.335 [DEBUG] [Thread-123542] [transport.py] [_log()] starting thread (client mode): 0x2e376170
2025-09-28T11:45:11.335 [DEBUG] [Thread-123542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:45:11.350 [DEBUG] [Thread-123542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:45:11.350 [INFO] [Thread-123542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] client lang: <none>
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] server lang: <none>
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] kex follows: False
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] Compression: none
2025-09-28T11:45:11.358 [DEBUG] [Thread-123542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:45:11.415 [DEBUG] [Thread-123542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:45:11.415 [DEBUG] [Thread-123542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:45:11.415 [DEBUG] [Thread-123542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:45:11.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:45:11.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:45:11.472 [DEBUG] [Thread-123542] [transport.py] [_log()] userauth is OK
2025-09-28T11:45:11.472 [DEBUG] [Thread-123542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:45:11.472 [DEBUG] [Thread-123542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:45:11.472 [DEBUG] [Thread-123542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:45:11.472 [DEBUG] [Thread-123542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:45:11.488 [INFO] [Thread-123542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:45:11.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-28T11:45:11.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:45:12.475 [DEBUG] [Thread-123542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:45:12.475 [DEBUG] [Thread-123542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:45:12.523 [DEBUG] [Thread-123542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:45:12.523 [DEBUG] [Thread-123542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:45:12.532 [DEBUG] [Thread-123542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:45:12.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:45:12.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')
2025-09-28T11:45:12.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-28T11:45:12.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:45:12.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:45:12.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:45:12.565 [DEBUG] [Thread-123542] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:45:17.888 [DEBUG] [Thread-123544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:22.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:45:22.561 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:45:22.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-28T11:45:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 45, 17), 18.32, 28.7, 0.0, 20.35, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:45:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:45:17
2025-09-28T11:45:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:45:23.415 [DEBUG] [Thread-123545] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T11:45:23.415 [DEBUG] [Thread-123545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:45:23.435 [DEBUG] [Thread-123545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:45:23.435 [INFO] [Thread-123545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:45:23.438 [DEBUG] [Thread-123545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:45:23.438 [DEBUG] [Thread-123545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:45:23.438 [DEBUG] [Thread-123545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:45:23.438 [DEBUG] [Thread-123545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:23.438 [DEBUG] [Thread-123545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] client lang: <none>
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] server lang: <none>
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] kex follows: False
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] Compression: none
2025-09-28T11:45:23.439 [DEBUG] [Thread-123545] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:45:23.457 [DEBUG] [Thread-123545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:45:23.457 [DEBUG] [Thread-123545] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:45:23.458 [DEBUG] [Thread-123545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:45:23.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:45:23.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:45:23.460 [DEBUG] [Thread-123545] [transport.py] [_log()] userauth is OK
2025-09-28T11:45:23.460 [DEBUG] [Thread-123545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:45:23.460 [DEBUG] [Thread-123545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:45:23.460 [DEBUG] [Thread-123545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:45:23.460 [DEBUG] [Thread-123545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:45:23.484 [INFO] [Thread-123545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:45:23.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:45:24.082 [DEBUG] [Thread-123545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:45:24.082 [DEBUG] [Thread-123545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:45:24.082 [DEBUG] [Thread-123545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:45:24.123 [DEBUG] [Thread-123545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:45:24.124 [DEBUG] [Thread-123545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:45:24.126 [DEBUG] [Thread-123545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:45:24.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:45:24.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:45:24.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:45:24.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:45:24.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:45:24.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:45:24.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:45:24.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:45:24.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:45:24.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.405988 -999.00  +17.80  18.42     35   +2.30 1 1 1 1 1   888    0 19.51 115.99 ----- 17.6 18.4 264.4 26.6 25.9 -28.0 24.6 -25.5 23.7 -26.9 24.8 -26.4
2025-09-28T11:45:24.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:45:24.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:45:24.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.405988
2025-09-28T11:45:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:45:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:45:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:45:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:45:24.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:45:24.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:45:17', tmtdew=18.32, humidity=28.7, cloud=0.0, wind=20.35, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:44:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:45:24.153 [DEBUG] [Thread-123545] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:45:24.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-28T11:45:32.916 [DEBUG] [Thread-123548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:40.114 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:40.115 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:45:47.967 [DEBUG] [Thread-123549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:02.993 [DEBUG] [Thread-123550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:06.952 [DEBUG] [Thread-123551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:18.027 [DEBUG] [Thread-123552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:33.056 [DEBUG] [Thread-123553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:40.258 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:40.260 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:46:48.088 [DEBUG] [Thread-123554 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:03.115 [DEBUG] [Thread-123555 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:07.006 [DEBUG] [Thread-123556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:18.148 [DEBUG] [Thread-123557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:33.176 [DEBUG] [Thread-123558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:36.506 [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-28T11:47:40.400 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:40.401 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:46.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:47:46.517 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:47:46.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-28T11:47:47.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 47, 24), 17.91, 29.64, 0.0, 15.39, 17.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:47:47.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:47:24
2025-09-28T11:47:47.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:47:47.381 [DEBUG] [Thread-123559] [transport.py] [_log()] starting thread (client mode): 0x2e348cd0
2025-09-28T11:47:47.381 [DEBUG] [Thread-123559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:47:47.402 [DEBUG] [Thread-123559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:47:47.402 [INFO] [Thread-123559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:47:47.404 [DEBUG] [Thread-123559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] client lang: <none>
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] server lang: <none>
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] kex follows: False
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] Compression: none
2025-09-28T11:47:47.405 [DEBUG] [Thread-123559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:47:47.423 [DEBUG] [Thread-123559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:47:47.424 [DEBUG] [Thread-123559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:47:47.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:47:47.425 [DEBUG] [Thread-123559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:47:47.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:47:47.427 [DEBUG] [Thread-123559] [transport.py] [_log()] userauth is OK
2025-09-28T11:47:47.428 [DEBUG] [Thread-123559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:47:47.428 [DEBUG] [Thread-123559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:47:47.428 [DEBUG] [Thread-123559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:47:47.428 [DEBUG] [Thread-123559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:47:47.444 [INFO] [Thread-123559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:47:47.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:47:48.206 [DEBUG] [Thread-123561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:47:48.255 [DEBUG] [Thread-123559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:47:48.255 [DEBUG] [Thread-123559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:47:48.256 [DEBUG] [Thread-123559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:47:48.296 [DEBUG] [Thread-123559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:47:48.297 [DEBUG] [Thread-123559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:47:48.300 [DEBUG] [Thread-123559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:47:48.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:47:48.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:47:48.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:47:48.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:47:48.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:47:48.324 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:47:48.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:47:48.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.407724 -999.00  +17.70  16.58     36   +2.50 1 1 1 1 1   888    0 18.16 58.57 ----- 15.4 16.6 275.8 22.4 25.7 -25.9 24.5 -25.5 23.2 -23.1 24.6 -24.6
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.407724
2025-09-28T11:47:48.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:47:48.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:47:48.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:47:48.326 [DEBUG] [Thread-123559] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:47:48.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:47:48.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:47:48.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:47:24', tmtdew=17.91, humidity=29.64, cloud=0.0, wind=15.39, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:47:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:47:48.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-28T11:47:48.423 [DEBUG] [Thread-123563] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T11:47:48.424 [DEBUG] [Thread-123563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:47:48.439 [DEBUG] [Thread-123563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:47:48.439 [INFO] [Thread-123563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:47:48.447 [DEBUG] [Thread-123563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] client lang: <none>
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] server lang: <none>
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] kex follows: False
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] Compression: none
2025-09-28T11:47:48.448 [DEBUG] [Thread-123563] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:47:48.505 [DEBUG] [Thread-123563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:47:48.505 [DEBUG] [Thread-123563] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:47:48.506 [DEBUG] [Thread-123563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:47:48.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:47:48.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:47:48.561 [DEBUG] [Thread-123563] [transport.py] [_log()] userauth is OK
2025-09-28T11:47:48.561 [DEBUG] [Thread-123563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:47:48.562 [DEBUG] [Thread-123563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:47:48.562 [DEBUG] [Thread-123563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:47:48.562 [DEBUG] [Thread-123563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:47:48.580 [INFO] [Thread-123563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:47:48.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:47:48.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:47:49.563 [DEBUG] [Thread-123563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:47:49.563 [DEBUG] [Thread-123563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:47:49.611 [DEBUG] [Thread-123563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:47:49.611 [DEBUG] [Thread-123563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:47:49.620 [DEBUG] [Thread-123563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:47:49.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:47:49.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-28T11:47:49.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') -> 00000000
2025-09-28T11:47:49.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:47:49.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:47:49.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:47:49.655 [DEBUG] [Thread-123563] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:47:59.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:47:59.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:47:59.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-28T11:48:00.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 47, 56), 17.93, 29.79, 0.0, 18.03, 17.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:48:00.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:47:56
2025-09-28T11:48:00.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:48:00.515 [DEBUG] [Thread-123565] [transport.py] [_log()] starting thread (client mode): 0x2b9f3550
2025-09-28T11:48:00.515 [DEBUG] [Thread-123565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:00.536 [DEBUG] [Thread-123565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:48:00.536 [INFO] [Thread-123565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:00.538 [DEBUG] [Thread-123565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] Compression: none
2025-09-28T11:48:00.539 [DEBUG] [Thread-123565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:00.549 [DEBUG] [Thread-123565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:00.549 [DEBUG] [Thread-123565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:00.549 [DEBUG] [Thread-123565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:48:00.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:48:00.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:00.551 [DEBUG] [Thread-123565] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:00.551 [DEBUG] [Thread-123565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:00.551 [DEBUG] [Thread-123565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:00.552 [DEBUG] [Thread-123565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:48:00.552 [DEBUG] [Thread-123565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:00.574 [INFO] [Thread-123565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:00.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:01.141 [DEBUG] [Thread-123565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:01.141 [DEBUG] [Thread-123565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:01.141 [DEBUG] [Thread-123565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:48:01.182 [DEBUG] [Thread-123565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:01.182 [DEBUG] [Thread-123565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:01.185 [DEBUG] [Thread-123565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:01.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:01.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:48:01.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:48:01.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:48:01.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:01.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:48:01.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408071 -999.00  +17.70  13.68     36   +2.60 1 1 1 1 1   888    0 17.89 44.53 ----- 14.4 13.7 272.1 20.6 25.6 -26.8 24.4 -24.3 23.0 -26.3 24.5 -26.1
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:48:01.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408071
2025-09-28T11:48:01.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:48:01.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:48:01.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:48:01.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:48:01.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:48:01.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:47:56', tmtdew=17.93, humidity=29.79, cloud=0.0, wind=18.03, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:47:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:48:01.209 [DEBUG] [Thread-123565] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:01.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-28T11:48:01.301 [DEBUG] [Thread-123568] [transport.py] [_log()] starting thread (client mode): 0x2b96d270
2025-09-28T11:48:01.301 [DEBUG] [Thread-123568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:01.316 [DEBUG] [Thread-123568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:48:01.316 [INFO] [Thread-123568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:48:01.323 [DEBUG] [Thread-123568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:01.324 [DEBUG] [Thread-123568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:01.325 [DEBUG] [Thread-123568] [transport.py] [_log()] Compression: none
2025-09-28T11:48:01.326 [DEBUG] [Thread-123568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:01.382 [DEBUG] [Thread-123568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:01.383 [DEBUG] [Thread-123568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:01.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:48:01.384 [DEBUG] [Thread-123568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:48:01.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:01.452 [DEBUG] [Thread-123568] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:01.452 [DEBUG] [Thread-123568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:01.452 [DEBUG] [Thread-123568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:01.452 [DEBUG] [Thread-123568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:48:01.452 [DEBUG] [Thread-123568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:01.474 [INFO] [Thread-123568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:01.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:48:01.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:02.476 [DEBUG] [Thread-123568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:02.476 [DEBUG] [Thread-123568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:02.524 [DEBUG] [Thread-123568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:02.524 [DEBUG] [Thread-123568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:02.533 [DEBUG] [Thread-123568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:02.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:02.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-28T11:48:02.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-28T11:48:02.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:02.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:02.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:02.567 [DEBUG] [Thread-123568] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:03.236 [DEBUG] [Thread-123570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:07.059 [DEBUG] [Thread-123571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:48:12.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:48:12.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-28T11:48:13.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 47, 56), 17.93, 29.79, 0.0, 18.03, 17.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:48:13.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:47:56
2025-09-28T11:48:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:48:13.471 [DEBUG] [Thread-123572] [transport.py] [_log()] starting thread (client mode): 0x2b945150
2025-09-28T11:48:13.471 [DEBUG] [Thread-123572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:13.492 [DEBUG] [Thread-123572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:48:13.492 [INFO] [Thread-123572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:13.495 [DEBUG] [Thread-123572] [transport.py] [_log()] Compression: none
2025-09-28T11:48:13.496 [DEBUG] [Thread-123572] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:13.506 [DEBUG] [Thread-123572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:13.507 [DEBUG] [Thread-123572] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:13.507 [DEBUG] [Thread-123572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:48:13.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:48:13.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:13.508 [DEBUG] [Thread-123572] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:13.508 [DEBUG] [Thread-123572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:13.508 [DEBUG] [Thread-123572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:13.508 [DEBUG] [Thread-123572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:48:13.508 [DEBUG] [Thread-123572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:13.521 [INFO] [Thread-123572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:13.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:14.172 [DEBUG] [Thread-123572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:14.172 [DEBUG] [Thread-123572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:14.172 [DEBUG] [Thread-123572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:48:14.213 [DEBUG] [Thread-123572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:14.213 [DEBUG] [Thread-123572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:14.216 [DEBUG] [Thread-123572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:14.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:14.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:48:14.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:48:14.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:48:14.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:14.234 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:48:14.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:14.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408071 -999.00  +17.70  13.68     36   +2.60 1 1 1 1 1   888    0 17.89 44.53 ----- 14.4 13.7 272.1 20.6 25.6 -26.8 24.4 -24.3 23.0 -26.3 24.5 -26.1
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408071
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:48:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:47:56', tmtdew=17.93, humidity=29.79, cloud=0.0, wind=18.03, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:47:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:48:14.236 [DEBUG] [Thread-123572] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:14.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-28T11:48:14.322 [DEBUG] [Thread-123575] [transport.py] [_log()] starting thread (client mode): 0x2b9ae470
2025-09-28T11:48:14.322 [DEBUG] [Thread-123575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:14.337 [DEBUG] [Thread-123575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:48:14.337 [INFO] [Thread-123575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:14.345 [DEBUG] [Thread-123575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:14.346 [DEBUG] [Thread-123575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:14.347 [DEBUG] [Thread-123575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:14.347 [DEBUG] [Thread-123575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:14.347 [DEBUG] [Thread-123575] [transport.py] [_log()] Compression: none
2025-09-28T11:48:14.347 [DEBUG] [Thread-123575] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:14.405 [DEBUG] [Thread-123575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:14.405 [DEBUG] [Thread-123575] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:14.406 [DEBUG] [Thread-123575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:48:14.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:48:14.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:14.461 [DEBUG] [Thread-123575] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:14.461 [DEBUG] [Thread-123575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:14.461 [DEBUG] [Thread-123575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:14.462 [DEBUG] [Thread-123575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:48:14.462 [DEBUG] [Thread-123575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:14.480 [INFO] [Thread-123575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:14.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-28T11:48:14.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:15.471 [DEBUG] [Thread-123575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:15.472 [DEBUG] [Thread-123575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:15.519 [DEBUG] [Thread-123575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:15.519 [DEBUG] [Thread-123575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:15.529 [DEBUG] [Thread-123575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:15.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:15.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-28T11:48:15.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-28T11:48:15.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:15.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:15.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:15.564 [DEBUG] [Thread-123575] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:18.280 [DEBUG] [Thread-123577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:25.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:48:25.567 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:48:25.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-28T11:48:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 47, 56), 17.93, 29.79, 0.0, 18.03, 17.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:48:26.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:47:56
2025-09-28T11:48:26.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:48:26.433 [DEBUG] [Thread-123578] [transport.py] [_log()] starting thread (client mode): 0x2b9dd3c0
2025-09-28T11:48:26.433 [DEBUG] [Thread-123578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:26.453 [DEBUG] [Thread-123578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:48:26.453 [INFO] [Thread-123578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:26.456 [DEBUG] [Thread-123578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] Compression: none
2025-09-28T11:48:26.457 [DEBUG] [Thread-123578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:26.474 [DEBUG] [Thread-123578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:26.475 [DEBUG] [Thread-123578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:26.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:48:26.476 [DEBUG] [Thread-123578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:48:26.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:26.478 [DEBUG] [Thread-123578] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:26.478 [DEBUG] [Thread-123578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:26.479 [DEBUG] [Thread-123578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:26.479 [DEBUG] [Thread-123578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:48:26.479 [DEBUG] [Thread-123578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:26.510 [INFO] [Thread-123578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:26.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:27.284 [DEBUG] [Thread-123578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:27.284 [DEBUG] [Thread-123578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:27.285 [DEBUG] [Thread-123578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:48:27.325 [DEBUG] [Thread-123578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:27.325 [DEBUG] [Thread-123578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:27.328 [DEBUG] [Thread-123578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:27.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:27.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:48:27.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:48:27.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:48:27.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:27.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:48:27.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:27.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:27.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:48:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408071 -999.00  +17.70  13.68     36   +2.60 1 1 1 1 1   888    0 17.89 44.53 ----- 14.4 13.7 272.1 20.6 25.6 -26.8 24.4 -24.3 23.0 -26.3 24.5 -26.1
2025-09-28T11:48:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:48:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:48:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408071
2025-09-28T11:48:27.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:48:27.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:48:27.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:48:27.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:48:27.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:48:27.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:47:56', tmtdew=17.93, humidity=29.79, cloud=0.0, wind=18.03, temperature=17.78, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:47:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:48:27.352 [DEBUG] [Thread-123578] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:27.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-28T11:48:27.448 [DEBUG] [Thread-123581] [transport.py] [_log()] starting thread (client mode): 0x2b9f34f0
2025-09-28T11:48:27.448 [DEBUG] [Thread-123581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:27.466 [DEBUG] [Thread-123581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:48:27.466 [INFO] [Thread-123581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:48:27.475 [DEBUG] [Thread-123581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:27.476 [DEBUG] [Thread-123581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:27.477 [DEBUG] [Thread-123581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:27.477 [DEBUG] [Thread-123581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:27.477 [DEBUG] [Thread-123581] [transport.py] [_log()] Compression: none
2025-09-28T11:48:27.477 [DEBUG] [Thread-123581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:27.533 [DEBUG] [Thread-123581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:27.534 [DEBUG] [Thread-123581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:27.534 [DEBUG] [Thread-123581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:48:27.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:48:27.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:27.590 [DEBUG] [Thread-123581] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:27.590 [DEBUG] [Thread-123581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:27.590 [DEBUG] [Thread-123581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:27.590 [DEBUG] [Thread-123581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:48:27.590 [DEBUG] [Thread-123581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:27.610 [INFO] [Thread-123581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:27.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-28T11:48:27.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:28.610 [DEBUG] [Thread-123581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:28.610 [DEBUG] [Thread-123581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:28.659 [DEBUG] [Thread-123581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:28.660 [DEBUG] [Thread-123581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:28.669 [DEBUG] [Thread-123581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:28.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:28.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-28T11:48:28.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-28T11:48:28.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:28.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:28.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:28.707 [DEBUG] [Thread-123581] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:33.308 [DEBUG] [Thread-123583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:38.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:48:38.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:48:38.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-28T11:48:39.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 48, 28), 17.85, 29.96, 0.0, 20.79, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:48:39.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:48:28
2025-09-28T11:48:39.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:48:39.563 [DEBUG] [Thread-123584] [transport.py] [_log()] starting thread (client mode): 0x2e3c2620
2025-09-28T11:48:39.563 [DEBUG] [Thread-123584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:39.579 [DEBUG] [Thread-123584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:48:39.579 [INFO] [Thread-123584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:39.582 [DEBUG] [Thread-123584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:39.583 [DEBUG] [Thread-123584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:39.583 [DEBUG] [Thread-123584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:39.583 [DEBUG] [Thread-123584] [transport.py] [_log()] Compression: none
2025-09-28T11:48:39.583 [DEBUG] [Thread-123584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:39.597 [DEBUG] [Thread-123584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:39.597 [DEBUG] [Thread-123584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:39.598 [DEBUG] [Thread-123584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:48:39.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:48:39.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:39.600 [DEBUG] [Thread-123584] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:39.600 [DEBUG] [Thread-123584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:39.600 [DEBUG] [Thread-123584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:39.600 [DEBUG] [Thread-123584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:48:39.600 [DEBUG] [Thread-123584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:39.618 [INFO] [Thread-123584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:39.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:40.251 [DEBUG] [Thread-123584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:40.251 [DEBUG] [Thread-123584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:40.252 [DEBUG] [Thread-123584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:48:40.292 [DEBUG] [Thread-123584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:40.293 [DEBUG] [Thread-123584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:40.296 [DEBUG] [Thread-123584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:40.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:40.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:48:40.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:48:40.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:48:40.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:40.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:48:40.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:40.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408418 -999.00  +18.00  13.28     35   +2.50 1 1 1 1 1   888    0 17.21 33.43 ----- 17.7 13.3 247.2 18.0 25.6 -26.4 24.5 -24.6 23.2 -24.5 24.5 -25.1
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408418
2025-09-28T11:48:40.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:48:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:48:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:48:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:48:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:48:40.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:48:28', tmtdew=17.85, humidity=29.96, cloud=0.0, wind=20.79, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:48:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:48:40.320 [DEBUG] [Thread-123584] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:40.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:48:40.417 [DEBUG] [Thread-123587] [transport.py] [_log()] starting thread (client mode): 0x2b9f3a30
2025-09-28T11:48:40.417 [DEBUG] [Thread-123587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:40.432 [DEBUG] [Thread-123587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:48:40.432 [INFO] [Thread-123587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:48:40.439 [DEBUG] [Thread-123587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:40.440 [DEBUG] [Thread-123587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] Compression: none
2025-09-28T11:48:40.441 [DEBUG] [Thread-123587] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:40.497 [DEBUG] [Thread-123587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:40.497 [DEBUG] [Thread-123587] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:40.498 [DEBUG] [Thread-123587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:48:40.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:48:40.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:40.545 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:40.546 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:40.553 [DEBUG] [Thread-123587] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:40.553 [DEBUG] [Thread-123587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:40.554 [DEBUG] [Thread-123587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:40.554 [DEBUG] [Thread-123587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:48:40.554 [DEBUG] [Thread-123587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:40.573 [INFO] [Thread-123587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:40.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:48:40.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:41.579 [DEBUG] [Thread-123587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:41.579 [DEBUG] [Thread-123587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:41.627 [DEBUG] [Thread-123587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:41.627 [DEBUG] [Thread-123587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:41.636 [DEBUG] [Thread-123587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:41.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:41.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-28T11:48:41.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-28T11:48:41.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:41.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:41.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:41.671 [DEBUG] [Thread-123587] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:48.340 [DEBUG] [Thread-123589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:48:51.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:48:51.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:48:51.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-28T11:48:52.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 48, 28), 17.85, 29.96, 0.0, 20.79, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:48:52.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:48:28
2025-09-28T11:48:52.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:48:52.518 [DEBUG] [Thread-123590] [transport.py] [_log()] starting thread (client mode): 0x2b9898d0
2025-09-28T11:48:52.518 [DEBUG] [Thread-123590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:52.538 [DEBUG] [Thread-123590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:48:52.538 [INFO] [Thread-123590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] Compression: none
2025-09-28T11:48:52.541 [DEBUG] [Thread-123590] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:52.557 [DEBUG] [Thread-123590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:52.557 [DEBUG] [Thread-123590] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:52.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:48:52.558 [DEBUG] [Thread-123590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:48:52.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:52.560 [DEBUG] [Thread-123590] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:52.560 [DEBUG] [Thread-123590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:52.561 [DEBUG] [Thread-123590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:52.561 [DEBUG] [Thread-123590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:48:52.561 [DEBUG] [Thread-123590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:52.584 [INFO] [Thread-123590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:52.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:53.401 [DEBUG] [Thread-123590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:53.401 [DEBUG] [Thread-123590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:53.401 [DEBUG] [Thread-123590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:48:53.442 [DEBUG] [Thread-123590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:53.442 [DEBUG] [Thread-123590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:53.444 [DEBUG] [Thread-123590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:53.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:53.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:48:53.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:48:53.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:48:53.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:53.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:48:53.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:53.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408418 -999.00  +18.00  13.28     35   +2.50 1 1 1 1 1   888    0 17.21 33.43 ----- 17.7 13.3 247.2 18.0 25.6 -26.4 24.5 -24.6 23.2 -24.5 24.5 -25.1
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408418
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:48:53.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:48:53.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:48:53.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:48:53.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:48:28', tmtdew=17.85, humidity=29.96, cloud=0.0, wind=20.79, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:48:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:48:53.466 [DEBUG] [Thread-123590] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:48:53.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-28T11:48:53.568 [DEBUG] [Thread-123593] [transport.py] [_log()] starting thread (client mode): 0x2e3f8730
2025-09-28T11:48:53.568 [DEBUG] [Thread-123593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:48:53.587 [DEBUG] [Thread-123593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:48:53.588 [INFO] [Thread-123593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:48:53.595 [DEBUG] [Thread-123593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:48:53.595 [DEBUG] [Thread-123593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:48:53.596 [DEBUG] [Thread-123593] [transport.py] [_log()] client lang: <none>
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] server lang: <none>
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] kex follows: False
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:48:53.597 [DEBUG] [Thread-123593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:48:53.598 [DEBUG] [Thread-123593] [transport.py] [_log()] Compression: none
2025-09-28T11:48:53.598 [DEBUG] [Thread-123593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:48:53.653 [DEBUG] [Thread-123593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:48:53.654 [DEBUG] [Thread-123593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:48:53.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:48:53.655 [DEBUG] [Thread-123593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:48:53.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:48:53.709 [DEBUG] [Thread-123593] [transport.py] [_log()] userauth is OK
2025-09-28T11:48:53.709 [DEBUG] [Thread-123593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:48:53.710 [DEBUG] [Thread-123593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:48:53.710 [DEBUG] [Thread-123593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:48:53.710 [DEBUG] [Thread-123593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:48:53.729 [INFO] [Thread-123593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:48:53.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-28T11:48:53.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:48:54.703 [DEBUG] [Thread-123593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:48:54.704 [DEBUG] [Thread-123593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:48:54.751 [DEBUG] [Thread-123593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:48:54.751 [DEBUG] [Thread-123593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:48:54.760 [DEBUG] [Thread-123593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:48:54.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:48:54.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-28T11:48:54.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') -> 00000000
2025-09-28T11:48:54.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:48:54.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:48:54.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:48:54.794 [DEBUG] [Thread-123593] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:49:03.381 [DEBUG] [Thread-123595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:04.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:49:04.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:49:04.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-28T11:49:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 48, 28), 17.85, 29.96, 0.0, 20.79, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:49:05.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:48:28
2025-09-28T11:49:05.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:49:05.645 [DEBUG] [Thread-123596] [transport.py] [_log()] starting thread (client mode): 0x2b9ad720
2025-09-28T11:49:05.645 [DEBUG] [Thread-123596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:49:05.666 [DEBUG] [Thread-123596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:49:05.666 [INFO] [Thread-123596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:49:05.669 [DEBUG] [Thread-123596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:49:05.669 [DEBUG] [Thread-123596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:49:05.669 [DEBUG] [Thread-123596] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:49:05.669 [DEBUG] [Thread-123596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] client lang: <none>
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] server lang: <none>
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] kex follows: False
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] Compression: none
2025-09-28T11:49:05.670 [DEBUG] [Thread-123596] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:49:05.687 [DEBUG] [Thread-123596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:49:05.687 [DEBUG] [Thread-123596] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:49:05.688 [DEBUG] [Thread-123596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:49:05.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:49:05.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:49:05.690 [DEBUG] [Thread-123596] [transport.py] [_log()] userauth is OK
2025-09-28T11:49:05.690 [DEBUG] [Thread-123596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:49:05.690 [DEBUG] [Thread-123596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:49:05.690 [DEBUG] [Thread-123596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:49:05.690 [DEBUG] [Thread-123596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:49:05.726 [INFO] [Thread-123596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:49:05.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:49:06.552 [DEBUG] [Thread-123596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:49:06.552 [DEBUG] [Thread-123596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:49:06.553 [DEBUG] [Thread-123596] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:49:06.593 [DEBUG] [Thread-123596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:49:06.594 [DEBUG] [Thread-123596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:49:06.596 [DEBUG] [Thread-123596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:49:06.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:49:06.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:49:06.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:49:06.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:49:06.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:49:06.618 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:49:06.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:49:06.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:49:06.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408418 -999.00  +18.00  13.28     35   +2.50 1 1 1 1 1   888    0 17.21 33.43 ----- 17.7 13.3 247.2 18.0 25.6 -26.4 24.5 -24.6 23.2 -24.5 24.5 -25.1
2025-09-28T11:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408418
2025-09-28T11:49:06.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:49:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:49:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:49:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:49:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:49:06.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:48:28', tmtdew=17.85, humidity=29.96, cloud=0.0, wind=20.79, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:48:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:49:06.621 [DEBUG] [Thread-123596] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:49:06.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-28T11:49:06.716 [DEBUG] [Thread-123599] [transport.py] [_log()] starting thread (client mode): 0x2b9f3700
2025-09-28T11:49:06.717 [DEBUG] [Thread-123599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:49:06.732 [DEBUG] [Thread-123599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:49:06.732 [INFO] [Thread-123599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:49:06.741 [DEBUG] [Thread-123599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:49:06.741 [DEBUG] [Thread-123599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:49:06.741 [DEBUG] [Thread-123599] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:49:06.741 [DEBUG] [Thread-123599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:06.741 [DEBUG] [Thread-123599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] client lang: <none>
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] server lang: <none>
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] kex follows: False
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] Compression: none
2025-09-28T11:49:06.742 [DEBUG] [Thread-123599] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:49:06.801 [DEBUG] [Thread-123599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:49:06.801 [DEBUG] [Thread-123599] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:49:06.802 [DEBUG] [Thread-123599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:49:06.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:49:06.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:49:06.857 [DEBUG] [Thread-123599] [transport.py] [_log()] userauth is OK
2025-09-28T11:49:06.858 [DEBUG] [Thread-123599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:49:06.858 [DEBUG] [Thread-123599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:49:06.858 [DEBUG] [Thread-123599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:49:06.858 [DEBUG] [Thread-123599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:49:06.877 [INFO] [Thread-123599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:49:06.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-28T11:49:06.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:49:07.114 [DEBUG] [Thread-123601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:07.853 [DEBUG] [Thread-123599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:49:07.854 [DEBUG] [Thread-123599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:49:07.901 [DEBUG] [Thread-123599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:49:07.902 [DEBUG] [Thread-123599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:49:07.911 [DEBUG] [Thread-123599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:49:07.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:49:07.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-28T11:49:07.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-28T11:49:07.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:49:07.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:49:07.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:49:07.947 [DEBUG] [Thread-123599] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:49:17.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:49:17.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:49:17.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-28T11:49:18.404 [DEBUG] [Thread-123602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 48, 28), 17.85, 29.96, 0.0, 20.79, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:49:18.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:48:28
2025-09-28T11:49:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:49:18.795 [DEBUG] [Thread-123603] [transport.py] [_log()] starting thread (client mode): 0x2b9cdc90
2025-09-28T11:49:18.795 [DEBUG] [Thread-123603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:49:18.809 [DEBUG] [Thread-123603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:49:18.810 [INFO] [Thread-123603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:49:18.812 [DEBUG] [Thread-123603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] client lang: <none>
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] server lang: <none>
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] kex follows: False
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] Compression: none
2025-09-28T11:49:18.813 [DEBUG] [Thread-123603] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:49:18.830 [DEBUG] [Thread-123603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:49:18.831 [DEBUG] [Thread-123603] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:49:18.831 [DEBUG] [Thread-123603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:49:18.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:49:18.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:49:18.833 [DEBUG] [Thread-123603] [transport.py] [_log()] userauth is OK
2025-09-28T11:49:18.833 [DEBUG] [Thread-123603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:49:18.833 [DEBUG] [Thread-123603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:49:18.834 [DEBUG] [Thread-123603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:49:18.834 [DEBUG] [Thread-123603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:49:18.852 [INFO] [Thread-123603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:49:18.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:49:19.500 [DEBUG] [Thread-123603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:49:19.500 [DEBUG] [Thread-123603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:49:19.501 [DEBUG] [Thread-123603] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:49:19.541 [DEBUG] [Thread-123603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:49:19.541 [DEBUG] [Thread-123603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:49:19.544 [DEBUG] [Thread-123603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:49:19.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:49:19.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:49:19.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:49:19.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:49:19.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:49:19.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:49:19.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:49:19.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.408766 -999.00  +18.10  18.19     35   +2.60 1 1 1 1 1   888    0 16.95 25.91 ----- 12.6 18.2 275.4 23.1 25.6 -26.7 24.4 -24.7 23.4 -23.7 24.4 -24.7
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.408766
2025-09-28T11:49:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:49:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:49:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:49:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:49:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:49:19.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:48:28', tmtdew=17.85, humidity=29.96, cloud=0.0, wind=20.79, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:48:37.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:49:19.570 [DEBUG] [Thread-123603] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:49:19.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-28T11:49:33.427 [DEBUG] [Thread-123606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:40.690 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:40.691 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:49:48.463 [DEBUG] [Thread-123607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:03.488 [DEBUG] [Thread-123608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:07.167 [DEBUG] [Thread-123609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:18.518 [DEBUG] [Thread-123610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:33.549 [DEBUG] [Thread-123611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:40.831 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:40.831 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:50:48.576 [DEBUG] [Thread-123612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:03.605 [DEBUG] [Thread-123613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:07.216 [DEBUG] [Thread-123614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:18.631 [DEBUG] [Thread-123615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:33.662 [DEBUG] [Thread-123616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:34.075 [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-28T11:51:40.973 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:40.973 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:44.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:51:44.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:51:44.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-28T11:51:44.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 51, 39), 17.45, 30.81, 0.0, 17.52, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:51:44.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:51:39
2025-09-28T11:51:44.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:51:44.946 [DEBUG] [Thread-123617] [transport.py] [_log()] starting thread (client mode): 0x2b9f3160
2025-09-28T11:51:44.947 [DEBUG] [Thread-123617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:51:44.967 [DEBUG] [Thread-123617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:51:44.967 [INFO] [Thread-123617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:51:44.970 [DEBUG] [Thread-123617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] client lang: <none>
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] server lang: <none>
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] kex follows: False
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] Compression: none
2025-09-28T11:51:44.971 [DEBUG] [Thread-123617] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:51:44.979 [DEBUG] [Thread-123617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:51:44.980 [DEBUG] [Thread-123617] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:51:44.980 [DEBUG] [Thread-123617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:51:44.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:51:44.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:51:44.982 [DEBUG] [Thread-123617] [transport.py] [_log()] userauth is OK
2025-09-28T11:51:44.982 [DEBUG] [Thread-123617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:51:44.982 [DEBUG] [Thread-123617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:51:44.982 [DEBUG] [Thread-123617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:51:44.982 [DEBUG] [Thread-123617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:51:45.006 [INFO] [Thread-123617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:51:45.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:51:45.609 [DEBUG] [Thread-123617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:51:45.609 [DEBUG] [Thread-123617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:51:45.609 [DEBUG] [Thread-123617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:51:45.650 [DEBUG] [Thread-123617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:51:45.650 [DEBUG] [Thread-123617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:51:45.653 [DEBUG] [Thread-123617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:51:45.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:51:45.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:51:45.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:51:45.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:51:45.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:51:45.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:51:45.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.410502 -999.00  +17.50  10.80     37   +2.90 1 1 1 1 1   888    0 15.19 -25.75 ----- 13.2 10.8 279.8 13.2 25.6 -25.0 24.4 -24.0 23.4 -23.9 24.5 -23.8
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:51:45.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.410502
2025-09-28T11:51:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:51:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:51:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:51:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:51:45.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:51:45.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:51:39', tmtdew=17.45, humidity=30.81, cloud=0.0, wind=17.52, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:51:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:51:45.679 [DEBUG] [Thread-123617] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:51:45.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-28T11:51:45.775 [DEBUG] [Thread-123620] [transport.py] [_log()] starting thread (client mode): 0x2b989fc0
2025-09-28T11:51:45.775 [DEBUG] [Thread-123620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:51:45.789 [DEBUG] [Thread-123620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:51:45.789 [INFO] [Thread-123620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] client lang: <none>
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] server lang: <none>
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] kex follows: False
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] Compression: none
2025-09-28T11:51:45.797 [DEBUG] [Thread-123620] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:51:45.854 [DEBUG] [Thread-123620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:51:45.855 [DEBUG] [Thread-123620] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:51:45.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:51:45.856 [DEBUG] [Thread-123620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:51:45.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:51:45.910 [DEBUG] [Thread-123620] [transport.py] [_log()] userauth is OK
2025-09-28T11:51:45.911 [DEBUG] [Thread-123620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:51:45.911 [DEBUG] [Thread-123620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:51:45.911 [DEBUG] [Thread-123620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:51:45.911 [DEBUG] [Thread-123620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:51:45.930 [INFO] [Thread-123620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:51:45.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-28T11:51:45.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:51:46.931 [DEBUG] [Thread-123620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:51:46.931 [DEBUG] [Thread-123620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:51:46.979 [DEBUG] [Thread-123620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:51:46.979 [DEBUG] [Thread-123620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:51:46.988 [DEBUG] [Thread-123620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:51:46.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:51:46.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-28T11:51: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') -> 00000000
2025-09-28T11:51:47.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:51:47.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:51:47.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:51:47.023 [DEBUG] [Thread-123620] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:51:48.694 [DEBUG] [Thread-123622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:51:57.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:51:57.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:51:57.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:51:57.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 51, 39), 17.45, 30.81, 0.0, 17.52, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:51:57.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:51:39
2025-09-28T11:51:57.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:51:57.878 [DEBUG] [Thread-123623] [transport.py] [_log()] starting thread (client mode): 0x2e38f160
2025-09-28T11:51:57.878 [DEBUG] [Thread-123623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:51:57.891 [DEBUG] [Thread-123623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:51:57.891 [INFO] [Thread-123623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] client lang: <none>
2025-09-28T11:51:57.894 [DEBUG] [Thread-123623] [transport.py] [_log()] server lang: <none>
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] kex follows: False
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] Compression: none
2025-09-28T11:51:57.895 [DEBUG] [Thread-123623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:51:57.912 [DEBUG] [Thread-123623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:51:57.912 [DEBUG] [Thread-123623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:51:57.912 [DEBUG] [Thread-123623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:51:57.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:51:57.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:51:57.914 [DEBUG] [Thread-123623] [transport.py] [_log()] userauth is OK
2025-09-28T11:51:57.914 [DEBUG] [Thread-123623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:51:57.915 [DEBUG] [Thread-123623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:51:57.915 [DEBUG] [Thread-123623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:51:57.915 [DEBUG] [Thread-123623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:51:57.939 [INFO] [Thread-123623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:51:57.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:51:58.571 [DEBUG] [Thread-123623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:51:58.571 [DEBUG] [Thread-123623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:51:58.571 [DEBUG] [Thread-123623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:51:58.612 [DEBUG] [Thread-123623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:51:58.612 [DEBUG] [Thread-123623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:51:58.615 [DEBUG] [Thread-123623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:51:58.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:51:58.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:51:58.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:51:58.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:51:58.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:51:58.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:51:58.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:51:58.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.410502 -999.00  +17.50  10.80     37   +2.90 1 1 1 1 1   888    0 15.19 -25.75 ----- 13.2 10.8 279.8 13.2 25.6 -25.0 24.4 -24.0 23.4 -23.9 24.5 -23.8
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.410502
2025-09-28T11:51:58.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:51:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:51:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:51:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:51:58.643 [DEBUG] [Thread-123623] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:51:58.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:51:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:51:39', tmtdew=17.45, humidity=30.81, cloud=0.0, wind=17.52, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:51:07.373', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:51:58.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-28T11:51:58.736 [DEBUG] [Thread-123626] [transport.py] [_log()] starting thread (client mode): 0x2e3fb8b0
2025-09-28T11:51:58.737 [DEBUG] [Thread-123626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:51:58.752 [DEBUG] [Thread-123626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:51:58.752 [INFO] [Thread-123626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] client lang: <none>
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] server lang: <none>
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] kex follows: False
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:51:58.760 [DEBUG] [Thread-123626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:51:58.761 [DEBUG] [Thread-123626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:51:58.761 [DEBUG] [Thread-123626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:51:58.761 [DEBUG] [Thread-123626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:51:58.761 [DEBUG] [Thread-123626] [transport.py] [_log()] Compression: none
2025-09-28T11:51:58.761 [DEBUG] [Thread-123626] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:51:58.818 [DEBUG] [Thread-123626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:51:58.819 [DEBUG] [Thread-123626] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:51:58.819 [DEBUG] [Thread-123626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:51:58.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:51:58.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:51:58.874 [DEBUG] [Thread-123626] [transport.py] [_log()] userauth is OK
2025-09-28T11:51:58.875 [DEBUG] [Thread-123626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:51:58.875 [DEBUG] [Thread-123626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:51:58.875 [DEBUG] [Thread-123626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:51:58.875 [DEBUG] [Thread-123626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:51:58.894 [INFO] [Thread-123626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:51:58.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-28T11:51:58.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:51:59.856 [DEBUG] [Thread-123626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:51:59.857 [DEBUG] [Thread-123626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:51:59.904 [DEBUG] [Thread-123626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:51:59.904 [DEBUG] [Thread-123626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:51:59.913 [DEBUG] [Thread-123626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:51:59.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:51:59.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-28T11:51:59.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-28T11:51:59.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:51:59.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:51:59.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:51:59.949 [DEBUG] [Thread-123626] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:03.743 [DEBUG] [Thread-123628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:07.263 [DEBUG] [Thread-123629 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:09.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:52:09.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:52:09.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:52:10.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 51, 39), 17.45, 30.81, 0.0, 17.52, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:52:10.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:51:39
2025-09-28T11:52:10.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:52:10.807 [DEBUG] [Thread-123630] [transport.py] [_log()] starting thread (client mode): 0x2b988fd0
2025-09-28T11:52:10.808 [DEBUG] [Thread-123630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:10.828 [DEBUG] [Thread-123630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:52:10.828 [INFO] [Thread-123630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:10.829 [DEBUG] [Thread-123630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] Compression: none
2025-09-28T11:52:10.830 [DEBUG] [Thread-123630] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:10.848 [DEBUG] [Thread-123630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:10.848 [DEBUG] [Thread-123630] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:10.849 [DEBUG] [Thread-123630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:52:10.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:52:10.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:10.851 [DEBUG] [Thread-123630] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:10.851 [DEBUG] [Thread-123630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:10.851 [DEBUG] [Thread-123630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:10.852 [DEBUG] [Thread-123630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:52:10.852 [DEBUG] [Thread-123630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:10.877 [INFO] [Thread-123630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:10.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:11.530 [DEBUG] [Thread-123630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:11.530 [DEBUG] [Thread-123630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:11.530 [DEBUG] [Thread-123630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:52:11.571 [DEBUG] [Thread-123630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:11.572 [DEBUG] [Thread-123630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:11.575 [DEBUG] [Thread-123630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:11.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:11.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:52:11.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:52:11.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:52:11.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:11.597 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:52:11.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:11.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:11.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:52:11.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.410849 -999.00  +17.70  18.44     37   +3.20 1 1 1 1 1   888    0 14.93 -39.34 ----- 21.5 18.4 246.1 24.5 25.5 -26.9 24.4 -24.4 23.4 -24.0 24.5 -25.4
2025-09-28T11:52:11.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:52:11.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:52:11.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.410849
2025-09-28T11:52:11.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:52:11.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:52:11.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:52:11.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:52:11.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:52:11.600 [DEBUG] [Thread-123630] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:11.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:51:39', tmtdew=17.45, humidity=30.81, cloud=0.0, wind=17.52, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:51:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:52:11.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-28T11:52:11.696 [DEBUG] [Thread-123633] [transport.py] [_log()] starting thread (client mode): 0x2b988040
2025-09-28T11:52:11.696 [DEBUG] [Thread-123633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:11.716 [DEBUG] [Thread-123633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:52:11.716 [INFO] [Thread-123633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:52:11.723 [DEBUG] [Thread-123633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:11.724 [DEBUG] [Thread-123633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:11.725 [DEBUG] [Thread-123633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:11.726 [DEBUG] [Thread-123633] [transport.py] [_log()] Compression: none
2025-09-28T11:52:11.726 [DEBUG] [Thread-123633] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:11.783 [DEBUG] [Thread-123633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:11.784 [DEBUG] [Thread-123633] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:11.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:52:11.785 [DEBUG] [Thread-123633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:52:11.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:11.839 [DEBUG] [Thread-123633] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:11.839 [DEBUG] [Thread-123633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:11.839 [DEBUG] [Thread-123633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:11.839 [DEBUG] [Thread-123633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:52:11.839 [DEBUG] [Thread-123633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:11.858 [INFO] [Thread-123633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:11.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-28T11:52:11.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:12.832 [DEBUG] [Thread-123633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:12.832 [DEBUG] [Thread-123633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:12.881 [DEBUG] [Thread-123633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:12.881 [DEBUG] [Thread-123633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:12.889 [DEBUG] [Thread-123633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:12.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:12.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-28T11:52:12.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-28T11:52:12.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:12.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:12.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:12.920 [DEBUG] [Thread-123633] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:18.778 [DEBUG] [Thread-123635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:22.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:52:22.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:52:22.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-28T11:52:23.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 52, 11), 17.3, 31.07, 0.0, 13.75, 17.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:52:23.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:52:11
2025-09-28T11:52:23.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:52:23.777 [DEBUG] [Thread-123636] [transport.py] [_log()] starting thread (client mode): 0x2b9ada20
2025-09-28T11:52:23.778 [DEBUG] [Thread-123636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:23.800 [DEBUG] [Thread-123636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:52:23.800 [INFO] [Thread-123636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:23.804 [DEBUG] [Thread-123636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:23.805 [DEBUG] [Thread-123636] [transport.py] [_log()] Compression: none
2025-09-28T11:52:23.806 [DEBUG] [Thread-123636] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:23.824 [DEBUG] [Thread-123636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:23.825 [DEBUG] [Thread-123636] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:23.825 [DEBUG] [Thread-123636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:52:23.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:52:23.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:23.827 [DEBUG] [Thread-123636] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:23.828 [DEBUG] [Thread-123636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:23.828 [DEBUG] [Thread-123636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:23.828 [DEBUG] [Thread-123636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:52:23.828 [DEBUG] [Thread-123636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:23.851 [INFO] [Thread-123636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:23.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:24.474 [DEBUG] [Thread-123636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:24.474 [DEBUG] [Thread-123636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:24.475 [DEBUG] [Thread-123636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:52:24.515 [DEBUG] [Thread-123636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:24.516 [DEBUG] [Thread-123636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:24.518 [DEBUG] [Thread-123636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:24.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:24.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:52:24.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:52:24.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:52:24.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:24.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:52:24.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.410849 -999.00  +17.70  18.44     37   +3.20 1 1 1 1 1   888    0 14.93 -39.34 ----- 21.5 18.4 246.1 24.5 25.5 -26.9 24.4 -24.4 23.4 -24.0 24.5 -25.4
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:52:24.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.410849
2025-09-28T11:52:24.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:52:24.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:52:24.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:52:24.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:52:24.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:52:24.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:52:11', tmtdew=17.3, humidity=31.07, cloud=0.0, wind=13.75, temperature=17.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:51:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:52:24.542 [DEBUG] [Thread-123636] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52: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-28T11:52:24.637 [DEBUG] [Thread-123639] [transport.py] [_log()] starting thread (client mode): 0x2b989060
2025-09-28T11:52:24.637 [DEBUG] [Thread-123639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:24.651 [DEBUG] [Thread-123639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:52:24.652 [INFO] [Thread-123639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:52:24.659 [DEBUG] [Thread-123639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] Compression: none
2025-09-28T11:52:24.660 [DEBUG] [Thread-123639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:24.719 [DEBUG] [Thread-123639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:24.719 [DEBUG] [Thread-123639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:24.719 [DEBUG] [Thread-123639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:52:24.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:52:24.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:24.774 [DEBUG] [Thread-123639] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:24.775 [DEBUG] [Thread-123639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:24.775 [DEBUG] [Thread-123639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:24.775 [DEBUG] [Thread-123639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:52:24.775 [DEBUG] [Thread-123639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:24.793 [INFO] [Thread-123639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:24.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-28T11:52:24.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:25.787 [DEBUG] [Thread-123639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:25.787 [DEBUG] [Thread-123639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:25.835 [DEBUG] [Thread-123639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:25.835 [DEBUG] [Thread-123639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:25.844 [DEBUG] [Thread-123639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:25.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52: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')
2025-09-28T11:52:25.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-28T11:52:25.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:25.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:25.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:25.878 [DEBUG] [Thread-123639] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:33.824 [DEBUG] [Thread-123641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:35.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:52:35.881 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:52:35.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-28T11:52:36.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 52, 11), 17.3, 31.07, 0.0, 13.75, 17.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:52:36.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:52:11
2025-09-28T11:52:36.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:52:36.735 [DEBUG] [Thread-123642] [transport.py] [_log()] starting thread (client mode): 0x2e38e830
2025-09-28T11:52:36.735 [DEBUG] [Thread-123642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:36.756 [DEBUG] [Thread-123642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:52:36.757 [INFO] [Thread-123642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:52:36.760 [DEBUG] [Thread-123642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:36.760 [DEBUG] [Thread-123642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:52:36.760 [DEBUG] [Thread-123642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:36.760 [DEBUG] [Thread-123642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:36.761 [DEBUG] [Thread-123642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:36.762 [DEBUG] [Thread-123642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:36.762 [DEBUG] [Thread-123642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:36.762 [DEBUG] [Thread-123642] [transport.py] [_log()] Compression: none
2025-09-28T11:52:36.762 [DEBUG] [Thread-123642] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:36.781 [DEBUG] [Thread-123642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:36.781 [DEBUG] [Thread-123642] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:36.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:52:36.782 [DEBUG] [Thread-123642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:52:36.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:36.785 [DEBUG] [Thread-123642] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:36.785 [DEBUG] [Thread-123642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:36.785 [DEBUG] [Thread-123642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:36.785 [DEBUG] [Thread-123642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:52:36.785 [DEBUG] [Thread-123642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:36.809 [INFO] [Thread-123642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:36.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:37.433 [DEBUG] [Thread-123642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:37.434 [DEBUG] [Thread-123642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:37.434 [DEBUG] [Thread-123642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:52:37.474 [DEBUG] [Thread-123642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:37.475 [DEBUG] [Thread-123642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:37.478 [DEBUG] [Thread-123642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:37.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:37.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:52:37.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:52:37.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:52:37.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:37.501 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:52:37.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:37.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:37.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:52:37.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.410849 -999.00  +17.70  18.44     37   +3.20 1 1 1 1 1   888    0 14.93 -39.34 ----- 21.5 18.4 246.1 24.5 25.5 -26.9 24.4 -24.4 23.4 -24.0 24.5 -25.4
2025-09-28T11:52:37.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:52:37.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:52:37.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.410849
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:52:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:52:11', tmtdew=17.3, humidity=31.07, cloud=0.0, wind=13.75, temperature=17.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:51:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:52:37.504 [DEBUG] [Thread-123642] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:37.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-28T11:52:37.601 [DEBUG] [Thread-123645] [transport.py] [_log()] starting thread (client mode): 0x2e3f8880
2025-09-28T11:52:37.601 [DEBUG] [Thread-123645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:37.616 [DEBUG] [Thread-123645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:52:37.616 [INFO] [Thread-123645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:52:37.624 [DEBUG] [Thread-123645] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:37.624 [DEBUG] [Thread-123645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:52:37.624 [DEBUG] [Thread-123645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:37.624 [DEBUG] [Thread-123645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:37.624 [DEBUG] [Thread-123645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:37.625 [DEBUG] [Thread-123645] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] Compression: none
2025-09-28T11:52:37.626 [DEBUG] [Thread-123645] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:37.682 [DEBUG] [Thread-123645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:37.683 [DEBUG] [Thread-123645] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:37.683 [DEBUG] [Thread-123645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:52:37.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:52:37.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:37.739 [DEBUG] [Thread-123645] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:37.739 [DEBUG] [Thread-123645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:37.739 [DEBUG] [Thread-123645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:37.740 [DEBUG] [Thread-123645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:52:37.740 [DEBUG] [Thread-123645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:37.758 [INFO] [Thread-123645] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:37.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-28T11:52:37.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:38.717 [DEBUG] [Thread-123645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:38.717 [DEBUG] [Thread-123645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:38.765 [DEBUG] [Thread-123645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:38.765 [DEBUG] [Thread-123645] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:38.773 [DEBUG] [Thread-123645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:38.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:38.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-28T11:52:38.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-28T11:52:38.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:38.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:38.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:38.811 [DEBUG] [Thread-123645] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:41.116 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:41.117 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:48.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:52:48.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:52:48.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:52:48.871 [DEBUG] [Thread-123647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:52:49.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 52, 43), 16.88, 32.27, 0.0, 14.96, 17.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:52:49.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:52:43
2025-09-28T11:52:49.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:52:49.664 [DEBUG] [Thread-123648] [transport.py] [_log()] starting thread (client mode): 0x2b9f2bc0
2025-09-28T11:52:49.664 [DEBUG] [Thread-123648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:49.680 [DEBUG] [Thread-123648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:52:49.680 [INFO] [Thread-123648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:49.683 [DEBUG] [Thread-123648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:49.684 [DEBUG] [Thread-123648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:49.684 [DEBUG] [Thread-123648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:49.684 [DEBUG] [Thread-123648] [transport.py] [_log()] Compression: none
2025-09-28T11:52:49.684 [DEBUG] [Thread-123648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:49.699 [DEBUG] [Thread-123648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:49.700 [DEBUG] [Thread-123648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:49.700 [DEBUG] [Thread-123648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:52:49.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:52:49.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:49.702 [DEBUG] [Thread-123648] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:49.702 [DEBUG] [Thread-123648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:49.702 [DEBUG] [Thread-123648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:49.702 [DEBUG] [Thread-123648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:52:49.702 [DEBUG] [Thread-123648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:49.720 [INFO] [Thread-123648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:49.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:50.333 [DEBUG] [Thread-123648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:50.334 [DEBUG] [Thread-123648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:50.334 [DEBUG] [Thread-123648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:52:50.374 [DEBUG] [Thread-123648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:50.374 [DEBUG] [Thread-123648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:50.378 [DEBUG] [Thread-123648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:50.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:50.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:52:50.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:52:50.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:52:50.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:50.400 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:52:50.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:50.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.411196 -999.00  +17.40  15.25     38   +3.10 1 1 1 1 1   888    0 14.84 -49.32 ----- 15.1 15.2 248.0 21.1 25.6 -26.2 24.3 -24.7 23.4 -23.8 24.4 -26.1
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.411196
2025-09-28T11:52:50.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:52:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:52:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:52:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:52:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:52:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:52:43', tmtdew=16.88, humidity=32.27, cloud=0.0, wind=14.96, temperature=17.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:52:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:52:50.403 [DEBUG] [Thread-123648] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:52:50.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-28T11:52:50.496 [DEBUG] [Thread-123651] [transport.py] [_log()] starting thread (client mode): 0x30ddfdf0
2025-09-28T11:52:50.496 [DEBUG] [Thread-123651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:52:50.511 [DEBUG] [Thread-123651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:52:50.511 [INFO] [Thread-123651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:52:50.518 [DEBUG] [Thread-123651] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:52:50.519 [DEBUG] [Thread-123651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] client lang: <none>
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] server lang: <none>
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] kex follows: False
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:52:50.520 [DEBUG] [Thread-123651] [transport.py] [_log()] Compression: none
2025-09-28T11:52:50.521 [DEBUG] [Thread-123651] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:52:50.583 [DEBUG] [Thread-123651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:52:50.583 [DEBUG] [Thread-123651] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:52:50.584 [DEBUG] [Thread-123651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:52:50.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:52:50.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:52:50.639 [DEBUG] [Thread-123651] [transport.py] [_log()] userauth is OK
2025-09-28T11:52:50.639 [DEBUG] [Thread-123651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:52:50.639 [DEBUG] [Thread-123651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:52:50.639 [DEBUG] [Thread-123651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:52:50.639 [DEBUG] [Thread-123651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:52:50.658 [INFO] [Thread-123651] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:52:50.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-28T11:52:50.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:52:51.635 [DEBUG] [Thread-123651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:52:51.635 [DEBUG] [Thread-123651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:52:51.682 [DEBUG] [Thread-123651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:52:51.682 [DEBUG] [Thread-123651] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:52:51.691 [DEBUG] [Thread-123651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:52:51.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:52:51.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-28T11:52:51.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-28T11:52:51.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:52:51.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:52:51.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:52:51.726 [DEBUG] [Thread-123651] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:01.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:53:01.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:53:01.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-28T11:53:02.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 52, 43), 16.88, 32.27, 0.0, 14.96, 17.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:53:02.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:52:43
2025-09-28T11:53:02.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:53:02.585 [DEBUG] [Thread-123653] [transport.py] [_log()] starting thread (client mode): 0x2b9dfdc0
2025-09-28T11:53:02.586 [DEBUG] [Thread-123653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:02.607 [DEBUG] [Thread-123653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:53:02.607 [INFO] [Thread-123653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:53:02.610 [DEBUG] [Thread-123653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:02.610 [DEBUG] [Thread-123653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:53:02.610 [DEBUG] [Thread-123653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:02.610 [DEBUG] [Thread-123653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:02.610 [DEBUG] [Thread-123653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] Compression: none
2025-09-28T11:53:02.611 [DEBUG] [Thread-123653] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:02.628 [DEBUG] [Thread-123653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:02.628 [DEBUG] [Thread-123653] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:02.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:53:02.629 [DEBUG] [Thread-123653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:53:02.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:02.630 [DEBUG] [Thread-123653] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:02.630 [DEBUG] [Thread-123653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:02.630 [DEBUG] [Thread-123653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:02.630 [DEBUG] [Thread-123653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:53:02.630 [DEBUG] [Thread-123653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:02.661 [INFO] [Thread-123653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:02.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:03.215 [DEBUG] [Thread-123653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:03.215 [DEBUG] [Thread-123653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:03.215 [DEBUG] [Thread-123653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:53:03.256 [DEBUG] [Thread-123653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:03.256 [DEBUG] [Thread-123653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:03.259 [DEBUG] [Thread-123653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:03.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:03.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:53:03.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:53:03.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:53:03.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:03.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:53:03.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.411196 -999.00  +17.40  15.25     38   +3.10 1 1 1 1 1   888    0 14.84 -49.32 ----- 15.1 15.2 248.0 21.1 25.6 -26.2 24.3 -24.7 23.4 -23.8 24.4 -26.1
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:53:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.411196
2025-09-28T11:53:03.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:53:03.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:53:03.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:53:03.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:53:03.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:53:03.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:52:43', tmtdew=16.88, humidity=32.27, cloud=0.0, wind=14.96, temperature=17.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:52:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:53:03.283 [DEBUG] [Thread-123653] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:03.366 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:53:03.378 [DEBUG] [Thread-123656] [transport.py] [_log()] starting thread (client mode): 0x2e3dc5b0
2025-09-28T11:53:03.379 [DEBUG] [Thread-123656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:03.394 [DEBUG] [Thread-123656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:53:03.394 [INFO] [Thread-123656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:53:03.401 [DEBUG] [Thread-123656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:03.402 [DEBUG] [Thread-123656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:03.403 [DEBUG] [Thread-123656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:03.404 [DEBUG] [Thread-123656] [transport.py] [_log()] Compression: none
2025-09-28T11:53:03.404 [DEBUG] [Thread-123656] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:03.460 [DEBUG] [Thread-123656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:03.460 [DEBUG] [Thread-123656] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:03.461 [DEBUG] [Thread-123656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:53:03.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:53:03.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:03.519 [DEBUG] [Thread-123656] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:03.519 [DEBUG] [Thread-123656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:03.519 [DEBUG] [Thread-123656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:03.519 [DEBUG] [Thread-123656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:53:03.519 [DEBUG] [Thread-123656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:03.539 [INFO] [Thread-123656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:03.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-28T11:53:03.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:03.897 [DEBUG] [Thread-123658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:04.583 [DEBUG] [Thread-123656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:04.583 [DEBUG] [Thread-123656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:04.631 [DEBUG] [Thread-123656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:04.631 [DEBUG] [Thread-123656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:04.639 [DEBUG] [Thread-123656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:04.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:04.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-28T11:53:04.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-28T11:53:04.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:04.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:04.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:04.671 [DEBUG] [Thread-123656] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:07.307 [DEBUG] [Thread-123659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:14.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:53:14.665 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:53:14.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-28T11:53:15.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 52, 43), 16.88, 32.27, 0.0, 14.96, 17.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:53:15.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:52:43
2025-09-28T11:53:15.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:53:15.515 [DEBUG] [Thread-123660] [transport.py] [_log()] starting thread (client mode): 0x2b9c2fe0
2025-09-28T11:53:15.515 [DEBUG] [Thread-123660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:15.529 [DEBUG] [Thread-123660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:53:15.529 [INFO] [Thread-123660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:15.531 [DEBUG] [Thread-123660] [transport.py] [_log()] Compression: none
2025-09-28T11:53:15.532 [DEBUG] [Thread-123660] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:15.547 [DEBUG] [Thread-123660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:15.547 [DEBUG] [Thread-123660] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:15.548 [DEBUG] [Thread-123660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:53:15.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:53:15.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:15.550 [DEBUG] [Thread-123660] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:15.550 [DEBUG] [Thread-123660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:15.550 [DEBUG] [Thread-123660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:15.550 [DEBUG] [Thread-123660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:53:15.550 [DEBUG] [Thread-123660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:15.567 [INFO] [Thread-123660] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:15.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:16.168 [DEBUG] [Thread-123660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:16.168 [DEBUG] [Thread-123660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:16.168 [DEBUG] [Thread-123660] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:53:16.210 [DEBUG] [Thread-123660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:16.210 [DEBUG] [Thread-123660] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:16.212 [DEBUG] [Thread-123660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:16.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:16.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:53:16.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:53:16.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:53:16.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:16.229 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:53:16.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.411890 -999.00  +17.80  20.09     38   +3.40 1 1 1 1 1   888    0 13.67 -71.19 ----- 16.7 20.1 274.7 23.8 25.6 -25.4 24.3 -25.4 23.3 -24.5 24.5 -23.6
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.411890
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:53:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:53:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:53:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:53:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:53:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:52:43', tmtdew=16.88, humidity=32.27, cloud=0.0, wind=14.96, temperature=17.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:53:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:53:16.230 [DEBUG] [Thread-123660] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:16.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:53:16.314 [DEBUG] [Thread-123663] [transport.py] [_log()] starting thread (client mode): 0x2b9c3700
2025-09-28T11:53:16.314 [DEBUG] [Thread-123663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:16.329 [DEBUG] [Thread-123663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:53:16.330 [INFO] [Thread-123663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] Compression: none
2025-09-28T11:53:16.338 [DEBUG] [Thread-123663] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:16.400 [DEBUG] [Thread-123663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:16.400 [DEBUG] [Thread-123663] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:16.400 [DEBUG] [Thread-123663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:53:16.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:53:16.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:16.459 [DEBUG] [Thread-123663] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:16.459 [DEBUG] [Thread-123663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:16.459 [DEBUG] [Thread-123663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:16.459 [DEBUG] [Thread-123663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:53:16.459 [DEBUG] [Thread-123663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:16.476 [INFO] [Thread-123663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:16.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:53:16.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:17.433 [DEBUG] [Thread-123663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:17.434 [DEBUG] [Thread-123663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:17.482 [DEBUG] [Thread-123663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:17.482 [DEBUG] [Thread-123663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:17.491 [DEBUG] [Thread-123663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:17.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:17.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-28T11:53:17.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-28T11:53:17.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:17.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:17.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:17.523 [DEBUG] [Thread-123663] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:18.938 [DEBUG] [Thread-123665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:27.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:53:27.526 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:53:27.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-28T11:53:28.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 53, 15), 16.71, 32.62, 0.0, 19.0, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:53:28.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:53:15
2025-09-28T11:53:28.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:53:28.381 [DEBUG] [Thread-123666] [transport.py] [_log()] starting thread (client mode): 0x2b9c2ef0
2025-09-28T11:53:28.381 [DEBUG] [Thread-123666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:28.401 [DEBUG] [Thread-123666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:53:28.402 [INFO] [Thread-123666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:28.405 [DEBUG] [Thread-123666] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] Compression: none
2025-09-28T11:53:28.406 [DEBUG] [Thread-123666] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:28.425 [DEBUG] [Thread-123666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:28.426 [DEBUG] [Thread-123666] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:28.426 [DEBUG] [Thread-123666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:53:28.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:53:28.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:28.428 [DEBUG] [Thread-123666] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:28.428 [DEBUG] [Thread-123666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:28.428 [DEBUG] [Thread-123666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:28.429 [DEBUG] [Thread-123666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:53:28.429 [DEBUG] [Thread-123666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:28.452 [INFO] [Thread-123666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:28.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:29.041 [DEBUG] [Thread-123666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:29.042 [DEBUG] [Thread-123666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:29.042 [DEBUG] [Thread-123666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:53:29.082 [DEBUG] [Thread-123666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:29.082 [DEBUG] [Thread-123666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:29.085 [DEBUG] [Thread-123666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:29.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:29.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:53:29.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:53:29.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:29.101 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:53:29.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.411890 -999.00  +17.80  20.09     38   +3.40 1 1 1 1 1   888    0 13.67 -71.19 ----- 16.7 20.1 274.7 23.8 25.6 -25.4 24.3 -25.4 23.3 -24.5 24.5 -23.6
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:53:29.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.411890
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:53:29.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:53:15', tmtdew=16.71, humidity=32.62, cloud=0.0, wind=19.0, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:53:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:53:29.102 [DEBUG] [Thread-123666] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:29.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-28T11:53:29.186 [DEBUG] [Thread-123669] [transport.py] [_log()] starting thread (client mode): 0x30dddc60
2025-09-28T11:53:29.186 [DEBUG] [Thread-123669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:29.201 [DEBUG] [Thread-123669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:53:29.201 [INFO] [Thread-123669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:29.209 [DEBUG] [Thread-123669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:29.210 [DEBUG] [Thread-123669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:29.210 [DEBUG] [Thread-123669] [transport.py] [_log()] Compression: none
2025-09-28T11:53:29.210 [DEBUG] [Thread-123669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:29.271 [DEBUG] [Thread-123669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:29.271 [DEBUG] [Thread-123669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:29.272 [DEBUG] [Thread-123669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:53:29.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:53:29.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:29.331 [DEBUG] [Thread-123669] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:29.331 [DEBUG] [Thread-123669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:29.331 [DEBUG] [Thread-123669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:29.332 [DEBUG] [Thread-123669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:53:29.332 [DEBUG] [Thread-123669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:29.352 [INFO] [Thread-123669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:29.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-28T11:53:29.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:30.405 [DEBUG] [Thread-123669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:30.406 [DEBUG] [Thread-123669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:30.453 [DEBUG] [Thread-123669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:30.453 [DEBUG] [Thread-123669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:30.463 [DEBUG] [Thread-123669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:30.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:30.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-28T11:53:30.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-28T11:53:30.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:30.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:30.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:30.498 [DEBUG] [Thread-123669] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:33.983 [DEBUG] [Thread-123671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:40.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:53:40.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:53:40.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-28T11:53:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 53, 15), 16.71, 32.62, 0.0, 19.0, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:53:41.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:53:15
2025-09-28T11:53:41.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:53:41.259 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:41.259 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:41.408 [DEBUG] [Thread-123672] [transport.py] [_log()] starting thread (client mode): 0x2b9c3130
2025-09-28T11:53:41.409 [DEBUG] [Thread-123672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:41.434 [DEBUG] [Thread-123672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:53:41.434 [INFO] [Thread-123672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] Compression: none
2025-09-28T11:53:41.438 [DEBUG] [Thread-123672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:41.452 [DEBUG] [Thread-123672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:41.452 [DEBUG] [Thread-123672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:41.452 [DEBUG] [Thread-123672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:53:41.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:53:41.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:41.453 [DEBUG] [Thread-123672] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:41.453 [DEBUG] [Thread-123672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:41.453 [DEBUG] [Thread-123672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:41.453 [DEBUG] [Thread-123672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:53:41.453 [DEBUG] [Thread-123672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:41.469 [INFO] [Thread-123672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:41.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:42.128 [DEBUG] [Thread-123672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:42.128 [DEBUG] [Thread-123672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:42.128 [DEBUG] [Thread-123672] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:53:42.169 [DEBUG] [Thread-123672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:42.169 [DEBUG] [Thread-123672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:42.171 [DEBUG] [Thread-123672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:42.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:42.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:53:42.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:53:42.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:53:42.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:42.188 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:53:42.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.411890 -999.00  +17.80  20.09     38   +3.40 1 1 1 1 1   888    0 13.67 -71.19 ----- 16.7 20.1 274.7 23.8 25.6 -25.4 24.3 -25.4 23.3 -24.5 24.5 -23.6
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.411890
2025-09-28T11:53:42.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:53:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:53:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:53:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:53:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:53:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:53:15', tmtdew=16.71, humidity=32.62, cloud=0.0, wind=19.0, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:53:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:53:42.189 [DEBUG] [Thread-123672] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:42.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-28T11:53:42.275 [DEBUG] [Thread-123675] [transport.py] [_log()] starting thread (client mode): 0x2b9c0a00
2025-09-28T11:53:42.275 [DEBUG] [Thread-123675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:42.289 [DEBUG] [Thread-123675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:53:42.289 [INFO] [Thread-123675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] Compression: none
2025-09-28T11:53:42.297 [DEBUG] [Thread-123675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:42.354 [DEBUG] [Thread-123675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:42.354 [DEBUG] [Thread-123675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:42.355 [DEBUG] [Thread-123675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:53:42.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:53:42.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:42.410 [DEBUG] [Thread-123675] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:42.410 [DEBUG] [Thread-123675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:42.410 [DEBUG] [Thread-123675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:42.410 [DEBUG] [Thread-123675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:53:42.410 [DEBUG] [Thread-123675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:42.424 [INFO] [Thread-123675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:42.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-28T11:53:42.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:43.439 [DEBUG] [Thread-123675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:43.439 [DEBUG] [Thread-123675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:43.487 [DEBUG] [Thread-123675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:43.487 [DEBUG] [Thread-123675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:43.495 [DEBUG] [Thread-123675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:43.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53: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-28T11:53:43.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-28T11:53:43.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:43.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:43.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:43.526 [DEBUG] [Thread-123675] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:49.023 [DEBUG] [Thread-123677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:53:53.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:53:53.528 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:53:53.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:53:54.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 53, 47), 17.0, 32.07, 0.0, 20.64, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:53:54.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:53:47
2025-09-28T11:53:54.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:53:54.380 [DEBUG] [Thread-123678] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-28T11:53:54.380 [DEBUG] [Thread-123678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:54.400 [DEBUG] [Thread-123678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:53:54.401 [INFO] [Thread-123678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:54.404 [DEBUG] [Thread-123678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] Compression: none
2025-09-28T11:53:54.405 [DEBUG] [Thread-123678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:54.422 [DEBUG] [Thread-123678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:54.422 [DEBUG] [Thread-123678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:54.423 [DEBUG] [Thread-123678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:53:54.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:53:54.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:54.424 [DEBUG] [Thread-123678] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:54.425 [DEBUG] [Thread-123678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:54.425 [DEBUG] [Thread-123678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:54.425 [DEBUG] [Thread-123678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:53:54.425 [DEBUG] [Thread-123678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:54.449 [INFO] [Thread-123678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:54.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:55.079 [DEBUG] [Thread-123678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:55.079 [DEBUG] [Thread-123678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:55.079 [DEBUG] [Thread-123678] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:53:55.120 [DEBUG] [Thread-123678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:55.120 [DEBUG] [Thread-123678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:55.123 [DEBUG] [Thread-123678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:55.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:55.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:53:55.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:53:55.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:53:55.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:55.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:53:55.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.412238 -999.00  +17.40  14.90     39   +3.30 1 1 1 1 1   888    0 13.16 -90.07 ----- 20.5 14.9 253.5 20.3 25.4 -28.0 24.3 -25.1 23.1 -30.2 24.4 -24.9
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:53:55.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.412238
2025-09-28T11:53:55.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:53:55.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:53:55.149 [DEBUG] [Thread-123678] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:53:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:53:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:53:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:53:55.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:53:47', tmtdew=17.0, humidity=32.07, cloud=0.0, wind=20.64, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:53:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:53:55.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-28T11:53:55.245 [DEBUG] [Thread-123681] [transport.py] [_log()] starting thread (client mode): 0x2e377820
2025-09-28T11:53:55.245 [DEBUG] [Thread-123681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:53:55.260 [DEBUG] [Thread-123681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:53:55.261 [INFO] [Thread-123681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:53:55.268 [DEBUG] [Thread-123681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] client lang: <none>
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] server lang: <none>
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] kex follows: False
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] Compression: none
2025-09-28T11:53:55.269 [DEBUG] [Thread-123681] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:53:55.324 [DEBUG] [Thread-123681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:53:55.325 [DEBUG] [Thread-123681] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:53:55.325 [DEBUG] [Thread-123681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:53:55.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:53:55.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:53:55.381 [DEBUG] [Thread-123681] [transport.py] [_log()] userauth is OK
2025-09-28T11:53:55.381 [DEBUG] [Thread-123681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:53:55.381 [DEBUG] [Thread-123681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:53:55.381 [DEBUG] [Thread-123681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:53:55.381 [DEBUG] [Thread-123681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:53:55.401 [INFO] [Thread-123681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:53:55.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-28T11:53:55.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:53:56.409 [DEBUG] [Thread-123681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:53:56.409 [DEBUG] [Thread-123681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:53:56.457 [DEBUG] [Thread-123681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:53:56.457 [DEBUG] [Thread-123681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:53:56.467 [DEBUG] [Thread-123681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:53:56.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:53:56.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-28T11:53:56.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-28T11:53:56.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:53:56.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:53:56.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:53:56.504 [DEBUG] [Thread-123681] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:04.053 [DEBUG] [Thread-123683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:06.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:54:06.506 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:54:06.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-28T11:54:07.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 53, 47), 17.0, 32.07, 0.0, 20.64, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:54:07.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:53:47
2025-09-28T11:54:07.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:54:07.357 [DEBUG] [Thread-123684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:07.363 [DEBUG] [Thread-123685] [transport.py] [_log()] starting thread (client mode): 0x2e3dd990
2025-09-28T11:54:07.363 [DEBUG] [Thread-123685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:54:07.378 [DEBUG] [Thread-123685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:54:07.379 [INFO] [Thread-123685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:54:07.380 [DEBUG] [Thread-123685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:54:07.380 [DEBUG] [Thread-123685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:54:07.380 [DEBUG] [Thread-123685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:54:07.380 [DEBUG] [Thread-123685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] client lang: <none>
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] server lang: <none>
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] kex follows: False
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] Compression: none
2025-09-28T11:54:07.381 [DEBUG] [Thread-123685] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:54:07.391 [DEBUG] [Thread-123685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:54:07.391 [DEBUG] [Thread-123685] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:54:07.391 [DEBUG] [Thread-123685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:54:07.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:54:07.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:54:07.392 [DEBUG] [Thread-123685] [transport.py] [_log()] userauth is OK
2025-09-28T11:54:07.392 [DEBUG] [Thread-123685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:54:07.392 [DEBUG] [Thread-123685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:54:07.393 [DEBUG] [Thread-123685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:54:07.393 [DEBUG] [Thread-123685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:54:07.408 [INFO] [Thread-123685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:54:07.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:54:08.039 [DEBUG] [Thread-123685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:54:08.040 [DEBUG] [Thread-123685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:54:08.040 [DEBUG] [Thread-123685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:54:08.080 [DEBUG] [Thread-123685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:54:08.080 [DEBUG] [Thread-123685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:54:08.083 [DEBUG] [Thread-123685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:54:08.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:54:08.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:54:08.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:54:08.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:54:08.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:54:08.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:54:08.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:54:08.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:54:08.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:54:08.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.412238 -999.00  +17.40  14.90     39   +3.30 1 1 1 1 1   888    0 13.16 -90.07 ----- 20.5 14.9 253.5 20.3 25.4 -28.0 24.3 -25.1 23.1 -30.2 24.4 -24.9
2025-09-28T11:54:08.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:54:08.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:54:08.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.412238
2025-09-28T11:54:08.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:54:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:54:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:54:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:54:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:54:08.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:53:47', tmtdew=17.0, humidity=32.07, cloud=0.0, wind=20.64, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:53:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:54:08.109 [DEBUG] [Thread-123685] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:08.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:54:08.205 [DEBUG] [Thread-123688] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-28T11:54:08.205 [DEBUG] [Thread-123688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:54:08.223 [DEBUG] [Thread-123688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:54:08.223 [INFO] [Thread-123688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:54:08.230 [DEBUG] [Thread-123688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] client lang: <none>
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] server lang: <none>
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] kex follows: False
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:54:08.231 [DEBUG] [Thread-123688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:54:08.232 [DEBUG] [Thread-123688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:54:08.232 [DEBUG] [Thread-123688] [transport.py] [_log()] Compression: none
2025-09-28T11:54:08.232 [DEBUG] [Thread-123688] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:54:08.293 [DEBUG] [Thread-123688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:54:08.293 [DEBUG] [Thread-123688] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:54:08.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:54:08.294 [DEBUG] [Thread-123688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:54:08.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:54:08.353 [DEBUG] [Thread-123688] [transport.py] [_log()] userauth is OK
2025-09-28T11:54:08.353 [DEBUG] [Thread-123688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:54:08.353 [DEBUG] [Thread-123688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:54:08.353 [DEBUG] [Thread-123688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:54:08.353 [DEBUG] [Thread-123688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:54:08.373 [INFO] [Thread-123688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:54:08.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:54:08.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:54:09.373 [DEBUG] [Thread-123688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:54:09.374 [DEBUG] [Thread-123688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:54:09.421 [DEBUG] [Thread-123688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:54:09.422 [DEBUG] [Thread-123688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:54:09.431 [DEBUG] [Thread-123688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:54:09.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:54:09.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-28T11:54:09.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-28T11:54:09.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:54:09.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:54:09.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:54:09.466 [DEBUG] [Thread-123688] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:19.100 [DEBUG] [Thread-123690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:19.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:54:19.468 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:54:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:54:20.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 53, 47), 17.0, 32.07, 0.0, 20.64, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:54:20.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:53:47
2025-09-28T11:54:20.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:54:20.393 [DEBUG] [Thread-123691] [transport.py] [_log()] starting thread (client mode): 0x2e38f220
2025-09-28T11:54:20.393 [DEBUG] [Thread-123691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:54:20.414 [DEBUG] [Thread-123691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:54:20.414 [INFO] [Thread-123691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] client lang: <none>
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] server lang: <none>
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] kex follows: False
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] Compression: none
2025-09-28T11:54:20.418 [DEBUG] [Thread-123691] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:54:20.434 [DEBUG] [Thread-123691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:54:20.434 [DEBUG] [Thread-123691] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:54:20.434 [DEBUG] [Thread-123691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:54:20.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:54:20.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:54:20.435 [DEBUG] [Thread-123691] [transport.py] [_log()] userauth is OK
2025-09-28T11:54:20.435 [DEBUG] [Thread-123691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:54:20.435 [DEBUG] [Thread-123691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:54:20.435 [DEBUG] [Thread-123691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:54:20.435 [DEBUG] [Thread-123691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:54:20.464 [INFO] [Thread-123691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:54:20.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:54:21.052 [DEBUG] [Thread-123691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:54:21.052 [DEBUG] [Thread-123691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:54:21.052 [DEBUG] [Thread-123691] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:54:21.093 [DEBUG] [Thread-123691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:54:21.093 [DEBUG] [Thread-123691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:54:21.095 [DEBUG] [Thread-123691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:54:21.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:54:21.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:54:21.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:54:21.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:54:21.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:54:21.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:54:21.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.412585 -999.00  +17.40   7.41     39   +3.40 1 1 1 1 1   888    0 12.78 -100.04 ----- 13.4 7.4 233.9 18.7 25.3 -27.1 24.1 -24.9 23.2 -23.6 24.3 -25.8
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.412585
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:54:21.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:53:47', tmtdew=17.0, humidity=32.07, cloud=0.0, wind=20.64, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:54:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:54:21.109 [DEBUG] [Thread-123691] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:21.183 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:54:21.192 [DEBUG] [Thread-123694] [transport.py] [_log()] starting thread (client mode): 0x30ddeb90
2025-09-28T11:54:21.192 [DEBUG] [Thread-123694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:54:21.206 [DEBUG] [Thread-123694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:54:21.207 [INFO] [Thread-123694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] client lang: <none>
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] server lang: <none>
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] kex follows: False
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] Compression: none
2025-09-28T11:54:21.214 [DEBUG] [Thread-123694] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:54:21.270 [DEBUG] [Thread-123694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:54:21.270 [DEBUG] [Thread-123694] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:54:21.270 [DEBUG] [Thread-123694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:54:21.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:54:21.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:54:21.327 [DEBUG] [Thread-123694] [transport.py] [_log()] userauth is OK
2025-09-28T11:54:21.327 [DEBUG] [Thread-123694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:54:21.327 [DEBUG] [Thread-123694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:54:21.327 [DEBUG] [Thread-123694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:54:21.327 [DEBUG] [Thread-123694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:54:21.342 [INFO] [Thread-123694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:54:21.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-28T11:54:21.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:54:22.370 [DEBUG] [Thread-123694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:54:22.370 [DEBUG] [Thread-123694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:54:22.418 [DEBUG] [Thread-123694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:54:22.418 [DEBUG] [Thread-123694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:54:22.426 [DEBUG] [Thread-123694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:54:22.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:54:22.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-28T11:54:22.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-28T11:54:22.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:54:22.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:54:22.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:54:22.458 [DEBUG] [Thread-123694] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:32.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:54:32.461 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:54:32.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-28T11:54:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 54, 19), 16.98, 32.12, 0.0, 18.81, 17.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:54:33.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:54:19
2025-09-28T11:54:33.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:54:33.306 [DEBUG] [Thread-123696] [transport.py] [_log()] starting thread (client mode): 0x30dddcf0
2025-09-28T11:54:33.307 [DEBUG] [Thread-123696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:54:33.327 [DEBUG] [Thread-123696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:54:33.328 [INFO] [Thread-123696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:54:33.331 [DEBUG] [Thread-123696] [transport.py] [_log()] client lang: <none>
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] server lang: <none>
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] kex follows: False
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] Compression: none
2025-09-28T11:54:33.332 [DEBUG] [Thread-123696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:54:33.353 [DEBUG] [Thread-123696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:54:33.354 [DEBUG] [Thread-123696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:54:33.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:54:33.355 [DEBUG] [Thread-123696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:54:33.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:54:33.357 [DEBUG] [Thread-123696] [transport.py] [_log()] userauth is OK
2025-09-28T11:54:33.357 [DEBUG] [Thread-123696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:54:33.357 [DEBUG] [Thread-123696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:54:33.357 [DEBUG] [Thread-123696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:54:33.357 [DEBUG] [Thread-123696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:54:33.392 [INFO] [Thread-123696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:54:33.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:54:34.038 [DEBUG] [Thread-123696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:54:34.039 [DEBUG] [Thread-123696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:54:34.039 [DEBUG] [Thread-123696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:54:34.079 [DEBUG] [Thread-123696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:54:34.080 [DEBUG] [Thread-123696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:54:34.082 [DEBUG] [Thread-123696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:54:34.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:54:34.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:54:34.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:54:34.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:54:34.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:54:34.108 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:54:34.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:54:34.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:54:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:54:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.412585 -999.00  +17.40   7.41     39   +3.40 1 1 1 1 1   888    0 12.78 -100.04 ----- 13.4 7.4 233.9 18.7 25.3 -27.1 24.1 -24.9 23.2 -23.6 24.3 -25.8
2025-09-28T11:54:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:54:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:54:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.412585
2025-09-28T11:54:34.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:54:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:54:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:54:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:54:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:54:34.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:54:19', tmtdew=16.98, humidity=32.12, cloud=0.0, wind=18.81, temperature=17.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:54:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:54:34.110 [DEBUG] [Thread-123696] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:54:34.131 [DEBUG] [Thread-123699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:34.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-28T11:54:41.400 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:41.401 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:54:49.173 [DEBUG] [Thread-123700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:04.208 [DEBUG] [Thread-123701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:07.389 [DEBUG] [Thread-123702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:19.240 [DEBUG] [Thread-123703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:34.269 [DEBUG] [Thread-123704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:41.542 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:41.543 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:55:49.295 [DEBUG] [Thread-123705 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:04.322 [DEBUG] [Thread-123706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:07.450 [DEBUG] [Thread-123707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:19.351 [DEBUG] [Thread-123708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:34.388 [DEBUG] [Thread-123709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:41.685 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:41.686 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:49.418 [DEBUG] [Thread-123710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:56:49.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-28T11:56:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:56:59.477 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:56:59.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:57:00.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 56, 27), 16.33, 33.68, 0.0, 23.33, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:57:00.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:56:27
2025-09-28T11:57:00.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:57:00.403 [DEBUG] [Thread-123711] [transport.py] [_log()] starting thread (client mode): 0x30ddd090
2025-09-28T11:57:00.404 [DEBUG] [Thread-123711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:00.422 [DEBUG] [Thread-123711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:57:00.422 [INFO] [Thread-123711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:00.425 [DEBUG] [Thread-123711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:00.426 [DEBUG] [Thread-123711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:00.426 [DEBUG] [Thread-123711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:00.426 [DEBUG] [Thread-123711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:00.426 [DEBUG] [Thread-123711] [transport.py] [_log()] Compression: none
2025-09-28T11:57:00.426 [DEBUG] [Thread-123711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:00.442 [DEBUG] [Thread-123711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:00.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:57:00.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:57:00.443 [DEBUG] [Thread-123711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:00.452 [INFO] [Thread-123711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:00.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:01.050 [DEBUG] [Thread-123711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:01.050 [DEBUG] [Thread-123711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:01.050 [DEBUG] [Thread-123711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:57:01.091 [DEBUG] [Thread-123711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:01.091 [DEBUG] [Thread-123711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:01.093 [DEBUG] [Thread-123711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:01.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:01.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:57:01.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:57:01.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:57:01.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:01.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:57:01.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.413974 -999.00  +17.40  20.01     40   +3.80 1 1 1 1 1   888    0 11.71 -130.14 ----- 20.6 20.0 276.2 27.1 25.2 -26.2 24.1 -24.5 22.8 -27.3 24.4 -24.4
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:57:01.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.413974
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:57:01.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:56:27', tmtdew=16.33, humidity=33.68, cloud=0.0, wind=23.33, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:56:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:57:01.113 [DEBUG] [Thread-123711] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:01.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-28T11:57:01.198 [DEBUG] [Thread-123714] [transport.py] [_log()] starting thread (client mode): 0x2b9c3d60
2025-09-28T11:57:01.198 [DEBUG] [Thread-123714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:01.212 [DEBUG] [Thread-123714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:57:01.212 [INFO] [Thread-123714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:01.221 [DEBUG] [Thread-123714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] Compression: none
2025-09-28T11:57:01.222 [DEBUG] [Thread-123714] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:01.280 [DEBUG] [Thread-123714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:01.280 [DEBUG] [Thread-123714] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:01.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:57:01.281 [DEBUG] [Thread-123714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:57:01.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:01.339 [DEBUG] [Thread-123714] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:01.339 [DEBUG] [Thread-123714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:01.339 [DEBUG] [Thread-123714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:01.339 [DEBUG] [Thread-123714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:57:01.339 [DEBUG] [Thread-123714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:01.361 [INFO] [Thread-123714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:01.361 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T11:57:01.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:02.349 [DEBUG] [Thread-123714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:02.350 [DEBUG] [Thread-123714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:02.397 [DEBUG] [Thread-123714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:02.397 [DEBUG] [Thread-123714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:02.407 [DEBUG] [Thread-123714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:02.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:02.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-28T11:57:02.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-28T11:57:02.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:02.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:02.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:02.442 [DEBUG] [Thread-123714] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:04.444 [DEBUG] [Thread-123716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:07.500 [DEBUG] [Thread-123717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:12.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:57:12.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:57:12.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-28T11:57:13.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 56, 59), 16.17, 33.81, 0.0, 20.87, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:57:13.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:56:59
2025-09-28T11:57:13.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:57:13.307 [DEBUG] [Thread-123718] [transport.py] [_log()] starting thread (client mode): 0x2b9c07f0
2025-09-28T11:57:13.307 [DEBUG] [Thread-123718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:13.326 [DEBUG] [Thread-123718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:57:13.326 [INFO] [Thread-123718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] Compression: none
2025-09-28T11:57:13.328 [DEBUG] [Thread-123718] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:13.339 [DEBUG] [Thread-123718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:13.339 [DEBUG] [Thread-123718] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:13.340 [DEBUG] [Thread-123718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:57:13.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:57:13.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:13.341 [DEBUG] [Thread-123718] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:13.341 [DEBUG] [Thread-123718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:13.341 [DEBUG] [Thread-123718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:13.341 [DEBUG] [Thread-123718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:57:13.341 [DEBUG] [Thread-123718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:13.359 [INFO] [Thread-123718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:13.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:13.979 [DEBUG] [Thread-123718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:13.979 [DEBUG] [Thread-123718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:13.980 [DEBUG] [Thread-123718] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:57:14.020 [DEBUG] [Thread-123718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:14.020 [DEBUG] [Thread-123718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:14.023 [DEBUG] [Thread-123718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:14.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:14.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:57:14.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:57:14.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:57:14.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:14.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:57:14.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:14.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:14.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:57:14.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.414668 -999.00  +17.80  21.33     40   +4.10 1 1 1 1 1   888    0 11.12 -151.48 ----- 21.8 21.3 260.4 28.4 25.1 -26.0 24.0 -24.5 22.9 -23.2 24.0 -25.2
2025-09-28T11:57:14.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:57:14.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:57:14.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.414668
2025-09-28T11:57:14.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:57:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:57:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:57:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:57:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:57:14.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:56:59', tmtdew=16.17, humidity=33.81, cloud=0.0, wind=20.87, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:57:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:57:14.048 [DEBUG] [Thread-123718] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:14.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-28T11:57:14.142 [DEBUG] [Thread-123721] [transport.py] [_log()] starting thread (client mode): 0x2b98b820
2025-09-28T11:57:14.142 [DEBUG] [Thread-123721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:14.156 [DEBUG] [Thread-123721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:57:14.157 [INFO] [Thread-123721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:57:14.164 [DEBUG] [Thread-123721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:14.164 [DEBUG] [Thread-123721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] Compression: none
2025-09-28T11:57:14.165 [DEBUG] [Thread-123721] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:14.223 [DEBUG] [Thread-123721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:14.223 [DEBUG] [Thread-123721] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:14.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:57:14.224 [DEBUG] [Thread-123721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:57:14.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:14.280 [DEBUG] [Thread-123721] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:14.280 [DEBUG] [Thread-123721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:14.280 [DEBUG] [Thread-123721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:14.280 [DEBUG] [Thread-123721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:57:14.280 [DEBUG] [Thread-123721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:14.300 [INFO] [Thread-123721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:14.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-28T11:57:14.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:15.259 [DEBUG] [Thread-123721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:15.259 [DEBUG] [Thread-123721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:15.307 [DEBUG] [Thread-123721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:15.307 [DEBUG] [Thread-123721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:15.316 [DEBUG] [Thread-123721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:15.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:15.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')
2025-09-28T11:57:15.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-28T11:57:15.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:15.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:15.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:15.351 [DEBUG] [Thread-123721] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:19.495 [DEBUG] [Thread-123723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:25.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:57:25.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:57:25.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-28T11:57:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 56, 59), 16.17, 33.81, 0.0, 20.87, 17.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:57:25.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:56:59
2025-09-28T11:57:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:57:26.221 [DEBUG] [Thread-123724] [transport.py] [_log()] starting thread (client mode): 0x2e38c7f0
2025-09-28T11:57:26.221 [DEBUG] [Thread-123724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:26.241 [DEBUG] [Thread-123724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:57:26.241 [INFO] [Thread-123724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] Compression: none
2025-09-28T11:57:26.247 [DEBUG] [Thread-123724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:26.256 [DEBUG] [Thread-123724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:57:26.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:57:26.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:57:26.257 [DEBUG] [Thread-123724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:26.284 [INFO] [Thread-123724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:26.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:26.967 [DEBUG] [Thread-123724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:26.967 [DEBUG] [Thread-123724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:26.967 [DEBUG] [Thread-123724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:57:27.008 [DEBUG] [Thread-123724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:27.008 [DEBUG] [Thread-123724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:27.010 [DEBUG] [Thread-123724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:27.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:27.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:57:27.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:57:27.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:57:27.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:27.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:57:27.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.414668 -999.00  +17.80  21.33     40   +4.10 1 1 1 1 1   888    0 11.12 -151.48 ----- 21.8 21.3 260.4 28.4 25.1 -26.0 24.0 -24.5 22.9 -23.2 24.0 -25.2
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.414668
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:57:27.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:56:59', tmtdew=16.17, humidity=33.81, cloud=0.0, wind=20.87, temperature=17.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:57:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:57:27.030 [DEBUG] [Thread-123724] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:27.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-28T11:57:27.115 [DEBUG] [Thread-123727] [transport.py] [_log()] starting thread (client mode): 0x2e38fdc0
2025-09-28T11:57:27.115 [DEBUG] [Thread-123727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:27.132 [DEBUG] [Thread-123727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:57:27.133 [INFO] [Thread-123727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] Compression: none
2025-09-28T11:57:27.143 [DEBUG] [Thread-123727] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:27.203 [DEBUG] [Thread-123727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:27.203 [DEBUG] [Thread-123727] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:27.203 [DEBUG] [Thread-123727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:57:27.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:57:27.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:27.265 [DEBUG] [Thread-123727] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:27.266 [DEBUG] [Thread-123727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:27.266 [DEBUG] [Thread-123727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:27.266 [DEBUG] [Thread-123727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:57:27.266 [DEBUG] [Thread-123727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:27.284 [INFO] [Thread-123727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57: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-28T11:57:27.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:28.306 [DEBUG] [Thread-123727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:28.306 [DEBUG] [Thread-123727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:28.355 [DEBUG] [Thread-123727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:28.355 [DEBUG] [Thread-123727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:28.364 [DEBUG] [Thread-123727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:28.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:28.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-28T11:57:28.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-28T11:57:28.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:28.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:28.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:28.398 [DEBUG] [Thread-123727] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:34.548 [DEBUG] [Thread-123729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:38.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:57:38.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:57:38.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-28T11:57:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 57, 31), 16.24, 33.68, 0.0, 21.67, 17.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:57:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:57:31
2025-09-28T11:57:39.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:57:39.269 [DEBUG] [Thread-123730] [transport.py] [_log()] starting thread (client mode): 0x2b988640
2025-09-28T11:57:39.269 [DEBUG] [Thread-123730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:39.289 [DEBUG] [Thread-123730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:57:39.289 [INFO] [Thread-123730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] Compression: none
2025-09-28T11:57:39.292 [DEBUG] [Thread-123730] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:39.308 [DEBUG] [Thread-123730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:39.309 [DEBUG] [Thread-123730] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:39.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:57:39.310 [DEBUG] [Thread-123730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:57:39.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:39.312 [DEBUG] [Thread-123730] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:39.312 [DEBUG] [Thread-123730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:39.312 [DEBUG] [Thread-123730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:39.312 [DEBUG] [Thread-123730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:57:39.312 [DEBUG] [Thread-123730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:39.329 [INFO] [Thread-123730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:39.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:40.051 [DEBUG] [Thread-123730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:40.051 [DEBUG] [Thread-123730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:40.052 [DEBUG] [Thread-123730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:57:40.092 [DEBUG] [Thread-123730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:40.092 [DEBUG] [Thread-123730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:40.095 [DEBUG] [Thread-123730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:40.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:40.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:57:40.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:57:40.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:57:40.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:40.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:57:40.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:40.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.414668 -999.00  +17.80  21.33     40   +4.10 1 1 1 1 1   888    0 11.12 -151.48 ----- 21.8 21.3 260.4 28.4 25.1 -26.0 24.0 -24.5 22.9 -23.2 24.0 -25.2
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.414668
2025-09-28T11:57:40.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:57:40.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:57:40.121 [DEBUG] [Thread-123730] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:40.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:57:40.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:57:40.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:57:40.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:57:31', tmtdew=16.24, humidity=33.68, cloud=0.0, wind=21.67, temperature=17.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:57:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:57: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-28T11:57:41.251 [DEBUG] [Thread-123733] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-28T11:57:41.251 [DEBUG] [Thread-123733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:41.265 [DEBUG] [Thread-123733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:57:41.265 [INFO] [Thread-123733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:41.273 [DEBUG] [Thread-123733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] Compression: none
2025-09-28T11:57:41.274 [DEBUG] [Thread-123733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:41.329 [DEBUG] [Thread-123733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:41.329 [DEBUG] [Thread-123733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:41.330 [DEBUG] [Thread-123733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:57:41.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:57:41.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:41.386 [DEBUG] [Thread-123733] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:41.386 [DEBUG] [Thread-123733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:41.386 [DEBUG] [Thread-123733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:41.386 [DEBUG] [Thread-123733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:57:41.386 [DEBUG] [Thread-123733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:41.405 [INFO] [Thread-123733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:41.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-28T11:57:41.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:41.827 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:41.828 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:42.371 [DEBUG] [Thread-123733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:42.371 [DEBUG] [Thread-123733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:42.419 [DEBUG] [Thread-123733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:42.419 [DEBUG] [Thread-123733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:42.427 [DEBUG] [Thread-123733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:42.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:42.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-28T11:57:42.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-28T11:57:42.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:42.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:42.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:42.461 [DEBUG] [Thread-123733] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:49.580 [DEBUG] [Thread-123735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:57:52.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:57:52.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:57:52.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-28T11:57:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 57, 31), 16.24, 33.68, 0.0, 21.67, 17.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:57:53.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:57:31
2025-09-28T11:57:53.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:57:53.331 [DEBUG] [Thread-123736] [transport.py] [_log()] starting thread (client mode): 0x2b9c3af0
2025-09-28T11:57:53.331 [DEBUG] [Thread-123736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:53.345 [DEBUG] [Thread-123736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:57:53.345 [INFO] [Thread-123736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:53.347 [DEBUG] [Thread-123736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:53.348 [DEBUG] [Thread-123736] [transport.py] [_log()] Compression: none
2025-09-28T11:57:53.348 [DEBUG] [Thread-123736] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:53.356 [DEBUG] [Thread-123736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:53.357 [DEBUG] [Thread-123736] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:53.357 [DEBUG] [Thread-123736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:57:53.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:57:53.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:53.359 [DEBUG] [Thread-123736] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:53.359 [DEBUG] [Thread-123736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:53.359 [DEBUG] [Thread-123736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:53.359 [DEBUG] [Thread-123736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:57:53.359 [DEBUG] [Thread-123736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:53.376 [INFO] [Thread-123736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:53.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:53.959 [DEBUG] [Thread-123736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:53.959 [DEBUG] [Thread-123736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:53.960 [DEBUG] [Thread-123736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:57:54.000 [DEBUG] [Thread-123736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:54.000 [DEBUG] [Thread-123736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:54.003 [DEBUG] [Thread-123736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:54.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:54.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:57:54.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:57:54.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:57:54.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:54.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:57:54.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:54.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.415015 -999.00  +17.40  16.67     40   +3.80 1 1 1 1 1   888    0 11.18 -150.10 ----- 16.0 16.7 258.0 22.1 25.1 -26.3 23.9 -24.2 23.0 -23.3 24.0 -25.9
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.415015
2025-09-28T11:57:54.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:57:54.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:57:54.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:57:54.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:57:54.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:57:54.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:57:31', tmtdew=16.24, humidity=33.68, cloud=0.0, wind=21.67, temperature=17.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:57:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:57:54.031 [DEBUG] [Thread-123736] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:57:54.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-28T11:57:54.126 [DEBUG] [Thread-123739] [transport.py] [_log()] starting thread (client mode): 0x2e38f9a0
2025-09-28T11:57:54.126 [DEBUG] [Thread-123739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:57:54.140 [DEBUG] [Thread-123739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:57:54.140 [INFO] [Thread-123739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] client lang: <none>
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] server lang: <none>
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] kex follows: False
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:57:54.148 [DEBUG] [Thread-123739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:57:54.149 [DEBUG] [Thread-123739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:57:54.149 [DEBUG] [Thread-123739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:57:54.149 [DEBUG] [Thread-123739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:57:54.149 [DEBUG] [Thread-123739] [transport.py] [_log()] Compression: none
2025-09-28T11:57:54.149 [DEBUG] [Thread-123739] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:57:54.204 [DEBUG] [Thread-123739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:57:54.205 [DEBUG] [Thread-123739] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:57:54.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:57:54.206 [DEBUG] [Thread-123739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:57:54.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:57:54.261 [DEBUG] [Thread-123739] [transport.py] [_log()] userauth is OK
2025-09-28T11:57:54.261 [DEBUG] [Thread-123739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:57:54.262 [DEBUG] [Thread-123739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:57:54.262 [DEBUG] [Thread-123739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:57:54.262 [DEBUG] [Thread-123739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:57:54.280 [INFO] [Thread-123739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:57:54.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-28T11:57:54.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:57:55.217 [DEBUG] [Thread-123739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:57:55.218 [DEBUG] [Thread-123739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:57:55.265 [DEBUG] [Thread-123739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:57:55.265 [DEBUG] [Thread-123739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:57:55.274 [DEBUG] [Thread-123739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:57:55.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:57:55.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-28T11:57:55.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-28T11:57:55.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:57:55.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:57:55.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:57:55.309 [DEBUG] [Thread-123739] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:04.628 [DEBUG] [Thread-123741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:05.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:58:05.310 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:58:05.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T11:58:05.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 58, 2), 16.39, 33.36, 0.0, 22.13, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:58:05.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:58:02
2025-09-28T11:58:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:58:06.190 [DEBUG] [Thread-123742] [transport.py] [_log()] starting thread (client mode): 0x2e38e5f0
2025-09-28T11:58:06.190 [DEBUG] [Thread-123742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:06.209 [DEBUG] [Thread-123742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:58:06.210 [INFO] [Thread-123742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:58:06.212 [DEBUG] [Thread-123742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:06.213 [DEBUG] [Thread-123742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] Compression: none
2025-09-28T11:58:06.214 [DEBUG] [Thread-123742] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:06.231 [DEBUG] [Thread-123742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:06.231 [DEBUG] [Thread-123742] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:06.232 [DEBUG] [Thread-123742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:58:06.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:58:06.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:06.234 [DEBUG] [Thread-123742] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:06.234 [DEBUG] [Thread-123742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:06.234 [DEBUG] [Thread-123742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:06.234 [DEBUG] [Thread-123742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:58:06.234 [DEBUG] [Thread-123742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:06.258 [INFO] [Thread-123742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:06.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:06.896 [DEBUG] [Thread-123742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:06.896 [DEBUG] [Thread-123742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:06.896 [DEBUG] [Thread-123742] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:58:06.937 [DEBUG] [Thread-123742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:06.938 [DEBUG] [Thread-123742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:06.941 [DEBUG] [Thread-123742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:06.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:06.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:58:06.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:58:06.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:58:06.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:06.962 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:58:06.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:06.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:58:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.415015 -999.00  +17.40  16.67     40   +3.80 1 1 1 1 1   888    0 11.18 -150.10 ----- 16.0 16.7 258.0 22.1 25.1 -26.3 23.9 -24.2 23.0 -23.3 24.0 -25.9
2025-09-28T11:58:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:58:06.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:58:06.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.415015
2025-09-28T11:58:06.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:58:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:58:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:58:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:58:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:58:06.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:58:02', tmtdew=16.39, humidity=33.36, cloud=0.0, wind=22.13, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:57:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:58:06.966 [DEBUG] [Thread-123742] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:07.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:58:07.059 [DEBUG] [Thread-123745] [transport.py] [_log()] starting thread (client mode): 0x2b98ab60
2025-09-28T11:58:07.059 [DEBUG] [Thread-123745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:07.074 [DEBUG] [Thread-123745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:58:07.074 [INFO] [Thread-123745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:58:07.081 [DEBUG] [Thread-123745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:07.082 [DEBUG] [Thread-123745] [transport.py] [_log()] Compression: none
2025-09-28T11:58:07.083 [DEBUG] [Thread-123745] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:07.144 [DEBUG] [Thread-123745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:07.144 [DEBUG] [Thread-123745] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:07.145 [DEBUG] [Thread-123745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:58:07.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:58:07.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:07.201 [DEBUG] [Thread-123745] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:07.201 [DEBUG] [Thread-123745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:07.201 [DEBUG] [Thread-123745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:07.201 [DEBUG] [Thread-123745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:58:07.201 [DEBUG] [Thread-123745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:07.221 [INFO] [Thread-123745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:07.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-28T11:58:07.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:07.552 [DEBUG] [Thread-123747 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:08.185 [DEBUG] [Thread-123745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:08.185 [DEBUG] [Thread-123745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:08.233 [DEBUG] [Thread-123745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:08.233 [DEBUG] [Thread-123745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:08.244 [DEBUG] [Thread-123745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:08.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:08.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-28T11:58:08.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-28T11:58:08.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:08.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:08.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:08.280 [DEBUG] [Thread-123745] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:18.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:58:18.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:58:18.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-28T11:58:18.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 58, 2), 16.39, 33.36, 0.0, 22.13, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:58:18.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:58:02
2025-09-28T11:58:18.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:58:19.146 [DEBUG] [Thread-123748] [transport.py] [_log()] starting thread (client mode): 0x2e38ec80
2025-09-28T11:58:19.146 [DEBUG] [Thread-123748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:19.166 [DEBUG] [Thread-123748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:58:19.166 [INFO] [Thread-123748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] Compression: none
2025-09-28T11:58:19.168 [DEBUG] [Thread-123748] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:19.177 [DEBUG] [Thread-123748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:19.178 [DEBUG] [Thread-123748] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:19.178 [DEBUG] [Thread-123748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:58:19.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:58:19.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:19.180 [DEBUG] [Thread-123748] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:19.180 [DEBUG] [Thread-123748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:19.180 [DEBUG] [Thread-123748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:19.180 [DEBUG] [Thread-123748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:58:19.180 [DEBUG] [Thread-123748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:19.198 [INFO] [Thread-123748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:19.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:19.663 [DEBUG] [Thread-123750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:19.787 [DEBUG] [Thread-123748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:19.787 [DEBUG] [Thread-123748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:19.788 [DEBUG] [Thread-123748] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:58:19.828 [DEBUG] [Thread-123748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:19.829 [DEBUG] [Thread-123748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:19.831 [DEBUG] [Thread-123748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:19.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:19.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:58:19.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:58:19.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:58:19.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:19.846 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:58:19.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:19.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:19.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:58:19.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.415363 -999.00  +17.40  13.46     40   +4.00 1 1 1 1 1   888    0 11.06 -151.09 ----- 11.4 13.5 243.4 21.3 25.1 -26.2 24.0 -24.6 23.1 -23.5 24.0 -25.2
2025-09-28T11:58:19.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:58:19.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:58:19.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.415363
2025-09-28T11:58:19.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:58:19.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:58:19.848 [DEBUG] [Thread-123748] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:19.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:58:19.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:58:19.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:58:19.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:58:02', tmtdew=16.39, humidity=33.36, cloud=0.0, wind=22.13, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:58:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:58:19.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T11:58:19.940 [DEBUG] [Thread-123752] [transport.py] [_log()] starting thread (client mode): 0x2e3df5b0
2025-09-28T11:58:19.940 [DEBUG] [Thread-123752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:19.956 [DEBUG] [Thread-123752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:58:19.956 [INFO] [Thread-123752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:58:19.963 [DEBUG] [Thread-123752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] Compression: none
2025-09-28T11:58:19.964 [DEBUG] [Thread-123752] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:20.019 [DEBUG] [Thread-123752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:20.019 [DEBUG] [Thread-123752] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:20.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:58:20.020 [DEBUG] [Thread-123752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:58:20.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:20.084 [DEBUG] [Thread-123752] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:20.084 [DEBUG] [Thread-123752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:20.084 [DEBUG] [Thread-123752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:20.084 [DEBUG] [Thread-123752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:58:20.084 [DEBUG] [Thread-123752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:20.104 [INFO] [Thread-123752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:20.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-28T11:58:20.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:21.139 [DEBUG] [Thread-123752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:21.139 [DEBUG] [Thread-123752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:21.186 [DEBUG] [Thread-123752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:21.186 [DEBUG] [Thread-123752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:21.195 [DEBUG] [Thread-123752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:21.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:21.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-28T11:58:21.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-28T11:58:21.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:21.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:21.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:21.229 [DEBUG] [Thread-123752] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:31.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:58:31.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:58:31.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-28T11:58:31.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 58, 2), 16.39, 33.36, 0.0, 22.13, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:58:31.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:58:02
2025-09-28T11:58:31.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:58:32.083 [DEBUG] [Thread-123754] [transport.py] [_log()] starting thread (client mode): 0x2b9acaf0
2025-09-28T11:58:32.083 [DEBUG] [Thread-123754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:32.103 [DEBUG] [Thread-123754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:58:32.103 [INFO] [Thread-123754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:58:32.106 [DEBUG] [Thread-123754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:32.106 [DEBUG] [Thread-123754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:58:32.106 [DEBUG] [Thread-123754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] Compression: none
2025-09-28T11:58:32.107 [DEBUG] [Thread-123754] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:32.123 [DEBUG] [Thread-123754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:32.123 [DEBUG] [Thread-123754] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:32.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:58:32.124 [DEBUG] [Thread-123754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:58:32.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:32.126 [DEBUG] [Thread-123754] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:32.126 [DEBUG] [Thread-123754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:32.126 [DEBUG] [Thread-123754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:32.127 [DEBUG] [Thread-123754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:58:32.127 [DEBUG] [Thread-123754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:32.150 [INFO] [Thread-123754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:32.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:32.712 [DEBUG] [Thread-123754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:32.712 [DEBUG] [Thread-123754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:32.713 [DEBUG] [Thread-123754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:58:32.753 [DEBUG] [Thread-123754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:32.753 [DEBUG] [Thread-123754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:32.757 [DEBUG] [Thread-123754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:32.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:32.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:58:32.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:58:32.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:58:32.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:32.780 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:58:32.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:32.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:32.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:58:32.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.415363 -999.00  +17.40  13.46     40   +4.00 1 1 1 1 1   888    0 11.06 -151.09 ----- 11.4 13.5 243.4 21.3 25.1 -26.2 24.0 -24.6 23.1 -23.5 24.0 -25.2
2025-09-28T11:58:32.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:58:32.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:58:32.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.415363
2025-09-28T11:58:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:58:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:58:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:58:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:58:32.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:58:32.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:58:02', tmtdew=16.39, humidity=33.36, cloud=0.0, wind=22.13, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:58:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:58:32.783 [DEBUG] [Thread-123754] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:32.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-28T11:58:32.878 [DEBUG] [Thread-123757] [transport.py] [_log()] starting thread (client mode): 0x2b989ff0
2025-09-28T11:58:32.878 [DEBUG] [Thread-123757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:32.892 [DEBUG] [Thread-123757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T11:58:32.892 [INFO] [Thread-123757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T11:58:32.900 [DEBUG] [Thread-123757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:32.900 [DEBUG] [Thread-123757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] Compression: none
2025-09-28T11:58:32.901 [DEBUG] [Thread-123757] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:32.966 [DEBUG] [Thread-123757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:32.967 [DEBUG] [Thread-123757] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:32.967 [DEBUG] [Thread-123757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T11:58:32.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T11:58:32.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:33.023 [DEBUG] [Thread-123757] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:33.023 [DEBUG] [Thread-123757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:33.024 [DEBUG] [Thread-123757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:33.024 [DEBUG] [Thread-123757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T11:58:33.024 [DEBUG] [Thread-123757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:33.042 [INFO] [Thread-123757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:33.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-28T11:58:33.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:33.980 [DEBUG] [Thread-123757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:33.980 [DEBUG] [Thread-123757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:34.028 [DEBUG] [Thread-123757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:34.028 [DEBUG] [Thread-123757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:34.037 [DEBUG] [Thread-123757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:34.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:34.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-28T11:58:34.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-28T11:58:34.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:34.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:34.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:34.070 [DEBUG] [Thread-123757] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:34.708 [DEBUG] [Thread-123759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:41.967 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:41.968 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:58:44.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T11:58:44.072 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T11:58:44.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-28T11:58:44.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 11, 58, 34), 15.96, 34.45, 0.0, 16.23, 17.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T11:58:44.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 11:58:34
2025-09-28T11:58:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T11:58:44.925 [DEBUG] [Thread-123760] [transport.py] [_log()] starting thread (client mode): 0x2b9ae4d0
2025-09-28T11:58:44.925 [DEBUG] [Thread-123760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T11:58:44.945 [DEBUG] [Thread-123760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T11:58:44.945 [INFO] [Thread-123760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] client lang: <none>
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] server lang: <none>
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] kex follows: False
2025-09-28T11:58:44.948 [DEBUG] [Thread-123760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] Compression: none
2025-09-28T11:58:44.949 [DEBUG] [Thread-123760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T11:58:44.960 [DEBUG] [Thread-123760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T11:58:44.961 [DEBUG] [Thread-123760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T11:58:44.962 [DEBUG] [Thread-123760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T11:58:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T11:58:44.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T11:58:44.964 [DEBUG] [Thread-123760] [transport.py] [_log()] userauth is OK
2025-09-28T11:58:44.965 [DEBUG] [Thread-123760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T11:58:44.965 [DEBUG] [Thread-123760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T11:58:44.965 [DEBUG] [Thread-123760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T11:58:44.965 [DEBUG] [Thread-123760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T11:58:44.990 [INFO] [Thread-123760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T11:58:44.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T11:58:45.677 [DEBUG] [Thread-123760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T11:58:45.678 [DEBUG] [Thread-123760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T11:58:45.678 [DEBUG] [Thread-123760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T11:58:45.718 [DEBUG] [Thread-123760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T11:58:45.718 [DEBUG] [Thread-123760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T11:58:45.721 [DEBUG] [Thread-123760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T11:58:45.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T11:58:45.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T11:58:45.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T11:58:45.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T11:58:45.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T11:58:45.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T11:58:45.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T11:58:45.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.415363 -999.00  +17.40  13.46     40   +4.00 1 1 1 1 1   888    0 11.06 -151.09 ----- 11.4 13.5 243.4 21.3 25.1 -26.2 24.0 -24.6 23.1 -23.5 24.0 -25.2
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.415363
2025-09-28T11:58:45.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T11:58:45.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T11:58:45.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T11:58:45.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T11:58:45.737 [DEBUG] [Thread-123760] [transport.py] [_log()] EOF in transport thread
2025-09-28T11:58:45.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T11:58:45.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T11:58:34', tmtdew=15.96, humidity=34.45, cloud=0.0, wind=16.23, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T09:58:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T11:58:45.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-28T11:58:49.739 [DEBUG] [Thread-123763 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:04.791 [DEBUG] [Thread-123764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:07.601 [DEBUG] [Thread-123765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:19.816 [DEBUG] [Thread-123766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:34.844 [DEBUG] [Thread-123767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:42.108 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:42.109 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T11:59:49.877 [DEBUG] [Thread-123768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:04.910 [DEBUG] [Thread-123769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:07.655 [DEBUG] [Thread-123770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:19.945 [DEBUG] [Thread-123771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:34.974 [DEBUG] [Thread-123772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:42.249 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:42.250 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:50.002 [DEBUG] [Thread-123773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:00:59.323 [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-28T12:01:05.033 [DEBUG] [Thread-123774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:07.702 [DEBUG] [Thread-123775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:09.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:01:09.333 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:01:09.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-28T12:01:09.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 0, 42), 16.21, 33.91, 0.0, 14.56, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:01:09.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:00:42
2025-09-28T12:01:10.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:01:10.251 [DEBUG] [Thread-123776] [transport.py] [_log()] starting thread (client mode): 0x2b9883a0
2025-09-28T12:01:10.251 [DEBUG] [Thread-123776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:10.271 [DEBUG] [Thread-123776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:01:10.271 [INFO] [Thread-123776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:01:10.274 [DEBUG] [Thread-123776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:10.274 [DEBUG] [Thread-123776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:01:10.274 [DEBUG] [Thread-123776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:10.274 [DEBUG] [Thread-123776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] Compression: none
2025-09-28T12:01:10.275 [DEBUG] [Thread-123776] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:10.292 [DEBUG] [Thread-123776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:10.292 [DEBUG] [Thread-123776] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:10.292 [DEBUG] [Thread-123776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:01:10.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:01:10.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:10.293 [DEBUG] [Thread-123776] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:10.293 [DEBUG] [Thread-123776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:10.293 [DEBUG] [Thread-123776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:10.293 [DEBUG] [Thread-123776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:01:10.293 [DEBUG] [Thread-123776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:10.302 [INFO] [Thread-123776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:10.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:10.861 [DEBUG] [Thread-123776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:10.861 [DEBUG] [Thread-123776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:10.861 [DEBUG] [Thread-123776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:01:10.902 [DEBUG] [Thread-123776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:10.902 [DEBUG] [Thread-123776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:10.904 [DEBUG] [Thread-123776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:10.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:10.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:01:10.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:01:10.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:01:10.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:10.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:01:10.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:10.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417099 -999.00  +18.00   8.90     40   +4.20 1 1 1 1 1   888    0 9.60 -196.31 ----- 14.1 8.9 288.1 17.9 25.1 -26.2 24.0 -23.8 23.3 -24.4 24.4 -24.9
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417099
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:01:10.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:00:42', tmtdew=16.21, humidity=33.91, cloud=0.0, wind=14.56, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:00:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:01:10.924 [DEBUG] [Thread-123776] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:10.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-28T12:01:11.012 [DEBUG] [Thread-123779] [transport.py] [_log()] starting thread (client mode): 0x2b9f3130
2025-09-28T12:01:11.012 [DEBUG] [Thread-123779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:11.028 [DEBUG] [Thread-123779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:01:11.028 [INFO] [Thread-123779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:01:11.035 [DEBUG] [Thread-123779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] Compression: none
2025-09-28T12:01:11.036 [DEBUG] [Thread-123779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:11.090 [DEBUG] [Thread-123779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:11.090 [DEBUG] [Thread-123779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:11.090 [DEBUG] [Thread-123779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:01:11.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:01:11.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:11.149 [DEBUG] [Thread-123779] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:11.149 [DEBUG] [Thread-123779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:11.149 [DEBUG] [Thread-123779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:11.149 [DEBUG] [Thread-123779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:01:11.149 [DEBUG] [Thread-123779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:11.164 [INFO] [Thread-123779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:11.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:01:11.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:12.136 [DEBUG] [Thread-123779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:12.136 [DEBUG] [Thread-123779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:12.189 [DEBUG] [Thread-123779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:12.189 [DEBUG] [Thread-123779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:12.197 [DEBUG] [Thread-123779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:12.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01: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-28T12:01:12.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-28T12:01:12.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:12.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:12.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:12.239 [DEBUG] [Thread-123779] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:20.061 [DEBUG] [Thread-123781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:22.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:01:22.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:01: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-28T12:01:22.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 1, 14), 16.14, 34.05, 0.0, 14.54, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:01:22.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:01:14
2025-09-28T12:01:22.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:01:23.103 [DEBUG] [Thread-123782] [transport.py] [_log()] starting thread (client mode): 0x2b9c3520
2025-09-28T12:01:23.103 [DEBUG] [Thread-123782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:23.122 [DEBUG] [Thread-123782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:01:23.123 [INFO] [Thread-123782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] Compression: none
2025-09-28T12:01:23.126 [DEBUG] [Thread-123782] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:23.144 [DEBUG] [Thread-123782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:23.144 [DEBUG] [Thread-123782] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:23.145 [DEBUG] [Thread-123782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:01:23.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:01:23.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:23.146 [DEBUG] [Thread-123782] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:23.147 [DEBUG] [Thread-123782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:23.147 [DEBUG] [Thread-123782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:23.147 [DEBUG] [Thread-123782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:01:23.147 [DEBUG] [Thread-123782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:23.183 [INFO] [Thread-123782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:23.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:23.829 [DEBUG] [Thread-123782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:23.829 [DEBUG] [Thread-123782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:23.829 [DEBUG] [Thread-123782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:01:23.870 [DEBUG] [Thread-123782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:23.870 [DEBUG] [Thread-123782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:23.873 [DEBUG] [Thread-123782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:23.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:23.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:01:23.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:01:23.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:01:23.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:23.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:01:23.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:23.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:01:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417099 -999.00  +18.00   8.90     40   +4.20 1 1 1 1 1   888    0 9.60 -196.31 ----- 14.1 8.9 288.1 17.9 25.1 -26.2 24.0 -23.8 23.3 -24.4 24.4 -24.9
2025-09-28T12:01:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:01:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:01:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417099
2025-09-28T12:01:23.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:01:23.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:01:23.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:01:23.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:01:23.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:01:23.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:01:14', tmtdew=16.14, humidity=34.05, cloud=0.0, wind=14.54, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:00:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:01:23.901 [DEBUG] [Thread-123782] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:23.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-28T12:01:23.996 [DEBUG] [Thread-123785] [transport.py] [_log()] starting thread (client mode): 0x2b98a350
2025-09-28T12:01:23.996 [DEBUG] [Thread-123785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:24.010 [DEBUG] [Thread-123785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:01:24.010 [INFO] [Thread-123785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:01:24.018 [DEBUG] [Thread-123785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:24.018 [DEBUG] [Thread-123785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] Compression: none
2025-09-28T12:01:24.019 [DEBUG] [Thread-123785] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:24.080 [DEBUG] [Thread-123785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:24.080 [DEBUG] [Thread-123785] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:24.081 [DEBUG] [Thread-123785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:01:24.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:01:24.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:24.136 [DEBUG] [Thread-123785] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:24.136 [DEBUG] [Thread-123785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:24.136 [DEBUG] [Thread-123785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:24.136 [DEBUG] [Thread-123785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:01:24.136 [DEBUG] [Thread-123785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:24.154 [INFO] [Thread-123785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:24.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-28T12:01:24.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:25.112 [DEBUG] [Thread-123785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:25.112 [DEBUG] [Thread-123785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:25.160 [DEBUG] [Thread-123785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:25.160 [DEBUG] [Thread-123785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:25.169 [DEBUG] [Thread-123785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:25.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:25.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-28T12:01: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-28T12:01:25.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:25.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:25.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:25.203 [DEBUG] [Thread-123785] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:35.123 [DEBUG] [Thread-123787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:35.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:01:35.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:01:35.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-28T12:01:35.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 1, 14), 16.14, 34.05, 0.0, 14.54, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:01:35.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:01:14
2025-09-28T12:01:35.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:01:36.083 [DEBUG] [Thread-123788] [transport.py] [_log()] starting thread (client mode): 0x2b9ad720
2025-09-28T12:01:36.083 [DEBUG] [Thread-123788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:36.102 [DEBUG] [Thread-123788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:01:36.102 [INFO] [Thread-123788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] Compression: none
2025-09-28T12:01:36.104 [DEBUG] [Thread-123788] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:36.112 [DEBUG] [Thread-123788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:36.113 [DEBUG] [Thread-123788] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:36.113 [DEBUG] [Thread-123788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:01:36.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:01:36.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:36.115 [DEBUG] [Thread-123788] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:36.115 [DEBUG] [Thread-123788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:36.115 [DEBUG] [Thread-123788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:36.115 [DEBUG] [Thread-123788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:01:36.115 [DEBUG] [Thread-123788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:36.130 [INFO] [Thread-123788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:36.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:36.725 [DEBUG] [Thread-123788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:36.725 [DEBUG] [Thread-123788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:36.725 [DEBUG] [Thread-123788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:01:36.766 [DEBUG] [Thread-123788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:36.767 [DEBUG] [Thread-123788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:36.769 [DEBUG] [Thread-123788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:36.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:36.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:01:36.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:01:36.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:01:36.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:36.789 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:01:36.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417099 -999.00  +18.00   8.90     40   +4.20 1 1 1 1 1   888    0 9.60 -196.31 ----- 14.1 8.9 288.1 17.9 25.1 -26.2 24.0 -23.8 23.3 -24.4 24.4 -24.9
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:01:36.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417099
2025-09-28T12:01:36.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:01:36.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:01:36.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:01:36.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:01:36.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:01:36.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:01:14', tmtdew=16.14, humidity=34.05, cloud=0.0, wind=14.54, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:00:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:01:36.792 [DEBUG] [Thread-123788] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:36.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-28T12:01:36.890 [DEBUG] [Thread-123791] [transport.py] [_log()] starting thread (client mode): 0x2b9c2f80
2025-09-28T12:01:36.890 [DEBUG] [Thread-123791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:36.910 [DEBUG] [Thread-123791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:01:36.911 [INFO] [Thread-123791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:36.919 [DEBUG] [Thread-123791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:36.920 [DEBUG] [Thread-123791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:36.921 [DEBUG] [Thread-123791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:36.921 [DEBUG] [Thread-123791] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:36.921 [DEBUG] [Thread-123791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:36.921 [DEBUG] [Thread-123791] [transport.py] [_log()] Compression: none
2025-09-28T12:01:36.921 [DEBUG] [Thread-123791] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:36.979 [DEBUG] [Thread-123791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:36.980 [DEBUG] [Thread-123791] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:36.980 [DEBUG] [Thread-123791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:01:36.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:01:36.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:37.035 [DEBUG] [Thread-123791] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:37.035 [DEBUG] [Thread-123791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:37.036 [DEBUG] [Thread-123791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:37.036 [DEBUG] [Thread-123791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:01:37.036 [DEBUG] [Thread-123791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:37.054 [INFO] [Thread-123791] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:37.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:01:37.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:38.008 [DEBUG] [Thread-123791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:38.009 [DEBUG] [Thread-123791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:38.056 [DEBUG] [Thread-123791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:38.056 [DEBUG] [Thread-123791] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:38.065 [DEBUG] [Thread-123791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:38.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:38.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-28T12:01:38.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-28T12:01:38.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:38.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:38.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:38.101 [DEBUG] [Thread-123791] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:42.401 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:42.402 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:01:48.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:01:48.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-28T12:01:48.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 1, 14), 16.14, 34.05, 0.0, 14.54, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:01:48.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:01:14
2025-09-28T12:01:48.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:01:48.979 [DEBUG] [Thread-123793] [transport.py] [_log()] starting thread (client mode): 0x2b9acaf0
2025-09-28T12:01:48.979 [DEBUG] [Thread-123793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:48.999 [DEBUG] [Thread-123793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:01:49.000 [INFO] [Thread-123793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:49.003 [DEBUG] [Thread-123793] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] Compression: none
2025-09-28T12:01:49.004 [DEBUG] [Thread-123793] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:49.021 [DEBUG] [Thread-123793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:49.021 [DEBUG] [Thread-123793] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:49.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:01:49.022 [DEBUG] [Thread-123793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:01:49.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:49.024 [DEBUG] [Thread-123793] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:49.024 [DEBUG] [Thread-123793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:49.024 [DEBUG] [Thread-123793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:49.024 [DEBUG] [Thread-123793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:01:49.025 [DEBUG] [Thread-123793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:49.059 [INFO] [Thread-123793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:49.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:49.710 [DEBUG] [Thread-123793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:49.710 [DEBUG] [Thread-123793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:49.710 [DEBUG] [Thread-123793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:01:49.751 [DEBUG] [Thread-123793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:49.752 [DEBUG] [Thread-123793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:49.754 [DEBUG] [Thread-123793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:49.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:49.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:01:49.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:01:49.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:01:49.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:49.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:01:49.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:49.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:49.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:01:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417793 -999.00  +17.60  11.10     40   +4.20 1 1 1 1 1   888    0 9.24 -201.23 ----- 13.1 11.1 251.8 13.5 25.2 -25.2 24.1 -24.1 23.2 -23.8 24.5 -24.1
2025-09-28T12:01:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:01:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:01:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417793
2025-09-28T12:01:49.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:01:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:01:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:01:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:01:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:01:49.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:01:14', tmtdew=16.14, humidity=34.05, cloud=0.0, wind=14.54, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:01:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:01:49.772 [DEBUG] [Thread-123793] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:01:49.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-28T12:01:49.866 [DEBUG] [Thread-123796] [transport.py] [_log()] starting thread (client mode): 0x2b9dd120
2025-09-28T12:01:49.866 [DEBUG] [Thread-123796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:01:49.881 [DEBUG] [Thread-123796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:01:49.881 [INFO] [Thread-123796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] client lang: <none>
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] server lang: <none>
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] kex follows: False
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] Compression: none
2025-09-28T12:01:49.889 [DEBUG] [Thread-123796] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:01:49.946 [DEBUG] [Thread-123796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:01:49.946 [DEBUG] [Thread-123796] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:01:49.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:01:49.947 [DEBUG] [Thread-123796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:01:49.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:01:50.002 [DEBUG] [Thread-123796] [transport.py] [_log()] userauth is OK
2025-09-28T12:01:50.002 [DEBUG] [Thread-123796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:01:50.003 [DEBUG] [Thread-123796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:01:50.003 [DEBUG] [Thread-123796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:01:50.003 [DEBUG] [Thread-123796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:01:50.017 [INFO] [Thread-123796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:01:50.017 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:01:50.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:01:50.165 [DEBUG] [Thread-123798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:01:50.989 [DEBUG] [Thread-123796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:01:50.990 [DEBUG] [Thread-123796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:01:51.037 [DEBUG] [Thread-123796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:01:51.038 [DEBUG] [Thread-123796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:01:51.048 [DEBUG] [Thread-123796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:01:51.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:01:51.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-28T12:01:51.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-28T12:01:51.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:01:51.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:01:51.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:01:51.082 [DEBUG] [Thread-123796] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:01.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:02:01.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:02:01.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-28T12:02:01.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 1, 46), 15.82, 34.43, 0.0, 15.97, 17.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:02:01.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:01:46
2025-09-28T12:02:01.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:02:01.946 [DEBUG] [Thread-123799] [transport.py] [_log()] starting thread (client mode): 0x2e3c24d0
2025-09-28T12:02:01.946 [DEBUG] [Thread-123799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:01.967 [DEBUG] [Thread-123799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:02:01.967 [INFO] [Thread-123799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:01.970 [DEBUG] [Thread-123799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:01.971 [DEBUG] [Thread-123799] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:01.971 [DEBUG] [Thread-123799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:01.971 [DEBUG] [Thread-123799] [transport.py] [_log()] Compression: none
2025-09-28T12:02:01.971 [DEBUG] [Thread-123799] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:01.986 [DEBUG] [Thread-123799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:01.987 [DEBUG] [Thread-123799] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:01.987 [DEBUG] [Thread-123799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:02:01.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:02:01.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:01.988 [DEBUG] [Thread-123799] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:01.988 [DEBUG] [Thread-123799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:01.988 [DEBUG] [Thread-123799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:01.988 [DEBUG] [Thread-123799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:02:01.988 [DEBUG] [Thread-123799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:02.003 [INFO] [Thread-123799] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:02.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:02.630 [DEBUG] [Thread-123799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:02.630 [DEBUG] [Thread-123799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:02.630 [DEBUG] [Thread-123799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:02:02.671 [DEBUG] [Thread-123799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:02.671 [DEBUG] [Thread-123799] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:02.673 [DEBUG] [Thread-123799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:02.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:02.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:02:02.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:02:02.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:02:02.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:02.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:02:02.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:02.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:02.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:02:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417793 -999.00  +17.60  11.10     40   +4.20 1 1 1 1 1   888    0 9.24 -201.23 ----- 13.1 11.1 251.8 13.5 25.2 -25.2 24.1 -24.1 23.2 -23.8 24.5 -24.1
2025-09-28T12:02:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:02:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:02:02.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417793
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:02:02.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:01:46', tmtdew=15.82, humidity=34.43, cloud=0.0, wind=15.97, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:01:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:02:02.698 [DEBUG] [Thread-123799] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:02.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-28T12:02:02.796 [DEBUG] [Thread-123802] [transport.py] [_log()] starting thread (client mode): 0x2b9c3790
2025-09-28T12:02:02.796 [DEBUG] [Thread-123802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:02.810 [DEBUG] [Thread-123802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:02:02.810 [INFO] [Thread-123802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:02:02.818 [DEBUG] [Thread-123802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:02.818 [DEBUG] [Thread-123802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:02:02.818 [DEBUG] [Thread-123802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:02.818 [DEBUG] [Thread-123802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] Compression: none
2025-09-28T12:02:02.819 [DEBUG] [Thread-123802] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:02.880 [DEBUG] [Thread-123802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:02.880 [DEBUG] [Thread-123802] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:02.881 [DEBUG] [Thread-123802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:02:02.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:02:02.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:02.938 [DEBUG] [Thread-123802] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:02.938 [DEBUG] [Thread-123802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:02.939 [DEBUG] [Thread-123802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:02.939 [DEBUG] [Thread-123802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:02:02.939 [DEBUG] [Thread-123802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:02.958 [INFO] [Thread-123802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:02.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-28T12:02:02.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:04.028 [DEBUG] [Thread-123802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:04.028 [DEBUG] [Thread-123802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:04.076 [DEBUG] [Thread-123802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:04.077 [DEBUG] [Thread-123802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:04.086 [DEBUG] [Thread-123802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:04.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:04.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-28T12:02:04.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-28T12:02:04.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:04.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:04.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:04.123 [DEBUG] [Thread-123802] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:05.219 [DEBUG] [Thread-123804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:07.754 [DEBUG] [Thread-123805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:14.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:02:14.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:02:14.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-28T12:02:14.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 1, 46), 15.82, 34.43, 0.0, 15.97, 17.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:02:14.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:01:46
2025-09-28T12:02:14.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:02:14.985 [DEBUG] [Thread-123806] [transport.py] [_log()] starting thread (client mode): 0x2e3deda0
2025-09-28T12:02:14.985 [DEBUG] [Thread-123806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:15.006 [DEBUG] [Thread-123806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:02:15.006 [INFO] [Thread-123806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:15.010 [DEBUG] [Thread-123806] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] Compression: none
2025-09-28T12:02:15.011 [DEBUG] [Thread-123806] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:15.028 [DEBUG] [Thread-123806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:15.029 [DEBUG] [Thread-123806] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:15.029 [DEBUG] [Thread-123806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:02:15.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:02:15.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:15.031 [DEBUG] [Thread-123806] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:15.031 [DEBUG] [Thread-123806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:15.031 [DEBUG] [Thread-123806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:15.032 [DEBUG] [Thread-123806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:02:15.032 [DEBUG] [Thread-123806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:15.068 [INFO] [Thread-123806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:15.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:15.635 [DEBUG] [Thread-123806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:15.635 [DEBUG] [Thread-123806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:15.635 [DEBUG] [Thread-123806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:02:15.676 [DEBUG] [Thread-123806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:15.676 [DEBUG] [Thread-123806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:15.678 [DEBUG] [Thread-123806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:15.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:15.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:02:15.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:02:15.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:02:15.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:15.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:02:15.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.417793 -999.00  +17.60  11.10     40   +4.20 1 1 1 1 1   888    0 9.24 -201.23 ----- 13.1 11.1 251.8 13.5 25.2 -25.2 24.1 -24.1 23.2 -23.8 24.5 -24.1
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:02:15.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.417793
2025-09-28T12:02:15.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:02:15.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:02:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:02:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:02:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:02:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:01:46', tmtdew=15.82, humidity=34.43, cloud=0.0, wind=15.97, temperature=17.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:01:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:02:15.702 [DEBUG] [Thread-123806] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:15.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-28T12:02:15.803 [DEBUG] [Thread-123809] [transport.py] [_log()] starting thread (client mode): 0x2e374910
2025-09-28T12:02:15.803 [DEBUG] [Thread-123809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:15.818 [DEBUG] [Thread-123809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:02:15.818 [INFO] [Thread-123809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:15.825 [DEBUG] [Thread-123809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] Compression: none
2025-09-28T12:02:15.826 [DEBUG] [Thread-123809] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:15.881 [DEBUG] [Thread-123809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:15.882 [DEBUG] [Thread-123809] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:15.882 [DEBUG] [Thread-123809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:02:15.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:02:15.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:15.938 [DEBUG] [Thread-123809] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:15.938 [DEBUG] [Thread-123809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:15.938 [DEBUG] [Thread-123809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:15.938 [DEBUG] [Thread-123809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:02:15.938 [DEBUG] [Thread-123809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:15.958 [INFO] [Thread-123809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:15.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-28T12:02:15.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:16.905 [DEBUG] [Thread-123809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:16.906 [DEBUG] [Thread-123809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:16.953 [DEBUG] [Thread-123809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:16.953 [DEBUG] [Thread-123809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:16.961 [DEBUG] [Thread-123809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:16.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:16.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-28T12:02:16.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-28T12:02:16.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:16.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:16.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:16.996 [DEBUG] [Thread-123809] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:20.265 [DEBUG] [Thread-123811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:26.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:02:26.994 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:02:26.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-28T12:02:27.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 2, 18), 15.86, 34.33, 0.0, 15.16, 17.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:02:27.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:02:18
2025-09-28T12:02:27.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:02:27.858 [DEBUG] [Thread-123812] [transport.py] [_log()] starting thread (client mode): 0x2b9de7d0
2025-09-28T12:02:27.858 [DEBUG] [Thread-123812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:27.878 [DEBUG] [Thread-123812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:02:27.879 [INFO] [Thread-123812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:27.882 [DEBUG] [Thread-123812] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] Compression: none
2025-09-28T12:02:27.883 [DEBUG] [Thread-123812] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:27.900 [DEBUG] [Thread-123812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:27.900 [DEBUG] [Thread-123812] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:27.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:02:27.902 [DEBUG] [Thread-123812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:02:27.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:27.903 [DEBUG] [Thread-123812] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:27.904 [DEBUG] [Thread-123812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:27.904 [DEBUG] [Thread-123812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:27.904 [DEBUG] [Thread-123812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:02:27.904 [DEBUG] [Thread-123812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:27.927 [INFO] [Thread-123812] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:27.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:28.580 [DEBUG] [Thread-123812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:28.581 [DEBUG] [Thread-123812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:28.581 [DEBUG] [Thread-123812] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:02:28.621 [DEBUG] [Thread-123812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:28.621 [DEBUG] [Thread-123812] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:28.624 [DEBUG] [Thread-123812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:28.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:28.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:02:28.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:02:28.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:02:28.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:28.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:02:28.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:28.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418140 -999.00  +17.60  11.76     41   +4.40 1 1 1 1 1   888    0 8.99 -203.67 ----- 11.1 11.8 232.1 16.1 25.2 -26.2 24.1 -28.1 23.4 -23.4 24.5 -25.5
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418140
2025-09-28T12:02:28.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:02:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:02:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:02:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:02:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:02:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:02:18', tmtdew=15.86, humidity=34.33, cloud=0.0, wind=15.16, temperature=17.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:02:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:02:28.649 [DEBUG] [Thread-123812] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:28.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-28T12:02:28.744 [DEBUG] [Thread-123815] [transport.py] [_log()] starting thread (client mode): 0x2b9f3640
2025-09-28T12:02:28.744 [DEBUG] [Thread-123815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:28.760 [DEBUG] [Thread-123815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:02:28.760 [INFO] [Thread-123815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:28.768 [DEBUG] [Thread-123815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:28.769 [DEBUG] [Thread-123815] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:28.769 [DEBUG] [Thread-123815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:28.769 [DEBUG] [Thread-123815] [transport.py] [_log()] Compression: none
2025-09-28T12:02:28.769 [DEBUG] [Thread-123815] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:28.825 [DEBUG] [Thread-123815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:28.826 [DEBUG] [Thread-123815] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:28.826 [DEBUG] [Thread-123815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:02:28.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:02:28.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:28.881 [DEBUG] [Thread-123815] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:28.882 [DEBUG] [Thread-123815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:28.882 [DEBUG] [Thread-123815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:28.882 [DEBUG] [Thread-123815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:02:28.882 [DEBUG] [Thread-123815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:28.901 [INFO] [Thread-123815] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:28.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-28T12:02:28.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:29.887 [DEBUG] [Thread-123815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:29.887 [DEBUG] [Thread-123815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:29.935 [DEBUG] [Thread-123815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:29.935 [DEBUG] [Thread-123815] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:29.944 [DEBUG] [Thread-123815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:29.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:29.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-28T12:02:29.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') -> 00000000
2025-09-28T12:02:29.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:29.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:29.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:29.979 [DEBUG] [Thread-123815] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:35.291 [DEBUG] [Thread-123817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:02:39.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:02:39.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:02:40.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 2, 18), 15.86, 34.33, 0.0, 15.16, 17.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:02:40.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:02:18
2025-09-28T12:02:40.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:02:40.846 [DEBUG] [Thread-123818] [transport.py] [_log()] starting thread (client mode): 0x2e34bfd0
2025-09-28T12:02:40.846 [DEBUG] [Thread-123818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:40.867 [DEBUG] [Thread-123818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:02:40.867 [INFO] [Thread-123818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:40.871 [DEBUG] [Thread-123818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] Compression: none
2025-09-28T12:02:40.872 [DEBUG] [Thread-123818] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:40.888 [DEBUG] [Thread-123818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:40.889 [DEBUG] [Thread-123818] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:40.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:02:40.889 [DEBUG] [Thread-123818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:02:40.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:40.891 [DEBUG] [Thread-123818] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:40.892 [DEBUG] [Thread-123818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:40.892 [DEBUG] [Thread-123818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:40.892 [DEBUG] [Thread-123818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:02:40.892 [DEBUG] [Thread-123818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:40.915 [INFO] [Thread-123818] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:40.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:41.511 [DEBUG] [Thread-123818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:41.511 [DEBUG] [Thread-123818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:41.511 [DEBUG] [Thread-123818] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:02:41.552 [DEBUG] [Thread-123818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:41.553 [DEBUG] [Thread-123818] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:41.556 [DEBUG] [Thread-123818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:41.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:41.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:02:41.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:02:41.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:02:41.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:41.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:02:41.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:41.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:41.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:02:41.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418140 -999.00  +17.60  11.76     41   +4.40 1 1 1 1 1   888    0 8.99 -203.67 ----- 11.1 11.8 232.1 16.1 25.2 -26.2 24.1 -28.1 23.4 -23.4 24.5 -25.5
2025-09-28T12:02:41.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:02:41.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:02:41.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418140
2025-09-28T12:02:41.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:02:41.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:02:41.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:02:41.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:02:41.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:02:41.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:02:18', tmtdew=15.86, humidity=34.33, cloud=0.0, wind=15.16, temperature=17.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:02:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:02:41.584 [DEBUG] [Thread-123818] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:41.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-28T12:02:41.681 [DEBUG] [Thread-123821] [transport.py] [_log()] starting thread (client mode): 0x2e374370
2025-09-28T12:02:41.681 [DEBUG] [Thread-123821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:41.695 [DEBUG] [Thread-123821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:02:41.695 [INFO] [Thread-123821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:41.703 [DEBUG] [Thread-123821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:41.704 [DEBUG] [Thread-123821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:41.704 [DEBUG] [Thread-123821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:41.704 [DEBUG] [Thread-123821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:41.704 [DEBUG] [Thread-123821] [transport.py] [_log()] Compression: none
2025-09-28T12:02:41.704 [DEBUG] [Thread-123821] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:41.761 [DEBUG] [Thread-123821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:41.762 [DEBUG] [Thread-123821] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:41.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:02:41.763 [DEBUG] [Thread-123821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:02:41.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:41.817 [DEBUG] [Thread-123821] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:41.817 [DEBUG] [Thread-123821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:41.818 [DEBUG] [Thread-123821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:41.818 [DEBUG] [Thread-123821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:02:41.818 [DEBUG] [Thread-123821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:41.837 [INFO] [Thread-123821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:41.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:02:41.838 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:42.543 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:42.544 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:42.759 [DEBUG] [Thread-123821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:42.759 [DEBUG] [Thread-123821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:42.807 [DEBUG] [Thread-123821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:42.808 [DEBUG] [Thread-123821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:42.816 [DEBUG] [Thread-123821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:42.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:42.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')
2025-09-28T12:02:42.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:02:42.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:42.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:42.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:42.852 [DEBUG] [Thread-123821] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:50.331 [DEBUG] [Thread-123823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:02:52.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:02:52.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:02:52.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:02:53.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 2, 50), 15.69, 34.98, 0.0, 14.65, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:02:53.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:02:50
2025-09-28T12:02:53.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:02:53.733 [DEBUG] [Thread-123824] [transport.py] [_log()] starting thread (client mode): 0x2b9f3df0
2025-09-28T12:02:53.733 [DEBUG] [Thread-123824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:53.752 [DEBUG] [Thread-123824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:02:53.752 [INFO] [Thread-123824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] Compression: none
2025-09-28T12:02:53.755 [DEBUG] [Thread-123824] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:53.772 [DEBUG] [Thread-123824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:53.772 [DEBUG] [Thread-123824] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:53.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:02:53.774 [DEBUG] [Thread-123824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:02:53.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:53.776 [DEBUG] [Thread-123824] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:53.776 [DEBUG] [Thread-123824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:53.776 [DEBUG] [Thread-123824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:53.776 [DEBUG] [Thread-123824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:02:53.776 [DEBUG] [Thread-123824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:53.801 [INFO] [Thread-123824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:53.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:54.386 [DEBUG] [Thread-123824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:54.386 [DEBUG] [Thread-123824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:54.386 [DEBUG] [Thread-123824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:02:54.427 [DEBUG] [Thread-123824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:54.427 [DEBUG] [Thread-123824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:54.430 [DEBUG] [Thread-123824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:54.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:54.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:02:54.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:02:54.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:02:54.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:54.453 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:02:54.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:54.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418488 -999.00  +17.90  10.22     41   +4.60 1 1 1 1 1   888    0 8.62 -213.51 ----- 14.0 10.2 220.2 18.1 25.3 -25.1 23.9 -23.8 23.4 -23.5 24.5 -24.7
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418488
2025-09-28T12:02:54.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:02:54.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:02:54.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:02:54.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:02:54.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:02:54.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:02:50', tmtdew=15.69, humidity=34.98, cloud=0.0, wind=14.65, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:02:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:02:54.456 [DEBUG] [Thread-123824] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:02:54.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-28T12:02:54.551 [DEBUG] [Thread-123827] [transport.py] [_log()] starting thread (client mode): 0x2e3c0d30
2025-09-28T12:02:54.551 [DEBUG] [Thread-123827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:02:54.569 [DEBUG] [Thread-123827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:02:54.570 [INFO] [Thread-123827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:02:54.578 [DEBUG] [Thread-123827] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:02:54.578 [DEBUG] [Thread-123827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] client lang: <none>
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] server lang: <none>
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] kex follows: False
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:02:54.579 [DEBUG] [Thread-123827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:02:54.580 [DEBUG] [Thread-123827] [transport.py] [_log()] Compression: none
2025-09-28T12:02:54.580 [DEBUG] [Thread-123827] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:02:54.636 [DEBUG] [Thread-123827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:02:54.637 [DEBUG] [Thread-123827] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:02:54.637 [DEBUG] [Thread-123827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:02:54.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:02:54.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:02:54.692 [DEBUG] [Thread-123827] [transport.py] [_log()] userauth is OK
2025-09-28T12:02:54.693 [DEBUG] [Thread-123827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:02:54.693 [DEBUG] [Thread-123827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:02:54.693 [DEBUG] [Thread-123827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:02:54.693 [DEBUG] [Thread-123827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:02:54.711 [INFO] [Thread-123827] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:02:54.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-28T12:02:54.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:02:55.643 [DEBUG] [Thread-123827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:02:55.644 [DEBUG] [Thread-123827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:02:55.691 [DEBUG] [Thread-123827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:02:55.692 [DEBUG] [Thread-123827] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:02:55.700 [DEBUG] [Thread-123827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:02:55.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:02:55.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-28T12:02:55.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-28T12:02:55.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:02:55.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:02:55.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:02:55.732 [DEBUG] [Thread-123827] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:05.360 [DEBUG] [Thread-123829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:05.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:03:05.734 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:03:05.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-28T12:03:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 2, 50), 15.69, 34.98, 0.0, 14.65, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:03:06.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:02:50
2025-09-28T12:03:06.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:03:06.571 [DEBUG] [Thread-123830] [transport.py] [_log()] starting thread (client mode): 0x2b9dea10
2025-09-28T12:03:06.571 [DEBUG] [Thread-123830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:06.591 [DEBUG] [Thread-123830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:03:06.591 [INFO] [Thread-123830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:06.594 [DEBUG] [Thread-123830] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] Compression: none
2025-09-28T12:03:06.595 [DEBUG] [Thread-123830] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:06.605 [DEBUG] [Thread-123830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:06.605 [DEBUG] [Thread-123830] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:06.606 [DEBUG] [Thread-123830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:03:06.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:03:06.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:06.607 [DEBUG] [Thread-123830] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:06.608 [DEBUG] [Thread-123830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:06.608 [DEBUG] [Thread-123830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:06.608 [DEBUG] [Thread-123830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:03:06.608 [DEBUG] [Thread-123830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:06.631 [INFO] [Thread-123830] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:06.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:07.253 [DEBUG] [Thread-123830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:07.253 [DEBUG] [Thread-123830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:07.254 [DEBUG] [Thread-123830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:03:07.294 [DEBUG] [Thread-123830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:07.295 [DEBUG] [Thread-123830] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:07.304 [DEBUG] [Thread-123830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:07.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:07.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:03:07.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:03:07.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:03:07.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:07.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:03:07.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418488 -999.00  +17.90  10.22     41   +4.60 1 1 1 1 1   888    0 8.62 -213.51 ----- 14.0 10.2 220.2 18.1 25.3 -25.1 23.9 -23.8 23.4 -23.5 24.5 -24.7
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:03:07.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418488
2025-09-28T12:03:07.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:03:07.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:03:07.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:03:07.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:03:07.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:03:07.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:02:50', tmtdew=15.69, humidity=34.98, cloud=0.0, wind=14.65, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:02:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:03:07.325 [DEBUG] [Thread-123830] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:07.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-28T12:03:07.421 [DEBUG] [Thread-123833] [transport.py] [_log()] starting thread (client mode): 0x2b9de140
2025-09-28T12:03:07.421 [DEBUG] [Thread-123833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:07.436 [DEBUG] [Thread-123833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:03:07.437 [INFO] [Thread-123833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:03:07.444 [DEBUG] [Thread-123833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:07.444 [DEBUG] [Thread-123833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] Compression: none
2025-09-28T12:03:07.445 [DEBUG] [Thread-123833] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:07.504 [DEBUG] [Thread-123833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:07.505 [DEBUG] [Thread-123833] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:07.505 [DEBUG] [Thread-123833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:03:07.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:03:07.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:07.561 [DEBUG] [Thread-123833] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:07.561 [DEBUG] [Thread-123833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:07.561 [DEBUG] [Thread-123833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:07.561 [DEBUG] [Thread-123833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:03:07.561 [DEBUG] [Thread-123833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:07.581 [INFO] [Thread-123833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:07.582 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:03:07.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:07.806 [DEBUG] [Thread-123835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:08.520 [DEBUG] [Thread-123833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:08.521 [DEBUG] [Thread-123833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:08.569 [DEBUG] [Thread-123833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:08.569 [DEBUG] [Thread-123833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:08.578 [DEBUG] [Thread-123833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:08.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:08.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')
2025-09-28T12:03:08.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-28T12:03:08.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:08.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:08.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:08.613 [DEBUG] [Thread-123833] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:18.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:03:18.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:03:18.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-28T12:03:19.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 2, 50), 15.69, 34.98, 0.0, 14.65, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:03:19.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:02:50
2025-09-28T12:03:19.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:03:19.458 [DEBUG] [Thread-123836] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-28T12:03:19.459 [DEBUG] [Thread-123836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:19.477 [DEBUG] [Thread-123836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:03:19.478 [INFO] [Thread-123836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:03:19.479 [DEBUG] [Thread-123836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:19.479 [DEBUG] [Thread-123836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:03:19.479 [DEBUG] [Thread-123836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:19.479 [DEBUG] [Thread-123836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:19.479 [DEBUG] [Thread-123836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] Compression: none
2025-09-28T12:03:19.480 [DEBUG] [Thread-123836] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:19.491 [DEBUG] [Thread-123836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:19.491 [DEBUG] [Thread-123836] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:19.492 [DEBUG] [Thread-123836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:03:19.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:03:19.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:19.493 [DEBUG] [Thread-123836] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:19.494 [DEBUG] [Thread-123836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:19.494 [DEBUG] [Thread-123836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:19.494 [DEBUG] [Thread-123836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:03:19.494 [DEBUG] [Thread-123836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:19.518 [INFO] [Thread-123836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:19.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:20.142 [DEBUG] [Thread-123836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:20.143 [DEBUG] [Thread-123836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:20.143 [DEBUG] [Thread-123836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:03:20.183 [DEBUG] [Thread-123836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:20.183 [DEBUG] [Thread-123836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:20.186 [DEBUG] [Thread-123836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:20.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:20.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:03:20.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:03:20.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:03:20.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:20.208 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:03:20.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:20.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:20.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:03:20.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418488 -999.00  +17.90  10.22     41   +4.60 1 1 1 1 1   888    0 8.62 -213.51 ----- 14.0 10.2 220.2 18.1 25.3 -25.1 23.9 -23.8 23.4 -23.5 24.5 -24.7
2025-09-28T12:03:20.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:03:20.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:03:20.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418488
2025-09-28T12:03:20.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:03:20.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:03:20.210 [DEBUG] [Thread-123836] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:20.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:03:20.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:03:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:03:20.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:02:50', tmtdew=15.69, humidity=34.98, cloud=0.0, wind=14.65, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:02:37.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:03:20.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-28T12:03:20.303 [DEBUG] [Thread-123839] [transport.py] [_log()] starting thread (client mode): 0x2b9f3340
2025-09-28T12:03:20.303 [DEBUG] [Thread-123839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:20.318 [DEBUG] [Thread-123839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:03:20.318 [INFO] [Thread-123839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:20.326 [DEBUG] [Thread-123839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:20.327 [DEBUG] [Thread-123839] [transport.py] [_log()] Compression: none
2025-09-28T12:03:20.327 [DEBUG] [Thread-123839] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:20.387 [DEBUG] [Thread-123839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:20.387 [DEBUG] [Thread-123839] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:20.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:03:20.389 [DEBUG] [Thread-123839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:03:20.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:20.426 [DEBUG] [Thread-123841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:20.445 [DEBUG] [Thread-123839] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:20.445 [DEBUG] [Thread-123839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:20.445 [DEBUG] [Thread-123839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:20.445 [DEBUG] [Thread-123839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:03:20.445 [DEBUG] [Thread-123839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:20.464 [INFO] [Thread-123839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:20.465 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:03:20.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:21.475 [DEBUG] [Thread-123839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:21.475 [DEBUG] [Thread-123839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:21.523 [DEBUG] [Thread-123839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:21.523 [DEBUG] [Thread-123839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:21.532 [DEBUG] [Thread-123839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:21.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:21.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')
2025-09-28T12:03:21.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-28T12:03:21.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:21.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:21.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:21.567 [DEBUG] [Thread-123839] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:31.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:03:31.569 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:03:31.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-28T12:03:32.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 3, 21), 15.52, 35.41, 0.0, 14.95, 17.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:03:32.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:03:21
2025-09-28T12:03:32.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:03:32.417 [DEBUG] [Thread-123842] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T12:03:32.417 [DEBUG] [Thread-123842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:32.438 [DEBUG] [Thread-123842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:03:32.438 [INFO] [Thread-123842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:32.441 [DEBUG] [Thread-123842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] Compression: none
2025-09-28T12:03:32.442 [DEBUG] [Thread-123842] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:32.459 [DEBUG] [Thread-123842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:32.459 [DEBUG] [Thread-123842] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:32.459 [DEBUG] [Thread-123842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:03:32.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:03:32.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:32.460 [DEBUG] [Thread-123842] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:32.460 [DEBUG] [Thread-123842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:32.460 [DEBUG] [Thread-123842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:32.460 [DEBUG] [Thread-123842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:03:32.460 [DEBUG] [Thread-123842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:32.468 [INFO] [Thread-123842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:32.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:33.050 [DEBUG] [Thread-123842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:33.050 [DEBUG] [Thread-123842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:33.050 [DEBUG] [Thread-123842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:03:33.091 [DEBUG] [Thread-123842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:33.092 [DEBUG] [Thread-123842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:33.095 [DEBUG] [Thread-123842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:33.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:33.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:03:33.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:03:33.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:03:33.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:33.117 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:03:33.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:33.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:33.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:03:33.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418835 -999.00  +18.20  15.89     40   +4.40 1 1 1 1 1   888    0 7.78 -232.80 ----- 19.3 15.9 222.6 21.3 25.2 -25.0 23.9 -24.6 23.4 -23.8 24.6 -24.9
2025-09-28T12:03:33.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:03:33.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:03:33.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418835
2025-09-28T12:03:33.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:03:33.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:03:33.119 [DEBUG] [Thread-123842] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:33.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:03:33.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:03:33.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:03:33.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:03:21', tmtdew=15.52, humidity=35.41, cloud=0.0, wind=14.95, temperature=17.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:03:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:03:33.204 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:03:33.215 [DEBUG] [Thread-123845] [transport.py] [_log()] starting thread (client mode): 0x2b9ac3a0
2025-09-28T12:03:33.216 [DEBUG] [Thread-123845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:33.233 [DEBUG] [Thread-123845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:03:33.234 [INFO] [Thread-123845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:03:33.241 [DEBUG] [Thread-123845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:33.241 [DEBUG] [Thread-123845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:03:33.241 [DEBUG] [Thread-123845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] Compression: none
2025-09-28T12:03:33.242 [DEBUG] [Thread-123845] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:33.299 [DEBUG] [Thread-123845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:33.300 [DEBUG] [Thread-123845] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:33.300 [DEBUG] [Thread-123845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:03:33.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:03:33.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:33.355 [DEBUG] [Thread-123845] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:33.356 [DEBUG] [Thread-123845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:33.356 [DEBUG] [Thread-123845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:33.356 [DEBUG] [Thread-123845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:03:33.356 [DEBUG] [Thread-123845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:33.375 [INFO] [Thread-123845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:33.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-28T12:03:33.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:34.347 [DEBUG] [Thread-123845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:34.347 [DEBUG] [Thread-123845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:34.398 [DEBUG] [Thread-123845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:34.398 [DEBUG] [Thread-123845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:34.410 [DEBUG] [Thread-123845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:34.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:34.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-28T12:03:34.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-28T12:03:34.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:34.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:34.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:34.460 [DEBUG] [Thread-123845] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:35.454 [DEBUG] [Thread-123847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:42.695 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:42.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:44.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:03:44.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:03:44.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-28T12:03:45.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 3, 21), 15.52, 35.41, 0.0, 14.95, 17.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:03:45.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:03:21
2025-09-28T12:03:45.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:03:45.303 [DEBUG] [Thread-123848] [transport.py] [_log()] starting thread (client mode): 0x2b9f2ce0
2025-09-28T12:03:45.303 [DEBUG] [Thread-123848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:45.324 [DEBUG] [Thread-123848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:03:45.324 [INFO] [Thread-123848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:45.325 [DEBUG] [Thread-123848] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] Compression: none
2025-09-28T12:03:45.326 [DEBUG] [Thread-123848] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:45.336 [DEBUG] [Thread-123848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:45.337 [DEBUG] [Thread-123848] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:45.337 [DEBUG] [Thread-123848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:03:45.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:03:45.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:45.338 [DEBUG] [Thread-123848] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:45.338 [DEBUG] [Thread-123848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:45.338 [DEBUG] [Thread-123848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:45.338 [DEBUG] [Thread-123848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:03:45.338 [DEBUG] [Thread-123848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:45.353 [INFO] [Thread-123848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:45.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:46.032 [DEBUG] [Thread-123848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:46.032 [DEBUG] [Thread-123848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:46.033 [DEBUG] [Thread-123848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:03:46.073 [DEBUG] [Thread-123848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:46.074 [DEBUG] [Thread-123848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:46.077 [DEBUG] [Thread-123848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:46.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:46.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:03:46.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:03:46.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:03:46.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:46.099 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:03:46.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:46.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:46.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:03:46.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.418835 -999.00  +18.20  15.89     40   +4.40 1 1 1 1 1   888    0 7.78 -232.80 ----- 19.3 15.9 222.6 21.3 25.2 -25.0 23.9 -24.6 23.4 -23.8 24.6 -24.9
2025-09-28T12:03:46.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:03:46.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:03:46.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.418835
2025-09-28T12:03:46.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:03:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:03:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:03:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:03:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:03:46.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:03:21', tmtdew=15.52, humidity=35.41, cloud=0.0, wind=14.95, temperature=17.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:03:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:03:46.101 [DEBUG] [Thread-123848] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:46.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-28T12:03:46.197 [DEBUG] [Thread-123851] [transport.py] [_log()] starting thread (client mode): 0x2e3c10f0
2025-09-28T12:03:46.198 [DEBUG] [Thread-123851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:46.213 [DEBUG] [Thread-123851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:03:46.213 [INFO] [Thread-123851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:46.221 [DEBUG] [Thread-123851] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] Compression: none
2025-09-28T12:03:46.222 [DEBUG] [Thread-123851] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:46.279 [DEBUG] [Thread-123851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:46.280 [DEBUG] [Thread-123851] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:46.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:03:46.281 [DEBUG] [Thread-123851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:03:46.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:46.335 [DEBUG] [Thread-123851] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:46.336 [DEBUG] [Thread-123851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:46.336 [DEBUG] [Thread-123851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:46.336 [DEBUG] [Thread-123851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:03:46.336 [DEBUG] [Thread-123851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:46.352 [INFO] [Thread-123851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:46.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-28T12:03:46.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:47.325 [DEBUG] [Thread-123851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:47.326 [DEBUG] [Thread-123851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:47.373 [DEBUG] [Thread-123851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:47.373 [DEBUG] [Thread-123851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:47.382 [DEBUG] [Thread-123851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:47.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:47.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-28T12:03:47.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-28T12:03:47.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:47.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:47.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:47.417 [DEBUG] [Thread-123851] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:50.494 [DEBUG] [Thread-123853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:03:57.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:03:57.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:03:57.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-28T12:03:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 3, 53), 15.9, 34.74, 0.0, 21.72, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:03:57.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:03:53
2025-09-28T12:03:58.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:03:58.250 [DEBUG] [Thread-123854] [transport.py] [_log()] starting thread (client mode): 0x2b9aceb0
2025-09-28T12:03:58.250 [DEBUG] [Thread-123854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:58.269 [DEBUG] [Thread-123854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:03:58.269 [INFO] [Thread-123854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:58.271 [DEBUG] [Thread-123854] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] Compression: none
2025-09-28T12:03:58.272 [DEBUG] [Thread-123854] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:58.285 [DEBUG] [Thread-123854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:58.285 [DEBUG] [Thread-123854] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:58.286 [DEBUG] [Thread-123854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:03:58.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:03:58.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:58.288 [DEBUG] [Thread-123854] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:58.288 [DEBUG] [Thread-123854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:58.288 [DEBUG] [Thread-123854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:58.288 [DEBUG] [Thread-123854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:03:58.288 [DEBUG] [Thread-123854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:58.304 [INFO] [Thread-123854] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:58.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:03:58.883 [DEBUG] [Thread-123854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:03:58.883 [DEBUG] [Thread-123854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:03:58.884 [DEBUG] [Thread-123854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:03:58.924 [DEBUG] [Thread-123854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:03:58.924 [DEBUG] [Thread-123854] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:03:58.927 [DEBUG] [Thread-123854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:03:58.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:03:58.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:03:58.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:03:58.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:03:58.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:03:58.948 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:03:58.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419182 -999.00  +18.20  18.36     39   +4.10 1 1 1 1 1   888    0 8.15 -222.70 ----- 16.3 18.4 245.4 24.3 25.1 -25.6 23.8 -24.7 23.4 -24.5 24.6 -24.9
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:03:58.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419182
2025-09-28T12:03:58.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:03:58.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:03:58.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:03:58.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:03:58.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:03:58.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:03:53', tmtdew=15.9, humidity=34.74, cloud=0.0, wind=21.72, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:03:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:03:58.951 [DEBUG] [Thread-123854] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:03:59.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-28T12:03:59.045 [DEBUG] [Thread-123857] [transport.py] [_log()] starting thread (client mode): 0x2b988ee0
2025-09-28T12:03:59.045 [DEBUG] [Thread-123857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:03:59.060 [DEBUG] [Thread-123857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:03:59.060 [INFO] [Thread-123857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] client lang: <none>
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] server lang: <none>
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] kex follows: False
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] Compression: none
2025-09-28T12:03:59.067 [DEBUG] [Thread-123857] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:03:59.126 [DEBUG] [Thread-123857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:03:59.126 [DEBUG] [Thread-123857] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:03:59.126 [DEBUG] [Thread-123857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:03:59.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:03:59.126 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:03:59.183 [DEBUG] [Thread-123857] [transport.py] [_log()] userauth is OK
2025-09-28T12:03:59.183 [DEBUG] [Thread-123857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:03:59.183 [DEBUG] [Thread-123857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:03:59.183 [DEBUG] [Thread-123857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:03:59.183 [DEBUG] [Thread-123857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:03:59.202 [INFO] [Thread-123857] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:03:59.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-28T12:03:59.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:00.164 [DEBUG] [Thread-123857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:00.164 [DEBUG] [Thread-123857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:00.212 [DEBUG] [Thread-123857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:00.212 [DEBUG] [Thread-123857] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:00.221 [DEBUG] [Thread-123857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:00.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:00.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-28T12:04:00.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-28T12:04:00.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:00.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:00.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:00.255 [DEBUG] [Thread-123857] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:05.527 [DEBUG] [Thread-123859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:07.863 [DEBUG] [Thread-123860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:10.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:04:10.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:04:10.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-28T12:04:10.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 3, 53), 15.9, 34.74, 0.0, 21.72, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:04:10.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:03:53
2025-09-28T12:04:10.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:04:11.097 [DEBUG] [Thread-123861] [transport.py] [_log()] starting thread (client mode): 0x2e3c2560
2025-09-28T12:04:11.098 [DEBUG] [Thread-123861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:11.112 [DEBUG] [Thread-123861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:04:11.112 [INFO] [Thread-123861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] Compression: none
2025-09-28T12:04:11.114 [DEBUG] [Thread-123861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:11.127 [DEBUG] [Thread-123861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:11.127 [DEBUG] [Thread-123861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:11.127 [DEBUG] [Thread-123861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:04:11.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:04:11.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:11.129 [DEBUG] [Thread-123861] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:11.129 [DEBUG] [Thread-123861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:11.129 [DEBUG] [Thread-123861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:11.129 [DEBUG] [Thread-123861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:04:11.129 [DEBUG] [Thread-123861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:11.145 [INFO] [Thread-123861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:11.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:11.854 [DEBUG] [Thread-123861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:11.854 [DEBUG] [Thread-123861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:11.854 [DEBUG] [Thread-123861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:04:11.895 [DEBUG] [Thread-123861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:11.895 [DEBUG] [Thread-123861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:11.897 [DEBUG] [Thread-123861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:11.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:11.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:04:11.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:04:11.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:11.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:04:11.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419182 -999.00  +18.20  18.36     39   +4.10 1 1 1 1 1   888    0 8.15 -222.70 ----- 16.3 18.4 245.4 24.3 25.1 -25.6 23.8 -24.7 23.4 -24.5 24.6 -24.9
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:04:11.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419182
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:04:11.907 [DEBUG] [Thread-123861] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:03:53', tmtdew=15.9, humidity=34.74, cloud=0.0, wind=21.72, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:03:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:04:11.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-28T12:04:11.992 [DEBUG] [Thread-123864] [transport.py] [_log()] starting thread (client mode): 0x2b9de9e0
2025-09-28T12:04:11.992 [DEBUG] [Thread-123864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:12.007 [DEBUG] [Thread-123864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:04:12.007 [INFO] [Thread-123864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:12.014 [DEBUG] [Thread-123864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:12.015 [DEBUG] [Thread-123864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:12.015 [DEBUG] [Thread-123864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:12.015 [DEBUG] [Thread-123864] [transport.py] [_log()] Compression: none
2025-09-28T12:04:12.015 [DEBUG] [Thread-123864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:12.069 [DEBUG] [Thread-123864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:12.069 [DEBUG] [Thread-123864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:12.069 [DEBUG] [Thread-123864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:04:12.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:04:12.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:12.126 [DEBUG] [Thread-123864] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:12.126 [DEBUG] [Thread-123864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:12.126 [DEBUG] [Thread-123864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:12.126 [DEBUG] [Thread-123864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:04:12.126 [DEBUG] [Thread-123864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:12.140 [INFO] [Thread-123864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:12.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-28T12:04:12.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:13.155 [DEBUG] [Thread-123864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:13.155 [DEBUG] [Thread-123864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:13.203 [DEBUG] [Thread-123864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:13.203 [DEBUG] [Thread-123864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:13.211 [DEBUG] [Thread-123864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:13.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:13.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T12:04:13.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-28T12:04:13.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:13.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:13.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:13.244 [DEBUG] [Thread-123864] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:20.573 [DEBUG] [Thread-123866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:23.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:04:23.243 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:04:23.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:04:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 3, 53), 15.9, 34.74, 0.0, 21.72, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:04:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:03:53
2025-09-28T12:04:23.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:04:24.099 [DEBUG] [Thread-123867] [transport.py] [_log()] starting thread (client mode): 0x2b96cd30
2025-09-28T12:04:24.099 [DEBUG] [Thread-123867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:24.119 [DEBUG] [Thread-123867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:04:24.119 [INFO] [Thread-123867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:04:24.122 [DEBUG] [Thread-123867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:24.122 [DEBUG] [Thread-123867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:04:24.122 [DEBUG] [Thread-123867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:24.122 [DEBUG] [Thread-123867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:24.122 [DEBUG] [Thread-123867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] Compression: none
2025-09-28T12:04:24.123 [DEBUG] [Thread-123867] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:24.143 [DEBUG] [Thread-123867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:24.143 [DEBUG] [Thread-123867] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:24.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:04:24.144 [DEBUG] [Thread-123867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:04:24.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:24.146 [DEBUG] [Thread-123867] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:24.146 [DEBUG] [Thread-123867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:24.147 [DEBUG] [Thread-123867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:24.147 [DEBUG] [Thread-123867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:04:24.147 [DEBUG] [Thread-123867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:24.170 [INFO] [Thread-123867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:24.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:24.888 [DEBUG] [Thread-123867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:24.888 [DEBUG] [Thread-123867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:24.889 [DEBUG] [Thread-123867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:04:24.929 [DEBUG] [Thread-123867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:24.929 [DEBUG] [Thread-123867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:24.932 [DEBUG] [Thread-123867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:24.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:24.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:04:24.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:04:24.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:04:24.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:24.955 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:04:24.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:24.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:24.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:04:24.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419182 -999.00  +18.20  18.36     39   +4.10 1 1 1 1 1   888    0 8.15 -222.70 ----- 16.3 18.4 245.4 24.3 25.1 -25.6 23.8 -24.7 23.4 -24.5 24.6 -24.9
2025-09-28T12:04:24.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:04:24.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:04:24.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419182
2025-09-28T12:04:24.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:04:24.957 [DEBUG] [Thread-123867] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:24.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:04:24.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:04:24.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:04:24.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:04:24.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:03:53', tmtdew=15.9, humidity=34.74, cloud=0.0, wind=21.72, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:03:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:04:25.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-28T12:04:25.054 [DEBUG] [Thread-123870] [transport.py] [_log()] starting thread (client mode): 0x2b9af340
2025-09-28T12:04:25.055 [DEBUG] [Thread-123870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:25.069 [DEBUG] [Thread-123870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:04:25.069 [INFO] [Thread-123870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:04:25.076 [DEBUG] [Thread-123870] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:25.077 [DEBUG] [Thread-123870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] Compression: none
2025-09-28T12:04:25.078 [DEBUG] [Thread-123870] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:25.133 [DEBUG] [Thread-123870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:25.134 [DEBUG] [Thread-123870] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:25.134 [DEBUG] [Thread-123870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:04:25.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:04:25.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:25.190 [DEBUG] [Thread-123870] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:25.190 [DEBUG] [Thread-123870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:25.190 [DEBUG] [Thread-123870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:25.190 [DEBUG] [Thread-123870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:04:25.191 [DEBUG] [Thread-123870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:25.210 [INFO] [Thread-123870] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:25.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-28T12:04:25.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:26.167 [DEBUG] [Thread-123870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:26.167 [DEBUG] [Thread-123870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:26.216 [DEBUG] [Thread-123870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:26.216 [DEBUG] [Thread-123870] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:26.224 [DEBUG] [Thread-123870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:26.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:26.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-28T12:04:26.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-28T12:04:26.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:26.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:26.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:26.255 [DEBUG] [Thread-123870] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:35.603 [DEBUG] [Thread-123872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:36.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:04:36.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:04:36.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-28T12:04:36.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 4, 25), 16.13, 34.23, 0.0, 20.75, 18.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:04:36.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:04:25
2025-09-28T12:04:36.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:04:37.093 [DEBUG] [Thread-123873] [transport.py] [_log()] starting thread (client mode): 0x2b989120
2025-09-28T12:04:37.093 [DEBUG] [Thread-123873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:37.113 [DEBUG] [Thread-123873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:04:37.114 [INFO] [Thread-123873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:04:37.116 [DEBUG] [Thread-123873] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] Compression: none
2025-09-28T12:04:37.117 [DEBUG] [Thread-123873] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:37.134 [DEBUG] [Thread-123873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:37.134 [DEBUG] [Thread-123873] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:37.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:04:37.135 [DEBUG] [Thread-123873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:04:37.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:37.137 [DEBUG] [Thread-123873] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:37.137 [DEBUG] [Thread-123873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:37.137 [DEBUG] [Thread-123873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:37.137 [DEBUG] [Thread-123873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:04:37.137 [DEBUG] [Thread-123873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:37.172 [INFO] [Thread-123873] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:37.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:37.779 [DEBUG] [Thread-123873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:37.779 [DEBUG] [Thread-123873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:37.779 [DEBUG] [Thread-123873] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:04:37.820 [DEBUG] [Thread-123873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:37.821 [DEBUG] [Thread-123873] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:37.823 [DEBUG] [Thread-123873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:37.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:37.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:04:37.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:04:37.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:04:37.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:37.848 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:04:37.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419529 -999.00  +18.30  13.74     39   +4.20 1 1 1 1 1   888    0 8.39 -211.91 ----- 10.2 13.7 219.9 18.2 25.1 -24.7 23.8 -23.9 23.4 -23.4 24.6 -24.2
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:04:37.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419529
2025-09-28T12:04:37.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:04:37.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:04:37.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:04:37.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:04:37.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:04:37.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:04:25', tmtdew=16.13, humidity=34.23, cloud=0.0, wind=20.75, temperature=18.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:04:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:04:37.851 [DEBUG] [Thread-123873] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:37.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-28T12:04:37.949 [DEBUG] [Thread-123876] [transport.py] [_log()] starting thread (client mode): 0x2e3f9840
2025-09-28T12:04:37.949 [DEBUG] [Thread-123876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:37.964 [DEBUG] [Thread-123876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:04:37.964 [INFO] [Thread-123876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:04:37.971 [DEBUG] [Thread-123876] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:37.972 [DEBUG] [Thread-123876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:37.973 [DEBUG] [Thread-123876] [transport.py] [_log()] Compression: none
2025-09-28T12:04:37.973 [DEBUG] [Thread-123876] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:38.029 [DEBUG] [Thread-123876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:38.030 [DEBUG] [Thread-123876] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:38.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:04:38.031 [DEBUG] [Thread-123876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:04:38.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:38.086 [DEBUG] [Thread-123876] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:38.086 [DEBUG] [Thread-123876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:38.086 [DEBUG] [Thread-123876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:38.086 [DEBUG] [Thread-123876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:04:38.086 [DEBUG] [Thread-123876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:38.105 [INFO] [Thread-123876] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:38.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-28T12:04:38.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:39.050 [DEBUG] [Thread-123876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:39.051 [DEBUG] [Thread-123876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:39.098 [DEBUG] [Thread-123876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:39.098 [DEBUG] [Thread-123876] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:39.107 [DEBUG] [Thread-123876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:39.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:39.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-28T12:04:39.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-28T12:04:39.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:39.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:39.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:39.142 [DEBUG] [Thread-123876] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:42.835 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:42.836 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:49.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:04:49.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:04:49.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-28T12:04:49.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 4, 25), 16.13, 34.23, 0.0, 20.75, 18.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:04:49.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:04:25
2025-09-28T12:04:49.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:04:49.994 [DEBUG] [Thread-123878] [transport.py] [_log()] starting thread (client mode): 0x2e3fa890
2025-09-28T12:04:49.994 [DEBUG] [Thread-123878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:50.014 [DEBUG] [Thread-123878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:04:50.014 [INFO] [Thread-123878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:04:50.017 [DEBUG] [Thread-123878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:50.018 [DEBUG] [Thread-123878] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] Compression: none
2025-09-28T12:04:50.019 [DEBUG] [Thread-123878] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:50.034 [DEBUG] [Thread-123878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:50.035 [DEBUG] [Thread-123878] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:50.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:04:50.036 [DEBUG] [Thread-123878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:04:50.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:50.038 [DEBUG] [Thread-123878] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:50.038 [DEBUG] [Thread-123878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:50.038 [DEBUG] [Thread-123878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:50.038 [DEBUG] [Thread-123878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:04:50.038 [DEBUG] [Thread-123878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:50.062 [INFO] [Thread-123878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:50.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:50.630 [DEBUG] [Thread-123880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:04:50.791 [DEBUG] [Thread-123878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:50.791 [DEBUG] [Thread-123878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:50.791 [DEBUG] [Thread-123878] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:04:50.833 [DEBUG] [Thread-123878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:50.833 [DEBUG] [Thread-123878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:50.835 [DEBUG] [Thread-123878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:50.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:50.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:04:50.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:04:50.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:04:50.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:50.854 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:04:50.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419529 -999.00  +18.30  13.74     39   +4.20 1 1 1 1 1   888    0 8.39 -211.91 ----- 10.2 13.7 219.9 18.2 25.1 -24.7 23.8 -23.9 23.4 -23.4 24.6 -24.2
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419529
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:04:50.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:04:25', tmtdew=16.13, humidity=34.23, cloud=0.0, wind=20.75, temperature=18.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:04:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:04:50.855 [DEBUG] [Thread-123878] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:04:50.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:04:50.938 [DEBUG] [Thread-123882] [transport.py] [_log()] starting thread (client mode): 0x2b98b2e0
2025-09-28T12:04:50.938 [DEBUG] [Thread-123882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:04:50.953 [DEBUG] [Thread-123882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:04:50.954 [INFO] [Thread-123882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] client lang: <none>
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] server lang: <none>
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] kex follows: False
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:04:50.961 [DEBUG] [Thread-123882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:04:50.962 [DEBUG] [Thread-123882] [transport.py] [_log()] Compression: none
2025-09-28T12:04:50.962 [DEBUG] [Thread-123882] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:04:51.016 [DEBUG] [Thread-123882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:04:51.016 [DEBUG] [Thread-123882] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:04:51.016 [DEBUG] [Thread-123882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:04:51.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:04:51.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:04:51.073 [DEBUG] [Thread-123882] [transport.py] [_log()] userauth is OK
2025-09-28T12:04:51.073 [DEBUG] [Thread-123882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:04:51.073 [DEBUG] [Thread-123882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:04:51.073 [DEBUG] [Thread-123882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:04:51.073 [DEBUG] [Thread-123882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:04:51.088 [INFO] [Thread-123882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:04:51.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-28T12:04:51.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:04:52.049 [DEBUG] [Thread-123882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:04:52.049 [DEBUG] [Thread-123882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:04:52.097 [DEBUG] [Thread-123882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:04:52.097 [DEBUG] [Thread-123882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:04:52.105 [DEBUG] [Thread-123882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:04:52.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:04:52.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')
2025-09-28T12:04:52.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') -> 00000000
2025-09-28T12:04:52.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:04:52.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:04:52.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:04:52.136 [DEBUG] [Thread-123882] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:02.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:05:02.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:05:02.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:05:02.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 4, 57), 16.0, 34.2, 0.0, 20.38, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:05:02.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:04:57
2025-09-28T12:05:02.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:05:02.988 [DEBUG] [Thread-123884] [transport.py] [_log()] starting thread (client mode): 0x2b9ac970
2025-09-28T12:05:02.989 [DEBUG] [Thread-123884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:03.009 [DEBUG] [Thread-123884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:05:03.009 [INFO] [Thread-123884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:05:03.012 [DEBUG] [Thread-123884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:03.012 [DEBUG] [Thread-123884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:03.013 [DEBUG] [Thread-123884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:03.014 [DEBUG] [Thread-123884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:03.014 [DEBUG] [Thread-123884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:03.014 [DEBUG] [Thread-123884] [transport.py] [_log()] Compression: none
2025-09-28T12:05:03.014 [DEBUG] [Thread-123884] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:03.031 [DEBUG] [Thread-123884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:03.031 [DEBUG] [Thread-123884] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:03.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:05:03.033 [DEBUG] [Thread-123884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:05:03.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:03.035 [DEBUG] [Thread-123884] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:03.035 [DEBUG] [Thread-123884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:03.035 [DEBUG] [Thread-123884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:03.036 [DEBUG] [Thread-123884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:05:03.036 [DEBUG] [Thread-123884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:03.053 [INFO] [Thread-123884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:03.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:05.679 [DEBUG] [Thread-123886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:07.917 [DEBUG] [Thread-123887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:18.055 [DEBUG] [Thread-123884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:18.055 [DEBUG] [Thread-123884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:18.055 [DEBUG] [Thread-123884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:05:18.095 [DEBUG] [Thread-123884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:18.095 [DEBUG] [Thread-123884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:18.099 [DEBUG] [Thread-123884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:18.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:18.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:05:18.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:05:18.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:05:18.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:18.181 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:05:18.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:18.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:05:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419529 -999.00  +18.30  13.74     39   +4.20 1 1 1 1 1   888    0 8.39 -211.91 ----- 10.2 13.7 219.9 18.2 25.1 -24.7 23.8 -23.9 23.4 -23.4 24.6 -24.2
2025-09-28T12:05:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:05:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:05:18.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419529
2025-09-28T12:05:18.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:05:18.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:05:18.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:05:18.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:05:18.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:05:18.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:04:57', tmtdew=16.0, humidity=34.2, cloud=0.0, wind=20.38, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:04:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:05:18.184 [DEBUG] [Thread-123884] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:18.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-28T12:05:18.280 [DEBUG] [Thread-123889] [transport.py] [_log()] starting thread (client mode): 0x2b9c29b0
2025-09-28T12:05:18.280 [DEBUG] [Thread-123889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:18.295 [DEBUG] [Thread-123889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:05:18.296 [INFO] [Thread-123889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:18.303 [DEBUG] [Thread-123889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] Compression: none
2025-09-28T12:05:18.304 [DEBUG] [Thread-123889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:18.361 [DEBUG] [Thread-123889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:18.361 [DEBUG] [Thread-123889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:18.362 [DEBUG] [Thread-123889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:05:18.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:05:18.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:18.417 [DEBUG] [Thread-123889] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:18.417 [DEBUG] [Thread-123889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:18.417 [DEBUG] [Thread-123889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:18.417 [DEBUG] [Thread-123889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:05:18.417 [DEBUG] [Thread-123889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:18.436 [INFO] [Thread-123889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05: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-28T12:05:18.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:19.415 [DEBUG] [Thread-123889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:19.415 [DEBUG] [Thread-123889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:19.463 [DEBUG] [Thread-123889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:19.463 [DEBUG] [Thread-123889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:19.472 [DEBUG] [Thread-123889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:19.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:19.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-28T12:05: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-28T12:05:19.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:19.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:19.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:19.507 [DEBUG] [Thread-123889] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:20.710 [DEBUG] [Thread-123891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:29.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:05:29.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:05:29.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-28T12:05:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 4, 57), 16.0, 34.2, 0.0, 20.38, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:05:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:04:57
2025-09-28T12:05:30.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:05:30.417 [DEBUG] [Thread-123892] [transport.py] [_log()] starting thread (client mode): 0x2b9dc910
2025-09-28T12:05:30.417 [DEBUG] [Thread-123892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:30.438 [DEBUG] [Thread-123892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:05:30.439 [INFO] [Thread-123892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] Compression: none
2025-09-28T12:05:30.442 [DEBUG] [Thread-123892] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:30.458 [DEBUG] [Thread-123892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:30.458 [DEBUG] [Thread-123892] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:30.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:05:30.459 [DEBUG] [Thread-123892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:05:30.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:30.460 [DEBUG] [Thread-123892] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:30.460 [DEBUG] [Thread-123892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:30.460 [DEBUG] [Thread-123892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:30.460 [DEBUG] [Thread-123892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:05:30.460 [DEBUG] [Thread-123892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:30.470 [INFO] [Thread-123892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:30.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:31.050 [DEBUG] [Thread-123892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:31.050 [DEBUG] [Thread-123892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:31.050 [DEBUG] [Thread-123892] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:05:31.091 [DEBUG] [Thread-123892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:31.091 [DEBUG] [Thread-123892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:31.093 [DEBUG] [Thread-123892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:31.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:31.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:05:31.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:05:31.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:05:31.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:31.110 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:05:31.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419876 -999.00  +18.30  20.89     39   +4.20 1 1 1 1 1   888    0 8.81 -202.41 ----- 14.9 20.9 253.0 24.5 25.1 -25.2 23.9 -24.3 23.5 -22.9 24.7 -25.1
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419876
2025-09-28T12:05:31.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:05:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:05:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:05:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:05:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:05:31.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:04:57', tmtdew=16.0, humidity=34.2, cloud=0.0, wind=20.38, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:04:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:05:31.111 [DEBUG] [Thread-123892] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:31.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-28T12:05:31.197 [DEBUG] [Thread-123895] [transport.py] [_log()] starting thread (client mode): 0x2b988340
2025-09-28T12:05:31.197 [DEBUG] [Thread-123895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:31.212 [DEBUG] [Thread-123895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:05:31.212 [INFO] [Thread-123895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:31.219 [DEBUG] [Thread-123895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] Compression: none
2025-09-28T12:05:31.220 [DEBUG] [Thread-123895] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:31.275 [DEBUG] [Thread-123895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:31.275 [DEBUG] [Thread-123895] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:31.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:05:31.275 [DEBUG] [Thread-123895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:05:31.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:31.332 [DEBUG] [Thread-123895] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:31.332 [DEBUG] [Thread-123895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:31.332 [DEBUG] [Thread-123895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:31.333 [DEBUG] [Thread-123895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:05:31.333 [DEBUG] [Thread-123895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:31.351 [INFO] [Thread-123895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:31.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-28T12:05:31.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:32.330 [DEBUG] [Thread-123895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:32.330 [DEBUG] [Thread-123895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:32.378 [DEBUG] [Thread-123895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:32.378 [DEBUG] [Thread-123895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:32.386 [DEBUG] [Thread-123895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:32.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:32.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')
2025-09-28T12:05:32.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-28T12:05:32.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:32.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:32.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:32.418 [DEBUG] [Thread-123895] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:35.768 [DEBUG] [Thread-123897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:42.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:05:42.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:05:42.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-28T12:05:42.979 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:42.979 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:43.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 5, 29), 16.08, 34.0, 0.0, 19.64, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:05:43.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:05:29
2025-09-28T12:05:43.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:05:43.269 [DEBUG] [Thread-123898] [transport.py] [_log()] starting thread (client mode): 0x2e3fad10
2025-09-28T12:05:43.269 [DEBUG] [Thread-123898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:43.290 [DEBUG] [Thread-123898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:05:43.290 [INFO] [Thread-123898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:05:43.293 [DEBUG] [Thread-123898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:43.293 [DEBUG] [Thread-123898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] Compression: none
2025-09-28T12:05:43.294 [DEBUG] [Thread-123898] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:43.315 [DEBUG] [Thread-123898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:43.315 [DEBUG] [Thread-123898] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:43.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:05:43.316 [DEBUG] [Thread-123898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:05:43.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:43.318 [DEBUG] [Thread-123898] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:43.318 [DEBUG] [Thread-123898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:43.318 [DEBUG] [Thread-123898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:43.318 [DEBUG] [Thread-123898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:05:43.318 [DEBUG] [Thread-123898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:43.352 [INFO] [Thread-123898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:43.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:44.479 [DEBUG] [Thread-123898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:44.480 [DEBUG] [Thread-123898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:44.480 [DEBUG] [Thread-123898] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:05:44.520 [DEBUG] [Thread-123898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:44.520 [DEBUG] [Thread-123898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:44.523 [DEBUG] [Thread-123898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:44.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:44.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:05:44.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:05:44.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:05:44.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:44.546 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:05:44.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:44.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.419876 -999.00  +18.30  20.89     39   +4.20 1 1 1 1 1   888    0 8.81 -202.41 ----- 14.9 20.9 253.0 24.5 25.1 -25.2 23.9 -24.3 23.5 -22.9 24.7 -25.1
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.419876
2025-09-28T12:05:44.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:05:44.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:05:44.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:05:44.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:05:44.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:05:44.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:05:29', tmtdew=16.08, humidity=34.0, cloud=0.0, wind=19.64, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:04:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:05:44.549 [DEBUG] [Thread-123898] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:44.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-28T12:05:44.644 [DEBUG] [Thread-123901] [transport.py] [_log()] starting thread (client mode): 0x2b98bac0
2025-09-28T12:05:44.644 [DEBUG] [Thread-123901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:44.659 [DEBUG] [Thread-123901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:05:44.659 [INFO] [Thread-123901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:44.667 [DEBUG] [Thread-123901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:44.668 [DEBUG] [Thread-123901] [transport.py] [_log()] Compression: none
2025-09-28T12:05:44.668 [DEBUG] [Thread-123901] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:44.724 [DEBUG] [Thread-123901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:44.725 [DEBUG] [Thread-123901] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:44.725 [DEBUG] [Thread-123901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:05:44.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:05:44.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:44.781 [DEBUG] [Thread-123901] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:44.781 [DEBUG] [Thread-123901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:44.781 [DEBUG] [Thread-123901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:44.781 [DEBUG] [Thread-123901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:05:44.781 [DEBUG] [Thread-123901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:44.800 [INFO] [Thread-123901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:44.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:05:44.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:45.730 [DEBUG] [Thread-123901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:45.731 [DEBUG] [Thread-123901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:45.778 [DEBUG] [Thread-123901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:45.778 [DEBUG] [Thread-123901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:45.787 [DEBUG] [Thread-123901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:45.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:45.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-28T12:05:45.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-28T12:05:45.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:45.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:45.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:45.822 [DEBUG] [Thread-123901] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:50.812 [DEBUG] [Thread-123903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:05:55.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:05:55.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:05:55.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-28T12:05:56.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 5, 29), 16.08, 34.0, 0.0, 19.64, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:05:56.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:05:29
2025-09-28T12:05:56.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:05:56.651 [DEBUG] [Thread-123904] [transport.py] [_log()] starting thread (client mode): 0x2e3fad40
2025-09-28T12:05:56.651 [DEBUG] [Thread-123904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:56.668 [DEBUG] [Thread-123904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:05:56.668 [INFO] [Thread-123904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:56.671 [DEBUG] [Thread-123904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] Compression: none
2025-09-28T12:05:56.672 [DEBUG] [Thread-123904] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:56.687 [DEBUG] [Thread-123904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:56.687 [DEBUG] [Thread-123904] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:56.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:05:56.688 [DEBUG] [Thread-123904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:05:56.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:56.690 [DEBUG] [Thread-123904] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:56.690 [DEBUG] [Thread-123904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:56.690 [DEBUG] [Thread-123904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:56.690 [DEBUG] [Thread-123904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:05:56.690 [DEBUG] [Thread-123904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:56.708 [INFO] [Thread-123904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:56.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:57.307 [DEBUG] [Thread-123904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:57.307 [DEBUG] [Thread-123904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:57.308 [DEBUG] [Thread-123904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:05:57.348 [DEBUG] [Thread-123904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:57.349 [DEBUG] [Thread-123904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:57.351 [DEBUG] [Thread-123904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:57.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:57.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:05:57.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:05:57.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:05:57.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:57.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:05:57.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:57.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.420571 -999.00  +18.30   7.05     39   +4.40 1 2 1 1 1   888    0 9.13 -182.66 ----- 9.8 7.0 268.1 8.8 25.2 -24.2 24.0 -23.2 23.5 -22.7 24.8 -23.5
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.420571
2025-09-28T12:05:57.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:05:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:05:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:05:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:05:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-28T12:05:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:05:29', tmtdew=16.08, humidity=34.0, cloud=0.0, wind=19.64, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:05:37.334', atlas_cloud=2, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:05:57.376 [DEBUG] [Thread-123904] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:05:57.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-28T12:05:57.471 [DEBUG] [Thread-123907] [transport.py] [_log()] starting thread (client mode): 0x2e38e590
2025-09-28T12:05:57.471 [DEBUG] [Thread-123907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:05:57.486 [DEBUG] [Thread-123907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:05:57.486 [INFO] [Thread-123907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:05:57.494 [DEBUG] [Thread-123907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:05:57.494 [DEBUG] [Thread-123907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] client lang: <none>
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] server lang: <none>
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] kex follows: False
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] Compression: none
2025-09-28T12:05:57.495 [DEBUG] [Thread-123907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:05:57.553 [DEBUG] [Thread-123907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:05:57.554 [DEBUG] [Thread-123907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:05:57.554 [DEBUG] [Thread-123907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:05:57.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:05:57.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:05:57.612 [DEBUG] [Thread-123907] [transport.py] [_log()] userauth is OK
2025-09-28T12:05:57.612 [DEBUG] [Thread-123907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:05:57.612 [DEBUG] [Thread-123907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:05:57.613 [DEBUG] [Thread-123907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:05:57.613 [DEBUG] [Thread-123907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:05:57.631 [INFO] [Thread-123907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:05:57.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-28T12:05:57.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:05:58.609 [DEBUG] [Thread-123907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:05:58.610 [DEBUG] [Thread-123907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:05:58.658 [DEBUG] [Thread-123907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:05:58.658 [DEBUG] [Thread-123907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:05:58.666 [DEBUG] [Thread-123907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:05:58.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:05:58.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')
2025-09-28T12:05:58.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') -> 00000000
2025-09-28T12:05:58.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:05:58.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:05:58.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:05:58.698 [DEBUG] [Thread-123907] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:05.853 [DEBUG] [Thread-123909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:07.967 [DEBUG] [Thread-123910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:08.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:06:08.700 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:06:08.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-28T12:06:09.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 6, 1), 15.93, 34.33, 0.0, 21.88, 17.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:06:09.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:06:01
2025-09-28T12:06:09.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:06:09.538 [DEBUG] [Thread-123911] [transport.py] [_log()] starting thread (client mode): 0x30ddf9d0
2025-09-28T12:06:09.538 [DEBUG] [Thread-123911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:09.558 [DEBUG] [Thread-123911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:06:09.559 [INFO] [Thread-123911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:06:09.561 [DEBUG] [Thread-123911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:09.562 [DEBUG] [Thread-123911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:09.563 [DEBUG] [Thread-123911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:09.563 [DEBUG] [Thread-123911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:09.563 [DEBUG] [Thread-123911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:09.563 [DEBUG] [Thread-123911] [transport.py] [_log()] Compression: none
2025-09-28T12:06:09.563 [DEBUG] [Thread-123911] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:09.581 [DEBUG] [Thread-123911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:09.581 [DEBUG] [Thread-123911] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:09.582 [DEBUG] [Thread-123911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:06:09.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:06:09.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:09.584 [DEBUG] [Thread-123911] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:09.584 [DEBUG] [Thread-123911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:09.584 [DEBUG] [Thread-123911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:09.584 [DEBUG] [Thread-123911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:06:09.584 [DEBUG] [Thread-123911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:09.601 [INFO] [Thread-123911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:09.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:10.352 [DEBUG] [Thread-123911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:10.353 [DEBUG] [Thread-123911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:10.353 [DEBUG] [Thread-123911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:06:10.393 [DEBUG] [Thread-123911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:10.394 [DEBUG] [Thread-123911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:10.396 [DEBUG] [Thread-123911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:10.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:10.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:06:10.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:06:10.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:06:10.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:10.418 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:06:10.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:10.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:06:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.420571 -999.00  +18.30   7.05     39   +4.40 1 2 1 1 1   888    0 9.13 -182.66 ----- 9.8 7.0 268.1 8.8 25.2 -24.2 24.0 -23.2 23.5 -22.7 24.8 -23.5
2025-09-28T12:06:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:06:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:06:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.420571
2025-09-28T12:06:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:06:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:06:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:06:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:06:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-28T12:06:10.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:06:01', tmtdew=15.93, humidity=34.33, cloud=0.0, wind=21.88, temperature=17.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:05:37.334', atlas_cloud=2, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:06:10.421 [DEBUG] [Thread-123911] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:10.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-28T12:06:10.516 [DEBUG] [Thread-123914] [transport.py] [_log()] starting thread (client mode): 0x30dde710
2025-09-28T12:06:10.516 [DEBUG] [Thread-123914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:10.531 [DEBUG] [Thread-123914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:06:10.531 [INFO] [Thread-123914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:06:10.538 [DEBUG] [Thread-123914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:10.538 [DEBUG] [Thread-123914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] Compression: none
2025-09-28T12:06:10.539 [DEBUG] [Thread-123914] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:10.603 [DEBUG] [Thread-123914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:10.603 [DEBUG] [Thread-123914] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:10.604 [DEBUG] [Thread-123914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:06:10.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:06:10.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:10.660 [DEBUG] [Thread-123914] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:10.660 [DEBUG] [Thread-123914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:10.660 [DEBUG] [Thread-123914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:10.660 [DEBUG] [Thread-123914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:06:10.660 [DEBUG] [Thread-123914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:10.680 [INFO] [Thread-123914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:10.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-28T12:06:10.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:11.636 [DEBUG] [Thread-123914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:11.636 [DEBUG] [Thread-123914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:11.684 [DEBUG] [Thread-123914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:11.684 [DEBUG] [Thread-123914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:11.693 [DEBUG] [Thread-123914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:11.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:11.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-28T12:06:11.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-28T12:06:11.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:11.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:11.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:11.726 [DEBUG] [Thread-123914] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:20.899 [DEBUG] [Thread-123916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:21.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:06:21.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:06:21.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-28T12:06:22.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 6, 1), 15.93, 34.33, 0.0, 21.88, 17.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:06:22.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:06:01
2025-09-28T12:06:22.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:06:22.566 [DEBUG] [Thread-123917] [transport.py] [_log()] starting thread (client mode): 0x30dde3b0
2025-09-28T12:06:22.566 [DEBUG] [Thread-123917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:22.587 [DEBUG] [Thread-123917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:06:22.587 [INFO] [Thread-123917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] Compression: none
2025-09-28T12:06:22.590 [DEBUG] [Thread-123917] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:22.609 [DEBUG] [Thread-123917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:22.610 [DEBUG] [Thread-123917] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:22.610 [DEBUG] [Thread-123917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:06:22.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:06:22.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:22.612 [DEBUG] [Thread-123917] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:22.612 [DEBUG] [Thread-123917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:22.612 [DEBUG] [Thread-123917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:22.613 [DEBUG] [Thread-123917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:06:22.613 [DEBUG] [Thread-123917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:22.631 [INFO] [Thread-123917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:22.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:23.379 [DEBUG] [Thread-123917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:23.380 [DEBUG] [Thread-123917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:23.380 [DEBUG] [Thread-123917] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:06:23.420 [DEBUG] [Thread-123917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:23.420 [DEBUG] [Thread-123917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:23.423 [DEBUG] [Thread-123917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:23.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:23.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:06:23.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:06:23.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:06:23.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:23.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:06:23.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:23.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:23.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:06:23.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.420571 -999.00  +18.30   7.05     39   +4.40 1 2 1 1 1   888    0 9.13 -182.66 ----- 9.8 7.0 268.1 8.8 25.2 -24.2 24.0 -23.2 23.5 -22.7 24.8 -23.5
2025-09-28T12:06:23.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:06:23.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:06:23.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.420571
2025-09-28T12:06:23.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:06:23.443 [DEBUG] [Thread-123917] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:23.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:06:23.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:06:23.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:06:23.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 2
2025-09-28T12:06:23.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:06:01', tmtdew=15.93, humidity=34.33, cloud=0.0, wind=21.88, temperature=17.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:05:37.334', atlas_cloud=2, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:06:23.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-28T12:06:23.540 [DEBUG] [Thread-123920] [transport.py] [_log()] starting thread (client mode): 0x2e3c0cd0
2025-09-28T12:06:23.540 [DEBUG] [Thread-123920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:23.555 [DEBUG] [Thread-123920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:06:23.555 [INFO] [Thread-123920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] Compression: none
2025-09-28T12:06:23.563 [DEBUG] [Thread-123920] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:23.625 [DEBUG] [Thread-123920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:23.625 [DEBUG] [Thread-123920] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:23.626 [DEBUG] [Thread-123920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:06:23.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:06:23.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:23.683 [DEBUG] [Thread-123920] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:23.684 [DEBUG] [Thread-123920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:23.684 [DEBUG] [Thread-123920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:23.684 [DEBUG] [Thread-123920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:06:23.684 [DEBUG] [Thread-123920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:23.703 [INFO] [Thread-123920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:23.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-28T12:06:23.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:24.686 [DEBUG] [Thread-123920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:24.686 [DEBUG] [Thread-123920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:24.734 [DEBUG] [Thread-123920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:24.734 [DEBUG] [Thread-123920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:24.743 [DEBUG] [Thread-123920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:24.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:24.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-28T12:06:24.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-28T12:06:24.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:24.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:24.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:24.778 [DEBUG] [Thread-123920] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:34.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:06:34.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:06:34.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-28T12:06:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 6, 1), 15.93, 34.33, 0.0, 21.88, 17.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:06:35.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:06:01
2025-09-28T12:06:35.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:06:35.649 [DEBUG] [Thread-123922] [transport.py] [_log()] starting thread (client mode): 0x2b989900
2025-09-28T12:06:35.649 [DEBUG] [Thread-123922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:35.668 [DEBUG] [Thread-123922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:06:35.668 [INFO] [Thread-123922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] Compression: none
2025-09-28T12:06:35.671 [DEBUG] [Thread-123922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:35.686 [DEBUG] [Thread-123922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:35.687 [DEBUG] [Thread-123922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:35.687 [DEBUG] [Thread-123922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:06:35.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:06:35.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:35.687 [DEBUG] [Thread-123922] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:35.688 [DEBUG] [Thread-123922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:35.688 [DEBUG] [Thread-123922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:35.688 [DEBUG] [Thread-123922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:06:35.688 [DEBUG] [Thread-123922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:35.697 [INFO] [Thread-123922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:35.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:35.945 [DEBUG] [Thread-123924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:36.252 [DEBUG] [Thread-123922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:36.252 [DEBUG] [Thread-123922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:36.252 [DEBUG] [Thread-123922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:06:36.293 [DEBUG] [Thread-123922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:36.293 [DEBUG] [Thread-123922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:36.296 [DEBUG] [Thread-123922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:36.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:36.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:06:36.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:06:36.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:06:36.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:36.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:06:36.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:36.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:06:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.420918 -999.00  +17.90   5.39     41   +4.50 1 1 1 1 1   888    0 9.30 -176.34 ----- 7.7 5.4 246.0 13.9 25.2 -26.4 24.1 -23.2 23.6 -23.5 24.7 -24.8
2025-09-28T12:06:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:06:36.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:06:36.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.420918
2025-09-28T12:06:36.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:06:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:06:36.320 [DEBUG] [Thread-123922] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:06:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:06:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:06:36.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:06:01', tmtdew=15.93, humidity=34.33, cloud=0.0, wind=21.88, temperature=17.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:06:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:06:36.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-28T12:06:36.415 [DEBUG] [Thread-123926] [transport.py] [_log()] starting thread (client mode): 0x2e38e2f0
2025-09-28T12:06:36.415 [DEBUG] [Thread-123926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:36.429 [DEBUG] [Thread-123926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:06:36.430 [INFO] [Thread-123926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:06:36.437 [DEBUG] [Thread-123926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:36.438 [DEBUG] [Thread-123926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] Compression: none
2025-09-28T12:06:36.439 [DEBUG] [Thread-123926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:36.494 [DEBUG] [Thread-123926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:36.494 [DEBUG] [Thread-123926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:36.494 [DEBUG] [Thread-123926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:06:36.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:06:36.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:36.551 [DEBUG] [Thread-123926] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:36.551 [DEBUG] [Thread-123926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:36.551 [DEBUG] [Thread-123926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:36.551 [DEBUG] [Thread-123926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:06:36.551 [DEBUG] [Thread-123926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:36.565 [INFO] [Thread-123926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:36.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-28T12:06:36.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:37.520 [DEBUG] [Thread-123926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:37.521 [DEBUG] [Thread-123926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:37.569 [DEBUG] [Thread-123926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:37.569 [DEBUG] [Thread-123926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:37.578 [DEBUG] [Thread-123926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:37.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:37.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')
2025-09-28T12:06:37.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-28T12:06:37.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:37.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:37.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:37.613 [DEBUG] [Thread-123926] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:43.121 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:43.122 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:06:47.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:06:47.616 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:06:47.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-28T12:06:48.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 6, 33), 15.66, 35.38, 0.0, 13.38, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:06:48.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:06:33
2025-09-28T12:06:48.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:06:48.436 [DEBUG] [Thread-123928] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-28T12:06:48.436 [DEBUG] [Thread-123928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:48.457 [DEBUG] [Thread-123928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:06:48.458 [INFO] [Thread-123928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:06:48.461 [DEBUG] [Thread-123928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:48.461 [DEBUG] [Thread-123928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:06:48.461 [DEBUG] [Thread-123928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:48.461 [DEBUG] [Thread-123928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:48.461 [DEBUG] [Thread-123928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:48.462 [DEBUG] [Thread-123928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:48.463 [DEBUG] [Thread-123928] [transport.py] [_log()] Compression: none
2025-09-28T12:06:48.463 [DEBUG] [Thread-123928] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:48.482 [DEBUG] [Thread-123928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:48.482 [DEBUG] [Thread-123928] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:48.483 [DEBUG] [Thread-123928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:06:48.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:06:48.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:48.485 [DEBUG] [Thread-123928] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:48.485 [DEBUG] [Thread-123928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:48.486 [DEBUG] [Thread-123928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:48.486 [DEBUG] [Thread-123928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:06:48.486 [DEBUG] [Thread-123928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:48.513 [INFO] [Thread-123928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:48.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:49.246 [DEBUG] [Thread-123928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:49.246 [DEBUG] [Thread-123928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:49.246 [DEBUG] [Thread-123928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:06:49.287 [DEBUG] [Thread-123928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:49.288 [DEBUG] [Thread-123928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:49.291 [DEBUG] [Thread-123928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:49.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:49.303 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:06:49.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:06:49.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:06:49.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:49.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:06:49.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:49.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:49.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:06:49.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.420918 -999.00  +17.90   5.39     41   +4.50 1 1 1 1 1   888    0 9.30 -176.34 ----- 7.7 5.4 246.0 13.9 25.2 -26.4 24.1 -23.2 23.6 -23.5 24.7 -24.8
2025-09-28T12:06:49.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:06:49.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:06:49.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.420918
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:06:49.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:06:33', tmtdew=15.66, humidity=35.38, cloud=0.0, wind=13.38, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:06:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:06:49.320 [DEBUG] [Thread-123928] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:49.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-28T12:06:49.413 [DEBUG] [Thread-123931] [transport.py] [_log()] starting thread (client mode): 0x2e3de200
2025-09-28T12:06:49.413 [DEBUG] [Thread-123931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:06:49.428 [DEBUG] [Thread-123931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:06:49.428 [INFO] [Thread-123931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:06:49.435 [DEBUG] [Thread-123931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:49.436 [DEBUG] [Thread-123931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] client lang: <none>
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] server lang: <none>
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] kex follows: False
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] Compression: none
2025-09-28T12:06:49.437 [DEBUG] [Thread-123931] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:06:49.494 [DEBUG] [Thread-123931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:06:49.495 [DEBUG] [Thread-123931] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:06:49.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:06:49.496 [DEBUG] [Thread-123931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:06:49.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:06:49.551 [DEBUG] [Thread-123931] [transport.py] [_log()] userauth is OK
2025-09-28T12:06:49.551 [DEBUG] [Thread-123931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:06:49.551 [DEBUG] [Thread-123931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:06:49.551 [DEBUG] [Thread-123931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:06:49.551 [DEBUG] [Thread-123931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:06:49.573 [INFO] [Thread-123931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:06:49.574 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:06:49.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:06:50.539 [DEBUG] [Thread-123931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:06:50.540 [DEBUG] [Thread-123931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:06:50.587 [DEBUG] [Thread-123931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:06:50.587 [DEBUG] [Thread-123931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:06:50.596 [DEBUG] [Thread-123931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:06:50.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:06:50.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-28T12:06:50.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-28T12:06:50.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:06:50.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:06:50.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:06:50.631 [DEBUG] [Thread-123931] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:06:50.977 [DEBUG] [Thread-123933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:00.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:07:00.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:07:00.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-28T12:07:01.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 6, 33), 15.66, 35.38, 0.0, 13.38, 17.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:07:01.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:06:33
2025-09-28T12:07:01.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:07:01.469 [DEBUG] [Thread-123934] [transport.py] [_log()] starting thread (client mode): 0x30dde590
2025-09-28T12:07:01.469 [DEBUG] [Thread-123934] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:01.491 [DEBUG] [Thread-123934] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:07:01.491 [INFO] [Thread-123934] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:01.494 [DEBUG] [Thread-123934] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] Compression: none
2025-09-28T12:07:01.495 [DEBUG] [Thread-123934] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:01.512 [DEBUG] [Thread-123934] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:01.512 [DEBUG] [Thread-123934] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:01.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:07:01.513 [DEBUG] [Thread-123934] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:07:01.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:01.515 [DEBUG] [Thread-123934] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:01.515 [DEBUG] [Thread-123934] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:01.515 [DEBUG] [Thread-123934] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:01.515 [DEBUG] [Thread-123934] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:07:01.515 [DEBUG] [Thread-123934] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:01.539 [INFO] [Thread-123934] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:01.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:02.125 [DEBUG] [Thread-123934] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:02.126 [DEBUG] [Thread-123934] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:02.126 [DEBUG] [Thread-123934] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:07:02.167 [DEBUG] [Thread-123934] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:02.167 [DEBUG] [Thread-123934] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:02.169 [DEBUG] [Thread-123934] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:02.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:02.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:07:02.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:07:02.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:07:02.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:02.189 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:07:02.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:02.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:02.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:07:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421265 -999.00  +18.00   5.17     41   +4.80 1 1 1 1 1   888    0 9.37 -170.72 ----- 4.5 5.2 169.0 8.9 25.3 -25.8 24.1 -23.2 23.6 -23.1 24.8 -24.7
2025-09-28T12:07:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:07:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:07:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421265
2025-09-28T12:07:02.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:07:02.190 [DEBUG] [Thread-123934] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:02.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:07:02.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:07:02.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:07:02.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:07:02.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:06:33', tmtdew=15.66, humidity=35.38, cloud=0.0, wind=13.38, temperature=17.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:06:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:07:02.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-28T12:07:02.290 [DEBUG] [Thread-123937] [transport.py] [_log()] starting thread (client mode): 0x2b9c3580
2025-09-28T12:07:02.290 [DEBUG] [Thread-123937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:02.309 [DEBUG] [Thread-123937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:07:02.309 [INFO] [Thread-123937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:02.319 [DEBUG] [Thread-123937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] Compression: none
2025-09-28T12:07:02.320 [DEBUG] [Thread-123937] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:02.377 [DEBUG] [Thread-123937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:02.378 [DEBUG] [Thread-123937] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:02.378 [DEBUG] [Thread-123937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:07:02.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:07:02.379 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:02.440 [DEBUG] [Thread-123937] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:02.440 [DEBUG] [Thread-123937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:02.440 [DEBUG] [Thread-123937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:02.440 [DEBUG] [Thread-123937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:07:02.441 [DEBUG] [Thread-123937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:02.463 [INFO] [Thread-123937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:02.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-28T12:07:02.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:03.435 [DEBUG] [Thread-123937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:03.435 [DEBUG] [Thread-123937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:03.483 [DEBUG] [Thread-123937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:03.483 [DEBUG] [Thread-123937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:03.501 [DEBUG] [Thread-123937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:03.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07: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')
2025-09-28T12:07:03.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-28T12:07:03.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:03.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:03.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:03.536 [DEBUG] [Thread-123937] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:06.023 [DEBUG] [Thread-123939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:08.012 [DEBUG] [Thread-123940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:13.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:07:13.537 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:07:13.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-28T12:07:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 7, 5), 15.55, 35.59, 0.0, 10.83, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:07:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:07:05
2025-09-28T12:07:14.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:07:14.364 [DEBUG] [Thread-123941] [transport.py] [_log()] starting thread (client mode): 0x2e3dde70
2025-09-28T12:07:14.364 [DEBUG] [Thread-123941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:14.395 [DEBUG] [Thread-123941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:07:14.395 [INFO] [Thread-123941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:07:14.399 [DEBUG] [Thread-123941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:14.400 [DEBUG] [Thread-123941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:14.401 [DEBUG] [Thread-123941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:14.402 [DEBUG] [Thread-123941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:14.402 [DEBUG] [Thread-123941] [transport.py] [_log()] Compression: none
2025-09-28T12:07:14.402 [DEBUG] [Thread-123941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:14.412 [DEBUG] [Thread-123941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:14.413 [DEBUG] [Thread-123941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:14.413 [DEBUG] [Thread-123941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:07:14.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:07:14.414 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:14.457 [DEBUG] [Thread-123941] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:14.457 [DEBUG] [Thread-123941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:14.457 [DEBUG] [Thread-123941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:14.457 [DEBUG] [Thread-123941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:07:14.457 [DEBUG] [Thread-123941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:14.476 [INFO] [Thread-123941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:14.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:15.254 [DEBUG] [Thread-123941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:15.254 [DEBUG] [Thread-123941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:15.255 [DEBUG] [Thread-123941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:07:15.295 [DEBUG] [Thread-123941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:15.295 [DEBUG] [Thread-123941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:15.298 [DEBUG] [Thread-123941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:15.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:15.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:07:15.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:07:15.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:07:15.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:15.312 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:07:15.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:15.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421265 -999.00  +18.00   5.17     41   +4.80 1 1 1 1 1   888    0 9.37 -170.72 ----- 4.5 5.2 169.0 8.9 25.3 -25.8 24.1 -23.2 23.6 -23.1 24.8 -24.7
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421265
2025-09-28T12:07:15.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:07:15.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:07:15.314 [DEBUG] [Thread-123941] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:15.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:07:15.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:07:15.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:07:15.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:07:05', tmtdew=15.55, humidity=35.59, cloud=0.0, wind=10.83, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:06:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:07:15.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-28T12:07:15.409 [DEBUG] [Thread-123944] [transport.py] [_log()] starting thread (client mode): 0x2b9cd030
2025-09-28T12:07:15.409 [DEBUG] [Thread-123944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:15.424 [DEBUG] [Thread-123944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:07:15.424 [INFO] [Thread-123944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:15.432 [DEBUG] [Thread-123944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:15.433 [DEBUG] [Thread-123944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:15.433 [DEBUG] [Thread-123944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:15.433 [DEBUG] [Thread-123944] [transport.py] [_log()] Compression: none
2025-09-28T12:07:15.433 [DEBUG] [Thread-123944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:15.490 [DEBUG] [Thread-123944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:15.491 [DEBUG] [Thread-123944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:15.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:07:15.492 [DEBUG] [Thread-123944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:07:15.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:15.547 [DEBUG] [Thread-123944] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:15.547 [DEBUG] [Thread-123944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:15.547 [DEBUG] [Thread-123944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:15.547 [DEBUG] [Thread-123944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:07:15.547 [DEBUG] [Thread-123944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:15.570 [INFO] [Thread-123944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:15.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-28T12:07:15.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:16.542 [DEBUG] [Thread-123944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:16.542 [DEBUG] [Thread-123944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:16.590 [DEBUG] [Thread-123944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:16.590 [DEBUG] [Thread-123944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:16.598 [DEBUG] [Thread-123944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:16.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:16.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-28T12:07: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') -> 00000000
2025-09-28T12:07:16.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:16.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:16.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:16.629 [DEBUG] [Thread-123944] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:21.055 [DEBUG] [Thread-123946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:26.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:07:26.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:07:26.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-28T12:07:27.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 7, 5), 15.55, 35.59, 0.0, 10.83, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:07:27.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:07:05
2025-09-28T12:07:27.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:07:27.459 [DEBUG] [Thread-123947] [transport.py] [_log()] starting thread (client mode): 0x2b9ce1a0
2025-09-28T12:07:27.459 [DEBUG] [Thread-123947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:27.479 [DEBUG] [Thread-123947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:07:27.480 [INFO] [Thread-123947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:27.481 [DEBUG] [Thread-123947] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] Compression: none
2025-09-28T12:07:27.482 [DEBUG] [Thread-123947] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:27.490 [DEBUG] [Thread-123947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:27.490 [DEBUG] [Thread-123947] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:27.491 [DEBUG] [Thread-123947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:07:27.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:07:27.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:27.493 [DEBUG] [Thread-123947] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:27.493 [DEBUG] [Thread-123947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:27.493 [DEBUG] [Thread-123947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:27.493 [DEBUG] [Thread-123947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:07:27.493 [DEBUG] [Thread-123947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:27.517 [INFO] [Thread-123947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:27.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:28.260 [DEBUG] [Thread-123947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:28.260 [DEBUG] [Thread-123947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:28.260 [DEBUG] [Thread-123947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:07:28.301 [DEBUG] [Thread-123947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:28.301 [DEBUG] [Thread-123947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:28.305 [DEBUG] [Thread-123947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:28.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:28.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:07:28.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:07:28.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:07:28.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:28.328 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:07:28.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:28.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:28.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:07:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421265 -999.00  +18.00   5.17     41   +4.80 1 1 1 1 1   888    0 9.37 -170.72 ----- 4.5 5.2 169.0 8.9 25.3 -25.8 24.1 -23.2 23.6 -23.1 24.8 -24.7
2025-09-28T12:07:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:07:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:07:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421265
2025-09-28T12:07:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:07:28.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:07:28.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:07:28.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:07:28.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:07:28.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:07:05', tmtdew=15.55, humidity=35.59, cloud=0.0, wind=10.83, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:06:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:07:28.330 [DEBUG] [Thread-123947] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:28.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-28T12:07:28.425 [DEBUG] [Thread-123950] [transport.py] [_log()] starting thread (client mode): 0x2e3f8970
2025-09-28T12:07:28.425 [DEBUG] [Thread-123950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:28.440 [DEBUG] [Thread-123950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:07:28.440 [INFO] [Thread-123950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:28.448 [DEBUG] [Thread-123950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:28.449 [DEBUG] [Thread-123950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:28.449 [DEBUG] [Thread-123950] [transport.py] [_log()] Compression: none
2025-09-28T12:07:28.449 [DEBUG] [Thread-123950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:28.506 [DEBUG] [Thread-123950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:28.506 [DEBUG] [Thread-123950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:28.507 [DEBUG] [Thread-123950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:07:28.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:07:28.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:28.562 [DEBUG] [Thread-123950] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:28.562 [DEBUG] [Thread-123950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:28.562 [DEBUG] [Thread-123950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:28.562 [DEBUG] [Thread-123950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:07:28.562 [DEBUG] [Thread-123950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:28.584 [INFO] [Thread-123950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:28.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-28T12:07:28.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:29.597 [DEBUG] [Thread-123950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:29.598 [DEBUG] [Thread-123950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:29.645 [DEBUG] [Thread-123950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:29.645 [DEBUG] [Thread-123950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:29.654 [DEBUG] [Thread-123950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:29.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:29.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-28T12:07:29.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-28T12:07:29.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:29.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:29.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:29.689 [DEBUG] [Thread-123950] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:36.094 [DEBUG] [Thread-123952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:39.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:07:39.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:07: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-28T12:07:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 7, 37), 15.83, 34.93, 0.0, 11.68, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:07:40.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:07:37
2025-09-28T12:07:40.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:07:40.536 [DEBUG] [Thread-123953] [transport.py] [_log()] starting thread (client mode): 0x2e38da80
2025-09-28T12:07:40.536 [DEBUG] [Thread-123953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:40.556 [DEBUG] [Thread-123953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:07:40.556 [INFO] [Thread-123953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] Compression: none
2025-09-28T12:07:40.558 [DEBUG] [Thread-123953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:40.576 [DEBUG] [Thread-123953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:40.576 [DEBUG] [Thread-123953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:40.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:07:40.577 [DEBUG] [Thread-123953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:07:40.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:40.579 [DEBUG] [Thread-123953] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:40.579 [DEBUG] [Thread-123953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:40.579 [DEBUG] [Thread-123953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:40.579 [DEBUG] [Thread-123953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:07:40.579 [DEBUG] [Thread-123953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:40.596 [INFO] [Thread-123953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:40.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:41.211 [DEBUG] [Thread-123953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:41.211 [DEBUG] [Thread-123953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:41.212 [DEBUG] [Thread-123953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:07:41.252 [DEBUG] [Thread-123953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:41.252 [DEBUG] [Thread-123953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:41.255 [DEBUG] [Thread-123953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:41.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:41.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:07:41.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:07:41.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:07:41.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:41.277 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:07:41.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:41.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:41.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:07:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421613 -999.00  +18.30   6.06     41   +5.00 1 1 1 1 1   888    0 9.37 -167.92 ----- 4.5 6.1 211.3 10.0 25.5 -24.7 24.2 -23.4 23.7 -22.8 24.9 -24.0
2025-09-28T12:07:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:07:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:07:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421613
2025-09-28T12:07:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:07:41.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:07:41.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:07:41.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:07:41.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:07:41.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:07:37', tmtdew=15.83, humidity=34.93, cloud=0.0, wind=11.68, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:07:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:07:41.279 [DEBUG] [Thread-123953] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:41.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-28T12:07:41.376 [DEBUG] [Thread-123956] [transport.py] [_log()] starting thread (client mode): 0x2e38eec0
2025-09-28T12:07:41.376 [DEBUG] [Thread-123956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:41.389 [DEBUG] [Thread-123956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:07:41.390 [INFO] [Thread-123956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:07:41.397 [DEBUG] [Thread-123956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:41.397 [DEBUG] [Thread-123956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] Compression: none
2025-09-28T12:07:41.398 [DEBUG] [Thread-123956] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:41.453 [DEBUG] [Thread-123956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:41.453 [DEBUG] [Thread-123956] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:41.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:07:41.454 [DEBUG] [Thread-123956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:07:41.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:41.510 [DEBUG] [Thread-123956] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:41.510 [DEBUG] [Thread-123956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:41.510 [DEBUG] [Thread-123956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:41.510 [DEBUG] [Thread-123956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:07:41.510 [DEBUG] [Thread-123956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:41.530 [INFO] [Thread-123956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:41.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-28T12:07:41.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:42.455 [DEBUG] [Thread-123956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:42.455 [DEBUG] [Thread-123956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:42.503 [DEBUG] [Thread-123956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:42.504 [DEBUG] [Thread-123956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:42.513 [DEBUG] [Thread-123956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:42.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:42.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-28T12:07:42.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-28T12:07:42.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:42.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:42.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:42.545 [DEBUG] [Thread-123956] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:43.263 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:43.264 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:51.124 [DEBUG] [Thread-123958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:07:52.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:07:52.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:07:52.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:07:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 7, 37), 15.83, 34.93, 0.0, 11.68, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:07:53.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:07:37
2025-09-28T12:07:53.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:07:53.378 [DEBUG] [Thread-123959] [transport.py] [_log()] starting thread (client mode): 0x30ddfa30
2025-09-28T12:07:53.378 [DEBUG] [Thread-123959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:53.398 [DEBUG] [Thread-123959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:07:53.398 [INFO] [Thread-123959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:53.399 [DEBUG] [Thread-123959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] Compression: none
2025-09-28T12:07:53.400 [DEBUG] [Thread-123959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:53.411 [DEBUG] [Thread-123959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:53.411 [DEBUG] [Thread-123959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:07:53.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:07:53.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:07:53.412 [DEBUG] [Thread-123959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:53.421 [INFO] [Thread-123959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:53.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:54.232 [DEBUG] [Thread-123959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:54.232 [DEBUG] [Thread-123959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:54.233 [DEBUG] [Thread-123959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:07:54.273 [DEBUG] [Thread-123959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:54.274 [DEBUG] [Thread-123959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:54.276 [DEBUG] [Thread-123959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:54.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:54.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:07:54.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:07:54.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:07:54.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:54.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:07:54.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421613 -999.00  +18.30   6.06     41   +5.00 1 1 1 1 1   888    0 9.37 -167.92 ----- 4.5 6.1 211.3 10.0 25.5 -24.7 24.2 -23.4 23.7 -22.8 24.9 -24.0
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:07:54.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421613
2025-09-28T12:07:54.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:07:54.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:07:54.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:07:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:07:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:07:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:07:37', tmtdew=15.83, humidity=34.93, cloud=0.0, wind=11.68, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:07:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:07:54.303 [DEBUG] [Thread-123959] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:07:54.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-28T12:07:54.398 [DEBUG] [Thread-123962] [transport.py] [_log()] starting thread (client mode): 0x2b9c0670
2025-09-28T12:07:54.398 [DEBUG] [Thread-123962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:07:54.413 [DEBUG] [Thread-123962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:07:54.413 [INFO] [Thread-123962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] client lang: <none>
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] server lang: <none>
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] kex follows: False
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:07:54.421 [DEBUG] [Thread-123962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:07:54.422 [DEBUG] [Thread-123962] [transport.py] [_log()] Compression: none
2025-09-28T12:07:54.422 [DEBUG] [Thread-123962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:07:54.478 [DEBUG] [Thread-123962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:07:54.478 [DEBUG] [Thread-123962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:07:54.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:07:54.479 [DEBUG] [Thread-123962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:07:54.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:07:54.533 [DEBUG] [Thread-123962] [transport.py] [_log()] userauth is OK
2025-09-28T12:07:54.534 [DEBUG] [Thread-123962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:07:54.534 [DEBUG] [Thread-123962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:07:54.534 [DEBUG] [Thread-123962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:07:54.534 [DEBUG] [Thread-123962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:07:54.553 [INFO] [Thread-123962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:07:54.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-28T12:07:54.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:07:55.582 [DEBUG] [Thread-123962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:07:55.582 [DEBUG] [Thread-123962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:07:55.631 [DEBUG] [Thread-123962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:07:55.631 [DEBUG] [Thread-123962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:07:55.639 [DEBUG] [Thread-123962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:07:55.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:07:55.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-28T12:07:55.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-28T12:07:55.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:07:55.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:07:55.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:07:55.671 [DEBUG] [Thread-123962] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:05.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:08:05.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:08:05.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-28T12:08:06.177 [DEBUG] [Thread-123964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:06.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 7, 37), 15.83, 34.93, 0.0, 11.68, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:08:06.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:07:37
2025-09-28T12:08:06.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:08:06.495 [DEBUG] [Thread-123965] [transport.py] [_log()] starting thread (client mode): 0x2b9c08e0
2025-09-28T12:08:06.495 [DEBUG] [Thread-123965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:06.515 [DEBUG] [Thread-123965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:08:06.515 [INFO] [Thread-123965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:08:06.518 [DEBUG] [Thread-123965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] Compression: none
2025-09-28T12:08:06.519 [DEBUG] [Thread-123965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:06.527 [DEBUG] [Thread-123965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:06.528 [DEBUG] [Thread-123965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:06.528 [DEBUG] [Thread-123965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:08:06.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:08:06.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:06.530 [DEBUG] [Thread-123965] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:06.530 [DEBUG] [Thread-123965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:06.530 [DEBUG] [Thread-123965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:06.530 [DEBUG] [Thread-123965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:08:06.530 [DEBUG] [Thread-123965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:06.554 [INFO] [Thread-123965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:06.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:07.348 [DEBUG] [Thread-123965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:07.348 [DEBUG] [Thread-123965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:07.348 [DEBUG] [Thread-123965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:08:07.389 [DEBUG] [Thread-123965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:07.389 [DEBUG] [Thread-123965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:07.392 [DEBUG] [Thread-123965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:07.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:07.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:08:07.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:08:07.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:08:07.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:07.416 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:08:07.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:07.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:08:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421613 -999.00  +18.30   6.06     41   +5.00 1 1 1 1 1   888    0 9.37 -167.92 ----- 4.5 6.1 211.3 10.0 25.5 -24.7 24.2 -23.4 23.7 -22.8 24.9 -24.0
2025-09-28T12:08:07.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:08:07.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:08:07.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421613
2025-09-28T12:08:07.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:08:07.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:08:07.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:08:07.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:08:07.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:08:07.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:07:37', tmtdew=15.83, humidity=34.93, cloud=0.0, wind=11.68, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:07:07.363', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:08:07.418 [DEBUG] [Thread-123965] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:07.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-28T12:08:07.517 [DEBUG] [Thread-123968] [transport.py] [_log()] starting thread (client mode): 0x2b9ceec0
2025-09-28T12:08:07.518 [DEBUG] [Thread-123968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:07.533 [DEBUG] [Thread-123968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:08:07.534 [INFO] [Thread-123968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:08:07.541 [DEBUG] [Thread-123968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:07.541 [DEBUG] [Thread-123968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:08:07.541 [DEBUG] [Thread-123968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:07.542 [DEBUG] [Thread-123968] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] Compression: none
2025-09-28T12:08:07.543 [DEBUG] [Thread-123968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:07.603 [DEBUG] [Thread-123968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:07.603 [DEBUG] [Thread-123968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:07.604 [DEBUG] [Thread-123968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:08:07.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:08:07.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:07.661 [DEBUG] [Thread-123968] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:07.662 [DEBUG] [Thread-123968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:07.662 [DEBUG] [Thread-123968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:07.662 [DEBUG] [Thread-123968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:08:07.662 [DEBUG] [Thread-123968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:07.682 [INFO] [Thread-123968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:07.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-28T12:08:07.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:08.052 [DEBUG] [Thread-123970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:08.618 [DEBUG] [Thread-123968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:08.618 [DEBUG] [Thread-123968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:08.666 [DEBUG] [Thread-123968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:08.666 [DEBUG] [Thread-123968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:08.675 [DEBUG] [Thread-123968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:08.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:08.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-28T12:08:08.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-28T12:08:08.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:08.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:08.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:08.710 [DEBUG] [Thread-123968] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:08:18.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:08:18.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-28T12:08:19.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 8, 9), 15.63, 35.39, 0.0, 10.68, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:08:19.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:08:09
2025-09-28T12:08:19.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:08:19.532 [DEBUG] [Thread-123971] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T12:08:19.532 [DEBUG] [Thread-123971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:19.551 [DEBUG] [Thread-123971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:08:19.551 [INFO] [Thread-123971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:08:19.554 [DEBUG] [Thread-123971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] Compression: none
2025-09-28T12:08:19.555 [DEBUG] [Thread-123971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:19.572 [DEBUG] [Thread-123971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:19.573 [DEBUG] [Thread-123971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:19.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:08:19.574 [DEBUG] [Thread-123971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:08:19.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:19.576 [DEBUG] [Thread-123971] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:19.576 [DEBUG] [Thread-123971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:19.576 [DEBUG] [Thread-123971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:19.576 [DEBUG] [Thread-123971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:08:19.576 [DEBUG] [Thread-123971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:19.601 [INFO] [Thread-123971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:19.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:20.224 [DEBUG] [Thread-123971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:20.224 [DEBUG] [Thread-123971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:20.225 [DEBUG] [Thread-123971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:08:20.265 [DEBUG] [Thread-123971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:20.265 [DEBUG] [Thread-123971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:20.267 [DEBUG] [Thread-123971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:20.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:20.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:08:20.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:08:20.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:08:20.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:20.286 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:08:20.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:20.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421960 -999.00  +18.70   6.42     40   +4.80 1 1 1 1 1   888    0 10.10 -140.96 ----- 9.6 6.4 230.4 14.9 25.5 -24.9 24.3 -23.5 23.8 -23.1 25.1 -24.7
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421960
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:08:20.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:08:09', tmtdew=15.63, humidity=35.39, cloud=0.0, wind=10.68, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:07:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:08:20.288 [DEBUG] [Thread-123971] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:20.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-28T12:08:20.376 [DEBUG] [Thread-123974] [transport.py] [_log()] starting thread (client mode): 0x2b9cc0a0
2025-09-28T12:08:20.376 [DEBUG] [Thread-123974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:20.392 [DEBUG] [Thread-123974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:08:20.392 [INFO] [Thread-123974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] Compression: none
2025-09-28T12:08:20.400 [DEBUG] [Thread-123974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:20.456 [DEBUG] [Thread-123974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:20.457 [DEBUG] [Thread-123974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:20.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:08:20.458 [DEBUG] [Thread-123974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:08:20.458 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:20.513 [DEBUG] [Thread-123974] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:20.514 [DEBUG] [Thread-123974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:20.514 [DEBUG] [Thread-123974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:20.514 [DEBUG] [Thread-123974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:08:20.514 [DEBUG] [Thread-123974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:20.533 [INFO] [Thread-123974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:20.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-28T12:08:20.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:21.203 [DEBUG] [Thread-123976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:21.499 [DEBUG] [Thread-123974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:21.499 [DEBUG] [Thread-123974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:21.547 [DEBUG] [Thread-123974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:21.548 [DEBUG] [Thread-123974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:21.557 [DEBUG] [Thread-123974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:21.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:21.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-28T12:08:21.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') -> 00000000
2025-09-28T12:08:21.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:21.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:21.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:21.592 [DEBUG] [Thread-123974] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:31.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:08:31.594 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:08:31.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-28T12:08:32.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 8, 9), 15.63, 35.39, 0.0, 10.68, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:08:32.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:08:09
2025-09-28T12:08:32.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:08:32.446 [DEBUG] [Thread-123977] [transport.py] [_log()] starting thread (client mode): 0x2b98ae90
2025-09-28T12:08:32.446 [DEBUG] [Thread-123977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:32.465 [DEBUG] [Thread-123977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:08:32.466 [INFO] [Thread-123977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] Compression: none
2025-09-28T12:08:32.469 [DEBUG] [Thread-123977] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:32.483 [DEBUG] [Thread-123977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:32.483 [DEBUG] [Thread-123977] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:08:32.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:08:32.484 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:08:32.484 [DEBUG] [Thread-123977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:32.511 [INFO] [Thread-123977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:32.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:33.305 [DEBUG] [Thread-123977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:33.305 [DEBUG] [Thread-123977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:33.306 [DEBUG] [Thread-123977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:08:33.347 [DEBUG] [Thread-123977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:33.347 [DEBUG] [Thread-123977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:33.349 [DEBUG] [Thread-123977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:33.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:33.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:08:33.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:08:33.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:08:33.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:33.368 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:08:33.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.421960 -999.00  +18.70   6.42     40   +4.80 1 1 1 1 1   888    0 10.10 -140.96 ----- 9.6 6.4 230.4 14.9 25.5 -24.9 24.3 -23.5 23.8 -23.1 25.1 -24.7
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.421960
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:08:33.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:08:09', tmtdew=15.63, humidity=35.39, cloud=0.0, wind=10.68, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:07:37.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:08:33.369 [DEBUG] [Thread-123977] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:33.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-28T12:08:33.454 [DEBUG] [Thread-123980] [transport.py] [_log()] starting thread (client mode): 0x2b9c2b00
2025-09-28T12:08:33.454 [DEBUG] [Thread-123980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:33.471 [DEBUG] [Thread-123980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:08:33.471 [INFO] [Thread-123980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] Compression: none
2025-09-28T12:08:33.479 [DEBUG] [Thread-123980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:33.535 [DEBUG] [Thread-123980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:33.535 [DEBUG] [Thread-123980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:33.535 [DEBUG] [Thread-123980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:08:33.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:08:33.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:33.593 [DEBUG] [Thread-123980] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:33.593 [DEBUG] [Thread-123980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:33.593 [DEBUG] [Thread-123980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:33.593 [DEBUG] [Thread-123980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:08:33.593 [DEBUG] [Thread-123980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:33.609 [INFO] [Thread-123980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08: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-28T12:08:33.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:34.671 [DEBUG] [Thread-123980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:34.671 [DEBUG] [Thread-123980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:34.720 [DEBUG] [Thread-123980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:34.720 [DEBUG] [Thread-123980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:34.729 [DEBUG] [Thread-123980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:34.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:34.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-28T12:08:34.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-28T12:08:34.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:34.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:34.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:34.765 [DEBUG] [Thread-123980] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:36.246 [DEBUG] [Thread-123982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:43.405 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:43.406 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:44.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:08:44.767 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:08:44.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-28T12:08:45.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 8, 41), 15.81, 34.87, 0.0, 16.97, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:08:45.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:08:41
2025-09-28T12:08:45.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:08:45.595 [DEBUG] [Thread-123983] [transport.py] [_log()] starting thread (client mode): 0x2b988640
2025-09-28T12:08:45.595 [DEBUG] [Thread-123983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:45.615 [DEBUG] [Thread-123983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:08:45.615 [INFO] [Thread-123983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] Compression: none
2025-09-28T12:08:45.618 [DEBUG] [Thread-123983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:45.625 [DEBUG] [Thread-123983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:45.625 [DEBUG] [Thread-123983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:45.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:08:45.625 [DEBUG] [Thread-123983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:08:45.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:45.626 [DEBUG] [Thread-123983] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:45.626 [DEBUG] [Thread-123983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:45.626 [DEBUG] [Thread-123983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:45.626 [DEBUG] [Thread-123983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:08:45.626 [DEBUG] [Thread-123983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:45.635 [INFO] [Thread-123983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:45.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:46.264 [DEBUG] [Thread-123983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:46.265 [DEBUG] [Thread-123983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:46.265 [DEBUG] [Thread-123983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:08:46.305 [DEBUG] [Thread-123983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:46.305 [DEBUG] [Thread-123983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:46.307 [DEBUG] [Thread-123983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:46.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:46.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:08:46.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:08:46.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:08:46.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:46.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:08:46.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:46.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.422654 -999.00  +18.80  15.16     39   +4.70 1 1 1 1 1   888    0 10.62 -126.83 ----- 12.1 15.2 217.6 16.0 25.5 -24.8 24.1 -24.1 23.9 -23.4 25.1 -25.1
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.422654
2025-09-28T12:08:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:08:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:08:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:08:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:08:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:08:46.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:08:41', tmtdew=15.81, humidity=34.87, cloud=0.0, wind=16.97, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:08:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:08:46.333 [DEBUG] [Thread-123983] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:46.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-28T12:08:46.430 [DEBUG] [Thread-123986] [transport.py] [_log()] starting thread (client mode): 0x2b98aec0
2025-09-28T12:08:46.430 [DEBUG] [Thread-123986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:46.444 [DEBUG] [Thread-123986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:08:46.445 [INFO] [Thread-123986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:08:46.452 [DEBUG] [Thread-123986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:46.452 [DEBUG] [Thread-123986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] Compression: none
2025-09-28T12:08:46.453 [DEBUG] [Thread-123986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:46.509 [DEBUG] [Thread-123986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:46.509 [DEBUG] [Thread-123986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:46.510 [DEBUG] [Thread-123986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:08:46.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:08:46.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:46.564 [DEBUG] [Thread-123986] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:46.565 [DEBUG] [Thread-123986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:46.565 [DEBUG] [Thread-123986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:46.565 [DEBUG] [Thread-123986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:08:46.565 [DEBUG] [Thread-123986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:46.584 [INFO] [Thread-123986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:46.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-28T12:08:46.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:47.551 [DEBUG] [Thread-123986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:47.552 [DEBUG] [Thread-123986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:47.599 [DEBUG] [Thread-123986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:47.599 [DEBUG] [Thread-123986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:47.608 [DEBUG] [Thread-123986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:47.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:47.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-28T12:08:47.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-28T12:08:47.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:47.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:47.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:47.643 [DEBUG] [Thread-123986] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:51.272 [DEBUG] [Thread-123988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:08:57.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:08:57.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:08:57.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-28T12:08:58.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 8, 41), 15.81, 34.87, 0.0, 16.97, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:08:58.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:08:41
2025-09-28T12:08:58.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:08:58.469 [DEBUG] [Thread-123989] [transport.py] [_log()] starting thread (client mode): 0x2e3f9030
2025-09-28T12:08:58.469 [DEBUG] [Thread-123989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:58.489 [DEBUG] [Thread-123989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:08:58.489 [INFO] [Thread-123989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:58.492 [DEBUG] [Thread-123989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] Compression: none
2025-09-28T12:08:58.493 [DEBUG] [Thread-123989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:58.511 [DEBUG] [Thread-123989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:58.511 [DEBUG] [Thread-123989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:58.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:08:58.512 [DEBUG] [Thread-123989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:08:58.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:58.514 [DEBUG] [Thread-123989] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:58.514 [DEBUG] [Thread-123989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:58.514 [DEBUG] [Thread-123989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:58.514 [DEBUG] [Thread-123989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:08:58.514 [DEBUG] [Thread-123989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:58.529 [INFO] [Thread-123989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:58.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:08:59.318 [DEBUG] [Thread-123989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:08:59.318 [DEBUG] [Thread-123989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:08:59.319 [DEBUG] [Thread-123989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:08:59.359 [DEBUG] [Thread-123989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:08:59.359 [DEBUG] [Thread-123989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:08:59.362 [DEBUG] [Thread-123989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:08:59.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:08:59.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:08:59.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:08:59.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:08:59.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:08:59.385 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:08:59.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:08:59.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:08:59.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:08:59.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.422654 -999.00  +18.80  15.16     39   +4.70 1 1 1 1 1   888    0 10.62 -126.83 ----- 12.1 15.2 217.6 16.0 25.5 -24.8 24.1 -24.1 23.9 -23.4 25.1 -25.1
2025-09-28T12:08:59.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:08:59.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:08:59.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.422654
2025-09-28T12:08:59.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:08:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:08:59.387 [DEBUG] [Thread-123989] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:08:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:08:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:08:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:08:59.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:08:41', tmtdew=15.81, humidity=34.87, cloud=0.0, wind=16.97, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:08:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:08:59.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-28T12:08:59.479 [DEBUG] [Thread-123992] [transport.py] [_log()] starting thread (client mode): 0x2b98a590
2025-09-28T12:08:59.479 [DEBUG] [Thread-123992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:08:59.494 [DEBUG] [Thread-123992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:08:59.494 [INFO] [Thread-123992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] client lang: <none>
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] server lang: <none>
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] kex follows: False
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:08:59.502 [DEBUG] [Thread-123992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:08:59.503 [DEBUG] [Thread-123992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:08:59.503 [DEBUG] [Thread-123992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:08:59.503 [DEBUG] [Thread-123992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:08:59.503 [DEBUG] [Thread-123992] [transport.py] [_log()] Compression: none
2025-09-28T12:08:59.503 [DEBUG] [Thread-123992] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:08:59.560 [DEBUG] [Thread-123992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:08:59.561 [DEBUG] [Thread-123992] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:08:59.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:08:59.562 [DEBUG] [Thread-123992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:08:59.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:08:59.617 [DEBUG] [Thread-123992] [transport.py] [_log()] userauth is OK
2025-09-28T12:08:59.617 [DEBUG] [Thread-123992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:08:59.617 [DEBUG] [Thread-123992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:08:59.617 [DEBUG] [Thread-123992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:08:59.617 [DEBUG] [Thread-123992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:08:59.636 [INFO] [Thread-123992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:08:59.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-28T12:08:59.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:00.615 [DEBUG] [Thread-123992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:00.616 [DEBUG] [Thread-123992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:00.663 [DEBUG] [Thread-123992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:00.663 [DEBUG] [Thread-123992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:00.672 [DEBUG] [Thread-123992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:00.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:00.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-28T12:09:00.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-28T12:09:00.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:00.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:00.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:00.707 [DEBUG] [Thread-123992] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:06.321 [DEBUG] [Thread-123994 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:08.109 [DEBUG] [Thread-123995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:10.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:09:10.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:09:10.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-28T12:09:11.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 8, 41), 15.81, 34.87, 0.0, 16.97, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:09:11.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:08:41
2025-09-28T12:09:11.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:09:11.580 [DEBUG] [Thread-123996] [transport.py] [_log()] starting thread (client mode): 0x2b9df130
2025-09-28T12:09:11.580 [DEBUG] [Thread-123996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:11.600 [DEBUG] [Thread-123996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:09:11.600 [INFO] [Thread-123996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:09:11.603 [DEBUG] [Thread-123996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] Compression: none
2025-09-28T12:09:11.604 [DEBUG] [Thread-123996] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:11.618 [DEBUG] [Thread-123996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:11.618 [DEBUG] [Thread-123996] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:11.619 [DEBUG] [Thread-123996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:09:11.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:09:11.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:11.619 [DEBUG] [Thread-123996] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:11.620 [DEBUG] [Thread-123996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:11.620 [DEBUG] [Thread-123996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:11.620 [DEBUG] [Thread-123996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:09:11.620 [DEBUG] [Thread-123996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:11.632 [INFO] [Thread-123996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:11.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:12.466 [DEBUG] [Thread-123996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:12.466 [DEBUG] [Thread-123996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:12.466 [DEBUG] [Thread-123996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:09:12.507 [DEBUG] [Thread-123996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:12.507 [DEBUG] [Thread-123996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:12.510 [DEBUG] [Thread-123996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:12.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:12.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:09:12.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:09:12.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:09:12.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:12.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:09:12.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.422654 -999.00  +18.80  15.16     39   +4.70 1 1 1 1 1   888    0 10.62 -126.83 ----- 12.1 15.2 217.6 16.0 25.5 -24.8 24.1 -24.1 23.9 -23.4 25.1 -25.1
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:09:12.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.422654
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:09:12.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:08:41', tmtdew=15.81, humidity=34.87, cloud=0.0, wind=16.97, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:08:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:09:12.529 [DEBUG] [Thread-123996] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:12.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-28T12:09:12.615 [DEBUG] [Thread-123999] [transport.py] [_log()] starting thread (client mode): 0x2b9acaf0
2025-09-28T12:09:12.615 [DEBUG] [Thread-123999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:12.630 [DEBUG] [Thread-123999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:09:12.630 [INFO] [Thread-123999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:09:12.637 [DEBUG] [Thread-123999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] Compression: none
2025-09-28T12:09:12.638 [DEBUG] [Thread-123999] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:12.695 [DEBUG] [Thread-123999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:12.695 [DEBUG] [Thread-123999] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:12.696 [DEBUG] [Thread-123999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:09:12.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:09:12.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:12.752 [DEBUG] [Thread-123999] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:12.752 [DEBUG] [Thread-123999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:12.752 [DEBUG] [Thread-123999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:12.752 [DEBUG] [Thread-123999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:09:12.752 [DEBUG] [Thread-123999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:12.767 [INFO] [Thread-123999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:12.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-28T12:09:12.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:13.708 [DEBUG] [Thread-123999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:13.708 [DEBUG] [Thread-123999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:13.756 [DEBUG] [Thread-123999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:13.756 [DEBUG] [Thread-123999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:13.766 [DEBUG] [Thread-123999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:13.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:13.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-28T12:09:13.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-28T12:09:13.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:13.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:13.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:13.798 [DEBUG] [Thread-123999] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:21.349 [DEBUG] [Thread-124001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:23.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:09:23.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:09: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-28T12:09:24.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 9, 13), 15.89, 34.71, 0.0, 16.27, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:09:24.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:09:13
2025-09-28T12:09:24.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:09:24.632 [DEBUG] [Thread-124002] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T12:09:24.632 [DEBUG] [Thread-124002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:24.653 [DEBUG] [Thread-124002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:09:24.654 [INFO] [Thread-124002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:24.656 [DEBUG] [Thread-124002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] Compression: none
2025-09-28T12:09:24.657 [DEBUG] [Thread-124002] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:24.673 [DEBUG] [Thread-124002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:24.674 [DEBUG] [Thread-124002] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:24.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:09:24.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:24.675 [DEBUG] [Thread-124002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:09:24.676 [DEBUG] [Thread-124002] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:24.676 [DEBUG] [Thread-124002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:24.676 [DEBUG] [Thread-124002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:24.676 [DEBUG] [Thread-124002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:09:24.676 [DEBUG] [Thread-124002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:24.701 [INFO] [Thread-124002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:24.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:25.348 [DEBUG] [Thread-124002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:25.349 [DEBUG] [Thread-124002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:25.349 [DEBUG] [Thread-124002] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:09:25.389 [DEBUG] [Thread-124002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:25.389 [DEBUG] [Thread-124002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:25.392 [DEBUG] [Thread-124002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:25.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:25.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:09:25.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:09:25.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:09:25.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:25.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:09:25.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:25.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423001 -999.00  +19.10   4.81     40   +5.20 1 1 1 1 1   888    0 10.89 -116.74 ----- 8.7 4.8 132.8 12.4 25.4 -24.3 24.1 -24.1 23.9 -23.7 25.2 -23.4
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423001
2025-09-28T12:09:25.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:09:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:09:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:09:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:09:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:09:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:09:13', tmtdew=15.89, humidity=34.71, cloud=0.0, wind=16.27, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:09:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:09:25.414 [DEBUG] [Thread-124002] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:25.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-28T12:09:25.509 [DEBUG] [Thread-124005] [transport.py] [_log()] starting thread (client mode): 0x2b98bb20
2025-09-28T12:09:25.509 [DEBUG] [Thread-124005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:25.523 [DEBUG] [Thread-124005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:09:25.524 [INFO] [Thread-124005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:09:25.531 [DEBUG] [Thread-124005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:25.531 [DEBUG] [Thread-124005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:25.532 [DEBUG] [Thread-124005] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] Compression: none
2025-09-28T12:09:25.533 [DEBUG] [Thread-124005] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:25.588 [DEBUG] [Thread-124005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:25.589 [DEBUG] [Thread-124005] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:25.589 [DEBUG] [Thread-124005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:09:25.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:09:25.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:25.644 [DEBUG] [Thread-124005] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:25.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:25.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:25.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:09:25.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:25.664 [INFO] [Thread-124005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:25.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-28T12:09:25.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:26.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:26.644 [DEBUG] [Thread-124005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:26.691 [DEBUG] [Thread-124005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:26.691 [DEBUG] [Thread-124005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:26.701 [DEBUG] [Thread-124005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:26.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09: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-28T12:09:26.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-28T12:09:26.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:26.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:26.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:26.735 [DEBUG] [Thread-124005] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:36.382 [DEBUG] [Thread-124007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:36.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:09:36.738 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:09: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-28T12:09:37.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 9, 13), 15.89, 34.71, 0.0, 16.27, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:09:37.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:09:13
2025-09-28T12:09:37.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:09:37.554 [DEBUG] [Thread-124008] [transport.py] [_log()] starting thread (client mode): 0x2b9ada20
2025-09-28T12:09:37.554 [DEBUG] [Thread-124008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:37.575 [DEBUG] [Thread-124008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:09:37.575 [INFO] [Thread-124008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:37.578 [DEBUG] [Thread-124008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] Compression: none
2025-09-28T12:09:37.579 [DEBUG] [Thread-124008] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:37.600 [DEBUG] [Thread-124008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:37.600 [DEBUG] [Thread-124008] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:37.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:09:37.601 [DEBUG] [Thread-124008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:09:37.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:37.604 [DEBUG] [Thread-124008] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:37.604 [DEBUG] [Thread-124008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:37.604 [DEBUG] [Thread-124008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:37.604 [DEBUG] [Thread-124008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:09:37.604 [DEBUG] [Thread-124008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:37.628 [INFO] [Thread-124008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:37.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:38.411 [DEBUG] [Thread-124008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:38.411 [DEBUG] [Thread-124008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:38.412 [DEBUG] [Thread-124008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:09:38.452 [DEBUG] [Thread-124008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:38.453 [DEBUG] [Thread-124008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:38.455 [DEBUG] [Thread-124008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:38.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:38.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:09:38.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:09:38.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:09:38.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:38.470 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:09:38.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:38.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423001 -999.00  +19.10   4.81     40   +5.20 1 1 1 1 1   888    0 10.89 -116.74 ----- 8.7 4.8 132.8 12.4 25.4 -24.3 24.1 -24.1 23.9 -23.7 25.2 -23.4
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423001
2025-09-28T12:09:38.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:09:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:09:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:09:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:09:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:09:38.472 [DEBUG] [Thread-124008] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:38.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:09:13', tmtdew=15.89, humidity=34.71, cloud=0.0, wind=16.27, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:09:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:09:38.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-28T12:09:38.570 [DEBUG] [Thread-124011] [transport.py] [_log()] starting thread (client mode): 0x2e3c0220
2025-09-28T12:09:38.570 [DEBUG] [Thread-124011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:38.585 [DEBUG] [Thread-124011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:09:38.586 [INFO] [Thread-124011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:09:38.593 [DEBUG] [Thread-124011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:38.594 [DEBUG] [Thread-124011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:38.595 [DEBUG] [Thread-124011] [transport.py] [_log()] Compression: none
2025-09-28T12:09:38.595 [DEBUG] [Thread-124011] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:38.652 [DEBUG] [Thread-124011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:38.652 [DEBUG] [Thread-124011] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:38.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:09:38.653 [DEBUG] [Thread-124011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:09:38.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:38.708 [DEBUG] [Thread-124011] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:38.708 [DEBUG] [Thread-124011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:38.708 [DEBUG] [Thread-124011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:38.708 [DEBUG] [Thread-124011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:09:38.708 [DEBUG] [Thread-124011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:38.727 [INFO] [Thread-124011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:38.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-28T12:09:38.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:39.705 [DEBUG] [Thread-124011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:39.705 [DEBUG] [Thread-124011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:39.753 [DEBUG] [Thread-124011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:39.753 [DEBUG] [Thread-124011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:39.762 [DEBUG] [Thread-124011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:39.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:39.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')
2025-09-28T12:09:39.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-28T12:09:39.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:39.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:39.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:39.798 [DEBUG] [Thread-124011] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:43.555 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:43.556 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:49.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:09:49.800 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:09:49.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-28T12:09:50.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 9, 45), 15.71, 35.29, 0.0, 13.83, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:09:50.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:09:45
2025-09-28T12:09:50.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:09:50.628 [DEBUG] [Thread-124013] [transport.py] [_log()] starting thread (client mode): 0x2e38dc30
2025-09-28T12:09:50.628 [DEBUG] [Thread-124013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:50.647 [DEBUG] [Thread-124013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:09:50.647 [INFO] [Thread-124013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] Compression: none
2025-09-28T12:09:50.650 [DEBUG] [Thread-124013] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:50.667 [DEBUG] [Thread-124013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:50.668 [DEBUG] [Thread-124013] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:50.668 [DEBUG] [Thread-124013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:09:50.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:09:50.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:50.670 [DEBUG] [Thread-124013] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:50.670 [DEBUG] [Thread-124013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:50.670 [DEBUG] [Thread-124013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:50.670 [DEBUG] [Thread-124013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:09:50.670 [DEBUG] [Thread-124013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:50.695 [INFO] [Thread-124013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:50.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:51.288 [DEBUG] [Thread-124013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:51.288 [DEBUG] [Thread-124013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:51.289 [DEBUG] [Thread-124013] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:09:51.329 [DEBUG] [Thread-124013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:51.329 [DEBUG] [Thread-124013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:51.332 [DEBUG] [Thread-124013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:51.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:51.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:09:51.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:09:51.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:09:51.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:51.355 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:09:51.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:51.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:51.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423349 -999.00  +19.60   7.70     38   +5.20 1 1 1 1 1   888    0 11.07 -113.93 ----- 8.1 7.7 193.3 14.6 25.7 -24.0 24.3 -23.5 24.0 -22.9 25.4 -23.5
2025-09-28T12:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423349
2025-09-28T12:09:51.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:09:51.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:09:51.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:09:51.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:09:51.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:09:51.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:09:45', tmtdew=15.71, humidity=35.29, cloud=0.0, wind=13.83, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:09:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:09:51.357 [DEBUG] [Thread-124013] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:09:51.424 [DEBUG] [Thread-124016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:09:51.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-28T12:09:51.441 [DEBUG] [Thread-124017] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-28T12:09:51.441 [DEBUG] [Thread-124017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:09:51.456 [DEBUG] [Thread-124017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:09:51.456 [INFO] [Thread-124017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:09:51.464 [DEBUG] [Thread-124017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] client lang: <none>
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] server lang: <none>
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] kex follows: False
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:09:51.465 [DEBUG] [Thread-124017] [transport.py] [_log()] Compression: none
2025-09-28T12:09:51.466 [DEBUG] [Thread-124017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:09:51.524 [DEBUG] [Thread-124017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:09:51.524 [DEBUG] [Thread-124017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:09:51.525 [DEBUG] [Thread-124017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:09:51.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:09:51.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:09:51.580 [DEBUG] [Thread-124017] [transport.py] [_log()] userauth is OK
2025-09-28T12:09:51.580 [DEBUG] [Thread-124017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:09:51.580 [DEBUG] [Thread-124017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:09:51.581 [DEBUG] [Thread-124017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:09:51.581 [DEBUG] [Thread-124017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:09:51.600 [INFO] [Thread-124017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:09:51.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-28T12:09:51.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:09:52.669 [DEBUG] [Thread-124017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:09:52.669 [DEBUG] [Thread-124017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:09:52.716 [DEBUG] [Thread-124017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:09:52.716 [DEBUG] [Thread-124017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:09:52.725 [DEBUG] [Thread-124017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:09:52.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:09:52.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-28T12:09:52.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-28T12:09:52.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:09:52.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:09:52.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:09:52.762 [DEBUG] [Thread-124017] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:02.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:10:02.763 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:10:02.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-28T12:10:03.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 9, 45), 15.71, 35.29, 0.0, 13.83, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:10:03.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:09:45
2025-09-28T12:10:03.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:10:03.592 [DEBUG] [Thread-124019] [transport.py] [_log()] starting thread (client mode): 0x2b9c07c0
2025-09-28T12:10:03.592 [DEBUG] [Thread-124019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:03.612 [DEBUG] [Thread-124019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:10:03.612 [INFO] [Thread-124019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:03.616 [DEBUG] [Thread-124019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] Compression: none
2025-09-28T12:10:03.617 [DEBUG] [Thread-124019] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:03.632 [DEBUG] [Thread-124019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:03.632 [DEBUG] [Thread-124019] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:03.633 [DEBUG] [Thread-124019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:10:03.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:10:03.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:03.635 [DEBUG] [Thread-124019] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:03.635 [DEBUG] [Thread-124019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:03.635 [DEBUG] [Thread-124019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:03.635 [DEBUG] [Thread-124019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:10:03.635 [DEBUG] [Thread-124019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:03.658 [INFO] [Thread-124019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:03.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:06.458 [DEBUG] [Thread-124021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:08.164 [DEBUG] [Thread-124022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:15.645 [DEBUG] [Thread-124019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:15.645 [DEBUG] [Thread-124019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:15.646 [DEBUG] [Thread-124019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:10:15.686 [DEBUG] [Thread-124019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:15.686 [DEBUG] [Thread-124019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:15.689 [DEBUG] [Thread-124019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:15.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:15.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:10:15.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:10:15.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:10:16.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:16.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:10:16.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:16.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:16.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:10:16.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423349 -999.00  +19.60   7.70     38   +5.20 1 1 1 1 1   888    0 11.07 -113.93 ----- 8.1 7.7 193.3 14.6 25.7 -24.0 24.3 -23.5 24.0 -22.9 25.4 -23.5
2025-09-28T12:10:16.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:10:16.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:10:16.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423349
2025-09-28T12:10:16.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:10:16.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:10:16.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:10:16.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:10:16.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:10:16.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:09:45', tmtdew=15.71, humidity=35.29, cloud=0.0, wind=13.83, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:09:37.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:10:16.069 [DEBUG] [Thread-124019] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:16.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-28T12:10:16.167 [DEBUG] [Thread-124024] [transport.py] [_log()] starting thread (client mode): 0x2e38d090
2025-09-28T12:10:16.167 [DEBUG] [Thread-124024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:16.183 [DEBUG] [Thread-124024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:10:16.183 [INFO] [Thread-124024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:10:16.190 [DEBUG] [Thread-124024] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:16.191 [DEBUG] [Thread-124024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:10:16.191 [DEBUG] [Thread-124024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:16.191 [DEBUG] [Thread-124024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:16.191 [DEBUG] [Thread-124024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:16.191 [DEBUG] [Thread-124024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] Compression: none
2025-09-28T12:10:16.192 [DEBUG] [Thread-124024] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:16.247 [DEBUG] [Thread-124024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:16.247 [DEBUG] [Thread-124024] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:16.248 [DEBUG] [Thread-124024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:10:16.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:10:16.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:16.309 [DEBUG] [Thread-124024] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:16.309 [DEBUG] [Thread-124024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:16.309 [DEBUG] [Thread-124024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:16.309 [DEBUG] [Thread-124024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:10:16.310 [DEBUG] [Thread-124024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:16.329 [INFO] [Thread-124024] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:16.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-28T12:10:16.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:17.318 [DEBUG] [Thread-124024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:17.318 [DEBUG] [Thread-124024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:17.365 [DEBUG] [Thread-124024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:17.365 [DEBUG] [Thread-124024] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:17.374 [DEBUG] [Thread-124024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:17.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:17.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-28T12:10:17.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-28T12:10:17.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:17.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:17.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:17.406 [DEBUG] [Thread-124024] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:21.488 [DEBUG] [Thread-124026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:27.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:10:27.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:10:27.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-28T12:10:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 10, 17), 15.76, 35.19, 0.0, 13.76, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:10:27.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:10:17
2025-09-28T12:10:28.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:10:28.232 [DEBUG] [Thread-124027] [transport.py] [_log()] starting thread (client mode): 0x2b9de590
2025-09-28T12:10:28.232 [DEBUG] [Thread-124027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:28.251 [DEBUG] [Thread-124027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:10:28.252 [INFO] [Thread-124027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:10:28.254 [DEBUG] [Thread-124027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:28.255 [DEBUG] [Thread-124027] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] Compression: none
2025-09-28T12:10:28.256 [DEBUG] [Thread-124027] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:28.269 [DEBUG] [Thread-124027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:28.270 [DEBUG] [Thread-124027] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:28.270 [DEBUG] [Thread-124027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:10:28.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:10:28.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:28.272 [DEBUG] [Thread-124027] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:28.273 [DEBUG] [Thread-124027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:28.273 [DEBUG] [Thread-124027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:28.273 [DEBUG] [Thread-124027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:10:28.273 [DEBUG] [Thread-124027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:28.297 [INFO] [Thread-124027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:28.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:28.916 [DEBUG] [Thread-124027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:28.916 [DEBUG] [Thread-124027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:28.916 [DEBUG] [Thread-124027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:10:28.957 [DEBUG] [Thread-124027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:28.957 [DEBUG] [Thread-124027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:28.961 [DEBUG] [Thread-124027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:28.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:28.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:10:28.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:10:28.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:10:28.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:28.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:10:28.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:28.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423695 -999.00  +19.80  11.25     36   +4.70 1 1 1 1 1   888    0 11.14 -101.07 ----- 11.6 11.2 202.2 15.9 25.6 -25.3 24.3 -24.3 24.1 -23.6 25.4 -26.1
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423695
2025-09-28T12:10:28.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:10:28.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:10:28.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:10:28.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:10:28.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:10:28.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:10:17', tmtdew=15.76, humidity=35.19, cloud=0.0, wind=13.76, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:10:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:10:28.987 [DEBUG] [Thread-124027] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:29.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-28T12:10:29.081 [DEBUG] [Thread-124030] [transport.py] [_log()] starting thread (client mode): 0x2b9f3280
2025-09-28T12:10:29.081 [DEBUG] [Thread-124030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:29.095 [DEBUG] [Thread-124030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:10:29.095 [INFO] [Thread-124030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] Compression: none
2025-09-28T12:10:29.103 [DEBUG] [Thread-124030] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:29.163 [DEBUG] [Thread-124030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:29.164 [DEBUG] [Thread-124030] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:29.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:10:29.165 [DEBUG] [Thread-124030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:10:29.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:29.219 [DEBUG] [Thread-124030] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:29.219 [DEBUG] [Thread-124030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:29.219 [DEBUG] [Thread-124030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:29.219 [DEBUG] [Thread-124030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:10:29.219 [DEBUG] [Thread-124030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:29.239 [INFO] [Thread-124030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:29.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-28T12:10:29.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:30.204 [DEBUG] [Thread-124030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:30.204 [DEBUG] [Thread-124030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:30.252 [DEBUG] [Thread-124030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:30.252 [DEBUG] [Thread-124030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:30.261 [DEBUG] [Thread-124030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:30.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:30.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')
2025-09-28T12:10:30.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-28T12:10:30.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:30.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:30.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:30.296 [DEBUG] [Thread-124030] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:36.522 [DEBUG] [Thread-124032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:40.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:10:40.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:10:40.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-28T12:10:40.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 10, 17), 15.76, 35.19, 0.0, 13.76, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:10:40.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:10:17
2025-09-28T12:10:40.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:10:41.124 [DEBUG] [Thread-124033] [transport.py] [_log()] starting thread (client mode): 0x2e38cdf0
2025-09-28T12:10:41.125 [DEBUG] [Thread-124033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:41.147 [DEBUG] [Thread-124033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:10:41.147 [INFO] [Thread-124033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:10:41.150 [DEBUG] [Thread-124033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] Compression: none
2025-09-28T12:10:41.151 [DEBUG] [Thread-124033] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:41.170 [DEBUG] [Thread-124033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:41.170 [DEBUG] [Thread-124033] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:41.171 [DEBUG] [Thread-124033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:10:41.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:10:41.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:41.173 [DEBUG] [Thread-124033] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:41.173 [DEBUG] [Thread-124033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:41.173 [DEBUG] [Thread-124033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:41.173 [DEBUG] [Thread-124033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:10:41.173 [DEBUG] [Thread-124033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:41.197 [INFO] [Thread-124033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:41.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:41.965 [DEBUG] [Thread-124033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:41.965 [DEBUG] [Thread-124033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:41.965 [DEBUG] [Thread-124033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:10:42.006 [DEBUG] [Thread-124033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:42.006 [DEBUG] [Thread-124033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:42.008 [DEBUG] [Thread-124033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:42.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:42.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:10:42.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:10:42.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:10:42.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:42.021 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:10:42.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:42.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423695 -999.00  +19.80  11.25     36   +4.70 1 1 1 1 1   888    0 11.14 -101.07 ----- 11.6 11.2 202.2 15.9 25.6 -25.3 24.3 -24.3 24.1 -23.6 25.4 -26.1
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423695
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:10:42.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:10:17', tmtdew=15.76, humidity=35.19, cloud=0.0, wind=13.76, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:10:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:10:42.022 [DEBUG] [Thread-124033] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:42.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-28T12:10:42.107 [DEBUG] [Thread-124036] [transport.py] [_log()] starting thread (client mode): 0x2b9dda50
2025-09-28T12:10:42.107 [DEBUG] [Thread-124036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:42.122 [DEBUG] [Thread-124036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:10:42.123 [INFO] [Thread-124036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:10:42.130 [DEBUG] [Thread-124036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:42.130 [DEBUG] [Thread-124036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] Compression: none
2025-09-28T12:10:42.131 [DEBUG] [Thread-124036] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:42.186 [DEBUG] [Thread-124036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:42.186 [DEBUG] [Thread-124036] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:42.187 [DEBUG] [Thread-124036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:10:42.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:10:42.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:42.243 [DEBUG] [Thread-124036] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:42.243 [DEBUG] [Thread-124036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:42.243 [DEBUG] [Thread-124036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:42.243 [DEBUG] [Thread-124036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:10:42.243 [DEBUG] [Thread-124036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:42.262 [INFO] [Thread-124036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:42.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-28T12:10:42.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:43.200 [DEBUG] [Thread-124036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:43.200 [DEBUG] [Thread-124036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:43.248 [DEBUG] [Thread-124036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:43.248 [DEBUG] [Thread-124036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:43.257 [DEBUG] [Thread-124036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:43.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:43.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-28T12:10:43.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-28T12:10:43.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:43.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:43.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:43.291 [DEBUG] [Thread-124036] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:10:43.698 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:43.699 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:51.576 [DEBUG] [Thread-124038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:10:53.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:10:53.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:10:53.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-28T12:10:53.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 10, 49), 16.37, 33.36, 0.0, 14.72, 18.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:10:53.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:10:49
2025-09-28T12:10:53.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:10:54.124 [DEBUG] [Thread-124039] [transport.py] [_log()] starting thread (client mode): 0x2e3c05b0
2025-09-28T12:10:54.124 [DEBUG] [Thread-124039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:54.144 [DEBUG] [Thread-124039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:10:54.144 [INFO] [Thread-124039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:10:54.145 [DEBUG] [Thread-124039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:54.145 [DEBUG] [Thread-124039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:10:54.145 [DEBUG] [Thread-124039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:54.145 [DEBUG] [Thread-124039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] Compression: none
2025-09-28T12:10:54.146 [DEBUG] [Thread-124039] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:54.158 [DEBUG] [Thread-124039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:54.159 [DEBUG] [Thread-124039] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:54.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:10:54.160 [DEBUG] [Thread-124039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:10:54.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:54.161 [DEBUG] [Thread-124039] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:54.162 [DEBUG] [Thread-124039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:54.162 [DEBUG] [Thread-124039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:54.162 [DEBUG] [Thread-124039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:10:54.162 [DEBUG] [Thread-124039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:54.185 [INFO] [Thread-124039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:54.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:54.938 [DEBUG] [Thread-124039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:54.938 [DEBUG] [Thread-124039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:54.938 [DEBUG] [Thread-124039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:10:54.979 [DEBUG] [Thread-124039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:54.980 [DEBUG] [Thread-124039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:54.983 [DEBUG] [Thread-124039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:54.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:54.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:10:54.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:10:54.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:10:54.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:55.001 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:10:55.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:55.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.423695 -999.00  +19.80  11.25     36   +4.70 1 1 1 1 1   888    0 11.14 -101.07 ----- 11.6 11.2 202.2 15.9 25.6 -25.3 24.3 -24.3 24.1 -23.6 25.4 -26.1
2025-09-28T12:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:10:55.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.423695
2025-09-28T12:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:10:55.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:10:55.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:10:49', tmtdew=16.37, humidity=33.36, cloud=0.0, wind=14.72, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:10:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:10:55.004 [DEBUG] [Thread-124039] [transport.py] [_log()] EOF in transport thread
2025-09-28T12: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-28T12:10:55.098 [DEBUG] [Thread-124042] [transport.py] [_log()] starting thread (client mode): 0x2e3c3280
2025-09-28T12:10:55.098 [DEBUG] [Thread-124042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:10:55.113 [DEBUG] [Thread-124042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:10:55.113 [INFO] [Thread-124042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:55.121 [DEBUG] [Thread-124042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] client lang: <none>
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] server lang: <none>
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] kex follows: False
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] Compression: none
2025-09-28T12:10:55.122 [DEBUG] [Thread-124042] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:10:55.178 [DEBUG] [Thread-124042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:10:55.178 [DEBUG] [Thread-124042] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:10:55.179 [DEBUG] [Thread-124042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:10:55.179 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:10:55.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:10:55.235 [DEBUG] [Thread-124042] [transport.py] [_log()] userauth is OK
2025-09-28T12:10:55.235 [DEBUG] [Thread-124042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:10:55.235 [DEBUG] [Thread-124042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:10:55.235 [DEBUG] [Thread-124042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:10:55.235 [DEBUG] [Thread-124042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:10:55.254 [INFO] [Thread-124042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:10:55.254 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:10:55.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:10:56.192 [DEBUG] [Thread-124042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:10:56.192 [DEBUG] [Thread-124042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:10:56.240 [DEBUG] [Thread-124042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:10:56.241 [DEBUG] [Thread-124042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:10:56.250 [DEBUG] [Thread-124042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:10:56.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:10:56.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-28T12:10:56.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-28T12:10:56.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:10:56.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:10:56.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:10:56.284 [DEBUG] [Thread-124042] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:06.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:11:06.288 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:11:06.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-28T12:11:06.601 [DEBUG] [Thread-124044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:06.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 10, 49), 16.37, 33.36, 0.0, 14.72, 18.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:11:06.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:10:49
2025-09-28T12:11:06.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:11:07.126 [DEBUG] [Thread-124045] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T12:11:07.126 [DEBUG] [Thread-124045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:07.146 [DEBUG] [Thread-124045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:11:07.146 [INFO] [Thread-124045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] Compression: none
2025-09-28T12:11:07.149 [DEBUG] [Thread-124045] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:07.166 [DEBUG] [Thread-124045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:07.166 [DEBUG] [Thread-124045] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:07.166 [DEBUG] [Thread-124045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:11:07.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:11:07.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:07.167 [DEBUG] [Thread-124045] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:07.167 [DEBUG] [Thread-124045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:07.167 [DEBUG] [Thread-124045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:07.167 [DEBUG] [Thread-124045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:11:07.167 [DEBUG] [Thread-124045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:07.176 [INFO] [Thread-124045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:07.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:07.787 [DEBUG] [Thread-124045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:07.787 [DEBUG] [Thread-124045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:07.788 [DEBUG] [Thread-124045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:11:07.828 [DEBUG] [Thread-124045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:07.828 [DEBUG] [Thread-124045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:07.833 [DEBUG] [Thread-124045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:07.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:07.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:11:07.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:11:07.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:11:07.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:07.853 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:11:07.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424043 -999.00  +19.70  12.84     37   +4.60 1 1 1 1 1   888    0 11.51 -96.76 ----- 10.5 12.8 196.8 17.8 25.7 -25.9 24.2 -27.7 24.2 -24.0 25.5 -26.2
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:11:07.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424043
2025-09-28T12:11:07.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:11:07.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:11:07.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:11:07.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:11:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:11:07.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:10:49', tmtdew=16.37, humidity=33.36, cloud=0.0, wind=14.72, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:10:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:11:07.856 [DEBUG] [Thread-124045] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:07.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-28T12:11:07.952 [DEBUG] [Thread-124048] [transport.py] [_log()] starting thread (client mode): 0x2b9c0c40
2025-09-28T12:11:07.952 [DEBUG] [Thread-124048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:07.971 [DEBUG] [Thread-124048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:11:07.971 [INFO] [Thread-124048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:11:07.978 [DEBUG] [Thread-124048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:07.979 [DEBUG] [Thread-124048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:07.980 [DEBUG] [Thread-124048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:07.980 [DEBUG] [Thread-124048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:07.980 [DEBUG] [Thread-124048] [transport.py] [_log()] Compression: none
2025-09-28T12:11:07.980 [DEBUG] [Thread-124048] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:08.040 [DEBUG] [Thread-124048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:08.040 [DEBUG] [Thread-124048] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:08.041 [DEBUG] [Thread-124048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:11:08.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:11:08.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:08.098 [DEBUG] [Thread-124048] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:08.099 [DEBUG] [Thread-124048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:08.099 [DEBUG] [Thread-124048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:08.099 [DEBUG] [Thread-124048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:11:08.099 [DEBUG] [Thread-124048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:08.117 [INFO] [Thread-124048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:08.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-28T12:11:08.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:08.228 [DEBUG] [Thread-124050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:09.120 [DEBUG] [Thread-124048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:09.121 [DEBUG] [Thread-124048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:09.168 [DEBUG] [Thread-124048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:09.169 [DEBUG] [Thread-124048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:09.178 [DEBUG] [Thread-124048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:09.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:09.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-28T12:11:09.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-28T12:11:09.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:09.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:09.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:09.214 [DEBUG] [Thread-124048] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:19.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:11:19.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:11:19.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-28T12:11:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 10, 49), 16.37, 33.36, 0.0, 14.72, 18.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:11:19.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:10:49
2025-09-28T12:11:19.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:11:20.032 [DEBUG] [Thread-124051] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-28T12:11:20.033 [DEBUG] [Thread-124051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:20.053 [DEBUG] [Thread-124051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:11:20.053 [INFO] [Thread-124051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:11:20.054 [DEBUG] [Thread-124051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:20.054 [DEBUG] [Thread-124051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:11:20.054 [DEBUG] [Thread-124051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:20.054 [DEBUG] [Thread-124051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] Compression: none
2025-09-28T12:11:20.055 [DEBUG] [Thread-124051] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:20.063 [DEBUG] [Thread-124051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:20.063 [DEBUG] [Thread-124051] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:20.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:11:20.064 [DEBUG] [Thread-124051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:11:20.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:20.065 [DEBUG] [Thread-124051] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:20.065 [DEBUG] [Thread-124051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:20.065 [DEBUG] [Thread-124051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:20.065 [DEBUG] [Thread-124051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:11:20.065 [DEBUG] [Thread-124051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:20.083 [INFO] [Thread-124051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:20.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:20.842 [DEBUG] [Thread-124051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:20.842 [DEBUG] [Thread-124051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:20.842 [DEBUG] [Thread-124051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:11:20.883 [DEBUG] [Thread-124051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:20.883 [DEBUG] [Thread-124051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:20.886 [DEBUG] [Thread-124051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:20.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:20.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:11:20.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:11:20.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:11:20.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:20.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:11:20.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:20.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:20.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:11:20.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424043 -999.00  +19.70  12.84     37   +4.60 1 1 1 1 1   888    0 11.51 -96.76 ----- 10.5 12.8 196.8 17.8 25.7 -25.9 24.2 -27.7 24.2 -24.0 25.5 -26.2
2025-09-28T12:11:20.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:11:20.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:11:20.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424043
2025-09-28T12:11:20.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:11:20.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:11:20.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:11:20.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:11:20.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:11:20.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:10:49', tmtdew=16.37, humidity=33.36, cloud=0.0, wind=14.72, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:10:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:11:20.911 [DEBUG] [Thread-124051] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:20.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:11:21.005 [DEBUG] [Thread-124054] [transport.py] [_log()] starting thread (client mode): 0x2e3f9300
2025-09-28T12:11:21.005 [DEBUG] [Thread-124054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:21.020 [DEBUG] [Thread-124054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:11:21.020 [INFO] [Thread-124054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:21.028 [DEBUG] [Thread-124054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:21.029 [DEBUG] [Thread-124054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:21.030 [DEBUG] [Thread-124054] [transport.py] [_log()] Compression: none
2025-09-28T12:11:21.030 [DEBUG] [Thread-124054] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:21.086 [DEBUG] [Thread-124054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:21.086 [DEBUG] [Thread-124054] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:21.087 [DEBUG] [Thread-124054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:11:21.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:11:21.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:21.142 [DEBUG] [Thread-124054] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:21.142 [DEBUG] [Thread-124054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:21.143 [DEBUG] [Thread-124054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:21.143 [DEBUG] [Thread-124054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:11:21.143 [DEBUG] [Thread-124054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:21.162 [INFO] [Thread-124054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:21.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-28T12:11:21.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:21.646 [DEBUG] [Thread-124056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:22.139 [DEBUG] [Thread-124054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:22.139 [DEBUG] [Thread-124054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:22.187 [DEBUG] [Thread-124054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:22.187 [DEBUG] [Thread-124054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:22.195 [DEBUG] [Thread-124054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:22.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:22.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-28T12:11:22.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-28T12:11:22.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:22.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:22.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:22.226 [DEBUG] [Thread-124054] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:32.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:11:32.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:11:32.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-28T12:11:32.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 11, 20), 16.56, 32.91, 0.0, 18.1, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:11:32.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:11:20
2025-09-28T12:11:32.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:11:33.052 [DEBUG] [Thread-124057] [transport.py] [_log()] starting thread (client mode): 0x2e3fa710
2025-09-28T12:11:33.052 [DEBUG] [Thread-124057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:33.071 [DEBUG] [Thread-124057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:11:33.071 [INFO] [Thread-124057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:11:33.074 [DEBUG] [Thread-124057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:33.074 [DEBUG] [Thread-124057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] Compression: none
2025-09-28T12:11:33.075 [DEBUG] [Thread-124057] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:33.090 [DEBUG] [Thread-124057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:33.090 [DEBUG] [Thread-124057] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:33.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:11:33.091 [DEBUG] [Thread-124057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:11:33.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:33.093 [DEBUG] [Thread-124057] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:33.093 [DEBUG] [Thread-124057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:33.093 [DEBUG] [Thread-124057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:33.093 [DEBUG] [Thread-124057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:11:33.093 [DEBUG] [Thread-124057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:33.111 [INFO] [Thread-124057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:33.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:33.724 [DEBUG] [Thread-124057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:33.724 [DEBUG] [Thread-124057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:33.725 [DEBUG] [Thread-124057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:11:33.765 [DEBUG] [Thread-124057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:33.765 [DEBUG] [Thread-124057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:33.768 [DEBUG] [Thread-124057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:33.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:33.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:11:33.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:11:33.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:11:33.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:33.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:11:33.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:33.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:11:33.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424390 -999.00  +19.50  10.61     37   +4.60 1 1 1 1 1   888    0 11.51 -87.74 ----- 20.5 10.6 216.5 17.3 25.8 -24.9 24.2 -25.0 24.2 -23.4 25.6 -25.2
2025-09-28T12:11:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:11:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:11:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424390
2025-09-28T12:11:33.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:11:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:11:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:11:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:11:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:11:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:11:20', tmtdew=16.56, humidity=32.91, cloud=0.0, wind=18.1, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:11:33.792 [DEBUG] [Thread-124057] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:33.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-28T12:11:33.886 [DEBUG] [Thread-124060] [transport.py] [_log()] starting thread (client mode): 0x2b9ad780
2025-09-28T12:11:33.886 [DEBUG] [Thread-124060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:33.902 [DEBUG] [Thread-124060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:11:33.902 [INFO] [Thread-124060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:11:33.909 [DEBUG] [Thread-124060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:33.910 [DEBUG] [Thread-124060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] Compression: none
2025-09-28T12:11:33.911 [DEBUG] [Thread-124060] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:33.966 [DEBUG] [Thread-124060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:33.966 [DEBUG] [Thread-124060] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:33.967 [DEBUG] [Thread-124060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:11:33.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:11:33.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:34.022 [DEBUG] [Thread-124060] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:34.022 [DEBUG] [Thread-124060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:34.022 [DEBUG] [Thread-124060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:34.022 [DEBUG] [Thread-124060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:11:34.022 [DEBUG] [Thread-124060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:34.040 [INFO] [Thread-124060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:34.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-28T12:11:34.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:35.019 [DEBUG] [Thread-124060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:35.019 [DEBUG] [Thread-124060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:35.067 [DEBUG] [Thread-124060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:35.067 [DEBUG] [Thread-124060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:35.076 [DEBUG] [Thread-124060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:35.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:35.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-28T12:11:35.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-28T12:11:35.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:35.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:35.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:35.110 [DEBUG] [Thread-124060] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:36.690 [DEBUG] [Thread-124062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:43.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:43.847 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:45.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:11:45.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:11:45.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-28T12:11:45.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 11, 20), 16.56, 32.91, 0.0, 18.1, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:11:45.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:11:20
2025-09-28T12:11:45.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:11:45.944 [DEBUG] [Thread-124063] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-28T12:11:45.944 [DEBUG] [Thread-124063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:45.965 [DEBUG] [Thread-124063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:11:45.965 [INFO] [Thread-124063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:45.968 [DEBUG] [Thread-124063] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] Compression: none
2025-09-28T12:11:45.969 [DEBUG] [Thread-124063] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:45.980 [DEBUG] [Thread-124063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:45.980 [DEBUG] [Thread-124063] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:45.981 [DEBUG] [Thread-124063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:11:45.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:11:45.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:45.983 [DEBUG] [Thread-124063] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:45.983 [DEBUG] [Thread-124063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:45.983 [DEBUG] [Thread-124063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:45.983 [DEBUG] [Thread-124063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:11:45.983 [DEBUG] [Thread-124063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:46.007 [INFO] [Thread-124063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:46.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:46.804 [DEBUG] [Thread-124063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:46.804 [DEBUG] [Thread-124063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:46.805 [DEBUG] [Thread-124063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:11:46.845 [DEBUG] [Thread-124063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:46.845 [DEBUG] [Thread-124063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:46.848 [DEBUG] [Thread-124063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:46.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:46.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:11:46.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:11:46.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:11:46.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:46.873 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:11:46.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:46.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:11:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424390 -999.00  +19.50  10.61     37   +4.60 1 1 1 1 1   888    0 11.51 -87.74 ----- 20.5 10.6 216.5 17.3 25.8 -24.9 24.2 -25.0 24.2 -23.4 25.6 -25.2
2025-09-28T12:11:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:11:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:11:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424390
2025-09-28T12:11:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:11:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:11:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:11:46.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:11:46.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:11:46.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:11:20', tmtdew=16.56, humidity=32.91, cloud=0.0, wind=18.1, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:11:46.876 [DEBUG] [Thread-124063] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:46.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-28T12:11:46.972 [DEBUG] [Thread-124066] [transport.py] [_log()] starting thread (client mode): 0x2e3c1390
2025-09-28T12:11:46.973 [DEBUG] [Thread-124066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:46.988 [DEBUG] [Thread-124066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:11:46.988 [INFO] [Thread-124066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:46.996 [DEBUG] [Thread-124066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:46.997 [DEBUG] [Thread-124066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:46.998 [DEBUG] [Thread-124066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:46.998 [DEBUG] [Thread-124066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:46.998 [DEBUG] [Thread-124066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:46.998 [DEBUG] [Thread-124066] [transport.py] [_log()] Compression: none
2025-09-28T12:11:46.998 [DEBUG] [Thread-124066] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:47.054 [DEBUG] [Thread-124066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:47.055 [DEBUG] [Thread-124066] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:47.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:11:47.056 [DEBUG] [Thread-124066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:11:47.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:47.110 [DEBUG] [Thread-124066] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:47.110 [DEBUG] [Thread-124066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:47.110 [DEBUG] [Thread-124066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:47.110 [DEBUG] [Thread-124066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:11:47.110 [DEBUG] [Thread-124066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:47.130 [INFO] [Thread-124066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:47.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-28T12:11:47.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:48.109 [DEBUG] [Thread-124066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:48.109 [DEBUG] [Thread-124066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:48.157 [DEBUG] [Thread-124066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:48.157 [DEBUG] [Thread-124066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:48.165 [DEBUG] [Thread-124066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:48.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:48.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')
2025-09-28T12:11:48.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') -> 00000000
2025-09-28T12:11:48.189 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:48.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:48.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:48.197 [DEBUG] [Thread-124066] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:51.727 [DEBUG] [Thread-124068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:11:58.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:11:58.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:11:58.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-28T12:11:58.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 11, 52), 16.61, 32.86, 0.0, 19.78, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:11:58.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:11:52
2025-09-28T12:11:58.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:11:59.021 [DEBUG] [Thread-124069] [transport.py] [_log()] starting thread (client mode): 0x2e3dd990
2025-09-28T12:11:59.021 [DEBUG] [Thread-124069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:11:59.041 [DEBUG] [Thread-124069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:11:59.041 [INFO] [Thread-124069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:11:59.044 [DEBUG] [Thread-124069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:11:59.044 [DEBUG] [Thread-124069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:11:59.044 [DEBUG] [Thread-124069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:11:59.044 [DEBUG] [Thread-124069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:59.044 [DEBUG] [Thread-124069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] client lang: <none>
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] server lang: <none>
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] kex follows: False
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] Compression: none
2025-09-28T12:11:59.045 [DEBUG] [Thread-124069] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:11:59.061 [DEBUG] [Thread-124069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:11:59.061 [DEBUG] [Thread-124069] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:11:59.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:11:59.062 [DEBUG] [Thread-124069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:11:59.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:11:59.064 [DEBUG] [Thread-124069] [transport.py] [_log()] userauth is OK
2025-09-28T12:11:59.064 [DEBUG] [Thread-124069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:11:59.065 [DEBUG] [Thread-124069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:11:59.065 [DEBUG] [Thread-124069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:11:59.065 [DEBUG] [Thread-124069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:11:59.088 [INFO] [Thread-124069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:11:59.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:11:59.856 [DEBUG] [Thread-124069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:11:59.856 [DEBUG] [Thread-124069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:11:59.856 [DEBUG] [Thread-124069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:11:59.897 [DEBUG] [Thread-124069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:11:59.897 [DEBUG] [Thread-124069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:11:59.900 [DEBUG] [Thread-124069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:11:59.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:11:59.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:11:59.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:11:59.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:11:59.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:11:59.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:11:59.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:11:59.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:11:59.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:11:59.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424390 -999.00  +19.50  10.61     37   +4.60 1 1 1 1 1   888    0 11.51 -87.74 ----- 20.5 10.6 216.5 17.3 25.8 -24.9 24.2 -25.0 24.2 -23.4 25.6 -25.2
2025-09-28T12:11:59.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:11:59.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:11:59.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424390
2025-09-28T12:11:59.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:11:59.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:11:59.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:11:59.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:11:59.924 [DEBUG] [Thread-124069] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:11:59.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:11:59.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:11:52', tmtdew=16.61, humidity=32.86, cloud=0.0, wind=19.78, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:12:00.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-28T12:12:00.019 [DEBUG] [Thread-124072] [transport.py] [_log()] starting thread (client mode): 0x2b9f3ca0
2025-09-28T12:12:00.019 [DEBUG] [Thread-124072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:00.034 [DEBUG] [Thread-124072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:12:00.034 [INFO] [Thread-124072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:12:00.041 [DEBUG] [Thread-124072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:00.041 [DEBUG] [Thread-124072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] Compression: none
2025-09-28T12:12:00.042 [DEBUG] [Thread-124072] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:00.097 [DEBUG] [Thread-124072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:00.098 [DEBUG] [Thread-124072] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:00.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:12:00.099 [DEBUG] [Thread-124072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:12:00.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:00.154 [DEBUG] [Thread-124072] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:00.154 [DEBUG] [Thread-124072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:00.154 [DEBUG] [Thread-124072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:00.154 [DEBUG] [Thread-124072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:12:00.154 [DEBUG] [Thread-124072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:00.173 [INFO] [Thread-124072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:00.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-28T12:12:00.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:01.127 [DEBUG] [Thread-124072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:01.127 [DEBUG] [Thread-124072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:01.175 [DEBUG] [Thread-124072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:01.175 [DEBUG] [Thread-124072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:01.185 [DEBUG] [Thread-124072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:01.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:01.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-28T12:12:01.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-28T12:12:01.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:01.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:01.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:01.220 [DEBUG] [Thread-124072] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:06.759 [DEBUG] [Thread-124074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:08.278 [DEBUG] [Thread-124075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:11.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:12:11.219 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12: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-28T12:12:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 11, 52), 16.61, 32.86, 0.0, 19.78, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:12:11.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:11:52
2025-09-28T12:12:11.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:12:12.055 [DEBUG] [Thread-124076] [transport.py] [_log()] starting thread (client mode): 0x2e3c31f0
2025-09-28T12:12:12.056 [DEBUG] [Thread-124076] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:12.074 [DEBUG] [Thread-124076] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:12:12.075 [INFO] [Thread-124076] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:12.078 [DEBUG] [Thread-124076] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] Compression: none
2025-09-28T12:12:12.079 [DEBUG] [Thread-124076] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:12.097 [DEBUG] [Thread-124076] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:12.098 [DEBUG] [Thread-124076] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:12.098 [DEBUG] [Thread-124076] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:12:12.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:12:12.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:12.100 [DEBUG] [Thread-124076] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:12.100 [DEBUG] [Thread-124076] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:12.101 [DEBUG] [Thread-124076] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:12.101 [DEBUG] [Thread-124076] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:12:12.101 [DEBUG] [Thread-124076] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:12.118 [INFO] [Thread-124076] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:12.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:12.728 [DEBUG] [Thread-124076] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:12.728 [DEBUG] [Thread-124076] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:12.728 [DEBUG] [Thread-124076] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:12:12.769 [DEBUG] [Thread-124076] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:12.769 [DEBUG] [Thread-124076] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:12.771 [DEBUG] [Thread-124076] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:12.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:12.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:12:12.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:12:12.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:12.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:12:12.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424737 -999.00  +19.50   7.72     37   +4.60 1 1 1 1 1   888    0 11.86 -82.53 ----- 11.0 7.7 175.5 20.2 25.6 -26.5 24.2 -27.9 24.2 -25.5 25.6 -24.8
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:12:12.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424737
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:12:12.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:11:52', tmtdew=16.61, humidity=32.86, cloud=0.0, wind=19.78, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:12:12.790 [DEBUG] [Thread-124076] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:12.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-28T12:12:12.874 [DEBUG] [Thread-124079] [transport.py] [_log()] starting thread (client mode): 0x2e3f8100
2025-09-28T12:12:12.874 [DEBUG] [Thread-124079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:12.889 [DEBUG] [Thread-124079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:12:12.889 [INFO] [Thread-124079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:12:12.896 [DEBUG] [Thread-124079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] Compression: none
2025-09-28T12:12:12.897 [DEBUG] [Thread-124079] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:12.952 [DEBUG] [Thread-124079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:12.952 [DEBUG] [Thread-124079] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:12.952 [DEBUG] [Thread-124079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:12:12.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:12:12.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:13.011 [DEBUG] [Thread-124079] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:13.011 [DEBUG] [Thread-124079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:13.011 [DEBUG] [Thread-124079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:13.011 [DEBUG] [Thread-124079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:12:13.011 [DEBUG] [Thread-124079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:13.025 [INFO] [Thread-124079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:13.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-28T12:12:13.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:14.019 [DEBUG] [Thread-124079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:14.019 [DEBUG] [Thread-124079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:14.067 [DEBUG] [Thread-124079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:14.067 [DEBUG] [Thread-124079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:14.075 [DEBUG] [Thread-124079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:14.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:14.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-28T12:12:14.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-28T12:12:14.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:14.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:14.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:14.107 [DEBUG] [Thread-124079] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:21.809 [DEBUG] [Thread-124081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:24.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:12:24.110 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:12:24.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-28T12:12:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 11, 52), 16.61, 32.86, 0.0, 19.78, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:12:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:11:52
2025-09-28T12:12:24.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:12:24.926 [DEBUG] [Thread-124082] [transport.py] [_log()] starting thread (client mode): 0x2b9acb80
2025-09-28T12:12:24.926 [DEBUG] [Thread-124082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:24.947 [DEBUG] [Thread-124082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:12:24.947 [INFO] [Thread-124082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:12:24.951 [DEBUG] [Thread-124082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:24.951 [DEBUG] [Thread-124082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:12:24.951 [DEBUG] [Thread-124082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:24.951 [DEBUG] [Thread-124082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:24.951 [DEBUG] [Thread-124082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] Compression: none
2025-09-28T12:12:24.952 [DEBUG] [Thread-124082] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:24.960 [DEBUG] [Thread-124082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:24.960 [DEBUG] [Thread-124082] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:24.961 [DEBUG] [Thread-124082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:12:24.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:12:24.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:24.962 [DEBUG] [Thread-124082] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:24.963 [DEBUG] [Thread-124082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:24.963 [DEBUG] [Thread-124082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:24.963 [DEBUG] [Thread-124082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:12:24.963 [DEBUG] [Thread-124082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:24.978 [INFO] [Thread-124082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:24.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:25.740 [DEBUG] [Thread-124082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:25.740 [DEBUG] [Thread-124082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:25.740 [DEBUG] [Thread-124082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:12:25.781 [DEBUG] [Thread-124082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:25.781 [DEBUG] [Thread-124082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:25.783 [DEBUG] [Thread-124082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:25.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:25.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:12:25.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:12:25.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:12:25.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:25.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:12:25.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424737 -999.00  +19.50   7.72     37   +4.60 1 1 1 1 1   888    0 11.86 -82.53 ----- 11.0 7.7 175.5 20.2 25.6 -26.5 24.2 -27.9 24.2 -25.5 25.6 -24.8
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:12:25.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424737
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:12:25.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:11:52', tmtdew=16.61, humidity=32.86, cloud=0.0, wind=19.78, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:12:25.805 [DEBUG] [Thread-124082] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:25.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-28T12:12:25.893 [DEBUG] [Thread-124085] [transport.py] [_log()] starting thread (client mode): 0x2b9aca60
2025-09-28T12:12:25.893 [DEBUG] [Thread-124085] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:25.908 [DEBUG] [Thread-124085] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:12:25.908 [INFO] [Thread-124085] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:12:25.916 [DEBUG] [Thread-124085] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:25.916 [DEBUG] [Thread-124085] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] Compression: none
2025-09-28T12:12:25.917 [DEBUG] [Thread-124085] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:25.972 [DEBUG] [Thread-124085] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:25.972 [DEBUG] [Thread-124085] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:25.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:12:25.972 [DEBUG] [Thread-124085] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:12:25.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:26.029 [DEBUG] [Thread-124085] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:26.029 [DEBUG] [Thread-124085] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:26.029 [DEBUG] [Thread-124085] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:26.029 [DEBUG] [Thread-124085] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:12:26.029 [DEBUG] [Thread-124085] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:26.043 [INFO] [Thread-124085] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:26.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-28T12:12:26.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:27.035 [DEBUG] [Thread-124085] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:27.035 [DEBUG] [Thread-124085] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:27.082 [DEBUG] [Thread-124085] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:27.082 [DEBUG] [Thread-124085] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:27.091 [DEBUG] [Thread-124085] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:27.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:27.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-28T12:12:27.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-28T12:12:27.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:27.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:27.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:27.125 [DEBUG] [Thread-124085] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:36.858 [DEBUG] [Thread-124087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:37.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:12:37.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:12:37.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-28T12:12:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 12, 24), 16.28, 33.56, 0.0, 18.0, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:12:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:12:24
2025-09-28T12:12:37.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:12:37.950 [DEBUG] [Thread-124088] [transport.py] [_log()] starting thread (client mode): 0x2e3766e0
2025-09-28T12:12:37.950 [DEBUG] [Thread-124088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:37.970 [DEBUG] [Thread-124088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:12:37.970 [INFO] [Thread-124088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:37.973 [DEBUG] [Thread-124088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] Compression: none
2025-09-28T12:12:37.974 [DEBUG] [Thread-124088] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:37.991 [DEBUG] [Thread-124088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:37.991 [DEBUG] [Thread-124088] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:37.992 [DEBUG] [Thread-124088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:12:37.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:12:37.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:37.993 [DEBUG] [Thread-124088] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:37.994 [DEBUG] [Thread-124088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:37.994 [DEBUG] [Thread-124088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:37.994 [DEBUG] [Thread-124088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:12:37.994 [DEBUG] [Thread-124088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:38.009 [INFO] [Thread-124088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:38.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:38.782 [DEBUG] [Thread-124088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:38.783 [DEBUG] [Thread-124088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:38.783 [DEBUG] [Thread-124088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:12:38.823 [DEBUG] [Thread-124088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:38.824 [DEBUG] [Thread-124088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:38.827 [DEBUG] [Thread-124088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:38.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:38.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:12:38.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:12:38.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:12:38.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:38.851 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:12:38.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:38.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:38.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:12:38.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.424737 -999.00  +19.50   7.72     37   +4.60 1 1 1 1 1   888    0 11.86 -82.53 ----- 11.0 7.7 175.5 20.2 25.6 -26.5 24.2 -27.9 24.2 -25.5 25.6 -24.8
2025-09-28T12:12:38.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:12:38.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:12:38.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.424737
2025-09-28T12:12:38.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:12:38.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:12:38.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:12:38.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:12:38.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:12:38.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:12:24', tmtdew=16.28, humidity=33.56, cloud=0.0, wind=18.0, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:11:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:12:38.854 [DEBUG] [Thread-124088] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:38.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-28T12:12:38.954 [DEBUG] [Thread-124091] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T12:12:38.955 [DEBUG] [Thread-124091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:38.971 [DEBUG] [Thread-124091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:12:38.971 [INFO] [Thread-124091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:12:38.979 [DEBUG] [Thread-124091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:38.979 [DEBUG] [Thread-124091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:38.980 [DEBUG] [Thread-124091] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] Compression: none
2025-09-28T12:12:38.981 [DEBUG] [Thread-124091] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:39.039 [DEBUG] [Thread-124091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:39.039 [DEBUG] [Thread-124091] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:39.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:12:39.040 [DEBUG] [Thread-124091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:12:39.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:39.097 [DEBUG] [Thread-124091] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:39.097 [DEBUG] [Thread-124091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:39.098 [DEBUG] [Thread-124091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:39.098 [DEBUG] [Thread-124091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:12:39.098 [DEBUG] [Thread-124091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:39.120 [INFO] [Thread-124091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:39.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-28T12:12:39.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:40.062 [DEBUG] [Thread-124091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:40.062 [DEBUG] [Thread-124091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:40.109 [DEBUG] [Thread-124091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:40.109 [DEBUG] [Thread-124091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:40.118 [DEBUG] [Thread-124091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:40.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:40.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-28T12:12:40.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') -> 00000000
2025-09-28T12:12:40.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:40.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:40.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:40.154 [DEBUG] [Thread-124091] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:43.987 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:43.988 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:50.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:12:50.156 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:12:50.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-28T12:12:50.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 12, 24), 16.28, 33.56, 0.0, 18.0, 18.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:12:50.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:12:24
2025-09-28T12:12:50.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:12:51.014 [DEBUG] [Thread-124093] [transport.py] [_log()] starting thread (client mode): 0x2b9df6d0
2025-09-28T12:12:51.014 [DEBUG] [Thread-124093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:51.033 [DEBUG] [Thread-124093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:12:51.033 [INFO] [Thread-124093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:51.036 [DEBUG] [Thread-124093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] Compression: none
2025-09-28T12:12:51.037 [DEBUG] [Thread-124093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:51.055 [DEBUG] [Thread-124093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:51.055 [DEBUG] [Thread-124093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:51.055 [DEBUG] [Thread-124093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:12:51.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:12:51.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:51.056 [DEBUG] [Thread-124093] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:51.056 [DEBUG] [Thread-124093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:51.056 [DEBUG] [Thread-124093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:51.056 [DEBUG] [Thread-124093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:12:51.056 [DEBUG] [Thread-124093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:51.071 [INFO] [Thread-124093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:51.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:51.710 [DEBUG] [Thread-124093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:51.710 [DEBUG] [Thread-124093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:51.710 [DEBUG] [Thread-124093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:12:51.751 [DEBUG] [Thread-124093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:51.751 [DEBUG] [Thread-124093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:51.753 [DEBUG] [Thread-124093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:51.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:51.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:12:51.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:12:51.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:12:51.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:51.770 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:12:51.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.425432 -999.00  +18.60  12.05     38   +4.30 1 1 1 1 1   888    0 12.18 -73.74 ----- 10.4 12.1 184.0 20.4 25.5 -26.1 23.6 -28.7 24.1 -25.4 25.4 -26.7
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:12:51.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.425432
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:12:51.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:12:24', tmtdew=16.28, humidity=33.56, cloud=0.0, wind=18.0, temperature=18.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:12:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:12:51.772 [DEBUG] [Thread-124093] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:12:51.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-28T12:12:51.855 [DEBUG] [Thread-124096] [transport.py] [_log()] starting thread (client mode): 0x2b9decb0
2025-09-28T12:12:51.855 [DEBUG] [Thread-124096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:12:51.876 [DEBUG] [Thread-124096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:12:51.876 [INFO] [Thread-124096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] client lang: <none>
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] server lang: <none>
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] kex follows: False
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] Compression: none
2025-09-28T12:12:51.884 [DEBUG] [Thread-124096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:12:51.885 [DEBUG] [Thread-124098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:12:51.944 [DEBUG] [Thread-124096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:12:51.944 [DEBUG] [Thread-124096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:12:51.945 [DEBUG] [Thread-124096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:12:51.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:12:51.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:12:52.000 [DEBUG] [Thread-124096] [transport.py] [_log()] userauth is OK
2025-09-28T12:12:52.000 [DEBUG] [Thread-124096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:12:52.001 [DEBUG] [Thread-124096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:12:52.001 [DEBUG] [Thread-124096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:12:52.001 [DEBUG] [Thread-124096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:12:52.015 [INFO] [Thread-124096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:12:52.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:12:52.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:12:53.058 [DEBUG] [Thread-124096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:12:53.058 [DEBUG] [Thread-124096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:12:53.106 [DEBUG] [Thread-124096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:12:53.106 [DEBUG] [Thread-124096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:12:53.114 [DEBUG] [Thread-124096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:12:53.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:12:53.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-28T12:12:53.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-28T12:12:53.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:12:53.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:12:53.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:12:53.145 [DEBUG] [Thread-124096] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:03.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:13:03.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:13:03.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-28T12:13:03.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 12, 56), 15.49, 35.64, 0.0, 15.39, 17.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:13:03.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:12:56
2025-09-28T12:13:03.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:13:03.989 [DEBUG] [Thread-124099] [transport.py] [_log()] starting thread (client mode): 0x2e374e50
2025-09-28T12:13:03.989 [DEBUG] [Thread-124099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:04.009 [DEBUG] [Thread-124099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:13:04.009 [INFO] [Thread-124099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:13:04.012 [DEBUG] [Thread-124099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] Compression: none
2025-09-28T12:13:04.013 [DEBUG] [Thread-124099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:04.030 [DEBUG] [Thread-124099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:04.031 [DEBUG] [Thread-124099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:04.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:13:04.032 [DEBUG] [Thread-124099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:13:04.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:04.034 [DEBUG] [Thread-124099] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:04.034 [DEBUG] [Thread-124099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:04.034 [DEBUG] [Thread-124099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:04.034 [DEBUG] [Thread-124099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:13:04.034 [DEBUG] [Thread-124099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:04.052 [INFO] [Thread-124099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:04.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:04.812 [DEBUG] [Thread-124099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:04.812 [DEBUG] [Thread-124099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:04.812 [DEBUG] [Thread-124099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:13:04.853 [DEBUG] [Thread-124099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:04.853 [DEBUG] [Thread-124099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:04.855 [DEBUG] [Thread-124099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:04.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:04.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:13:04.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:13:04.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:13:04.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:04.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:13:04.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:04.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:04.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:13:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.425432 -999.00  +18.60  12.05     38   +4.30 1 1 1 1 1   888    0 12.18 -73.74 ----- 10.4 12.1 184.0 20.4 25.5 -26.1 23.6 -28.7 24.1 -25.4 25.4 -26.7
2025-09-28T12:13:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:13:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:13:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.425432
2025-09-28T12:13:04.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:13:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:13:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:13:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:13:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:13:04.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:12:56', tmtdew=15.49, humidity=35.64, cloud=0.0, wind=15.39, temperature=17.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:12:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:13:04.883 [DEBUG] [Thread-124099] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:04.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:13:04.978 [DEBUG] [Thread-124102] [transport.py] [_log()] starting thread (client mode): 0x30ddfa30
2025-09-28T12:13:04.978 [DEBUG] [Thread-124102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:04.993 [DEBUG] [Thread-124102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:13:04.994 [INFO] [Thread-124102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:13:05.001 [DEBUG] [Thread-124102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:05.002 [DEBUG] [Thread-124102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:05.003 [DEBUG] [Thread-124102] [transport.py] [_log()] Compression: none
2025-09-28T12:13:05.003 [DEBUG] [Thread-124102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:05.067 [DEBUG] [Thread-124102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:05.067 [DEBUG] [Thread-124102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:05.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:13:05.068 [DEBUG] [Thread-124102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:13:05.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:05.125 [DEBUG] [Thread-124102] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:05.125 [DEBUG] [Thread-124102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:05.125 [DEBUG] [Thread-124102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:05.125 [DEBUG] [Thread-124102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:13:05.125 [DEBUG] [Thread-124102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:05.144 [INFO] [Thread-124102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:05.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:13:05.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:06.116 [DEBUG] [Thread-124102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:06.116 [DEBUG] [Thread-124102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:06.164 [DEBUG] [Thread-124102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:06.165 [DEBUG] [Thread-124102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:06.173 [DEBUG] [Thread-124102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:06.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:06.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-28T12:13:06.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-28T12:13:06.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:06.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:06.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:06.212 [DEBUG] [Thread-124102] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:06.919 [DEBUG] [Thread-124104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:08.334 [DEBUG] [Thread-124105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:16.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:13:16.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:13:16.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-28T12:13:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 12, 56), 15.49, 35.64, 0.0, 15.39, 17.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:13:16.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:12:56
2025-09-28T12:13:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:13:17.026 [DEBUG] [Thread-124106] [transport.py] [_log()] starting thread (client mode): 0x2e3c0b20
2025-09-28T12:13:17.026 [DEBUG] [Thread-124106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:17.042 [DEBUG] [Thread-124106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:13:17.042 [INFO] [Thread-124106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:17.044 [DEBUG] [Thread-124106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:17.045 [DEBUG] [Thread-124106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:17.045 [DEBUG] [Thread-124106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:17.045 [DEBUG] [Thread-124106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:17.045 [DEBUG] [Thread-124106] [transport.py] [_log()] Compression: none
2025-09-28T12:13:17.045 [DEBUG] [Thread-124106] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:17.058 [DEBUG] [Thread-124106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:17.058 [DEBUG] [Thread-124106] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:17.059 [DEBUG] [Thread-124106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:13:17.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:13:17.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:17.060 [DEBUG] [Thread-124106] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:17.061 [DEBUG] [Thread-124106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:17.061 [DEBUG] [Thread-124106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:17.061 [DEBUG] [Thread-124106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:13:17.061 [DEBUG] [Thread-124106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:17.081 [INFO] [Thread-124106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:17.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:17.677 [DEBUG] [Thread-124106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:17.677 [DEBUG] [Thread-124106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:17.677 [DEBUG] [Thread-124106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:13:17.719 [DEBUG] [Thread-124106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:17.719 [DEBUG] [Thread-124106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:17.721 [DEBUG] [Thread-124106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:17.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:17.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:13:17.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:13:17.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:13:17.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:17.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:13:17.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:17.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:17.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:13:17.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.425779 -999.00  +18.50  12.00     39   +4.30 1 1 1 1 1   888    0 12.21 -66.47 ----- 10.1 12.0 170.6 17.4 25.4 -25.3 23.9 -24.3 24.1 -24.7 25.4 -25.3
2025-09-28T12:13:17.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:13:17.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:13:17.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.425779
2025-09-28T12:13:17.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:13:17.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:13:17.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:13:17.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:13:17.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:13:17.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:12:56', tmtdew=15.49, humidity=35.64, cloud=0.0, wind=15.39, temperature=17.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:13:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:13:17.745 [DEBUG] [Thread-124106] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:17.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-28T12:13:17.839 [DEBUG] [Thread-124109] [transport.py] [_log()] starting thread (client mode): 0x30ddf880
2025-09-28T12:13:17.839 [DEBUG] [Thread-124109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:17.854 [DEBUG] [Thread-124109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:13:17.854 [INFO] [Thread-124109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:17.862 [DEBUG] [Thread-124109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:17.863 [DEBUG] [Thread-124109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:17.863 [DEBUG] [Thread-124109] [transport.py] [_log()] Compression: none
2025-09-28T12:13:17.863 [DEBUG] [Thread-124109] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:17.920 [DEBUG] [Thread-124109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:17.920 [DEBUG] [Thread-124109] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:17.921 [DEBUG] [Thread-124109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:13:17.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:13:17.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:17.976 [DEBUG] [Thread-124109] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:17.977 [DEBUG] [Thread-124109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:17.977 [DEBUG] [Thread-124109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:17.977 [DEBUG] [Thread-124109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:13:17.977 [DEBUG] [Thread-124109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:17.996 [INFO] [Thread-124109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:17.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-28T12:13:17.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:18.933 [DEBUG] [Thread-124109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:18.934 [DEBUG] [Thread-124109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:18.981 [DEBUG] [Thread-124109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:18.981 [DEBUG] [Thread-124109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:18.990 [DEBUG] [Thread-124109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:18.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:18.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-28T12:13:19.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-28T12:13:19.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:19.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:19.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:19.024 [DEBUG] [Thread-124109] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:21.967 [DEBUG] [Thread-124111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:29.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:13:29.026 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:13:29.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:13:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 12, 56), 15.49, 35.64, 0.0, 15.39, 17.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:13:29.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:12:56
2025-09-28T12:13:29.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:13:29.918 [DEBUG] [Thread-124112] [transport.py] [_log()] starting thread (client mode): 0x2b9ac370
2025-09-28T12:13:29.918 [DEBUG] [Thread-124112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:29.933 [DEBUG] [Thread-124112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:13:29.933 [INFO] [Thread-124112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:29.936 [DEBUG] [Thread-124112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] Compression: none
2025-09-28T12:13:29.937 [DEBUG] [Thread-124112] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:29.953 [DEBUG] [Thread-124112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:29.953 [DEBUG] [Thread-124112] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:29.953 [DEBUG] [Thread-124112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:13:29.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:13:29.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:29.954 [DEBUG] [Thread-124112] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:29.954 [DEBUG] [Thread-124112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:29.954 [DEBUG] [Thread-124112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:29.954 [DEBUG] [Thread-124112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:13:29.954 [DEBUG] [Thread-124112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:29.984 [INFO] [Thread-124112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:29.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:30.772 [DEBUG] [Thread-124112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:30.772 [DEBUG] [Thread-124112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:30.772 [DEBUG] [Thread-124112] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:13:30.813 [DEBUG] [Thread-124112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:30.813 [DEBUG] [Thread-124112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:30.816 [DEBUG] [Thread-124112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:30.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:30.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:13:30.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:13:30.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:13:30.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:30.833 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:13:30.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.425779 -999.00  +18.50  12.00     39   +4.30 1 1 1 1 1   888    0 12.21 -66.47 ----- 10.1 12.0 170.6 17.4 25.4 -25.3 23.9 -24.3 24.1 -24.7 25.4 -25.3
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.425779
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:13:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:12:56', tmtdew=15.49, humidity=35.64, cloud=0.0, wind=15.39, temperature=17.58, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:13:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:13:30.834 [DEBUG] [Thread-124112] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:30.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-28T12:13:30.919 [DEBUG] [Thread-124115] [transport.py] [_log()] starting thread (client mode): 0x2b9decb0
2025-09-28T12:13:30.919 [DEBUG] [Thread-124115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:30.934 [DEBUG] [Thread-124115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:13:30.934 [INFO] [Thread-124115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:30.941 [DEBUG] [Thread-124115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] Compression: none
2025-09-28T12:13:30.942 [DEBUG] [Thread-124115] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:31.002 [DEBUG] [Thread-124115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:31.003 [DEBUG] [Thread-124115] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:31.003 [DEBUG] [Thread-124115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:13:31.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:13:31.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:31.060 [DEBUG] [Thread-124115] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:31.061 [DEBUG] [Thread-124115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:31.061 [DEBUG] [Thread-124115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:31.061 [DEBUG] [Thread-124115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:13:31.061 [DEBUG] [Thread-124115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:31.080 [INFO] [Thread-124115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:31.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:13:31.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:32.054 [DEBUG] [Thread-124115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:32.054 [DEBUG] [Thread-124115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:32.102 [DEBUG] [Thread-124115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:32.102 [DEBUG] [Thread-124115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:32.112 [DEBUG] [Thread-124115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:32.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:32.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-28T12:13:32.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-28T12:13:32.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:32.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:32.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:32.148 [DEBUG] [Thread-124115] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:37.011 [DEBUG] [Thread-124117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:42.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:13:42.150 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:13:42.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-28T12:13:42.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 13, 28), 15.48, 35.66, 0.0, 15.33, 17.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:13:42.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:13:28
2025-09-28T12:13:42.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:13:42.976 [DEBUG] [Thread-124118] [transport.py] [_log()] starting thread (client mode): 0x30dddd80
2025-09-28T12:13:42.976 [DEBUG] [Thread-124118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:42.987 [DEBUG] [Thread-124118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:13:42.987 [INFO] [Thread-124118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:42.988 [DEBUG] [Thread-124118] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] Compression: none
2025-09-28T12:13:42.989 [DEBUG] [Thread-124118] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:43.001 [DEBUG] [Thread-124118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:43.001 [DEBUG] [Thread-124118] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:43.002 [DEBUG] [Thread-124118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:13:43.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:13:43.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:43.003 [DEBUG] [Thread-124118] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:43.003 [DEBUG] [Thread-124118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:43.003 [DEBUG] [Thread-124118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:43.004 [DEBUG] [Thread-124118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:13:43.004 [DEBUG] [Thread-124118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:43.027 [INFO] [Thread-124118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:43.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:43.828 [DEBUG] [Thread-124118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:43.828 [DEBUG] [Thread-124118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:43.828 [DEBUG] [Thread-124118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:13:43.869 [DEBUG] [Thread-124118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:43.870 [DEBUG] [Thread-124118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:43.872 [DEBUG] [Thread-124118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:43.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:43.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:13:43.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:13:43.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:13:43.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:43.896 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:13:43.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:43.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.425779 -999.00  +18.50  12.00     39   +4.30 1 1 1 1 1   888    0 12.21 -66.47 ----- 10.1 12.0 170.6 17.4 25.4 -25.3 23.9 -24.3 24.1 -24.7 25.4 -25.3
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.425779
2025-09-28T12:13:43.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:13:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:13:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:13:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:13:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:13:43.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:13:28', tmtdew=15.48, humidity=35.66, cloud=0.0, wind=15.33, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:13:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:13:43.898 [DEBUG] [Thread-124118] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:43.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-28T12:13:43.998 [DEBUG] [Thread-124121] [transport.py] [_log()] starting thread (client mode): 0x2e3fa890
2025-09-28T12:13:43.999 [DEBUG] [Thread-124121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:44.016 [DEBUG] [Thread-124121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:13:44.016 [INFO] [Thread-124121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:44.030 [DEBUG] [Thread-124121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:44.031 [DEBUG] [Thread-124121] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] Compression: none
2025-09-28T12:13:44.032 [DEBUG] [Thread-124121] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:44.084 [DEBUG] [Thread-124121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:44.084 [DEBUG] [Thread-124121] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:44.085 [DEBUG] [Thread-124121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:13:44.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:13:44.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:44.129 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:44.130 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:44.140 [DEBUG] [Thread-124121] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:44.140 [DEBUG] [Thread-124121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:44.140 [DEBUG] [Thread-124121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:44.141 [DEBUG] [Thread-124121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:13:44.141 [DEBUG] [Thread-124121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:44.159 [INFO] [Thread-124121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:44.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-28T12:13:44.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:45.131 [DEBUG] [Thread-124121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:45.131 [DEBUG] [Thread-124121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:45.179 [DEBUG] [Thread-124121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:45.179 [DEBUG] [Thread-124121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:45.188 [DEBUG] [Thread-124121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:45.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:45.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-28T12:13:45.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-28T12:13:45.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:45.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:45.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:45.224 [DEBUG] [Thread-124121] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:52.044 [DEBUG] [Thread-124123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:13:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:13:55.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:13:55.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-28T12:13:55.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 13, 28), 15.48, 35.66, 0.0, 15.33, 17.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:13:55.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:13:28
2025-09-28T12:13:55.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:13:56.047 [DEBUG] [Thread-124124] [transport.py] [_log()] starting thread (client mode): 0x30ddc6d0
2025-09-28T12:13:56.047 [DEBUG] [Thread-124124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:56.067 [DEBUG] [Thread-124124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:13:56.067 [INFO] [Thread-124124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:13:56.070 [DEBUG] [Thread-124124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:56.070 [DEBUG] [Thread-124124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:13:56.070 [DEBUG] [Thread-124124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:56.070 [DEBUG] [Thread-124124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:56.070 [DEBUG] [Thread-124124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] Compression: none
2025-09-28T12:13:56.071 [DEBUG] [Thread-124124] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:56.087 [DEBUG] [Thread-124124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:56.087 [DEBUG] [Thread-124124] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:56.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:13:56.088 [DEBUG] [Thread-124124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:13:56.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:56.090 [DEBUG] [Thread-124124] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:56.091 [DEBUG] [Thread-124124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:56.091 [DEBUG] [Thread-124124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:56.091 [DEBUG] [Thread-124124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:13:56.091 [DEBUG] [Thread-124124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:56.113 [INFO] [Thread-124124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:56.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:56.758 [DEBUG] [Thread-124124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:56.758 [DEBUG] [Thread-124124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:56.759 [DEBUG] [Thread-124124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:13:56.799 [DEBUG] [Thread-124124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:56.799 [DEBUG] [Thread-124124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:56.802 [DEBUG] [Thread-124124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:56.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:56.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:13:56.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:13:56.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:13:56.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:56.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:13:56.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:56.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426126 -999.00  +18.70  11.61     38   +4.40 1 1 1 1 1   888    0 12.19 -69.61 ----- 9.1 11.6 217.4 17.9 25.5 -25.5 24.1 -24.7 24.1 -25.0 25.6 -25.6
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426126
2025-09-28T12:13:56.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:13:56.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:13:56.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:13:56.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:13:56.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:13:56.827 [DEBUG] [Thread-124124] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:13:56.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:13:28', tmtdew=15.48, humidity=35.66, cloud=0.0, wind=15.33, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:13:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:13:56.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-28T12:13:56.922 [DEBUG] [Thread-124127] [transport.py] [_log()] starting thread (client mode): 0x2b9ae200
2025-09-28T12:13:56.922 [DEBUG] [Thread-124127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:13:56.936 [DEBUG] [Thread-124127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:13:56.937 [INFO] [Thread-124127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:13:56.944 [DEBUG] [Thread-124127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:13:56.944 [DEBUG] [Thread-124127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] client lang: <none>
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] server lang: <none>
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] kex follows: False
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] Compression: none
2025-09-28T12:13:56.945 [DEBUG] [Thread-124127] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:13:57.004 [DEBUG] [Thread-124127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:13:57.004 [DEBUG] [Thread-124127] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:13:57.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:13:57.006 [DEBUG] [Thread-124127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:13:57.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:13:57.060 [DEBUG] [Thread-124127] [transport.py] [_log()] userauth is OK
2025-09-28T12:13:57.060 [DEBUG] [Thread-124127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:13:57.060 [DEBUG] [Thread-124127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:13:57.061 [DEBUG] [Thread-124127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:13:57.061 [DEBUG] [Thread-124127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:13:57.079 [INFO] [Thread-124127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:13:57.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:13:57.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:13:58.059 [DEBUG] [Thread-124127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:13:58.059 [DEBUG] [Thread-124127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:13:58.107 [DEBUG] [Thread-124127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:13:58.107 [DEBUG] [Thread-124127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:13:58.116 [DEBUG] [Thread-124127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:13:58.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:13:58.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-28T12:13:58.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-28T12:13:58.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:13:58.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:13:58.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:13:58.151 [DEBUG] [Thread-124127] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:07.088 [DEBUG] [Thread-124129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:08.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:14:08.154 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:14:08.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-28T12:14:08.382 [DEBUG] [Thread-124130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 14), 15.49, 35.23, 0.0, 15.49, 17.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:14:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:14:00
2025-09-28T12:14:08.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:14:08.981 [DEBUG] [Thread-124131] [transport.py] [_log()] starting thread (client mode): 0x2b988040
2025-09-28T12:14:08.982 [DEBUG] [Thread-124131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:09.000 [DEBUG] [Thread-124131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:14:09.000 [INFO] [Thread-124131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:09.002 [DEBUG] [Thread-124131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] Compression: none
2025-09-28T12:14:09.003 [DEBUG] [Thread-124131] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:09.017 [DEBUG] [Thread-124131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:09.018 [DEBUG] [Thread-124131] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:09.019 [DEBUG] [Thread-124131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:14:09.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:14:09.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:09.022 [DEBUG] [Thread-124131] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:09.022 [DEBUG] [Thread-124131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:09.022 [DEBUG] [Thread-124131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:09.022 [DEBUG] [Thread-124131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:14:09.022 [DEBUG] [Thread-124131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:09.040 [INFO] [Thread-124131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:09.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:09.799 [DEBUG] [Thread-124131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:09.799 [DEBUG] [Thread-124131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:09.799 [DEBUG] [Thread-124131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:14:09.840 [DEBUG] [Thread-124131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:09.840 [DEBUG] [Thread-124131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:09.841 [DEBUG] [Thread-124131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:09.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:09.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:14:09.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:14:09.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:14:09.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:09.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:14:09.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426126 -999.00  +18.70  11.61     38   +4.40 1 1 1 1 1   888    0 12.19 -69.61 ----- 9.1 11.6 217.4 17.9 25.5 -25.5 24.1 -24.7 24.1 -25.0 25.6 -25.6
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426126
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:14:09.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:14:00', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=15.49, temperature=17.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:13:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:14:09.855 [DEBUG] [Thread-124131] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:09.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-28T12:14:09.939 [DEBUG] [Thread-124134] [transport.py] [_log()] starting thread (client mode): 0x2b9afcd0
2025-09-28T12:14:09.939 [DEBUG] [Thread-124134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:09.954 [DEBUG] [Thread-124134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:14:09.954 [INFO] [Thread-124134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:14:09.962 [DEBUG] [Thread-124134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:09.962 [DEBUG] [Thread-124134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:14:09.962 [DEBUG] [Thread-124134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:09.962 [DEBUG] [Thread-124134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:09.962 [DEBUG] [Thread-124134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:09.963 [DEBUG] [Thread-124134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] Compression: none
2025-09-28T12:14:09.964 [DEBUG] [Thread-124134] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:10.020 [DEBUG] [Thread-124134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:10.021 [DEBUG] [Thread-124134] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:10.021 [DEBUG] [Thread-124134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:14:10.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:14:10.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:10.077 [DEBUG] [Thread-124134] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:10.077 [DEBUG] [Thread-124134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:10.077 [DEBUG] [Thread-124134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:10.077 [DEBUG] [Thread-124134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:14:10.077 [DEBUG] [Thread-124134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:10.096 [INFO] [Thread-124134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:10.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-28T12:14:10.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:11.045 [DEBUG] [Thread-124134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:11.045 [DEBUG] [Thread-124134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:11.093 [DEBUG] [Thread-124134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:11.093 [DEBUG] [Thread-124134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:11.103 [DEBUG] [Thread-124134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:11.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:11.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-28T12:14:11.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-28T12:14:11.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:11.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:11.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:11.142 [DEBUG] [Thread-124134] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:21.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:14:21.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:14:21.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-28T12:14:21.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 14), 15.49, 35.23, 0.0, 15.49, 17.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:14:21.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:14:00
2025-09-28T12:14:21.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:14:21.965 [DEBUG] [Thread-124136] [transport.py] [_log()] starting thread (client mode): 0x2e3c3370
2025-09-28T12:14:21.965 [DEBUG] [Thread-124136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:21.985 [DEBUG] [Thread-124136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:14:21.986 [INFO] [Thread-124136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:14:21.988 [DEBUG] [Thread-124136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:21.989 [DEBUG] [Thread-124136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:21.990 [DEBUG] [Thread-124136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:21.990 [DEBUG] [Thread-124136] [transport.py] [_log()] Compression: none
2025-09-28T12:14:21.990 [DEBUG] [Thread-124136] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:22.007 [DEBUG] [Thread-124136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:22.007 [DEBUG] [Thread-124136] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:22.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:14:22.008 [DEBUG] [Thread-124136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:14:22.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:22.010 [DEBUG] [Thread-124136] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:22.010 [DEBUG] [Thread-124136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:22.010 [DEBUG] [Thread-124136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:22.010 [DEBUG] [Thread-124136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:14:22.010 [DEBUG] [Thread-124136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:22.033 [INFO] [Thread-124136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:22.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:22.118 [DEBUG] [Thread-124138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:22.594 [DEBUG] [Thread-124136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:22.594 [DEBUG] [Thread-124136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:22.594 [DEBUG] [Thread-124136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:14:22.635 [DEBUG] [Thread-124136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:22.636 [DEBUG] [Thread-124136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:22.638 [DEBUG] [Thread-124136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:22.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:22.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:14:22.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:14:22.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:14:22.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:22.653 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:14:22.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:22.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426474 -999.00  +18.80  16.39     38   +4.40 1 1 1 1 1   888    0 12.73 -63.23 ----- 14.4 16.4 181.2 18.4 25.6 -26.1 23.9 -31.0 24.2 -23.8 25.6 -26.0
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426474
2025-09-28T12:14:22.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:14:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:14:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:14:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:14:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:14:22.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:14:00', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=15.49, temperature=17.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:14:22.655 [DEBUG] [Thread-124136] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:22.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-28T12:14:22.749 [DEBUG] [Thread-124140] [transport.py] [_log()] starting thread (client mode): 0x30ddc6d0
2025-09-28T12:14:22.749 [DEBUG] [Thread-124140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:22.765 [DEBUG] [Thread-124140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:14:22.765 [INFO] [Thread-124140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:14:22.772 [DEBUG] [Thread-124140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:22.773 [DEBUG] [Thread-124140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:22.774 [DEBUG] [Thread-124140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:22.775 [DEBUG] [Thread-124140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:22.775 [DEBUG] [Thread-124140] [transport.py] [_log()] Compression: none
2025-09-28T12:14:22.775 [DEBUG] [Thread-124140] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:22.832 [DEBUG] [Thread-124140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:22.832 [DEBUG] [Thread-124140] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:22.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:14:22.833 [DEBUG] [Thread-124140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:14:22.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:22.889 [DEBUG] [Thread-124140] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:22.889 [DEBUG] [Thread-124140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:22.889 [DEBUG] [Thread-124140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:22.889 [DEBUG] [Thread-124140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:14:22.889 [DEBUG] [Thread-124140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:22.907 [INFO] [Thread-124140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:22.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-28T12:14:22.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:23.867 [DEBUG] [Thread-124140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:23.868 [DEBUG] [Thread-124140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:23.915 [DEBUG] [Thread-124140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:23.915 [DEBUG] [Thread-124140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:23.925 [DEBUG] [Thread-124140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:23.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:23.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-28T12:14:23.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-28T12:14:23.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:23.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:23.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:23.959 [DEBUG] [Thread-124140] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:33.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:14:33.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:14:33.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-28T12:14:34.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 14), 15.49, 35.23, 0.0, 15.49, 17.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:14:34.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:14:00
2025-09-28T12:14:34.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:14:34.833 [DEBUG] [Thread-124142] [transport.py] [_log()] starting thread (client mode): 0x2b9c04f0
2025-09-28T12:14:34.833 [DEBUG] [Thread-124142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:34.855 [DEBUG] [Thread-124142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:14:34.855 [INFO] [Thread-124142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:14:34.857 [DEBUG] [Thread-124142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:34.858 [DEBUG] [Thread-124142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:34.859 [DEBUG] [Thread-124142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:34.859 [DEBUG] [Thread-124142] [transport.py] [_log()] Compression: none
2025-09-28T12:14:34.859 [DEBUG] [Thread-124142] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:34.878 [DEBUG] [Thread-124142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:34.879 [DEBUG] [Thread-124142] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:34.879 [DEBUG] [Thread-124142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:14:34.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:14:34.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:34.882 [DEBUG] [Thread-124142] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:34.882 [DEBUG] [Thread-124142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:34.882 [DEBUG] [Thread-124142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:34.882 [DEBUG] [Thread-124142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:14:34.883 [DEBUG] [Thread-124142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:34.905 [INFO] [Thread-124142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:34.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:35.666 [DEBUG] [Thread-124142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:35.666 [DEBUG] [Thread-124142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:35.666 [DEBUG] [Thread-124142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:14:35.707 [DEBUG] [Thread-124142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:35.707 [DEBUG] [Thread-124142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:35.710 [DEBUG] [Thread-124142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:35.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:35.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:14:35.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:14:35.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:14:35.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:35.733 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:14:35.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:35.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:14:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426474 -999.00  +18.80  16.39     38   +4.40 1 1 1 1 1   888    0 12.73 -63.23 ----- 14.4 16.4 181.2 18.4 25.6 -26.1 23.9 -31.0 24.2 -23.8 25.6 -26.0
2025-09-28T12:14:35.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:14:35.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:14:35.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426474
2025-09-28T12:14:35.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:14:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:14:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:14:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:14:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:14:35.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:14:00', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=15.49, temperature=17.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:14:35.736 [DEBUG] [Thread-124142] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:35.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-28T12:14:35.840 [DEBUG] [Thread-124145] [transport.py] [_log()] starting thread (client mode): 0x2b9c38b0
2025-09-28T12:14:35.840 [DEBUG] [Thread-124145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:35.857 [DEBUG] [Thread-124145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:14:35.857 [INFO] [Thread-124145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:35.865 [DEBUG] [Thread-124145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] Compression: none
2025-09-28T12:14:35.866 [DEBUG] [Thread-124145] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:35.924 [DEBUG] [Thread-124145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:35.924 [DEBUG] [Thread-124145] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:35.925 [DEBUG] [Thread-124145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:14:35.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:14:35.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:35.983 [DEBUG] [Thread-124145] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:35.984 [DEBUG] [Thread-124145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:35.984 [DEBUG] [Thread-124145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:35.984 [DEBUG] [Thread-124145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:14:35.984 [DEBUG] [Thread-124145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:36.002 [INFO] [Thread-124145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:36.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-28T12:14:36.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:36.978 [DEBUG] [Thread-124145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:36.978 [DEBUG] [Thread-124145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:37.026 [DEBUG] [Thread-124145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:37.026 [DEBUG] [Thread-124145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:37.035 [DEBUG] [Thread-124145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:37.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:37.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-28T12:14:37.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-28T12:14:37.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:37.062 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:37.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:37.070 [DEBUG] [Thread-124145] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:37.173 [DEBUG] [Thread-124147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:44.271 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:44.271 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:14:47.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:14:47.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:14:47.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:14:47.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 14, 32), 15.49, 35.23, 0.0, 14.29, 17.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:14:47.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:14:32
2025-09-28T12:14:47.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:14:47.883 [DEBUG] [Thread-124148] [transport.py] [_log()] starting thread (client mode): 0x2b9c0430
2025-09-28T12:14:47.883 [DEBUG] [Thread-124148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:47.906 [DEBUG] [Thread-124148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:14:47.906 [INFO] [Thread-124148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:14:47.907 [DEBUG] [Thread-124148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:47.907 [DEBUG] [Thread-124148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:47.908 [DEBUG] [Thread-124148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:47.909 [DEBUG] [Thread-124148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:47.909 [DEBUG] [Thread-124148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:47.909 [DEBUG] [Thread-124148] [transport.py] [_log()] Compression: none
2025-09-28T12:14:47.909 [DEBUG] [Thread-124148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:47.919 [DEBUG] [Thread-124148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:47.920 [DEBUG] [Thread-124148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:47.920 [DEBUG] [Thread-124148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:14:47.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:14:47.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:47.922 [DEBUG] [Thread-124148] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:47.923 [DEBUG] [Thread-124148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:47.923 [DEBUG] [Thread-124148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:47.923 [DEBUG] [Thread-124148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:14:47.923 [DEBUG] [Thread-124148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:47.946 [INFO] [Thread-124148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:47.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:48.698 [DEBUG] [Thread-124148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:48.699 [DEBUG] [Thread-124148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:48.699 [DEBUG] [Thread-124148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:14:48.739 [DEBUG] [Thread-124148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:48.739 [DEBUG] [Thread-124148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:48.742 [DEBUG] [Thread-124148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:48.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:48.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:14:48.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:14:48.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:14:48.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:48.762 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:14:48.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426474 -999.00  +18.80  16.39     38   +4.40 1 1 1 1 1   888    0 12.73 -63.23 ----- 14.4 16.4 181.2 18.4 25.6 -26.1 23.9 -31.0 24.2 -23.8 25.6 -26.0
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:14:48.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426474
2025-09-28T12:14:48.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:14:48.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:14:48.764 [DEBUG] [Thread-124148] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:14:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:14:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:14:48.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:14:32', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=14.29, temperature=17.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:07.354', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:14:48.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-28T12:14:48.861 [DEBUG] [Thread-124151] [transport.py] [_log()] starting thread (client mode): 0x2b9ac940
2025-09-28T12:14:48.862 [DEBUG] [Thread-124151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:14:48.876 [DEBUG] [Thread-124151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:14:48.876 [INFO] [Thread-124151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:14:48.884 [DEBUG] [Thread-124151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:14:48.884 [DEBUG] [Thread-124151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] client lang: <none>
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] server lang: <none>
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] kex follows: False
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] Compression: none
2025-09-28T12:14:48.885 [DEBUG] [Thread-124151] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:14:48.943 [DEBUG] [Thread-124151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:14:48.944 [DEBUG] [Thread-124151] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:14:48.944 [DEBUG] [Thread-124151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:14:48.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:14:48.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:14:49.004 [DEBUG] [Thread-124151] [transport.py] [_log()] userauth is OK
2025-09-28T12:14:49.004 [DEBUG] [Thread-124151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:14:49.004 [DEBUG] [Thread-124151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:14:49.004 [DEBUG] [Thread-124151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:14:49.004 [DEBUG] [Thread-124151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:14:49.028 [INFO] [Thread-124151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:14:49.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-28T12:14:49.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:14:50.034 [DEBUG] [Thread-124151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:14:50.035 [DEBUG] [Thread-124151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:14:50.082 [DEBUG] [Thread-124151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:14:50.082 [DEBUG] [Thread-124151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:14:50.091 [DEBUG] [Thread-124151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:14:50.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:14:50.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-28T12:14:50.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-28T12:14:50.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:14:50.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:14:50.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:14:50.127 [DEBUG] [Thread-124151] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:14:52.218 [DEBUG] [Thread-124153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:00.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:15:00.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:15:00.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-28T12:15:00.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 14, 32), 15.49, 35.23, 0.0, 14.29, 17.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:15:00.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:14:32
2025-09-28T12:15:00.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:15:00.959 [DEBUG] [Thread-124154] [transport.py] [_log()] starting thread (client mode): 0x2b9c28c0
2025-09-28T12:15:00.959 [DEBUG] [Thread-124154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:00.980 [DEBUG] [Thread-124154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:15:00.980 [INFO] [Thread-124154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:00.983 [DEBUG] [Thread-124154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] Compression: none
2025-09-28T12:15:00.984 [DEBUG] [Thread-124154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:01.001 [DEBUG] [Thread-124154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:01.002 [DEBUG] [Thread-124154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:01.002 [DEBUG] [Thread-124154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:15:01.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:15:01.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:01.004 [DEBUG] [Thread-124154] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:01.005 [DEBUG] [Thread-124154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:01.005 [DEBUG] [Thread-124154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:01.005 [DEBUG] [Thread-124154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:15:01.005 [DEBUG] [Thread-124154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:01.022 [INFO] [Thread-124154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:01.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:01.607 [DEBUG] [Thread-124154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:01.607 [DEBUG] [Thread-124154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:01.607 [DEBUG] [Thread-124154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:15:01.648 [DEBUG] [Thread-124154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:01.648 [DEBUG] [Thread-124154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:01.650 [DEBUG] [Thread-124154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:01.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:01.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:15:01.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:15:01.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:15:01.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:01.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:15:01.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426821 -999.00  +18.60   9.55     38   +4.30 1 1 1 1 1   888    0 12.22 -56.30 ----- 11.8 9.6 177.4 17.3 25.5 -25.8 23.8 -26.1 24.1 -24.4 25.5 -25.1
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426821
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:15:01.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:14:32', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=14.29, temperature=17.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:15:01.668 [DEBUG] [Thread-124154] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:01.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-28T12:15:01.754 [DEBUG] [Thread-124157] [transport.py] [_log()] starting thread (client mode): 0x2e3c05b0
2025-09-28T12:15:01.754 [DEBUG] [Thread-124157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:01.768 [DEBUG] [Thread-124157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:15:01.768 [INFO] [Thread-124157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:01.776 [DEBUG] [Thread-124157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:01.777 [DEBUG] [Thread-124157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:01.778 [DEBUG] [Thread-124157] [transport.py] [_log()] Compression: none
2025-09-28T12:15:01.778 [DEBUG] [Thread-124157] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:01.836 [DEBUG] [Thread-124157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:01.836 [DEBUG] [Thread-124157] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:01.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:15:01.838 [DEBUG] [Thread-124157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:15:01.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:01.892 [DEBUG] [Thread-124157] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:01.893 [DEBUG] [Thread-124157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:01.893 [DEBUG] [Thread-124157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:01.893 [DEBUG] [Thread-124157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:15:01.893 [DEBUG] [Thread-124157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:01.915 [INFO] [Thread-124157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:01.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-28T12:15:01.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:02.924 [DEBUG] [Thread-124157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:02.924 [DEBUG] [Thread-124157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:02.972 [DEBUG] [Thread-124157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:02.972 [DEBUG] [Thread-124157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:02.981 [DEBUG] [Thread-124157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:02.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:02.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-28T12:15:03.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-28T12:15:03.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:03.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:03.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:03.020 [DEBUG] [Thread-124157] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:07.266 [DEBUG] [Thread-124159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:08.431 [DEBUG] [Thread-124160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:13.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:15:13.020 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:15:13.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-28T12:15:13.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 15, 4), 15.43, 35.37, 0.0, 17.57, 17.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:15:13.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:15:04
2025-09-28T12:15:13.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:15:13.851 [DEBUG] [Thread-124161] [transport.py] [_log()] starting thread (client mode): 0x2b9c3b20
2025-09-28T12:15:13.851 [DEBUG] [Thread-124161] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:13.873 [DEBUG] [Thread-124161] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:15:13.873 [INFO] [Thread-124161] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:15:13.877 [DEBUG] [Thread-124161] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:13.877 [DEBUG] [Thread-124161] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:15:13.877 [DEBUG] [Thread-124161] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:13.877 [DEBUG] [Thread-124161] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] Compression: none
2025-09-28T12:15:13.878 [DEBUG] [Thread-124161] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:13.895 [DEBUG] [Thread-124161] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:13.896 [DEBUG] [Thread-124161] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:13.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:15:13.897 [DEBUG] [Thread-124161] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:15:13.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:13.899 [DEBUG] [Thread-124161] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:13.899 [DEBUG] [Thread-124161] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:13.899 [DEBUG] [Thread-124161] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:13.899 [DEBUG] [Thread-124161] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:15:13.899 [DEBUG] [Thread-124161] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:13.924 [INFO] [Thread-124161] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:13.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:15.424 [DEBUG] [Thread-124161] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:15.424 [DEBUG] [Thread-124161] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:15.424 [DEBUG] [Thread-124161] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:15:15.464 [DEBUG] [Thread-124161] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:15.465 [DEBUG] [Thread-124161] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:15.468 [DEBUG] [Thread-124161] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:15.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:15.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:15:15.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:15:15.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:15:15.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:15.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:15:15.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:15.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:15:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426821 -999.00  +18.60   9.55     38   +4.30 1 1 1 1 1   888    0 12.22 -56.30 ----- 11.8 9.6 177.4 17.3 25.5 -25.8 23.8 -26.1 24.1 -24.4 25.5 -25.1
2025-09-28T12:15:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:15:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:15:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426821
2025-09-28T12:15:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:15:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:15:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:15:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:15:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:15:15.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:15:04', tmtdew=15.43, humidity=35.37, cloud=0.0, wind=17.57, temperature=17.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:15:15.495 [DEBUG] [Thread-124161] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:15.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-28T12:15:15.590 [DEBUG] [Thread-124164] [transport.py] [_log()] starting thread (client mode): 0x2e3c1750
2025-09-28T12:15:15.590 [DEBUG] [Thread-124164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:15.605 [DEBUG] [Thread-124164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:15:15.605 [INFO] [Thread-124164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:15.613 [DEBUG] [Thread-124164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:15.614 [DEBUG] [Thread-124164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:15.614 [DEBUG] [Thread-124164] [transport.py] [_log()] Compression: none
2025-09-28T12:15:15.614 [DEBUG] [Thread-124164] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:15.671 [DEBUG] [Thread-124164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:15.671 [DEBUG] [Thread-124164] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:15.672 [DEBUG] [Thread-124164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:15:15.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:15:15.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:15.727 [DEBUG] [Thread-124164] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:15.727 [DEBUG] [Thread-124164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:15.727 [DEBUG] [Thread-124164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:15.728 [DEBUG] [Thread-124164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:15:15.728 [DEBUG] [Thread-124164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:15.746 [INFO] [Thread-124164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:15.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-28T12:15:15.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:16.722 [DEBUG] [Thread-124164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:16.722 [DEBUG] [Thread-124164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:16.770 [DEBUG] [Thread-124164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:16.770 [DEBUG] [Thread-124164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:16.778 [DEBUG] [Thread-124164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:16.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:16.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T12:15:16.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-28T12:15:16.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:16.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:16.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:16.810 [DEBUG] [Thread-124164] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:22.305 [DEBUG] [Thread-124166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:26.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:15:26.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:15:26.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-28T12:15:27.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 15, 4), 15.43, 35.37, 0.0, 17.57, 17.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:15:27.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:15:04
2025-09-28T12:15:27.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:15:27.633 [DEBUG] [Thread-124167] [transport.py] [_log()] starting thread (client mode): 0x2b98a560
2025-09-28T12:15:27.634 [DEBUG] [Thread-124167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:27.654 [DEBUG] [Thread-124167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:15:27.654 [INFO] [Thread-124167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:15:27.657 [DEBUG] [Thread-124167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:27.657 [DEBUG] [Thread-124167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:15:27.657 [DEBUG] [Thread-124167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] Compression: none
2025-09-28T12:15:27.658 [DEBUG] [Thread-124167] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:27.674 [DEBUG] [Thread-124167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:27.675 [DEBUG] [Thread-124167] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:27.675 [DEBUG] [Thread-124167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:15:27.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:15:27.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:27.677 [DEBUG] [Thread-124167] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:27.678 [DEBUG] [Thread-124167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:27.678 [DEBUG] [Thread-124167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:27.678 [DEBUG] [Thread-124167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:15:27.678 [DEBUG] [Thread-124167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:27.702 [INFO] [Thread-124167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:27.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:28.314 [DEBUG] [Thread-124167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:28.314 [DEBUG] [Thread-124167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:28.315 [DEBUG] [Thread-124167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:15:28.355 [DEBUG] [Thread-124167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:28.355 [DEBUG] [Thread-124167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:28.357 [DEBUG] [Thread-124167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:28.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:28.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:15:28.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:15:28.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:15:28.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:28.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:15:28.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:28.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:15:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.426821 -999.00  +18.60   9.55     38   +4.30 1 1 1 1 1   888    0 12.22 -56.30 ----- 11.8 9.6 177.4 17.3 25.5 -25.8 23.8 -26.1 24.1 -24.4 25.5 -25.1
2025-09-28T12:15:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:15:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:15:28.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.426821
2025-09-28T12:15:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:15:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:15:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:15:28.382 [DEBUG] [Thread-124167] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:28.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:15:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:15:28.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:15:04', tmtdew=15.43, humidity=35.37, cloud=0.0, wind=17.57, temperature=17.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:14:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:15:28.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-28T12:15:28.484 [DEBUG] [Thread-124170] [transport.py] [_log()] starting thread (client mode): 0x2b9c26b0
2025-09-28T12:15:28.484 [DEBUG] [Thread-124170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:28.499 [DEBUG] [Thread-124170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:15:28.499 [INFO] [Thread-124170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] Compression: none
2025-09-28T12:15:28.506 [DEBUG] [Thread-124170] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:28.566 [DEBUG] [Thread-124170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:28.566 [DEBUG] [Thread-124170] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:28.566 [DEBUG] [Thread-124170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:15:28.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:15:28.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:28.623 [DEBUG] [Thread-124170] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:28.623 [DEBUG] [Thread-124170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:28.623 [DEBUG] [Thread-124170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:28.623 [DEBUG] [Thread-124170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:15:28.623 [DEBUG] [Thread-124170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:28.642 [INFO] [Thread-124170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:28.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-28T12:15:28.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:29.607 [DEBUG] [Thread-124170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:29.608 [DEBUG] [Thread-124170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:29.655 [DEBUG] [Thread-124170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:29.656 [DEBUG] [Thread-124170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:29.667 [DEBUG] [Thread-124170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:29.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:29.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-28T12:15:29.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-28T12:15:29.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:29.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:29.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:29.716 [DEBUG] [Thread-124170] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:37.340 [DEBUG] [Thread-124172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:39.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:15:39.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:15:39.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-28T12:15:40.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 15, 36), 15.63, 35.16, 0.0, 11.65, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:15:40.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:15:36
2025-09-28T12:15:40.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:15:40.544 [DEBUG] [Thread-124173] [transport.py] [_log()] starting thread (client mode): 0x2b96d990
2025-09-28T12:15:40.544 [DEBUG] [Thread-124173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:40.566 [DEBUG] [Thread-124173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:15:40.566 [INFO] [Thread-124173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] Compression: none
2025-09-28T12:15:40.569 [DEBUG] [Thread-124173] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:40.586 [DEBUG] [Thread-124173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:40.587 [DEBUG] [Thread-124173] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:40.587 [DEBUG] [Thread-124173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:15:40.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:15:40.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:40.589 [DEBUG] [Thread-124173] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:40.590 [DEBUG] [Thread-124173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:40.590 [DEBUG] [Thread-124173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:40.590 [DEBUG] [Thread-124173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:15:40.590 [DEBUG] [Thread-124173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:40.614 [INFO] [Thread-124173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:40.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:41.204 [DEBUG] [Thread-124173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:41.204 [DEBUG] [Thread-124173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:41.205 [DEBUG] [Thread-124173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:15:41.245 [DEBUG] [Thread-124173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:41.245 [DEBUG] [Thread-124173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:41.248 [DEBUG] [Thread-124173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:41.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:41.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:15:41.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:15:41.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:15:41.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:41.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:15:41.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427169 -999.00  +18.40  11.46     39   +4.20 1 1 1 1 1   888    0 12.55 -52.44 ----- 9.7 11.5 185.0 15.1 25.6 -26.1 23.8 -25.1 24.2 -24.3 25.6 -26.7
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:15:41.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427169
2025-09-28T12:15:41.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:15:41.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:15:41.272 [DEBUG] [Thread-124173] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:41.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:15:41.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:15:41.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:15:41.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:15:36', tmtdew=15.63, humidity=35.16, cloud=0.0, wind=11.65, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:15:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:15:41.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-28T12:15:41.369 [DEBUG] [Thread-124176] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-28T12:15:41.369 [DEBUG] [Thread-124176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:41.382 [DEBUG] [Thread-124176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:15:41.383 [INFO] [Thread-124176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:15:41.390 [DEBUG] [Thread-124176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:41.390 [DEBUG] [Thread-124176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:41.391 [DEBUG] [Thread-124176] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:41.392 [DEBUG] [Thread-124176] [transport.py] [_log()] Compression: none
2025-09-28T12:15:41.393 [DEBUG] [Thread-124176] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:41.448 [DEBUG] [Thread-124176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:41.448 [DEBUG] [Thread-124176] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:41.449 [DEBUG] [Thread-124176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:15:41.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:15:41.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:41.507 [DEBUG] [Thread-124176] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:41.507 [DEBUG] [Thread-124176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:41.508 [DEBUG] [Thread-124176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:41.508 [DEBUG] [Thread-124176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:15:41.508 [DEBUG] [Thread-124176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:41.525 [INFO] [Thread-124176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15: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-28T12:15:41.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:42.472 [DEBUG] [Thread-124176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:42.472 [DEBUG] [Thread-124176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:42.520 [DEBUG] [Thread-124176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:42.520 [DEBUG] [Thread-124176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:42.529 [DEBUG] [Thread-124176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:42.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12: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-28T12: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-28T12:15:42.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:42.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:42.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:42.563 [DEBUG] [Thread-124176] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:44.412 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:44.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:52.366 [DEBUG] [Thread-124178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:15:52.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:15:52.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12: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-28T12:15:53.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 15, 36), 15.63, 35.16, 0.0, 11.65, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:15:53.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:15:36
2025-09-28T12:15:53.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:15:53.444 [DEBUG] [Thread-124179] [transport.py] [_log()] starting thread (client mode): 0x2b9ca5f0
2025-09-28T12:15:53.444 [DEBUG] [Thread-124179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:53.462 [DEBUG] [Thread-124179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:15:53.462 [INFO] [Thread-124179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] Compression: none
2025-09-28T12:15:53.465 [DEBUG] [Thread-124179] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:53.481 [DEBUG] [Thread-124179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:53.482 [DEBUG] [Thread-124179] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:53.482 [DEBUG] [Thread-124179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:15:53.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:15:53.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:53.483 [DEBUG] [Thread-124179] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:53.483 [DEBUG] [Thread-124179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:53.483 [DEBUG] [Thread-124179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:53.483 [DEBUG] [Thread-124179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:15:53.483 [DEBUG] [Thread-124179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:53.492 [INFO] [Thread-124179] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:53.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:54.137 [DEBUG] [Thread-124179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:54.137 [DEBUG] [Thread-124179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:54.137 [DEBUG] [Thread-124179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:15:54.178 [DEBUG] [Thread-124179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:54.178 [DEBUG] [Thread-124179] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:54.180 [DEBUG] [Thread-124179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:54.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:54.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:15:54.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:15:54.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:15:54.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:54.194 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:15:54.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427169 -999.00  +18.40  11.46     39   +4.20 1 1 1 1 1   888    0 12.55 -52.44 ----- 9.7 11.5 185.0 15.1 25.6 -26.1 23.8 -25.1 24.2 -24.3 25.6 -26.7
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427169
2025-09-28T12:15:54.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:15:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:15:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:15:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:15:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:15:54.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:15:36', tmtdew=15.63, humidity=35.16, cloud=0.0, wind=11.65, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:15:07.402', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:15:54.195 [DEBUG] [Thread-124179] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:15:54.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:15:54.287 [DEBUG] [Thread-124182] [transport.py] [_log()] starting thread (client mode): 0x30ddfaf0
2025-09-28T12:15:54.287 [DEBUG] [Thread-124182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:15:54.306 [DEBUG] [Thread-124182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:15:54.306 [INFO] [Thread-124182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] client lang: <none>
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] server lang: <none>
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] kex follows: False
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:15:54.314 [DEBUG] [Thread-124182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:15:54.315 [DEBUG] [Thread-124182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:15:54.315 [DEBUG] [Thread-124182] [transport.py] [_log()] Compression: none
2025-09-28T12:15:54.315 [DEBUG] [Thread-124182] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:15:54.370 [DEBUG] [Thread-124182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:15:54.370 [DEBUG] [Thread-124182] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:15:54.370 [DEBUG] [Thread-124182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:15:54.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:15:54.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:15:54.427 [DEBUG] [Thread-124182] [transport.py] [_log()] userauth is OK
2025-09-28T12:15:54.427 [DEBUG] [Thread-124182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:15:54.427 [DEBUG] [Thread-124182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:15:54.427 [DEBUG] [Thread-124182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:15:54.427 [DEBUG] [Thread-124182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:15:54.445 [INFO] [Thread-124182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:15:54.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-28T12:15:54.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:15:55.420 [DEBUG] [Thread-124182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:15:55.420 [DEBUG] [Thread-124182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:15:55.468 [DEBUG] [Thread-124182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:15:55.468 [DEBUG] [Thread-124182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:15:55.477 [DEBUG] [Thread-124182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:15:55.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:15:55.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-28T12:15:55.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-28T12:15:55.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:15:55.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:15:55.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:15:55.510 [DEBUG] [Thread-124182] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:05.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:16:05.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:16:05.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-28T12:16:06.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 15, 36), 15.63, 35.16, 0.0, 11.65, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:16:06.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:15:36
2025-09-28T12:16:06.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:16:06.339 [DEBUG] [Thread-124184] [transport.py] [_log()] starting thread (client mode): 0x2e374370
2025-09-28T12:16:06.340 [DEBUG] [Thread-124184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:06.355 [DEBUG] [Thread-124184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:16:06.355 [INFO] [Thread-124184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] Compression: none
2025-09-28T12:16:06.357 [DEBUG] [Thread-124184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:06.366 [DEBUG] [Thread-124184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:06.366 [DEBUG] [Thread-124184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:06.366 [DEBUG] [Thread-124184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:16:06.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:16:06.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:06.367 [DEBUG] [Thread-124184] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:06.367 [DEBUG] [Thread-124184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:06.367 [DEBUG] [Thread-124184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:06.367 [DEBUG] [Thread-124184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:16:06.367 [DEBUG] [Thread-124184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:06.378 [INFO] [Thread-124184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:06.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:06.996 [DEBUG] [Thread-124184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:06.997 [DEBUG] [Thread-124184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:06.997 [DEBUG] [Thread-124184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:16:07.037 [DEBUG] [Thread-124184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:07.038 [DEBUG] [Thread-124184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:07.040 [DEBUG] [Thread-124184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:07.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:07.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:16:07.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:16:07.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:16:07.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:07.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:16:07.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427515 -999.00  +18.40  10.86     39   +4.20 1 1 1 1 1   888    0 12.86 -44.32 ----- 15.2 10.9 202.2 14.5 25.7 -24.3 24.1 -27.4 24.3 -23.2 25.7 -24.4
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:16:07.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427515
2025-09-28T12:16:07.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:16:07.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:16:07.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:16:07.068 [DEBUG] [Thread-124184] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:16:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:16:07.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:15:36', tmtdew=15.63, humidity=35.16, cloud=0.0, wind=11.65, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:15:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:16:07.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-28T12:16:07.166 [DEBUG] [Thread-124187] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-28T12:16:07.166 [DEBUG] [Thread-124187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:07.181 [DEBUG] [Thread-124187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:16:07.182 [INFO] [Thread-124187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:07.190 [DEBUG] [Thread-124187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] Compression: none
2025-09-28T12:16:07.191 [DEBUG] [Thread-124187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:07.253 [DEBUG] [Thread-124187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:07.253 [DEBUG] [Thread-124187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:07.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:16:07.254 [DEBUG] [Thread-124187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:16:07.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:07.311 [DEBUG] [Thread-124187] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:07.311 [DEBUG] [Thread-124187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:07.311 [DEBUG] [Thread-124187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:07.311 [DEBUG] [Thread-124187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:16:07.311 [DEBUG] [Thread-124187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:07.333 [INFO] [Thread-124187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:07.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-28T12:16:07.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:07.408 [DEBUG] [Thread-124189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:08.362 [DEBUG] [Thread-124187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:08.363 [DEBUG] [Thread-124187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:08.410 [DEBUG] [Thread-124187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:08.410 [DEBUG] [Thread-124187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:08.419 [DEBUG] [Thread-124187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:08.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:08.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')
2025-09-28T12:16:08.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-28T12:16:08.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:08.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:08.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:08.456 [DEBUG] [Thread-124187] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:08.496 [DEBUG] [Thread-124190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:18.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:16:18.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:16:18.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-28T12:16:19.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 16, 8), 15.7, 34.99, 0.0, 10.46, 17.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:16:19.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:16:08
2025-09-28T12:16:19.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:16:19.272 [DEBUG] [Thread-124191] [transport.py] [_log()] starting thread (client mode): 0x2e3dfb20
2025-09-28T12:16:19.272 [DEBUG] [Thread-124191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:19.299 [DEBUG] [Thread-124191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:16:19.299 [INFO] [Thread-124191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:19.302 [DEBUG] [Thread-124191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] Compression: none
2025-09-28T12:16:19.303 [DEBUG] [Thread-124191] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:19.321 [DEBUG] [Thread-124191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:19.321 [DEBUG] [Thread-124191] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:19.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:16:19.322 [DEBUG] [Thread-124191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:16:19.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:19.324 [DEBUG] [Thread-124191] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:19.325 [DEBUG] [Thread-124191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:19.325 [DEBUG] [Thread-124191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:19.325 [DEBUG] [Thread-124191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:16:19.325 [DEBUG] [Thread-124191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:19.349 [INFO] [Thread-124191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:19.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:19.946 [DEBUG] [Thread-124191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:19.947 [DEBUG] [Thread-124191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:19.947 [DEBUG] [Thread-124191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:16:19.987 [DEBUG] [Thread-124191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:19.987 [DEBUG] [Thread-124191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:19.990 [DEBUG] [Thread-124191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:20.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:20.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:16:20.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:16:20.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:16:20.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:20.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:16:20.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:20.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:20.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427515 -999.00  +18.40  10.86     39   +4.20 1 1 1 1 1   888    0 12.86 -44.32 ----- 15.2 10.9 202.2 14.5 25.7 -24.3 24.1 -27.4 24.3 -23.2 25.7 -24.4
2025-09-28T12:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427515
2025-09-28T12:16:20.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:16:20.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:16:20.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:16:20.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:16:20.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:16:20.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:16:08', tmtdew=15.7, humidity=34.99, cloud=0.0, wind=10.46, temperature=17.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:15:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:16:20.016 [DEBUG] [Thread-124191] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:20.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:16:20.110 [DEBUG] [Thread-124194] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T12:16:20.110 [DEBUG] [Thread-124194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:20.125 [DEBUG] [Thread-124194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:16:20.125 [INFO] [Thread-124194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:20.133 [DEBUG] [Thread-124194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:20.134 [DEBUG] [Thread-124194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:20.134 [DEBUG] [Thread-124194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:20.134 [DEBUG] [Thread-124194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:20.134 [DEBUG] [Thread-124194] [transport.py] [_log()] Compression: none
2025-09-28T12:16:20.134 [DEBUG] [Thread-124194] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:20.191 [DEBUG] [Thread-124194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:20.192 [DEBUG] [Thread-124194] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:20.192 [DEBUG] [Thread-124194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:16:20.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:16:20.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:20.250 [DEBUG] [Thread-124194] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:20.251 [DEBUG] [Thread-124194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:20.251 [DEBUG] [Thread-124194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:20.251 [DEBUG] [Thread-124194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:16:20.251 [DEBUG] [Thread-124194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:20.271 [INFO] [Thread-124194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:20.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-28T12:16:20.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:21.236 [DEBUG] [Thread-124194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:21.236 [DEBUG] [Thread-124194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:21.284 [DEBUG] [Thread-124194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:21.284 [DEBUG] [Thread-124194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:21.294 [DEBUG] [Thread-124194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:21.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:21.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-28T12:16:21.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-28T12:16:21.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:21.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:21.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:21.332 [DEBUG] [Thread-124194] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:22.459 [DEBUG] [Thread-124196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:31.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:16:31.334 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:16:31.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:16:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 16, 8), 15.7, 34.99, 0.0, 10.46, 17.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:16:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:16:08
2025-09-28T12:16:32.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:16:32.187 [DEBUG] [Thread-124197] [transport.py] [_log()] starting thread (client mode): 0x2b9caef0
2025-09-28T12:16:32.187 [DEBUG] [Thread-124197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:32.208 [DEBUG] [Thread-124197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:16:32.208 [INFO] [Thread-124197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] Compression: none
2025-09-28T12:16:32.211 [DEBUG] [Thread-124197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:32.227 [DEBUG] [Thread-124197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:32.227 [DEBUG] [Thread-124197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:32.227 [DEBUG] [Thread-124197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:16:32.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:16:32.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:32.228 [DEBUG] [Thread-124197] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:32.228 [DEBUG] [Thread-124197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:32.228 [DEBUG] [Thread-124197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:32.228 [DEBUG] [Thread-124197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:16:32.228 [DEBUG] [Thread-124197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:32.243 [INFO] [Thread-124197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:32.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:32.877 [DEBUG] [Thread-124197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:32.877 [DEBUG] [Thread-124197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:32.877 [DEBUG] [Thread-124197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:16:32.918 [DEBUG] [Thread-124197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:32.918 [DEBUG] [Thread-124197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:32.920 [DEBUG] [Thread-124197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:32.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:32.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:16:32.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:16:32.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:16:32.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:32.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:16:32.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427515 -999.00  +18.40  10.86     39   +4.20 1 1 1 1 1   888    0 12.86 -44.32 ----- 15.2 10.9 202.2 14.5 25.7 -24.3 24.1 -27.4 24.3 -23.2 25.7 -24.4
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427515
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:16:32.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:16:08', tmtdew=15.7, humidity=34.99, cloud=0.0, wind=10.46, temperature=17.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:15:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:16:32.939 [DEBUG] [Thread-124197] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:33.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-28T12:16:33.021 [DEBUG] [Thread-124200] [transport.py] [_log()] starting thread (client mode): 0x2b9cb2b0
2025-09-28T12:16:33.021 [DEBUG] [Thread-124200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:33.037 [DEBUG] [Thread-124200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:16:33.038 [INFO] [Thread-124200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:16:33.045 [DEBUG] [Thread-124200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:33.045 [DEBUG] [Thread-124200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] Compression: none
2025-09-28T12:16:33.046 [DEBUG] [Thread-124200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:33.102 [DEBUG] [Thread-124200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:33.102 [DEBUG] [Thread-124200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:33.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:16:33.102 [DEBUG] [Thread-124200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:16:33.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:33.158 [DEBUG] [Thread-124200] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:33.158 [DEBUG] [Thread-124200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:33.158 [DEBUG] [Thread-124200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:33.158 [DEBUG] [Thread-124200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:16:33.158 [DEBUG] [Thread-124200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:33.173 [INFO] [Thread-124200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:33.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-28T12:16:33.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:34.149 [DEBUG] [Thread-124200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:34.149 [DEBUG] [Thread-124200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:34.200 [DEBUG] [Thread-124200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:34.200 [DEBUG] [Thread-124200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:34.209 [DEBUG] [Thread-124200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:34.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:34.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-28T12:16:34.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') -> 00000000
2025-09-28T12:16:34.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:34.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:34.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:34.247 [DEBUG] [Thread-124200] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:37.504 [DEBUG] [Thread-124202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:44.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:16:44.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:16:44.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-28T12:16:44.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:44.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 16, 40), 15.58, 35.13, 0.0, 12.49, 17.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:16:44.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:16:40
2025-09-28T12:16:44.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:16:45.087 [DEBUG] [Thread-124203] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-28T12:16:45.087 [DEBUG] [Thread-124203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:45.110 [DEBUG] [Thread-124203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:16:45.110 [INFO] [Thread-124203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:16:45.113 [DEBUG] [Thread-124203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] Compression: none
2025-09-28T12:16:45.114 [DEBUG] [Thread-124203] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:45.130 [DEBUG] [Thread-124203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:45.130 [DEBUG] [Thread-124203] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:45.131 [DEBUG] [Thread-124203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:16:45.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:16:45.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:45.133 [DEBUG] [Thread-124203] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:45.133 [DEBUG] [Thread-124203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:45.133 [DEBUG] [Thread-124203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:45.134 [DEBUG] [Thread-124203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:16:45.134 [DEBUG] [Thread-124203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:45.159 [INFO] [Thread-124203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:45.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:45.817 [DEBUG] [Thread-124203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:45.818 [DEBUG] [Thread-124203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:45.818 [DEBUG] [Thread-124203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:16:45.858 [DEBUG] [Thread-124203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:45.858 [DEBUG] [Thread-124203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:45.861 [DEBUG] [Thread-124203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:45.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:45.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:16:45.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:16:45.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:16:45.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:45.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:16:45.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:45.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427862 -999.00  +18.50  10.05     39   +4.30 1 1 1 1 1   888    0 13.05 -35.33 ----- 12.6 10.1 179.2 14.3 25.7 -25.0 24.0 -27.9 24.3 -23.0 25.8 -25.8
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427862
2025-09-28T12:16:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:16:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:16:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:16:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:16:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:16:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:16:40', tmtdew=15.58, humidity=35.13, cloud=0.0, wind=12.49, temperature=17.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:16:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:16:45.885 [DEBUG] [Thread-124203] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:45.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-28T12:16:45.982 [DEBUG] [Thread-124206] [transport.py] [_log()] starting thread (client mode): 0x30ddebf0
2025-09-28T12:16:45.982 [DEBUG] [Thread-124206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:45.997 [DEBUG] [Thread-124206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:16:45.997 [INFO] [Thread-124206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:16:46.004 [DEBUG] [Thread-124206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:46.004 [DEBUG] [Thread-124206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] Compression: none
2025-09-28T12:16:46.005 [DEBUG] [Thread-124206] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:46.062 [DEBUG] [Thread-124206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:46.063 [DEBUG] [Thread-124206] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:46.063 [DEBUG] [Thread-124206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:16:46.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:16:46.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:46.119 [DEBUG] [Thread-124206] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:46.119 [DEBUG] [Thread-124206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:46.119 [DEBUG] [Thread-124206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:46.119 [DEBUG] [Thread-124206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:16:46.119 [DEBUG] [Thread-124206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:46.137 [INFO] [Thread-124206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:46.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-28T12:16:46.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:47.125 [DEBUG] [Thread-124206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:47.125 [DEBUG] [Thread-124206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:47.173 [DEBUG] [Thread-124206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:47.173 [DEBUG] [Thread-124206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:47.182 [DEBUG] [Thread-124206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:47.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:47.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-28T12:16:47.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-28T12:16:47.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:47.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:47.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:47.215 [DEBUG] [Thread-124206] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:52.532 [DEBUG] [Thread-124208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:16:57.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:16:57.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:16:57.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-28T12:16:57.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 16, 40), 15.58, 35.13, 0.0, 12.49, 17.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:16:57.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:16:40
2025-09-28T12:16:57.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:16:58.043 [DEBUG] [Thread-124209] [transport.py] [_log()] starting thread (client mode): 0x2b9cded0
2025-09-28T12:16:58.043 [DEBUG] [Thread-124209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:58.063 [DEBUG] [Thread-124209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:16:58.063 [INFO] [Thread-124209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] Compression: none
2025-09-28T12:16:58.066 [DEBUG] [Thread-124209] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:58.086 [DEBUG] [Thread-124209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:58.087 [DEBUG] [Thread-124209] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:58.087 [DEBUG] [Thread-124209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:16:58.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:16:58.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:58.089 [DEBUG] [Thread-124209] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:58.089 [DEBUG] [Thread-124209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:58.089 [DEBUG] [Thread-124209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:58.090 [DEBUG] [Thread-124209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:16:58.090 [DEBUG] [Thread-124209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:58.112 [INFO] [Thread-124209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:58.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:16:58.711 [DEBUG] [Thread-124209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:16:58.712 [DEBUG] [Thread-124209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:16:58.712 [DEBUG] [Thread-124209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:16:58.752 [DEBUG] [Thread-124209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:16:58.752 [DEBUG] [Thread-124209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:16:58.755 [DEBUG] [Thread-124209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:16:58.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:16:58.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:16:58.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:16:58.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:16:58.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:16:58.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:16:58.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:16:58.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:16:58.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:16:58.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.427862 -999.00  +18.50  10.05     39   +4.30 1 1 1 1 1   888    0 13.05 -35.33 ----- 12.6 10.1 179.2 14.3 25.7 -25.0 24.0 -27.9 24.3 -23.0 25.8 -25.8
2025-09-28T12:16:58.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:16:58.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:16:58.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.427862
2025-09-28T12:16:58.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:16:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:16:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:16:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:16:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:16:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:16:40', tmtdew=15.58, humidity=35.13, cloud=0.0, wind=12.49, temperature=17.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:16:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:16:58.781 [DEBUG] [Thread-124209] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:16:58.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-28T12:16:58.875 [DEBUG] [Thread-124212] [transport.py] [_log()] starting thread (client mode): 0x2e38e1a0
2025-09-28T12:16:58.875 [DEBUG] [Thread-124212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:16:58.890 [DEBUG] [Thread-124212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:16:58.890 [INFO] [Thread-124212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] client lang: <none>
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] server lang: <none>
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] kex follows: False
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] Compression: none
2025-09-28T12:16:58.898 [DEBUG] [Thread-124212] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:16:58.955 [DEBUG] [Thread-124212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:16:58.955 [DEBUG] [Thread-124212] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:16:58.956 [DEBUG] [Thread-124212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:16:58.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:16:58.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:16:59.010 [DEBUG] [Thread-124212] [transport.py] [_log()] userauth is OK
2025-09-28T12:16:59.010 [DEBUG] [Thread-124212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:16:59.011 [DEBUG] [Thread-124212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:16:59.011 [DEBUG] [Thread-124212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:16:59.011 [DEBUG] [Thread-124212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:16:59.029 [INFO] [Thread-124212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:16:59.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-28T12:16:59.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:00.023 [DEBUG] [Thread-124212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:00.023 [DEBUG] [Thread-124212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:00.071 [DEBUG] [Thread-124212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:00.071 [DEBUG] [Thread-124212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:00.080 [DEBUG] [Thread-124212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:00.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:00.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-28T12:17:00.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') -> 00000000
2025-09-28T12:17:00.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:00.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:00.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:00.115 [DEBUG] [Thread-124212] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:07.577 [DEBUG] [Thread-124214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:08.545 [DEBUG] [Thread-124215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:10.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:17:10.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:17:10.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-28T12:17:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 16, 40), 15.58, 35.13, 0.0, 12.49, 17.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:17:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:16:40
2025-09-28T12:17:10.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:17:10.997 [DEBUG] [Thread-124216] [transport.py] [_log()] starting thread (client mode): 0x2b989780
2025-09-28T12:17:10.997 [DEBUG] [Thread-124216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:11.017 [DEBUG] [Thread-124216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:17:11.017 [INFO] [Thread-124216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:11.020 [DEBUG] [Thread-124216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] Compression: none
2025-09-28T12:17:11.021 [DEBUG] [Thread-124216] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:11.037 [DEBUG] [Thread-124216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:11.037 [DEBUG] [Thread-124216] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:11.037 [DEBUG] [Thread-124216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:17:11.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:17:11.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:11.038 [DEBUG] [Thread-124216] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:11.038 [DEBUG] [Thread-124216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:11.038 [DEBUG] [Thread-124216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:11.038 [DEBUG] [Thread-124216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:17:11.038 [DEBUG] [Thread-124216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:11.050 [INFO] [Thread-124216] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:11.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:11.650 [DEBUG] [Thread-124216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:11.650 [DEBUG] [Thread-124216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:11.650 [DEBUG] [Thread-124216] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:17:11.691 [DEBUG] [Thread-124216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:11.691 [DEBUG] [Thread-124216] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:11.692 [DEBUG] [Thread-124216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:11.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:11.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:17:11.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:17:11.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:17:11.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:11.702 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:17:11.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:11.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:11.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:17:11.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428557 -999.00  +18.70  10.71     39   +4.70 1 1 1 1 1   888    0 13.75 -21.34 ----- 11.7 10.7 174.5 15.6 25.9 -24.9 24.3 -26.1 24.4 -23.4 26.0 -24.1
2025-09-28T12:17:11.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428557
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:17:11.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:16:40', tmtdew=15.58, humidity=35.13, cloud=0.0, wind=12.49, temperature=17.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:07.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:17:11.703 [DEBUG] [Thread-124216] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:11.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-28T12:17:11.789 [DEBUG] [Thread-124219] [transport.py] [_log()] starting thread (client mode): 0x2b98ac50
2025-09-28T12:17:11.789 [DEBUG] [Thread-124219] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:11.806 [DEBUG] [Thread-124219] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:17:11.806 [INFO] [Thread-124219] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:11.813 [DEBUG] [Thread-124219] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:11.814 [DEBUG] [Thread-124219] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:11.814 [DEBUG] [Thread-124219] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:11.814 [DEBUG] [Thread-124219] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:11.814 [DEBUG] [Thread-124219] [transport.py] [_log()] Compression: none
2025-09-28T12:17:11.814 [DEBUG] [Thread-124219] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:11.870 [DEBUG] [Thread-124219] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:11.870 [DEBUG] [Thread-124219] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:11.870 [DEBUG] [Thread-124219] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:17:11.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:17:11.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:11.931 [DEBUG] [Thread-124219] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:11.931 [DEBUG] [Thread-124219] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:11.931 [DEBUG] [Thread-124219] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:11.931 [DEBUG] [Thread-124219] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:17:11.931 [DEBUG] [Thread-124219] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:11.947 [INFO] [Thread-124219] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:11.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-28T12:17:11.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:13.023 [DEBUG] [Thread-124219] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:13.023 [DEBUG] [Thread-124219] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:13.072 [DEBUG] [Thread-124219] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:13.072 [DEBUG] [Thread-124219] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:13.080 [DEBUG] [Thread-124219] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:13.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:13.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-28T12:17:13.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-28T12:17:13.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:13.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:13.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:13.118 [DEBUG] [Thread-124219] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:22.605 [DEBUG] [Thread-124221 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:23.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:17:23.121 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:17:23.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-28T12:17:23.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 17, 12), 15.47, 35.34, 0.0, 9.81, 17.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:17:23.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:17:12
2025-09-28T12:17:23.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:17:23.971 [DEBUG] [Thread-124222] [transport.py] [_log()] starting thread (client mode): 0x2e3751b0
2025-09-28T12:17:23.971 [DEBUG] [Thread-124222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:23.990 [DEBUG] [Thread-124222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:17:23.991 [INFO] [Thread-124222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:23.994 [DEBUG] [Thread-124222] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] Compression: none
2025-09-28T12:17:23.995 [DEBUG] [Thread-124222] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:24.012 [DEBUG] [Thread-124222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:24.012 [DEBUG] [Thread-124222] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:24.013 [DEBUG] [Thread-124222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:17:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:17:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:24.014 [DEBUG] [Thread-124222] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:24.015 [DEBUG] [Thread-124222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:24.015 [DEBUG] [Thread-124222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:24.015 [DEBUG] [Thread-124222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:17:24.015 [DEBUG] [Thread-124222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:24.030 [INFO] [Thread-124222] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:24.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:24.661 [DEBUG] [Thread-124222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:24.662 [DEBUG] [Thread-124222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:24.662 [DEBUG] [Thread-124222] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:17:24.702 [DEBUG] [Thread-124222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:24.703 [DEBUG] [Thread-124222] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:24.705 [DEBUG] [Thread-124222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:24.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:24.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:17:24.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:17:24.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:17:24.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:24.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:17:24.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428557 -999.00  +18.70  10.71     39   +4.70 1 1 1 1 1   888    0 13.75 -21.34 ----- 11.7 10.7 174.5 15.6 25.9 -24.9 24.3 -26.1 24.4 -23.4 26.0 -24.1
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:17:24.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428557
2025-09-28T12:17:24.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:17:24.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:17:24.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:17:24.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:17:24.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:17:24.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:17:12', tmtdew=15.47, humidity=35.34, cloud=0.0, wind=9.81, temperature=17.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:07.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:17:24.725 [DEBUG] [Thread-124222] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:24.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-28T12:17:24.818 [DEBUG] [Thread-124225] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d50
2025-09-28T12:17:24.819 [DEBUG] [Thread-124225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:24.833 [DEBUG] [Thread-124225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:17:24.833 [INFO] [Thread-124225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:17:24.841 [DEBUG] [Thread-124225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:24.841 [DEBUG] [Thread-124225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] Compression: none
2025-09-28T12:17:24.842 [DEBUG] [Thread-124225] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:24.898 [DEBUG] [Thread-124225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:24.898 [DEBUG] [Thread-124225] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:24.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:17:24.899 [DEBUG] [Thread-124225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:17:24.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:24.957 [DEBUG] [Thread-124225] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:24.957 [DEBUG] [Thread-124225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:24.957 [DEBUG] [Thread-124225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:24.957 [DEBUG] [Thread-124225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:17:24.957 [DEBUG] [Thread-124225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:24.974 [INFO] [Thread-124225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:24.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-28T12:17:24.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:26.018 [DEBUG] [Thread-124225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:26.018 [DEBUG] [Thread-124225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:26.066 [DEBUG] [Thread-124225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:26.066 [DEBUG] [Thread-124225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:26.075 [DEBUG] [Thread-124225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:26.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:26.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-28T12:17:26.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-28T12:17:26.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:26.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:26.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:26.109 [DEBUG] [Thread-124225] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:36.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:17:36.105 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:17:36.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-28T12:17:36.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 17, 12), 15.47, 35.34, 0.0, 9.81, 17.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:17:36.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:17:12
2025-09-28T12:17:36.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:17:36.943 [DEBUG] [Thread-124227] [transport.py] [_log()] starting thread (client mode): 0x2e3c3160
2025-09-28T12:17:36.943 [DEBUG] [Thread-124227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:36.963 [DEBUG] [Thread-124227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:17:36.963 [INFO] [Thread-124227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:17:36.966 [DEBUG] [Thread-124227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:36.966 [DEBUG] [Thread-124227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:17:36.966 [DEBUG] [Thread-124227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:36.966 [DEBUG] [Thread-124227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] Compression: none
2025-09-28T12:17:36.967 [DEBUG] [Thread-124227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:36.984 [DEBUG] [Thread-124227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:36.984 [DEBUG] [Thread-124227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:36.984 [DEBUG] [Thread-124227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:17:36.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:17:36.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:37.029 [DEBUG] [Thread-124227] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:37.029 [DEBUG] [Thread-124227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:37.029 [DEBUG] [Thread-124227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:37.029 [DEBUG] [Thread-124227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:17:37.029 [DEBUG] [Thread-124227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:37.049 [INFO] [Thread-124227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:37.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:37.653 [DEBUG] [Thread-124229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:37.684 [DEBUG] [Thread-124227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:37.685 [DEBUG] [Thread-124227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:37.685 [DEBUG] [Thread-124227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:17:37.726 [DEBUG] [Thread-124227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:37.727 [DEBUG] [Thread-124227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:37.729 [DEBUG] [Thread-124227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:37.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:37.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:17:37.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:17:37.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:17:37.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:37.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:17:37.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428557 -999.00  +18.70  10.71     39   +4.70 1 1 1 1 1   888    0 13.75 -21.34 ----- 11.7 10.7 174.5 15.6 25.9 -24.9 24.3 -26.1 24.4 -23.4 26.0 -24.1
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:17:37.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428557
2025-09-28T12:17:37.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:17:37.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:17:37.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:17:37.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:17:37.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:17:37.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:17:12', tmtdew=15.47, humidity=35.34, cloud=0.0, wind=9.81, temperature=17.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:07.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:17:37.753 [DEBUG] [Thread-124227] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:37.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-28T12:17:37.850 [DEBUG] [Thread-124231] [transport.py] [_log()] starting thread (client mode): 0x2b9cbfd0
2025-09-28T12:17:37.850 [DEBUG] [Thread-124231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:37.866 [DEBUG] [Thread-124231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:17:37.867 [INFO] [Thread-124231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:37.876 [DEBUG] [Thread-124231] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] Compression: none
2025-09-28T12:17:37.877 [DEBUG] [Thread-124231] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:37.937 [DEBUG] [Thread-124231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:37.938 [DEBUG] [Thread-124231] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:37.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:17:37.939 [DEBUG] [Thread-124231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:17:37.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:37.994 [DEBUG] [Thread-124231] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:37.994 [DEBUG] [Thread-124231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:37.994 [DEBUG] [Thread-124231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:37.994 [DEBUG] [Thread-124231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:17:37.994 [DEBUG] [Thread-124231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:38.018 [INFO] [Thread-124231] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:38.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-28T12:17:38.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:38.969 [DEBUG] [Thread-124231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:38.969 [DEBUG] [Thread-124231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:39.017 [DEBUG] [Thread-124231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:39.017 [DEBUG] [Thread-124231] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:39.026 [DEBUG] [Thread-124231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:39.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:39.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-28T12:17:39.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-28T12:17:39.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:39.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:39.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:39.062 [DEBUG] [Thread-124231] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:44.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:44.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:17:49.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:17:49.063 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:17:49.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-28T12:17:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 17, 44), 15.08, 36.16, 0.0, 8.59, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:17:49.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:17:44
2025-09-28T12:17:49.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:17:49.885 [DEBUG] [Thread-124233] [transport.py] [_log()] starting thread (client mode): 0x2b9cbee0
2025-09-28T12:17:49.885 [DEBUG] [Thread-124233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:49.908 [DEBUG] [Thread-124233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:17:49.908 [INFO] [Thread-124233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:17:49.911 [DEBUG] [Thread-124233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] Compression: none
2025-09-28T12:17:49.912 [DEBUG] [Thread-124233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:49.929 [DEBUG] [Thread-124233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:49.929 [DEBUG] [Thread-124233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:49.930 [DEBUG] [Thread-124233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:17:49.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:17:49.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:49.932 [DEBUG] [Thread-124233] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:49.932 [DEBUG] [Thread-124233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:49.932 [DEBUG] [Thread-124233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:49.932 [DEBUG] [Thread-124233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:17:49.933 [DEBUG] [Thread-124233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:49.949 [INFO] [Thread-124233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:49.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:50.566 [DEBUG] [Thread-124233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:50.566 [DEBUG] [Thread-124233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:50.566 [DEBUG] [Thread-124233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:17:50.606 [DEBUG] [Thread-124233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:50.607 [DEBUG] [Thread-124233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:50.610 [DEBUG] [Thread-124233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:50.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:50.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:17:50.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:17:50.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:17:50.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:50.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:17:50.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:50.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:50.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:17:50.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428904 -999.00  +18.70   8.70     39   +4.80 1 1 1 1 1   888    0 13.74 -16.68 ----- 6.5 8.7 172.8 11.6 26.0 -24.5 24.4 -26.0 24.6 -23.3 26.1 -24.0
2025-09-28T12:17:50.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:17:50.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:17:50.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428904
2025-09-28T12:17:50.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:17:50.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:17:50.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:17:50.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:17:50.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:17:50.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:17:44', tmtdew=15.08, humidity=36.16, cloud=0.0, wind=8.59, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:17:50.635 [DEBUG] [Thread-124233] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:50.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-28T12:17:50.741 [DEBUG] [Thread-124236] [transport.py] [_log()] starting thread (client mode): 0x2b9cabf0
2025-09-28T12:17:50.741 [DEBUG] [Thread-124236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:17:50.758 [DEBUG] [Thread-124236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:17:50.758 [INFO] [Thread-124236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:17:50.769 [DEBUG] [Thread-124236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] client lang: <none>
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] server lang: <none>
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] kex follows: False
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:17:50.770 [DEBUG] [Thread-124236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:17:50.771 [DEBUG] [Thread-124236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:17:50.771 [DEBUG] [Thread-124236] [transport.py] [_log()] Compression: none
2025-09-28T12:17:50.771 [DEBUG] [Thread-124236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:17:50.829 [DEBUG] [Thread-124236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:17:50.829 [DEBUG] [Thread-124236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:17:50.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:17:50.830 [DEBUG] [Thread-124236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:17:50.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:17:50.894 [DEBUG] [Thread-124236] [transport.py] [_log()] userauth is OK
2025-09-28T12:17:50.894 [DEBUG] [Thread-124236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:17:50.894 [DEBUG] [Thread-124236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:17:50.894 [DEBUG] [Thread-124236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:17:50.894 [DEBUG] [Thread-124236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:17:50.917 [INFO] [Thread-124236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:17:50.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:17:50.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:17:51.893 [DEBUG] [Thread-124236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:17:51.894 [DEBUG] [Thread-124236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:17:51.941 [DEBUG] [Thread-124236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:17:51.941 [DEBUG] [Thread-124236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:17:51.950 [DEBUG] [Thread-124236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:17:51.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:17:51.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-28T12:17:51.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-28T12:17:51.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:17:51.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:17:51.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:17:51.984 [DEBUG] [Thread-124236] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:17:52.687 [DEBUG] [Thread-124238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:18:01.987 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:18:01.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-28T12:18:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 17, 44), 15.08, 36.16, 0.0, 8.59, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:18:02.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:17:44
2025-09-28T12:18:02.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:18:02.829 [DEBUG] [Thread-124239] [transport.py] [_log()] starting thread (client mode): 0x2e3c1510
2025-09-28T12:18:02.829 [DEBUG] [Thread-124239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:02.848 [DEBUG] [Thread-124239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:18:02.848 [INFO] [Thread-124239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] Compression: none
2025-09-28T12:18:02.852 [DEBUG] [Thread-124239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:02.867 [DEBUG] [Thread-124239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:02.868 [DEBUG] [Thread-124239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:02.868 [DEBUG] [Thread-124239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:18:02.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:18:02.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:02.869 [DEBUG] [Thread-124239] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:02.869 [DEBUG] [Thread-124239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:02.869 [DEBUG] [Thread-124239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:02.869 [DEBUG] [Thread-124239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:18:02.869 [DEBUG] [Thread-124239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:02.898 [INFO] [Thread-124239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:02.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:03.534 [DEBUG] [Thread-124239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:03.535 [DEBUG] [Thread-124239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:03.535 [DEBUG] [Thread-124239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:18:03.575 [DEBUG] [Thread-124239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:03.576 [DEBUG] [Thread-124239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:03.578 [DEBUG] [Thread-124239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:03.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:03.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:18:03.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:18:03.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:18:03.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:03.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:18:03.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:03.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:03.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:18:03.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428904 -999.00  +18.70   8.70     39   +4.80 1 1 1 1 1   888    0 13.74 -16.68 ----- 6.5 8.7 172.8 11.6 26.0 -24.5 24.4 -26.0 24.6 -23.3 26.1 -24.0
2025-09-28T12:18:03.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:18:03.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:18:03.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428904
2025-09-28T12:18:03.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:18:03.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:18:03.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:18:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:18:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:18:03.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:17:44', tmtdew=15.08, humidity=36.16, cloud=0.0, wind=8.59, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:18:03.605 [DEBUG] [Thread-124239] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:03.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-28T12:18:03.703 [DEBUG] [Thread-124242] [transport.py] [_log()] starting thread (client mode): 0x2e3f8940
2025-09-28T12:18:03.703 [DEBUG] [Thread-124242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:03.718 [DEBUG] [Thread-124242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:18:03.719 [INFO] [Thread-124242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:18:03.726 [DEBUG] [Thread-124242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:03.726 [DEBUG] [Thread-124242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:18:03.726 [DEBUG] [Thread-124242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:03.727 [DEBUG] [Thread-124242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] Compression: none
2025-09-28T12:18:03.728 [DEBUG] [Thread-124242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:03.791 [DEBUG] [Thread-124242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:03.791 [DEBUG] [Thread-124242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:03.792 [DEBUG] [Thread-124242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:18:03.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:18:03.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:03.846 [DEBUG] [Thread-124242] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:03.846 [DEBUG] [Thread-124242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:03.846 [DEBUG] [Thread-124242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:03.846 [DEBUG] [Thread-124242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:18:03.846 [DEBUG] [Thread-124242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:03.867 [INFO] [Thread-124242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:03.867 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:18:03.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:04.859 [DEBUG] [Thread-124242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:04.860 [DEBUG] [Thread-124242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:04.907 [DEBUG] [Thread-124242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:04.907 [DEBUG] [Thread-124242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:04.916 [DEBUG] [Thread-124242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:04.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:04.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-28T12:18:04.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-28T12:18:04.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:04.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:04.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:04.952 [DEBUG] [Thread-124242] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:07.730 [DEBUG] [Thread-124244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:08.596 [DEBUG] [Thread-124245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:14.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:18:14.955 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:18:14.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-28T12:18:15.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 17, 44), 15.08, 36.16, 0.0, 8.59, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:18:15.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:17:44
2025-09-28T12:18:15.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:18:15.782 [DEBUG] [Thread-124246] [transport.py] [_log()] starting thread (client mode): 0x2b9cba00
2025-09-28T12:18:15.782 [DEBUG] [Thread-124246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:15.802 [DEBUG] [Thread-124246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:18:15.802 [INFO] [Thread-124246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:18:15.805 [DEBUG] [Thread-124246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] Compression: none
2025-09-28T12:18:15.806 [DEBUG] [Thread-124246] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:15.822 [DEBUG] [Thread-124246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:15.822 [DEBUG] [Thread-124246] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:15.823 [DEBUG] [Thread-124246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:18:15.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:18:15.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:15.825 [DEBUG] [Thread-124246] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:15.825 [DEBUG] [Thread-124246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:15.825 [DEBUG] [Thread-124246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:15.825 [DEBUG] [Thread-124246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:18:15.825 [DEBUG] [Thread-124246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:15.843 [INFO] [Thread-124246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:15.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:16.480 [DEBUG] [Thread-124246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:16.480 [DEBUG] [Thread-124246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:16.480 [DEBUG] [Thread-124246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:18:16.521 [DEBUG] [Thread-124246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:16.521 [DEBUG] [Thread-124246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:16.523 [DEBUG] [Thread-124246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:16.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:16.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:18:16.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:18:16.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:18:16.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:16.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:18:16.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.428904 -999.00  +18.70   8.70     39   +4.80 1 1 1 1 1   888    0 13.74 -16.68 ----- 6.5 8.7 172.8 11.6 26.0 -24.5 24.4 -26.0 24.6 -23.3 26.1 -24.0
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.428904
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:18:16.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:18:16.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:17:44', tmtdew=15.08, humidity=36.16, cloud=0.0, wind=8.59, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:17:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:18:16.542 [DEBUG] [Thread-124246] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:16.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-28T12:18:16.625 [DEBUG] [Thread-124249] [transport.py] [_log()] starting thread (client mode): 0x2b9caaa0
2025-09-28T12:18:16.626 [DEBUG] [Thread-124249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:16.642 [DEBUG] [Thread-124249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:18:16.643 [INFO] [Thread-124249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:16.650 [DEBUG] [Thread-124249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:16.651 [DEBUG] [Thread-124249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:16.651 [DEBUG] [Thread-124249] [transport.py] [_log()] Compression: none
2025-09-28T12:18:16.651 [DEBUG] [Thread-124249] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:16.709 [DEBUG] [Thread-124249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:16.709 [DEBUG] [Thread-124249] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:16.710 [DEBUG] [Thread-124249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:18:16.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:18:16.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:16.765 [DEBUG] [Thread-124249] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:16.766 [DEBUG] [Thread-124249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:16.766 [DEBUG] [Thread-124249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:16.766 [DEBUG] [Thread-124249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:18:16.766 [DEBUG] [Thread-124249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:16.780 [INFO] [Thread-124249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:16.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-28T12:18:16.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:17.820 [DEBUG] [Thread-124249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:17.820 [DEBUG] [Thread-124249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:17.868 [DEBUG] [Thread-124249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:17.868 [DEBUG] [Thread-124249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:17.876 [DEBUG] [Thread-124249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:17.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:17.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-28T12:18:17.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') -> 00000000
2025-09-28T12:18:17.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:17.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:17.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:17.908 [DEBUG] [Thread-124249] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:22.760 [DEBUG] [Thread-124251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:27.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:18:27.911 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:18:27.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-28T12:18:28.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 18, 16), 14.9, 36.64, 0.0, 11.24, 17.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:18:28.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:18:16
2025-09-28T12:18:28.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:18:28.739 [DEBUG] [Thread-124252] [transport.py] [_log()] starting thread (client mode): 0x2e348280
2025-09-28T12:18:28.739 [DEBUG] [Thread-124252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:28.759 [DEBUG] [Thread-124252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:18:28.759 [INFO] [Thread-124252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] Compression: none
2025-09-28T12:18:28.762 [DEBUG] [Thread-124252] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:28.778 [DEBUG] [Thread-124252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:28.779 [DEBUG] [Thread-124252] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:28.779 [DEBUG] [Thread-124252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:18:28.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:18:28.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:28.781 [DEBUG] [Thread-124252] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:28.781 [DEBUG] [Thread-124252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:28.781 [DEBUG] [Thread-124252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:28.781 [DEBUG] [Thread-124252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:18:28.782 [DEBUG] [Thread-124252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:28.804 [INFO] [Thread-124252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:28.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:29.432 [DEBUG] [Thread-124252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:29.432 [DEBUG] [Thread-124252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:29.433 [DEBUG] [Thread-124252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:18:29.473 [DEBUG] [Thread-124252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:29.474 [DEBUG] [Thread-124252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:29.477 [DEBUG] [Thread-124252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:29.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:29.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:18:29.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:18:29.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:18:29.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:29.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:18:29.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:29.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:29.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:18:29.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429251 -999.00  +18.80   4.04     40   +5.00 1 1 1 1 1   888    0 13.60 -11.99 ----- 2.1 4.0 178.4 10.7 26.1 -24.5 24.7 -23.8 24.7 -23.4 26.2 -24.2
2025-09-28T12:18:29.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:18:29.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:18:29.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429251
2025-09-28T12:18:29.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:18:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:18:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:18:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:18:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:18:29.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:18:16', tmtdew=14.9, humidity=36.64, cloud=0.0, wind=11.24, temperature=17.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:18:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:18:29.502 [DEBUG] [Thread-124252] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:29.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-28T12:18:29.598 [DEBUG] [Thread-124255] [transport.py] [_log()] starting thread (client mode): 0x2b9cb3d0
2025-09-28T12:18:29.598 [DEBUG] [Thread-124255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:29.613 [DEBUG] [Thread-124255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:18:29.613 [INFO] [Thread-124255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:18:29.621 [DEBUG] [Thread-124255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] Compression: none
2025-09-28T12:18:29.622 [DEBUG] [Thread-124255] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:29.678 [DEBUG] [Thread-124255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:29.678 [DEBUG] [Thread-124255] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:29.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:18:29.679 [DEBUG] [Thread-124255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:18:29.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:29.734 [DEBUG] [Thread-124255] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:29.734 [DEBUG] [Thread-124255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:29.734 [DEBUG] [Thread-124255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:29.734 [DEBUG] [Thread-124255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:18:29.734 [DEBUG] [Thread-124255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:29.754 [INFO] [Thread-124255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:29.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-28T12:18:29.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:30.716 [DEBUG] [Thread-124255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:30.717 [DEBUG] [Thread-124255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:30.764 [DEBUG] [Thread-124255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:30.764 [DEBUG] [Thread-124255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:30.773 [DEBUG] [Thread-124255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:30.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:30.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-28T12:18:30.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-28T12:18:30.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:30.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:30.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:30.808 [DEBUG] [Thread-124255] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:37.791 [DEBUG] [Thread-124257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:40.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:18:40.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:18:40.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-28T12:18:41.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 18, 16), 14.9, 36.64, 0.0, 11.24, 17.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:18:41.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:18:16
2025-09-28T12:18:41.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:18:41.638 [DEBUG] [Thread-124258] [transport.py] [_log()] starting thread (client mode): 0x2e3c16f0
2025-09-28T12:18:41.638 [DEBUG] [Thread-124258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:41.661 [DEBUG] [Thread-124258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:18:41.661 [INFO] [Thread-124258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:18:41.662 [DEBUG] [Thread-124258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:41.662 [DEBUG] [Thread-124258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:18:41.662 [DEBUG] [Thread-124258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] Compression: none
2025-09-28T12:18:41.663 [DEBUG] [Thread-124258] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:41.680 [DEBUG] [Thread-124258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:41.680 [DEBUG] [Thread-124258] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:41.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:18:41.682 [DEBUG] [Thread-124258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:18:41.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:41.683 [DEBUG] [Thread-124258] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:41.684 [DEBUG] [Thread-124258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:41.684 [DEBUG] [Thread-124258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:41.684 [DEBUG] [Thread-124258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:18:41.684 [DEBUG] [Thread-124258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:41.706 [INFO] [Thread-124258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:41.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:42.339 [DEBUG] [Thread-124258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:42.339 [DEBUG] [Thread-124258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:42.340 [DEBUG] [Thread-124258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:18:42.380 [DEBUG] [Thread-124258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:42.380 [DEBUG] [Thread-124258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:42.383 [DEBUG] [Thread-124258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:42.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:42.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:18:42.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:18:42.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:18:42.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:42.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:18:42.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429251 -999.00  +18.80   4.04     40   +5.00 1 1 1 1 1   888    0 13.60 -11.99 ----- 2.1 4.0 178.4 10.7 26.1 -24.5 24.7 -23.8 24.7 -23.4 26.2 -24.2
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:18:42.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429251
2025-09-28T12:18:42.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:18:42.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:18:42.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:18:42.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:18:42.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:18:42.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:18:16', tmtdew=14.9, humidity=36.64, cloud=0.0, wind=11.24, temperature=17.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:18:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:18:42.409 [DEBUG] [Thread-124258] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:42.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-28T12:18:42.505 [DEBUG] [Thread-124261] [transport.py] [_log()] starting thread (client mode): 0x2e38cbb0
2025-09-28T12:18:42.505 [DEBUG] [Thread-124261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:42.520 [DEBUG] [Thread-124261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:18:42.520 [INFO] [Thread-124261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:18:42.527 [DEBUG] [Thread-124261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:42.528 [DEBUG] [Thread-124261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:42.529 [DEBUG] [Thread-124261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:42.530 [DEBUG] [Thread-124261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:42.530 [DEBUG] [Thread-124261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:42.530 [DEBUG] [Thread-124261] [transport.py] [_log()] Compression: none
2025-09-28T12:18:42.530 [DEBUG] [Thread-124261] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:42.586 [DEBUG] [Thread-124261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:42.586 [DEBUG] [Thread-124261] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:42.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:18:42.587 [DEBUG] [Thread-124261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:18:42.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:42.641 [DEBUG] [Thread-124261] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:42.642 [DEBUG] [Thread-124261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:42.642 [DEBUG] [Thread-124261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:42.642 [DEBUG] [Thread-124261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:18:42.642 [DEBUG] [Thread-124261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:42.662 [INFO] [Thread-124261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:42.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-28T12:18:42.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:43.629 [DEBUG] [Thread-124261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:43.629 [DEBUG] [Thread-124261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:43.677 [DEBUG] [Thread-124261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:43.677 [DEBUG] [Thread-124261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:43.685 [DEBUG] [Thread-124261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:43.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:43.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-28T12:18:43.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-28T12:18:43.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:43.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:43.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:43.717 [DEBUG] [Thread-124261] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:44.838 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:44.839 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:52.839 [DEBUG] [Thread-124263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:18:53.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:18:53.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:18:53.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-28T12:18:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 18, 48), 14.79, 37.33, 0.0, 11.29, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:18:54.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:18:48
2025-09-28T12:18:54.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:18:54.539 [DEBUG] [Thread-124264] [transport.py] [_log()] starting thread (client mode): 0x2e3f9930
2025-09-28T12:18:54.539 [DEBUG] [Thread-124264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:54.558 [DEBUG] [Thread-124264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:18:54.558 [INFO] [Thread-124264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:54.560 [DEBUG] [Thread-124264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:54.561 [DEBUG] [Thread-124264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:54.561 [DEBUG] [Thread-124264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:54.561 [DEBUG] [Thread-124264] [transport.py] [_log()] Compression: none
2025-09-28T12:18:54.561 [DEBUG] [Thread-124264] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:54.581 [DEBUG] [Thread-124264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:54.581 [DEBUG] [Thread-124264] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:54.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:18:54.582 [DEBUG] [Thread-124264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:18:54.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:54.584 [DEBUG] [Thread-124264] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:54.584 [DEBUG] [Thread-124264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:54.584 [DEBUG] [Thread-124264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:54.584 [DEBUG] [Thread-124264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:18:54.584 [DEBUG] [Thread-124264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:54.619 [INFO] [Thread-124264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:54.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:55.159 [DEBUG] [Thread-124264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:55.159 [DEBUG] [Thread-124264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:55.160 [DEBUG] [Thread-124264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:18:55.200 [DEBUG] [Thread-124264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:55.200 [DEBUG] [Thread-124264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:55.203 [DEBUG] [Thread-124264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:55.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:55.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:18:55.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:18:55.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:18:55.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:55.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:18:55.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:55.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429598 -999.00  +18.90   8.46     40   +5.00 1 1 1 1 1   888    0 13.83 -6.45 ----- 8.0 8.5 196.8 10.3 26.1 -25.5 24.6 -24.3 24.8 -23.6 26.2 -25.3
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429598
2025-09-28T12:18:55.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:18:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:18:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:18:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:18:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:18:55.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:18:48', tmtdew=14.79, humidity=37.33, cloud=0.0, wind=11.29, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:18:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:18:55.226 [DEBUG] [Thread-124264] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:18:55.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-28T12:18:55.320 [DEBUG] [Thread-124267] [transport.py] [_log()] starting thread (client mode): 0x2e3c1480
2025-09-28T12:18:55.320 [DEBUG] [Thread-124267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:18:55.334 [DEBUG] [Thread-124267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:18:55.334 [INFO] [Thread-124267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:18:55.342 [DEBUG] [Thread-124267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:18:55.342 [DEBUG] [Thread-124267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:18:55.342 [DEBUG] [Thread-124267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] client lang: <none>
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] server lang: <none>
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] kex follows: False
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] Compression: none
2025-09-28T12:18:55.343 [DEBUG] [Thread-124267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:18:55.401 [DEBUG] [Thread-124267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:18:55.402 [DEBUG] [Thread-124267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:18:55.402 [DEBUG] [Thread-124267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:18:55.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:18:55.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:18:55.457 [DEBUG] [Thread-124267] [transport.py] [_log()] userauth is OK
2025-09-28T12:18:55.457 [DEBUG] [Thread-124267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:18:55.458 [DEBUG] [Thread-124267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:18:55.458 [DEBUG] [Thread-124267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:18:55.458 [DEBUG] [Thread-124267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:18:55.476 [INFO] [Thread-124267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:18:55.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:18:55.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:18:56.419 [DEBUG] [Thread-124267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:18:56.420 [DEBUG] [Thread-124267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:18:56.467 [DEBUG] [Thread-124267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:18:56.467 [DEBUG] [Thread-124267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:18:56.476 [DEBUG] [Thread-124267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:18:56.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:18:56.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-28T12:18:56.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-28T12:18:56.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:18:56.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:18:56.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:18:56.511 [DEBUG] [Thread-124267] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:06.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:19:06.514 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:19:06.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-28T12:19:07.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 18, 48), 14.79, 37.33, 0.0, 11.29, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:19:07.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:18:48
2025-09-28T12:19:07.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:19:07.325 [DEBUG] [Thread-124269] [transport.py] [_log()] starting thread (client mode): 0x2b9dc2e0
2025-09-28T12:19:07.326 [DEBUG] [Thread-124269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:07.344 [DEBUG] [Thread-124269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:19:07.344 [INFO] [Thread-124269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:07.348 [DEBUG] [Thread-124269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:07.349 [DEBUG] [Thread-124269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:07.349 [DEBUG] [Thread-124269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:07.349 [DEBUG] [Thread-124269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:07.349 [DEBUG] [Thread-124269] [transport.py] [_log()] Compression: none
2025-09-28T12:19:07.349 [DEBUG] [Thread-124269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:07.365 [DEBUG] [Thread-124269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:07.366 [DEBUG] [Thread-124269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:07.366 [DEBUG] [Thread-124269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:19:07.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:19:07.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:07.368 [DEBUG] [Thread-124269] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:07.368 [DEBUG] [Thread-124269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:07.368 [DEBUG] [Thread-124269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:07.368 [DEBUG] [Thread-124269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:19:07.368 [DEBUG] [Thread-124269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:07.393 [INFO] [Thread-124269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:07.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:07.868 [DEBUG] [Thread-124271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:08.013 [DEBUG] [Thread-124269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:08.013 [DEBUG] [Thread-124269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:08.013 [DEBUG] [Thread-124269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:19:08.054 [DEBUG] [Thread-124269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:08.055 [DEBUG] [Thread-124269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:08.057 [DEBUG] [Thread-124269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:08.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:08.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:19:08.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:19:08.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:19:08.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:08.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:19:08.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:08.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:08.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:19:08.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429598 -999.00  +18.90   8.46     40   +5.00 1 1 1 1 1   888    0 13.83 -6.45 ----- 8.0 8.5 196.8 10.3 26.1 -25.5 24.6 -24.3 24.8 -23.6 26.2 -25.3
2025-09-28T12:19:08.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:19:08.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:19:08.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429598
2025-09-28T12:19:08.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:19:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:19:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:19:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:19:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:19:08.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:18:48', tmtdew=14.79, humidity=37.33, cloud=0.0, wind=11.29, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:18:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:19:08.083 [DEBUG] [Thread-124269] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:08.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-28T12:19:08.178 [DEBUG] [Thread-124273] [transport.py] [_log()] starting thread (client mode): 0x2b9ace20
2025-09-28T12:19:08.179 [DEBUG] [Thread-124273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:08.194 [DEBUG] [Thread-124273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:19:08.194 [INFO] [Thread-124273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:19:08.202 [DEBUG] [Thread-124273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] Compression: none
2025-09-28T12:19:08.203 [DEBUG] [Thread-124273] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:08.268 [DEBUG] [Thread-124273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:08.268 [DEBUG] [Thread-124273] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:08.268 [DEBUG] [Thread-124273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:19:08.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:19:08.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:08.333 [DEBUG] [Thread-124273] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:08.333 [DEBUG] [Thread-124273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:08.333 [DEBUG] [Thread-124273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:08.333 [DEBUG] [Thread-124273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:19:08.333 [DEBUG] [Thread-124273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:08.353 [INFO] [Thread-124273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:08.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-28T12:19:08.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:08.658 [DEBUG] [Thread-124275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:09.298 [DEBUG] [Thread-124273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:09.299 [DEBUG] [Thread-124273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:09.346 [DEBUG] [Thread-124273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:09.346 [DEBUG] [Thread-124273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:09.355 [DEBUG] [Thread-124273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:09.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:09.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-28T12:19:09.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-28T12:19:09.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:09.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:09.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:09.390 [DEBUG] [Thread-124273] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:19.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:19:19.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:19:19.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-28T12:19:19.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 18, 48), 14.79, 37.33, 0.0, 11.29, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:19:19.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:18:48
2025-09-28T12:19:20.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:19:20.200 [DEBUG] [Thread-124276] [transport.py] [_log()] starting thread (client mode): 0x2b9f39d0
2025-09-28T12:19:20.200 [DEBUG] [Thread-124276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:20.220 [DEBUG] [Thread-124276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:19:20.220 [INFO] [Thread-124276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:20.223 [DEBUG] [Thread-124276] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] Compression: none
2025-09-28T12:19:20.224 [DEBUG] [Thread-124276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:20.243 [DEBUG] [Thread-124276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:20.243 [DEBUG] [Thread-124276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:20.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:19:20.243 [DEBUG] [Thread-124276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:19:20.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:20.244 [DEBUG] [Thread-124276] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:20.244 [DEBUG] [Thread-124276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:20.244 [DEBUG] [Thread-124276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:20.244 [DEBUG] [Thread-124276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:19:20.244 [DEBUG] [Thread-124276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:20.261 [INFO] [Thread-124276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:20.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:20.892 [DEBUG] [Thread-124276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:20.892 [DEBUG] [Thread-124276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:20.893 [DEBUG] [Thread-124276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:19:20.933 [DEBUG] [Thread-124276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:20.933 [DEBUG] [Thread-124276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:20.935 [DEBUG] [Thread-124276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:20.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:20.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:19:20.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:19:20.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:19:20.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:20.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:19:20.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429598 -999.00  +18.90   8.46     40   +5.00 1 1 1 1 1   888    0 13.83 -6.45 ----- 8.0 8.5 196.8 10.3 26.1 -25.5 24.6 -24.3 24.8 -23.6 26.2 -25.3
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429598
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:19:20.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:18:48', tmtdew=14.79, humidity=37.33, cloud=0.0, wind=11.29, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:18:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:19:20.954 [DEBUG] [Thread-124276] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:21.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-28T12:19:21.039 [DEBUG] [Thread-124279] [transport.py] [_log()] starting thread (client mode): 0x2b9ad120
2025-09-28T12:19:21.039 [DEBUG] [Thread-124279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:21.054 [DEBUG] [Thread-124279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:19:21.054 [INFO] [Thread-124279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:21.062 [DEBUG] [Thread-124279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:21.063 [DEBUG] [Thread-124279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:21.063 [DEBUG] [Thread-124279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:21.063 [DEBUG] [Thread-124279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:21.063 [DEBUG] [Thread-124279] [transport.py] [_log()] Compression: none
2025-09-28T12:19:21.063 [DEBUG] [Thread-124279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:21.120 [DEBUG] [Thread-124279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:21.120 [DEBUG] [Thread-124279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:21.120 [DEBUG] [Thread-124279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:19:21.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:19:21.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:21.180 [DEBUG] [Thread-124279] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:21.180 [DEBUG] [Thread-124279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:21.180 [DEBUG] [Thread-124279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:21.180 [DEBUG] [Thread-124279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:19:21.180 [DEBUG] [Thread-124279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:21.198 [INFO] [Thread-124279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:21.198 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:19:21.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:22.184 [DEBUG] [Thread-124279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:22.184 [DEBUG] [Thread-124279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:22.232 [DEBUG] [Thread-124279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:22.233 [DEBUG] [Thread-124279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:22.242 [DEBUG] [Thread-124279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:22.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:22.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-28T12:19: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-28T12:19:22.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:22.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:22.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:22.281 [DEBUG] [Thread-124279] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:22.909 [DEBUG] [Thread-124281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:32.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:19:32.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:19:32.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-28T12:19:32.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 19, 20), 14.72, 37.47, 0.0, 8.81, 17.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:19:32.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:19:20
2025-09-28T12:19:32.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:19:33.103 [DEBUG] [Thread-124282] [transport.py] [_log()] starting thread (client mode): 0x2e3c1870
2025-09-28T12:19:33.103 [DEBUG] [Thread-124282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:33.123 [DEBUG] [Thread-124282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:19:33.123 [INFO] [Thread-124282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:33.127 [DEBUG] [Thread-124282] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] Compression: none
2025-09-28T12:19:33.128 [DEBUG] [Thread-124282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:33.146 [DEBUG] [Thread-124282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:33.146 [DEBUG] [Thread-124282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:33.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:19:33.147 [DEBUG] [Thread-124282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:19:33.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:33.149 [DEBUG] [Thread-124282] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:33.149 [DEBUG] [Thread-124282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:33.149 [DEBUG] [Thread-124282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:33.149 [DEBUG] [Thread-124282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:19:33.150 [DEBUG] [Thread-124282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:33.168 [INFO] [Thread-124282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:33.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:33.782 [DEBUG] [Thread-124282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:33.782 [DEBUG] [Thread-124282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:33.783 [DEBUG] [Thread-124282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:19:33.823 [DEBUG] [Thread-124282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:33.823 [DEBUG] [Thread-124282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:33.826 [DEBUG] [Thread-124282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:33.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:33.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:19:33.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:19:33.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:19:33.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:33.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:19:33.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:33.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:33.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:19:33.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429946 -999.00  +19.10  15.47     38   +4.60 1 1 1 1 1   888    0 13.92 0.24 ----- 16.4 15.5 255.4 17.1 26.3 -24.3 24.9 -25.0 24.8 -23.8 26.3 -24.2
2025-09-28T12:19:33.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:19:33.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:19:33.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429946
2025-09-28T12:19:33.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:19:33.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:19:33.849 [DEBUG] [Thread-124282] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:33.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:19:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:19:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:19:33.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:19:20', tmtdew=14.72, humidity=37.47, cloud=0.0, wind=8.81, temperature=17.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:19:33.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-28T12:19:33.946 [DEBUG] [Thread-124285] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-28T12:19:33.946 [DEBUG] [Thread-124285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:33.962 [DEBUG] [Thread-124285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:19:33.962 [INFO] [Thread-124285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] Compression: none
2025-09-28T12:19:33.970 [DEBUG] [Thread-124285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:34.027 [DEBUG] [Thread-124285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:34.028 [DEBUG] [Thread-124285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:34.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:19:34.028 [DEBUG] [Thread-124285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:19:34.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:34.085 [DEBUG] [Thread-124285] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:34.086 [DEBUG] [Thread-124285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:34.086 [DEBUG] [Thread-124285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:34.086 [DEBUG] [Thread-124285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:19:34.086 [DEBUG] [Thread-124285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:34.103 [INFO] [Thread-124285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:34.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-28T12:19:34.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:35.092 [DEBUG] [Thread-124285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:35.092 [DEBUG] [Thread-124285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:35.140 [DEBUG] [Thread-124285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:35.140 [DEBUG] [Thread-124285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:35.149 [DEBUG] [Thread-124285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:35.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:35.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')
2025-09-28T12:19:35.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-28T12:19:35.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:35.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:35.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:35.181 [DEBUG] [Thread-124285] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:37.938 [DEBUG] [Thread-124287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:44.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:44.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:45.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:19:45.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:19:45.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-28T12:19:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 19, 20), 14.72, 37.47, 0.0, 8.81, 17.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:19:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:19:20
2025-09-28T12:19:45.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:19:46.022 [DEBUG] [Thread-124288] [transport.py] [_log()] starting thread (client mode): 0x2e3f8970
2025-09-28T12:19:46.023 [DEBUG] [Thread-124288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:46.041 [DEBUG] [Thread-124288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:19:46.042 [INFO] [Thread-124288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:46.045 [DEBUG] [Thread-124288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] Compression: none
2025-09-28T12:19:46.046 [DEBUG] [Thread-124288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:46.061 [DEBUG] [Thread-124288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:46.062 [DEBUG] [Thread-124288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:46.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:19:46.062 [DEBUG] [Thread-124288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:19:46.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:46.067 [DEBUG] [Thread-124288] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:46.067 [DEBUG] [Thread-124288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:46.068 [DEBUG] [Thread-124288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:46.068 [DEBUG] [Thread-124288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:19:46.068 [DEBUG] [Thread-124288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:46.089 [INFO] [Thread-124288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:46.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:46.685 [DEBUG] [Thread-124288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:46.685 [DEBUG] [Thread-124288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:46.685 [DEBUG] [Thread-124288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:19:46.726 [DEBUG] [Thread-124288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:46.726 [DEBUG] [Thread-124288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:46.728 [DEBUG] [Thread-124288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:46.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:46.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:19:46.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:19:46.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:19:46.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:46.746 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:19:46.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429946 -999.00  +19.10  15.47     38   +4.60 1 1 1 1 1   888    0 13.92 0.24 ----- 16.4 15.5 255.4 17.1 26.3 -24.3 24.9 -25.0 24.8 -23.8 26.3 -24.2
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429946
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:19:46.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:19:20', tmtdew=14.72, humidity=37.47, cloud=0.0, wind=8.81, temperature=17.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:19:46.748 [DEBUG] [Thread-124288] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:46.820 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:19:46.832 [DEBUG] [Thread-124291] [transport.py] [_log()] starting thread (client mode): 0x2b9c96f0
2025-09-28T12:19:46.832 [DEBUG] [Thread-124291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:46.847 [DEBUG] [Thread-124291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:19:46.847 [INFO] [Thread-124291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:19:46.855 [DEBUG] [Thread-124291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:46.855 [DEBUG] [Thread-124291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:46.856 [DEBUG] [Thread-124291] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:46.857 [DEBUG] [Thread-124291] [transport.py] [_log()] Compression: none
2025-09-28T12:19:46.858 [DEBUG] [Thread-124291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:46.913 [DEBUG] [Thread-124291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:46.913 [DEBUG] [Thread-124291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:46.914 [DEBUG] [Thread-124291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:19:46.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:19:46.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:46.969 [DEBUG] [Thread-124291] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:46.969 [DEBUG] [Thread-124291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:46.970 [DEBUG] [Thread-124291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:46.970 [DEBUG] [Thread-124291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:19:46.970 [DEBUG] [Thread-124291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:46.990 [INFO] [Thread-124291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:46.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-28T12:19:46.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:47.984 [DEBUG] [Thread-124291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:47.984 [DEBUG] [Thread-124291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:48.032 [DEBUG] [Thread-124291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:48.032 [DEBUG] [Thread-124291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:48.041 [DEBUG] [Thread-124291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:48.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:48.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-28T12:19:48.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') -> 00000000
2025-09-28T12:19:48.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:48.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:48.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:48.075 [DEBUG] [Thread-124291] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:52.972 [DEBUG] [Thread-124293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:19:58.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:19:58.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:19:58.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-28T12:19:58.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 19, 51), 15.3, 36.01, 0.0, 15.92, 17.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:19:58.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:19:51
2025-09-28T12:19:58.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:19:58.897 [DEBUG] [Thread-124294] [transport.py] [_log()] starting thread (client mode): 0x2e374730
2025-09-28T12:19:58.897 [DEBUG] [Thread-124294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:58.916 [DEBUG] [Thread-124294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:19:58.916 [INFO] [Thread-124294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:19:58.919 [DEBUG] [Thread-124294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:58.919 [DEBUG] [Thread-124294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] Compression: none
2025-09-28T12:19:58.920 [DEBUG] [Thread-124294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:58.928 [DEBUG] [Thread-124294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:58.928 [DEBUG] [Thread-124294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:58.929 [DEBUG] [Thread-124294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:19:58.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:19:58.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:58.930 [DEBUG] [Thread-124294] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:58.930 [DEBUG] [Thread-124294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:58.931 [DEBUG] [Thread-124294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:58.931 [DEBUG] [Thread-124294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:19:58.931 [DEBUG] [Thread-124294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:58.954 [INFO] [Thread-124294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:58.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:19:59.592 [DEBUG] [Thread-124294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:19:59.592 [DEBUG] [Thread-124294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:19:59.592 [DEBUG] [Thread-124294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:19:59.633 [DEBUG] [Thread-124294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:19:59.633 [DEBUG] [Thread-124294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:19:59.636 [DEBUG] [Thread-124294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:19:59.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:19:59.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:19:59.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:19:59.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:19:59.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:19:59.659 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:19:59.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:19:59.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:19:59.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:19:59.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.429946 -999.00  +19.10  15.47     38   +4.60 1 1 1 1 1   888    0 13.92 0.24 ----- 16.4 15.5 255.4 17.1 26.3 -24.3 24.9 -25.0 24.8 -23.8 26.3 -24.2
2025-09-28T12:19:59.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:19:59.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:19:59.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.429946
2025-09-28T12:19:59.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:19:59.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:19:59.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:19:59.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:19:59.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:19:59.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:19:51', tmtdew=15.3, humidity=36.01, cloud=0.0, wind=15.92, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:19:59.662 [DEBUG] [Thread-124294] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:19:59.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-28T12:19:59.757 [DEBUG] [Thread-124297] [transport.py] [_log()] starting thread (client mode): 0x2e3ddab0
2025-09-28T12:19:59.757 [DEBUG] [Thread-124297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:19:59.772 [DEBUG] [Thread-124297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:19:59.772 [INFO] [Thread-124297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:19:59.780 [DEBUG] [Thread-124297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] client lang: <none>
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] server lang: <none>
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] kex follows: False
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] Compression: none
2025-09-28T12:19:59.781 [DEBUG] [Thread-124297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:19:59.836 [DEBUG] [Thread-124297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:19:59.837 [DEBUG] [Thread-124297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:19:59.837 [DEBUG] [Thread-124297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:19:59.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:19:59.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:19:59.893 [DEBUG] [Thread-124297] [transport.py] [_log()] userauth is OK
2025-09-28T12:19:59.893 [DEBUG] [Thread-124297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:19:59.893 [DEBUG] [Thread-124297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:19:59.894 [DEBUG] [Thread-124297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:19:59.894 [DEBUG] [Thread-124297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:19:59.912 [INFO] [Thread-124297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:19:59.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-28T12:19:59.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:00.870 [DEBUG] [Thread-124297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:00.871 [DEBUG] [Thread-124297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:00.918 [DEBUG] [Thread-124297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:00.918 [DEBUG] [Thread-124297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:00.927 [DEBUG] [Thread-124297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:00.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:00.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')
2025-09-28T12:20:00.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-28T12:20:00.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:00.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:00.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:00.962 [DEBUG] [Thread-124297] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:08.002 [DEBUG] [Thread-124299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:08.706 [DEBUG] [Thread-124300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:10.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:20:10.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:20:10.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-28T12:20:11.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 19, 51), 15.3, 36.01, 0.0, 15.92, 17.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:20:11.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:19:51
2025-09-28T12:20:11.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:20:11.828 [DEBUG] [Thread-124301] [transport.py] [_log()] starting thread (client mode): 0x2b9deda0
2025-09-28T12:20:11.828 [DEBUG] [Thread-124301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:11.848 [DEBUG] [Thread-124301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:20:11.848 [INFO] [Thread-124301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:20:11.851 [DEBUG] [Thread-124301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:11.851 [DEBUG] [Thread-124301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:20:11.851 [DEBUG] [Thread-124301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:11.851 [DEBUG] [Thread-124301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:11.851 [DEBUG] [Thread-124301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] Compression: none
2025-09-28T12:20:11.852 [DEBUG] [Thread-124301] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:11.867 [DEBUG] [Thread-124301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:11.867 [DEBUG] [Thread-124301] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:11.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:20:11.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:11.868 [DEBUG] [Thread-124301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:20:11.868 [DEBUG] [Thread-124301] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:11.868 [DEBUG] [Thread-124301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:11.868 [DEBUG] [Thread-124301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:11.869 [DEBUG] [Thread-124301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:20:11.869 [DEBUG] [Thread-124301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:11.887 [INFO] [Thread-124301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:11.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:12.517 [DEBUG] [Thread-124301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:12.517 [DEBUG] [Thread-124301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:12.517 [DEBUG] [Thread-124301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:20:12.558 [DEBUG] [Thread-124301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:12.558 [DEBUG] [Thread-124301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:12.560 [DEBUG] [Thread-124301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:12.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:12.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:20:12.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:20:12.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:20:12.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:12.578 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:20:12.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.430293 -999.00  +18.30  19.07     38   +3.80 1 1 1 1 1   888    0 14.44 8.78 ----- 13.6 19.1 271.0 29.5 26.1 -27.1 24.8 -25.2 24.7 -25.4 25.9 -28.6
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.430293
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:20:12.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:19:51', tmtdew=15.3, humidity=36.01, cloud=0.0, wind=15.92, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:20:12.579 [DEBUG] [Thread-124301] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:12.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-28T12:20:12.664 [DEBUG] [Thread-124304] [transport.py] [_log()] starting thread (client mode): 0x2b96cd30
2025-09-28T12:20:12.664 [DEBUG] [Thread-124304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:12.679 [DEBUG] [Thread-124304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:20:12.679 [INFO] [Thread-124304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:12.686 [DEBUG] [Thread-124304] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] Compression: none
2025-09-28T12:20:12.687 [DEBUG] [Thread-124304] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:12.744 [DEBUG] [Thread-124304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:12.744 [DEBUG] [Thread-124304] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:12.744 [DEBUG] [Thread-124304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:20:12.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:20:12.744 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:12.801 [DEBUG] [Thread-124304] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:12.801 [DEBUG] [Thread-124304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:12.801 [DEBUG] [Thread-124304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:12.801 [DEBUG] [Thread-124304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:20:12.801 [DEBUG] [Thread-124304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:12.815 [INFO] [Thread-124304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:12.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:20:12.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:13.803 [DEBUG] [Thread-124304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:13.804 [DEBUG] [Thread-124304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:13.852 [DEBUG] [Thread-124304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:13.852 [DEBUG] [Thread-124304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:13.860 [DEBUG] [Thread-124304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:13.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:13.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-28T12:20:13.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') -> 00000000
2025-09-28T12:20:13.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:13.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:13.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:13.892 [DEBUG] [Thread-124304] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:23.053 [DEBUG] [Thread-124306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:23.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:20:23.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:20:23.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:20:24.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 19, 51), 15.3, 36.01, 0.0, 15.92, 17.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:20:24.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:19:51
2025-09-28T12:20:24.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:20:24.752 [DEBUG] [Thread-124307] [transport.py] [_log()] starting thread (client mode): 0x2b9cd810
2025-09-28T12:20:24.752 [DEBUG] [Thread-124307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:24.770 [DEBUG] [Thread-124307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:20:24.770 [INFO] [Thread-124307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] Compression: none
2025-09-28T12:20:24.772 [DEBUG] [Thread-124307] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:24.780 [DEBUG] [Thread-124307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:24.780 [DEBUG] [Thread-124307] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:24.780 [DEBUG] [Thread-124307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:20:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:20:24.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:24.781 [DEBUG] [Thread-124307] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:24.781 [DEBUG] [Thread-124307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:24.781 [DEBUG] [Thread-124307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:24.781 [DEBUG] [Thread-124307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:20:24.781 [DEBUG] [Thread-124307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:24.794 [INFO] [Thread-124307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:24.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:25.417 [DEBUG] [Thread-124307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:25.417 [DEBUG] [Thread-124307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:25.417 [DEBUG] [Thread-124307] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:20:25.458 [DEBUG] [Thread-124307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:25.458 [DEBUG] [Thread-124307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:25.460 [DEBUG] [Thread-124307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:25.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:25.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:20:25.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:20:25.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:20:25.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:25.479 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:20:25.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.430293 -999.00  +18.30  19.07     38   +3.80 1 1 1 1 1   888    0 14.44 8.78 ----- 13.6 19.1 271.0 29.5 26.1 -27.1 24.8 -25.2 24.7 -25.4 25.9 -28.6
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:20:25.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.430293
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:20:25.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:19:51', tmtdew=15.3, humidity=36.01, cloud=0.0, wind=15.92, temperature=17.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:20:25.481 [DEBUG] [Thread-124307] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:25.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-28T12:20:25.564 [DEBUG] [Thread-124310] [transport.py] [_log()] starting thread (client mode): 0x2b9deb60
2025-09-28T12:20:25.564 [DEBUG] [Thread-124310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:25.579 [DEBUG] [Thread-124310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:20:25.579 [INFO] [Thread-124310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] Compression: none
2025-09-28T12:20:25.587 [DEBUG] [Thread-124310] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:25.647 [DEBUG] [Thread-124310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:25.647 [DEBUG] [Thread-124310] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:25.648 [DEBUG] [Thread-124310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:20:25.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:20:25.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:25.705 [DEBUG] [Thread-124310] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:25.705 [DEBUG] [Thread-124310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:25.705 [DEBUG] [Thread-124310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:25.705 [DEBUG] [Thread-124310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:20:25.705 [DEBUG] [Thread-124310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:25.720 [INFO] [Thread-124310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:25.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-28T12:20:25.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:26.706 [DEBUG] [Thread-124310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:26.706 [DEBUG] [Thread-124310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:26.754 [DEBUG] [Thread-124310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:26.754 [DEBUG] [Thread-124310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:26.763 [DEBUG] [Thread-124310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:26.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:26.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')
2025-09-28T12:20:26.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-28T12:20:26.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:26.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:26.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:26.798 [DEBUG] [Thread-124310] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:36.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:20:36.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:20:36.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-28T12:20:37.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 20, 23), 15.72, 35.02, 0.0, 18.9, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:20:37.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:20:23
2025-09-28T12:20:37.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:20:37.634 [DEBUG] [Thread-124312] [transport.py] [_log()] starting thread (client mode): 0x2b9ce1a0
2025-09-28T12:20:37.634 [DEBUG] [Thread-124312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:37.643 [DEBUG] [Thread-124312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:20:37.644 [INFO] [Thread-124312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] Compression: none
2025-09-28T12:20:37.647 [DEBUG] [Thread-124312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:37.655 [DEBUG] [Thread-124312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:37.655 [DEBUG] [Thread-124312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:37.655 [DEBUG] [Thread-124312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:20:37.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:20:37.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:37.656 [DEBUG] [Thread-124312] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:37.656 [DEBUG] [Thread-124312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:37.656 [DEBUG] [Thread-124312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:37.656 [DEBUG] [Thread-124312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:20:37.656 [DEBUG] [Thread-124312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:37.668 [INFO] [Thread-124312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:37.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:38.100 [DEBUG] [Thread-124314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:38.244 [DEBUG] [Thread-124312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:38.244 [DEBUG] [Thread-124312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:38.245 [DEBUG] [Thread-124312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:20:38.285 [DEBUG] [Thread-124312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:38.285 [DEBUG] [Thread-124312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:38.288 [DEBUG] [Thread-124312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:38.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:38.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:20:38.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:20:38.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:20:38.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:38.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:20:38.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:38.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.430293 -999.00  +18.30  19.07     38   +3.80 1 1 1 1 1   888    0 14.44 8.78 ----- 13.6 19.1 271.0 29.5 26.1 -27.1 24.8 -25.2 24.7 -25.4 25.9 -28.6
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.430293
2025-09-28T12:20:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:20:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:20:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:20:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:20:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:20:38.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:20:23', tmtdew=15.72, humidity=35.02, cloud=0.0, wind=18.9, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:19:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:20:38.312 [DEBUG] [Thread-124312] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:38.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-28T12:20:38.411 [DEBUG] [Thread-124316] [transport.py] [_log()] starting thread (client mode): 0x2b9f3280
2025-09-28T12:20:38.411 [DEBUG] [Thread-124316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:38.425 [DEBUG] [Thread-124316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:20:38.425 [INFO] [Thread-124316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:20:38.433 [DEBUG] [Thread-124316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:38.433 [DEBUG] [Thread-124316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:20:38.433 [DEBUG] [Thread-124316] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:38.433 [DEBUG] [Thread-124316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:38.434 [DEBUG] [Thread-124316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] Compression: none
2025-09-28T12:20:38.435 [DEBUG] [Thread-124316] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:38.492 [DEBUG] [Thread-124316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:38.492 [DEBUG] [Thread-124316] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:38.493 [DEBUG] [Thread-124316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:20:38.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:20:38.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:38.549 [DEBUG] [Thread-124316] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:38.549 [DEBUG] [Thread-124316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:38.549 [DEBUG] [Thread-124316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:38.549 [DEBUG] [Thread-124316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:20:38.549 [DEBUG] [Thread-124316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:38.572 [INFO] [Thread-124316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:38.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:20:38.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:39.528 [DEBUG] [Thread-124316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:39.528 [DEBUG] [Thread-124316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:39.576 [DEBUG] [Thread-124316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:39.576 [DEBUG] [Thread-124316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:39.585 [DEBUG] [Thread-124316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:39.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:39.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-28T12:20:39.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-28T12:20:39.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:39.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:39.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:39.620 [DEBUG] [Thread-124316] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:45.121 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:45.123 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:20:49.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:20:49.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:20:49.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-28T12:20:50.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 20, 23), 15.72, 35.02, 0.0, 18.9, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:20:50.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:20:23
2025-09-28T12:20:50.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:20:50.483 [DEBUG] [Thread-124318] [transport.py] [_log()] starting thread (client mode): 0x2b9dd060
2025-09-28T12:20:50.484 [DEBUG] [Thread-124318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:50.503 [DEBUG] [Thread-124318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:20:50.503 [INFO] [Thread-124318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] Compression: none
2025-09-28T12:20:50.506 [DEBUG] [Thread-124318] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:50.514 [DEBUG] [Thread-124318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:50.514 [DEBUG] [Thread-124318] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:50.514 [DEBUG] [Thread-124318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:20:50.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:20:50.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:50.515 [DEBUG] [Thread-124318] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:50.515 [DEBUG] [Thread-124318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:50.515 [DEBUG] [Thread-124318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:50.516 [DEBUG] [Thread-124318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:20:50.516 [DEBUG] [Thread-124318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:50.527 [INFO] [Thread-124318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:50.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:51.074 [DEBUG] [Thread-124318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:51.074 [DEBUG] [Thread-124318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:51.074 [DEBUG] [Thread-124318] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:20:51.115 [DEBUG] [Thread-124318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:51.115 [DEBUG] [Thread-124318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:51.117 [DEBUG] [Thread-124318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:51.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:51.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:20:51.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:20:51.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:20:51.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:51.135 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:20:51.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.430987 -999.00  +18.60  12.93     39   +4.30 1 1 1 1 1   888    0 14.62 16.68 ----- 11.8 12.9 215.2 17.4 26.2 -25.4 24.9 -24.6 24.5 -25.2 25.9 -24.5
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.430987
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:20:51.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:20:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:20:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:20:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:20:51.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:20:23', tmtdew=15.72, humidity=35.02, cloud=0.0, wind=18.9, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:20:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:20:51.137 [DEBUG] [Thread-124318] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:51.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-28T12:20:51.219 [DEBUG] [Thread-124321] [transport.py] [_log()] starting thread (client mode): 0x2b9df0d0
2025-09-28T12:20:51.219 [DEBUG] [Thread-124321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:20:51.234 [DEBUG] [Thread-124321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:20:51.234 [INFO] [Thread-124321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:20:51.241 [DEBUG] [Thread-124321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] client lang: <none>
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] server lang: <none>
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] kex follows: False
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] Compression: none
2025-09-28T12:20:51.242 [DEBUG] [Thread-124321] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:20:51.299 [DEBUG] [Thread-124321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:20:51.299 [DEBUG] [Thread-124321] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:20:51.299 [DEBUG] [Thread-124321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:20:51.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:20:51.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:20:51.358 [DEBUG] [Thread-124321] [transport.py] [_log()] userauth is OK
2025-09-28T12:20:51.359 [DEBUG] [Thread-124321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:20:51.359 [DEBUG] [Thread-124321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:20:51.359 [DEBUG] [Thread-124321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:20:51.359 [DEBUG] [Thread-124321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:20:51.373 [INFO] [Thread-124321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:20:51.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:20:51.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:20:52.367 [DEBUG] [Thread-124321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:20:52.367 [DEBUG] [Thread-124321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:20:52.415 [DEBUG] [Thread-124321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:20:52.415 [DEBUG] [Thread-124321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:20:52.423 [DEBUG] [Thread-124321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:20:52.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:20:52.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-28T12:20:52.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') -> 00000000
2025-09-28T12:20:52.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:20:52.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:20:52.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:20:52.455 [DEBUG] [Thread-124321] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:20:53.131 [DEBUG] [Thread-124323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:02.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:21:02.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:21:02.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-28T12:21:03.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 20, 55), 16.19, 33.73, 0.0, 20.64, 18.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:21:03.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:20:55
2025-09-28T12:21:03.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:21:03.298 [DEBUG] [Thread-124324] [transport.py] [_log()] starting thread (client mode): 0x2e3ddab0
2025-09-28T12:21:03.298 [DEBUG] [Thread-124324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:03.317 [DEBUG] [Thread-124324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:21:03.317 [INFO] [Thread-124324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:21:03.320 [DEBUG] [Thread-124324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:03.320 [DEBUG] [Thread-124324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:03.321 [DEBUG] [Thread-124324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:03.322 [DEBUG] [Thread-124324] [transport.py] [_log()] Compression: none
2025-09-28T12:21:03.322 [DEBUG] [Thread-124324] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:03.335 [DEBUG] [Thread-124324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:03.336 [DEBUG] [Thread-124324] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:03.337 [DEBUG] [Thread-124324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:21:03.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:21:03.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:03.339 [DEBUG] [Thread-124324] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:03.339 [DEBUG] [Thread-124324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:03.340 [DEBUG] [Thread-124324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:03.340 [DEBUG] [Thread-124324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:21:03.340 [DEBUG] [Thread-124324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:03.375 [INFO] [Thread-124324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:03.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:04.123 [DEBUG] [Thread-124324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:04.123 [DEBUG] [Thread-124324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:04.123 [DEBUG] [Thread-124324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:21:04.164 [DEBUG] [Thread-124324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:04.164 [DEBUG] [Thread-124324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:04.166 [DEBUG] [Thread-124324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:04.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:04.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:21:04.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:21:04.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:21:04.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:04.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:21:04.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:04.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:21:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.430987 -999.00  +18.60  12.93     39   +4.30 1 1 1 1 1   888    0 14.62 16.68 ----- 11.8 12.9 215.2 17.4 26.2 -25.4 24.9 -24.6 24.5 -25.2 25.9 -24.5
2025-09-28T12:21:04.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:21:04.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:21:04.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.430987
2025-09-28T12:21:04.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:21:04.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:21:04.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:21:04.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:21:04.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:21:04.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:20:55', tmtdew=16.19, humidity=33.73, cloud=0.0, wind=20.64, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:20:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:21:04.193 [DEBUG] [Thread-124324] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:04.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-28T12:21:04.289 [DEBUG] [Thread-124327] [transport.py] [_log()] starting thread (client mode): 0x2e3dd990
2025-09-28T12:21:04.289 [DEBUG] [Thread-124327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:04.304 [DEBUG] [Thread-124327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:21:04.304 [INFO] [Thread-124327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:21:04.313 [DEBUG] [Thread-124327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:04.313 [DEBUG] [Thread-124327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:04.314 [DEBUG] [Thread-124327] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] Compression: none
2025-09-28T12:21:04.315 [DEBUG] [Thread-124327] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:04.373 [DEBUG] [Thread-124327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:04.373 [DEBUG] [Thread-124327] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:04.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:21:04.374 [DEBUG] [Thread-124327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:21:04.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:04.429 [DEBUG] [Thread-124327] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:04.429 [DEBUG] [Thread-124327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:04.429 [DEBUG] [Thread-124327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:04.429 [DEBUG] [Thread-124327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:21:04.429 [DEBUG] [Thread-124327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:04.450 [INFO] [Thread-124327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:04.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-28T12:21:04.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:05.483 [DEBUG] [Thread-124327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:05.483 [DEBUG] [Thread-124327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:05.531 [DEBUG] [Thread-124327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:05.531 [DEBUG] [Thread-124327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:05.541 [DEBUG] [Thread-124327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:05.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:05.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')
2025-09-28T12:21:05.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-28T12:21:05.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:05.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:05.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:05.576 [DEBUG] [Thread-124327] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:08.176 [DEBUG] [Thread-124329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:08.768 [DEBUG] [Thread-124330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:15.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:21:15.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:21:15.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-28T12:21:16.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 20, 55), 16.19, 33.73, 0.0, 20.64, 18.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:21:16.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:20:55
2025-09-28T12:21:16.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:21:16.402 [DEBUG] [Thread-124331] [transport.py] [_log()] starting thread (client mode): 0x2e3c1810
2025-09-28T12:21:16.402 [DEBUG] [Thread-124331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:16.416 [DEBUG] [Thread-124331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:21:16.416 [INFO] [Thread-124331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] Compression: none
2025-09-28T12:21:16.420 [DEBUG] [Thread-124331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:16.432 [DEBUG] [Thread-124331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:16.433 [DEBUG] [Thread-124331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:16.433 [DEBUG] [Thread-124331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:21:16.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:21:16.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:16.435 [DEBUG] [Thread-124331] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:16.435 [DEBUG] [Thread-124331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:16.435 [DEBUG] [Thread-124331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:16.435 [DEBUG] [Thread-124331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:21:16.435 [DEBUG] [Thread-124331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:16.449 [INFO] [Thread-124331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:16.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:17.021 [DEBUG] [Thread-124331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:17.022 [DEBUG] [Thread-124331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:17.022 [DEBUG] [Thread-124331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:21:17.062 [DEBUG] [Thread-124331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:17.062 [DEBUG] [Thread-124331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:17.065 [DEBUG] [Thread-124331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:17.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:17.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:21:17.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:21:17.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:21:17.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:17.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:21:17.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:17.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:17.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:21:17.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431335 -999.00  +18.90  17.78     37   +4.20 1 1 1 1 1   888    0 14.78 22.28 ----- 13.7 17.8 243.9 20.0 26.2 -26.7 24.8 -25.4 24.6 -24.3 25.9 -25.9
2025-09-28T12:21:17.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:21:17.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:21:17.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431335
2025-09-28T12:21:17.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:21:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:21:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:21:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:21:17.083 [DEBUG] [Thread-124331] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:17.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:21:17.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:20:55', tmtdew=16.19, humidity=33.73, cloud=0.0, wind=20.64, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:21:17.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-28T12:21:17.178 [DEBUG] [Thread-124334] [transport.py] [_log()] starting thread (client mode): 0x2e38d7b0
2025-09-28T12:21:17.178 [DEBUG] [Thread-124334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:17.193 [DEBUG] [Thread-124334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:21:17.193 [INFO] [Thread-124334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:21:17.200 [DEBUG] [Thread-124334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:17.200 [DEBUG] [Thread-124334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] Compression: none
2025-09-28T12:21:17.201 [DEBUG] [Thread-124334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:17.260 [DEBUG] [Thread-124334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:17.261 [DEBUG] [Thread-124334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:17.261 [DEBUG] [Thread-124334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:21:17.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:21:17.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:17.317 [DEBUG] [Thread-124334] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:17.317 [DEBUG] [Thread-124334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:17.317 [DEBUG] [Thread-124334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:17.317 [DEBUG] [Thread-124334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:21:17.317 [DEBUG] [Thread-124334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:17.336 [INFO] [Thread-124334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:17.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-28T12:21:17.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:18.327 [DEBUG] [Thread-124334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:18.328 [DEBUG] [Thread-124334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:18.375 [DEBUG] [Thread-124334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:18.375 [DEBUG] [Thread-124334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:18.384 [DEBUG] [Thread-124334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:18.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:18.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-28T12:21:18.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-28T12:21:18.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:18.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:18.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:18.419 [DEBUG] [Thread-124334] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:23.226 [DEBUG] [Thread-124336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:28.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:21:28.421 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:21:28.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-28T12:21:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 20, 55), 16.19, 33.73, 0.0, 20.64, 18.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:21:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:20:55
2025-09-28T12:21:29.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:21:29.304 [DEBUG] [Thread-124337] [transport.py] [_log()] starting thread (client mode): 0x2e3fa5c0
2025-09-28T12:21:29.304 [DEBUG] [Thread-124337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:29.325 [DEBUG] [Thread-124337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:21:29.325 [INFO] [Thread-124337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:21:29.328 [DEBUG] [Thread-124337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:29.328 [DEBUG] [Thread-124337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:21:29.328 [DEBUG] [Thread-124337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:29.328 [DEBUG] [Thread-124337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] Compression: none
2025-09-28T12:21:29.329 [DEBUG] [Thread-124337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:29.344 [DEBUG] [Thread-124337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:21:29.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:21:29.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:21:29.345 [DEBUG] [Thread-124337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:29.354 [INFO] [Thread-124337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:29.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:29.954 [DEBUG] [Thread-124337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:29.954 [DEBUG] [Thread-124337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:29.955 [DEBUG] [Thread-124337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:21:29.995 [DEBUG] [Thread-124337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:29.995 [DEBUG] [Thread-124337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:29.998 [DEBUG] [Thread-124337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:30.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:30.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:21:30.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:21:30.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:21:30.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:30.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:21:30.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:30.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:21:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431335 -999.00  +18.90  17.78     37   +4.20 1 1 1 1 1   888    0 14.78 22.28 ----- 13.7 17.8 243.9 20.0 26.2 -26.7 24.8 -25.4 24.6 -24.3 25.9 -25.9
2025-09-28T12:21:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:21:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:21:30.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431335
2025-09-28T12:21:30.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:21:30.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:21:30.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:21:30.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:21:30.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:21:30.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:20:55', tmtdew=16.19, humidity=33.73, cloud=0.0, wind=20.64, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:21:30.022 [DEBUG] [Thread-124337] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:30.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-28T12:21:30.126 [DEBUG] [Thread-124340] [transport.py] [_log()] starting thread (client mode): 0x2e3c1180
2025-09-28T12:21:30.126 [DEBUG] [Thread-124340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:30.140 [DEBUG] [Thread-124340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:21:30.140 [INFO] [Thread-124340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:21:30.148 [DEBUG] [Thread-124340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:30.148 [DEBUG] [Thread-124340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] Compression: none
2025-09-28T12:21:30.149 [DEBUG] [Thread-124340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:30.212 [DEBUG] [Thread-124340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:30.212 [DEBUG] [Thread-124340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:30.213 [DEBUG] [Thread-124340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:21:30.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:21:30.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:30.269 [DEBUG] [Thread-124340] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:30.269 [DEBUG] [Thread-124340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:30.269 [DEBUG] [Thread-124340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:30.270 [DEBUG] [Thread-124340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:21:30.270 [DEBUG] [Thread-124340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:30.289 [INFO] [Thread-124340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:30.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:21:30.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:31.323 [DEBUG] [Thread-124340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:31.323 [DEBUG] [Thread-124340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:31.371 [DEBUG] [Thread-124340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:31.371 [DEBUG] [Thread-124340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:31.380 [DEBUG] [Thread-124340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:31.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:31.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-28T12:21:31.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') -> 00000000
2025-09-28T12:21:31.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:31.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:31.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:31.416 [DEBUG] [Thread-124340] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:38.277 [DEBUG] [Thread-124342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:21:41.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:21:41.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-28T12:21:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 21, 27), 16.33, 33.4, 0.0, 16.08, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:21:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:21:27
2025-09-28T12:21:42.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:21:42.255 [DEBUG] [Thread-124343] [transport.py] [_log()] starting thread (client mode): 0x2b9f21a0
2025-09-28T12:21:42.255 [DEBUG] [Thread-124343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:42.275 [DEBUG] [Thread-124343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:21:42.275 [INFO] [Thread-124343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:21:42.278 [DEBUG] [Thread-124343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:42.279 [DEBUG] [Thread-124343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] Compression: none
2025-09-28T12:21:42.280 [DEBUG] [Thread-124343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:42.298 [DEBUG] [Thread-124343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:42.298 [DEBUG] [Thread-124343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:42.299 [DEBUG] [Thread-124343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:21:42.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:21:42.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:42.340 [DEBUG] [Thread-124343] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:42.341 [DEBUG] [Thread-124343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:42.341 [DEBUG] [Thread-124343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:42.341 [DEBUG] [Thread-124343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:21:42.341 [DEBUG] [Thread-124343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:42.361 [INFO] [Thread-124343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:42.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:43.108 [DEBUG] [Thread-124343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:43.108 [DEBUG] [Thread-124343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:43.108 [DEBUG] [Thread-124343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:21:43.148 [DEBUG] [Thread-124343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:43.148 [DEBUG] [Thread-124343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:43.149 [DEBUG] [Thread-124343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:43.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:43.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:21:43.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:21:43.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:21:43.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:43.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:21:43.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431335 -999.00  +18.90  17.78     37   +4.20 1 1 1 1 1   888    0 14.78 22.28 ----- 13.7 17.8 243.9 20.0 26.2 -26.7 24.8 -25.4 24.6 -24.3 25.9 -25.9
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431335
2025-09-28T12:21:43.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:21:43.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:21:43.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:21:43.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:21:43.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:21:43.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:21:27', tmtdew=16.33, humidity=33.4, cloud=0.0, wind=16.08, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:07.344', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:21:43.167 [DEBUG] [Thread-124343] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:43.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-28T12:21:43.252 [DEBUG] [Thread-124346] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-28T12:21:43.252 [DEBUG] [Thread-124346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:43.267 [DEBUG] [Thread-124346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:21:43.267 [INFO] [Thread-124346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:43.275 [DEBUG] [Thread-124346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:43.276 [DEBUG] [Thread-124346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:43.276 [DEBUG] [Thread-124346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:43.276 [DEBUG] [Thread-124346] [transport.py] [_log()] Compression: none
2025-09-28T12:21:43.276 [DEBUG] [Thread-124346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:43.332 [DEBUG] [Thread-124346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:43.332 [DEBUG] [Thread-124346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:43.333 [DEBUG] [Thread-124346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:21:43.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:21:43.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:43.388 [DEBUG] [Thread-124346] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:43.388 [DEBUG] [Thread-124346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:43.389 [DEBUG] [Thread-124346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:43.389 [DEBUG] [Thread-124346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:21:43.389 [DEBUG] [Thread-124346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:43.408 [INFO] [Thread-124346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:43.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-28T12:21:43.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:44.474 [DEBUG] [Thread-124346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:44.474 [DEBUG] [Thread-124346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:44.522 [DEBUG] [Thread-124346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:44.522 [DEBUG] [Thread-124346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:44.531 [DEBUG] [Thread-124346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:44.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21: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-28T12:21:44.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-28T12:21:44.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:44.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:44.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:44.568 [DEBUG] [Thread-124346] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:45.265 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:45.266 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:53.312 [DEBUG] [Thread-124348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:21:54.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:21:54.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:21:54.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-28T12:21:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 21, 27), 16.33, 33.4, 0.0, 16.08, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:21:55.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:21:27
2025-09-28T12:21:55.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:21:55.395 [DEBUG] [Thread-124349] [transport.py] [_log()] starting thread (client mode): 0x2b9ae8f0
2025-09-28T12:21:55.395 [DEBUG] [Thread-124349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:55.422 [DEBUG] [Thread-124349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:21:55.422 [INFO] [Thread-124349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] Compression: none
2025-09-28T12:21:55.426 [DEBUG] [Thread-124349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:55.443 [DEBUG] [Thread-124349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:55.444 [DEBUG] [Thread-124349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:55.444 [DEBUG] [Thread-124349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:21:55.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:21:55.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:55.488 [DEBUG] [Thread-124349] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:55.489 [DEBUG] [Thread-124349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:55.489 [DEBUG] [Thread-124349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:55.489 [DEBUG] [Thread-124349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:21:55.489 [DEBUG] [Thread-124349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:55.508 [INFO] [Thread-124349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:55.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:56.069 [DEBUG] [Thread-124349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:56.069 [DEBUG] [Thread-124349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:56.070 [DEBUG] [Thread-124349] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:21:56.110 [DEBUG] [Thread-124349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:56.111 [DEBUG] [Thread-124349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:56.113 [DEBUG] [Thread-124349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:56.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:56.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:21:56.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:21:56.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:21:56.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:56.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:21:56.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:56.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:21:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431682 -999.00  +18.70  10.65     38   +4.20 1 1 1 1 1   888    0 14.75 25.60 ----- 14.1 10.7 193.4 21.4 26.1 -26.5 24.7 -26.5 24.6 -24.5 25.7 -25.5
2025-09-28T12:21:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:21:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:21:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431682
2025-09-28T12:21:56.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:21:56.134 [DEBUG] [Thread-124349] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:21:56.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:21:56.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:21:56.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:21:56.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:21:56.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:21:27', tmtdew=16.33, humidity=33.4, cloud=0.0, wind=16.08, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:21:56.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-28T12:21:56.243 [DEBUG] [Thread-124352] [transport.py] [_log()] starting thread (client mode): 0x2b9adc90
2025-09-28T12:21:56.243 [DEBUG] [Thread-124352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:21:56.258 [DEBUG] [Thread-124352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:21:56.258 [INFO] [Thread-124352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:21:56.266 [DEBUG] [Thread-124352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] client lang: <none>
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] server lang: <none>
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] kex follows: False
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] Compression: none
2025-09-28T12:21:56.267 [DEBUG] [Thread-124352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:21:56.329 [DEBUG] [Thread-124352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:21:56.330 [DEBUG] [Thread-124352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:21:56.330 [DEBUG] [Thread-124352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:21:56.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:21:56.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:21:56.389 [DEBUG] [Thread-124352] [transport.py] [_log()] userauth is OK
2025-09-28T12:21:56.390 [DEBUG] [Thread-124352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:21:56.390 [DEBUG] [Thread-124352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:21:56.390 [DEBUG] [Thread-124352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:21:56.390 [DEBUG] [Thread-124352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:21:56.408 [INFO] [Thread-124352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:21:56.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-28T12:21:56.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:21:57.434 [DEBUG] [Thread-124352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:21:57.434 [DEBUG] [Thread-124352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:21:57.483 [DEBUG] [Thread-124352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:21:57.483 [DEBUG] [Thread-124352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:21:57.492 [DEBUG] [Thread-124352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:21:57.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:21:57.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-28T12:21:57.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-28T12:21:57.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:21:57.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:21:57.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:21:57.528 [DEBUG] [Thread-124352] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:07.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:22:07.531 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:22:07.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-28T12:22:08.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 21, 59), 16.37, 33.51, 0.0, 16.0, 18.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:22:08.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:21:59
2025-09-28T12:22:08.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:22:08.352 [DEBUG] [Thread-124354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:08.367 [DEBUG] [Thread-124355] [transport.py] [_log()] starting thread (client mode): 0x2b96eb00
2025-09-28T12:22:08.367 [DEBUG] [Thread-124355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:08.388 [DEBUG] [Thread-124355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:22:08.388 [INFO] [Thread-124355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] Compression: none
2025-09-28T12:22:08.391 [DEBUG] [Thread-124355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:08.407 [DEBUG] [Thread-124355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:08.407 [DEBUG] [Thread-124355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:08.407 [DEBUG] [Thread-124355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:22:08.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:22:08.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:08.408 [DEBUG] [Thread-124355] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:08.408 [DEBUG] [Thread-124355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:08.408 [DEBUG] [Thread-124355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:08.408 [DEBUG] [Thread-124355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:22:08.408 [DEBUG] [Thread-124355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:08.416 [INFO] [Thread-124355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:08.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:08.817 [DEBUG] [Thread-124357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:09.093 [DEBUG] [Thread-124355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:09.094 [DEBUG] [Thread-124355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:09.094 [DEBUG] [Thread-124355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:22:09.134 [DEBUG] [Thread-124355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:09.134 [DEBUG] [Thread-124355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:09.136 [DEBUG] [Thread-124355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:09.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:09.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:22:09.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:22:09.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:22:09.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:09.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:22:09.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:09.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431682 -999.00  +18.70  10.65     38   +4.20 1 1 1 1 1   888    0 14.75 25.60 ----- 14.1 10.7 193.4 21.4 26.1 -26.5 24.7 -26.5 24.6 -24.5 25.7 -25.5
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431682
2025-09-28T12:22:09.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:22:09.157 [DEBUG] [Thread-124355] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:09.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:22:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:22:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:22:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:22:09.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:21:59', tmtdew=16.37, humidity=33.51, cloud=0.0, wind=16.0, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:22:09.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-28T12:22:09.254 [DEBUG] [Thread-124359] [transport.py] [_log()] starting thread (client mode): 0x2b9ac190
2025-09-28T12:22:09.254 [DEBUG] [Thread-124359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:09.272 [DEBUG] [Thread-124359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:22:09.272 [INFO] [Thread-124359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:22:09.279 [DEBUG] [Thread-124359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:09.280 [DEBUG] [Thread-124359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:09.281 [DEBUG] [Thread-124359] [transport.py] [_log()] Compression: none
2025-09-28T12:22:09.281 [DEBUG] [Thread-124359] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:09.340 [DEBUG] [Thread-124359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:09.341 [DEBUG] [Thread-124359] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:09.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:22:09.342 [DEBUG] [Thread-124359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:22:09.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:09.396 [DEBUG] [Thread-124359] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:09.396 [DEBUG] [Thread-124359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:09.396 [DEBUG] [Thread-124359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:09.396 [DEBUG] [Thread-124359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:22:09.396 [DEBUG] [Thread-124359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:09.416 [INFO] [Thread-124359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:09.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:22:09.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:10.386 [DEBUG] [Thread-124359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:10.386 [DEBUG] [Thread-124359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:10.434 [DEBUG] [Thread-124359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:10.434 [DEBUG] [Thread-124359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:10.443 [DEBUG] [Thread-124359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:10.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:10.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-28T12:22:10.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-28T12:22:10.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:10.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:10.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:10.478 [DEBUG] [Thread-124359] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:20.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:22:20.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:22:20.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-28T12:22:21.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 21, 59), 16.37, 33.51, 0.0, 16.0, 18.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:22:21.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:21:59
2025-09-28T12:22:21.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:22:21.315 [DEBUG] [Thread-124361] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb20
2025-09-28T12:22:21.315 [DEBUG] [Thread-124361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:21.334 [DEBUG] [Thread-124361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:22:21.334 [INFO] [Thread-124361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:21.337 [DEBUG] [Thread-124361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] Compression: none
2025-09-28T12:22:21.338 [DEBUG] [Thread-124361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:21.356 [DEBUG] [Thread-124361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:21.357 [DEBUG] [Thread-124361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:21.357 [DEBUG] [Thread-124361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:22:21.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:22:21.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:21.360 [DEBUG] [Thread-124361] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:21.360 [DEBUG] [Thread-124361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:21.360 [DEBUG] [Thread-124361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:21.360 [DEBUG] [Thread-124361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:22:21.360 [DEBUG] [Thread-124361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:21.382 [INFO] [Thread-124361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:21.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:22.126 [DEBUG] [Thread-124361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:22.126 [DEBUG] [Thread-124361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:22.127 [DEBUG] [Thread-124361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:22:22.171 [DEBUG] [Thread-124361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:22.172 [DEBUG] [Thread-124361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:22.175 [DEBUG] [Thread-124361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:22.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:22.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:22:22.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:22:22.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:22:22.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:22.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:22:22.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:22.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:22.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:22:22.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.431682 -999.00  +18.70  10.65     38   +4.20 1 1 1 1 1   888    0 14.75 25.60 ----- 14.1 10.7 193.4 21.4 26.1 -26.5 24.7 -26.5 24.6 -24.5 25.7 -25.5
2025-09-28T12:22:22.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:22:22.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:22:22.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.431682
2025-09-28T12:22:22.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:22:22.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:22:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:22:22.193 [DEBUG] [Thread-124361] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:22:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:22:22.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:21:59', tmtdew=16.37, humidity=33.51, cloud=0.0, wind=16.0, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:21:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:22:22.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-28T12:22:22.287 [DEBUG] [Thread-124364] [transport.py] [_log()] starting thread (client mode): 0x2e348850
2025-09-28T12:22:22.287 [DEBUG] [Thread-124364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:22.301 [DEBUG] [Thread-124364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:22:22.301 [INFO] [Thread-124364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:22.309 [DEBUG] [Thread-124364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:22.310 [DEBUG] [Thread-124364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:22.310 [DEBUG] [Thread-124364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:22.310 [DEBUG] [Thread-124364] [transport.py] [_log()] Compression: none
2025-09-28T12:22:22.310 [DEBUG] [Thread-124364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:22.368 [DEBUG] [Thread-124364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:22.368 [DEBUG] [Thread-124364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:22.369 [DEBUG] [Thread-124364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:22:22.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:22:22.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:22.424 [DEBUG] [Thread-124364] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:22.425 [DEBUG] [Thread-124364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:22.425 [DEBUG] [Thread-124364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:22.425 [DEBUG] [Thread-124364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:22:22.425 [DEBUG] [Thread-124364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:22.444 [INFO] [Thread-124364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:22.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-28T12:22:22.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:23.390 [DEBUG] [Thread-124366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:23.404 [DEBUG] [Thread-124364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:23.404 [DEBUG] [Thread-124364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:23.452 [DEBUG] [Thread-124364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:23.452 [DEBUG] [Thread-124364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:23.461 [DEBUG] [Thread-124364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:23.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:23.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-28T12:22:23.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-28T12:22:23.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:23.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:23.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:23.496 [DEBUG] [Thread-124364] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:33.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:22:33.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:22:33.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:22:34.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 21, 59), 16.37, 33.51, 0.0, 16.0, 18.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:22:34.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:21:59
2025-09-28T12:22:34.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:22:34.353 [DEBUG] [Thread-124367] [transport.py] [_log()] starting thread (client mode): 0x2e3c0310
2025-09-28T12:22:34.353 [DEBUG] [Thread-124367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:34.367 [DEBUG] [Thread-124367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:22:34.367 [INFO] [Thread-124367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:34.368 [DEBUG] [Thread-124367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] Compression: none
2025-09-28T12:22:34.369 [DEBUG] [Thread-124367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:34.393 [DEBUG] [Thread-124367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:34.394 [DEBUG] [Thread-124367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:34.394 [DEBUG] [Thread-124367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:22:34.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:22:34.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:34.396 [DEBUG] [Thread-124367] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:34.396 [DEBUG] [Thread-124367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:34.396 [DEBUG] [Thread-124367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:34.397 [DEBUG] [Thread-124367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:22:34.397 [DEBUG] [Thread-124367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:34.413 [INFO] [Thread-124367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:34.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:35.002 [DEBUG] [Thread-124367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:35.002 [DEBUG] [Thread-124367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:35.002 [DEBUG] [Thread-124367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:22:35.043 [DEBUG] [Thread-124367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:35.043 [DEBUG] [Thread-124367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:35.046 [DEBUG] [Thread-124367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:35.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:35.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:22:35.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:22:35.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:22:35.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:35.061 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:22:35.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:35.061 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432029 -999.00  +18.90   7.32     37   +4.10 1 1 1 1 1   888    0 14.95 30.00 ----- 11.0 7.3 242.2 12.6 26.1 -25.6 24.8 -24.8 24.6 -24.5 25.8 -25.3
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432029
2025-09-28T12:22:35.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:22:35.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:21:59', tmtdew=16.37, humidity=33.51, cloud=0.0, wind=16.0, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:22:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:22:35.063 [DEBUG] [Thread-124367] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:35.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-28T12:22:35.169 [DEBUG] [Thread-124370] [transport.py] [_log()] starting thread (client mode): 0x2b9ca7d0
2025-09-28T12:22:35.169 [DEBUG] [Thread-124370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:35.184 [DEBUG] [Thread-124370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:22:35.184 [INFO] [Thread-124370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:22:35.191 [DEBUG] [Thread-124370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:35.192 [DEBUG] [Thread-124370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:22:35.192 [DEBUG] [Thread-124370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:35.192 [DEBUG] [Thread-124370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:35.192 [DEBUG] [Thread-124370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:35.192 [DEBUG] [Thread-124370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:35.193 [DEBUG] [Thread-124370] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:35.194 [DEBUG] [Thread-124370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:35.194 [DEBUG] [Thread-124370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:35.194 [DEBUG] [Thread-124370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:35.194 [DEBUG] [Thread-124370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:35.194 [DEBUG] [Thread-124370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:35.195 [DEBUG] [Thread-124370] [transport.py] [_log()] Compression: none
2025-09-28T12:22:35.195 [DEBUG] [Thread-124370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:35.252 [DEBUG] [Thread-124370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:35.252 [DEBUG] [Thread-124370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:35.253 [DEBUG] [Thread-124370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:22:35.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:22:35.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:35.308 [DEBUG] [Thread-124370] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:35.308 [DEBUG] [Thread-124370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:35.309 [DEBUG] [Thread-124370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:35.309 [DEBUG] [Thread-124370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:22:35.309 [DEBUG] [Thread-124370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:35.328 [INFO] [Thread-124370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:35.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-28T12:22:35.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:36.325 [DEBUG] [Thread-124370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:36.325 [DEBUG] [Thread-124370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:36.373 [DEBUG] [Thread-124370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:36.373 [DEBUG] [Thread-124370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:36.381 [DEBUG] [Thread-124370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:36.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:36.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-28T12:22:36.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-28T12:22:36.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:36.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:36.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:36.414 [DEBUG] [Thread-124370] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:38.432 [DEBUG] [Thread-124372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:45.408 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:45.409 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:46.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:22:46.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:22:46.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-28T12:22:47.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 22, 31), 16.35, 33.55, 0.0, 16.59, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:22:47.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:22:31
2025-09-28T12:22:47.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:22:47.261 [DEBUG] [Thread-124373] [transport.py] [_log()] starting thread (client mode): 0x2b9c9f90
2025-09-28T12:22:47.262 [DEBUG] [Thread-124373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:47.281 [DEBUG] [Thread-124373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:22:47.281 [INFO] [Thread-124373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:47.284 [DEBUG] [Thread-124373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] Compression: none
2025-09-28T12:22:47.285 [DEBUG] [Thread-124373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:47.301 [DEBUG] [Thread-124373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:47.301 [DEBUG] [Thread-124373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:47.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:22:47.302 [DEBUG] [Thread-124373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:22:47.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:47.304 [DEBUG] [Thread-124373] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:47.304 [DEBUG] [Thread-124373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:47.304 [DEBUG] [Thread-124373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:47.304 [DEBUG] [Thread-124373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:22:47.304 [DEBUG] [Thread-124373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:47.326 [INFO] [Thread-124373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:47.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:48.073 [DEBUG] [Thread-124373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:48.073 [DEBUG] [Thread-124373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:48.074 [DEBUG] [Thread-124373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:22:48.114 [DEBUG] [Thread-124373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:48.114 [DEBUG] [Thread-124373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:48.117 [DEBUG] [Thread-124373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:48.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:48.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:22:48.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:22:48.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:22:48.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:48.129 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:22:48.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:48.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432029 -999.00  +18.90   7.32     37   +4.10 1 1 1 1 1   888    0 14.95 30.00 ----- 11.0 7.3 242.2 12.6 26.1 -25.6 24.8 -24.8 24.6 -24.5 25.8 -25.3
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432029
2025-09-28T12:22:48.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:22:48.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:22:48.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:22:48.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:22:48.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:22:48.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:22:31', tmtdew=16.35, humidity=33.55, cloud=0.0, wind=16.59, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:22:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:22:48.132 [DEBUG] [Thread-124373] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:48.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-28T12:22:48.227 [DEBUG] [Thread-124376] [transport.py] [_log()] starting thread (client mode): 0x2b98aad0
2025-09-28T12:22:48.227 [DEBUG] [Thread-124376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:22:48.245 [DEBUG] [Thread-124376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:22:48.246 [INFO] [Thread-124376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:22:48.253 [DEBUG] [Thread-124376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] client lang: <none>
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] server lang: <none>
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] kex follows: False
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] Compression: none
2025-09-28T12:22:48.254 [DEBUG] [Thread-124376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:22:48.312 [DEBUG] [Thread-124376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:22:48.312 [DEBUG] [Thread-124376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:22:48.313 [DEBUG] [Thread-124376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:22:48.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:22:48.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:22:48.368 [DEBUG] [Thread-124376] [transport.py] [_log()] userauth is OK
2025-09-28T12:22:48.368 [DEBUG] [Thread-124376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:22:48.368 [DEBUG] [Thread-124376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:22:48.368 [DEBUG] [Thread-124376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:22:48.368 [DEBUG] [Thread-124376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:22:48.389 [INFO] [Thread-124376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:22:48.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-28T12:22:48.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:22:49.477 [DEBUG] [Thread-124376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:22:49.478 [DEBUG] [Thread-124376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:22:49.525 [DEBUG] [Thread-124376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:22:49.525 [DEBUG] [Thread-124376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:22:49.534 [DEBUG] [Thread-124376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:22:49.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:22:49.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-28T12:22:49.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-28T12:22:49.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:22:49.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:22:49.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:22:49.568 [DEBUG] [Thread-124376] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:22:53.464 [DEBUG] [Thread-124378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:22:59.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:22:59.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:22:59.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-28T12:23:00.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 22, 31), 16.35, 33.55, 0.0, 16.59, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:23:00.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:22:31
2025-09-28T12:23:00.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:23:00.410 [DEBUG] [Thread-124379] [transport.py] [_log()] starting thread (client mode): 0x2b9cbf40
2025-09-28T12:23:00.410 [DEBUG] [Thread-124379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:00.430 [DEBUG] [Thread-124379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:23:00.430 [INFO] [Thread-124379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:00.433 [DEBUG] [Thread-124379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] Compression: none
2025-09-28T12:23:00.434 [DEBUG] [Thread-124379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:00.454 [DEBUG] [Thread-124379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:00.454 [DEBUG] [Thread-124379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:00.455 [DEBUG] [Thread-124379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:23:00.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:23:00.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:00.457 [DEBUG] [Thread-124379] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:00.457 [DEBUG] [Thread-124379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:00.457 [DEBUG] [Thread-124379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:00.458 [DEBUG] [Thread-124379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:23:00.458 [DEBUG] [Thread-124379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:00.480 [INFO] [Thread-124379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:00.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:01.078 [DEBUG] [Thread-124379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:01.078 [DEBUG] [Thread-124379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:01.079 [DEBUG] [Thread-124379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:23:01.119 [DEBUG] [Thread-124379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:01.119 [DEBUG] [Thread-124379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:01.122 [DEBUG] [Thread-124379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:01.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:01.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:23:01.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:23:01.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:23:01.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:01.145 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:23:01.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:01.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:01.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:23:01.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432376 -999.00  +18.80   8.39     37   +4.00 1 1 1 1 1   888    0 15.32 35.54 ----- 7.8 8.4 211.2 12.5 26.1 -25.7 24.8 -25.0 24.6 -24.4 25.8 -26.5
2025-09-28T12:23:01.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:23:01.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:23:01.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432376
2025-09-28T12:23:01.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:23:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:23:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:23:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:23:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:23:01.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:22:31', tmtdew=16.35, humidity=33.55, cloud=0.0, wind=16.59, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:22:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:23:01.147 [DEBUG] [Thread-124379] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:01.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-28T12:23:01.244 [DEBUG] [Thread-124382] [transport.py] [_log()] starting thread (client mode): 0x2b9cad70
2025-09-28T12:23:01.244 [DEBUG] [Thread-124382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:01.259 [DEBUG] [Thread-124382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:23:01.259 [INFO] [Thread-124382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:23:01.266 [DEBUG] [Thread-124382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:01.266 [DEBUG] [Thread-124382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:23:01.266 [DEBUG] [Thread-124382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:01.266 [DEBUG] [Thread-124382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] Compression: none
2025-09-28T12:23:01.267 [DEBUG] [Thread-124382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:01.327 [DEBUG] [Thread-124382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:01.328 [DEBUG] [Thread-124382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:01.328 [DEBUG] [Thread-124382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:23:01.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:23:01.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:01.384 [DEBUG] [Thread-124382] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:01.384 [DEBUG] [Thread-124382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:01.384 [DEBUG] [Thread-124382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:01.385 [DEBUG] [Thread-124382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:23:01.385 [DEBUG] [Thread-124382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:01.403 [INFO] [Thread-124382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:01.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-28T12:23:01.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:02.419 [DEBUG] [Thread-124382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:02.419 [DEBUG] [Thread-124382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:02.467 [DEBUG] [Thread-124382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:02.467 [DEBUG] [Thread-124382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:02.476 [DEBUG] [Thread-124382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:02.484 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:02.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-28T12:23:02.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-28T12:23:02.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:02.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:02.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:02.510 [DEBUG] [Thread-124382] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:08.509 [DEBUG] [Thread-124384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:08.868 [DEBUG] [Thread-124385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:12.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:23:12.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:23:12.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-28T12:23:13.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 23, 3), 16.28, 33.7, 0.0, 14.08, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:23:13.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:23:03
2025-09-28T12:23:13.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:23:13.354 [DEBUG] [Thread-124386] [transport.py] [_log()] starting thread (client mode): 0x2b9883a0
2025-09-28T12:23:13.354 [DEBUG] [Thread-124386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:13.374 [DEBUG] [Thread-124386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:23:13.374 [INFO] [Thread-124386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] Compression: none
2025-09-28T12:23:13.377 [DEBUG] [Thread-124386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:13.396 [DEBUG] [Thread-124386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:13.396 [DEBUG] [Thread-124386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:13.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:23:13.397 [DEBUG] [Thread-124386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:23:13.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:13.399 [DEBUG] [Thread-124386] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:13.400 [DEBUG] [Thread-124386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:13.400 [DEBUG] [Thread-124386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:13.400 [DEBUG] [Thread-124386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:23:13.400 [DEBUG] [Thread-124386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:13.418 [INFO] [Thread-124386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:13.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:14.187 [DEBUG] [Thread-124386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:14.187 [DEBUG] [Thread-124386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:14.188 [DEBUG] [Thread-124386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:23:14.228 [DEBUG] [Thread-124386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:14.229 [DEBUG] [Thread-124386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:14.233 [DEBUG] [Thread-124386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:14.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:14.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:23:14.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:23:14.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:23:14.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:14.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:23:14.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:14.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432376 -999.00  +18.80   8.39     37   +4.00 1 1 1 1 1   888    0 15.32 35.54 ----- 7.8 8.4 211.2 12.5 26.1 -25.7 24.8 -25.0 24.6 -24.4 25.8 -26.5
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432376
2025-09-28T12:23:14.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:23:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:23:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:23:14.252 [DEBUG] [Thread-124386] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:14.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:23:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:23:14.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:23:03', tmtdew=16.28, humidity=33.7, cloud=0.0, wind=14.08, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:22:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:23:14.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-28T12:23:14.349 [DEBUG] [Thread-124389] [transport.py] [_log()] starting thread (client mode): 0x2b9ca8c0
2025-09-28T12:23:14.350 [DEBUG] [Thread-124389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:14.364 [DEBUG] [Thread-124389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:23:14.364 [INFO] [Thread-124389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] Compression: none
2025-09-28T12:23:14.372 [DEBUG] [Thread-124389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:14.430 [DEBUG] [Thread-124389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:14.431 [DEBUG] [Thread-124389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:14.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:23:14.431 [DEBUG] [Thread-124389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:23:14.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:14.487 [DEBUG] [Thread-124389] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:14.487 [DEBUG] [Thread-124389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:14.488 [DEBUG] [Thread-124389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:14.488 [DEBUG] [Thread-124389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:23:14.488 [DEBUG] [Thread-124389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:14.506 [INFO] [Thread-124389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:14.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:23:14.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:15.476 [DEBUG] [Thread-124389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:15.476 [DEBUG] [Thread-124389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:15.524 [DEBUG] [Thread-124389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:15.524 [DEBUG] [Thread-124389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:15.533 [DEBUG] [Thread-124389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:15.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:15.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-28T12:23:15.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-28T12:23:15.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:15.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:15.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:15.568 [DEBUG] [Thread-124389] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:23.554 [DEBUG] [Thread-124391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:25.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:23:25.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:23:25.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-28T12:23:26.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 23, 3), 16.28, 33.7, 0.0, 14.08, 18.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:23:26.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:23:03
2025-09-28T12:23:26.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:23:26.399 [DEBUG] [Thread-124392] [transport.py] [_log()] starting thread (client mode): 0x2b9c31c0
2025-09-28T12:23:26.400 [DEBUG] [Thread-124392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:26.411 [DEBUG] [Thread-124392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:23:26.411 [INFO] [Thread-124392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:26.414 [DEBUG] [Thread-124392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] Compression: none
2025-09-28T12:23:26.415 [DEBUG] [Thread-124392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:26.430 [DEBUG] [Thread-124392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:26.431 [DEBUG] [Thread-124392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:26.431 [DEBUG] [Thread-124392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:23:26.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:23:26.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:26.432 [DEBUG] [Thread-124392] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:26.433 [DEBUG] [Thread-124392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:26.433 [DEBUG] [Thread-124392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:26.433 [DEBUG] [Thread-124392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:23:26.433 [DEBUG] [Thread-124392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:26.444 [INFO] [Thread-124392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:26.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:27.168 [DEBUG] [Thread-124392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:27.169 [DEBUG] [Thread-124392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:27.169 [DEBUG] [Thread-124392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:23:27.209 [DEBUG] [Thread-124392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:27.209 [DEBUG] [Thread-124392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:27.211 [DEBUG] [Thread-124392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:27.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:27.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:23:27.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:23:27.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:23:27.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:27.229 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:23:27.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:27.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:27.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:23:27.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432376 -999.00  +18.80   8.39     37   +4.00 1 1 1 1 1   888    0 15.32 35.54 ----- 7.8 8.4 211.2 12.5 26.1 -25.7 24.8 -25.0 24.6 -24.4 25.8 -26.5
2025-09-28T12:23:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:23:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:23:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432376
2025-09-28T12:23:27.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:23:27.230 [DEBUG] [Thread-124392] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:27.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:23:27.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:23:27.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:23:27.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:23:27.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:23:03', tmtdew=16.28, humidity=33.7, cloud=0.0, wind=14.08, temperature=18.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:22:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:23:27.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-28T12:23:27.321 [DEBUG] [Thread-124395] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T12:23:27.321 [DEBUG] [Thread-124395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:27.336 [DEBUG] [Thread-124395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:23:27.336 [INFO] [Thread-124395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:23:27.343 [DEBUG] [Thread-124395] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:27.344 [DEBUG] [Thread-124395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:27.345 [DEBUG] [Thread-124395] [transport.py] [_log()] Compression: none
2025-09-28T12:23:27.346 [DEBUG] [Thread-124395] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:27.407 [DEBUG] [Thread-124395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:27.408 [DEBUG] [Thread-124395] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:27.408 [DEBUG] [Thread-124395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:23:27.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:23:27.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:27.463 [DEBUG] [Thread-124395] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:27.464 [DEBUG] [Thread-124395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:27.464 [DEBUG] [Thread-124395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:27.464 [DEBUG] [Thread-124395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:23:27.464 [DEBUG] [Thread-124395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:27.483 [INFO] [Thread-124395] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:27.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:23:27.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:28.450 [DEBUG] [Thread-124395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:28.451 [DEBUG] [Thread-124395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:28.498 [DEBUG] [Thread-124395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:28.498 [DEBUG] [Thread-124395] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:28.507 [DEBUG] [Thread-124395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:28.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:28.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-28T12:23:28.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-28T12:23:28.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:28.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:28.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:28.541 [DEBUG] [Thread-124395] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:38.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:23:38.536 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:23:38.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-28T12:23:38.604 [DEBUG] [Thread-124397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 23, 35), 16.96, 32.2, 0.0, 15.48, 18.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:23:39.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:23:35
2025-09-28T12:23:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:23:39.364 [DEBUG] [Thread-124398] [transport.py] [_log()] starting thread (client mode): 0x2b9ac280
2025-09-28T12:23:39.364 [DEBUG] [Thread-124398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:39.386 [DEBUG] [Thread-124398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:23:39.386 [INFO] [Thread-124398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:39.389 [DEBUG] [Thread-124398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] Compression: none
2025-09-28T12:23:39.390 [DEBUG] [Thread-124398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:39.409 [DEBUG] [Thread-124398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:39.410 [DEBUG] [Thread-124398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:39.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:23:39.411 [DEBUG] [Thread-124398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:23:39.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:39.413 [DEBUG] [Thread-124398] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:39.413 [DEBUG] [Thread-124398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:39.413 [DEBUG] [Thread-124398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:39.413 [DEBUG] [Thread-124398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:23:39.413 [DEBUG] [Thread-124398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:39.449 [INFO] [Thread-124398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:39.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:40.076 [DEBUG] [Thread-124398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:40.076 [DEBUG] [Thread-124398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:40.077 [DEBUG] [Thread-124398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:23:40.117 [DEBUG] [Thread-124398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:40.117 [DEBUG] [Thread-124398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:40.122 [DEBUG] [Thread-124398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:40.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:40.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:23:40.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:23:40.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:23:40.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:40.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:23:40.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:40.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:23:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432723 -999.00  +19.00   4.00     37   +4.10 1 1 1 1 1   888    0 15.74 40.97 ----- 6.0 4.0 156.9 10.1 26.2 -25.8 24.8 -24.9 24.6 -24.6 26.0 -24.9
2025-09-28T12:23:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:23:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:23:40.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432723
2025-09-28T12:23:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:23:40.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:23:40.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:23:35', tmtdew=16.96, humidity=32.2, cloud=0.0, wind=15.48, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:23:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:23:40.157 [DEBUG] [Thread-124398] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:40.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-28T12:23:40.255 [DEBUG] [Thread-124401] [transport.py] [_log()] starting thread (client mode): 0x2b9c2e60
2025-09-28T12:23:40.255 [DEBUG] [Thread-124401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:40.269 [DEBUG] [Thread-124401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:23:40.269 [INFO] [Thread-124401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] Compression: none
2025-09-28T12:23:40.277 [DEBUG] [Thread-124401] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:40.335 [DEBUG] [Thread-124401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:40.335 [DEBUG] [Thread-124401] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:40.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:23:40.336 [DEBUG] [Thread-124401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:23:40.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:40.391 [DEBUG] [Thread-124401] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:40.392 [DEBUG] [Thread-124401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:40.392 [DEBUG] [Thread-124401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:40.392 [DEBUG] [Thread-124401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:23:40.392 [DEBUG] [Thread-124401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:40.411 [INFO] [Thread-124401] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:40.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-28T12:23:40.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:41.422 [DEBUG] [Thread-124401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:41.422 [DEBUG] [Thread-124401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:41.470 [DEBUG] [Thread-124401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:41.470 [DEBUG] [Thread-124401] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:41.479 [DEBUG] [Thread-124401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:41.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:41.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')
2025-09-28T12:23:41.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') -> 00000000
2025-09-28T12:23:41.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:41.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:41.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:41.513 [DEBUG] [Thread-124401] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:45.550 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:45.551 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:51.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:23:51.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:23:51.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-28T12:23:52.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 23, 35), 16.96, 32.2, 0.0, 15.48, 18.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:23:52.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:23:35
2025-09-28T12:23:52.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:23:52.355 [DEBUG] [Thread-124403] [transport.py] [_log()] starting thread (client mode): 0x2b9cbf10
2025-09-28T12:23:52.355 [DEBUG] [Thread-124403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:52.376 [DEBUG] [Thread-124403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:23:52.376 [INFO] [Thread-124403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:23:52.379 [DEBUG] [Thread-124403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] Compression: none
2025-09-28T12:23:52.380 [DEBUG] [Thread-124403] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:52.394 [DEBUG] [Thread-124403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:52.394 [DEBUG] [Thread-124403] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:52.394 [DEBUG] [Thread-124403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:23:52.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:23:52.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:52.395 [DEBUG] [Thread-124403] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:52.395 [DEBUG] [Thread-124403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:52.395 [DEBUG] [Thread-124403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:52.395 [DEBUG] [Thread-124403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:23:52.395 [DEBUG] [Thread-124403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:52.404 [INFO] [Thread-124403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:52.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:53.140 [DEBUG] [Thread-124403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:53.141 [DEBUG] [Thread-124403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:53.141 [DEBUG] [Thread-124403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:23:53.182 [DEBUG] [Thread-124403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:53.182 [DEBUG] [Thread-124403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:53.184 [DEBUG] [Thread-124403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:53.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:53.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:23:53.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:23:53.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:23:53.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:53.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:23:53.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.432723 -999.00  +19.00   4.00     37   +4.10 1 1 1 1 1   888    0 15.74 40.97 ----- 6.0 4.0 156.9 10.1 26.2 -25.8 24.8 -24.9 24.6 -24.6 26.0 -24.9
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.432723
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:23:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:23:35', tmtdew=16.96, humidity=32.2, cloud=0.0, wind=15.48, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:23:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:23:53.201 [DEBUG] [Thread-124403] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:23:53.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-28T12:23:53.285 [DEBUG] [Thread-124406] [transport.py] [_log()] starting thread (client mode): 0x2b9ca380
2025-09-28T12:23:53.285 [DEBUG] [Thread-124406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:23:53.300 [DEBUG] [Thread-124406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:23:53.300 [INFO] [Thread-124406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] client lang: <none>
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] server lang: <none>
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] kex follows: False
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:23:53.308 [DEBUG] [Thread-124406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:23:53.309 [DEBUG] [Thread-124406] [transport.py] [_log()] Compression: none
2025-09-28T12:23:53.309 [DEBUG] [Thread-124406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:23:53.366 [DEBUG] [Thread-124406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:23:53.366 [DEBUG] [Thread-124406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:23:53.366 [DEBUG] [Thread-124406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:23:53.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:23:53.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:23:53.425 [DEBUG] [Thread-124406] [transport.py] [_log()] userauth is OK
2025-09-28T12:23:53.425 [DEBUG] [Thread-124406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:23:53.425 [DEBUG] [Thread-124406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:23:53.425 [DEBUG] [Thread-124406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:23:53.425 [DEBUG] [Thread-124406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:23:53.443 [INFO] [Thread-124406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:23:53.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-28T12:23:53.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:23:53.632 [DEBUG] [Thread-124408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:23:54.406 [DEBUG] [Thread-124406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:23:54.406 [DEBUG] [Thread-124406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:23:54.454 [DEBUG] [Thread-124406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:23:54.454 [DEBUG] [Thread-124406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:23:54.462 [DEBUG] [Thread-124406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:23:54.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:23:54.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-28T12:23:54.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-28T12:23:54.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:23:54.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:23:54.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:23:54.494 [DEBUG] [Thread-124406] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:04.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:24:04.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:24:04.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:24:05.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 23, 35), 16.96, 32.2, 0.0, 15.48, 18.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:24:05.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:23:35
2025-09-28T12:24:05.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:24:05.307 [DEBUG] [Thread-124409] [transport.py] [_log()] starting thread (client mode): 0x2b9c0c10
2025-09-28T12:24:05.307 [DEBUG] [Thread-124409] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:05.326 [DEBUG] [Thread-124409] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:24:05.326 [INFO] [Thread-124409] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:24:05.329 [DEBUG] [Thread-124409] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:05.329 [DEBUG] [Thread-124409] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:24:05.329 [DEBUG] [Thread-124409] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:05.330 [DEBUG] [Thread-124409] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:05.331 [DEBUG] [Thread-124409] [transport.py] [_log()] Compression: none
2025-09-28T12:24:05.331 [DEBUG] [Thread-124409] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:05.349 [DEBUG] [Thread-124409] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:05.349 [DEBUG] [Thread-124409] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:05.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:24:05.350 [DEBUG] [Thread-124409] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:24:05.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:05.352 [DEBUG] [Thread-124409] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:05.352 [DEBUG] [Thread-124409] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:05.352 [DEBUG] [Thread-124409] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:05.352 [DEBUG] [Thread-124409] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:24:05.352 [DEBUG] [Thread-124409] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:05.376 [INFO] [Thread-124409] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:05.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:05.958 [DEBUG] [Thread-124409] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:05.958 [DEBUG] [Thread-124409] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:05.958 [DEBUG] [Thread-124409] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:24:05.999 [DEBUG] [Thread-124409] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:05.999 [DEBUG] [Thread-124409] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:06.001 [DEBUG] [Thread-124409] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:06.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:06.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:24:06.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:24:06.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:24:06.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:06.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:24:06.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:06.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:06.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:24:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433071 -999.00  +19.20  10.98     35   +3.70 1 1 1 1 1   888    0 15.48 46.01 ----- 15.2 11.0 238.0 17.4 26.2 -26.0 24.8 -26.0 24.8 -24.2 26.1 -25.8
2025-09-28T12:24:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:24:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:24:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433071
2025-09-28T12:24:06.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:24:06.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:24:06.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:24:06.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:24:06.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:24:06.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:23:35', tmtdew=16.96, humidity=32.2, cloud=0.0, wind=15.48, temperature=18.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:23:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:24:06.018 [DEBUG] [Thread-124409] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:06.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:24:06.113 [DEBUG] [Thread-124412] [transport.py] [_log()] starting thread (client mode): 0x30dde080
2025-09-28T12:24:06.113 [DEBUG] [Thread-124412] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:06.129 [DEBUG] [Thread-124412] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:24:06.129 [INFO] [Thread-124412] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:06.137 [DEBUG] [Thread-124412] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:06.138 [DEBUG] [Thread-124412] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:06.138 [DEBUG] [Thread-124412] [transport.py] [_log()] Compression: none
2025-09-28T12:24:06.138 [DEBUG] [Thread-124412] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:06.195 [DEBUG] [Thread-124412] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:06.196 [DEBUG] [Thread-124412] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:06.196 [DEBUG] [Thread-124412] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:24:06.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:24:06.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:06.251 [DEBUG] [Thread-124412] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:06.252 [DEBUG] [Thread-124412] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:06.252 [DEBUG] [Thread-124412] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:06.252 [DEBUG] [Thread-124412] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:24:06.252 [DEBUG] [Thread-124412] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:06.271 [INFO] [Thread-124412] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:06.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-28T12:24:06.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:07.304 [DEBUG] [Thread-124412] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:07.304 [DEBUG] [Thread-124412] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:07.352 [DEBUG] [Thread-124412] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:07.352 [DEBUG] [Thread-124412] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:07.361 [DEBUG] [Thread-124412] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:07.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:07.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-28T12:24:07.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-28T12:24:07.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:07.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:07.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:07.395 [DEBUG] [Thread-124412] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:08.669 [DEBUG] [Thread-124414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:08.918 [DEBUG] [Thread-124415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:17.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:24:17.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:24:17.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-28T12:24:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 24, 7), 16.92, 32.3, 0.0, 15.41, 18.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:24:17.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:24:07
2025-09-28T12:24:18.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:24:18.215 [DEBUG] [Thread-124416] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-28T12:24:18.215 [DEBUG] [Thread-124416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:18.236 [DEBUG] [Thread-124416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:24:18.236 [INFO] [Thread-124416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:24:18.239 [DEBUG] [Thread-124416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:18.239 [DEBUG] [Thread-124416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:24:18.239 [DEBUG] [Thread-124416] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:18.240 [DEBUG] [Thread-124416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:18.241 [DEBUG] [Thread-124416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:18.241 [DEBUG] [Thread-124416] [transport.py] [_log()] Compression: none
2025-09-28T12:24:18.241 [DEBUG] [Thread-124416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:18.260 [DEBUG] [Thread-124416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:18.260 [DEBUG] [Thread-124416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:18.261 [DEBUG] [Thread-124416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:24:18.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:24:18.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:18.263 [DEBUG] [Thread-124416] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:18.263 [DEBUG] [Thread-124416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:18.263 [DEBUG] [Thread-124416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:18.263 [DEBUG] [Thread-124416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:24:18.263 [DEBUG] [Thread-124416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:18.287 [INFO] [Thread-124416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:18.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:18.910 [DEBUG] [Thread-124416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:18.910 [DEBUG] [Thread-124416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:18.910 [DEBUG] [Thread-124416] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:24:18.951 [DEBUG] [Thread-124416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:18.951 [DEBUG] [Thread-124416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:18.954 [DEBUG] [Thread-124416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:18.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:18.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:24:18.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:24:18.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:24:18.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:18.976 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:24:18.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:18.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:18.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:24:18.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433071 -999.00  +19.20  10.98     35   +3.70 1 1 1 1 1   888    0 15.48 46.01 ----- 15.2 11.0 238.0 17.4 26.2 -26.0 24.8 -26.0 24.8 -24.2 26.1 -25.8
2025-09-28T12:24:18.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:24:18.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:24:18.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433071
2025-09-28T12:24:18.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:24:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:24:18.978 [DEBUG] [Thread-124416] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:24:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:24:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:24:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:24:07', tmtdew=16.92, humidity=32.3, cloud=0.0, wind=15.41, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:23:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:24:19.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-28T12:24:19.082 [DEBUG] [Thread-124419] [transport.py] [_log()] starting thread (client mode): 0x2b9cc4f0
2025-09-28T12:24:19.082 [DEBUG] [Thread-124419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:19.097 [DEBUG] [Thread-124419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:24:19.097 [INFO] [Thread-124419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:24:19.104 [DEBUG] [Thread-124419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] Compression: none
2025-09-28T12:24:19.105 [DEBUG] [Thread-124419] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:19.164 [DEBUG] [Thread-124419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:19.164 [DEBUG] [Thread-124419] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:19.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:24:19.165 [DEBUG] [Thread-124419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:24:19.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:19.225 [DEBUG] [Thread-124419] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:19.225 [DEBUG] [Thread-124419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:19.225 [DEBUG] [Thread-124419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:19.226 [DEBUG] [Thread-124419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:24:19.226 [DEBUG] [Thread-124419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:19.245 [INFO] [Thread-124419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:19.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-28T12:24:19.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:20.252 [DEBUG] [Thread-124419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:20.252 [DEBUG] [Thread-124419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:20.300 [DEBUG] [Thread-124419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:20.300 [DEBUG] [Thread-124419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:20.309 [DEBUG] [Thread-124419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:20.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:20.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-28T12:24:20.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-28T12:24:20.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:20.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:20.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:20.345 [DEBUG] [Thread-124419] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:23.712 [DEBUG] [Thread-124421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:30.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:24:30.346 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:24:30.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-28T12:24:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 24, 7), 16.92, 32.3, 0.0, 15.41, 18.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:24:30.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:24:07
2025-09-28T12:24:31.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:24:31.205 [DEBUG] [Thread-124422] [transport.py] [_log()] starting thread (client mode): 0x2b9cded0
2025-09-28T12:24:31.205 [DEBUG] [Thread-124422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:31.225 [DEBUG] [Thread-124422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:24:31.226 [INFO] [Thread-124422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] Compression: none
2025-09-28T12:24:31.229 [DEBUG] [Thread-124422] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:31.243 [DEBUG] [Thread-124422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:31.244 [DEBUG] [Thread-124422] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:31.244 [DEBUG] [Thread-124422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:24:31.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:24:31.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:31.244 [DEBUG] [Thread-124422] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:31.244 [DEBUG] [Thread-124422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:31.245 [DEBUG] [Thread-124422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:31.245 [DEBUG] [Thread-124422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:24:31.245 [DEBUG] [Thread-124422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:31.254 [INFO] [Thread-124422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:31.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:32.048 [DEBUG] [Thread-124422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:32.048 [DEBUG] [Thread-124422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:32.048 [DEBUG] [Thread-124422] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:24:32.089 [DEBUG] [Thread-124422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:32.089 [DEBUG] [Thread-124422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:32.090 [DEBUG] [Thread-124422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:32.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:32.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:24:32.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:24:32.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:24:32.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:32.102 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:24:32.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433071 -999.00  +19.20  10.98     35   +3.70 1 1 1 1 1   888    0 15.48 46.01 ----- 15.2 11.0 238.0 17.4 26.2 -26.0 24.8 -26.0 24.8 -24.2 26.1 -25.8
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433071
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:24:32.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:24:07', tmtdew=16.92, humidity=32.3, cloud=0.0, wind=15.41, temperature=18.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:23:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:24:32.103 [DEBUG] [Thread-124422] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:32.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-28T12:24:32.187 [DEBUG] [Thread-124425] [transport.py] [_log()] starting thread (client mode): 0x2e374370
2025-09-28T12:24:32.187 [DEBUG] [Thread-124425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:32.202 [DEBUG] [Thread-124425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:24:32.202 [INFO] [Thread-124425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] Compression: none
2025-09-28T12:24:32.210 [DEBUG] [Thread-124425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:32.266 [DEBUG] [Thread-124425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:32.266 [DEBUG] [Thread-124425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:32.266 [DEBUG] [Thread-124425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:24:32.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:24:32.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:32.323 [DEBUG] [Thread-124425] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:32.323 [DEBUG] [Thread-124425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:32.323 [DEBUG] [Thread-124425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:32.323 [DEBUG] [Thread-124425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:24:32.323 [DEBUG] [Thread-124425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:32.338 [INFO] [Thread-124425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:32.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-28T12:24:32.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:33.329 [DEBUG] [Thread-124425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:33.329 [DEBUG] [Thread-124425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:33.377 [DEBUG] [Thread-124425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:33.377 [DEBUG] [Thread-124425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:33.386 [DEBUG] [Thread-124425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:33.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:33.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-28T12:24:33.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-28T12:24:33.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:33.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:33.414 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:33.422 [DEBUG] [Thread-124425] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:38.750 [DEBUG] [Thread-124427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:43.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:24:43.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:24:43.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-28T12:24:43.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 24, 39), 17.62, 30.75, 0.0, 16.87, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:24:43.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:24:39
2025-09-28T12:24:44.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:24:44.251 [DEBUG] [Thread-124428] [transport.py] [_log()] starting thread (client mode): 0x2b98a7d0
2025-09-28T12:24:44.251 [DEBUG] [Thread-124428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:44.271 [DEBUG] [Thread-124428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:24:44.271 [INFO] [Thread-124428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:44.274 [DEBUG] [Thread-124428] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] Compression: none
2025-09-28T12:24:44.275 [DEBUG] [Thread-124428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:44.291 [DEBUG] [Thread-124428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:44.292 [DEBUG] [Thread-124428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:44.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:24:44.293 [DEBUG] [Thread-124428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:24:44.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:44.337 [DEBUG] [Thread-124428] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:44.337 [DEBUG] [Thread-124428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:44.337 [DEBUG] [Thread-124428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:44.337 [DEBUG] [Thread-124428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:24:44.337 [DEBUG] [Thread-124428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:44.358 [INFO] [Thread-124428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:44.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:44.966 [DEBUG] [Thread-124428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:44.967 [DEBUG] [Thread-124428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:44.967 [DEBUG] [Thread-124428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:24:45.007 [DEBUG] [Thread-124428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:45.008 [DEBUG] [Thread-124428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:45.010 [DEBUG] [Thread-124428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:45.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:45.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:24:45.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:24:45.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:24:45.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:45.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:24:45.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:45.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:45.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:24:45.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433418 -999.00  +19.10   6.53     34   +3.20 1 1 1 1 1   888    0 15.70 58.83 ----- 12.5 6.5 233.9 16.9 25.9 -27.7 24.8 -24.6 24.6 -25.8 25.9 -28.2
2025-09-28T12:24:45.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:24:45.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:24:45.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433418
2025-09-28T12:24:45.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:24:45.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:24:45.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:24:45.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:24:45.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:24:45.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:24:39', tmtdew=17.62, humidity=30.75, cloud=0.0, wind=16.87, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:24:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:24:45.035 [DEBUG] [Thread-124428] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:45.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-28T12:24:45.132 [DEBUG] [Thread-124431] [transport.py] [_log()] starting thread (client mode): 0x2b98ae60
2025-09-28T12:24:45.132 [DEBUG] [Thread-124431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:45.146 [DEBUG] [Thread-124431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:24:45.146 [INFO] [Thread-124431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:24:45.154 [DEBUG] [Thread-124431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:45.154 [DEBUG] [Thread-124431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:24:45.154 [DEBUG] [Thread-124431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] Compression: none
2025-09-28T12:24:45.155 [DEBUG] [Thread-124431] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:45.210 [DEBUG] [Thread-124431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:45.211 [DEBUG] [Thread-124431] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:45.211 [DEBUG] [Thread-124431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:24:45.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:24:45.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:45.267 [DEBUG] [Thread-124431] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:45.267 [DEBUG] [Thread-124431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:45.267 [DEBUG] [Thread-124431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:45.268 [DEBUG] [Thread-124431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:24:45.268 [DEBUG] [Thread-124431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:45.290 [INFO] [Thread-124431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:45.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-28T12:24:45.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:45.694 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:45.695 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:46.332 [DEBUG] [Thread-124431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:46.333 [DEBUG] [Thread-124431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:46.380 [DEBUG] [Thread-124431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:46.380 [DEBUG] [Thread-124431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:46.389 [DEBUG] [Thread-124431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:46.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:46.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-28T12:24:46.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-28T12:24:46.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:46.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:46.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:46.424 [DEBUG] [Thread-124431] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:53.780 [DEBUG] [Thread-124433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:24:56.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:24:56.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:24:56.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-28T12:24:56.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 24, 39), 17.62, 30.75, 0.0, 16.87, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:24:56.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:24:39
2025-09-28T12:24:57.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:24:57.252 [DEBUG] [Thread-124434] [transport.py] [_log()] starting thread (client mode): 0x2b98a260
2025-09-28T12:24:57.252 [DEBUG] [Thread-124434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:57.272 [DEBUG] [Thread-124434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:24:57.272 [INFO] [Thread-124434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:24:57.275 [DEBUG] [Thread-124434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] Compression: none
2025-09-28T12:24:57.276 [DEBUG] [Thread-124434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:57.293 [DEBUG] [Thread-124434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:57.293 [DEBUG] [Thread-124434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:57.293 [DEBUG] [Thread-124434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:24:57.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:24:57.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:57.295 [DEBUG] [Thread-124434] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:57.296 [DEBUG] [Thread-124434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:57.296 [DEBUG] [Thread-124434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:57.296 [DEBUG] [Thread-124434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:24:57.296 [DEBUG] [Thread-124434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:57.319 [INFO] [Thread-124434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:57.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:58.087 [DEBUG] [Thread-124434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:58.087 [DEBUG] [Thread-124434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:58.088 [DEBUG] [Thread-124434] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:24:58.128 [DEBUG] [Thread-124434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:58.128 [DEBUG] [Thread-124434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:58.131 [DEBUG] [Thread-124434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:58.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:58.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:24:58.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:24:58.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:24:58.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:58.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:24:58.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:58.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:58.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:24:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433418 -999.00  +19.10   6.53     34   +3.20 1 1 1 1 1   888    0 15.70 58.83 ----- 12.5 6.5 233.9 16.9 25.9 -27.7 24.8 -24.6 24.6 -25.8 25.9 -28.2
2025-09-28T12:24:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:24:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:24:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433418
2025-09-28T12:24:58.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:24:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:24:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:24:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:24:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:24:58.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:24:39', tmtdew=17.62, humidity=30.75, cloud=0.0, wind=16.87, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:24:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:24:58.157 [DEBUG] [Thread-124434] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:24:58.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-28T12:24:58.252 [DEBUG] [Thread-124437] [transport.py] [_log()] starting thread (client mode): 0x2b9caa40
2025-09-28T12:24:58.252 [DEBUG] [Thread-124437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:24:58.267 [DEBUG] [Thread-124437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:24:58.267 [INFO] [Thread-124437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] client lang: <none>
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] server lang: <none>
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] kex follows: False
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] Compression: none
2025-09-28T12:24:58.275 [DEBUG] [Thread-124437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:24:58.330 [DEBUG] [Thread-124437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:24:58.330 [DEBUG] [Thread-124437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:24:58.330 [DEBUG] [Thread-124437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:24:58.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:24:58.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:24:58.387 [DEBUG] [Thread-124437] [transport.py] [_log()] userauth is OK
2025-09-28T12:24:58.387 [DEBUG] [Thread-124437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:24:58.387 [DEBUG] [Thread-124437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:24:58.387 [DEBUG] [Thread-124437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:24:58.387 [DEBUG] [Thread-124437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:24:58.401 [INFO] [Thread-124437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:24:58.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-28T12:24:58.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:24:59.414 [DEBUG] [Thread-124437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:24:59.414 [DEBUG] [Thread-124437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:24:59.462 [DEBUG] [Thread-124437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:24:59.462 [DEBUG] [Thread-124437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:24:59.471 [DEBUG] [Thread-124437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:24:59.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:24:59.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-28T12:24:59.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-28T12:24:59.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:24:59.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:24:59.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:24:59.509 [DEBUG] [Thread-124437] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:25:08.822 [DEBUG] [Thread-124439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:08.963 [DEBUG] [Thread-124440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:09.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:25:09.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:25:09.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-28T12:25:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 24, 39), 17.62, 30.75, 0.0, 16.87, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:25:10.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:24:39
2025-09-28T12:25:10.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:25:10.336 [DEBUG] [Thread-124441] [transport.py] [_log()] starting thread (client mode): 0x2b9c04f0
2025-09-28T12:25:10.336 [DEBUG] [Thread-124441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:25:10.359 [DEBUG] [Thread-124441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:25:10.359 [INFO] [Thread-124441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] client lang: <none>
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] server lang: <none>
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] kex follows: False
2025-09-28T12:25:10.362 [DEBUG] [Thread-124441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] Compression: none
2025-09-28T12:25:10.363 [DEBUG] [Thread-124441] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:25:10.382 [DEBUG] [Thread-124441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:25:10.382 [DEBUG] [Thread-124441] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:25:10.383 [DEBUG] [Thread-124441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:25:10.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:25:10.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:25:10.385 [DEBUG] [Thread-124441] [transport.py] [_log()] userauth is OK
2025-09-28T12:25:10.385 [DEBUG] [Thread-124441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:25:10.385 [DEBUG] [Thread-124441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:25:10.385 [DEBUG] [Thread-124441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:25:10.385 [DEBUG] [Thread-124441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:25:10.410 [INFO] [Thread-124441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:25:10.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:25:19.829 [DEBUG] [Thread-124441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:25:19.829 [DEBUG] [Thread-124441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:25:19.829 [DEBUG] [Thread-124441] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:25:19.870 [DEBUG] [Thread-124441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:25:19.870 [DEBUG] [Thread-124441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:25:19.873 [DEBUG] [Thread-124441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:25:20.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:25:20.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:25:20.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:25:20.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:25:20.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:25:20.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:25:20.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:25:20.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:25:20.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:25:20.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.433418 -999.00  +19.10   6.53     34   +3.20 1 1 1 1 1   888    0 15.70 58.83 ----- 12.5 6.5 233.9 16.9 25.9 -27.7 24.8 -24.6 24.6 -25.8 25.9 -28.2
2025-09-28T12:25:20.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:25:20.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:25:20.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.433418
2025-09-28T12:25:20.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:25:20.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:25:20.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:25:20.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:25:20.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:25:20.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:24:39', tmtdew=17.62, humidity=30.75, cloud=0.0, wind=16.87, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:24:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:25:20.039 [DEBUG] [Thread-124441] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:25:20.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-28T12:25:23.851 [DEBUG] [Thread-124444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:38.883 [DEBUG] [Thread-124445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:45.833 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:45.834 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:25:53.915 [DEBUG] [Thread-124446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:08.950 [DEBUG] [Thread-124447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:09.014 [DEBUG] [Thread-124448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:23.977 [DEBUG] [Thread-124449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:39.009 [DEBUG] [Thread-124450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:45.974 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:45.975 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:26:54.039 [DEBUG] [Thread-124451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:09.067 [DEBUG] [Thread-124452 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:09.067 [DEBUG] [Thread-124453 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:24.094 [DEBUG] [Thread-124454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:32.666 [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-28T12:27:39.124 [DEBUG] [Thread-124455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:42.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:27:42.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:27:42.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-28T12:27:43.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 27, 19), 18.17, 29.48, 0.0, 19.74, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:27:43.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:27:19
2025-09-28T12:27:43.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:27:43.538 [DEBUG] [Thread-124456] [transport.py] [_log()] starting thread (client mode): 0x2b9cee90
2025-09-28T12:27:43.538 [DEBUG] [Thread-124456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:27:43.557 [DEBUG] [Thread-124456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:27:43.557 [INFO] [Thread-124456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:27:43.560 [DEBUG] [Thread-124456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:27:43.560 [DEBUG] [Thread-124456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] client lang: <none>
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] server lang: <none>
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] kex follows: False
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:27:43.561 [DEBUG] [Thread-124456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:27:43.562 [DEBUG] [Thread-124456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:27:43.562 [DEBUG] [Thread-124456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:27:43.562 [DEBUG] [Thread-124456] [transport.py] [_log()] Compression: none
2025-09-28T12:27:43.562 [DEBUG] [Thread-124456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:27:43.581 [DEBUG] [Thread-124456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:27:43.581 [DEBUG] [Thread-124456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:27:43.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:27:43.582 [DEBUG] [Thread-124456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:27:43.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:27:43.584 [DEBUG] [Thread-124456] [transport.py] [_log()] userauth is OK
2025-09-28T12:27:43.584 [DEBUG] [Thread-124456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:27:43.584 [DEBUG] [Thread-124456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:27:43.584 [DEBUG] [Thread-124456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:27:43.585 [DEBUG] [Thread-124456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:27:43.601 [INFO] [Thread-124456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:27:43.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:27:44.197 [DEBUG] [Thread-124456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:27:44.197 [DEBUG] [Thread-124456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:27:44.197 [DEBUG] [Thread-124456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:27:44.238 [DEBUG] [Thread-124456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:27:44.238 [DEBUG] [Thread-124456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:27:44.241 [DEBUG] [Thread-124456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:27:44.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:27:44.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:27:44.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:27:44.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:27:44.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:27:44.264 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:27:44.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:27:44.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.435501 -999.00  +18.70   8.63     34   +2.70 1 1 1 1 1   888    0 17.83 113.10 ----- 9.6 8.6 247.4 18.1 25.7 -26.3 24.4 -25.4 24.2 -25.1 25.5 -26.1
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.435501
2025-09-28T12:27:44.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:27:44.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:27:44.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:27:44.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:27:44.266 [DEBUG] [Thread-124456] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:27:44.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:27:44.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:27:19', tmtdew=18.17, humidity=29.48, cloud=0.0, wind=19.74, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:27:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:27:44.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-28T12:27:44.375 [DEBUG] [Thread-124459] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-28T12:27:44.375 [DEBUG] [Thread-124459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:27:44.391 [DEBUG] [Thread-124459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:27:44.391 [INFO] [Thread-124459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:44.398 [DEBUG] [Thread-124459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] client lang: <none>
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] server lang: <none>
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] kex follows: False
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] Compression: none
2025-09-28T12:27:44.399 [DEBUG] [Thread-124459] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:27:44.454 [DEBUG] [Thread-124459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:27:44.454 [DEBUG] [Thread-124459] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:27:44.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:27:44.455 [DEBUG] [Thread-124459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:27:44.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:27:44.510 [DEBUG] [Thread-124459] [transport.py] [_log()] userauth is OK
2025-09-28T12:27:44.511 [DEBUG] [Thread-124459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:27:44.511 [DEBUG] [Thread-124459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:27:44.511 [DEBUG] [Thread-124459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:27:44.511 [DEBUG] [Thread-124459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:27:44.530 [INFO] [Thread-124459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:27:44.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-28T12:27:44.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:27:45.554 [DEBUG] [Thread-124459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:27:45.554 [DEBUG] [Thread-124459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:27:45.603 [DEBUG] [Thread-124459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:27:45.603 [DEBUG] [Thread-124459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:27:45.612 [DEBUG] [Thread-124459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:27:45.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:27:45.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-28T12:27:45.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-28T12:27:45.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:27:45.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:27:45.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:27:45.651 [DEBUG] [Thread-124459] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:27:46.115 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:46.117 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:54.158 [DEBUG] [Thread-124461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:27:55.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:27:55.654 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:27: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-28T12:27:56.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 27, 51), 18.39, 28.93, 0.0, 17.03, 18.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:27:56.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:27:51
2025-09-28T12:27:56.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:27:56.496 [DEBUG] [Thread-124462] [transport.py] [_log()] starting thread (client mode): 0x2b9c23e0
2025-09-28T12:27:56.496 [DEBUG] [Thread-124462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:27:56.522 [DEBUG] [Thread-124462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:27:56.522 [INFO] [Thread-124462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:27:56.526 [DEBUG] [Thread-124462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] client lang: <none>
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] server lang: <none>
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] kex follows: False
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:27:56.527 [DEBUG] [Thread-124462] [transport.py] [_log()] Compression: none
2025-09-28T12:27:56.528 [DEBUG] [Thread-124462] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:27:56.546 [DEBUG] [Thread-124462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:27:56.547 [DEBUG] [Thread-124462] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:27:56.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:27:56.548 [DEBUG] [Thread-124462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:27:56.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:27:56.549 [DEBUG] [Thread-124462] [transport.py] [_log()] userauth is OK
2025-09-28T12:27:56.550 [DEBUG] [Thread-124462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:27:56.550 [DEBUG] [Thread-124462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:27:56.550 [DEBUG] [Thread-124462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:27:56.550 [DEBUG] [Thread-124462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:27:56.573 [INFO] [Thread-124462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:27:56.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:27:57.294 [DEBUG] [Thread-124462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:27:57.295 [DEBUG] [Thread-124462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:27:57.295 [DEBUG] [Thread-124462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:27:57.335 [DEBUG] [Thread-124462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:27:57.335 [DEBUG] [Thread-124462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:27:57.341 [DEBUG] [Thread-124462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:27:57.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:27:57.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:27:57.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:27:57.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:27:57.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:27:57.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:27:57.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.435501 -999.00  +18.70   8.63     34   +2.70 1 1 1 1 1   888    0 17.83 113.10 ----- 9.6 8.6 247.4 18.1 25.7 -26.3 24.4 -25.4 24.2 -25.1 25.5 -26.1
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:27:57.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.435501
2025-09-28T12:27:57.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:27:57.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:27:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:27:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:27:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:27:57.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:27:51', tmtdew=18.39, humidity=28.93, cloud=0.0, wind=17.03, temperature=18.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:27:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:27:57.366 [DEBUG] [Thread-124462] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:27:57.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-28T12:27:57.460 [DEBUG] [Thread-124465] [transport.py] [_log()] starting thread (client mode): 0x2b98b700
2025-09-28T12:27:57.460 [DEBUG] [Thread-124465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:27:57.475 [DEBUG] [Thread-124465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:27:57.475 [INFO] [Thread-124465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] client lang: <none>
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] server lang: <none>
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] kex follows: False
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:27:57.483 [DEBUG] [Thread-124465] [transport.py] [_log()] Compression: none
2025-09-28T12:27:57.484 [DEBUG] [Thread-124465] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:27:57.539 [DEBUG] [Thread-124465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:27:57.540 [DEBUG] [Thread-124465] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:27:57.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:27:57.541 [DEBUG] [Thread-124465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:27:57.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:27:57.595 [DEBUG] [Thread-124465] [transport.py] [_log()] userauth is OK
2025-09-28T12:27:57.596 [DEBUG] [Thread-124465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:27:57.596 [DEBUG] [Thread-124465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:27:57.596 [DEBUG] [Thread-124465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:27:57.596 [DEBUG] [Thread-124465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:27:57.614 [INFO] [Thread-124465] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:27:57.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-28T12:27:57.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:27:58.589 [DEBUG] [Thread-124465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:27:58.589 [DEBUG] [Thread-124465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:27:58.637 [DEBUG] [Thread-124465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:27:58.637 [DEBUG] [Thread-124465] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:27:58.646 [DEBUG] [Thread-124465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:27:58.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:27:58.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-28T12:27:58.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-28T12:27:58.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:27:58.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:27:58.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:27:58.683 [DEBUG] [Thread-124465] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:08.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:28:08.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:28:08.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-28T12:28:09.114 [DEBUG] [Thread-124467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:09.200 [DEBUG] [Thread-124468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:09.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 27, 51), 18.39, 28.93, 0.0, 17.03, 18.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:28:09.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:27:51
2025-09-28T12:28:09.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:28:09.573 [DEBUG] [Thread-124469] [transport.py] [_log()] starting thread (client mode): 0x2b9c0430
2025-09-28T12:28:09.574 [DEBUG] [Thread-124469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:09.592 [DEBUG] [Thread-124469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:28:09.592 [INFO] [Thread-124469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:09.593 [DEBUG] [Thread-124469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] Compression: none
2025-09-28T12:28:09.594 [DEBUG] [Thread-124469] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:09.605 [DEBUG] [Thread-124469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:09.606 [DEBUG] [Thread-124469] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:09.606 [DEBUG] [Thread-124469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:28:09.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:28:09.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:09.607 [DEBUG] [Thread-124469] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:09.607 [DEBUG] [Thread-124469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:09.607 [DEBUG] [Thread-124469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:09.607 [DEBUG] [Thread-124469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:28:09.607 [DEBUG] [Thread-124469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:09.619 [INFO] [Thread-124469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:09.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:10.339 [DEBUG] [Thread-124469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:10.340 [DEBUG] [Thread-124469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:10.340 [DEBUG] [Thread-124469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:28:10.381 [DEBUG] [Thread-124469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:10.381 [DEBUG] [Thread-124469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:10.384 [DEBUG] [Thread-124469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:10.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:10.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:28:10.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:28:10.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:28:10.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:10.401 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:28:10.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436196 -999.00  +18.80  10.85     32   +2.00 1 1 1 1 1   888    0 17.66 108.62 ----- 11.7 10.8 198.6 21.9 25.5 -27.1 24.3 -25.0 24.2 -25.4 25.5 -26.5
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436196
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:28:10.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:27:51', tmtdew=18.39, humidity=28.93, cloud=0.0, wind=17.03, temperature=18.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:28:10.402 [DEBUG] [Thread-124469] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:10.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-28T12:28:10.488 [DEBUG] [Thread-124471] [transport.py] [_log()] starting thread (client mode): 0x2b9c0c10
2025-09-28T12:28:10.488 [DEBUG] [Thread-124471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:10.503 [DEBUG] [Thread-124471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:28:10.503 [INFO] [Thread-124471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] Compression: none
2025-09-28T12:28:10.510 [DEBUG] [Thread-124471] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:10.569 [DEBUG] [Thread-124471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:10.569 [DEBUG] [Thread-124471] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:10.569 [DEBUG] [Thread-124471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:28:10.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:28:10.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:10.628 [DEBUG] [Thread-124471] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:10.628 [DEBUG] [Thread-124471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:10.628 [DEBUG] [Thread-124471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:10.628 [DEBUG] [Thread-124471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:28:10.628 [DEBUG] [Thread-124471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:10.642 [INFO] [Thread-124471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:10.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-28T12:28:10.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:11.638 [DEBUG] [Thread-124471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:11.638 [DEBUG] [Thread-124471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:11.691 [DEBUG] [Thread-124471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:11.691 [DEBUG] [Thread-124471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:11.702 [DEBUG] [Thread-124471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:11.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28: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-28T12:28:11.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-28T12:28:11.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:11.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:11.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:11.748 [DEBUG] [Thread-124471] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:21.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:28:21.744 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:28:21.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-28T12:28:22.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 27, 51), 18.39, 28.93, 0.0, 17.03, 18.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:28:22.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:27:51
2025-09-28T12:28:22.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:28:22.602 [DEBUG] [Thread-124473] [transport.py] [_log()] starting thread (client mode): 0x2b9cb130
2025-09-28T12:28:22.602 [DEBUG] [Thread-124473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:22.622 [DEBUG] [Thread-124473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:28:22.622 [INFO] [Thread-124473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] Compression: none
2025-09-28T12:28:22.625 [DEBUG] [Thread-124473] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:22.643 [DEBUG] [Thread-124473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:22.644 [DEBUG] [Thread-124473] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:22.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:28:22.645 [DEBUG] [Thread-124473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:28:22.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:22.647 [DEBUG] [Thread-124473] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:22.647 [DEBUG] [Thread-124473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:22.647 [DEBUG] [Thread-124473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:22.647 [DEBUG] [Thread-124473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:28:22.647 [DEBUG] [Thread-124473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:22.682 [INFO] [Thread-124473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:22.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:23.308 [DEBUG] [Thread-124473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:23.309 [DEBUG] [Thread-124473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:23.309 [DEBUG] [Thread-124473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:28:23.349 [DEBUG] [Thread-124473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:23.349 [DEBUG] [Thread-124473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:23.350 [DEBUG] [Thread-124473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:23.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:23.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:28:23.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:28:23.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:28:23.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:23.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:28:23.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:23.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436196 -999.00  +18.80  10.85     32   +2.00 1 1 1 1 1   888    0 17.66 108.62 ----- 11.7 10.8 198.6 21.9 25.5 -27.1 24.3 -25.0 24.2 -25.4 25.5 -26.5
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436196
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:28:23.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:27:51', tmtdew=18.39, humidity=28.93, cloud=0.0, wind=17.03, temperature=18.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:28:23.362 [DEBUG] [Thread-124473] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:23.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-28T12:28:23.445 [DEBUG] [Thread-124476] [transport.py] [_log()] starting thread (client mode): 0x2b98a860
2025-09-28T12:28:23.445 [DEBUG] [Thread-124476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:23.460 [DEBUG] [Thread-124476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:28:23.460 [INFO] [Thread-124476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] Compression: none
2025-09-28T12:28:23.468 [DEBUG] [Thread-124476] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:23.524 [DEBUG] [Thread-124476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:23.524 [DEBUG] [Thread-124476] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:23.524 [DEBUG] [Thread-124476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:28:23.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:28:23.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:23.581 [DEBUG] [Thread-124476] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:23.581 [DEBUG] [Thread-124476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:23.581 [DEBUG] [Thread-124476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:23.581 [DEBUG] [Thread-124476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:28:23.581 [DEBUG] [Thread-124476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:23.595 [INFO] [Thread-124476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:23.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-28T12:28:23.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:24.233 [DEBUG] [Thread-124478 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:24.662 [DEBUG] [Thread-124476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:24.662 [DEBUG] [Thread-124476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:24.710 [DEBUG] [Thread-124476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:24.710 [DEBUG] [Thread-124476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:24.718 [DEBUG] [Thread-124476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:24.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:24.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-28T12:28:24.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-28T12:28:24.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:24.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:24.743 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:24.750 [DEBUG] [Thread-124476] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:34.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:28:34.747 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:28:34.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-28T12:28:35.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 28, 23), 18.69, 28.38, 0.0, 18.9, 18.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:28:35.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:28:23
2025-09-28T12:28:35.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:28:35.600 [DEBUG] [Thread-124479] [transport.py] [_log()] starting thread (client mode): 0x2b989ff0
2025-09-28T12:28:35.601 [DEBUG] [Thread-124479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:35.620 [DEBUG] [Thread-124479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:28:35.620 [INFO] [Thread-124479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:35.623 [DEBUG] [Thread-124479] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] Compression: none
2025-09-28T12:28:35.624 [DEBUG] [Thread-124479] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:35.639 [DEBUG] [Thread-124479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:35.640 [DEBUG] [Thread-124479] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:35.640 [DEBUG] [Thread-124479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:28:35.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:28:35.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:35.641 [DEBUG] [Thread-124479] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:35.641 [DEBUG] [Thread-124479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:35.641 [DEBUG] [Thread-124479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:35.641 [DEBUG] [Thread-124479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:28:35.641 [DEBUG] [Thread-124479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:35.658 [INFO] [Thread-124479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:35.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:36.383 [DEBUG] [Thread-124479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:36.383 [DEBUG] [Thread-124479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:36.383 [DEBUG] [Thread-124479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:28:36.424 [DEBUG] [Thread-124479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:36.424 [DEBUG] [Thread-124479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:36.427 [DEBUG] [Thread-124479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:36.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:36.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:28:36.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:28:36.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:28:36.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:36.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:28:36.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:36.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:36.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:28:36.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436196 -999.00  +18.80  10.85     32   +2.00 1 1 1 1 1   888    0 17.66 108.62 ----- 11.7 10.8 198.6 21.9 25.5 -27.1 24.3 -25.0 24.2 -25.4 25.5 -26.5
2025-09-28T12:28:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:28:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:28:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436196
2025-09-28T12:28:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:28:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:28:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:28:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:28:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:28:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:28:23', tmtdew=18.69, humidity=28.38, cloud=0.0, wind=18.9, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:28:36.452 [DEBUG] [Thread-124479] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:36.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-28T12:28:36.549 [DEBUG] [Thread-124482] [transport.py] [_log()] starting thread (client mode): 0x2e3dde70
2025-09-28T12:28:36.549 [DEBUG] [Thread-124482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:36.564 [DEBUG] [Thread-124482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:28:36.564 [INFO] [Thread-124482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:28:36.571 [DEBUG] [Thread-124482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:36.571 [DEBUG] [Thread-124482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:28:36.571 [DEBUG] [Thread-124482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:36.571 [DEBUG] [Thread-124482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] Compression: none
2025-09-28T12:28:36.572 [DEBUG] [Thread-124482] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:36.631 [DEBUG] [Thread-124482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:36.632 [DEBUG] [Thread-124482] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:36.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:28:36.633 [DEBUG] [Thread-124482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:28:36.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:36.690 [DEBUG] [Thread-124482] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:36.690 [DEBUG] [Thread-124482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:36.691 [DEBUG] [Thread-124482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:36.691 [DEBUG] [Thread-124482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:28:36.691 [DEBUG] [Thread-124482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:36.710 [INFO] [Thread-124482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:36.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-28T12:28:36.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:37.751 [DEBUG] [Thread-124482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:37.751 [DEBUG] [Thread-124482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:37.800 [DEBUG] [Thread-124482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:37.800 [DEBUG] [Thread-124482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:37.809 [DEBUG] [Thread-124482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:37.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:37.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-28T12:28:37.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') -> 00000000
2025-09-28T12:28:37.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:37.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:37.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:37.844 [DEBUG] [Thread-124482] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:39.269 [DEBUG] [Thread-124484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:46.257 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:46.258 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:28:47.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:28:47.846 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:28: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-28T12:28:48.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 28, 23), 18.69, 28.38, 0.0, 18.9, 18.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:28:48.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:28:23
2025-09-28T12:28:48.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:28:48.723 [DEBUG] [Thread-124485] [transport.py] [_log()] starting thread (client mode): 0x2b9883a0
2025-09-28T12:28:48.724 [DEBUG] [Thread-124485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:48.745 [DEBUG] [Thread-124485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:28:48.745 [INFO] [Thread-124485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:48.748 [DEBUG] [Thread-124485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:48.749 [DEBUG] [Thread-124485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:48.749 [DEBUG] [Thread-124485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:48.749 [DEBUG] [Thread-124485] [transport.py] [_log()] Compression: none
2025-09-28T12:28:48.749 [DEBUG] [Thread-124485] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:48.765 [DEBUG] [Thread-124485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:48.765 [DEBUG] [Thread-124485] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:48.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:28:48.765 [DEBUG] [Thread-124485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:28:48.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:48.766 [DEBUG] [Thread-124485] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:48.766 [DEBUG] [Thread-124485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:48.766 [DEBUG] [Thread-124485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:48.766 [DEBUG] [Thread-124485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:28:48.766 [DEBUG] [Thread-124485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:48.793 [INFO] [Thread-124485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:48.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:49.412 [DEBUG] [Thread-124485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:49.412 [DEBUG] [Thread-124485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:49.412 [DEBUG] [Thread-124485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:28:49.453 [DEBUG] [Thread-124485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:49.453 [DEBUG] [Thread-124485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:49.455 [DEBUG] [Thread-124485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:49.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:49.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:28:49.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:28:49.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:28:49.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:49.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:28:49.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:49.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436543 -999.00  +18.90   3.76     33   +2.30 1 1 1 1 1   888    0 18.14 116.69 ----- 7.1 3.8 299.4 12.7 25.7 -25.1 24.4 -24.5 24.3 -24.1 25.7 -25.1
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436543
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:28:49.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:28:23', tmtdew=18.69, humidity=28.38, cloud=0.0, wind=18.9, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:28:49.469 [DEBUG] [Thread-124485] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:49.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-28T12:28:50.562 [DEBUG] [Thread-124488] [transport.py] [_log()] starting thread (client mode): 0x2b9aeb00
2025-09-28T12:28:50.562 [DEBUG] [Thread-124488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:28:50.577 [DEBUG] [Thread-124488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:28:50.577 [INFO] [Thread-124488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:50.584 [DEBUG] [Thread-124488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] client lang: <none>
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] server lang: <none>
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] kex follows: False
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] Compression: none
2025-09-28T12:28:50.585 [DEBUG] [Thread-124488] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:28:50.646 [DEBUG] [Thread-124488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:28:50.646 [DEBUG] [Thread-124488] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:28:50.646 [DEBUG] [Thread-124488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:28:50.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:28:50.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:28:50.707 [DEBUG] [Thread-124488] [transport.py] [_log()] userauth is OK
2025-09-28T12:28:50.707 [DEBUG] [Thread-124488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:28:50.708 [DEBUG] [Thread-124488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:28:50.708 [DEBUG] [Thread-124488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:28:50.708 [DEBUG] [Thread-124488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:28:50.731 [INFO] [Thread-124488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:28:50.732 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:28:50.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:28:51.739 [DEBUG] [Thread-124488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:28:51.739 [DEBUG] [Thread-124488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:28:51.787 [DEBUG] [Thread-124488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:28:51.787 [DEBUG] [Thread-124488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:28:51.796 [DEBUG] [Thread-124488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:28:51.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:28:51.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-28T12:28:51.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-28T12:28:51.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:28:51.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:28:51.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:28:51.834 [DEBUG] [Thread-124488] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:28:54.313 [DEBUG] [Thread-124490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:01.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:29:01.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:29:01.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:29:02.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 28, 54), 19.0, 27.73, 0.0, 12.7, 18.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:29:02.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:28:54
2025-09-28T12:29:02.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:29:02.689 [DEBUG] [Thread-124491] [transport.py] [_log()] starting thread (client mode): 0x2b9c08e0
2025-09-28T12:29:02.689 [DEBUG] [Thread-124491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:02.713 [DEBUG] [Thread-124491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:29:02.713 [INFO] [Thread-124491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:02.716 [DEBUG] [Thread-124491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:02.717 [DEBUG] [Thread-124491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:02.717 [DEBUG] [Thread-124491] [transport.py] [_log()] Compression: none
2025-09-28T12:29:02.717 [DEBUG] [Thread-124491] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:02.730 [DEBUG] [Thread-124491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:02.730 [DEBUG] [Thread-124491] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:02.730 [DEBUG] [Thread-124491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:29:02.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:29:02.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:02.732 [DEBUG] [Thread-124491] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:02.732 [DEBUG] [Thread-124491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:02.732 [DEBUG] [Thread-124491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:02.732 [DEBUG] [Thread-124491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:29:02.732 [DEBUG] [Thread-124491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:02.745 [INFO] [Thread-124491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:02.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:03.336 [DEBUG] [Thread-124491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:03.337 [DEBUG] [Thread-124491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:03.337 [DEBUG] [Thread-124491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:29:03.377 [DEBUG] [Thread-124491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:03.377 [DEBUG] [Thread-124491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:03.380 [DEBUG] [Thread-124491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:03.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:03.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:29:03.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:29:03.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:29:03.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:03.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:29:03.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:03.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436543 -999.00  +18.90   3.76     33   +2.30 1 1 1 1 1   888    0 18.14 116.69 ----- 7.1 3.8 299.4 12.7 25.7 -25.1 24.4 -24.5 24.3 -24.1 25.7 -25.1
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436543
2025-09-28T12:29:03.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:29:03.408 [DEBUG] [Thread-124491] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:03.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:29:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:29:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:29:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:29:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:28:54', tmtdew=19.0, humidity=27.73, cloud=0.0, wind=12.7, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:29:03.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-28T12:29:03.504 [DEBUG] [Thread-124494] [transport.py] [_log()] starting thread (client mode): 0x2b9889a0
2025-09-28T12:29:03.504 [DEBUG] [Thread-124494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:03.519 [DEBUG] [Thread-124494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:29:03.519 [INFO] [Thread-124494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] Compression: none
2025-09-28T12:29:03.527 [DEBUG] [Thread-124494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:03.583 [DEBUG] [Thread-124494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:03.584 [DEBUG] [Thread-124494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:03.584 [DEBUG] [Thread-124494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:29:03.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:29:03.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:03.640 [DEBUG] [Thread-124494] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:03.640 [DEBUG] [Thread-124494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:03.640 [DEBUG] [Thread-124494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:03.640 [DEBUG] [Thread-124494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:29:03.641 [DEBUG] [Thread-124494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:03.659 [INFO] [Thread-124494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:03.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-28T12:29:03.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:04.684 [DEBUG] [Thread-124494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:04.684 [DEBUG] [Thread-124494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:04.732 [DEBUG] [Thread-124494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:04.732 [DEBUG] [Thread-124494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:04.741 [DEBUG] [Thread-124494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:04.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:04.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-28T12:29:04.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:29:04.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:04.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:04.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:04.775 [DEBUG] [Thread-124494] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:09.164 [DEBUG] [Thread-124496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:09.357 [DEBUG] [Thread-124497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:14.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:29:14.778 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:29:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:29:15.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 28, 54), 19.0, 27.73, 0.0, 12.7, 18.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:29:15.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:28:54
2025-09-28T12:29:15.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:29:15.623 [DEBUG] [Thread-124498] [transport.py] [_log()] starting thread (client mode): 0x2b9ddab0
2025-09-28T12:29:15.623 [DEBUG] [Thread-124498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:15.643 [DEBUG] [Thread-124498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:29:15.643 [INFO] [Thread-124498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:29:15.646 [DEBUG] [Thread-124498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:15.647 [DEBUG] [Thread-124498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:15.648 [DEBUG] [Thread-124498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:15.648 [DEBUG] [Thread-124498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:15.648 [DEBUG] [Thread-124498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:15.648 [DEBUG] [Thread-124498] [transport.py] [_log()] Compression: none
2025-09-28T12:29:15.648 [DEBUG] [Thread-124498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:15.661 [DEBUG] [Thread-124498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:15.662 [DEBUG] [Thread-124498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:15.662 [DEBUG] [Thread-124498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:29:15.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:29:15.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:15.665 [DEBUG] [Thread-124498] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:15.665 [DEBUG] [Thread-124498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:15.666 [DEBUG] [Thread-124498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:15.666 [DEBUG] [Thread-124498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:29:15.666 [DEBUG] [Thread-124498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:15.684 [INFO] [Thread-124498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:15.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:16.355 [DEBUG] [Thread-124498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:16.355 [DEBUG] [Thread-124498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:16.355 [DEBUG] [Thread-124498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:29:16.395 [DEBUG] [Thread-124498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:16.395 [DEBUG] [Thread-124498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:16.397 [DEBUG] [Thread-124498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:16.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:16.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:29:16.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:29:16.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:29:16.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:16.419 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:29:16.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:16.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436543 -999.00  +18.90   3.76     33   +2.30 1 1 1 1 1   888    0 18.14 116.69 ----- 7.1 3.8 299.4 12.7 25.7 -25.1 24.4 -24.5 24.3 -24.1 25.7 -25.1
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436543
2025-09-28T12:29:16.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:29:16.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:29:16.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:29:16.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:29:16.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:29:16.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:28:54', tmtdew=19.0, humidity=27.73, cloud=0.0, wind=12.7, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:28:37.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:29:16.422 [DEBUG] [Thread-124498] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:16.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-28T12:29:16.515 [DEBUG] [Thread-124501] [transport.py] [_log()] starting thread (client mode): 0x2b9c0dc0
2025-09-28T12:29:16.515 [DEBUG] [Thread-124501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:16.530 [DEBUG] [Thread-124501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:29:16.530 [INFO] [Thread-124501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:16.537 [DEBUG] [Thread-124501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] Compression: none
2025-09-28T12:29:16.538 [DEBUG] [Thread-124501] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:16.595 [DEBUG] [Thread-124501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:16.595 [DEBUG] [Thread-124501] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:16.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:29:16.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:16.596 [DEBUG] [Thread-124501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:29:16.653 [DEBUG] [Thread-124501] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:16.653 [DEBUG] [Thread-124501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:16.653 [DEBUG] [Thread-124501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:16.653 [DEBUG] [Thread-124501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:29:16.653 [DEBUG] [Thread-124501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:16.669 [INFO] [Thread-124501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:16.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-28T12:29:16.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:17.649 [DEBUG] [Thread-124501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:17.650 [DEBUG] [Thread-124501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:17.697 [DEBUG] [Thread-124501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:17.697 [DEBUG] [Thread-124501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:17.706 [DEBUG] [Thread-124501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:17.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:17.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-28T12:29:17.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-28T12:29:17.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:17.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:17.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:17.743 [DEBUG] [Thread-124501] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:24.403 [DEBUG] [Thread-124503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:27.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:29:27.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:29:27.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-28T12:29:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 28, 54), 19.0, 27.73, 0.0, 12.7, 18.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:29:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:28:54
2025-09-28T12:29:28.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:29:28.638 [DEBUG] [Thread-124504] [transport.py] [_log()] starting thread (client mode): 0x2b9dc7f0
2025-09-28T12:29:28.638 [DEBUG] [Thread-124504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:28.659 [DEBUG] [Thread-124504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:29:28.659 [INFO] [Thread-124504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:28.662 [DEBUG] [Thread-124504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:28.663 [DEBUG] [Thread-124504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:28.663 [DEBUG] [Thread-124504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:28.663 [DEBUG] [Thread-124504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:28.663 [DEBUG] [Thread-124504] [transport.py] [_log()] Compression: none
2025-09-28T12:29:28.663 [DEBUG] [Thread-124504] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:28.678 [DEBUG] [Thread-124504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:28.678 [DEBUG] [Thread-124504] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:28.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:29:28.678 [DEBUG] [Thread-124504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:29:28.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:28.678 [DEBUG] [Thread-124504] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:28.679 [DEBUG] [Thread-124504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:28.679 [DEBUG] [Thread-124504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:28.679 [DEBUG] [Thread-124504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:29:28.679 [DEBUG] [Thread-124504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:28.688 [INFO] [Thread-124504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:28.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:29.277 [DEBUG] [Thread-124504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:29.277 [DEBUG] [Thread-124504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:29.278 [DEBUG] [Thread-124504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:29:29.318 [DEBUG] [Thread-124504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:29.318 [DEBUG] [Thread-124504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:29.321 [DEBUG] [Thread-124504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:29.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:29.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:29:29.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:29:29.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:29:29.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:29.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:29:29.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:29.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:29:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436891 -999.00  +18.90   4.95     32   +2.00 1 1 1 1 1   888    0 18.83 136.38 ----- 4.7 5.0 209.3 8.8 25.8 -26.0 24.4 -25.5 24.5 -24.6 25.8 -26.5
2025-09-28T12:29:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:29:29.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:29:29.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436891
2025-09-28T12:29:29.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:29:29.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:29:29.344 [DEBUG] [Thread-124504] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:29.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:29:29.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:29:29.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:29:29.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:28:54', tmtdew=19.0, humidity=27.73, cloud=0.0, wind=12.7, temperature=18.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:29:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:29:29.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-28T12:29:29.439 [DEBUG] [Thread-124507] [transport.py] [_log()] starting thread (client mode): 0x2b9de9e0
2025-09-28T12:29:29.440 [DEBUG] [Thread-124507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:29.457 [DEBUG] [Thread-124507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:29:29.457 [INFO] [Thread-124507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:29.465 [DEBUG] [Thread-124507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] Compression: none
2025-09-28T12:29:29.466 [DEBUG] [Thread-124507] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:29.521 [DEBUG] [Thread-124507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:29.522 [DEBUG] [Thread-124507] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:29.522 [DEBUG] [Thread-124507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:29:29.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:29:29.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:29.577 [DEBUG] [Thread-124507] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:29.578 [DEBUG] [Thread-124507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:29.578 [DEBUG] [Thread-124507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:29.578 [DEBUG] [Thread-124507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:29:29.578 [DEBUG] [Thread-124507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:29.597 [INFO] [Thread-124507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:29.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-28T12:29:29.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:30.631 [DEBUG] [Thread-124507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:30.631 [DEBUG] [Thread-124507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:30.679 [DEBUG] [Thread-124507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:30.679 [DEBUG] [Thread-124507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:30.689 [DEBUG] [Thread-124507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:30.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:30.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-28T12:29:30.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-28T12:29:30.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:30.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:30.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:30.723 [DEBUG] [Thread-124507] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:39.434 [DEBUG] [Thread-124509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:40.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:29:40.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:29:40.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-28T12:29:41.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 29, 26), 18.85, 28.01, 0.0, 11.75, 17.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:29:41.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:29:26
2025-09-28T12:29:41.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:29:41.567 [DEBUG] [Thread-124510] [transport.py] [_log()] starting thread (client mode): 0x2b9ca260
2025-09-28T12:29:41.567 [DEBUG] [Thread-124510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:41.586 [DEBUG] [Thread-124510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:29:41.586 [INFO] [Thread-124510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:29:41.589 [DEBUG] [Thread-124510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:41.590 [DEBUG] [Thread-124510] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] Compression: none
2025-09-28T12:29:41.591 [DEBUG] [Thread-124510] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:41.607 [DEBUG] [Thread-124510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:41.608 [DEBUG] [Thread-124510] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:41.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:29:41.609 [DEBUG] [Thread-124510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:29:41.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:41.652 [DEBUG] [Thread-124510] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:41.653 [DEBUG] [Thread-124510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:41.653 [DEBUG] [Thread-124510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:41.653 [DEBUG] [Thread-124510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:29:41.653 [DEBUG] [Thread-124510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:41.675 [INFO] [Thread-124510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:41.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:42.406 [DEBUG] [Thread-124510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:42.407 [DEBUG] [Thread-124510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:42.407 [DEBUG] [Thread-124510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:29:42.447 [DEBUG] [Thread-124510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:42.448 [DEBUG] [Thread-124510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:42.451 [DEBUG] [Thread-124510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:42.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:42.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:29:42.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:29:42.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:29:42.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:42.469 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:29:42.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:42.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:42.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:29:42.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.436891 -999.00  +18.90   4.95     32   +2.00 1 1 1 1 1   888    0 18.83 136.38 ----- 4.7 5.0 209.3 8.8 25.8 -26.0 24.4 -25.5 24.5 -24.6 25.8 -26.5
2025-09-28T12:29:42.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:29:42.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:29:42.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.436891
2025-09-28T12:29:42.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:29:42.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:29:42.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:29:42.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:29:42.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:29:42.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:29:26', tmtdew=18.85, humidity=28.01, cloud=0.0, wind=11.75, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:29:07.382', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:29:42.472 [DEBUG] [Thread-124510] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:42.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-28T12:29:42.568 [DEBUG] [Thread-124513] [transport.py] [_log()] starting thread (client mode): 0x2b988b80
2025-09-28T12:29:42.568 [DEBUG] [Thread-124513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:42.583 [DEBUG] [Thread-124513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:29:42.583 [INFO] [Thread-124513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:42.591 [DEBUG] [Thread-124513] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] Compression: none
2025-09-28T12:29:42.592 [DEBUG] [Thread-124513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:42.650 [DEBUG] [Thread-124513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:42.650 [DEBUG] [Thread-124513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:42.651 [DEBUG] [Thread-124513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:29:42.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:29:42.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:42.706 [DEBUG] [Thread-124513] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:42.707 [DEBUG] [Thread-124513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:42.707 [DEBUG] [Thread-124513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:42.707 [DEBUG] [Thread-124513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:29:42.707 [DEBUG] [Thread-124513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:42.726 [INFO] [Thread-124513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:42.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-28T12:29:42.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:43.712 [DEBUG] [Thread-124513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:43.712 [DEBUG] [Thread-124513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:43.760 [DEBUG] [Thread-124513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:43.760 [DEBUG] [Thread-124513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:43.769 [DEBUG] [Thread-124513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:43.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:43.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-28T12:29:43.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:29:43.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:43.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:43.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:43.803 [DEBUG] [Thread-124513] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:46.400 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:46.402 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:53.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:29:53.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:29:53.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-28T12:29:54.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 29, 26), 18.85, 28.01, 0.0, 11.75, 17.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:29:54.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:29:26
2025-09-28T12:29:54.487 [DEBUG] [Thread-124515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:29:54.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:29:54.659 [DEBUG] [Thread-124516] [transport.py] [_log()] starting thread (client mode): 0x2b98b820
2025-09-28T12:29:54.659 [DEBUG] [Thread-124516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:54.676 [DEBUG] [Thread-124516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:29:54.676 [INFO] [Thread-124516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:29:54.677 [DEBUG] [Thread-124516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:54.677 [DEBUG] [Thread-124516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:29:54.677 [DEBUG] [Thread-124516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:54.677 [DEBUG] [Thread-124516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] Compression: none
2025-09-28T12:29:54.678 [DEBUG] [Thread-124516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:54.690 [DEBUG] [Thread-124516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:54.690 [DEBUG] [Thread-124516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:54.691 [DEBUG] [Thread-124516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:29:54.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:29:54.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:54.692 [DEBUG] [Thread-124516] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:54.692 [DEBUG] [Thread-124516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:54.692 [DEBUG] [Thread-124516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:54.692 [DEBUG] [Thread-124516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:29:54.692 [DEBUG] [Thread-124516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:54.708 [INFO] [Thread-124516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:54.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:55.298 [DEBUG] [Thread-124516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:55.299 [DEBUG] [Thread-124516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:55.299 [DEBUG] [Thread-124516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:29:55.339 [DEBUG] [Thread-124516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:55.339 [DEBUG] [Thread-124516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:55.342 [DEBUG] [Thread-124516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:55.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:55.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:29:55.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:29:55.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:29:55.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:55.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:29:55.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:55.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:55.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:29:55.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437237 -999.00  +18.70   9.52     33   +2.20 1 1 1 1 1   888    0 19.14 146.20 ----- 7.5 9.5 264.6 12.2 25.9 -26.5 24.6 -25.5 24.4 -24.5 25.9 -26.6
2025-09-28T12:29:55.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:29:55.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:29:55.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437237
2025-09-28T12:29:55.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:29:55.364 [DEBUG] [Thread-124516] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:29:55.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:29:55.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:29:55.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:29:55.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:29:55.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:29:26', tmtdew=18.85, humidity=28.01, cloud=0.0, wind=11.75, temperature=17.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:29:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:29:55.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-28T12:29:55.458 [DEBUG] [Thread-124519] [transport.py] [_log()] starting thread (client mode): 0x2e3fb100
2025-09-28T12:29:55.458 [DEBUG] [Thread-124519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:29:55.473 [DEBUG] [Thread-124519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:29:55.473 [INFO] [Thread-124519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:29:55.480 [DEBUG] [Thread-124519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:29:55.480 [DEBUG] [Thread-124519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] client lang: <none>
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] server lang: <none>
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] kex follows: False
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] Compression: none
2025-09-28T12:29:55.481 [DEBUG] [Thread-124519] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:29:55.538 [DEBUG] [Thread-124519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:29:55.539 [DEBUG] [Thread-124519] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:29:55.539 [DEBUG] [Thread-124519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:29:55.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:29:55.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:29:55.596 [DEBUG] [Thread-124519] [transport.py] [_log()] userauth is OK
2025-09-28T12:29:55.596 [DEBUG] [Thread-124519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:29:55.596 [DEBUG] [Thread-124519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:29:55.597 [DEBUG] [Thread-124519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:29:55.597 [DEBUG] [Thread-124519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:29:55.617 [INFO] [Thread-124519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:29:55.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-28T12:29:55.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:29:56.593 [DEBUG] [Thread-124519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:29:56.593 [DEBUG] [Thread-124519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:29:56.641 [DEBUG] [Thread-124519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:29:56.641 [DEBUG] [Thread-124519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:29:56.650 [DEBUG] [Thread-124519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:29:56.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:29:56.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')
2025-09-28T12:29:56.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') -> 00000000
2025-09-28T12:29:56.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:29:56.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:29:56.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:29:56.685 [DEBUG] [Thread-124519] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:06.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:30:06.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:30:06.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-28T12:30:07.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 29, 58), 18.8, 28.23, 0.0, 6.48, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:30:07.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:29:58
2025-09-28T12:30:07.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:30:07.518 [DEBUG] [Thread-124521] [transport.py] [_log()] starting thread (client mode): 0x2e3f9630
2025-09-28T12:30:07.518 [DEBUG] [Thread-124521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:07.538 [DEBUG] [Thread-124521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:30:07.538 [INFO] [Thread-124521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:07.541 [DEBUG] [Thread-124521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:07.542 [DEBUG] [Thread-124521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:07.542 [DEBUG] [Thread-124521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:07.542 [DEBUG] [Thread-124521] [transport.py] [_log()] Compression: none
2025-09-28T12:30:07.542 [DEBUG] [Thread-124521] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:07.557 [DEBUG] [Thread-124521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:07.557 [DEBUG] [Thread-124521] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:07.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:30:07.558 [DEBUG] [Thread-124521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:30:07.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:07.560 [DEBUG] [Thread-124521] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:07.560 [DEBUG] [Thread-124521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:07.561 [DEBUG] [Thread-124521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:07.561 [DEBUG] [Thread-124521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:30:07.561 [DEBUG] [Thread-124521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:07.587 [INFO] [Thread-124521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:07.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:09.217 [DEBUG] [Thread-124523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:09.523 [DEBUG] [Thread-124524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:17.345 [DEBUG] [Thread-124521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:17.345 [DEBUG] [Thread-124521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:17.345 [DEBUG] [Thread-124521] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:30:17.385 [DEBUG] [Thread-124521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:17.385 [DEBUG] [Thread-124521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:17.389 [DEBUG] [Thread-124521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:17.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:17.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:30:17.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:30:17.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:30:17.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:17.499 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:30:17.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:17.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:30:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437237 -999.00  +18.70   9.52     33   +2.20 1 1 1 1 1   888    0 19.14 146.20 ----- 7.5 9.5 264.6 12.2 25.9 -26.5 24.6 -25.5 24.4 -24.5 25.9 -26.6
2025-09-28T12:30:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:30:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:30:17.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437237
2025-09-28T12:30:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:30:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:30:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:30:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:30:17.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:30:17.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:29:58', tmtdew=18.8, humidity=28.23, cloud=0.0, wind=6.48, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:29:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:30:17.502 [DEBUG] [Thread-124521] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:17.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-28T12:30:17.598 [DEBUG] [Thread-124526] [transport.py] [_log()] starting thread (client mode): 0x2b988400
2025-09-28T12:30:17.598 [DEBUG] [Thread-124526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:17.613 [DEBUG] [Thread-124526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:30:17.614 [INFO] [Thread-124526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:30:17.621 [DEBUG] [Thread-124526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:17.621 [DEBUG] [Thread-124526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:30:17.621 [DEBUG] [Thread-124526] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:17.622 [DEBUG] [Thread-124526] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] Compression: none
2025-09-28T12:30:17.623 [DEBUG] [Thread-124526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:17.681 [DEBUG] [Thread-124526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:17.681 [DEBUG] [Thread-124526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:17.682 [DEBUG] [Thread-124526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:30:17.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:30:17.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:17.736 [DEBUG] [Thread-124526] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:17.736 [DEBUG] [Thread-124526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:17.737 [DEBUG] [Thread-124526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:17.737 [DEBUG] [Thread-124526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:30:17.737 [DEBUG] [Thread-124526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:17.756 [INFO] [Thread-124526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:17.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:30:17.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:18.759 [DEBUG] [Thread-124526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:18.760 [DEBUG] [Thread-124526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:18.808 [DEBUG] [Thread-124526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:18.809 [DEBUG] [Thread-124526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:18.818 [DEBUG] [Thread-124526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:18.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:18.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-28T12:30:18.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-28T12:30:18.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:18.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:18.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:18.860 [DEBUG] [Thread-124526] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:24.571 [DEBUG] [Thread-124528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:28.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:30:28.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:30:28.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-28T12:30:29.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 29, 58), 18.8, 28.23, 0.0, 6.48, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:30:29.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:29:58
2025-09-28T12:30:29.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:30:29.704 [DEBUG] [Thread-124529] [transport.py] [_log()] starting thread (client mode): 0x2b9dd090
2025-09-28T12:30:29.704 [DEBUG] [Thread-124529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:29.723 [DEBUG] [Thread-124529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:30:29.723 [INFO] [Thread-124529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:30:29.727 [DEBUG] [Thread-124529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:29.727 [DEBUG] [Thread-124529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:30:29.727 [DEBUG] [Thread-124529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:29.727 [DEBUG] [Thread-124529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] Compression: none
2025-09-28T12:30:29.728 [DEBUG] [Thread-124529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:29.744 [DEBUG] [Thread-124529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:29.744 [DEBUG] [Thread-124529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:29.745 [DEBUG] [Thread-124529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:30:29.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:30:29.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:29.747 [DEBUG] [Thread-124529] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:29.747 [DEBUG] [Thread-124529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:29.747 [DEBUG] [Thread-124529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:29.747 [DEBUG] [Thread-124529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:30:29.747 [DEBUG] [Thread-124529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:29.761 [INFO] [Thread-124529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:29.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:30.319 [DEBUG] [Thread-124529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:30.320 [DEBUG] [Thread-124529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:30.320 [DEBUG] [Thread-124529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:30:30.360 [DEBUG] [Thread-124529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:30.361 [DEBUG] [Thread-124529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:30.363 [DEBUG] [Thread-124529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:30.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:30.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:30:30.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:30:30.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:30:30.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:30.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:30:30.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:30.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:30.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:30:30.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437584 -999.00  +18.50   4.18     33   +2.30 1 1 1 1 1   888    0 19.39 153.79 ----- 4.5 4.2 204.6 9.1 26.0 -25.9 24.6 -25.7 24.5 -24.2 25.9 -26.5
2025-09-28T12:30:30.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:30:30.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:30:30.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437584
2025-09-28T12:30:30.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:30:30.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:30:30.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:30:30.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:30:30.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:30:30.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:29:58', tmtdew=18.8, humidity=28.23, cloud=0.0, wind=6.48, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:30:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:30:30.389 [DEBUG] [Thread-124529] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:30.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-28T12:30:30.483 [DEBUG] [Thread-124532] [transport.py] [_log()] starting thread (client mode): 0x2b9f2fe0
2025-09-28T12:30:30.483 [DEBUG] [Thread-124532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:30.498 [DEBUG] [Thread-124532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:30:30.498 [INFO] [Thread-124532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:30:30.505 [DEBUG] [Thread-124532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:30.506 [DEBUG] [Thread-124532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:30.507 [DEBUG] [Thread-124532] [transport.py] [_log()] Compression: none
2025-09-28T12:30:30.508 [DEBUG] [Thread-124532] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:30.568 [DEBUG] [Thread-124532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:30.568 [DEBUG] [Thread-124532] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:30.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:30:30.569 [DEBUG] [Thread-124532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:30:30.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:30.625 [DEBUG] [Thread-124532] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:30.625 [DEBUG] [Thread-124532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:30.625 [DEBUG] [Thread-124532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:30.626 [DEBUG] [Thread-124532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:30:30.626 [DEBUG] [Thread-124532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:30.645 [INFO] [Thread-124532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:30.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-28T12:30:30.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:31.630 [DEBUG] [Thread-124532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:31.630 [DEBUG] [Thread-124532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:31.679 [DEBUG] [Thread-124532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:31.679 [DEBUG] [Thread-124532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:31.687 [DEBUG] [Thread-124532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:31.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:31.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-28T12:30:31.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-28T12:30:31.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:31.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:31.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:31.719 [DEBUG] [Thread-124532] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:39.616 [DEBUG] [Thread-124534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:41.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:30:41.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:30:41.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-28T12:30:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 30, 30), 18.54, 28.69, 0.0, 4.89, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:30:42.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:30:30
2025-09-28T12:30:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:30:42.570 [DEBUG] [Thread-124535] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c50
2025-09-28T12:30:42.570 [DEBUG] [Thread-124535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:42.590 [DEBUG] [Thread-124535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:30:42.590 [INFO] [Thread-124535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:30:42.593 [DEBUG] [Thread-124535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:42.593 [DEBUG] [Thread-124535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:30:42.593 [DEBUG] [Thread-124535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:42.593 [DEBUG] [Thread-124535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:42.593 [DEBUG] [Thread-124535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] Compression: none
2025-09-28T12:30:42.594 [DEBUG] [Thread-124535] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:42.609 [DEBUG] [Thread-124535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:42.609 [DEBUG] [Thread-124535] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:42.610 [DEBUG] [Thread-124535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:30:42.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:30:42.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:42.611 [DEBUG] [Thread-124535] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:42.612 [DEBUG] [Thread-124535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:42.612 [DEBUG] [Thread-124535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:42.612 [DEBUG] [Thread-124535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:30:42.612 [DEBUG] [Thread-124535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:42.635 [INFO] [Thread-124535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:42.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:43.350 [DEBUG] [Thread-124535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:43.350 [DEBUG] [Thread-124535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:43.350 [DEBUG] [Thread-124535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:30:43.391 [DEBUG] [Thread-124535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:43.391 [DEBUG] [Thread-124535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:43.394 [DEBUG] [Thread-124535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:43.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:43.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:30:43.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:30:43.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:30:43.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:43.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:30:43.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:43.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:43.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:30:43.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437584 -999.00  +18.50   4.18     33   +2.30 1 1 1 1 1   888    0 19.39 153.79 ----- 4.5 4.2 204.6 9.1 26.0 -25.9 24.6 -25.7 24.5 -24.2 25.9 -26.5
2025-09-28T12:30:43.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:30:43.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:30:43.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437584
2025-09-28T12:30:43.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:30:43.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:30:43.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:30:43.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:30:43.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:30:43.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:30:30', tmtdew=18.54, humidity=28.69, cloud=0.0, wind=4.89, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:30:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:30:43.412 [DEBUG] [Thread-124535] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:43.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-28T12:30:43.509 [DEBUG] [Thread-124538] [transport.py] [_log()] starting thread (client mode): 0x2b988d00
2025-09-28T12:30:43.509 [DEBUG] [Thread-124538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:43.524 [DEBUG] [Thread-124538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:30:43.524 [INFO] [Thread-124538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:30:43.532 [DEBUG] [Thread-124538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:43.532 [DEBUG] [Thread-124538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:30:43.532 [DEBUG] [Thread-124538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:43.532 [DEBUG] [Thread-124538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:43.532 [DEBUG] [Thread-124538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:43.533 [DEBUG] [Thread-124538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:43.534 [DEBUG] [Thread-124538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:43.534 [DEBUG] [Thread-124538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:43.534 [DEBUG] [Thread-124538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:43.534 [DEBUG] [Thread-124538] [transport.py] [_log()] Compression: none
2025-09-28T12:30:43.534 [DEBUG] [Thread-124538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:43.590 [DEBUG] [Thread-124538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:43.590 [DEBUG] [Thread-124538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:43.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:30:43.591 [DEBUG] [Thread-124538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:30:43.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:43.645 [DEBUG] [Thread-124538] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:43.646 [DEBUG] [Thread-124538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:43.646 [DEBUG] [Thread-124538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:43.646 [DEBUG] [Thread-124538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:30:43.646 [DEBUG] [Thread-124538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:43.664 [INFO] [Thread-124538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:43.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:30:43.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:44.618 [DEBUG] [Thread-124538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:44.618 [DEBUG] [Thread-124538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:44.667 [DEBUG] [Thread-124538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:44.667 [DEBUG] [Thread-124538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:44.675 [DEBUG] [Thread-124538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:44.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:44.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-28T12:30:44.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:30:44.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:44.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:44.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:44.708 [DEBUG] [Thread-124538] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:46.543 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:46.544 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:54.654 [DEBUG] [Thread-124540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:30:54.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:30:54.711 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:30:54.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:30:55.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 30, 30), 18.54, 28.69, 0.0, 4.89, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:30:55.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:30:30
2025-09-28T12:30:55.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:30:55.558 [DEBUG] [Thread-124541] [transport.py] [_log()] starting thread (client mode): 0x2b9dd720
2025-09-28T12:30:55.558 [DEBUG] [Thread-124541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:55.575 [DEBUG] [Thread-124541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:30:55.575 [INFO] [Thread-124541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:30:55.578 [DEBUG] [Thread-124541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:55.578 [DEBUG] [Thread-124541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:30:55.578 [DEBUG] [Thread-124541] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] Compression: none
2025-09-28T12:30:55.579 [DEBUG] [Thread-124541] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:55.598 [DEBUG] [Thread-124541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:55.598 [DEBUG] [Thread-124541] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:55.599 [DEBUG] [Thread-124541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:30:55.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:30:55.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:55.601 [DEBUG] [Thread-124541] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:55.601 [DEBUG] [Thread-124541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:55.601 [DEBUG] [Thread-124541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:55.601 [DEBUG] [Thread-124541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:30:55.601 [DEBUG] [Thread-124541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:55.616 [INFO] [Thread-124541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:55.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:56.375 [DEBUG] [Thread-124541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:56.376 [DEBUG] [Thread-124541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:56.376 [DEBUG] [Thread-124541] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:30:56.416 [DEBUG] [Thread-124541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:56.417 [DEBUG] [Thread-124541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:56.419 [DEBUG] [Thread-124541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:56.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:56.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:30:56.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:30:56.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:30:56.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:56.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:30:56.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437584 -999.00  +18.50   4.18     33   +2.30 1 1 1 1 1   888    0 19.39 153.79 ----- 4.5 4.2 204.6 9.1 26.0 -25.9 24.6 -25.7 24.5 -24.2 25.9 -26.5
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:30:56.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437584
2025-09-28T12:30:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:30:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:30:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:30:56.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:30:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:30:56.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:30:30', tmtdew=18.54, humidity=28.69, cloud=0.0, wind=4.89, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:30:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:30:56.438 [DEBUG] [Thread-124541] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:30:56.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-28T12:30:56.531 [DEBUG] [Thread-124544] [transport.py] [_log()] starting thread (client mode): 0x2e3c21d0
2025-09-28T12:30:56.531 [DEBUG] [Thread-124544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:30:56.546 [DEBUG] [Thread-124544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:30:56.546 [INFO] [Thread-124544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:30:56.553 [DEBUG] [Thread-124544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:30:56.553 [DEBUG] [Thread-124544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:30:56.554 [DEBUG] [Thread-124544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] client lang: <none>
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] server lang: <none>
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] kex follows: False
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] Compression: none
2025-09-28T12:30:56.555 [DEBUG] [Thread-124544] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:30:56.610 [DEBUG] [Thread-124544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:30:56.610 [DEBUG] [Thread-124544] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:30:56.611 [DEBUG] [Thread-124544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:30:56.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:30:56.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:30:56.667 [DEBUG] [Thread-124544] [transport.py] [_log()] userauth is OK
2025-09-28T12:30:56.667 [DEBUG] [Thread-124544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:30:56.667 [DEBUG] [Thread-124544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:30:56.667 [DEBUG] [Thread-124544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:30:56.668 [DEBUG] [Thread-124544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:30:56.686 [INFO] [Thread-124544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:30:56.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-28T12:30:56.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:30:57.702 [DEBUG] [Thread-124544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:30:57.703 [DEBUG] [Thread-124544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:30:57.750 [DEBUG] [Thread-124544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:30:57.750 [DEBUG] [Thread-124544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:30:57.759 [DEBUG] [Thread-124544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:30:57.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:30:57.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-28T12:30:57.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') -> 00000000
2025-09-28T12:30:57.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:30:57.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:30:57.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:30:57.794 [DEBUG] [Thread-124544] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:07.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:31:07.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:31:07.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-28T12:31:08.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 31, 2), 18.55, 28.66, 0.0, 4.52, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:31:08.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:31:02
2025-09-28T12:31:08.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:31:08.643 [DEBUG] [Thread-124546] [transport.py] [_log()] starting thread (client mode): 0x2e3fb490
2025-09-28T12:31:08.643 [DEBUG] [Thread-124546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:08.664 [DEBUG] [Thread-124546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:31:08.664 [INFO] [Thread-124546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:31:08.667 [DEBUG] [Thread-124546] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:08.667 [DEBUG] [Thread-124546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:31:08.667 [DEBUG] [Thread-124546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:08.667 [DEBUG] [Thread-124546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] Compression: none
2025-09-28T12:31:08.668 [DEBUG] [Thread-124546] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:08.685 [DEBUG] [Thread-124546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:08.685 [DEBUG] [Thread-124546] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:08.686 [DEBUG] [Thread-124546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:31:08.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:31:08.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:08.688 [DEBUG] [Thread-124546] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:08.688 [DEBUG] [Thread-124546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:08.688 [DEBUG] [Thread-124546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:08.688 [DEBUG] [Thread-124546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:31:08.688 [DEBUG] [Thread-124546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:08.711 [INFO] [Thread-124546] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:08.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:09.263 [DEBUG] [Thread-124548 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:09.316 [DEBUG] [Thread-124546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:09.316 [DEBUG] [Thread-124546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:09.317 [DEBUG] [Thread-124546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:31:09.357 [DEBUG] [Thread-124546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:09.358 [DEBUG] [Thread-124546] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:09.360 [DEBUG] [Thread-124546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:09.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:09.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:31:09.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:31:09.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:31:09.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:09.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:31:09.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:09.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:31:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437932 -999.00  +18.70   4.21     33   +2.40 1 1 1 1 1   888    0 19.01 138.59 ----- 3.4 4.2 185.9 5.7 -999.0 -999.0 24.8 -24.7 24.7 -24.1 26.1 -24.8
2025-09-28T12:31:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:31:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:31:09.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437932
2025-09-28T12:31:09.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:31:09.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:31:09.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:31:09.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:31:09.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:31:09.381 [DEBUG] [Thread-124546] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:09.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:31:02', tmtdew=18.55, humidity=28.66, cloud=0.0, wind=4.52, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:30:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:31:09.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-28T12:31:09.478 [DEBUG] [Thread-124550] [transport.py] [_log()] starting thread (client mode): 0x2e377be0
2025-09-28T12:31:09.478 [DEBUG] [Thread-124550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:09.492 [DEBUG] [Thread-124550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:31:09.492 [INFO] [Thread-124550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:09.500 [DEBUG] [Thread-124550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] Compression: none
2025-09-28T12:31:09.501 [DEBUG] [Thread-124550] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:09.558 [DEBUG] [Thread-124550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:09.559 [DEBUG] [Thread-124550] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:09.559 [DEBUG] [Thread-124550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:31:09.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:31:09.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:09.619 [DEBUG] [Thread-124550] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:09.619 [DEBUG] [Thread-124550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:09.619 [DEBUG] [Thread-124550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:09.619 [DEBUG] [Thread-124550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:31:09.619 [DEBUG] [Thread-124550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:09.638 [INFO] [Thread-124550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:09.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-28T12:31:09.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:09.709 [DEBUG] [Thread-124552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:10.608 [DEBUG] [Thread-124550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:10.608 [DEBUG] [Thread-124550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:10.656 [DEBUG] [Thread-124550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:10.656 [DEBUG] [Thread-124550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:10.665 [DEBUG] [Thread-124550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:10.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:10.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-28T12:31:10.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') -> 00000000
2025-09-28T12:31:10.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:10.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:10.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:10.700 [DEBUG] [Thread-124550] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:20.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:31:20.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:31:20.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:31:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 31, 2), 18.55, 28.66, 0.0, 4.52, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:31:21.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:31:02
2025-09-28T12:31:21.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:31:21.548 [DEBUG] [Thread-124553] [transport.py] [_log()] starting thread (client mode): 0x2b96c820
2025-09-28T12:31:21.548 [DEBUG] [Thread-124553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:21.569 [DEBUG] [Thread-124553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:31:21.569 [INFO] [Thread-124553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:31:21.572 [DEBUG] [Thread-124553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] Compression: none
2025-09-28T12:31:21.573 [DEBUG] [Thread-124553] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:21.590 [DEBUG] [Thread-124553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:21.591 [DEBUG] [Thread-124553] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:21.591 [DEBUG] [Thread-124553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:31:21.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:31:21.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:21.594 [DEBUG] [Thread-124553] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:21.594 [DEBUG] [Thread-124553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:21.594 [DEBUG] [Thread-124553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:21.594 [DEBUG] [Thread-124553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:31:21.594 [DEBUG] [Thread-124553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:21.618 [INFO] [Thread-124553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:21.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:22.395 [DEBUG] [Thread-124553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:22.395 [DEBUG] [Thread-124553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:22.396 [DEBUG] [Thread-124553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:31:22.436 [DEBUG] [Thread-124553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:22.436 [DEBUG] [Thread-124553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:22.439 [DEBUG] [Thread-124553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:22.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:22.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:31:22.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:31:22.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:31:22.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:22.461 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:31:22.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:22.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:31:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.437932 -999.00  +18.70   4.21     33   +2.40 1 1 1 1 1   888    0 19.01 138.59 ----- 3.4 4.2 185.9 5.7 -999.0 -999.0 24.8 -24.7 24.7 -24.1 26.1 -24.8
2025-09-28T12:31:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:31:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:31:22.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.437932
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:31:22.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:31:02', tmtdew=18.55, humidity=28.66, cloud=0.0, wind=4.52, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:30:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:31:22.464 [DEBUG] [Thread-124553] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:22.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-28T12:31:22.559 [DEBUG] [Thread-124556] [transport.py] [_log()] starting thread (client mode): 0x2e3dde70
2025-09-28T12:31:22.559 [DEBUG] [Thread-124556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:22.575 [DEBUG] [Thread-124556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:31:22.575 [INFO] [Thread-124556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:22.582 [DEBUG] [Thread-124556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] Compression: none
2025-09-28T12:31:22.583 [DEBUG] [Thread-124556] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:22.638 [DEBUG] [Thread-124556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:22.638 [DEBUG] [Thread-124556] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:22.639 [DEBUG] [Thread-124556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:31:22.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:31:22.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:22.695 [DEBUG] [Thread-124556] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:22.696 [DEBUG] [Thread-124556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:22.696 [DEBUG] [Thread-124556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:22.696 [DEBUG] [Thread-124556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:31:22.696 [DEBUG] [Thread-124556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:22.715 [INFO] [Thread-124556] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:22.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-28T12:31:22.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:23.667 [DEBUG] [Thread-124556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:23.668 [DEBUG] [Thread-124556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:23.715 [DEBUG] [Thread-124556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:23.715 [DEBUG] [Thread-124556] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:23.724 [DEBUG] [Thread-124556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:23.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:23.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-28T12:31:23.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-28T12:31:23.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:23.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:23.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:23.758 [DEBUG] [Thread-124556] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:24.754 [DEBUG] [Thread-124558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:33.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:31:33.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:31:33.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-28T12:31:34.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 31, 2), 18.55, 28.66, 0.0, 4.52, 17.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:31:34.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:31:02
2025-09-28T12:31:34.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:31:34.589 [DEBUG] [Thread-124559] [transport.py] [_log()] starting thread (client mode): 0x2b9f2da0
2025-09-28T12:31:34.589 [DEBUG] [Thread-124559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:34.598 [DEBUG] [Thread-124559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:31:34.598 [INFO] [Thread-124559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] Compression: none
2025-09-28T12:31:34.601 [DEBUG] [Thread-124559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:34.608 [DEBUG] [Thread-124559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:34.608 [DEBUG] [Thread-124559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:34.608 [DEBUG] [Thread-124559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:31:34.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:31:34.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:34.609 [DEBUG] [Thread-124559] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:34.609 [DEBUG] [Thread-124559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:34.609 [DEBUG] [Thread-124559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:34.609 [DEBUG] [Thread-124559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:31:34.609 [DEBUG] [Thread-124559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:34.640 [INFO] [Thread-124559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:34.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:35.235 [DEBUG] [Thread-124559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:35.235 [DEBUG] [Thread-124559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:35.235 [DEBUG] [Thread-124559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:31:35.276 [DEBUG] [Thread-124559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:35.276 [DEBUG] [Thread-124559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:35.278 [DEBUG] [Thread-124559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:35.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:35.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:31:35.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:31:35.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:31:35.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:35.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:31:35.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:35.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:35.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:31:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438279 -999.00  +18.80   4.08     33   +2.40 1 1 1 1 1   888    0 19.17 141.22 ----- 5.3 4.1 262.8 8.2 26.3 -25.8 24.9 -24.5 24.8 -24.2 26.2 -25.8
2025-09-28T12:31:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:31:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:31:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438279
2025-09-28T12:31:35.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:31:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:31:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:31:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:31:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:31:35.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:31:02', tmtdew=18.55, humidity=28.66, cloud=0.0, wind=4.52, temperature=17.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:31:35.296 [DEBUG] [Thread-124559] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:35.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-28T12:31:35.392 [DEBUG] [Thread-124562] [transport.py] [_log()] starting thread (client mode): 0x2e3f8160
2025-09-28T12:31:35.393 [DEBUG] [Thread-124562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:35.408 [DEBUG] [Thread-124562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:31:35.408 [INFO] [Thread-124562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:31:35.415 [DEBUG] [Thread-124562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:35.415 [DEBUG] [Thread-124562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:35.416 [DEBUG] [Thread-124562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:35.417 [DEBUG] [Thread-124562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:35.418 [DEBUG] [Thread-124562] [transport.py] [_log()] Compression: none
2025-09-28T12:31:35.418 [DEBUG] [Thread-124562] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:35.475 [DEBUG] [Thread-124562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:35.475 [DEBUG] [Thread-124562] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:35.476 [DEBUG] [Thread-124562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:31:35.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:31:35.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:35.532 [DEBUG] [Thread-124562] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:35.532 [DEBUG] [Thread-124562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:35.532 [DEBUG] [Thread-124562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:35.532 [DEBUG] [Thread-124562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:31:35.532 [DEBUG] [Thread-124562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:35.546 [INFO] [Thread-124562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:35.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-28T12:31:35.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:36.530 [DEBUG] [Thread-124562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:36.530 [DEBUG] [Thread-124562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:36.578 [DEBUG] [Thread-124562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:36.578 [DEBUG] [Thread-124562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:36.586 [DEBUG] [Thread-124562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:36.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:36.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-28T12:31:36.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-28T12:31:36.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:36.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:36.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:36.618 [DEBUG] [Thread-124562] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:39.790 [DEBUG] [Thread-124564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:46.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:31:46.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:31:46.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-28T12:31:46.685 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:46.686 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:47.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 31, 34), 18.83, 28.03, 0.0, 11.58, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:31:47.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:31:34
2025-09-28T12:31:47.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:31:47.464 [DEBUG] [Thread-124565] [transport.py] [_log()] starting thread (client mode): 0x2b984e80
2025-09-28T12:31:47.464 [DEBUG] [Thread-124565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:47.484 [DEBUG] [Thread-124565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:31:47.484 [INFO] [Thread-124565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:31:47.487 [DEBUG] [Thread-124565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:47.487 [DEBUG] [Thread-124565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:31:47.487 [DEBUG] [Thread-124565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:47.487 [DEBUG] [Thread-124565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:47.487 [DEBUG] [Thread-124565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] Compression: none
2025-09-28T12:31:47.488 [DEBUG] [Thread-124565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:47.504 [DEBUG] [Thread-124565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:47.504 [DEBUG] [Thread-124565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:47.505 [DEBUG] [Thread-124565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:31:47.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:31:47.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:47.507 [DEBUG] [Thread-124565] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:47.507 [DEBUG] [Thread-124565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:47.508 [DEBUG] [Thread-124565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:47.508 [DEBUG] [Thread-124565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:31:47.508 [DEBUG] [Thread-124565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:47.525 [INFO] [Thread-124565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:47.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:48.117 [DEBUG] [Thread-124565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:48.117 [DEBUG] [Thread-124565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:48.117 [DEBUG] [Thread-124565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:31:48.158 [DEBUG] [Thread-124565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:48.158 [DEBUG] [Thread-124565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:48.161 [DEBUG] [Thread-124565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:48.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:48.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:31:48.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:31:48.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:31:48.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:48.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:31:48.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:48.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:48.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:31:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438279 -999.00  +18.80   4.08     33   +2.40 1 1 1 1 1   888    0 19.17 141.22 ----- 5.3 4.1 262.8 8.2 26.3 -25.8 24.9 -24.5 24.8 -24.2 26.2 -25.8
2025-09-28T12:31:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:31:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:31:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438279
2025-09-28T12:31:48.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:31:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:31:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:31:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:31:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:31:48.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:31:34', tmtdew=18.83, humidity=28.03, cloud=0.0, wind=11.58, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:31:48.185 [DEBUG] [Thread-124565] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:48.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-28T12:31:48.279 [DEBUG] [Thread-124568] [transport.py] [_log()] starting thread (client mode): 0x2b987580
2025-09-28T12:31:48.279 [DEBUG] [Thread-124568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:31:48.294 [DEBUG] [Thread-124568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:31:48.294 [INFO] [Thread-124568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:31:48.302 [DEBUG] [Thread-124568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:31:48.302 [DEBUG] [Thread-124568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:31:48.302 [DEBUG] [Thread-124568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:31:48.302 [DEBUG] [Thread-124568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:48.302 [DEBUG] [Thread-124568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] client lang: <none>
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] server lang: <none>
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] kex follows: False
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] Compression: none
2025-09-28T12:31:48.303 [DEBUG] [Thread-124568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:31:48.367 [DEBUG] [Thread-124568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:31:48.368 [DEBUG] [Thread-124568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:31:48.368 [DEBUG] [Thread-124568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:31:48.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:31:48.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:31:48.429 [DEBUG] [Thread-124568] [transport.py] [_log()] userauth is OK
2025-09-28T12:31:48.429 [DEBUG] [Thread-124568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:31:48.429 [DEBUG] [Thread-124568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:31:48.429 [DEBUG] [Thread-124568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:31:48.429 [DEBUG] [Thread-124568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:31:48.444 [INFO] [Thread-124568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:31:48.444 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:31:48.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:31:49.432 [DEBUG] [Thread-124568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:31:49.432 [DEBUG] [Thread-124568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:31:49.480 [DEBUG] [Thread-124568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:31:49.480 [DEBUG] [Thread-124568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:31:49.489 [DEBUG] [Thread-124568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:31:49.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:31:49.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-28T12:31:49.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') -> 00000000
2025-09-28T12:31:49.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:31:49.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:31:49.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:31:49.523 [DEBUG] [Thread-124568] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:31:54.828 [DEBUG] [Thread-124570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:31:59.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:31:59.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:31:59.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-28T12:32:00.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 31, 34), 18.83, 28.03, 0.0, 11.58, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:32:00.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:31:34
2025-09-28T12:32:00.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:32:00.371 [DEBUG] [Thread-124571] [transport.py] [_log()] starting thread (client mode): 0x2b9f2dd0
2025-09-28T12:32:00.371 [DEBUG] [Thread-124571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:00.390 [DEBUG] [Thread-124571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:32:00.390 [INFO] [Thread-124571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:32:00.393 [DEBUG] [Thread-124571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:00.393 [DEBUG] [Thread-124571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:32:00.393 [DEBUG] [Thread-124571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:00.393 [DEBUG] [Thread-124571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:00.393 [DEBUG] [Thread-124571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] Compression: none
2025-09-28T12:32:00.394 [DEBUG] [Thread-124571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:00.412 [DEBUG] [Thread-124571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:00.412 [DEBUG] [Thread-124571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:00.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:32:00.413 [DEBUG] [Thread-124571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:32:00.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:00.415 [DEBUG] [Thread-124571] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:00.415 [DEBUG] [Thread-124571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:00.415 [DEBUG] [Thread-124571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:00.415 [DEBUG] [Thread-124571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:32:00.415 [DEBUG] [Thread-124571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:00.450 [INFO] [Thread-124571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:00.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:01.209 [DEBUG] [Thread-124571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:01.210 [DEBUG] [Thread-124571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:01.210 [DEBUG] [Thread-124571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:32:01.250 [DEBUG] [Thread-124571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:01.250 [DEBUG] [Thread-124571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:01.253 [DEBUG] [Thread-124571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:01.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:01.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:32:01.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:32:01.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:32:01.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:01.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:32:01.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438279 -999.00  +18.80   4.08     33   +2.40 1 1 1 1 1   888    0 19.17 141.22 ----- 5.3 4.1 262.8 8.2 26.3 -25.8 24.9 -24.5 24.8 -24.2 26.2 -25.8
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:32:01.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438279
2025-09-28T12:32:01.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:32:01.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:32:01.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:32:01.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:32:01.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:32:01.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:31:34', tmtdew=18.83, humidity=28.03, cloud=0.0, wind=11.58, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:32:01.279 [DEBUG] [Thread-124571] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:01.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-28T12:32:01.375 [DEBUG] [Thread-124574] [transport.py] [_log()] starting thread (client mode): 0x2e375e70
2025-09-28T12:32:01.375 [DEBUG] [Thread-124574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:01.390 [DEBUG] [Thread-124574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:32:01.390 [INFO] [Thread-124574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:01.397 [DEBUG] [Thread-124574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] Compression: none
2025-09-28T12:32:01.398 [DEBUG] [Thread-124574] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:01.461 [DEBUG] [Thread-124574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:01.461 [DEBUG] [Thread-124574] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:01.462 [DEBUG] [Thread-124574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:32:01.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:32:01.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:01.517 [DEBUG] [Thread-124574] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:01.517 [DEBUG] [Thread-124574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:01.517 [DEBUG] [Thread-124574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:01.517 [DEBUG] [Thread-124574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:32:01.517 [DEBUG] [Thread-124574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:01.536 [INFO] [Thread-124574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:01.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-28T12:32:01.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:02.636 [DEBUG] [Thread-124574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:02.636 [DEBUG] [Thread-124574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:02.685 [DEBUG] [Thread-124574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:02.685 [DEBUG] [Thread-124574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:02.693 [DEBUG] [Thread-124574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:02.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:02.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-28T12:32:02.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-28T12:32:02.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:02.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:02.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:02.725 [DEBUG] [Thread-124574] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:09.309 [DEBUG] [Thread-124576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:09.866 [DEBUG] [Thread-124577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:12.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:32:12.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:32:12.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:32:13.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 32, 7), 18.87, 27.95, 0.0, 10.24, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:32:13.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:32:07
2025-09-28T12:32:13.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:32:13.573 [DEBUG] [Thread-124578] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T12:32:13.573 [DEBUG] [Thread-124578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:13.592 [DEBUG] [Thread-124578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:32:13.592 [INFO] [Thread-124578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:13.596 [DEBUG] [Thread-124578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] Compression: none
2025-09-28T12:32:13.597 [DEBUG] [Thread-124578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:13.615 [DEBUG] [Thread-124578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:13.616 [DEBUG] [Thread-124578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:13.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:32:13.617 [DEBUG] [Thread-124578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:32:13.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:13.618 [DEBUG] [Thread-124578] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:13.618 [DEBUG] [Thread-124578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:13.618 [DEBUG] [Thread-124578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:13.619 [DEBUG] [Thread-124578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:32:13.619 [DEBUG] [Thread-124578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:13.642 [INFO] [Thread-124578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:13.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:14.247 [DEBUG] [Thread-124578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:14.248 [DEBUG] [Thread-124578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:14.248 [DEBUG] [Thread-124578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:32:14.288 [DEBUG] [Thread-124578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:14.288 [DEBUG] [Thread-124578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:14.290 [DEBUG] [Thread-124578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:14.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:14.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:32:14.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:32:14.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:32:14.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:14.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:32:14.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:14.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438626 -999.00  +18.90   7.13     33   +2.40 1 1 1 1 1   888    0 19.47 148.02 ----- 9.2 7.1 244.4 8.6 26.3 -26.7 25.0 -24.7 24.9 -24.4 26.3 -26.1
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438626
2025-09-28T12:32:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:32:14.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:32:14.317 [DEBUG] [Thread-124578] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:14.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:32:14.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:32:14.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:32:14.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:32:07', tmtdew=18.87, humidity=27.95, cloud=0.0, wind=10.24, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:32:14.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-28T12:32:14.421 [DEBUG] [Thread-124581] [transport.py] [_log()] starting thread (client mode): 0x2e3c21d0
2025-09-28T12:32:14.421 [DEBUG] [Thread-124581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:14.436 [DEBUG] [Thread-124581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:32:14.436 [INFO] [Thread-124581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:32:14.447 [DEBUG] [Thread-124581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:14.447 [DEBUG] [Thread-124581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:32:14.447 [DEBUG] [Thread-124581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:14.448 [DEBUG] [Thread-124581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:14.449 [DEBUG] [Thread-124581] [transport.py] [_log()] Compression: none
2025-09-28T12:32:14.449 [DEBUG] [Thread-124581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:14.502 [DEBUG] [Thread-124581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:14.502 [DEBUG] [Thread-124581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:14.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:32:14.503 [DEBUG] [Thread-124581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:32:14.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:14.558 [DEBUG] [Thread-124581] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:14.558 [DEBUG] [Thread-124581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:14.558 [DEBUG] [Thread-124581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:14.558 [DEBUG] [Thread-124581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:32:14.558 [DEBUG] [Thread-124581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:14.577 [INFO] [Thread-124581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:14.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-28T12:32:14.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:15.542 [DEBUG] [Thread-124581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:15.542 [DEBUG] [Thread-124581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:15.590 [DEBUG] [Thread-124581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:15.590 [DEBUG] [Thread-124581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:15.599 [DEBUG] [Thread-124581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:15.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:15.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-28T12:32:15.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-28T12:32:15.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:15.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:15.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:15.635 [DEBUG] [Thread-124581] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:24.897 [DEBUG] [Thread-124583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:25.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:32:25.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:32:25.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:32:26.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 32, 7), 18.87, 27.95, 0.0, 10.24, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:32:26.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:32:07
2025-09-28T12:32:26.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:32:26.502 [DEBUG] [Thread-124584] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T12:32:26.503 [DEBUG] [Thread-124584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:26.523 [DEBUG] [Thread-124584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:32:26.523 [INFO] [Thread-124584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] Compression: none
2025-09-28T12:32:26.527 [DEBUG] [Thread-124584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:26.544 [DEBUG] [Thread-124584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:26.544 [DEBUG] [Thread-124584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:26.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:32:26.544 [DEBUG] [Thread-124584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:32:26.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:26.545 [DEBUG] [Thread-124584] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:26.545 [DEBUG] [Thread-124584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:26.545 [DEBUG] [Thread-124584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:26.545 [DEBUG] [Thread-124584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:32:26.545 [DEBUG] [Thread-124584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:26.561 [INFO] [Thread-124584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:26.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:27.276 [DEBUG] [Thread-124584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:27.276 [DEBUG] [Thread-124584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:27.276 [DEBUG] [Thread-124584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:32:27.317 [DEBUG] [Thread-124584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:27.317 [DEBUG] [Thread-124584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:27.319 [DEBUG] [Thread-124584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:27.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:27.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:32:27.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:32:27.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:32:27.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:27.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:32:27.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438626 -999.00  +18.90   7.13     33   +2.40 1 1 1 1 1   888    0 19.47 148.02 ----- 9.2 7.1 244.4 8.6 26.3 -26.7 25.0 -24.7 24.9 -24.4 26.3 -26.1
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438626
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:32:27.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:32:07', tmtdew=18.87, humidity=27.95, cloud=0.0, wind=10.24, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:32:27.333 [DEBUG] [Thread-124584] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:27.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-28T12:32:27.418 [DEBUG] [Thread-124587] [transport.py] [_log()] starting thread (client mode): 0x2b9f32b0
2025-09-28T12:32:27.419 [DEBUG] [Thread-124587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:27.434 [DEBUG] [Thread-124587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:32:27.434 [INFO] [Thread-124587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:32:27.441 [DEBUG] [Thread-124587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:27.441 [DEBUG] [Thread-124587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:32:27.441 [DEBUG] [Thread-124587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:27.441 [DEBUG] [Thread-124587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:27.441 [DEBUG] [Thread-124587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] Compression: none
2025-09-28T12:32:27.442 [DEBUG] [Thread-124587] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:27.497 [DEBUG] [Thread-124587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:27.497 [DEBUG] [Thread-124587] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:27.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:32:27.498 [DEBUG] [Thread-124587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:32:27.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:27.554 [DEBUG] [Thread-124587] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:27.554 [DEBUG] [Thread-124587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:27.554 [DEBUG] [Thread-124587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:27.554 [DEBUG] [Thread-124587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:32:27.554 [DEBUG] [Thread-124587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:27.572 [INFO] [Thread-124587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:27.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-28T12:32:27.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:28.601 [DEBUG] [Thread-124587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:28.601 [DEBUG] [Thread-124587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:28.649 [DEBUG] [Thread-124587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:28.649 [DEBUG] [Thread-124587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:28.657 [DEBUG] [Thread-124587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:28.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:28.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-28T12:32:28.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-28T12:32:28.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:28.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:28.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:28.689 [DEBUG] [Thread-124587] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:38.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:32:38.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:32:38.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-28T12:32:39.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 32, 7), 18.87, 27.95, 0.0, 10.24, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:32:39.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:32:07
2025-09-28T12:32:39.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:32:39.522 [DEBUG] [Thread-124589] [transport.py] [_log()] starting thread (client mode): 0x2b9853f0
2025-09-28T12:32:39.522 [DEBUG] [Thread-124589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:39.541 [DEBUG] [Thread-124589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:32:39.541 [INFO] [Thread-124589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:32:39.544 [DEBUG] [Thread-124589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:39.544 [DEBUG] [Thread-124589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] Compression: none
2025-09-28T12:32:39.545 [DEBUG] [Thread-124589] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:39.562 [DEBUG] [Thread-124589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:39.563 [DEBUG] [Thread-124589] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:39.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:32:39.564 [DEBUG] [Thread-124589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:32:39.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:39.565 [DEBUG] [Thread-124589] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:39.566 [DEBUG] [Thread-124589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:39.566 [DEBUG] [Thread-124589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:39.566 [DEBUG] [Thread-124589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:32:39.566 [DEBUG] [Thread-124589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:39.583 [INFO] [Thread-124589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:39.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:39.935 [DEBUG] [Thread-124591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:40.325 [DEBUG] [Thread-124589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:40.326 [DEBUG] [Thread-124589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:40.326 [DEBUG] [Thread-124589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:32:40.367 [DEBUG] [Thread-124589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:40.367 [DEBUG] [Thread-124589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:40.369 [DEBUG] [Thread-124589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:40.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:40.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:32:40.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:32:40.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:32:40.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:40.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:32:40.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.438626 -999.00  +18.90   7.13     33   +2.40 1 1 1 1 1   888    0 19.47 148.02 ----- 9.2 7.1 244.4 8.6 26.3 -26.7 25.0 -24.7 24.9 -24.4 26.3 -26.1
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.438626
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:32:40.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:32:07', tmtdew=18.87, humidity=27.95, cloud=0.0, wind=10.24, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:31:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:32:40.381 [DEBUG] [Thread-124589] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:40.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-28T12:32:40.467 [DEBUG] [Thread-124593] [transport.py] [_log()] starting thread (client mode): 0x2b9c3340
2025-09-28T12:32:40.467 [DEBUG] [Thread-124593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:40.483 [DEBUG] [Thread-124593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:32:40.483 [INFO] [Thread-124593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:32:40.490 [DEBUG] [Thread-124593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:40.490 [DEBUG] [Thread-124593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] Compression: none
2025-09-28T12:32:40.491 [DEBUG] [Thread-124593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:40.545 [DEBUG] [Thread-124593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:40.546 [DEBUG] [Thread-124593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:40.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:32:40.546 [DEBUG] [Thread-124593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:32:40.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:40.603 [DEBUG] [Thread-124593] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:40.603 [DEBUG] [Thread-124593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:40.603 [DEBUG] [Thread-124593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:40.603 [DEBUG] [Thread-124593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:32:40.603 [DEBUG] [Thread-124593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:40.619 [INFO] [Thread-124593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:40.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-28T12:32:40.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:41.596 [DEBUG] [Thread-124593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:41.596 [DEBUG] [Thread-124593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:41.644 [DEBUG] [Thread-124593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:41.644 [DEBUG] [Thread-124593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:41.652 [DEBUG] [Thread-124593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:41.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:41.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-28T12:32:41.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') -> 00000000
2025-09-28T12:32:41.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:41.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:41.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:41.686 [DEBUG] [Thread-124593] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:46.824 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:46.826 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:32:51.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:32:51.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:32:51.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-28T12:32:52.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 32, 39), 19.33, 26.83, 0.0, 12.81, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:32:52.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:32:39
2025-09-28T12:32:52.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:32:52.524 [DEBUG] [Thread-124595] [transport.py] [_log()] starting thread (client mode): 0x2b9cee90
2025-09-28T12:32:52.524 [DEBUG] [Thread-124595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:52.545 [DEBUG] [Thread-124595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:32:52.545 [INFO] [Thread-124595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:52.548 [DEBUG] [Thread-124595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] Compression: none
2025-09-28T12:32:52.549 [DEBUG] [Thread-124595] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:52.566 [DEBUG] [Thread-124595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:52.567 [DEBUG] [Thread-124595] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:52.567 [DEBUG] [Thread-124595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:32:52.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:32:52.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:52.569 [DEBUG] [Thread-124595] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:52.569 [DEBUG] [Thread-124595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:52.569 [DEBUG] [Thread-124595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:52.569 [DEBUG] [Thread-124595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:32:52.570 [DEBUG] [Thread-124595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:52.593 [INFO] [Thread-124595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:52.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:53.244 [DEBUG] [Thread-124595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:53.244 [DEBUG] [Thread-124595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:53.245 [DEBUG] [Thread-124595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:32:53.285 [DEBUG] [Thread-124595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:53.285 [DEBUG] [Thread-124595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:53.288 [DEBUG] [Thread-124595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:53.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:53.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:32:53.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:32:53.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:32:53.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:53.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:32:53.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.439321 -999.00  +19.00  13.63     32   +1.90 1 1 1 1 1   888    0 19.30 143.77 ----- 8.4 13.6 247.8 23.1 26.3 -26.6 25.0 -26.9 24.9 -24.4 26.2 -26.6
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:32:53.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.439321
2025-09-28T12:32:53.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:32:53.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:32:53.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:32:53.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:32:53.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:32:53.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:32:39', tmtdew=19.33, humidity=26.83, cloud=0.0, wind=12.81, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:32:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:32:53.311 [DEBUG] [Thread-124595] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:53.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-28T12:32:53.409 [DEBUG] [Thread-124598] [transport.py] [_log()] starting thread (client mode): 0x2b984430
2025-09-28T12:32:53.410 [DEBUG] [Thread-124598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:32:53.424 [DEBUG] [Thread-124598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:32:53.424 [INFO] [Thread-124598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] client lang: <none>
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] server lang: <none>
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] kex follows: False
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:32:53.432 [DEBUG] [Thread-124598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:32:53.433 [DEBUG] [Thread-124598] [transport.py] [_log()] Compression: none
2025-09-28T12:32:53.433 [DEBUG] [Thread-124598] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:32:53.491 [DEBUG] [Thread-124598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:32:53.491 [DEBUG] [Thread-124598] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:32:53.492 [DEBUG] [Thread-124598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:32:53.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:32:53.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:32:53.547 [DEBUG] [Thread-124598] [transport.py] [_log()] userauth is OK
2025-09-28T12:32:53.548 [DEBUG] [Thread-124598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:32:53.548 [DEBUG] [Thread-124598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:32:53.548 [DEBUG] [Thread-124598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:32:53.548 [DEBUG] [Thread-124598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:32:53.570 [INFO] [Thread-124598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:32:53.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-28T12:32:53.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:32:54.538 [DEBUG] [Thread-124598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:32:54.538 [DEBUG] [Thread-124598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:32:54.586 [DEBUG] [Thread-124598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:32:54.586 [DEBUG] [Thread-124598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:32:54.595 [DEBUG] [Thread-124598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:32:54.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:32:54.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-28T12:32:54.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-28T12:32:54.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:32:54.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:32:54.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:32:54.630 [DEBUG] [Thread-124598] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:32:54.966 [DEBUG] [Thread-124600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:04.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:33:04.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:33:04.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-28T12:33:05.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 32, 39), 19.33, 26.83, 0.0, 12.81, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:33:05.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:32:39
2025-09-28T12:33:05.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:33:05.490 [DEBUG] [Thread-124601] [transport.py] [_log()] starting thread (client mode): 0x2b9856f0
2025-09-28T12:33:05.490 [DEBUG] [Thread-124601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:33:05.512 [DEBUG] [Thread-124601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:33:05.512 [INFO] [Thread-124601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] client lang: <none>
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] server lang: <none>
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] kex follows: False
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] Compression: none
2025-09-28T12:33:05.515 [DEBUG] [Thread-124601] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:33:05.530 [DEBUG] [Thread-124601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:33:05.530 [DEBUG] [Thread-124601] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:33:05.530 [DEBUG] [Thread-124601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:33:05.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:33:05.530 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:33:05.531 [DEBUG] [Thread-124601] [transport.py] [_log()] userauth is OK
2025-09-28T12:33:05.531 [DEBUG] [Thread-124601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:33:05.531 [DEBUG] [Thread-124601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:33:05.531 [DEBUG] [Thread-124601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:33:05.531 [DEBUG] [Thread-124601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:33:05.546 [INFO] [Thread-124601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:33:05.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:33:06.312 [DEBUG] [Thread-124601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:33:06.312 [DEBUG] [Thread-124601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:33:06.313 [DEBUG] [Thread-124601] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:33:06.353 [DEBUG] [Thread-124601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:33:06.353 [DEBUG] [Thread-124601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:33:06.355 [DEBUG] [Thread-124601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:33:06.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:33:06.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:33:06.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:33:06.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:33:06.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:33:06.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:33:06.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.439321 -999.00  +19.00  13.63     32   +1.90 1 1 1 1 1   888    0 19.30 143.77 ----- 8.4 13.6 247.8 23.1 26.3 -26.6 25.0 -26.9 24.9 -24.4 26.2 -26.6
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:33:06.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.439321
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:33:06.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:32:39', tmtdew=19.33, humidity=26.83, cloud=0.0, wind=12.81, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:32:37.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:33:06.373 [DEBUG] [Thread-124601] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:33:06.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-28T12:33:06.459 [DEBUG] [Thread-124604] [transport.py] [_log()] starting thread (client mode): 0x2b987d90
2025-09-28T12:33:06.459 [DEBUG] [Thread-124604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:33:06.473 [DEBUG] [Thread-124604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:33:06.473 [INFO] [Thread-124604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] client lang: <none>
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] server lang: <none>
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] kex follows: False
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] Compression: none
2025-09-28T12:33:06.481 [DEBUG] [Thread-124604] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:33:06.539 [DEBUG] [Thread-124604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:33:06.539 [DEBUG] [Thread-124604] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:33:06.539 [DEBUG] [Thread-124604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:33:06.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:33:06.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:33:06.596 [DEBUG] [Thread-124604] [transport.py] [_log()] userauth is OK
2025-09-28T12:33:06.596 [DEBUG] [Thread-124604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:33:06.596 [DEBUG] [Thread-124604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:33:06.596 [DEBUG] [Thread-124604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:33:06.596 [DEBUG] [Thread-124604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:33:06.610 [INFO] [Thread-124604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:33:06.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-28T12:33:06.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:33:07.673 [DEBUG] [Thread-124604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:33:07.673 [DEBUG] [Thread-124604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:33:07.721 [DEBUG] [Thread-124604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:33:07.721 [DEBUG] [Thread-124604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:33:07.729 [DEBUG] [Thread-124604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:33:07.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:33:07.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-28T12:33:07.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-28T12:33:07.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:33:07.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:33:07.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:33:07.762 [DEBUG] [Thread-124604] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:33:09.366 [DEBUG] [Thread-124606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:10.009 [DEBUG] [Thread-124607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:17.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:33:17.765 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:33:17.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-28T12:33:18.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 33, 11), 19.17, 27.14, 0.0, 19.83, 18.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:33:18.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:33:11
2025-09-28T12:33:18.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:33:18.614 [DEBUG] [Thread-124608] [transport.py] [_log()] starting thread (client mode): 0x2b9c3580
2025-09-28T12:33:18.615 [DEBUG] [Thread-124608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:33:18.637 [DEBUG] [Thread-124608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:33:18.637 [INFO] [Thread-124608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] client lang: <none>
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] server lang: <none>
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] kex follows: False
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:33:18.638 [DEBUG] [Thread-124608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:33:18.639 [DEBUG] [Thread-124608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:33:18.639 [DEBUG] [Thread-124608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:33:18.639 [DEBUG] [Thread-124608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:33:18.639 [DEBUG] [Thread-124608] [transport.py] [_log()] Compression: none
2025-09-28T12:33:18.639 [DEBUG] [Thread-124608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:33:18.647 [DEBUG] [Thread-124608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:33:18.648 [DEBUG] [Thread-124608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:33:18.648 [DEBUG] [Thread-124608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:33:18.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:33:18.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:33:18.650 [DEBUG] [Thread-124608] [transport.py] [_log()] userauth is OK
2025-09-28T12:33:18.650 [DEBUG] [Thread-124608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:33:18.650 [DEBUG] [Thread-124608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:33:18.650 [DEBUG] [Thread-124608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:33:18.650 [DEBUG] [Thread-124608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:33:18.669 [INFO] [Thread-124608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:33:18.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:33:19.289 [DEBUG] [Thread-124608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:33:19.289 [DEBUG] [Thread-124608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:33:19.289 [DEBUG] [Thread-124608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:33:19.330 [DEBUG] [Thread-124608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:33:19.330 [DEBUG] [Thread-124608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:33:19.333 [DEBUG] [Thread-124608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:33:19.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:33:19.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:33:19.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:33:19.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:33:19.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:33:19.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:33:19.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:33:19.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:33:19.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:33:19.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.439668 -999.00  +19.30  10.58     31   +1.90 1 1 1 1 1   888    0 19.42 142.69 ----- 10.7 10.6 233.1 21.3 26.2 -27.1 24.9 -25.6 24.8 -25.7 26.1 -26.8
2025-09-28T12:33:19.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:33:19.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:33:19.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.439668
2025-09-28T12:33:19.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:33:19.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:33:19.358 [DEBUG] [Thread-124608] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:33:19.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:33:19.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:33:19.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:33:19.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:33:11', tmtdew=19.17, humidity=27.14, cloud=0.0, wind=19.83, temperature=18.23, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:33:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:33:19.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-28T12:33:25.041 [DEBUG] [Thread-124611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:40.094 [DEBUG] [Thread-124612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:46.967 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:46.968 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:33:55.127 [DEBUG] [Thread-124613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:09.414 [DEBUG] [Thread-124614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:10.163 [DEBUG] [Thread-124615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:25.190 [DEBUG] [Thread-124616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:40.222 [DEBUG] [Thread-124617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:47.123 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:47.123 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:34:55.252 [DEBUG] [Thread-124618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:09.471 [DEBUG] [Thread-124619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:10.282 [DEBUG] [Thread-124620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:25.316 [DEBUG] [Thread-124621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:31.898 [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-28T12:35:40.351 [DEBUG] [Thread-124622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:41.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:35:41.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:35:41.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-28T12:35:42.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 35, 19), 20.17, 25.62, 0.0, 19.9, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:35:42.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:35:19
2025-09-28T12:35:42.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:35:42.761 [DEBUG] [Thread-124623] [transport.py] [_log()] starting thread (client mode): 0x2b9dfeb0
2025-09-28T12:35:42.762 [DEBUG] [Thread-124623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:35:42.782 [DEBUG] [Thread-124623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:35:42.782 [INFO] [Thread-124623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] client lang: <none>
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] server lang: <none>
2025-09-28T12:35:42.785 [DEBUG] [Thread-124623] [transport.py] [_log()] kex follows: False
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] Compression: none
2025-09-28T12:35:42.786 [DEBUG] [Thread-124623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:35:42.802 [DEBUG] [Thread-124623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:35:42.803 [DEBUG] [Thread-124623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:35:42.803 [DEBUG] [Thread-124623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:35:42.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:35:42.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:35:42.805 [DEBUG] [Thread-124623] [transport.py] [_log()] userauth is OK
2025-09-28T12:35:42.805 [DEBUG] [Thread-124623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:35:42.805 [DEBUG] [Thread-124623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:35:42.806 [DEBUG] [Thread-124623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:35:42.806 [DEBUG] [Thread-124623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:35:42.830 [INFO] [Thread-124623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:35:42.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:35:43.413 [DEBUG] [Thread-124623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:35:43.413 [DEBUG] [Thread-124623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:35:43.413 [DEBUG] [Thread-124623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:35:43.454 [DEBUG] [Thread-124623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:35:43.455 [DEBUG] [Thread-124623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:35:43.457 [DEBUG] [Thread-124623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:35:43.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:35:43.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:35:43.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:35:43.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:35:43.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:35:43.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:35:43.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:35:43.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.441056 -999.00  +18.90  15.88     30   +1.30 1 1 1 1 1   888    0 19.90 151.43 ----- 13.2 15.9 206.0 24.9 25.8 -27.4 24.6 -27.3 24.7 -25.8 25.8 -27.4
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.441056
2025-09-28T12:35:43.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:35:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:35:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:35:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:35:43.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:35:43.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:35:19', tmtdew=20.17, humidity=25.62, cloud=0.0, wind=19.9, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:35:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:35:43.486 [DEBUG] [Thread-124623] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:35:43.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-28T12:35:43.582 [DEBUG] [Thread-124626] [transport.py] [_log()] starting thread (client mode): 0x2b985db0
2025-09-28T12:35:43.582 [DEBUG] [Thread-124626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:35:43.596 [DEBUG] [Thread-124626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:35:43.597 [INFO] [Thread-124626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:35:43.604 [DEBUG] [Thread-124626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:35:43.604 [DEBUG] [Thread-124626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] client lang: <none>
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] server lang: <none>
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] kex follows: False
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] Compression: none
2025-09-28T12:35:43.605 [DEBUG] [Thread-124626] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:35:43.661 [DEBUG] [Thread-124626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:35:43.661 [DEBUG] [Thread-124626] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:35:43.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:35:43.662 [DEBUG] [Thread-124626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:35:43.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:35:43.717 [DEBUG] [Thread-124626] [transport.py] [_log()] userauth is OK
2025-09-28T12:35:43.718 [DEBUG] [Thread-124626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:35:43.718 [DEBUG] [Thread-124626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:35:43.718 [DEBUG] [Thread-124626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:35:43.718 [DEBUG] [Thread-124626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:35:43.738 [INFO] [Thread-124626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:35:43.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-28T12:35:43.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:35:44.684 [DEBUG] [Thread-124626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:35:44.684 [DEBUG] [Thread-124626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:35:44.732 [DEBUG] [Thread-124626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:35:44.733 [DEBUG] [Thread-124626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:35:44.742 [DEBUG] [Thread-124626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:35:44.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:35:44.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-28T12:35:44.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-28T12:35:44.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:35:44.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:35:44.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:35:44.777 [DEBUG] [Thread-124626] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:35:47.267 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:47.269 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:54.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:35:54.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:35:54.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-28T12:35:55.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 35, 51), 20.05, 25.8, 0.0, 23.15, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:35:55.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:35:51
2025-09-28T12:35:55.380 [DEBUG] [Thread-124628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:35:55.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:35:55.631 [DEBUG] [Thread-124629] [transport.py] [_log()] starting thread (client mode): 0x2b9dc7f0
2025-09-28T12:35:55.631 [DEBUG] [Thread-124629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:35:55.651 [DEBUG] [Thread-124629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:35:55.651 [INFO] [Thread-124629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:35:55.655 [DEBUG] [Thread-124629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] client lang: <none>
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] server lang: <none>
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] kex follows: False
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] Compression: none
2025-09-28T12:35:55.656 [DEBUG] [Thread-124629] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:35:55.673 [DEBUG] [Thread-124629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:35:55.674 [DEBUG] [Thread-124629] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:35:55.674 [DEBUG] [Thread-124629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:35:55.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:35:55.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:35:55.676 [DEBUG] [Thread-124629] [transport.py] [_log()] userauth is OK
2025-09-28T12:35:55.676 [DEBUG] [Thread-124629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:35:55.676 [DEBUG] [Thread-124629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:35:55.676 [DEBUG] [Thread-124629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:35:55.676 [DEBUG] [Thread-124629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:35:55.694 [INFO] [Thread-124629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:35:55.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:35:56.292 [DEBUG] [Thread-124629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:35:56.293 [DEBUG] [Thread-124629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:35:56.293 [DEBUG] [Thread-124629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:35:56.333 [DEBUG] [Thread-124629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:35:56.334 [DEBUG] [Thread-124629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:35:56.337 [DEBUG] [Thread-124629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:35:56.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:35:56.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:35:56.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:35:56.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:35:56.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:35:56.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:35:56.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:35:56.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:35:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:35:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.441056 -999.00  +18.90  15.88     30   +1.30 1 1 1 1 1   888    0 19.90 151.43 ----- 13.2 15.9 206.0 24.9 25.8 -27.4 24.6 -27.3 24.7 -25.8 25.8 -27.4
2025-09-28T12:35:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:35:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:35:56.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.441056
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:35:56.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:35:51', tmtdew=20.05, humidity=25.8, cloud=0.0, wind=23.15, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:35:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:35:56.360 [DEBUG] [Thread-124629] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:35:56.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-28T12:35:56.443 [DEBUG] [Thread-124632] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-28T12:35:56.444 [DEBUG] [Thread-124632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:35:56.459 [DEBUG] [Thread-124632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:35:56.460 [INFO] [Thread-124632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:35:56.467 [DEBUG] [Thread-124632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:35:56.467 [DEBUG] [Thread-124632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:35:56.467 [DEBUG] [Thread-124632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] client lang: <none>
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] server lang: <none>
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] kex follows: False
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] Compression: none
2025-09-28T12:35:56.468 [DEBUG] [Thread-124632] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:35:56.526 [DEBUG] [Thread-124632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:35:56.526 [DEBUG] [Thread-124632] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:35:56.527 [DEBUG] [Thread-124632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:35:56.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:35:56.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:35:56.586 [DEBUG] [Thread-124632] [transport.py] [_log()] userauth is OK
2025-09-28T12:35:56.586 [DEBUG] [Thread-124632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:35:56.586 [DEBUG] [Thread-124632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:35:56.586 [DEBUG] [Thread-124632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:35:56.587 [DEBUG] [Thread-124632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:35:56.606 [INFO] [Thread-124632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:35: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-28T12:35:56.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:35:57.568 [DEBUG] [Thread-124632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:35:57.568 [DEBUG] [Thread-124632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:35:57.616 [DEBUG] [Thread-124632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:35:57.616 [DEBUG] [Thread-124632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:35:57.625 [DEBUG] [Thread-124632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:35:57.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:35: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')
2025-09-28T12:35:57.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') -> 00000000
2025-09-28T12:35:57.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:35:57.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:35:57.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:35:57.659 [DEBUG] [Thread-124632] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:07.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:36:07.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:36:07.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-28T12:36:08.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 35, 51), 20.05, 25.8, 0.0, 23.15, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:36:08.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:35:51
2025-09-28T12:36:08.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:36:08.543 [DEBUG] [Thread-124634] [transport.py] [_log()] starting thread (client mode): 0x2e3f87c0
2025-09-28T12:36:08.543 [DEBUG] [Thread-124634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:08.560 [DEBUG] [Thread-124634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:36:08.560 [INFO] [Thread-124634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:08.562 [DEBUG] [Thread-124634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:08.563 [DEBUG] [Thread-124634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:08.563 [DEBUG] [Thread-124634] [transport.py] [_log()] Compression: none
2025-09-28T12:36:08.563 [DEBUG] [Thread-124634] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:08.573 [DEBUG] [Thread-124634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:08.573 [DEBUG] [Thread-124634] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:08.573 [DEBUG] [Thread-124634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:36:08.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:36:08.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:08.574 [DEBUG] [Thread-124634] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:08.574 [DEBUG] [Thread-124634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:08.574 [DEBUG] [Thread-124634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:08.574 [DEBUG] [Thread-124634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:36:08.574 [DEBUG] [Thread-124634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:08.600 [INFO] [Thread-124634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:08.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:09.255 [DEBUG] [Thread-124634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:09.255 [DEBUG] [Thread-124634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:09.255 [DEBUG] [Thread-124634] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:36:09.296 [DEBUG] [Thread-124634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:09.296 [DEBUG] [Thread-124634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:09.298 [DEBUG] [Thread-124634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:09.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:09.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:36:09.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:36:09.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:36:09.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:09.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:36:09.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.441404 -999.00  +19.00  11.28     30   +1.30 1 1 1 1 1   888    0 20.02 158.39 ----- 9.6 11.3 219.2 15.8 25.7 -26.7 24.5 -25.7 24.6 -26.2 25.8 -26.5
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.441404
2025-09-28T12:36:09.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:36:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:36:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:36:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:36:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:36:09.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:35:51', tmtdew=20.05, humidity=25.8, cloud=0.0, wind=23.15, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:35:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:36:09.318 [DEBUG] [Thread-124634] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:09.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-28T12:36:09.403 [DEBUG] [Thread-124637] [transport.py] [_log()] starting thread (client mode): 0x2b9ddbd0
2025-09-28T12:36:09.403 [DEBUG] [Thread-124637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:09.418 [DEBUG] [Thread-124637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:36:09.418 [INFO] [Thread-124637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] Compression: none
2025-09-28T12:36:09.426 [DEBUG] [Thread-124637] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:09.481 [DEBUG] [Thread-124637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:09.481 [DEBUG] [Thread-124637] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:09.481 [DEBUG] [Thread-124637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:36:09.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:36:09.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:09.517 [DEBUG] [Thread-124639 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:09.538 [DEBUG] [Thread-124637] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:09.538 [DEBUG] [Thread-124637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:09.538 [DEBUG] [Thread-124637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:09.538 [DEBUG] [Thread-124637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:36:09.538 [DEBUG] [Thread-124637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:09.554 [INFO] [Thread-124637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:09.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-28T12:36:09.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:10.416 [DEBUG] [Thread-124640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:10.534 [DEBUG] [Thread-124637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:10.535 [DEBUG] [Thread-124637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:10.583 [DEBUG] [Thread-124637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:10.583 [DEBUG] [Thread-124637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:10.591 [DEBUG] [Thread-124637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:10.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:10.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-28T12:36:10.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-28T12:36:10.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:10.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:10.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:10.624 [DEBUG] [Thread-124637] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:20.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:36:20.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:36:20.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-28T12:36:21.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 35, 51), 20.05, 25.8, 0.0, 23.15, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:36:21.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:35:51
2025-09-28T12:36:21.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:36:21.482 [DEBUG] [Thread-124641] [transport.py] [_log()] starting thread (client mode): 0x2b96e9e0
2025-09-28T12:36:21.482 [DEBUG] [Thread-124641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:21.501 [DEBUG] [Thread-124641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:36:21.501 [INFO] [Thread-124641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:36:21.504 [DEBUG] [Thread-124641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:21.504 [DEBUG] [Thread-124641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:21.505 [DEBUG] [Thread-124641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:21.506 [DEBUG] [Thread-124641] [transport.py] [_log()] Compression: none
2025-09-28T12:36:21.506 [DEBUG] [Thread-124641] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:21.522 [DEBUG] [Thread-124641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:21.522 [DEBUG] [Thread-124641] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:21.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:36:21.523 [DEBUG] [Thread-124641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:36:21.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:21.525 [DEBUG] [Thread-124641] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:21.525 [DEBUG] [Thread-124641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:21.525 [DEBUG] [Thread-124641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:21.526 [DEBUG] [Thread-124641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:36:21.526 [DEBUG] [Thread-124641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:21.550 [INFO] [Thread-124641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:21.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:22.187 [DEBUG] [Thread-124641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:22.187 [DEBUG] [Thread-124641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:22.187 [DEBUG] [Thread-124641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:36:22.227 [DEBUG] [Thread-124641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:22.228 [DEBUG] [Thread-124641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:22.230 [DEBUG] [Thread-124641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:22.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:22.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:36:22.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:36:22.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:36:22.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:22.253 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:36:22.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:22.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.441404 -999.00  +19.00  11.28     30   +1.30 1 1 1 1 1   888    0 20.02 158.39 ----- 9.6 11.3 219.2 15.8 25.7 -26.7 24.5 -25.7 24.6 -26.2 25.8 -26.5
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.441404
2025-09-28T12:36:22.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:36:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:36:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:36:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:36:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:36:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:35:51', tmtdew=20.05, humidity=25.8, cloud=0.0, wind=23.15, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:35:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:36:22.255 [DEBUG] [Thread-124641] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:22.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-28T12:36:22.351 [DEBUG] [Thread-124644] [transport.py] [_log()] starting thread (client mode): 0x2b98a590
2025-09-28T12:36:22.351 [DEBUG] [Thread-124644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:22.366 [DEBUG] [Thread-124644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:36:22.366 [INFO] [Thread-124644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:36:22.373 [DEBUG] [Thread-124644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:22.374 [DEBUG] [Thread-124644] [transport.py] [_log()] Compression: none
2025-09-28T12:36:22.375 [DEBUG] [Thread-124644] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:22.430 [DEBUG] [Thread-124644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:22.431 [DEBUG] [Thread-124644] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:22.431 [DEBUG] [Thread-124644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:36:22.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:36:22.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:22.487 [DEBUG] [Thread-124644] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:22.487 [DEBUG] [Thread-124644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:22.487 [DEBUG] [Thread-124644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:22.487 [DEBUG] [Thread-124644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:36:22.487 [DEBUG] [Thread-124644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:22.506 [INFO] [Thread-124644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:22.506 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:36:22.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:23.451 [DEBUG] [Thread-124644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:23.451 [DEBUG] [Thread-124644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:23.499 [DEBUG] [Thread-124644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:23.499 [DEBUG] [Thread-124644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:23.507 [DEBUG] [Thread-124644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:23.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:23.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-28T12:36:23.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-28T12:36:23.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:23.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:23.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:23.544 [DEBUG] [Thread-124644] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:25.456 [DEBUG] [Thread-124646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:33.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:36:33.546 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:36:33.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-28T12:36:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 36, 23), 20.15, 25.6, 0.0, 17.93, 18.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:36:34.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:36:23
2025-09-28T12:36:34.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:36:34.405 [DEBUG] [Thread-124647] [transport.py] [_log()] starting thread (client mode): 0x2b9c08e0
2025-09-28T12:36:34.405 [DEBUG] [Thread-124647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:34.427 [DEBUG] [Thread-124647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:36:34.427 [INFO] [Thread-124647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:34.430 [DEBUG] [Thread-124647] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] Compression: none
2025-09-28T12:36:34.431 [DEBUG] [Thread-124647] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:34.447 [DEBUG] [Thread-124647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:34.448 [DEBUG] [Thread-124647] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:34.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:36:34.449 [DEBUG] [Thread-124647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:36:34.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:34.451 [DEBUG] [Thread-124647] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:34.452 [DEBUG] [Thread-124647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:34.452 [DEBUG] [Thread-124647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:34.452 [DEBUG] [Thread-124647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:36:34.452 [DEBUG] [Thread-124647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:34.472 [INFO] [Thread-124647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:34.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:35.119 [DEBUG] [Thread-124647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:35.119 [DEBUG] [Thread-124647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:35.119 [DEBUG] [Thread-124647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:36:35.160 [DEBUG] [Thread-124647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:35.160 [DEBUG] [Thread-124647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:35.163 [DEBUG] [Thread-124647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:35.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:35.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:36:35.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:36:35.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:36:35.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:35.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:36:35.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:35.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:36:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.441404 -999.00  +19.00  11.28     30   +1.30 1 1 1 1 1   888    0 20.02 158.39 ----- 9.6 11.3 219.2 15.8 25.7 -26.7 24.5 -25.7 24.6 -26.2 25.8 -26.5
2025-09-28T12:36:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:36:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:36:35.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.441404
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:36:35.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:36:23', tmtdew=20.15, humidity=25.6, cloud=0.0, wind=17.93, temperature=18.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:35:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:36:35.187 [DEBUG] [Thread-124647] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36: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-28T12:36:35.286 [DEBUG] [Thread-124650] [transport.py] [_log()] starting thread (client mode): 0x2e3f85e0
2025-09-28T12:36:35.287 [DEBUG] [Thread-124650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:35.301 [DEBUG] [Thread-124650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:36:35.301 [INFO] [Thread-124650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:35.309 [DEBUG] [Thread-124650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] Compression: none
2025-09-28T12:36:35.310 [DEBUG] [Thread-124650] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:35.367 [DEBUG] [Thread-124650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:35.367 [DEBUG] [Thread-124650] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:35.368 [DEBUG] [Thread-124650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:36:35.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:36:35.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:35.427 [DEBUG] [Thread-124650] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:35.427 [DEBUG] [Thread-124650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:35.427 [DEBUG] [Thread-124650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:35.427 [DEBUG] [Thread-124650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:36:35.428 [DEBUG] [Thread-124650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:35.446 [INFO] [Thread-124650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:35.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-28T12:36:35.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:36.461 [DEBUG] [Thread-124650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:36.461 [DEBUG] [Thread-124650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:36.510 [DEBUG] [Thread-124650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:36.510 [DEBUG] [Thread-124650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:36.519 [DEBUG] [Thread-124650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:36.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:36.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-28T12:36: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') -> 00000000
2025-09-28T12:36:36.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:36.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:36.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:36.553 [DEBUG] [Thread-124650] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:40.484 [DEBUG] [Thread-124652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:46.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:36:46.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:36:46.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:36:47.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 36, 23), 20.15, 25.6, 0.0, 17.93, 18.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:36:47.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:36:23
2025-09-28T12:36:47.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:36:47.410 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:47.411 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:47.441 [DEBUG] [Thread-124653] [transport.py] [_log()] starting thread (client mode): 0x2b987400
2025-09-28T12:36:47.441 [DEBUG] [Thread-124653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:47.461 [DEBUG] [Thread-124653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:36:47.461 [INFO] [Thread-124653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:36:47.464 [DEBUG] [Thread-124653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:47.464 [DEBUG] [Thread-124653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:36:47.464 [DEBUG] [Thread-124653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] Compression: none
2025-09-28T12:36:47.465 [DEBUG] [Thread-124653] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:47.482 [DEBUG] [Thread-124653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:47.483 [DEBUG] [Thread-124653] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:47.483 [DEBUG] [Thread-124653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:36:47.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:36:47.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:47.484 [DEBUG] [Thread-124653] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:47.484 [DEBUG] [Thread-124653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:47.484 [DEBUG] [Thread-124653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:47.484 [DEBUG] [Thread-124653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:36:47.484 [DEBUG] [Thread-124653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:47.497 [INFO] [Thread-124653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:47.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:48.109 [DEBUG] [Thread-124653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:48.109 [DEBUG] [Thread-124653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:48.109 [DEBUG] [Thread-124653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:36:48.150 [DEBUG] [Thread-124653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:48.150 [DEBUG] [Thread-124653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:48.151 [DEBUG] [Thread-124653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:48.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:48.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:36:48.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:36:48.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:36:48.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:48.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:36:48.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:48.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.442098 -999.00  +19.20   4.87     30   +1.20 1 1 1 1 1   888    0 21.09 183.83 ----- 3.1 4.9 227.9 17.4 25.8 -27.4 24.6 -27.8 24.6 -24.9 25.9 -27.1
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.442098
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:36:48.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:36:23', tmtdew=20.15, humidity=25.6, cloud=0.0, wind=17.93, temperature=18.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:36:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:36:48.170 [DEBUG] [Thread-124653] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:48.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-28T12:36:48.254 [DEBUG] [Thread-124656] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e40
2025-09-28T12:36:48.254 [DEBUG] [Thread-124656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:36:48.269 [DEBUG] [Thread-124656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:36:48.269 [INFO] [Thread-124656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:36:48.276 [DEBUG] [Thread-124656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] client lang: <none>
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] server lang: <none>
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] kex follows: False
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] Compression: none
2025-09-28T12:36:48.277 [DEBUG] [Thread-124656] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:36:48.334 [DEBUG] [Thread-124656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:36:48.334 [DEBUG] [Thread-124656] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:36:48.335 [DEBUG] [Thread-124656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:36:48.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:36:48.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:36:48.395 [DEBUG] [Thread-124656] [transport.py] [_log()] userauth is OK
2025-09-28T12:36:48.395 [DEBUG] [Thread-124656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:36:48.395 [DEBUG] [Thread-124656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:36:48.395 [DEBUG] [Thread-124656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:36:48.395 [DEBUG] [Thread-124656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:36:48.409 [INFO] [Thread-124656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:36:48.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-28T12:36:48.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:36:49.416 [DEBUG] [Thread-124656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:36:49.416 [DEBUG] [Thread-124656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:36:49.465 [DEBUG] [Thread-124656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:36:49.465 [DEBUG] [Thread-124656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:36:49.473 [DEBUG] [Thread-124656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:36:49.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:36:49.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-28T12:36:49.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-28T12:36:49.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:36:49.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:36:49.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:36:49.505 [DEBUG] [Thread-124656] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:36:55.516 [DEBUG] [Thread-124658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:36:59.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:36:59.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:36: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-28T12:37:00.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 36, 54), 20.16, 25.44, 0.0, 15.51, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:37:00.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:36:54
2025-09-28T12:37:00.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:37:00.350 [DEBUG] [Thread-124659] [transport.py] [_log()] starting thread (client mode): 0x2b989d80
2025-09-28T12:37:00.350 [DEBUG] [Thread-124659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:37:00.370 [DEBUG] [Thread-124659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:37:00.370 [INFO] [Thread-124659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] client lang: <none>
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] server lang: <none>
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] kex follows: False
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] Compression: none
2025-09-28T12:37:00.373 [DEBUG] [Thread-124659] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:37:00.389 [DEBUG] [Thread-124659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:37:00.390 [DEBUG] [Thread-124659] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:37:00.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:37:00.391 [DEBUG] [Thread-124659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:37:00.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:37:00.393 [DEBUG] [Thread-124659] [transport.py] [_log()] userauth is OK
2025-09-28T12:37:00.393 [DEBUG] [Thread-124659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:37:00.393 [DEBUG] [Thread-124659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:37:00.393 [DEBUG] [Thread-124659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:37:00.393 [DEBUG] [Thread-124659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:37:00.419 [INFO] [Thread-124659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:37:00.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:37:01.047 [DEBUG] [Thread-124659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:37:01.047 [DEBUG] [Thread-124659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:37:01.047 [DEBUG] [Thread-124659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:37:01.088 [DEBUG] [Thread-124659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:37:01.088 [DEBUG] [Thread-124659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:37:01.091 [DEBUG] [Thread-124659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:37:01.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:37:01.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:37:01.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:37:01.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:37:01.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:37:01.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:37:01.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.442098 -999.00  +19.20   4.87     30   +1.20 1 1 1 1 1   888    0 21.09 183.83 ----- 3.1 4.9 227.9 17.4 25.8 -27.4 24.6 -27.8 24.6 -24.9 25.9 -27.1
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:37:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.442098
2025-09-28T12:37:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:37:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:37:01.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:37:01.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:37:01.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:37:01.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:36:54', tmtdew=20.16, humidity=25.44, cloud=0.0, wind=15.51, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:36:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:37:01.118 [DEBUG] [Thread-124659] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:37:01.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-28T12:37:01.222 [DEBUG] [Thread-124662] [transport.py] [_log()] starting thread (client mode): 0x2e3fa5c0
2025-09-28T12:37:01.222 [DEBUG] [Thread-124662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:37:01.236 [DEBUG] [Thread-124662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:37:01.236 [INFO] [Thread-124662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] client lang: <none>
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] server lang: <none>
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] kex follows: False
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:37:01.244 [DEBUG] [Thread-124662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:37:01.245 [DEBUG] [Thread-124662] [transport.py] [_log()] Compression: none
2025-09-28T12:37:01.245 [DEBUG] [Thread-124662] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:37:01.301 [DEBUG] [Thread-124662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:37:01.302 [DEBUG] [Thread-124662] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:37:01.303 [DEBUG] [Thread-124662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:37:01.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:37:01.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:37:01.360 [DEBUG] [Thread-124662] [transport.py] [_log()] userauth is OK
2025-09-28T12:37:01.360 [DEBUG] [Thread-124662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:37:01.360 [DEBUG] [Thread-124662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:37:01.360 [DEBUG] [Thread-124662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:37:01.361 [DEBUG] [Thread-124662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:37:01.379 [INFO] [Thread-124662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:37:01.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:37:01.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:37:02.344 [DEBUG] [Thread-124662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:37:02.344 [DEBUG] [Thread-124662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:37:02.392 [DEBUG] [Thread-124662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:37:02.392 [DEBUG] [Thread-124662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:37:02.401 [DEBUG] [Thread-124662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:37:02.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:37:02.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-28T12:37:02.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-28T12:37:02.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:37:02.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:37:02.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:37:02.437 [DEBUG] [Thread-124662] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:37:09.570 [DEBUG] [Thread-124664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:10.549 [DEBUG] [Thread-124665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:12.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:37:12.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:37:12.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-28T12:37:13.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 36, 54), 20.16, 25.44, 0.0, 15.51, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:37:13.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:36:54
2025-09-28T12:37:13.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:37:13.287 [DEBUG] [Thread-124666] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-28T12:37:13.287 [DEBUG] [Thread-124666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:37:13.304 [DEBUG] [Thread-124666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:37:13.304 [INFO] [Thread-124666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:37:13.305 [DEBUG] [Thread-124666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] client lang: <none>
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] server lang: <none>
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] kex follows: False
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] Compression: none
2025-09-28T12:37:13.306 [DEBUG] [Thread-124666] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:37:13.316 [DEBUG] [Thread-124666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:37:13.317 [DEBUG] [Thread-124666] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:37:13.317 [DEBUG] [Thread-124666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:37:13.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:37:13.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:37:13.318 [DEBUG] [Thread-124666] [transport.py] [_log()] userauth is OK
2025-09-28T12:37:13.318 [DEBUG] [Thread-124666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:37:13.318 [DEBUG] [Thread-124666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:37:13.318 [DEBUG] [Thread-124666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:37:13.318 [DEBUG] [Thread-124666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:37:13.341 [INFO] [Thread-124666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:37:13.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:37:13.959 [DEBUG] [Thread-124666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:37:13.960 [DEBUG] [Thread-124666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:37:13.960 [DEBUG] [Thread-124666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:37:14.000 [DEBUG] [Thread-124666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:37:14.000 [DEBUG] [Thread-124666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:37:14.003 [DEBUG] [Thread-124666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:37:14.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:37:14.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:37:14.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:37:14.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:37:14.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:37:14.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:37:14.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.442446 -999.00  +19.20  11.96     29   +1.00 1 1 1 1 1   888    0 21.18 184.45 ----- 13.1 12.0 189.2 17.1 25.9 -27.4 24.4 -29.7 24.7 -25.2 25.9 -27.3
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:37:14.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.442446
2025-09-28T12:37:14.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:37:14.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:37:14.025 [DEBUG] [Thread-124666] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:37:14.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:37:14.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:37:14.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:37:14.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:36:54', tmtdew=20.16, humidity=25.44, cloud=0.0, wind=15.51, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:37:07.334', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:37:14.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-28T12:37:25.593 [DEBUG] [Thread-124669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:40.624 [DEBUG] [Thread-124670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:47.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:47.553 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:37:55.654 [DEBUG] [Thread-124671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:09.623 [DEBUG] [Thread-124672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:10.684 [DEBUG] [Thread-124673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:25.713 [DEBUG] [Thread-124674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:40.743 [DEBUG] [Thread-124675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:47.695 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:47.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:38:55.775 [DEBUG] [Thread-124676 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:09.681 [DEBUG] [Thread-124677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:10.806 [DEBUG] [Thread-124678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:25.841 [DEBUG] [Thread-124679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:29.467 [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-28T12:39:39.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:39:39.477 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:39:39.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-28T12:39:40.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 39, 34), 20.16, 25.67, 0.0, 13.85, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:39:40.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:39:34
2025-09-28T12:39:40.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:39:40.360 [DEBUG] [Thread-124680] [transport.py] [_log()] starting thread (client mode): 0x2e3f87c0
2025-09-28T12:39:40.360 [DEBUG] [Thread-124680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:39:40.381 [DEBUG] [Thread-124680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:39:40.382 [INFO] [Thread-124680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] client lang: <none>
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] server lang: <none>
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] kex follows: False
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:39:40.385 [DEBUG] [Thread-124680] [transport.py] [_log()] Compression: none
2025-09-28T12:39:40.386 [DEBUG] [Thread-124680] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:39:40.400 [DEBUG] [Thread-124680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:39:40.401 [DEBUG] [Thread-124680] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:39:40.401 [DEBUG] [Thread-124680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:39:40.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:39:40.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:39:40.403 [DEBUG] [Thread-124680] [transport.py] [_log()] userauth is OK
2025-09-28T12:39:40.403 [DEBUG] [Thread-124680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:39:40.403 [DEBUG] [Thread-124680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:39:40.403 [DEBUG] [Thread-124680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:39:40.403 [DEBUG] [Thread-124680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:39:40.423 [INFO] [Thread-124680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:39:40.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:39:40.872 [DEBUG] [Thread-124682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:41.080 [DEBUG] [Thread-124680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:39:41.080 [DEBUG] [Thread-124680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:39:41.081 [DEBUG] [Thread-124680] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:39:41.121 [DEBUG] [Thread-124680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:39:41.121 [DEBUG] [Thread-124680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:39:41.124 [DEBUG] [Thread-124680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:39:41.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:39:41.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:39:41.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:39:41.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:39:41.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:39:41.147 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:39:41.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:39:41.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:39:41.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:39:41.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.443834 -999.00  +19.20  13.51     30   +1.60 1 1 1 1 1   888    0 22.98 232.51 ----- 7.0 13.5 213.5 17.6 26.1 -26.0 24.6 -25.4 24.9 -25.4 26.4 -26.1
2025-09-28T12:39:41.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:39:41.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:39:41.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.443834
2025-09-28T12:39:41.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:39:41.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:39:41.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:39:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:39:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:39:41.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:39:34', tmtdew=20.16, humidity=25.67, cloud=0.0, wind=13.85, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:39:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:39:41.150 [DEBUG] [Thread-124680] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:39:41.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-28T12:39:41.246 [DEBUG] [Thread-124684] [transport.py] [_log()] starting thread (client mode): 0x2e3c2fe0
2025-09-28T12:39:41.246 [DEBUG] [Thread-124684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:39:41.261 [DEBUG] [Thread-124684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:39:41.261 [INFO] [Thread-124684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:39:41.268 [DEBUG] [Thread-124684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] client lang: <none>
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] server lang: <none>
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] kex follows: False
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] Compression: none
2025-09-28T12:39:41.269 [DEBUG] [Thread-124684] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:39:41.327 [DEBUG] [Thread-124684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:39:41.328 [DEBUG] [Thread-124684] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:39:41.328 [DEBUG] [Thread-124684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:39:41.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:39:41.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:39:41.386 [DEBUG] [Thread-124684] [transport.py] [_log()] userauth is OK
2025-09-28T12:39:41.387 [DEBUG] [Thread-124684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:39:41.387 [DEBUG] [Thread-124684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:39:41.387 [DEBUG] [Thread-124684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:39:41.387 [DEBUG] [Thread-124684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:39:41.400 [INFO] [Thread-124684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:39:41.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-28T12:39:41.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:39:42.365 [DEBUG] [Thread-124684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:39:42.365 [DEBUG] [Thread-124684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:39:42.413 [DEBUG] [Thread-124684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:39:42.413 [DEBUG] [Thread-124684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:39:42.422 [DEBUG] [Thread-124684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:39:42.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:39:42.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-28T12:39:42.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') -> 00000000
2025-09-28T12:39:42.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:39:42.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:39:42.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:39:42.457 [DEBUG] [Thread-124684] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:39:47.838 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:47.839 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:39:52.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:39:52.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:39:52.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:39:53.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 39, 34), 20.16, 25.67, 0.0, 13.85, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:39:53.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:39:34
2025-09-28T12:39:53.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:39:53.371 [DEBUG] [Thread-124686] [transport.py] [_log()] starting thread (client mode): 0x2b98b730
2025-09-28T12:39:53.371 [DEBUG] [Thread-124686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:39:53.393 [DEBUG] [Thread-124686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:39:53.393 [INFO] [Thread-124686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] client lang: <none>
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] server lang: <none>
2025-09-28T12:39:53.396 [DEBUG] [Thread-124686] [transport.py] [_log()] kex follows: False
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] Compression: none
2025-09-28T12:39:53.397 [DEBUG] [Thread-124686] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:39:53.412 [DEBUG] [Thread-124686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:39:53.412 [DEBUG] [Thread-124686] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:39:53.412 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:39:53.413 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] userauth is OK
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:39:53.413 [DEBUG] [Thread-124686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:39:53.423 [INFO] [Thread-124686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:39:53.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:39:54.018 [DEBUG] [Thread-124686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:39:54.018 [DEBUG] [Thread-124686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:39:54.019 [DEBUG] [Thread-124686] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:39:54.059 [DEBUG] [Thread-124686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:39:54.059 [DEBUG] [Thread-124686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:39:54.062 [DEBUG] [Thread-124686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:39:54.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:39:54.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:39:54.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:39:54.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:39:54.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:39:54.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:39:54.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:39:54.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:39:54.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:39:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.443834 -999.00  +19.20  13.51     30   +1.60 1 1 1 1 1   888    0 22.98 232.51 ----- 7.0 13.5 213.5 17.6 26.1 -26.0 24.6 -25.4 24.9 -25.4 26.4 -26.1
2025-09-28T12:39:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:39:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:39:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.443834
2025-09-28T12:39:54.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:39:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:39:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:39:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:39:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:39:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:39:34', tmtdew=20.16, humidity=25.67, cloud=0.0, wind=13.85, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:39:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:39:54.088 [DEBUG] [Thread-124686] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:39:54.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-28T12:39:54.180 [DEBUG] [Thread-124689] [transport.py] [_log()] starting thread (client mode): 0x2b9cbcd0
2025-09-28T12:39:54.180 [DEBUG] [Thread-124689] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:39:54.195 [DEBUG] [Thread-124689] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:39:54.195 [INFO] [Thread-124689] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:39:54.203 [DEBUG] [Thread-124689] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] client lang: <none>
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] server lang: <none>
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] kex follows: False
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] Compression: none
2025-09-28T12:39:54.204 [DEBUG] [Thread-124689] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:39:54.260 [DEBUG] [Thread-124689] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:39:54.260 [DEBUG] [Thread-124689] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:39:54.261 [DEBUG] [Thread-124689] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:39:54.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:39:54.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:39:54.316 [DEBUG] [Thread-124689] [transport.py] [_log()] userauth is OK
2025-09-28T12:39:54.316 [DEBUG] [Thread-124689] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:39:54.316 [DEBUG] [Thread-124689] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:39:54.316 [DEBUG] [Thread-124689] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:39:54.316 [DEBUG] [Thread-124689] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:39:54.335 [INFO] [Thread-124689] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:39:54.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-28T12:39:54.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:39:55.332 [DEBUG] [Thread-124689] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:39:55.332 [DEBUG] [Thread-124689] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:39:55.380 [DEBUG] [Thread-124689] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:39:55.381 [DEBUG] [Thread-124689] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:39:55.389 [DEBUG] [Thread-124689] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:39:55.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:39:55.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-28T12:39:55.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-28T12:39:55.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:39:55.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:39:55.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:39:55.425 [DEBUG] [Thread-124689] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:39:55.901 [DEBUG] [Thread-124691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:05.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:40:05.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:40:05.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-28T12:40:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 39, 34), 20.16, 25.67, 0.0, 13.85, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:40:06.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:39:34
2025-09-28T12:40:06.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:40:06.292 [DEBUG] [Thread-124692] [transport.py] [_log()] starting thread (client mode): 0x2b9c29b0
2025-09-28T12:40:06.292 [DEBUG] [Thread-124692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:06.312 [DEBUG] [Thread-124692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:40:06.312 [INFO] [Thread-124692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:06.315 [DEBUG] [Thread-124692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:06.316 [DEBUG] [Thread-124692] [transport.py] [_log()] Compression: none
2025-09-28T12:40:06.316 [DEBUG] [Thread-124692] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:06.333 [DEBUG] [Thread-124692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:06.333 [DEBUG] [Thread-124692] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:06.334 [DEBUG] [Thread-124692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:40:06.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:40:06.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:06.336 [DEBUG] [Thread-124692] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:06.336 [DEBUG] [Thread-124692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:06.336 [DEBUG] [Thread-124692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:06.336 [DEBUG] [Thread-124692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:40:06.337 [DEBUG] [Thread-124692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:06.360 [INFO] [Thread-124692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:06.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:09.734 [DEBUG] [Thread-124694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:10.617 [DEBUG] [Thread-124692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:10.618 [DEBUG] [Thread-124692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:10.618 [DEBUG] [Thread-124692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:40:10.658 [DEBUG] [Thread-124692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:10.658 [DEBUG] [Thread-124692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:10.661 [DEBUG] [Thread-124692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:10.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:10.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:40:10.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:40:10.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:40:10.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:10.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:40:10.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:10.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444182 -999.00  +19.00  18.27     30   +1.30 1 1 1 1 1   888    0 22.45 225.01 ----- 23.6 18.3 279.4 28.3 25.9 -26.7 24.6 -26.4 24.6 -31.4 26.2 -26.8
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444182
2025-09-28T12:40:10.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:40:10.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:40:10.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:40:10.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:40:10.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:40:10.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:39:34', tmtdew=20.16, humidity=25.67, cloud=0.0, wind=13.85, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:39:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:40:10.692 [DEBUG] [Thread-124692] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:10.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-28T12:40:10.791 [DEBUG] [Thread-124696] [transport.py] [_log()] starting thread (client mode): 0x2b9f32b0
2025-09-28T12:40:10.791 [DEBUG] [Thread-124696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:10.808 [DEBUG] [Thread-124696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:40:10.808 [INFO] [Thread-124696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:40:10.816 [DEBUG] [Thread-124696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:10.816 [DEBUG] [Thread-124696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] Compression: none
2025-09-28T12:40:10.817 [DEBUG] [Thread-124696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:10.877 [DEBUG] [Thread-124696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:10.877 [DEBUG] [Thread-124696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:10.878 [DEBUG] [Thread-124696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:40:10.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:40:10.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:10.937 [DEBUG] [Thread-124696] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:10.937 [DEBUG] [Thread-124696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:10.937 [DEBUG] [Thread-124696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:10.937 [DEBUG] [Thread-124696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:40:10.937 [DEBUG] [Thread-124696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:10.946 [DEBUG] [Thread-124698 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:10.958 [INFO] [Thread-124696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:10.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-28T12:40:10.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:11.933 [DEBUG] [Thread-124696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:11.933 [DEBUG] [Thread-124696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:11.981 [DEBUG] [Thread-124696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:11.981 [DEBUG] [Thread-124696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:11.991 [DEBUG] [Thread-124696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:12.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:12.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-28T12:40:12.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-28T12:40:12.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:12.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:12.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:12.028 [DEBUG] [Thread-124696] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:22.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:40:22.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:40:22.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-28T12:40:22.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 40, 6), 20.01, 25.95, 0.0, 13.99, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:40:22.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:40:06
2025-09-28T12:40:22.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:40:22.870 [DEBUG] [Thread-124699] [transport.py] [_log()] starting thread (client mode): 0x2b9c9d50
2025-09-28T12:40:22.870 [DEBUG] [Thread-124699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:22.890 [DEBUG] [Thread-124699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:40:22.890 [INFO] [Thread-124699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:40:22.893 [DEBUG] [Thread-124699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:22.893 [DEBUG] [Thread-124699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:22.894 [DEBUG] [Thread-124699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:22.895 [DEBUG] [Thread-124699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:22.895 [DEBUG] [Thread-124699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:22.895 [DEBUG] [Thread-124699] [transport.py] [_log()] Compression: none
2025-09-28T12:40:22.895 [DEBUG] [Thread-124699] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:22.912 [DEBUG] [Thread-124699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:22.913 [DEBUG] [Thread-124699] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:22.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:40:22.914 [DEBUG] [Thread-124699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:40:22.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:22.916 [DEBUG] [Thread-124699] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:22.916 [DEBUG] [Thread-124699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:22.917 [DEBUG] [Thread-124699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:22.917 [DEBUG] [Thread-124699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:40:22.917 [DEBUG] [Thread-124699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:22.949 [INFO] [Thread-124699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:22.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:23.560 [DEBUG] [Thread-124699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:23.560 [DEBUG] [Thread-124699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:23.561 [DEBUG] [Thread-124699] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:40:23.601 [DEBUG] [Thread-124699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:23.601 [DEBUG] [Thread-124699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:23.604 [DEBUG] [Thread-124699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:23.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:23.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:40:23.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:40:23.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:40:23.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:23.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:40:23.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:23.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444182 -999.00  +19.00  18.27     30   +1.30 1 1 1 1 1   888    0 22.45 225.01 ----- 23.6 18.3 279.4 28.3 25.9 -26.7 24.6 -26.4 24.6 -31.4 26.2 -26.8
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444182
2025-09-28T12:40:23.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:40:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:40:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:40:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:40:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:40:23.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:40:06', tmtdew=20.01, humidity=25.95, cloud=0.0, wind=13.99, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:39:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:40:23.628 [DEBUG] [Thread-124699] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:23.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-28T12:40:23.722 [DEBUG] [Thread-124702] [transport.py] [_log()] starting thread (client mode): 0x2b9ca050
2025-09-28T12:40:23.722 [DEBUG] [Thread-124702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:23.737 [DEBUG] [Thread-124702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:40:23.737 [INFO] [Thread-124702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:23.745 [DEBUG] [Thread-124702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:23.746 [DEBUG] [Thread-124702] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:23.746 [DEBUG] [Thread-124702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:23.746 [DEBUG] [Thread-124702] [transport.py] [_log()] Compression: none
2025-09-28T12:40:23.746 [DEBUG] [Thread-124702] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:23.804 [DEBUG] [Thread-124702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:23.805 [DEBUG] [Thread-124702] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:23.805 [DEBUG] [Thread-124702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:40:23.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:40:23.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:23.860 [DEBUG] [Thread-124702] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:23.861 [DEBUG] [Thread-124702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:23.861 [DEBUG] [Thread-124702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:23.861 [DEBUG] [Thread-124702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:40:23.861 [DEBUG] [Thread-124702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:23.878 [INFO] [Thread-124702] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:23.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-28T12:40:23.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:24.823 [DEBUG] [Thread-124702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:24.823 [DEBUG] [Thread-124702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:24.870 [DEBUG] [Thread-124702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:24.871 [DEBUG] [Thread-124702] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:24.880 [DEBUG] [Thread-124702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:24.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:24.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-28T12:40:24.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-28T12:40:24.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:24.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:24.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:24.914 [DEBUG] [Thread-124702] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:25.988 [DEBUG] [Thread-124704 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:34.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:40:34.917 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:40:34.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-28T12:40:35.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 40, 6), 20.01, 25.95, 0.0, 13.99, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:40:35.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:40:06
2025-09-28T12:40:35.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:40:35.770 [DEBUG] [Thread-124705] [transport.py] [_log()] starting thread (client mode): 0x2e3fac50
2025-09-28T12:40:35.770 [DEBUG] [Thread-124705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:35.790 [DEBUG] [Thread-124705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:40:35.791 [INFO] [Thread-124705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] Compression: none
2025-09-28T12:40:35.794 [DEBUG] [Thread-124705] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:35.811 [DEBUG] [Thread-124705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:35.812 [DEBUG] [Thread-124705] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:35.812 [DEBUG] [Thread-124705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:40:35.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:40:35.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:35.814 [DEBUG] [Thread-124705] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:35.815 [DEBUG] [Thread-124705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:35.815 [DEBUG] [Thread-124705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:35.815 [DEBUG] [Thread-124705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:40:35.815 [DEBUG] [Thread-124705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:35.853 [INFO] [Thread-124705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:35.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:36.503 [DEBUG] [Thread-124705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:36.503 [DEBUG] [Thread-124705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:36.503 [DEBUG] [Thread-124705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:40:36.545 [DEBUG] [Thread-124705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:36.545 [DEBUG] [Thread-124705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:36.548 [DEBUG] [Thread-124705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:36.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:36.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:40:36.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:40:36.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:40:36.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:36.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:40:36.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444182 -999.00  +19.00  18.27     30   +1.30 1 1 1 1 1   888    0 22.45 225.01 ----- 23.6 18.3 279.4 28.3 25.9 -26.7 24.6 -26.4 24.6 -31.4 26.2 -26.8
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444182
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:40:36.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:40:06', tmtdew=20.01, humidity=25.95, cloud=0.0, wind=13.99, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:39:37.325', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:40:36.567 [DEBUG] [Thread-124705] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:36.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:40:36.653 [DEBUG] [Thread-124708] [transport.py] [_log()] starting thread (client mode): 0x2e3fb1c0
2025-09-28T12:40:36.653 [DEBUG] [Thread-124708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:36.668 [DEBUG] [Thread-124708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:40:36.669 [INFO] [Thread-124708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:36.676 [DEBUG] [Thread-124708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] Compression: none
2025-09-28T12:40:36.677 [DEBUG] [Thread-124708] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:36.732 [DEBUG] [Thread-124708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:36.733 [DEBUG] [Thread-124708] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:36.733 [DEBUG] [Thread-124708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:40:36.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:40:36.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:36.790 [DEBUG] [Thread-124708] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:36.790 [DEBUG] [Thread-124708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:36.790 [DEBUG] [Thread-124708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:36.790 [DEBUG] [Thread-124708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:40:36.790 [DEBUG] [Thread-124708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:36.813 [INFO] [Thread-124708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:36.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:40:36.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:37.764 [DEBUG] [Thread-124708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:37.765 [DEBUG] [Thread-124708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:37.812 [DEBUG] [Thread-124708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:37.812 [DEBUG] [Thread-124708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:37.821 [DEBUG] [Thread-124708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:37.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:37.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-28T12:40:37.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-28T12:40:37.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:37.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:37.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:37.856 [DEBUG] [Thread-124708] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:41.020 [DEBUG] [Thread-124710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:40:47.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:40:47.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-28T12:40:47.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:47.982 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:40:48.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 40, 38), 20.23, 25.32, 0.0, 22.55, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:40:48.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:40:38
2025-09-28T12:40:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:40:48.704 [DEBUG] [Thread-124711] [transport.py] [_log()] starting thread (client mode): 0x2b9f3250
2025-09-28T12:40:48.704 [DEBUG] [Thread-124711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:48.724 [DEBUG] [Thread-124711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:40:48.724 [INFO] [Thread-124711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:48.728 [DEBUG] [Thread-124711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] Compression: none
2025-09-28T12:40:48.729 [DEBUG] [Thread-124711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:48.747 [DEBUG] [Thread-124711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:48.747 [DEBUG] [Thread-124711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:48.748 [DEBUG] [Thread-124711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:40:48.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:40:48.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:48.750 [DEBUG] [Thread-124711] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:48.751 [DEBUG] [Thread-124711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:48.751 [DEBUG] [Thread-124711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:48.751 [DEBUG] [Thread-124711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:40:48.751 [DEBUG] [Thread-124711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:48.787 [INFO] [Thread-124711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:48.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:49.428 [DEBUG] [Thread-124711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:49.429 [DEBUG] [Thread-124711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:49.429 [DEBUG] [Thread-124711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:40:49.469 [DEBUG] [Thread-124711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:49.469 [DEBUG] [Thread-124711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:49.472 [DEBUG] [Thread-124711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:49.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:49.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:40:49.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:40:49.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:40:49.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:49.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:40:49.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:49.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:40:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444876 -999.00  +18.30  14.87     31   +0.90 1 1 1 1 1   888    0 23.69 254.89 ----- 11.4 14.9 279.0 32.4 25.7 -26.8 24.6 -25.4 24.4 -24.7 25.7 -25.8
2025-09-28T12:40:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:40:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:40:49.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444876
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:40:49.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:40:38', tmtdew=20.23, humidity=25.32, cloud=0.0, wind=22.55, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:40:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:40:49.495 [DEBUG] [Thread-124711] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:49.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-28T12:40:49.601 [DEBUG] [Thread-124714] [transport.py] [_log()] starting thread (client mode): 0x2b988340
2025-09-28T12:40:49.601 [DEBUG] [Thread-124714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:40:49.616 [DEBUG] [Thread-124714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:40:49.617 [INFO] [Thread-124714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:40:49.624 [DEBUG] [Thread-124714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] client lang: <none>
2025-09-28T12:40:49.625 [DEBUG] [Thread-124714] [transport.py] [_log()] server lang: <none>
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] kex follows: False
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:40:49.626 [DEBUG] [Thread-124714] [transport.py] [_log()] Compression: none
2025-09-28T12:40:49.627 [DEBUG] [Thread-124714] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:40:49.686 [DEBUG] [Thread-124714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:40:49.687 [DEBUG] [Thread-124714] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:40:49.688 [DEBUG] [Thread-124714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:40:49.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:40:49.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:40:49.745 [DEBUG] [Thread-124714] [transport.py] [_log()] userauth is OK
2025-09-28T12:40:49.745 [DEBUG] [Thread-124714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:40:49.746 [DEBUG] [Thread-124714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:40:49.746 [DEBUG] [Thread-124714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:40:49.746 [DEBUG] [Thread-124714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:40:49.765 [INFO] [Thread-124714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:40:49.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-28T12:40:49.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:40:50.806 [DEBUG] [Thread-124714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:40:50.806 [DEBUG] [Thread-124714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:40:50.854 [DEBUG] [Thread-124714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:40:50.854 [DEBUG] [Thread-124714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:40:50.863 [DEBUG] [Thread-124714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:40:50.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:40:50.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')
2025-09-28T12:40:50.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-28T12:40:50.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:40:50.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:40:50.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:40:50.897 [DEBUG] [Thread-124714] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:40:56.052 [DEBUG] [Thread-124716 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:41:00.900 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:41:00.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:41:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 40, 38), 20.23, 25.32, 0.0, 22.55, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:41:01.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:40:38
2025-09-28T12:41:01.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:41:01.756 [DEBUG] [Thread-124717] [transport.py] [_log()] starting thread (client mode): 0x2e38e260
2025-09-28T12:41:01.756 [DEBUG] [Thread-124717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:01.777 [DEBUG] [Thread-124717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:41:01.777 [INFO] [Thread-124717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:01.780 [DEBUG] [Thread-124717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] Compression: none
2025-09-28T12:41:01.781 [DEBUG] [Thread-124717] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:01.796 [DEBUG] [Thread-124717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:01.796 [DEBUG] [Thread-124717] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:01.796 [DEBUG] [Thread-124717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:41:01.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:41:01.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:01.797 [DEBUG] [Thread-124717] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:01.797 [DEBUG] [Thread-124717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:01.797 [DEBUG] [Thread-124717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:01.797 [DEBUG] [Thread-124717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:41:01.797 [DEBUG] [Thread-124717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:01.807 [INFO] [Thread-124717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:01.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:02.460 [DEBUG] [Thread-124717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:02.460 [DEBUG] [Thread-124717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:02.461 [DEBUG] [Thread-124717] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:41:02.502 [DEBUG] [Thread-124717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:02.502 [DEBUG] [Thread-124717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:02.504 [DEBUG] [Thread-124717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:02.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:02.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:41:02.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:41:02.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:41:02.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:02.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:41:02.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:02.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:02.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444876 -999.00  +18.30  14.87     31   +0.90 1 1 1 1 1   888    0 23.69 254.89 ----- 11.4 14.9 279.0 32.4 25.7 -26.8 24.6 -25.4 24.4 -24.7 25.7 -25.8
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444876
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:41:02.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:40:38', tmtdew=20.23, humidity=25.32, cloud=0.0, wind=22.55, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:40:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:41:02.526 [DEBUG] [Thread-124717] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:02.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:41:02.612 [DEBUG] [Thread-124720] [transport.py] [_log()] starting thread (client mode): 0x2e3f8160
2025-09-28T12:41:02.612 [DEBUG] [Thread-124720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:02.626 [DEBUG] [Thread-124720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:41:02.626 [INFO] [Thread-124720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:41:02.633 [DEBUG] [Thread-124720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:02.633 [DEBUG] [Thread-124720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] Compression: none
2025-09-28T12:41:02.634 [DEBUG] [Thread-124720] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:02.692 [DEBUG] [Thread-124720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:02.692 [DEBUG] [Thread-124720] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:02.692 [DEBUG] [Thread-124720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:41:02.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:41:02.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:02.750 [DEBUG] [Thread-124720] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:02.750 [DEBUG] [Thread-124720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:02.750 [DEBUG] [Thread-124720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:02.750 [DEBUG] [Thread-124720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:41:02.750 [DEBUG] [Thread-124720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:02.764 [INFO] [Thread-124720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:02.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-28T12:41:02.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:03.857 [DEBUG] [Thread-124720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:03.857 [DEBUG] [Thread-124720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:03.905 [DEBUG] [Thread-124720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:03.905 [DEBUG] [Thread-124720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:03.914 [DEBUG] [Thread-124720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:03.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41: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-28T12:41:03.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-28T12:41:03.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:03.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:03.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:03.946 [DEBUG] [Thread-124720] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:09.790 [DEBUG] [Thread-124722 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:11.093 [DEBUG] [Thread-124723 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:13.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:41:13.949 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:41:13.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-28T12:41:14.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 41, 10), 20.32, 25.19, 0.0, 23.15, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:41:14.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:41:10
2025-09-28T12:41:14.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:41:14.788 [DEBUG] [Thread-124724] [transport.py] [_log()] starting thread (client mode): 0x2e3f9630
2025-09-28T12:41:14.789 [DEBUG] [Thread-124724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:14.808 [DEBUG] [Thread-124724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:41:14.808 [INFO] [Thread-124724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:41:14.810 [DEBUG] [Thread-124724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:14.810 [DEBUG] [Thread-124724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] Compression: none
2025-09-28T12:41:14.811 [DEBUG] [Thread-124724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:14.827 [DEBUG] [Thread-124724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:14.827 [DEBUG] [Thread-124724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:14.828 [DEBUG] [Thread-124724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:41:14.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:41:14.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:14.830 [DEBUG] [Thread-124724] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:14.831 [DEBUG] [Thread-124724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:14.831 [DEBUG] [Thread-124724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:14.831 [DEBUG] [Thread-124724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:41:14.831 [DEBUG] [Thread-124724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:14.866 [INFO] [Thread-124724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:14.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:15.531 [DEBUG] [Thread-124724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:15.531 [DEBUG] [Thread-124724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:15.532 [DEBUG] [Thread-124724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:41:15.572 [DEBUG] [Thread-124724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:15.573 [DEBUG] [Thread-124724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:15.576 [DEBUG] [Thread-124724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:15.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:15.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:41:15.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:41:15.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:41:15.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:15.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:41:15.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:15.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:15.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:41:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.444876 -999.00  +18.30  14.87     31   +0.90 1 1 1 1 1   888    0 23.69 254.89 ----- 11.4 14.9 279.0 32.4 25.7 -26.8 24.6 -25.4 24.4 -24.7 25.7 -25.8
2025-09-28T12:41:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:41:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:41:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.444876
2025-09-28T12:41:15.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:41:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:41:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:41:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:41:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:41:15.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:41:10', tmtdew=20.32, humidity=25.19, cloud=0.0, wind=23.15, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:40:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:41:15.603 [DEBUG] [Thread-124724] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:15.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-28T12:41:15.714 [DEBUG] [Thread-124727] [transport.py] [_log()] starting thread (client mode): 0x2e3f9c90
2025-09-28T12:41:15.714 [DEBUG] [Thread-124727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:15.729 [DEBUG] [Thread-124727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:41:15.730 [INFO] [Thread-124727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:15.737 [DEBUG] [Thread-124727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] Compression: none
2025-09-28T12:41:15.738 [DEBUG] [Thread-124727] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:15.793 [DEBUG] [Thread-124727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:15.794 [DEBUG] [Thread-124727] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:15.794 [DEBUG] [Thread-124727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:41:15.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:41:15.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:15.850 [DEBUG] [Thread-124727] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:15.850 [DEBUG] [Thread-124727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:15.850 [DEBUG] [Thread-124727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:15.850 [DEBUG] [Thread-124727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:41:15.850 [DEBUG] [Thread-124727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:15.870 [INFO] [Thread-124727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:15.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-28T12:41:15.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:16.826 [DEBUG] [Thread-124727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:16.826 [DEBUG] [Thread-124727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:16.874 [DEBUG] [Thread-124727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:16.874 [DEBUG] [Thread-124727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:16.883 [DEBUG] [Thread-124727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:16.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41: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')
2025-09-28T12:41:16.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-28T12:41:16.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:16.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:16.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:16.920 [DEBUG] [Thread-124727] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:26.122 [DEBUG] [Thread-124729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:26.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:41:26.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:41:26.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-28T12:41:27.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 41, 10), 20.32, 25.19, 0.0, 23.15, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:41:27.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:41:10
2025-09-28T12:41:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:41:27.756 [DEBUG] [Thread-124730] [transport.py] [_log()] starting thread (client mode): 0x2e38ec50
2025-09-28T12:41:27.756 [DEBUG] [Thread-124730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:27.775 [DEBUG] [Thread-124730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:41:27.775 [INFO] [Thread-124730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] Compression: none
2025-09-28T12:41:27.779 [DEBUG] [Thread-124730] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:27.794 [DEBUG] [Thread-124730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:27.795 [DEBUG] [Thread-124730] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:27.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:41:27.796 [DEBUG] [Thread-124730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:41:27.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:27.797 [DEBUG] [Thread-124730] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:27.798 [DEBUG] [Thread-124730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:27.798 [DEBUG] [Thread-124730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:27.798 [DEBUG] [Thread-124730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:41:27.798 [DEBUG] [Thread-124730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:27.818 [INFO] [Thread-124730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:27.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:28.430 [DEBUG] [Thread-124730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:28.430 [DEBUG] [Thread-124730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:28.431 [DEBUG] [Thread-124730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:41:28.471 [DEBUG] [Thread-124730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:28.471 [DEBUG] [Thread-124730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:28.474 [DEBUG] [Thread-124730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:28.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:28.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:41:28.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:41:28.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:41:28.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:28.496 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:41:28.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445223 -999.00  +18.80  13.59     31   +1.60 1 1 1 1 1   888    0 24.11 263.26 ----- 16.2 13.6 262.4 19.3 25.8 -26.1 24.8 -26.0 24.3 -25.1 25.8 -25.6
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:41:28.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445223
2025-09-28T12:41:28.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:41:28.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:41:28.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:41:28.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:41:28.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:41:28.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:41:10', tmtdew=20.32, humidity=25.19, cloud=0.0, wind=23.15, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:41:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:41:28.499 [DEBUG] [Thread-124730] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:28.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-28T12:41:28.596 [DEBUG] [Thread-124733] [transport.py] [_log()] starting thread (client mode): 0x2e38fa60
2025-09-28T12:41:28.597 [DEBUG] [Thread-124733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:28.611 [DEBUG] [Thread-124733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:41:28.612 [INFO] [Thread-124733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:41:28.619 [DEBUG] [Thread-124733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:28.619 [DEBUG] [Thread-124733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:41:28.619 [DEBUG] [Thread-124733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:28.619 [DEBUG] [Thread-124733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] Compression: none
2025-09-28T12:41:28.620 [DEBUG] [Thread-124733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:28.678 [DEBUG] [Thread-124733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:28.678 [DEBUG] [Thread-124733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:28.679 [DEBUG] [Thread-124733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:41:28.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:41:28.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:28.734 [DEBUG] [Thread-124733] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:28.734 [DEBUG] [Thread-124733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:28.734 [DEBUG] [Thread-124733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:28.734 [DEBUG] [Thread-124733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:41:28.734 [DEBUG] [Thread-124733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:28.753 [INFO] [Thread-124733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:28.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-28T12:41:28.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:29.691 [DEBUG] [Thread-124733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:29.691 [DEBUG] [Thread-124733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:29.738 [DEBUG] [Thread-124733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:29.738 [DEBUG] [Thread-124733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:29.747 [DEBUG] [Thread-124733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:29.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:29.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-28T12:41:29.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-28T12:41:29.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:29.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:29.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:29.782 [DEBUG] [Thread-124733] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:39.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:41:39.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:41:39.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-28T12:41:40.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 41, 10), 20.32, 25.19, 0.0, 23.15, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:41:40.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:41:10
2025-09-28T12:41:40.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:41:40.657 [DEBUG] [Thread-124735] [transport.py] [_log()] starting thread (client mode): 0x2e38f8e0
2025-09-28T12:41:40.657 [DEBUG] [Thread-124735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:40.676 [DEBUG] [Thread-124735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:41:40.676 [INFO] [Thread-124735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:41:40.679 [DEBUG] [Thread-124735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] Compression: none
2025-09-28T12:41:40.680 [DEBUG] [Thread-124735] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:40.695 [DEBUG] [Thread-124735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:40.696 [DEBUG] [Thread-124735] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:40.696 [DEBUG] [Thread-124735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:41:40.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:41:40.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:40.697 [DEBUG] [Thread-124735] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:40.697 [DEBUG] [Thread-124735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:40.697 [DEBUG] [Thread-124735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:40.697 [DEBUG] [Thread-124735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:41:40.697 [DEBUG] [Thread-124735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:40.706 [INFO] [Thread-124735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:40.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:41.164 [DEBUG] [Thread-124737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:41.310 [DEBUG] [Thread-124735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:41.310 [DEBUG] [Thread-124735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:41.310 [DEBUG] [Thread-124735] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:41:41.351 [DEBUG] [Thread-124735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:41.351 [DEBUG] [Thread-124735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:41.353 [DEBUG] [Thread-124735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:41.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:41.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:41:41.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:41:41.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:41:41.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:41.370 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:41:41.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445223 -999.00  +18.80  13.59     31   +1.60 1 1 1 1 1   888    0 24.11 263.26 ----- 16.2 13.6 262.4 19.3 25.8 -26.1 24.8 -26.0 24.3 -25.1 25.8 -25.6
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445223
2025-09-28T12:41:41.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:41:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:41:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:41:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:41:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:41:41.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:41:10', tmtdew=20.32, humidity=25.19, cloud=0.0, wind=23.15, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:41:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:41:41.371 [DEBUG] [Thread-124735] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:41.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-28T12:41:41.458 [DEBUG] [Thread-124739] [transport.py] [_log()] starting thread (client mode): 0x2b989d80
2025-09-28T12:41:41.458 [DEBUG] [Thread-124739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:41.473 [DEBUG] [Thread-124739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:41:41.473 [INFO] [Thread-124739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:41.480 [DEBUG] [Thread-124739] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] Compression: none
2025-09-28T12:41:41.481 [DEBUG] [Thread-124739] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:41.537 [DEBUG] [Thread-124739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:41.537 [DEBUG] [Thread-124739] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:41.538 [DEBUG] [Thread-124739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:41:41.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:41:41.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:41.594 [DEBUG] [Thread-124739] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:41.594 [DEBUG] [Thread-124739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:41.594 [DEBUG] [Thread-124739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:41.594 [DEBUG] [Thread-124739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:41:41.594 [DEBUG] [Thread-124739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:41.608 [INFO] [Thread-124739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:41.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-28T12:41:41.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:42.571 [DEBUG] [Thread-124739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:42.571 [DEBUG] [Thread-124739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:42.619 [DEBUG] [Thread-124739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:42.619 [DEBUG] [Thread-124739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:42.627 [DEBUG] [Thread-124739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:42.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:42.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-28T12:41:42.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-28T12:41:42.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:42.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:42.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:42.660 [DEBUG] [Thread-124739] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:48.131 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:48.133 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:41:52.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:41:52.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:41:52.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-28T12:41:53.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 41, 42), 20.34, 25.21, 0.0, 21.08, 18.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:41:53.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:41:42
2025-09-28T12:41:53.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:41:53.515 [DEBUG] [Thread-124741] [transport.py] [_log()] starting thread (client mode): 0x2b9f3940
2025-09-28T12:41:53.516 [DEBUG] [Thread-124741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:53.526 [DEBUG] [Thread-124741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:41:53.526 [INFO] [Thread-124741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] Compression: none
2025-09-28T12:41:53.527 [DEBUG] [Thread-124741] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:53.535 [DEBUG] [Thread-124741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:53.535 [DEBUG] [Thread-124741] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:53.536 [DEBUG] [Thread-124741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:41:53.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:41:53.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:53.536 [DEBUG] [Thread-124741] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:53.537 [DEBUG] [Thread-124741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:53.537 [DEBUG] [Thread-124741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:53.537 [DEBUG] [Thread-124741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:41:53.537 [DEBUG] [Thread-124741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:53.557 [INFO] [Thread-124741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:53.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:54.105 [DEBUG] [Thread-124741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:54.106 [DEBUG] [Thread-124741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:54.106 [DEBUG] [Thread-124741] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:41:54.146 [DEBUG] [Thread-124741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:54.146 [DEBUG] [Thread-124741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:54.149 [DEBUG] [Thread-124741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:54.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:54.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:41:54.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:41:54.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:41:54.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:54.170 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:41:54.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445570 -999.00  +18.60  15.43     30   +0.90 1 1 1 1 1   888    0 24.49 275.74 ----- 14.1 15.4 247.4 19.9 25.7 -27.9 24.7 -25.6 24.4 -24.9 25.6 -27.9
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:41:54.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445570
2025-09-28T12:41:54.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:41:54.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:41:54.172 [DEBUG] [Thread-124741] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:54.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:41:54.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:41:54.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:41:54.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:41:42', tmtdew=20.34, humidity=25.21, cloud=0.0, wind=21.08, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:41:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:41:54.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:41:54.267 [DEBUG] [Thread-124744] [transport.py] [_log()] starting thread (client mode): 0x2b9c3340
2025-09-28T12:41:54.267 [DEBUG] [Thread-124744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:41:54.281 [DEBUG] [Thread-124744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:41:54.281 [INFO] [Thread-124744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] client lang: <none>
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] server lang: <none>
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] kex follows: False
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] Compression: none
2025-09-28T12:41:54.289 [DEBUG] [Thread-124744] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:41:54.346 [DEBUG] [Thread-124744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:41:54.347 [DEBUG] [Thread-124744] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:41:54.347 [DEBUG] [Thread-124744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:41:54.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:41:54.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:41:54.407 [DEBUG] [Thread-124744] [transport.py] [_log()] userauth is OK
2025-09-28T12:41:54.407 [DEBUG] [Thread-124744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:41:54.407 [DEBUG] [Thread-124744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:41:54.407 [DEBUG] [Thread-124744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:41:54.407 [DEBUG] [Thread-124744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:41:54.427 [INFO] [Thread-124744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:41:54.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-28T12:41:54.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:41:55.385 [DEBUG] [Thread-124744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:41:55.385 [DEBUG] [Thread-124744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:41:55.433 [DEBUG] [Thread-124744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:41:55.433 [DEBUG] [Thread-124744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:41:55.442 [DEBUG] [Thread-124744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:41:55.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:41:55.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-28T12:41:55.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-28T12:41:55.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:41:55.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:41:55.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:41:55.479 [DEBUG] [Thread-124744] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:41:56.200 [DEBUG] [Thread-124746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:05.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:42:05.482 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:42:05.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-28T12:42:06.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 41, 42), 20.34, 25.21, 0.0, 21.08, 18.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:42:06.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:41:42
2025-09-28T12:42:06.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:42:06.314 [DEBUG] [Thread-124747] [transport.py] [_log()] starting thread (client mode): 0x2b9df130
2025-09-28T12:42:06.314 [DEBUG] [Thread-124747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:06.335 [DEBUG] [Thread-124747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:42:06.335 [INFO] [Thread-124747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:06.339 [DEBUG] [Thread-124747] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] Compression: none
2025-09-28T12:42:06.340 [DEBUG] [Thread-124747] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:06.350 [DEBUG] [Thread-124747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:06.351 [DEBUG] [Thread-124747] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:06.351 [DEBUG] [Thread-124747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:42:06.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:42:06.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:06.354 [DEBUG] [Thread-124747] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:06.354 [DEBUG] [Thread-124747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:06.354 [DEBUG] [Thread-124747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:06.354 [DEBUG] [Thread-124747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:42:06.354 [DEBUG] [Thread-124747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:06.379 [INFO] [Thread-124747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:06.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:07.001 [DEBUG] [Thread-124747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:07.001 [DEBUG] [Thread-124747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:07.001 [DEBUG] [Thread-124747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:42:07.042 [DEBUG] [Thread-124747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:07.042 [DEBUG] [Thread-124747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:07.045 [DEBUG] [Thread-124747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:07.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:07.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:42:07.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:42:07.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:42:07.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:07.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:42:07.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:07.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:42:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445570 -999.00  +18.60  15.43     30   +0.90 1 1 1 1 1   888    0 24.49 275.74 ----- 14.1 15.4 247.4 19.9 25.7 -27.9 24.7 -25.6 24.4 -24.9 25.6 -27.9
2025-09-28T12:42:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:42:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:42:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445570
2025-09-28T12:42:07.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:42:07.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:42:07.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:42:07.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:42:07.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:42:07.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:41:42', tmtdew=20.34, humidity=25.21, cloud=0.0, wind=21.08, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:41:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:42:07.070 [DEBUG] [Thread-124747] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:07.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-28T12:42:07.166 [DEBUG] [Thread-124750] [transport.py] [_log()] starting thread (client mode): 0x2b9dc6a0
2025-09-28T12:42:07.166 [DEBUG] [Thread-124750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:07.181 [DEBUG] [Thread-124750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:42:07.181 [INFO] [Thread-124750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:07.188 [DEBUG] [Thread-124750] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] Compression: none
2025-09-28T12:42:07.189 [DEBUG] [Thread-124750] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:07.250 [DEBUG] [Thread-124750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:07.251 [DEBUG] [Thread-124750] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:07.251 [DEBUG] [Thread-124750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:42:07.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:42:07.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:07.306 [DEBUG] [Thread-124750] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:07.307 [DEBUG] [Thread-124750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:07.307 [DEBUG] [Thread-124750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:07.307 [DEBUG] [Thread-124750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:42:07.307 [DEBUG] [Thread-124750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:07.327 [INFO] [Thread-124750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:07.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:42:07.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:08.295 [DEBUG] [Thread-124750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:08.295 [DEBUG] [Thread-124750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:08.342 [DEBUG] [Thread-124750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:08.342 [DEBUG] [Thread-124750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:08.351 [DEBUG] [Thread-124750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:08.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:08.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-28T12:42:08.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-28T12:42:08.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:08.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:08.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:08.384 [DEBUG] [Thread-124750] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:09.846 [DEBUG] [Thread-124752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:11.249 [DEBUG] [Thread-124753 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:18.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:42:18.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:42:18.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-28T12:42:18.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 42, 14), 20.51, 24.98, 0.0, 18.99, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:42:18.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:42:14
2025-09-28T12:42:19.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:42:19.234 [DEBUG] [Thread-124754] [transport.py] [_log()] starting thread (client mode): 0x2b9f3970
2025-09-28T12:42:19.234 [DEBUG] [Thread-124754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:19.254 [DEBUG] [Thread-124754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:42:19.254 [INFO] [Thread-124754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:19.257 [DEBUG] [Thread-124754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:19.258 [DEBUG] [Thread-124754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:19.258 [DEBUG] [Thread-124754] [transport.py] [_log()] Compression: none
2025-09-28T12:42:19.258 [DEBUG] [Thread-124754] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:19.274 [DEBUG] [Thread-124754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:19.274 [DEBUG] [Thread-124754] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:19.274 [DEBUG] [Thread-124754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:42:19.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:42:19.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:19.275 [DEBUG] [Thread-124754] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:19.275 [DEBUG] [Thread-124754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:19.275 [DEBUG] [Thread-124754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:19.275 [DEBUG] [Thread-124754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:42:19.275 [DEBUG] [Thread-124754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:19.284 [INFO] [Thread-124754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:19.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:19.925 [DEBUG] [Thread-124754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:19.925 [DEBUG] [Thread-124754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:19.925 [DEBUG] [Thread-124754] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:42:19.966 [DEBUG] [Thread-124754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:19.966 [DEBUG] [Thread-124754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:19.968 [DEBUG] [Thread-124754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:19.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:19.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:42:19.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:42:19.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:42:19.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:19.988 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:42:19.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445570 -999.00  +18.60  15.43     30   +0.90 1 1 1 1 1   888    0 24.49 275.74 ----- 14.1 15.4 247.4 19.9 25.7 -27.9 24.7 -25.6 24.4 -24.9 25.6 -27.9
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445570
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:42:19.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:42:14', tmtdew=20.51, humidity=24.98, cloud=0.0, wind=18.99, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:41:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:42:19.989 [DEBUG] [Thread-124754] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:20.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-28T12:42:20.071 [DEBUG] [Thread-124757] [transport.py] [_log()] starting thread (client mode): 0x2b9af850
2025-09-28T12:42:20.071 [DEBUG] [Thread-124757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:20.086 [DEBUG] [Thread-124757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:42:20.086 [INFO] [Thread-124757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:42:20.093 [DEBUG] [Thread-124757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] Compression: none
2025-09-28T12:42:20.094 [DEBUG] [Thread-124757] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:20.149 [DEBUG] [Thread-124757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:20.149 [DEBUG] [Thread-124757] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:20.149 [DEBUG] [Thread-124757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:42:20.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:42:20.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:20.207 [DEBUG] [Thread-124757] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:20.207 [DEBUG] [Thread-124757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:20.207 [DEBUG] [Thread-124757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:20.207 [DEBUG] [Thread-124757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:42:20.207 [DEBUG] [Thread-124757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:20.221 [INFO] [Thread-124757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:20.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-28T12:42:20.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:21.188 [DEBUG] [Thread-124757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:21.189 [DEBUG] [Thread-124757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:21.236 [DEBUG] [Thread-124757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:21.237 [DEBUG] [Thread-124757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:21.245 [DEBUG] [Thread-124757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:21.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:21.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-28T12:42:21.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-28T12:42:21.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:21.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:21.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:21.280 [DEBUG] [Thread-124757] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:26.281 [DEBUG] [Thread-124759 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:31.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:42:31.283 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:42:31.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-28T12:42:31.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 42, 14), 20.51, 24.98, 0.0, 18.99, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:42:31.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:42:14
2025-09-28T12:42:31.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:42:32.112 [DEBUG] [Thread-124760] [transport.py] [_log()] starting thread (client mode): 0x2b9dd720
2025-09-28T12:42:32.112 [DEBUG] [Thread-124760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:32.131 [DEBUG] [Thread-124760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:42:32.131 [INFO] [Thread-124760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] Compression: none
2025-09-28T12:42:32.135 [DEBUG] [Thread-124760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:32.151 [DEBUG] [Thread-124760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:32.152 [DEBUG] [Thread-124760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:32.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:42:32.153 [DEBUG] [Thread-124760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:42:32.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:32.155 [DEBUG] [Thread-124760] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:32.155 [DEBUG] [Thread-124760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:32.155 [DEBUG] [Thread-124760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:32.155 [DEBUG] [Thread-124760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:42:32.155 [DEBUG] [Thread-124760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:32.179 [INFO] [Thread-124760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:32.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:32.810 [DEBUG] [Thread-124760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:32.810 [DEBUG] [Thread-124760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:32.811 [DEBUG] [Thread-124760] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:42:32.851 [DEBUG] [Thread-124760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:32.851 [DEBUG] [Thread-124760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:32.854 [DEBUG] [Thread-124760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:32.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:32.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:42:32.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:42:32.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:42:32.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:32.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:42:32.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:32.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:42:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445918 -999.00  +18.20  17.84     32   +1.30 1 1 1 1 1   888    0 24.68 282.44 ----- 20.9 17.8 265.2 21.4 25.7 -27.2 24.7 -25.6 24.3 -24.7 25.5 -27.2
2025-09-28T12:42:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:42:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:42:32.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445918
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:42:32.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:42:14', tmtdew=20.51, humidity=24.98, cloud=0.0, wind=18.99, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:42:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:42:32.882 [DEBUG] [Thread-124760] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:32.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-28T12:42:32.978 [DEBUG] [Thread-124763] [transport.py] [_log()] starting thread (client mode): 0x2b9de1a0
2025-09-28T12:42:32.978 [DEBUG] [Thread-124763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:32.993 [DEBUG] [Thread-124763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:42:32.993 [INFO] [Thread-124763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:42:33.000 [DEBUG] [Thread-124763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] Compression: none
2025-09-28T12:42:33.001 [DEBUG] [Thread-124763] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:33.057 [DEBUG] [Thread-124763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:33.057 [DEBUG] [Thread-124763] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:33.057 [DEBUG] [Thread-124763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:42:33.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:42:33.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:33.115 [DEBUG] [Thread-124763] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:33.115 [DEBUG] [Thread-124763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:33.115 [DEBUG] [Thread-124763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:33.115 [DEBUG] [Thread-124763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:42:33.115 [DEBUG] [Thread-124763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:33.129 [INFO] [Thread-124763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:33.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-28T12:42:33.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:34.088 [DEBUG] [Thread-124763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:34.089 [DEBUG] [Thread-124763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:34.136 [DEBUG] [Thread-124763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:34.136 [DEBUG] [Thread-124763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:34.145 [DEBUG] [Thread-124763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:34.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:34.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-28T12:42:34.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-28T12:42:34.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:34.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:34.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:34.180 [DEBUG] [Thread-124763] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:41.335 [DEBUG] [Thread-124765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:44.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:42:44.178 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:42:44.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-28T12:42:44.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 42, 14), 20.51, 24.98, 0.0, 18.99, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:42:44.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:42:14
2025-09-28T12:42:44.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:42:44.992 [DEBUG] [Thread-124766] [transport.py] [_log()] starting thread (client mode): 0x2b98ad10
2025-09-28T12:42:44.992 [DEBUG] [Thread-124766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:45.011 [DEBUG] [Thread-124766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:42:45.011 [INFO] [Thread-124766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:45.015 [DEBUG] [Thread-124766] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] Compression: none
2025-09-28T12:42:45.016 [DEBUG] [Thread-124766] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:45.033 [DEBUG] [Thread-124766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:45.033 [DEBUG] [Thread-124766] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:45.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:42:45.034 [DEBUG] [Thread-124766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:42:45.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:45.037 [DEBUG] [Thread-124766] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:45.037 [DEBUG] [Thread-124766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:45.037 [DEBUG] [Thread-124766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:45.037 [DEBUG] [Thread-124766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:42:45.037 [DEBUG] [Thread-124766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:45.058 [INFO] [Thread-124766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:45.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:45.702 [DEBUG] [Thread-124766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:45.702 [DEBUG] [Thread-124766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:45.702 [DEBUG] [Thread-124766] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:42:45.743 [DEBUG] [Thread-124766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:45.743 [DEBUG] [Thread-124766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:45.746 [DEBUG] [Thread-124766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:45.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:45.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:42:45.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:42:45.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:42:45.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:45.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:42:45.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.445918 -999.00  +18.20  17.84     32   +1.30 1 1 1 1 1   888    0 24.68 282.44 ----- 20.9 17.8 265.2 21.4 25.7 -27.2 24.7 -25.6 24.3 -24.7 25.5 -27.2
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.445918
2025-09-28T12:42:45.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:42:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:42:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:42:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:42:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:42:45.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:42:14', tmtdew=20.51, humidity=24.98, cloud=0.0, wind=18.99, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:42:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:42:45.766 [DEBUG] [Thread-124766] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:45.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-28T12:42:45.854 [DEBUG] [Thread-124769] [transport.py] [_log()] starting thread (client mode): 0x2e38e8f0
2025-09-28T12:42:45.854 [DEBUG] [Thread-124769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:45.869 [DEBUG] [Thread-124769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:42:45.870 [INFO] [Thread-124769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:42:45.877 [DEBUG] [Thread-124769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:45.877 [DEBUG] [Thread-124769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:45.878 [DEBUG] [Thread-124769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:45.879 [DEBUG] [Thread-124769] [transport.py] [_log()] Compression: none
2025-09-28T12:42:45.879 [DEBUG] [Thread-124769] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:45.935 [DEBUG] [Thread-124769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:45.935 [DEBUG] [Thread-124769] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:45.936 [DEBUG] [Thread-124769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:42:45.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:42:45.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:45.991 [DEBUG] [Thread-124769] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:45.991 [DEBUG] [Thread-124769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:45.992 [DEBUG] [Thread-124769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:45.992 [DEBUG] [Thread-124769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:42:45.992 [DEBUG] [Thread-124769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:46.011 [INFO] [Thread-124769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:46.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-28T12:42:46.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:46.964 [DEBUG] [Thread-124769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:46.965 [DEBUG] [Thread-124769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:47.012 [DEBUG] [Thread-124769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:47.012 [DEBUG] [Thread-124769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:47.021 [DEBUG] [Thread-124769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:47.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:47.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-28T12:42:47.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-28T12:42:47.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:47.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:47.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:47.055 [DEBUG] [Thread-124769] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:48.274 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:48.274 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:56.376 [DEBUG] [Thread-124771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:42:57.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:42:57.056 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:42:57.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:42:57.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 42, 47), 20.21, 25.36, 0.0, 14.45, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:42:57.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:42:47
2025-09-28T12:42:57.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:42:57.892 [DEBUG] [Thread-124772] [transport.py] [_log()] starting thread (client mode): 0x2b9aec80
2025-09-28T12:42:57.892 [DEBUG] [Thread-124772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:57.911 [DEBUG] [Thread-124772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:42:57.911 [INFO] [Thread-124772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] Compression: none
2025-09-28T12:42:57.913 [DEBUG] [Thread-124772] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:57.925 [DEBUG] [Thread-124772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:57.926 [DEBUG] [Thread-124772] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:57.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:42:57.927 [DEBUG] [Thread-124772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:42:57.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:57.928 [DEBUG] [Thread-124772] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:57.928 [DEBUG] [Thread-124772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:57.929 [DEBUG] [Thread-124772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:57.929 [DEBUG] [Thread-124772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:42:57.929 [DEBUG] [Thread-124772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:57.947 [INFO] [Thread-124772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:57.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:58.494 [DEBUG] [Thread-124772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:58.495 [DEBUG] [Thread-124772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:58.495 [DEBUG] [Thread-124772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:42:58.535 [DEBUG] [Thread-124772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:58.535 [DEBUG] [Thread-124772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:58.538 [DEBUG] [Thread-124772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:58.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:58.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:42:58.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:42:58.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:42:58.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:58.565 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:42:58.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:58.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:58.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:42:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.446265 -999.00  +18.40  14.16     33   +1.80 1 1 1 1 1   888    0 24.64 274.05 ----- 15.7 14.2 266.2 20.7 25.9 -26.6 24.8 -24.8 24.2 -24.1 25.5 -25.8
2025-09-28T12:42:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:42:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:42:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.446265
2025-09-28T12:42:58.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:42:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:42:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:42:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:42:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:42:58.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:42:47', tmtdew=20.21, humidity=25.36, cloud=0.0, wind=14.45, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:42:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:42:58.567 [DEBUG] [Thread-124772] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:42:58.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-28T12:42:58.663 [DEBUG] [Thread-124775] [transport.py] [_log()] starting thread (client mode): 0x2b9c0430
2025-09-28T12:42:58.663 [DEBUG] [Thread-124775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:42:58.678 [DEBUG] [Thread-124775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:42:58.678 [INFO] [Thread-124775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:42:58.685 [DEBUG] [Thread-124775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] client lang: <none>
2025-09-28T12:42:58.686 [DEBUG] [Thread-124775] [transport.py] [_log()] server lang: <none>
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] kex follows: False
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] Compression: none
2025-09-28T12:42:58.687 [DEBUG] [Thread-124775] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:42:58.744 [DEBUG] [Thread-124775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:42:58.744 [DEBUG] [Thread-124775] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:42:58.745 [DEBUG] [Thread-124775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:42:58.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:42:58.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:42:58.800 [DEBUG] [Thread-124775] [transport.py] [_log()] userauth is OK
2025-09-28T12:42:58.800 [DEBUG] [Thread-124775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:42:58.800 [DEBUG] [Thread-124775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:42:58.800 [DEBUG] [Thread-124775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:42:58.800 [DEBUG] [Thread-124775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:42:58.819 [INFO] [Thread-124775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:42:58.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-28T12:42:58.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:42:59.766 [DEBUG] [Thread-124775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:42:59.767 [DEBUG] [Thread-124775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:42:59.814 [DEBUG] [Thread-124775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:42:59.815 [DEBUG] [Thread-124775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:42:59.824 [DEBUG] [Thread-124775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:42:59.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:42:59.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-28T12:42:59.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-28T12:42:59.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:42:59.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:42:59.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:42:59.858 [DEBUG] [Thread-124775] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:43:09.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:43:09.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:43:09.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-28T12:43:09.907 [DEBUG] [Thread-124777 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:10.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 42, 47), 20.21, 25.36, 0.0, 14.45, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:43:10.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:42:47
2025-09-28T12:43:10.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:43:10.703 [DEBUG] [Thread-124778] [transport.py] [_log()] starting thread (client mode): 0x2e3f8970
2025-09-28T12:43:10.703 [DEBUG] [Thread-124778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:43:10.724 [DEBUG] [Thread-124778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:43:10.724 [INFO] [Thread-124778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:43:10.727 [DEBUG] [Thread-124778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] client lang: <none>
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] server lang: <none>
2025-09-28T12:43:10.728 [DEBUG] [Thread-124778] [transport.py] [_log()] kex follows: False
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] Compression: none
2025-09-28T12:43:10.729 [DEBUG] [Thread-124778] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:43:10.749 [DEBUG] [Thread-124778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:43:10.750 [DEBUG] [Thread-124778] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:43:10.750 [DEBUG] [Thread-124778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:43:10.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:43:10.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:43:10.752 [DEBUG] [Thread-124778] [transport.py] [_log()] userauth is OK
2025-09-28T12:43:10.752 [DEBUG] [Thread-124778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:43:10.753 [DEBUG] [Thread-124778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:43:10.753 [DEBUG] [Thread-124778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:43:10.753 [DEBUG] [Thread-124778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:43:10.775 [INFO] [Thread-124778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:43:10.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:43:11.405 [DEBUG] [Thread-124780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:11.408 [DEBUG] [Thread-124778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:43:11.408 [DEBUG] [Thread-124778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:43:11.408 [DEBUG] [Thread-124778] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:43:11.449 [DEBUG] [Thread-124778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:43:11.450 [DEBUG] [Thread-124778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:43:11.452 [DEBUG] [Thread-124778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:43:11.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:43:11.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:43:11.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:43:11.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:43:11.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:43:11.475 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:43:11.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.446265 -999.00  +18.40  14.16     33   +1.80 1 1 1 1 1   888    0 24.64 274.05 ----- 15.7 14.2 266.2 20.7 25.9 -26.6 24.8 -24.8 24.2 -24.1 25.5 -25.8
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:43:11.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.446265
2025-09-28T12:43:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:43:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:43:11.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:43:11.477 [DEBUG] [Thread-124778] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:43:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:43:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:43:11.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:42:47', tmtdew=20.21, humidity=25.36, cloud=0.0, wind=14.45, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:42:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:43:11.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-28T12:43:26.448 [DEBUG] [Thread-124782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:41.478 [DEBUG] [Thread-124783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:48.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:48.415 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:43:56.508 [DEBUG] [Thread-124784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:09.935 [DEBUG] [Thread-124785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:11.537 [DEBUG] [Thread-124786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:26.568 [DEBUG] [Thread-124787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:41.597 [DEBUG] [Thread-124788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:48.555 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:48.556 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:44:56.627 [DEBUG] [Thread-124789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:09.991 [DEBUG] [Thread-124790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:11.659 [DEBUG] [Thread-124791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:25.818 [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-28T12:45:26.687 [DEBUG] [Thread-124792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:35.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:45:35.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:45:35.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-28T12:45:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 45, 26), 19.77, 26.22, 0.0, 15.92, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:45:36.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:45:26
2025-09-28T12:45:36.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:45:36.706 [DEBUG] [Thread-124793] [transport.py] [_log()] starting thread (client mode): 0x2b9ae650
2025-09-28T12:45:36.706 [DEBUG] [Thread-124793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:45:36.728 [DEBUG] [Thread-124793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:45:36.728 [INFO] [Thread-124793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:45:36.731 [DEBUG] [Thread-124793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:45:36.731 [DEBUG] [Thread-124793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:45:36.731 [DEBUG] [Thread-124793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] client lang: <none>
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] server lang: <none>
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] kex follows: False
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] Compression: none
2025-09-28T12:45:36.732 [DEBUG] [Thread-124793] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:45:36.751 [DEBUG] [Thread-124793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:45:36.751 [DEBUG] [Thread-124793] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:45:36.752 [DEBUG] [Thread-124793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:45:36.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:45:36.753 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:45:36.754 [DEBUG] [Thread-124793] [transport.py] [_log()] userauth is OK
2025-09-28T12:45:36.754 [DEBUG] [Thread-124793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:45:36.754 [DEBUG] [Thread-124793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:45:36.754 [DEBUG] [Thread-124793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:45:36.754 [DEBUG] [Thread-124793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:45:36.791 [INFO] [Thread-124793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:45:36.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:45:37.342 [DEBUG] [Thread-124793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:45:37.342 [DEBUG] [Thread-124793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:45:37.343 [DEBUG] [Thread-124793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:45:37.383 [DEBUG] [Thread-124793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:45:37.383 [DEBUG] [Thread-124793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:45:37.386 [DEBUG] [Thread-124793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:45:37.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:45:37.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:45:37.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:45:37.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:45:37.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:45:37.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:45:37.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:45:37.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:45:37.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:45:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.448001 -999.00  +18.20  18.06     32   +1.60 1 1 1 1 1   888    0 22.52 202.87 ----- 23.0 18.1 261.2 22.5 25.4 -27.8 24.5 -25.6 24.0 -28.4 25.1 -27.0
2025-09-28T12:45:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:45:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:45:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.448001
2025-09-28T12:45:37.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:45:37.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:45:37.409 [DEBUG] [Thread-124793] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:45:37.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:45:37.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:45:37.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:45:37.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:45:26', tmtdew=19.77, humidity=26.22, cloud=0.0, wind=15.92, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:45:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:45:37.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-28T12:45:41.717 [DEBUG] [Thread-124796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:48.697 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:48.699 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:45:56.761 [DEBUG] [Thread-124797 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:10.041 [DEBUG] [Thread-124798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:11.787 [DEBUG] [Thread-124799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:26.818 [DEBUG] [Thread-124800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:41.844 [DEBUG] [Thread-124801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:48.838 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:48.839 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:46:56.872 [DEBUG] [Thread-124802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:10.096 [DEBUG] [Thread-124803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:11.902 [DEBUG] [Thread-124804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:26.927 [DEBUG] [Thread-124805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:41.956 [DEBUG] [Thread-124806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:48.981 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:48.982 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:49.178 [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-28T12:47:56.986 [DEBUG] [Thread-124807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:47:59.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:47:59.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:47:59.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-28T12:47:59.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 47, 34), 19.41, 26.98, 0.0, 21.79, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:47:59.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:47:34
2025-09-28T12:47:59.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:48:00.059 [DEBUG] [Thread-124808] [transport.py] [_log()] starting thread (client mode): 0x2b98bac0
2025-09-28T12:48:00.060 [DEBUG] [Thread-124808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:00.079 [DEBUG] [Thread-124808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:48:00.079 [INFO] [Thread-124808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:00.082 [DEBUG] [Thread-124808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] Compression: none
2025-09-28T12:48:00.083 [DEBUG] [Thread-124808] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:00.091 [DEBUG] [Thread-124808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:00.091 [DEBUG] [Thread-124808] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:00.091 [DEBUG] [Thread-124808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:48:00.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:48:00.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:00.093 [DEBUG] [Thread-124808] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:00.093 [DEBUG] [Thread-124808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:00.093 [DEBUG] [Thread-124808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:00.093 [DEBUG] [Thread-124808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:48:00.093 [DEBUG] [Thread-124808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:00.116 [INFO] [Thread-124808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:00.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:00.705 [DEBUG] [Thread-124808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:00.705 [DEBUG] [Thread-124808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:00.705 [DEBUG] [Thread-124808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:48:00.746 [DEBUG] [Thread-124808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:00.746 [DEBUG] [Thread-124808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:00.749 [DEBUG] [Thread-124808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:00.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:00.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:48:00.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:48:00.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:48:00.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:00.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:48:00.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:00.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:48:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.449390 -999.00  +18.70  17.55     34   +2.60 1 1 1 1 1   888    0 20.27 125.50 ----- 14.7 17.6 257.2 23.8 25.5 -27.4 24.4 -24.9 24.1 -24.3 25.2 -26.3
2025-09-28T12:48:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:48:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:48:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.449390
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:48:00.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:47:34', tmtdew=19.41, humidity=26.98, cloud=0.0, wind=21.79, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:47:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:48:00.774 [DEBUG] [Thread-124808] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:00.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:48:00.873 [DEBUG] [Thread-124811] [transport.py] [_log()] starting thread (client mode): 0x2b9ad540
2025-09-28T12:48:00.873 [DEBUG] [Thread-124811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:00.892 [DEBUG] [Thread-124811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:48:00.892 [INFO] [Thread-124811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:00.899 [DEBUG] [Thread-124811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] Compression: none
2025-09-28T12:48:00.900 [DEBUG] [Thread-124811] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:00.959 [DEBUG] [Thread-124811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:00.960 [DEBUG] [Thread-124811] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:00.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:48:00.961 [DEBUG] [Thread-124811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:48:00.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:01.015 [DEBUG] [Thread-124811] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:01.016 [DEBUG] [Thread-124811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:01.016 [DEBUG] [Thread-124811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:01.016 [DEBUG] [Thread-124811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:48:01.016 [DEBUG] [Thread-124811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:01.035 [INFO] [Thread-124811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:01.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-28T12:48:01.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:01.993 [DEBUG] [Thread-124811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:01.993 [DEBUG] [Thread-124811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:02.042 [DEBUG] [Thread-124811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:02.042 [DEBUG] [Thread-124811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:02.050 [DEBUG] [Thread-124811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:02.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:02.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-28T12:48:02.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-28T12:48:02.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:02.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:02.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:02.080 [DEBUG] [Thread-124811] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:10.143 [DEBUG] [Thread-124813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:12.016 [DEBUG] [Thread-124814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:12.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:48:12.083 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:48:12.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-28T12:48:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 48, 6), 19.26, 27.3, 0.0, 23.01, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:48:12.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:48:06
2025-09-28T12:48:12.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:48:12.948 [DEBUG] [Thread-124815] [transport.py] [_log()] starting thread (client mode): 0x2b9dece0
2025-09-28T12:48:12.948 [DEBUG] [Thread-124815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:12.968 [DEBUG] [Thread-124815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:48:12.968 [INFO] [Thread-124815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] Compression: none
2025-09-28T12:48:12.970 [DEBUG] [Thread-124815] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:12.978 [DEBUG] [Thread-124815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:12.978 [DEBUG] [Thread-124815] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:12.979 [DEBUG] [Thread-124815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:48:12.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:48:12.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:12.980 [DEBUG] [Thread-124815] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:12.980 [DEBUG] [Thread-124815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:12.980 [DEBUG] [Thread-124815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:12.980 [DEBUG] [Thread-124815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:48:12.980 [DEBUG] [Thread-124815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:12.993 [INFO] [Thread-124815] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:12.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:13.613 [DEBUG] [Thread-124815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:13.613 [DEBUG] [Thread-124815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:13.614 [DEBUG] [Thread-124815] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:48:13.654 [DEBUG] [Thread-124815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:13.654 [DEBUG] [Thread-124815] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:13.657 [DEBUG] [Thread-124815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:13.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:13.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:48:13.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:48:13.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:48:13.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:13.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:48:13.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:13.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.449737 -999.00  +19.00   8.70     33   +2.50 1 1 1 1 1   888    0 19.93 120.19 ----- 12.0 8.7 200.6 29.1 25.4 -26.9 24.4 -25.1 24.1 -24.7 25.3 -26.5
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.449737
2025-09-28T12:48:13.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:48:13.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:48:13.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:48:13.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:48:13.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:48:13.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:48:06', tmtdew=19.26, humidity=27.3, cloud=0.0, wind=23.01, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:47:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:48:13.683 [DEBUG] [Thread-124815] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:13.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-28T12:48:13.776 [DEBUG] [Thread-124818] [transport.py] [_log()] starting thread (client mode): 0x2e38e8f0
2025-09-28T12:48:13.777 [DEBUG] [Thread-124818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:13.790 [DEBUG] [Thread-124818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:48:13.790 [INFO] [Thread-124818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:13.798 [DEBUG] [Thread-124818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] Compression: none
2025-09-28T12:48:13.799 [DEBUG] [Thread-124818] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:13.855 [DEBUG] [Thread-124818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:13.855 [DEBUG] [Thread-124818] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:13.856 [DEBUG] [Thread-124818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:48:13.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:48:13.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:13.911 [DEBUG] [Thread-124818] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:13.912 [DEBUG] [Thread-124818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:13.912 [DEBUG] [Thread-124818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:13.912 [DEBUG] [Thread-124818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:48:13.912 [DEBUG] [Thread-124818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:13.934 [INFO] [Thread-124818] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:13.934 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:48:13.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:14.885 [DEBUG] [Thread-124818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:14.886 [DEBUG] [Thread-124818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:14.933 [DEBUG] [Thread-124818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:14.933 [DEBUG] [Thread-124818] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:14.942 [DEBUG] [Thread-124818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:14.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:14.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-28T12:48:14.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-28T12:48:14.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:14.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:14.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:14.978 [DEBUG] [Thread-124818] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:24.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:48:24.979 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:48:24.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-28T12:48:25.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 48, 6), 19.26, 27.3, 0.0, 23.01, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:48:25.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:48:06
2025-09-28T12:48:25.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:48:25.887 [DEBUG] [Thread-124820] [transport.py] [_log()] starting thread (client mode): 0x2b9dd240
2025-09-28T12:48:25.887 [DEBUG] [Thread-124820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:25.907 [DEBUG] [Thread-124820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:48:25.907 [INFO] [Thread-124820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:25.910 [DEBUG] [Thread-124820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:25.911 [DEBUG] [Thread-124820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:25.911 [DEBUG] [Thread-124820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:25.911 [DEBUG] [Thread-124820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:25.911 [DEBUG] [Thread-124820] [transport.py] [_log()] Compression: none
2025-09-28T12:48:25.911 [DEBUG] [Thread-124820] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:25.927 [DEBUG] [Thread-124820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:25.927 [DEBUG] [Thread-124820] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:25.927 [DEBUG] [Thread-124820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:48:25.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:48:25.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:25.969 [DEBUG] [Thread-124820] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:25.969 [DEBUG] [Thread-124820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:25.969 [DEBUG] [Thread-124820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:25.970 [DEBUG] [Thread-124820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:48:25.970 [DEBUG] [Thread-124820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:25.987 [INFO] [Thread-124820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:25.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:26.598 [DEBUG] [Thread-124820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:26.598 [DEBUG] [Thread-124820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:26.598 [DEBUG] [Thread-124820] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:48:26.639 [DEBUG] [Thread-124820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:26.639 [DEBUG] [Thread-124820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:26.641 [DEBUG] [Thread-124820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:26.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:26.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:48:26.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:48:26.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:48:26.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:26.660 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:48:26.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:26.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.449737 -999.00  +19.00   8.70     33   +2.50 1 1 1 1 1   888    0 19.93 120.19 ----- 12.0 8.7 200.6 29.1 25.4 -26.9 24.4 -25.1 24.1 -24.7 25.3 -26.5
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.449737
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:48:26.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:48:06', tmtdew=19.26, humidity=27.3, cloud=0.0, wind=23.01, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:47:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:48:26.662 [DEBUG] [Thread-124820] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:26.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-28T12:48:26.746 [DEBUG] [Thread-124823] [transport.py] [_log()] starting thread (client mode): 0x2b98ae60
2025-09-28T12:48:26.746 [DEBUG] [Thread-124823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:26.761 [DEBUG] [Thread-124823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:48:26.761 [INFO] [Thread-124823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:26.768 [DEBUG] [Thread-124823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] Compression: none
2025-09-28T12:48:26.769 [DEBUG] [Thread-124823] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:26.830 [DEBUG] [Thread-124823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:26.830 [DEBUG] [Thread-124823] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:26.830 [DEBUG] [Thread-124823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:48:26.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:48:26.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:26.887 [DEBUG] [Thread-124823] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:26.887 [DEBUG] [Thread-124823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:26.887 [DEBUG] [Thread-124823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:26.887 [DEBUG] [Thread-124823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:48:26.887 [DEBUG] [Thread-124823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:26.901 [INFO] [Thread-124823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:26.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-28T12:48:26.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:27.066 [DEBUG] [Thread-124825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:27.845 [DEBUG] [Thread-124823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:27.845 [DEBUG] [Thread-124823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:27.893 [DEBUG] [Thread-124823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:27.893 [DEBUG] [Thread-124823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:27.901 [DEBUG] [Thread-124823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:27.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:27.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-28T12:48:27.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-28T12:48:27.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:27.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:27.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:27.933 [DEBUG] [Thread-124823] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:37.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:48:37.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:48:37.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-28T12:48:38.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 48, 6), 19.26, 27.3, 0.0, 23.01, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:48:38.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:48:06
2025-09-28T12:48:38.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:48:38.843 [DEBUG] [Thread-124826] [transport.py] [_log()] starting thread (client mode): 0x2b9aea40
2025-09-28T12:48:38.844 [DEBUG] [Thread-124826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:38.863 [DEBUG] [Thread-124826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:48:38.863 [INFO] [Thread-124826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:38.865 [DEBUG] [Thread-124826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:38.866 [DEBUG] [Thread-124826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:38.866 [DEBUG] [Thread-124826] [transport.py] [_log()] Compression: none
2025-09-28T12:48:38.866 [DEBUG] [Thread-124826] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:38.875 [DEBUG] [Thread-124826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:38.875 [DEBUG] [Thread-124826] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:38.875 [DEBUG] [Thread-124826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:48:38.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:48:38.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:38.877 [DEBUG] [Thread-124826] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:38.877 [DEBUG] [Thread-124826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:38.877 [DEBUG] [Thread-124826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:38.877 [DEBUG] [Thread-124826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:48:38.877 [DEBUG] [Thread-124826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:38.887 [INFO] [Thread-124826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:38.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:39.480 [DEBUG] [Thread-124826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:39.480 [DEBUG] [Thread-124826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:39.480 [DEBUG] [Thread-124826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:48:39.521 [DEBUG] [Thread-124826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:39.521 [DEBUG] [Thread-124826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:39.524 [DEBUG] [Thread-124826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:39.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:39.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:48:39.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:48:39.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:48:39.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:39.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:48:39.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:39.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:39.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450084 -999.00  +19.00  25.36     31   +1.70 1 1 1 1 1   888    0 19.51 103.79 ----- 19.0 25.4 209.0 29.7 25.4 -27.6 24.3 -25.7 24.2 -26.7 25.2 -27.8
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450084
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:48:39.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:48:06', tmtdew=19.26, humidity=27.3, cloud=0.0, wind=23.01, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:48:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:48:39.544 [DEBUG] [Thread-124826] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:39.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-28T12:48:39.631 [DEBUG] [Thread-124829] [transport.py] [_log()] starting thread (client mode): 0x2b989f90
2025-09-28T12:48:39.631 [DEBUG] [Thread-124829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:39.646 [DEBUG] [Thread-124829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:48:39.646 [INFO] [Thread-124829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:39.653 [DEBUG] [Thread-124829] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] Compression: none
2025-09-28T12:48:39.654 [DEBUG] [Thread-124829] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:39.711 [DEBUG] [Thread-124829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:39.711 [DEBUG] [Thread-124829] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:39.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:48:39.711 [DEBUG] [Thread-124829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:48:39.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:39.768 [DEBUG] [Thread-124829] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:39.768 [DEBUG] [Thread-124829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:39.768 [DEBUG] [Thread-124829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:39.768 [DEBUG] [Thread-124829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:48:39.768 [DEBUG] [Thread-124829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:39.781 [INFO] [Thread-124829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:39.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-28T12:48:39.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:40.720 [DEBUG] [Thread-124829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:40.720 [DEBUG] [Thread-124829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:40.768 [DEBUG] [Thread-124829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:40.768 [DEBUG] [Thread-124829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:40.777 [DEBUG] [Thread-124829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:40.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:40.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-28T12:48:40.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-28T12:48:40.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:40.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:40.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:40.812 [DEBUG] [Thread-124829] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:42.106 [DEBUG] [Thread-124831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:49.122 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:49.124 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:48:50.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:48:50.815 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:48:50.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-28T12:48:51.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 48, 37), 19.67, 26.33, 0.0, 23.7, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:48:51.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:48:37
2025-09-28T12:48:51.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:48:51.669 [DEBUG] [Thread-124832] [transport.py] [_log()] starting thread (client mode): 0x2b9ae770
2025-09-28T12:48:51.669 [DEBUG] [Thread-124832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:51.690 [DEBUG] [Thread-124832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:48:51.690 [INFO] [Thread-124832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:51.694 [DEBUG] [Thread-124832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] Compression: none
2025-09-28T12:48:51.695 [DEBUG] [Thread-124832] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:51.712 [DEBUG] [Thread-124832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:51.712 [DEBUG] [Thread-124832] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:51.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:48:51.714 [DEBUG] [Thread-124832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:48:51.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:51.715 [DEBUG] [Thread-124832] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:51.716 [DEBUG] [Thread-124832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:51.716 [DEBUG] [Thread-124832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:51.716 [DEBUG] [Thread-124832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:48:51.716 [DEBUG] [Thread-124832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:51.750 [INFO] [Thread-124832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:51.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:52.401 [DEBUG] [Thread-124832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:52.401 [DEBUG] [Thread-124832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:52.402 [DEBUG] [Thread-124832] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:48:52.442 [DEBUG] [Thread-124832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:52.443 [DEBUG] [Thread-124832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:52.445 [DEBUG] [Thread-124832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:52.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48:52.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:48:52.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:48:52.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:48:52.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:52.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:48:52.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450084 -999.00  +19.00  25.36     31   +1.70 1 1 1 1 1   888    0 19.51 103.79 ----- 19.0 25.4 209.0 29.7 25.4 -27.6 24.3 -25.7 24.2 -26.7 25.2 -27.8
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:48:52.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450084
2025-09-28T12:48:52.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:48:52.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:48:52.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:48:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:48:52.471 [DEBUG] [Thread-124832] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:48:52.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:48:37', tmtdew=19.67, humidity=26.33, cloud=0.0, wind=23.7, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:48:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:48:52.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-28T12:48:52.565 [DEBUG] [Thread-124835] [transport.py] [_log()] starting thread (client mode): 0x2b9df010
2025-09-28T12:48:52.565 [DEBUG] [Thread-124835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:48:52.580 [DEBUG] [Thread-124835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:48:52.580 [INFO] [Thread-124835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] client lang: <none>
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] server lang: <none>
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] kex follows: False
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] Compression: none
2025-09-28T12:48:52.588 [DEBUG] [Thread-124835] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:48:52.643 [DEBUG] [Thread-124835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:48:52.644 [DEBUG] [Thread-124835] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:48:52.644 [DEBUG] [Thread-124835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:48:52.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:48:52.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:48:52.700 [DEBUG] [Thread-124835] [transport.py] [_log()] userauth is OK
2025-09-28T12:48:52.700 [DEBUG] [Thread-124835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:48:52.700 [DEBUG] [Thread-124835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:48:52.701 [DEBUG] [Thread-124835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:48:52.701 [DEBUG] [Thread-124835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:48:52.720 [INFO] [Thread-124835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:48:52.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-28T12:48:52.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:48:53.682 [DEBUG] [Thread-124835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:48:53.682 [DEBUG] [Thread-124835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:48:53.730 [DEBUG] [Thread-124835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:48:53.730 [DEBUG] [Thread-124835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:48:53.739 [DEBUG] [Thread-124835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:48:53.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:48: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-28T12:48:53.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') -> 00000000
2025-09-28T12:48:53.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:48:53.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:48:53.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:48:53.775 [DEBUG] [Thread-124835] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:48:57.152 [DEBUG] [Thread-124837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:03.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:49:03.777 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:49:03.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:49:04.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 48, 37), 19.67, 26.33, 0.0, 23.7, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:49:04.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:48:37
2025-09-28T12:49:04.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:49:04.671 [DEBUG] [Thread-124838] [transport.py] [_log()] starting thread (client mode): 0x2e3f8b20
2025-09-28T12:49:04.671 [DEBUG] [Thread-124838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:04.691 [DEBUG] [Thread-124838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:49:04.692 [INFO] [Thread-124838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:49:04.694 [DEBUG] [Thread-124838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] Compression: none
2025-09-28T12:49:04.695 [DEBUG] [Thread-124838] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:04.713 [DEBUG] [Thread-124838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:04.713 [DEBUG] [Thread-124838] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:04.713 [DEBUG] [Thread-124838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:49:04.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:49:04.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:04.756 [DEBUG] [Thread-124838] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:04.757 [DEBUG] [Thread-124838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:04.757 [DEBUG] [Thread-124838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:04.757 [DEBUG] [Thread-124838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:49:04.757 [DEBUG] [Thread-124838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:04.783 [INFO] [Thread-124838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:04.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:05.401 [DEBUG] [Thread-124838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:05.401 [DEBUG] [Thread-124838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:05.401 [DEBUG] [Thread-124838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:49:05.442 [DEBUG] [Thread-124838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:05.442 [DEBUG] [Thread-124838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:05.443 [DEBUG] [Thread-124838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:05.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:05.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:49:05.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:49:05.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:49:05.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:05.460 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:49:05.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:05.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:05.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450084 -999.00  +19.00  25.36     31   +1.70 1 1 1 1 1   888    0 19.51 103.79 ----- 19.0 25.4 209.0 29.7 25.4 -27.6 24.3 -25.7 24.2 -26.7 25.2 -27.8
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450084
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:49:05.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:48:37', tmtdew=19.67, humidity=26.33, cloud=0.0, wind=23.7, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:48:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:49:05.462 [DEBUG] [Thread-124838] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49: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-28T12:49:05.549 [DEBUG] [Thread-124841] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-28T12:49:05.549 [DEBUG] [Thread-124841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:05.569 [DEBUG] [Thread-124841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:49:05.569 [INFO] [Thread-124841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:49:05.576 [DEBUG] [Thread-124841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:05.576 [DEBUG] [Thread-124841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:49:05.576 [DEBUG] [Thread-124841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] Compression: none
2025-09-28T12:49:05.577 [DEBUG] [Thread-124841] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:05.641 [DEBUG] [Thread-124841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:05.641 [DEBUG] [Thread-124841] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:05.641 [DEBUG] [Thread-124841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:49:05.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:49:05.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:05.696 [DEBUG] [Thread-124841] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:05.696 [DEBUG] [Thread-124841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:05.696 [DEBUG] [Thread-124841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:05.696 [DEBUG] [Thread-124841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:49:05.696 [DEBUG] [Thread-124841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:05.710 [INFO] [Thread-124841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:05.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-28T12:49:05.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:06.707 [DEBUG] [Thread-124841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:06.707 [DEBUG] [Thread-124841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:06.755 [DEBUG] [Thread-124841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:06.755 [DEBUG] [Thread-124841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:06.763 [DEBUG] [Thread-124841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:06.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:06.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')
2025-09-28T12:49:06.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-28T12:49:06.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:06.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:06.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:06.797 [DEBUG] [Thread-124841] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:10.194 [DEBUG] [Thread-124843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:12.197 [DEBUG] [Thread-124844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:16.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:49:16.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:49:16.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-28T12:49:17.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 49, 9), 20.19, 25.42, 0.0, 23.87, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:49:17.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:49:09
2025-09-28T12:49:17.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:49:17.656 [DEBUG] [Thread-124845] [transport.py] [_log()] starting thread (client mode): 0x2e349990
2025-09-28T12:49:17.656 [DEBUG] [Thread-124845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:17.678 [DEBUG] [Thread-124845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:49:17.678 [INFO] [Thread-124845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:49:17.681 [DEBUG] [Thread-124845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:17.682 [DEBUG] [Thread-124845] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] Compression: none
2025-09-28T12:49:17.683 [DEBUG] [Thread-124845] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:17.701 [DEBUG] [Thread-124845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:17.702 [DEBUG] [Thread-124845] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:17.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:49:17.704 [DEBUG] [Thread-124845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:49:17.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:17.706 [DEBUG] [Thread-124845] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:17.706 [DEBUG] [Thread-124845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:17.706 [DEBUG] [Thread-124845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:17.706 [DEBUG] [Thread-124845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:49:17.706 [DEBUG] [Thread-124845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:17.742 [INFO] [Thread-124845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:17.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:18.333 [DEBUG] [Thread-124845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:18.333 [DEBUG] [Thread-124845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:18.333 [DEBUG] [Thread-124845] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:49:18.374 [DEBUG] [Thread-124845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:18.374 [DEBUG] [Thread-124845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:18.377 [DEBUG] [Thread-124845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:18.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:18.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:49:18.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:49:18.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:49:18.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:18.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:49:18.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:18.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450779 -999.00  +18.50   8.94     32   +1.80 1 1 1 1 1   888    0 19.50 94.12 ----- 15.2 8.9 192.2 18.5 25.2 -27.5 24.1 -29.5 24.1 -25.4 25.2 -25.9
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450779
2025-09-28T12:49:18.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:49:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:49:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:49:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:49:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:49:18.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:49:09', tmtdew=20.19, humidity=25.42, cloud=0.0, wind=23.87, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:49:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:49:18.401 [DEBUG] [Thread-124845] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:18.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-28T12:49:18.504 [DEBUG] [Thread-124848] [transport.py] [_log()] starting thread (client mode): 0x2e3fa0b0
2025-09-28T12:49:18.504 [DEBUG] [Thread-124848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:18.519 [DEBUG] [Thread-124848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:49:18.520 [INFO] [Thread-124848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:49:18.527 [DEBUG] [Thread-124848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:18.527 [DEBUG] [Thread-124848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] Compression: none
2025-09-28T12:49:18.528 [DEBUG] [Thread-124848] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:18.583 [DEBUG] [Thread-124848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:18.584 [DEBUG] [Thread-124848] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:18.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:49:18.585 [DEBUG] [Thread-124848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:49:18.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:18.640 [DEBUG] [Thread-124848] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:18.641 [DEBUG] [Thread-124848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:18.641 [DEBUG] [Thread-124848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:18.641 [DEBUG] [Thread-124848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:49:18.641 [DEBUG] [Thread-124848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:18.661 [INFO] [Thread-124848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:18.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:49:18.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:19.628 [DEBUG] [Thread-124848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:19.628 [DEBUG] [Thread-124848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:19.675 [DEBUG] [Thread-124848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:19.675 [DEBUG] [Thread-124848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:19.684 [DEBUG] [Thread-124848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:19.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:19.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-28T12:49:19.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-28T12:49:19.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:19.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:19.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:19.719 [DEBUG] [Thread-124848] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:27.227 [DEBUG] [Thread-124850 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:29.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:49:29.722 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:49:29.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-28T12:49:30.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 49, 9), 20.19, 25.42, 0.0, 23.87, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:49:30.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:49:09
2025-09-28T12:49:30.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:49:30.580 [DEBUG] [Thread-124851] [transport.py] [_log()] starting thread (client mode): 0x2e3c1a20
2025-09-28T12:49:30.580 [DEBUG] [Thread-124851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:30.601 [DEBUG] [Thread-124851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:49:30.601 [INFO] [Thread-124851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:30.604 [DEBUG] [Thread-124851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] Compression: none
2025-09-28T12:49:30.605 [DEBUG] [Thread-124851] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:30.624 [DEBUG] [Thread-124851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:30.625 [DEBUG] [Thread-124851] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:30.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:49:30.626 [DEBUG] [Thread-124851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:49:30.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:30.628 [DEBUG] [Thread-124851] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:30.628 [DEBUG] [Thread-124851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:30.628 [DEBUG] [Thread-124851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:30.628 [DEBUG] [Thread-124851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:49:30.628 [DEBUG] [Thread-124851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:30.664 [INFO] [Thread-124851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:30.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:31.291 [DEBUG] [Thread-124851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:31.291 [DEBUG] [Thread-124851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:31.291 [DEBUG] [Thread-124851] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:49:31.332 [DEBUG] [Thread-124851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:31.332 [DEBUG] [Thread-124851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:31.335 [DEBUG] [Thread-124851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:31.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:31.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:49:31.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:49:31.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:49:31.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:31.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:49:31.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:31.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:49:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450779 -999.00  +18.50   8.94     32   +1.80 1 1 1 1 1   888    0 19.50 94.12 ----- 15.2 8.9 192.2 18.5 25.2 -27.5 24.1 -29.5 24.1 -25.4 25.2 -25.9
2025-09-28T12:49:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:49:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:49:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450779
2025-09-28T12:49:31.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:49:31.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:49:31.365 [DEBUG] [Thread-124851] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:31.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:49:31.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:49:31.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:49:31.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:49:09', tmtdew=20.19, humidity=25.42, cloud=0.0, wind=23.87, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:49:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:49:31.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-28T12:49:31.463 [DEBUG] [Thread-124854] [transport.py] [_log()] starting thread (client mode): 0x2e3c02b0
2025-09-28T12:49:31.463 [DEBUG] [Thread-124854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:31.478 [DEBUG] [Thread-124854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:49:31.478 [INFO] [Thread-124854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:31.486 [DEBUG] [Thread-124854] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] Compression: none
2025-09-28T12:49:31.487 [DEBUG] [Thread-124854] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:31.544 [DEBUG] [Thread-124854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:31.545 [DEBUG] [Thread-124854] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:31.545 [DEBUG] [Thread-124854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:49:31.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:49:31.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:31.601 [DEBUG] [Thread-124854] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:31.601 [DEBUG] [Thread-124854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:31.601 [DEBUG] [Thread-124854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:31.601 [DEBUG] [Thread-124854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:49:31.601 [DEBUG] [Thread-124854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:31.620 [INFO] [Thread-124854] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:31.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-28T12:49:31.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:32.568 [DEBUG] [Thread-124854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:32.569 [DEBUG] [Thread-124854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:32.616 [DEBUG] [Thread-124854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:32.616 [DEBUG] [Thread-124854] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:32.625 [DEBUG] [Thread-124854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:32.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:32.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-28T12:49:32.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') -> 00000000
2025-09-28T12:49:32.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:32.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:32.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:32.659 [DEBUG] [Thread-124854] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:42.274 [DEBUG] [Thread-124856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:42.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:49:42.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:49: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-28T12:49:43.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 49, 9), 20.19, 25.42, 0.0, 23.87, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:49:43.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:49:09
2025-09-28T12:49:43.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:49:43.571 [DEBUG] [Thread-124857] [transport.py] [_log()] starting thread (client mode): 0x30ddcb80
2025-09-28T12:49:43.571 [DEBUG] [Thread-124857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:43.592 [DEBUG] [Thread-124857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:49:43.592 [INFO] [Thread-124857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:49:43.595 [DEBUG] [Thread-124857] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:43.595 [DEBUG] [Thread-124857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:49:43.595 [DEBUG] [Thread-124857] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] Compression: none
2025-09-28T12:49:43.596 [DEBUG] [Thread-124857] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:43.616 [DEBUG] [Thread-124857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:43.616 [DEBUG] [Thread-124857] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:43.616 [DEBUG] [Thread-124857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:49:43.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:49:43.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:43.617 [DEBUG] [Thread-124857] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:43.617 [DEBUG] [Thread-124857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:43.617 [DEBUG] [Thread-124857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:43.617 [DEBUG] [Thread-124857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:49:43.617 [DEBUG] [Thread-124857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:43.626 [INFO] [Thread-124857] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:43.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:44.236 [DEBUG] [Thread-124857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:44.237 [DEBUG] [Thread-124857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:44.237 [DEBUG] [Thread-124857] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:49:44.277 [DEBUG] [Thread-124857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:44.278 [DEBUG] [Thread-124857] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:44.281 [DEBUG] [Thread-124857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:44.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:44.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:49:44.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:49:44.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:49:44.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:44.304 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:49:44.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:44.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:49:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.450779 -999.00  +18.50   8.94     32   +1.80 1 1 1 1 1   888    0 19.50 94.12 ----- 15.2 8.9 192.2 18.5 25.2 -27.5 24.1 -29.5 24.1 -25.4 25.2 -25.9
2025-09-28T12:49:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:49:44.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:49:44.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.450779
2025-09-28T12:49:44.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:49:44.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:49:44.307 [DEBUG] [Thread-124857] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:44.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:49:44.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:49:44.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:49:44.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:49:09', tmtdew=20.19, humidity=25.42, cloud=0.0, wind=23.87, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:49:07.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:49:44.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-28T12:49:44.402 [DEBUG] [Thread-124860] [transport.py] [_log()] starting thread (client mode): 0x2b9ac9a0
2025-09-28T12:49:44.402 [DEBUG] [Thread-124860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:44.416 [DEBUG] [Thread-124860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:49:44.417 [INFO] [Thread-124860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:44.424 [DEBUG] [Thread-124860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] Compression: none
2025-09-28T12:49:44.425 [DEBUG] [Thread-124860] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:44.480 [DEBUG] [Thread-124860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:44.480 [DEBUG] [Thread-124860] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:44.480 [DEBUG] [Thread-124860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:49:44.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:49:44.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:44.536 [DEBUG] [Thread-124860] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:44.536 [DEBUG] [Thread-124860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:44.536 [DEBUG] [Thread-124860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:44.536 [DEBUG] [Thread-124860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:49:44.536 [DEBUG] [Thread-124860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:44.550 [INFO] [Thread-124860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:44.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-28T12:49:44.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:45.496 [DEBUG] [Thread-124860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:45.497 [DEBUG] [Thread-124860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:45.544 [DEBUG] [Thread-124860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:45.544 [DEBUG] [Thread-124860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:45.553 [DEBUG] [Thread-124860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:45.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:45.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-28T12:49:45.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') -> 00000000
2025-09-28T12:49:45.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:45.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:45.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:45.588 [DEBUG] [Thread-124860] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:49.268 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:49.270 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:55.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:49:55.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:49:55.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-28T12:49:56.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 49, 41), 19.54, 26.39, 0.0, 21.83, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:49:56.188 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:49:41
2025-09-28T12:49:56.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:49:56.445 [DEBUG] [Thread-124862] [transport.py] [_log()] starting thread (client mode): 0x2e3c1810
2025-09-28T12:49:56.445 [DEBUG] [Thread-124862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:56.465 [DEBUG] [Thread-124862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:49:56.465 [INFO] [Thread-124862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:56.469 [DEBUG] [Thread-124862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] Compression: none
2025-09-28T12:49:56.470 [DEBUG] [Thread-124862] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:56.487 [DEBUG] [Thread-124862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:56.487 [DEBUG] [Thread-124862] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:56.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:49:56.488 [DEBUG] [Thread-124862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:49:56.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:56.490 [DEBUG] [Thread-124862] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:56.490 [DEBUG] [Thread-124862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:56.490 [DEBUG] [Thread-124862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:56.491 [DEBUG] [Thread-124862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:49:56.491 [DEBUG] [Thread-124862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:56.515 [INFO] [Thread-124862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:56.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:57.116 [DEBUG] [Thread-124862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:57.116 [DEBUG] [Thread-124862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:57.116 [DEBUG] [Thread-124862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:49:57.158 [DEBUG] [Thread-124862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:57.158 [DEBUG] [Thread-124862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:57.160 [DEBUG] [Thread-124862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:57.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:57.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:49:57.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:49:57.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:49:57.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:57.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:49:57.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451126 -999.00  +18.60   5.13     33   +2.00 1 1 1 1 1   888    0 19.30 87.31 ----- 3.9 5.1 129.0 23.3 25.4 -26.2 24.2 -24.8 24.2 -24.3 25.4 -24.2
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451126
2025-09-28T12:49:57.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:49:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:49:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:49:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:49:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:49:57.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:49:41', tmtdew=19.54, humidity=26.39, cloud=0.0, wind=21.83, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:49:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:49:57.179 [DEBUG] [Thread-124862] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:49:57.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-28T12:49:57.262 [DEBUG] [Thread-124865] [transport.py] [_log()] starting thread (client mode): 0x2e3fb700
2025-09-28T12:49:57.262 [DEBUG] [Thread-124865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:49:57.278 [DEBUG] [Thread-124865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:49:57.278 [INFO] [Thread-124865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:49:57.285 [DEBUG] [Thread-124865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] client lang: <none>
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] server lang: <none>
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] kex follows: False
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] Compression: none
2025-09-28T12:49:57.286 [DEBUG] [Thread-124865] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:49:57.304 [DEBUG] [Thread-124867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:49:57.345 [DEBUG] [Thread-124865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:49:57.345 [DEBUG] [Thread-124865] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:49:57.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:49:57.346 [DEBUG] [Thread-124865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:49:57.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:49:57.401 [DEBUG] [Thread-124865] [transport.py] [_log()] userauth is OK
2025-09-28T12:49:57.401 [DEBUG] [Thread-124865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:49:57.402 [DEBUG] [Thread-124865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:49:57.402 [DEBUG] [Thread-124865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:49:57.402 [DEBUG] [Thread-124865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:49:57.421 [INFO] [Thread-124865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:49:57.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-28T12:49:57.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:49:58.391 [DEBUG] [Thread-124865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:49:58.391 [DEBUG] [Thread-124865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:49:58.439 [DEBUG] [Thread-124865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:49:58.439 [DEBUG] [Thread-124865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:49:58.448 [DEBUG] [Thread-124865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:49:58.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:49:58.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-28T12:49:58.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-28T12:49:58.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:49:58.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:49:58.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:49:58.486 [DEBUG] [Thread-124865] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:08.485 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:50:08.485 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:50: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-28T12:50:09.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 49, 41), 19.54, 26.39, 0.0, 21.83, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:50:09.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:49:41
2025-09-28T12:50:09.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:50:09.337 [DEBUG] [Thread-124868] [transport.py] [_log()] starting thread (client mode): 0x2e3fa890
2025-09-28T12:50:09.337 [DEBUG] [Thread-124868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:09.356 [DEBUG] [Thread-124868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:50:09.356 [INFO] [Thread-124868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:50:09.359 [DEBUG] [Thread-124868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:09.360 [DEBUG] [Thread-124868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:09.361 [DEBUG] [Thread-124868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:09.361 [DEBUG] [Thread-124868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:09.361 [DEBUG] [Thread-124868] [transport.py] [_log()] Compression: none
2025-09-28T12:50:09.361 [DEBUG] [Thread-124868] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:09.379 [DEBUG] [Thread-124868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:09.380 [DEBUG] [Thread-124868] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:09.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:50:09.381 [DEBUG] [Thread-124868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:50:09.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:09.383 [DEBUG] [Thread-124868] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:09.383 [DEBUG] [Thread-124868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:09.383 [DEBUG] [Thread-124868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:09.383 [DEBUG] [Thread-124868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:50:09.384 [DEBUG] [Thread-124868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:09.409 [INFO] [Thread-124868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:09.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:10.253 [DEBUG] [Thread-124870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:12.351 [DEBUG] [Thread-124871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:13.829 [DEBUG] [Thread-124868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:13.830 [DEBUG] [Thread-124868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:13.830 [DEBUG] [Thread-124868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:50:13.870 [DEBUG] [Thread-124868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:13.870 [DEBUG] [Thread-124868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:13.872 [DEBUG] [Thread-124868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:13.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:13.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:50:13.886 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:50:13.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:50:13.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:13.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:50:13.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451126 -999.00  +18.60   5.13     33   +2.00 1 1 1 1 1   888    0 19.30 87.31 ----- 3.9 5.1 129.0 23.3 25.4 -26.2 24.2 -24.8 24.2 -24.3 25.4 -24.2
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451126
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:50:13.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:49:41', tmtdew=19.54, humidity=26.39, cloud=0.0, wind=21.83, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:49:37.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:50:13.932 [DEBUG] [Thread-124868] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:14.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-28T12:50:14.017 [DEBUG] [Thread-124873] [transport.py] [_log()] starting thread (client mode): 0x2e3fbac0
2025-09-28T12:50:14.017 [DEBUG] [Thread-124873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:14.033 [DEBUG] [Thread-124873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:50:14.033 [INFO] [Thread-124873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:50:14.040 [DEBUG] [Thread-124873] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:14.040 [DEBUG] [Thread-124873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:50:14.040 [DEBUG] [Thread-124873] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:14.040 [DEBUG] [Thread-124873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] Compression: none
2025-09-28T12:50:14.041 [DEBUG] [Thread-124873] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:14.095 [DEBUG] [Thread-124873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:14.096 [DEBUG] [Thread-124873] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:14.096 [DEBUG] [Thread-124873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:50:14.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:50:14.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:14.153 [DEBUG] [Thread-124873] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:14.153 [DEBUG] [Thread-124873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:14.153 [DEBUG] [Thread-124873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:14.153 [DEBUG] [Thread-124873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:50:14.153 [DEBUG] [Thread-124873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:14.168 [INFO] [Thread-124873] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:14.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:50:14.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:15.133 [DEBUG] [Thread-124873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:15.133 [DEBUG] [Thread-124873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:15.181 [DEBUG] [Thread-124873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:15.181 [DEBUG] [Thread-124873] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:15.190 [DEBUG] [Thread-124873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:15.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:15.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-28T12:50:15.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-28T12:50:15.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:15.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:15.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:15.222 [DEBUG] [Thread-124873] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:25.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:50:25.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:50:25.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-28T12:50:25.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 50, 13), 19.45, 26.53, 0.0, 19.32, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:50:25.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:50:13
2025-09-28T12:50:25.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:50:26.072 [DEBUG] [Thread-124875] [transport.py] [_log()] starting thread (client mode): 0x2b984a30
2025-09-28T12:50:26.072 [DEBUG] [Thread-124875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:26.094 [DEBUG] [Thread-124875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:50:26.094 [INFO] [Thread-124875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:50:26.097 [DEBUG] [Thread-124875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] Compression: none
2025-09-28T12:50:26.098 [DEBUG] [Thread-124875] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:26.117 [DEBUG] [Thread-124875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:26.118 [DEBUG] [Thread-124875] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:26.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:50:26.118 [DEBUG] [Thread-124875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:50:26.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:26.120 [DEBUG] [Thread-124875] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:26.121 [DEBUG] [Thread-124875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:26.121 [DEBUG] [Thread-124875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:26.121 [DEBUG] [Thread-124875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:50:26.121 [DEBUG] [Thread-124875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:26.145 [INFO] [Thread-124875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:26.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:26.767 [DEBUG] [Thread-124875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:26.767 [DEBUG] [Thread-124875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:26.767 [DEBUG] [Thread-124875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:50:26.808 [DEBUG] [Thread-124875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:26.808 [DEBUG] [Thread-124875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:26.811 [DEBUG] [Thread-124875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:26.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:26.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:50:26.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:50:26.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:50:26.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:26.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:50:26.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:26.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:50:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451473 -999.00  +18.90  18.71     33   +2.40 1 1 1 1 1   888    0 18.82 71.74 ----- 18.3 18.7 247.6 36.6 25.3 -26.0 24.2 -26.0 24.1 -27.1 25.4 -25.9
2025-09-28T12:50:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:50:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:50:26.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451473
2025-09-28T12:50:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:50:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:50:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:50:26.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:50:26.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:50:26.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:50:13', tmtdew=19.45, humidity=26.53, cloud=0.0, wind=19.32, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:50:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:50:26.838 [DEBUG] [Thread-124875] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:26.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:50:26.933 [DEBUG] [Thread-124878] [transport.py] [_log()] starting thread (client mode): 0x2b9c2ec0
2025-09-28T12:50:26.934 [DEBUG] [Thread-124878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:26.949 [DEBUG] [Thread-124878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:50:26.949 [INFO] [Thread-124878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:50:26.960 [DEBUG] [Thread-124878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:26.961 [DEBUG] [Thread-124878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:26.962 [DEBUG] [Thread-124878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:26.962 [DEBUG] [Thread-124878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:26.962 [DEBUG] [Thread-124878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:26.962 [DEBUG] [Thread-124878] [transport.py] [_log()] Compression: none
2025-09-28T12:50:26.962 [DEBUG] [Thread-124878] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:27.018 [DEBUG] [Thread-124878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:27.018 [DEBUG] [Thread-124878] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:27.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:50:27.019 [DEBUG] [Thread-124878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:50:27.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:27.078 [DEBUG] [Thread-124878] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:27.078 [DEBUG] [Thread-124878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:27.078 [DEBUG] [Thread-124878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:27.078 [DEBUG] [Thread-124878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:50:27.078 [DEBUG] [Thread-124878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:27.100 [INFO] [Thread-124878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:27.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-28T12:50:27.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:27.380 [DEBUG] [Thread-124880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:28.097 [DEBUG] [Thread-124878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:28.098 [DEBUG] [Thread-124878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:28.145 [DEBUG] [Thread-124878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:28.145 [DEBUG] [Thread-124878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:28.154 [DEBUG] [Thread-124878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:28.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:28.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-28T12:50:28.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-28T12:50:28.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:28.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:28.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:28.189 [DEBUG] [Thread-124878] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:38.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:50:38.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:50:38.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-28T12:50:38.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 50, 13), 19.45, 26.53, 0.0, 19.32, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:50:38.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:50:13
2025-09-28T12:50:38.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:50:39.042 [DEBUG] [Thread-124881] [transport.py] [_log()] starting thread (client mode): 0x2b9846d0
2025-09-28T12:50:39.042 [DEBUG] [Thread-124881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:39.063 [DEBUG] [Thread-124881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:50:39.063 [INFO] [Thread-124881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:39.067 [DEBUG] [Thread-124881] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] Compression: none
2025-09-28T12:50:39.068 [DEBUG] [Thread-124881] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:39.087 [DEBUG] [Thread-124881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:39.087 [DEBUG] [Thread-124881] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:39.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:50:39.088 [DEBUG] [Thread-124881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:50:39.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:39.090 [DEBUG] [Thread-124881] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:39.090 [DEBUG] [Thread-124881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:39.090 [DEBUG] [Thread-124881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:39.090 [DEBUG] [Thread-124881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:50:39.090 [DEBUG] [Thread-124881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:39.113 [INFO] [Thread-124881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:39.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:40.957 [DEBUG] [Thread-124881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:40.957 [DEBUG] [Thread-124881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:40.957 [DEBUG] [Thread-124881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:50:40.998 [DEBUG] [Thread-124881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:40.998 [DEBUG] [Thread-124881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:41.002 [DEBUG] [Thread-124881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:41.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:41.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:50:41.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:50:41.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:50:41.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:41.026 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:50:41.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:41.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:41.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:50:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451473 -999.00  +18.90  18.71     33   +2.40 1 1 1 1 1   888    0 18.82 71.74 ----- 18.3 18.7 247.6 36.6 25.3 -26.0 24.2 -26.0 24.1 -27.1 25.4 -25.9
2025-09-28T12:50:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:50:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:50:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451473
2025-09-28T12:50:41.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:50:41.027 [DEBUG] [Thread-124881] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:41.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:50:41.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:50:41.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:50:41.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:50:41.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:50:13', tmtdew=19.45, humidity=26.53, cloud=0.0, wind=19.32, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:50:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:50:41.109 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:50:41.121 [DEBUG] [Thread-124884] [transport.py] [_log()] starting thread (client mode): 0x2b9848b0
2025-09-28T12:50:41.121 [DEBUG] [Thread-124884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:41.135 [DEBUG] [Thread-124884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:50:41.135 [INFO] [Thread-124884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] Compression: none
2025-09-28T12:50:41.143 [DEBUG] [Thread-124884] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:41.200 [DEBUG] [Thread-124884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:41.200 [DEBUG] [Thread-124884] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:41.200 [DEBUG] [Thread-124884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:50:41.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:50:41.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:41.257 [DEBUG] [Thread-124884] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:41.257 [DEBUG] [Thread-124884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:41.257 [DEBUG] [Thread-124884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:41.257 [DEBUG] [Thread-124884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:50:41.257 [DEBUG] [Thread-124884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:41.271 [INFO] [Thread-124884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:41.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-28T12:50:41.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:42.245 [DEBUG] [Thread-124884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:42.245 [DEBUG] [Thread-124884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:42.293 [DEBUG] [Thread-124884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:42.294 [DEBUG] [Thread-124884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:42.302 [DEBUG] [Thread-124884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:42.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:42.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-28T12:50:42.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-28T12:50:42.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:42.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:42.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:42.337 [DEBUG] [Thread-124884] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:42.423 [DEBUG] [Thread-124886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:49.411 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:49.413 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:50:52.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:50:52.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:50:52.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-28T12:50:52.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 50, 45), 19.47, 27.03, 0.0, 21.39, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:50:52.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:50:45
2025-09-28T12:50:53.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:50:53.243 [DEBUG] [Thread-124887] [transport.py] [_log()] starting thread (client mode): 0x2e38eb60
2025-09-28T12:50:53.243 [DEBUG] [Thread-124887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:53.253 [DEBUG] [Thread-124887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:50:53.253 [INFO] [Thread-124887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] Compression: none
2025-09-28T12:50:53.255 [DEBUG] [Thread-124887] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:53.263 [DEBUG] [Thread-124887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:53.263 [DEBUG] [Thread-124887] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:53.263 [DEBUG] [Thread-124887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:50:53.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:50:53.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:53.264 [DEBUG] [Thread-124887] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:53.264 [DEBUG] [Thread-124887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:53.264 [DEBUG] [Thread-124887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:53.264 [DEBUG] [Thread-124887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:50:53.264 [DEBUG] [Thread-124887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:53.278 [INFO] [Thread-124887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:53.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:53.899 [DEBUG] [Thread-124887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:53.899 [DEBUG] [Thread-124887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:53.899 [DEBUG] [Thread-124887] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:50:53.940 [DEBUG] [Thread-124887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:53.940 [DEBUG] [Thread-124887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:53.944 [DEBUG] [Thread-124887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:53.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:53.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:50:53.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:50:53.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:50:53.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:53.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:50:53.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451820 -999.00  +18.80   9.42     33   +2.20 1 1 1 1 1   888    0 18.61 61.22 ----- 7.8 9.4 237.6 24.7 25.4 -26.6 24.3 -26.3 24.2 -24.6 25.3 -26.7
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451820
2025-09-28T12:50:53.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:50:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:50:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:50:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:50:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:50:53.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:50:45', tmtdew=19.47, humidity=27.03, cloud=0.0, wind=21.39, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:50:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:50:53.967 [DEBUG] [Thread-124887] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:54.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-28T12:50:54.051 [DEBUG] [Thread-124890] [transport.py] [_log()] starting thread (client mode): 0x2e38f760
2025-09-28T12:50:54.051 [DEBUG] [Thread-124890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:50:54.065 [DEBUG] [Thread-124890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:50:54.065 [INFO] [Thread-124890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] client lang: <none>
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] server lang: <none>
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] kex follows: False
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:50:54.073 [DEBUG] [Thread-124890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:50:54.074 [DEBUG] [Thread-124890] [transport.py] [_log()] Compression: none
2025-09-28T12:50:54.074 [DEBUG] [Thread-124890] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:50:54.128 [DEBUG] [Thread-124890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:50:54.128 [DEBUG] [Thread-124890] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:50:54.128 [DEBUG] [Thread-124890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:50:54.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:50:54.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:50:54.186 [DEBUG] [Thread-124890] [transport.py] [_log()] userauth is OK
2025-09-28T12:50:54.186 [DEBUG] [Thread-124890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:50:54.186 [DEBUG] [Thread-124890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:50:54.186 [DEBUG] [Thread-124890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:50:54.186 [DEBUG] [Thread-124890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:50:54.200 [INFO] [Thread-124890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:50:54.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-28T12:50:54.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:50:55.224 [DEBUG] [Thread-124890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:50:55.224 [DEBUG] [Thread-124890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:50:55.272 [DEBUG] [Thread-124890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:50:55.272 [DEBUG] [Thread-124890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:50:55.281 [DEBUG] [Thread-124890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:50:55.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:50:55.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T12:50:55.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:50:55.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:50:55.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:50:55.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:50:55.314 [DEBUG] [Thread-124890] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:50:57.452 [DEBUG] [Thread-124892 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:05.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:51:05.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:51:05.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-28T12:51:05.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 50, 45), 19.47, 27.03, 0.0, 21.39, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:51:05.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:50:45
2025-09-28T12:51:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:51:06.185 [DEBUG] [Thread-124893] [transport.py] [_log()] starting thread (client mode): 0x2b9845e0
2025-09-28T12:51:06.186 [DEBUG] [Thread-124893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:06.205 [DEBUG] [Thread-124893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:51:06.205 [INFO] [Thread-124893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:51:06.206 [DEBUG] [Thread-124893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:06.207 [DEBUG] [Thread-124893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:06.208 [DEBUG] [Thread-124893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:06.208 [DEBUG] [Thread-124893] [transport.py] [_log()] Compression: none
2025-09-28T12:51:06.208 [DEBUG] [Thread-124893] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:06.220 [DEBUG] [Thread-124893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:06.221 [DEBUG] [Thread-124893] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:06.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:51:06.222 [DEBUG] [Thread-124893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:51:06.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:06.223 [DEBUG] [Thread-124893] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:06.224 [DEBUG] [Thread-124893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:06.224 [DEBUG] [Thread-124893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:06.224 [DEBUG] [Thread-124893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:51:06.224 [DEBUG] [Thread-124893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:06.241 [INFO] [Thread-124893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:06.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:06.812 [DEBUG] [Thread-124893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:06.812 [DEBUG] [Thread-124893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:06.813 [DEBUG] [Thread-124893] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:51:06.854 [DEBUG] [Thread-124893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:06.854 [DEBUG] [Thread-124893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:06.857 [DEBUG] [Thread-124893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:06.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:06.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:51:06.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:51:06.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:51:06.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:06.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:51:06.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:06.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:51:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451820 -999.00  +18.80   9.42     33   +2.20 1 1 1 1 1   888    0 18.61 61.22 ----- 7.8 9.4 237.6 24.7 25.4 -26.6 24.3 -26.3 24.2 -24.6 25.3 -26.7
2025-09-28T12:51:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:51:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:51:06.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451820
2025-09-28T12:51:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:51:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:51:06.883 [DEBUG] [Thread-124893] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:06.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:51:06.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:51:06.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:51:06.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:50:45', tmtdew=19.47, humidity=27.03, cloud=0.0, wind=21.39, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:50:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:51:06.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-28T12:51:06.991 [DEBUG] [Thread-124896] [transport.py] [_log()] starting thread (client mode): 0x2b984850
2025-09-28T12:51:06.991 [DEBUG] [Thread-124896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:07.010 [DEBUG] [Thread-124896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:51:07.010 [INFO] [Thread-124896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:51:07.017 [DEBUG] [Thread-124896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:07.018 [DEBUG] [Thread-124896] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] Compression: none
2025-09-28T12:51:07.019 [DEBUG] [Thread-124896] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:07.078 [DEBUG] [Thread-124896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:07.078 [DEBUG] [Thread-124896] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:07.079 [DEBUG] [Thread-124896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:51:07.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:51:07.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:07.133 [DEBUG] [Thread-124896] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:07.133 [DEBUG] [Thread-124896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:07.134 [DEBUG] [Thread-124896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:07.134 [DEBUG] [Thread-124896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:51:07.134 [DEBUG] [Thread-124896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:07.152 [INFO] [Thread-124896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:07.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-28T12:51:07.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:08.208 [DEBUG] [Thread-124896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:08.208 [DEBUG] [Thread-124896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:08.256 [DEBUG] [Thread-124896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:08.256 [DEBUG] [Thread-124896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:08.265 [DEBUG] [Thread-124896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:08.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:08.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-28T12:51:08.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-28T12:51:08.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:08.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:08.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:08.299 [DEBUG] [Thread-124896] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:10.311 [DEBUG] [Thread-124898 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:12.503 [DEBUG] [Thread-124899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:18.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:51:18.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:51:18.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-28T12:51:18.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 50, 45), 19.47, 27.03, 0.0, 21.39, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:51:18.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:50:45
2025-09-28T12:51:19.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:51:19.203 [DEBUG] [Thread-124900] [transport.py] [_log()] starting thread (client mode): 0x2b9c3c70
2025-09-28T12:51:19.203 [DEBUG] [Thread-124900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:19.223 [DEBUG] [Thread-124900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:51:19.223 [INFO] [Thread-124900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:51:19.224 [DEBUG] [Thread-124900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:19.224 [DEBUG] [Thread-124900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:51:19.224 [DEBUG] [Thread-124900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] Compression: none
2025-09-28T12:51:19.225 [DEBUG] [Thread-124900] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:19.237 [DEBUG] [Thread-124900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:19.237 [DEBUG] [Thread-124900] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:19.237 [DEBUG] [Thread-124900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:51:19.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:51:19.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:19.238 [DEBUG] [Thread-124900] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:19.238 [DEBUG] [Thread-124900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:19.238 [DEBUG] [Thread-124900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:19.238 [DEBUG] [Thread-124900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:51:19.238 [DEBUG] [Thread-124900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:19.264 [INFO] [Thread-124900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:19.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:19.999 [DEBUG] [Thread-124900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:20.000 [DEBUG] [Thread-124900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:20.000 [DEBUG] [Thread-124900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:51:20.040 [DEBUG] [Thread-124900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:20.041 [DEBUG] [Thread-124900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:20.043 [DEBUG] [Thread-124900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:20.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:20.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:51:20.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:51:20.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:51:20.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:20.066 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:51:20.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.451820 -999.00  +18.80   9.42     33   +2.20 1 1 1 1 1   888    0 18.61 61.22 ----- 7.8 9.4 237.6 24.7 25.4 -26.6 24.3 -26.3 24.2 -24.6 25.3 -26.7
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:51:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.451820
2025-09-28T12:51:20.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:51:20.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:51:20.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:51:20.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:51:20.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:51:20.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:50:45', tmtdew=19.47, humidity=27.03, cloud=0.0, wind=21.39, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:50:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:51:20.069 [DEBUG] [Thread-124900] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:20.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-28T12:51:20.163 [DEBUG] [Thread-124903] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a90
2025-09-28T12:51:20.163 [DEBUG] [Thread-124903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:20.178 [DEBUG] [Thread-124903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:51:20.178 [INFO] [Thread-124903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:51:20.185 [DEBUG] [Thread-124903] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] Compression: none
2025-09-28T12:51:20.186 [DEBUG] [Thread-124903] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:20.246 [DEBUG] [Thread-124903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:20.247 [DEBUG] [Thread-124903] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:20.247 [DEBUG] [Thread-124903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:51:20.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:51:20.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:20.302 [DEBUG] [Thread-124903] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:20.302 [DEBUG] [Thread-124903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:20.302 [DEBUG] [Thread-124903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:20.302 [DEBUG] [Thread-124903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:51:20.302 [DEBUG] [Thread-124903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:20.324 [INFO] [Thread-124903] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:20.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-28T12:51:20.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:21.269 [DEBUG] [Thread-124903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:21.269 [DEBUG] [Thread-124903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:21.317 [DEBUG] [Thread-124903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:21.317 [DEBUG] [Thread-124903] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:21.326 [DEBUG] [Thread-124903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:21.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:21.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')
2025-09-28T12:51:21.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') -> 00000000
2025-09-28T12:51:21.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:21.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:21.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:21.361 [DEBUG] [Thread-124903] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:27.532 [DEBUG] [Thread-124905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:31.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:51:31.354 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:51:31.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-28T12:51:31.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 51, 17), 19.63, 26.78, 0.0, 21.17, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:51:31.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:51:17
2025-09-28T12:51:32.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:51:32.215 [DEBUG] [Thread-124906] [transport.py] [_log()] starting thread (client mode): 0x2b9c3760
2025-09-28T12:51:32.216 [DEBUG] [Thread-124906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:32.236 [DEBUG] [Thread-124906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:51:32.236 [INFO] [Thread-124906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] Compression: none
2025-09-28T12:51:32.239 [DEBUG] [Thread-124906] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:32.256 [DEBUG] [Thread-124906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:32.256 [DEBUG] [Thread-124906] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:51:32.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:51:32.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:51:32.257 [DEBUG] [Thread-124906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:32.266 [INFO] [Thread-124906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:32.267 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:32.864 [DEBUG] [Thread-124906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:32.865 [DEBUG] [Thread-124906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:32.865 [DEBUG] [Thread-124906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:51:32.906 [DEBUG] [Thread-124906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:32.906 [DEBUG] [Thread-124906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:32.907 [DEBUG] [Thread-124906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:32.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:32.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:51:32.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:51:32.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:51:32.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:32.918 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:51:32.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452168 -999.00  +18.40  15.68     32   +1.70 1 1 1 1 1   888    0 18.39 51.96 ----- 15.9 15.7 255.6 24.3 25.3 -26.7 24.3 -25.5 24.3 -25.1 25.2 -26.8
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452168
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:51:32.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:51:17', tmtdew=19.63, humidity=26.78, cloud=0.0, wind=21.17, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:51:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:51:32.919 [DEBUG] [Thread-124906] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:32.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-28T12:51:33.002 [DEBUG] [Thread-124909] [transport.py] [_log()] starting thread (client mode): 0x2b9dd120
2025-09-28T12:51:33.002 [DEBUG] [Thread-124909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:33.017 [DEBUG] [Thread-124909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:51:33.017 [INFO] [Thread-124909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:33.025 [DEBUG] [Thread-124909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:33.026 [DEBUG] [Thread-124909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:33.026 [DEBUG] [Thread-124909] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:33.026 [DEBUG] [Thread-124909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:33.026 [DEBUG] [Thread-124909] [transport.py] [_log()] Compression: none
2025-09-28T12:51:33.026 [DEBUG] [Thread-124909] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:33.081 [DEBUG] [Thread-124909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:33.081 [DEBUG] [Thread-124909] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:33.081 [DEBUG] [Thread-124909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:51:33.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:51:33.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:33.137 [DEBUG] [Thread-124909] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:33.138 [DEBUG] [Thread-124909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:33.138 [DEBUG] [Thread-124909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:33.138 [DEBUG] [Thread-124909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:51:33.138 [DEBUG] [Thread-124909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:33.158 [INFO] [Thread-124909] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:33.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-28T12:51:33.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:34.104 [DEBUG] [Thread-124909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:34.104 [DEBUG] [Thread-124909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:34.152 [DEBUG] [Thread-124909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:34.152 [DEBUG] [Thread-124909] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:34.165 [DEBUG] [Thread-124909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:34.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:34.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-28T12:51:34.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-28T12:51:34.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:34.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:34.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:34.200 [DEBUG] [Thread-124909] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:42.562 [DEBUG] [Thread-124911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:51:44.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:51:44.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-28T12:51:44.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 51, 17), 19.63, 26.78, 0.0, 21.17, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:51:44.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:51:17
2025-09-28T12:51:44.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:51:45.056 [DEBUG] [Thread-124912] [transport.py] [_log()] starting thread (client mode): 0x2b9ae4a0
2025-09-28T12:51:45.056 [DEBUG] [Thread-124912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:45.076 [DEBUG] [Thread-124912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:51:45.076 [INFO] [Thread-124912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:45.078 [DEBUG] [Thread-124912] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] Compression: none
2025-09-28T12:51:45.079 [DEBUG] [Thread-124912] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:45.093 [DEBUG] [Thread-124912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:45.093 [DEBUG] [Thread-124912] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:45.094 [DEBUG] [Thread-124912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:51:45.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:51:45.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:45.096 [DEBUG] [Thread-124912] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:45.097 [DEBUG] [Thread-124912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:45.097 [DEBUG] [Thread-124912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:45.097 [DEBUG] [Thread-124912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:51:45.097 [DEBUG] [Thread-124912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:45.115 [INFO] [Thread-124912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:45.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:45.892 [DEBUG] [Thread-124912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:45.893 [DEBUG] [Thread-124912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:45.893 [DEBUG] [Thread-124912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:51:45.933 [DEBUG] [Thread-124912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:45.934 [DEBUG] [Thread-124912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:45.936 [DEBUG] [Thread-124912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:45.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:45.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:51:45.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:51:45.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:51:45.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:45.960 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:51:45.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:45.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:51:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452168 -999.00  +18.40  15.68     32   +1.70 1 1 1 1 1   888    0 18.39 51.96 ----- 15.9 15.7 255.6 24.3 25.3 -26.7 24.3 -25.5 24.3 -25.1 25.2 -26.8
2025-09-28T12:51:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:51:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:51:45.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452168
2025-09-28T12:51:45.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:51:45.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:51:45.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:51:45.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:51:45.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:51:45.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:51:17', tmtdew=19.63, humidity=26.78, cloud=0.0, wind=21.17, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:51:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:51:45.963 [DEBUG] [Thread-124912] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:46.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-28T12:51:46.059 [DEBUG] [Thread-124915] [transport.py] [_log()] starting thread (client mode): 0x2e38ebc0
2025-09-28T12:51:46.059 [DEBUG] [Thread-124915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:46.074 [DEBUG] [Thread-124915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:51:46.074 [INFO] [Thread-124915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:46.082 [DEBUG] [Thread-124915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:46.083 [DEBUG] [Thread-124915] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:46.084 [DEBUG] [Thread-124915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:46.084 [DEBUG] [Thread-124915] [transport.py] [_log()] Compression: none
2025-09-28T12:51:46.084 [DEBUG] [Thread-124915] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:46.147 [DEBUG] [Thread-124915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:46.147 [DEBUG] [Thread-124915] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:46.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:51:46.148 [DEBUG] [Thread-124915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:51:46.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:46.207 [DEBUG] [Thread-124915] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:46.208 [DEBUG] [Thread-124915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:46.208 [DEBUG] [Thread-124915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:46.208 [DEBUG] [Thread-124915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:51:46.208 [DEBUG] [Thread-124915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:46.228 [INFO] [Thread-124915] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:46.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:51:46.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:47.234 [DEBUG] [Thread-124915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:47.234 [DEBUG] [Thread-124915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:47.283 [DEBUG] [Thread-124915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:47.283 [DEBUG] [Thread-124915] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:47.292 [DEBUG] [Thread-124915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:47.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:47.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-28T12:51:47.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-28T12:51:47.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:47.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:47.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:47.324 [DEBUG] [Thread-124915] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:49.554 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:49.555 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:57.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:51:57.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:51:57.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-28T12:51:57.604 [DEBUG] [Thread-124917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:51:57.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 51, 49), 19.45, 26.67, 0.0, 15.97, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:51:57.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:51:49
2025-09-28T12:51:58.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:51:58.166 [DEBUG] [Thread-124918] [transport.py] [_log()] starting thread (client mode): 0x2e38f850
2025-09-28T12:51:58.166 [DEBUG] [Thread-124918] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:58.186 [DEBUG] [Thread-124918] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:51:58.186 [INFO] [Thread-124918] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] Compression: none
2025-09-28T12:51:58.190 [DEBUG] [Thread-124918] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:58.207 [DEBUG] [Thread-124918] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:58.208 [DEBUG] [Thread-124918] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:58.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:51:58.209 [DEBUG] [Thread-124918] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:51:58.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:58.211 [DEBUG] [Thread-124918] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:58.211 [DEBUG] [Thread-124918] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:58.211 [DEBUG] [Thread-124918] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:58.211 [DEBUG] [Thread-124918] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:51:58.211 [DEBUG] [Thread-124918] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:58.236 [INFO] [Thread-124918] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:58.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:51:59.001 [DEBUG] [Thread-124918] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:51:59.002 [DEBUG] [Thread-124918] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:51:59.002 [DEBUG] [Thread-124918] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:51:59.043 [DEBUG] [Thread-124918] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:51:59.043 [DEBUG] [Thread-124918] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:51:59.045 [DEBUG] [Thread-124918] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:51:59.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:51:59.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:51:59.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:51:59.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:51:59.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:51:59.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:51:59.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:51:59.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:51:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:51:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452168 -999.00  +18.40  15.68     32   +1.70 1 1 1 1 1   888    0 18.39 51.96 ----- 15.9 15.7 255.6 24.3 25.3 -26.7 24.3 -25.5 24.3 -25.1 25.2 -26.8
2025-09-28T12:51:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:51:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:51:59.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452168
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:51:59.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:51:49', tmtdew=19.45, humidity=26.67, cloud=0.0, wind=15.97, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:51:07.315', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:51:59.072 [DEBUG] [Thread-124918] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:51:59.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-28T12:51:59.163 [DEBUG] [Thread-124921] [transport.py] [_log()] starting thread (client mode): 0x2b9c04f0
2025-09-28T12:51:59.163 [DEBUG] [Thread-124921] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:51:59.177 [DEBUG] [Thread-124921] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:51:59.177 [INFO] [Thread-124921] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] client lang: <none>
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] server lang: <none>
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] kex follows: False
2025-09-28T12:51:59.185 [DEBUG] [Thread-124921] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] Compression: none
2025-09-28T12:51:59.186 [DEBUG] [Thread-124921] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:51:59.242 [DEBUG] [Thread-124921] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:51:59.242 [DEBUG] [Thread-124921] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:51:59.243 [DEBUG] [Thread-124921] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:51:59.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:51:59.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:51:59.298 [DEBUG] [Thread-124921] [transport.py] [_log()] userauth is OK
2025-09-28T12:51:59.298 [DEBUG] [Thread-124921] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:51:59.298 [DEBUG] [Thread-124921] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:51:59.298 [DEBUG] [Thread-124921] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:51:59.299 [DEBUG] [Thread-124921] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:51:59.317 [INFO] [Thread-124921] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:51:59.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:51:59.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:00.325 [DEBUG] [Thread-124921] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:00.325 [DEBUG] [Thread-124921] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:00.373 [DEBUG] [Thread-124921] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:00.374 [DEBUG] [Thread-124921] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:00.382 [DEBUG] [Thread-124921] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:00.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:00.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-28T12:52:00.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-28T12:52:00.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:00.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:00.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:00.417 [DEBUG] [Thread-124921] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:10.359 [DEBUG] [Thread-124923 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:10.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:52:10.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:52:10.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:52:11.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 51, 49), 19.45, 26.67, 0.0, 15.97, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:52:11.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:51:49
2025-09-28T12:52:11.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:52:11.267 [DEBUG] [Thread-124924] [transport.py] [_log()] starting thread (client mode): 0x2b9843a0
2025-09-28T12:52:11.267 [DEBUG] [Thread-124924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:11.288 [DEBUG] [Thread-124924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:52:11.288 [INFO] [Thread-124924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] Compression: none
2025-09-28T12:52:11.291 [DEBUG] [Thread-124924] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:11.308 [DEBUG] [Thread-124924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:11.309 [DEBUG] [Thread-124924] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:11.309 [DEBUG] [Thread-124924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:52:11.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:52:11.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:11.311 [DEBUG] [Thread-124924] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:11.311 [DEBUG] [Thread-124924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:11.312 [DEBUG] [Thread-124924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:11.312 [DEBUG] [Thread-124924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:52:11.312 [DEBUG] [Thread-124924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:11.328 [INFO] [Thread-124924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:11.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:11.971 [DEBUG] [Thread-124924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:11.972 [DEBUG] [Thread-124924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:11.972 [DEBUG] [Thread-124924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:52:12.012 [DEBUG] [Thread-124924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:12.012 [DEBUG] [Thread-124924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:12.015 [DEBUG] [Thread-124924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:12.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:12.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:52:12.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:52:12.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:52:12.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:12.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:52:12.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:12.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:12.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:52:12.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452515 -999.00  +18.10  13.25     34   +2.00 1 1 1 1 1   888    0 18.14 45.25 ----- 12.2 13.2 272.4 21.0 25.3 -27.8 24.3 -25.5 24.2 -24.3 25.2 -26.6
2025-09-28T12:52:12.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:52:12.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:52:12.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452515
2025-09-28T12:52:12.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:52:12.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:52:12.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:52:12.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:52:12.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:52:12.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:51:49', tmtdew=19.45, humidity=26.67, cloud=0.0, wind=15.97, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:51:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:52:12.041 [DEBUG] [Thread-124924] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:12.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:52:12.137 [DEBUG] [Thread-124927] [transport.py] [_log()] starting thread (client mode): 0x2b9dc6a0
2025-09-28T12:52:12.137 [DEBUG] [Thread-124927] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:12.152 [DEBUG] [Thread-124927] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:52:12.152 [INFO] [Thread-124927] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:12.160 [DEBUG] [Thread-124927] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:12.161 [DEBUG] [Thread-124927] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:12.161 [DEBUG] [Thread-124927] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:12.161 [DEBUG] [Thread-124927] [transport.py] [_log()] Compression: none
2025-09-28T12:52:12.161 [DEBUG] [Thread-124927] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:12.217 [DEBUG] [Thread-124927] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:12.218 [DEBUG] [Thread-124927] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:12.218 [DEBUG] [Thread-124927] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:52:12.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:52:12.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:12.274 [DEBUG] [Thread-124927] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:12.274 [DEBUG] [Thread-124927] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:12.275 [DEBUG] [Thread-124927] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:12.275 [DEBUG] [Thread-124927] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:52:12.275 [DEBUG] [Thread-124927] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:12.294 [INFO] [Thread-124927] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:12.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-28T12:52:12.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:12.634 [DEBUG] [Thread-124929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:13.282 [DEBUG] [Thread-124927] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:13.282 [DEBUG] [Thread-124927] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:13.330 [DEBUG] [Thread-124927] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:13.330 [DEBUG] [Thread-124927] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:13.340 [DEBUG] [Thread-124927] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:13.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:13.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-28T12:52:13.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-28T12:52:13.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:13.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:13.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:13.374 [DEBUG] [Thread-124927] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:23.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:52:23.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:52:23.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-28T12:52:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 51, 49), 19.45, 26.67, 0.0, 15.97, 18.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:52:23.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:51:49
2025-09-28T12:52:24.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:52:24.226 [DEBUG] [Thread-124930] [transport.py] [_log()] starting thread (client mode): 0x2b9ad600
2025-09-28T12:52:24.226 [DEBUG] [Thread-124930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:24.245 [DEBUG] [Thread-124930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:52:24.245 [INFO] [Thread-124930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:24.248 [DEBUG] [Thread-124930] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] Compression: none
2025-09-28T12:52:24.249 [DEBUG] [Thread-124930] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:24.265 [DEBUG] [Thread-124930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:24.266 [DEBUG] [Thread-124930] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:24.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:52:24.267 [DEBUG] [Thread-124930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:52:24.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:24.268 [DEBUG] [Thread-124930] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:24.269 [DEBUG] [Thread-124930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:24.269 [DEBUG] [Thread-124930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:24.269 [DEBUG] [Thread-124930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:52:24.269 [DEBUG] [Thread-124930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:24.287 [INFO] [Thread-124930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:24.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:25.015 [DEBUG] [Thread-124930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:25.015 [DEBUG] [Thread-124930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:25.015 [DEBUG] [Thread-124930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:52:25.056 [DEBUG] [Thread-124930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:25.056 [DEBUG] [Thread-124930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:25.058 [DEBUG] [Thread-124930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:25.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:25.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:52:25.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:52:25.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:52:25.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:25.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:52:25.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452515 -999.00  +18.10  13.25     34   +2.00 1 1 1 1 1   888    0 18.14 45.25 ----- 12.2 13.2 272.4 21.0 25.3 -27.8 24.3 -25.5 24.2 -24.3 25.2 -26.6
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452515
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:52:25.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:51:49', tmtdew=19.45, humidity=26.67, cloud=0.0, wind=15.97, temperature=18.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:51:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:52:25.077 [DEBUG] [Thread-124930] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:25.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-28T12:52:25.158 [DEBUG] [Thread-124933] [transport.py] [_log()] starting thread (client mode): 0x2b988df0
2025-09-28T12:52:25.158 [DEBUG] [Thread-124933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:25.173 [DEBUG] [Thread-124933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:52:25.174 [INFO] [Thread-124933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:25.181 [DEBUG] [Thread-124933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] Compression: none
2025-09-28T12:52:25.182 [DEBUG] [Thread-124933] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:25.238 [DEBUG] [Thread-124933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:25.238 [DEBUG] [Thread-124933] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:25.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:52:25.239 [DEBUG] [Thread-124933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:52:25.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:25.294 [DEBUG] [Thread-124933] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:25.294 [DEBUG] [Thread-124933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:25.294 [DEBUG] [Thread-124933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:25.295 [DEBUG] [Thread-124933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:52:25.295 [DEBUG] [Thread-124933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:25.314 [INFO] [Thread-124933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:25.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-28T12:52:25.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:26.270 [DEBUG] [Thread-124933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:26.270 [DEBUG] [Thread-124933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:26.318 [DEBUG] [Thread-124933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:26.318 [DEBUG] [Thread-124933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:26.327 [DEBUG] [Thread-124933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:26.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:26.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-28T12:52:26.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-28T12:52:26.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:26.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:26.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:26.362 [DEBUG] [Thread-124933] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:27.689 [DEBUG] [Thread-124935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:36.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:52:36.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:52:36.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-28T12:52:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 52, 21), 19.67, 26.27, 0.0, 16.76, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:52:36.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:52:21
2025-09-28T12:52:37.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:52:37.214 [DEBUG] [Thread-124936] [transport.py] [_log()] starting thread (client mode): 0x2b987460
2025-09-28T12:52:37.214 [DEBUG] [Thread-124936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:37.234 [DEBUG] [Thread-124936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:52:37.234 [INFO] [Thread-124936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] Compression: none
2025-09-28T12:52:37.236 [DEBUG] [Thread-124936] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:37.245 [DEBUG] [Thread-124936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:37.245 [DEBUG] [Thread-124936] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:37.246 [DEBUG] [Thread-124936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:52:37.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:52:37.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:37.247 [DEBUG] [Thread-124936] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:37.248 [DEBUG] [Thread-124936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:37.248 [DEBUG] [Thread-124936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:37.248 [DEBUG] [Thread-124936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:52:37.248 [DEBUG] [Thread-124936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:37.271 [INFO] [Thread-124936] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:37.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:37.928 [DEBUG] [Thread-124936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:37.929 [DEBUG] [Thread-124936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:37.929 [DEBUG] [Thread-124936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:52:37.969 [DEBUG] [Thread-124936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:37.969 [DEBUG] [Thread-124936] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:37.972 [DEBUG] [Thread-124936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:37.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:37.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:52:37.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:52:37.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:52:37.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:37.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:52:37.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:37.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:52:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452862 -999.00  +17.90   6.38     34   +2.10 1 1 1 1 1   888    0 18.04 35.96 ----- 10.3 6.4 248.5 12.5 25.5 -26.1 24.4 -25.6 24.1 -24.1 25.4 -26.0
2025-09-28T12:52:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:52:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:52:37.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452862
2025-09-28T12:52:37.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:52:37.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:52:37.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:52:37.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:52:37.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:52:37.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:52:21', tmtdew=19.67, humidity=26.27, cloud=0.0, wind=16.76, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:52:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:52:37.997 [DEBUG] [Thread-124936] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:38.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-28T12:52:38.094 [DEBUG] [Thread-124939] [transport.py] [_log()] starting thread (client mode): 0x2b987bb0
2025-09-28T12:52:38.095 [DEBUG] [Thread-124939] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:38.109 [DEBUG] [Thread-124939] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:52:38.109 [INFO] [Thread-124939] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:52:38.117 [DEBUG] [Thread-124939] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:38.117 [DEBUG] [Thread-124939] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:52:38.117 [DEBUG] [Thread-124939] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] Compression: none
2025-09-28T12:52:38.118 [DEBUG] [Thread-124939] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:38.174 [DEBUG] [Thread-124939] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:38.175 [DEBUG] [Thread-124939] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:38.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:52:38.176 [DEBUG] [Thread-124939] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:52:38.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:38.231 [DEBUG] [Thread-124939] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:38.231 [DEBUG] [Thread-124939] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:38.231 [DEBUG] [Thread-124939] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:38.231 [DEBUG] [Thread-124939] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:52:38.231 [DEBUG] [Thread-124939] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:38.249 [INFO] [Thread-124939] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:38.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-28T12:52:38.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:39.205 [DEBUG] [Thread-124939] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:39.205 [DEBUG] [Thread-124939] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:39.253 [DEBUG] [Thread-124939] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:39.253 [DEBUG] [Thread-124939] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:39.262 [DEBUG] [Thread-124939] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:39.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:39.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-28T12:52:39.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-28T12:52:39.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:39.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:39.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:39.297 [DEBUG] [Thread-124939] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:42.718 [DEBUG] [Thread-124941 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:49.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:52:49.300 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:52:49.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-28T12:52:49.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:49.697 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:52:49.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 52, 21), 19.67, 26.27, 0.0, 16.76, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:52:49.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:52:21
2025-09-28T12:52:49.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:52:50.131 [DEBUG] [Thread-124942] [transport.py] [_log()] starting thread (client mode): 0x2b9df130
2025-09-28T12:52:50.131 [DEBUG] [Thread-124942] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:50.151 [DEBUG] [Thread-124942] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:52:50.151 [INFO] [Thread-124942] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] Compression: none
2025-09-28T12:52:50.156 [DEBUG] [Thread-124942] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:50.169 [DEBUG] [Thread-124942] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:50.169 [DEBUG] [Thread-124942] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:50.170 [DEBUG] [Thread-124942] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:52:50.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:52:50.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:50.171 [DEBUG] [Thread-124942] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:50.171 [DEBUG] [Thread-124942] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:50.171 [DEBUG] [Thread-124942] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:50.171 [DEBUG] [Thread-124942] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:52:50.171 [DEBUG] [Thread-124942] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:50.188 [INFO] [Thread-124942] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:50.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:50.975 [DEBUG] [Thread-124942] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:50.975 [DEBUG] [Thread-124942] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:50.976 [DEBUG] [Thread-124942] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:52:51.017 [DEBUG] [Thread-124942] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:51.017 [DEBUG] [Thread-124942] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:51.020 [DEBUG] [Thread-124942] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:51.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:51.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:52:51.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:52:51.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:52:51.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:51.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:52:51.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:51.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:51.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:52:51.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452862 -999.00  +17.90   6.38     34   +2.10 1 1 1 1 1   888    0 18.04 35.96 ----- 10.3 6.4 248.5 12.5 25.5 -26.1 24.4 -25.6 24.1 -24.1 25.4 -26.0
2025-09-28T12:52:51.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:52:51.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:52:51.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452862
2025-09-28T12:52:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:52:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:52:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:52:51.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:52:51.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:52:51.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:52:21', tmtdew=19.67, humidity=26.27, cloud=0.0, wind=16.76, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:52:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:52:51.048 [DEBUG] [Thread-124942] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:51.133 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:52:51.142 [DEBUG] [Thread-124945] [transport.py] [_log()] starting thread (client mode): 0x2b9c9840
2025-09-28T12:52:51.143 [DEBUG] [Thread-124945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:52:51.160 [DEBUG] [Thread-124945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:52:51.160 [INFO] [Thread-124945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:52:51.168 [DEBUG] [Thread-124945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] client lang: <none>
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] server lang: <none>
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] kex follows: False
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:52:51.169 [DEBUG] [Thread-124945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:52:51.170 [DEBUG] [Thread-124945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:52:51.170 [DEBUG] [Thread-124945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:52:51.170 [DEBUG] [Thread-124945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:52:51.170 [DEBUG] [Thread-124945] [transport.py] [_log()] Compression: none
2025-09-28T12:52:51.170 [DEBUG] [Thread-124945] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:52:51.227 [DEBUG] [Thread-124945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:52:51.228 [DEBUG] [Thread-124945] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:52:51.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:52:51.229 [DEBUG] [Thread-124945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:52:51.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:52:51.287 [DEBUG] [Thread-124945] [transport.py] [_log()] userauth is OK
2025-09-28T12:52:51.287 [DEBUG] [Thread-124945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:52:51.287 [DEBUG] [Thread-124945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:52:51.287 [DEBUG] [Thread-124945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:52:51.287 [DEBUG] [Thread-124945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:52:51.310 [INFO] [Thread-124945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:52:51.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-28T12:52:51.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:52:52.255 [DEBUG] [Thread-124945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:52:52.255 [DEBUG] [Thread-124945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:52:52.303 [DEBUG] [Thread-124945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:52:52.303 [DEBUG] [Thread-124945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:52:52.312 [DEBUG] [Thread-124945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:52:52.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:52:52.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T12:52:52.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-28T12:52:52.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:52:52.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:52:52.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:52:52.347 [DEBUG] [Thread-124945] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:52:57.752 [DEBUG] [Thread-124947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:02.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:53:02.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:53:02.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-28T12:53:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 52, 53), 19.08, 27.78, 0.0, 16.99, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:53:02.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:52:53
2025-09-28T12:53:03.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:53:03.192 [DEBUG] [Thread-124948] [transport.py] [_log()] starting thread (client mode): 0x2b9879d0
2025-09-28T12:53:03.192 [DEBUG] [Thread-124948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:03.207 [DEBUG] [Thread-124948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:53:03.207 [INFO] [Thread-124948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:03.210 [DEBUG] [Thread-124948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:03.211 [DEBUG] [Thread-124948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:03.211 [DEBUG] [Thread-124948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:03.211 [DEBUG] [Thread-124948] [transport.py] [_log()] Compression: none
2025-09-28T12:53:03.211 [DEBUG] [Thread-124948] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:03.227 [DEBUG] [Thread-124948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:03.227 [DEBUG] [Thread-124948] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:03.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:53:03.228 [DEBUG] [Thread-124948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:53:03.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:03.230 [DEBUG] [Thread-124948] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:03.230 [DEBUG] [Thread-124948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:03.230 [DEBUG] [Thread-124948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:03.231 [DEBUG] [Thread-124948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:53:03.231 [DEBUG] [Thread-124948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:03.254 [INFO] [Thread-124948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:03.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:04.016 [DEBUG] [Thread-124948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:04.016 [DEBUG] [Thread-124948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:04.016 [DEBUG] [Thread-124948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:53:04.057 [DEBUG] [Thread-124948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:04.057 [DEBUG] [Thread-124948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:04.060 [DEBUG] [Thread-124948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:04.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:04.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:53:04.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:53:04.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:53:04.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:04.081 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:53:04.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:04.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.452862 -999.00  +17.90   6.38     34   +2.10 1 1 1 1 1   888    0 18.04 35.96 ----- 10.3 6.4 248.5 12.5 25.5 -26.1 24.4 -25.6 24.1 -24.1 25.4 -26.0
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.452862
2025-09-28T12:53:04.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:53:04.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:53:04.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:53:04.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:53:04.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:53:04.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:52:53', tmtdew=19.08, humidity=27.78, cloud=0.0, wind=16.99, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:52:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:53:04.083 [DEBUG] [Thread-124948] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:04.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-28T12:53:04.179 [DEBUG] [Thread-124951] [transport.py] [_log()] starting thread (client mode): 0x2e3c0e20
2025-09-28T12:53:04.179 [DEBUG] [Thread-124951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:04.193 [DEBUG] [Thread-124951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:53:04.194 [INFO] [Thread-124951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:53:04.201 [DEBUG] [Thread-124951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:04.201 [DEBUG] [Thread-124951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:53:04.201 [DEBUG] [Thread-124951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:04.202 [DEBUG] [Thread-124951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] Compression: none
2025-09-28T12:53:04.203 [DEBUG] [Thread-124951] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:04.262 [DEBUG] [Thread-124951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:04.263 [DEBUG] [Thread-124951] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:04.263 [DEBUG] [Thread-124951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:53:04.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:53:04.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:04.319 [DEBUG] [Thread-124951] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:04.319 [DEBUG] [Thread-124951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:04.319 [DEBUG] [Thread-124951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:04.320 [DEBUG] [Thread-124951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:53:04.320 [DEBUG] [Thread-124951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:04.338 [INFO] [Thread-124951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:04.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-28T12:53:04.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:05.359 [DEBUG] [Thread-124951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:05.359 [DEBUG] [Thread-124951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:05.407 [DEBUG] [Thread-124951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:05.407 [DEBUG] [Thread-124951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:05.416 [DEBUG] [Thread-124951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:05.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:05.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-28T12:53:05.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-28T12:53:05.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:05.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:05.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:05.450 [DEBUG] [Thread-124951] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:10.410 [DEBUG] [Thread-124953 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:12.783 [DEBUG] [Thread-124954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:15.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:53:15.452 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:53:15.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-28T12:53:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 52, 53), 19.08, 27.78, 0.0, 16.99, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:53:16.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:52:53
2025-09-28T12:53:16.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:53:16.286 [DEBUG] [Thread-124955] [transport.py] [_log()] starting thread (client mode): 0x2b9ca2c0
2025-09-28T12:53:16.286 [DEBUG] [Thread-124955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:16.306 [DEBUG] [Thread-124955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:53:16.306 [INFO] [Thread-124955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:16.309 [DEBUG] [Thread-124955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:16.310 [DEBUG] [Thread-124955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:16.310 [DEBUG] [Thread-124955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:16.310 [DEBUG] [Thread-124955] [transport.py] [_log()] Compression: none
2025-09-28T12:53:16.310 [DEBUG] [Thread-124955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:16.325 [DEBUG] [Thread-124955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:16.326 [DEBUG] [Thread-124955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:16.326 [DEBUG] [Thread-124955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:53:16.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:53:16.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:16.328 [DEBUG] [Thread-124955] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:16.328 [DEBUG] [Thread-124955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:16.328 [DEBUG] [Thread-124955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:16.329 [DEBUG] [Thread-124955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:53:16.329 [DEBUG] [Thread-124955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:16.347 [INFO] [Thread-124955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:16.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:16.978 [DEBUG] [Thread-124955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:16.978 [DEBUG] [Thread-124955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:16.979 [DEBUG] [Thread-124955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:53:17.019 [DEBUG] [Thread-124955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:17.019 [DEBUG] [Thread-124955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:17.022 [DEBUG] [Thread-124955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:17.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:17.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:53:17.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:53:17.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:53:17.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:17.043 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:53:17.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:17.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:53:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.453556 -999.00  +18.50   9.65     34   +2.60 1 1 1 1 1   888    0 17.14 13.20 ----- 12.3 9.7 238.3 17.0 25.6 -26.7 24.4 -26.7 24.3 -23.8 25.4 -25.5
2025-09-28T12:53:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:53:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:53:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.453556
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:53:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:52:53', tmtdew=19.08, humidity=27.78, cloud=0.0, wind=16.99, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:53:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:53:17.046 [DEBUG] [Thread-124955] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:17.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-28T12:53:17.141 [DEBUG] [Thread-124958] [transport.py] [_log()] starting thread (client mode): 0x2b9deb00
2025-09-28T12:53:17.141 [DEBUG] [Thread-124958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:17.161 [DEBUG] [Thread-124958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:53:17.162 [INFO] [Thread-124958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:17.169 [DEBUG] [Thread-124958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] Compression: none
2025-09-28T12:53:17.170 [DEBUG] [Thread-124958] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:17.226 [DEBUG] [Thread-124958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:17.227 [DEBUG] [Thread-124958] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:17.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:53:17.228 [DEBUG] [Thread-124958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:53:17.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:17.287 [DEBUG] [Thread-124958] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:17.287 [DEBUG] [Thread-124958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:17.287 [DEBUG] [Thread-124958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:17.287 [DEBUG] [Thread-124958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:53:17.287 [DEBUG] [Thread-124958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:17.307 [INFO] [Thread-124958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53: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-28T12:53:17.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:18.277 [DEBUG] [Thread-124958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:18.278 [DEBUG] [Thread-124958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:18.326 [DEBUG] [Thread-124958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:18.326 [DEBUG] [Thread-124958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:18.335 [DEBUG] [Thread-124958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:18.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:18.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-28T12:53:18.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-28T12:53:18.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:18.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:18.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:18.369 [DEBUG] [Thread-124958] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:27.826 [DEBUG] [Thread-124960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:28.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:53:28.372 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:53:28.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-28T12:53:28.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 53, 25), 18.81, 28.23, 0.0, 15.83, 18.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:53:28.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:53:25
2025-09-28T12:53:29.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:53:29.201 [DEBUG] [Thread-124961] [transport.py] [_log()] starting thread (client mode): 0x2e349b10
2025-09-28T12:53:29.202 [DEBUG] [Thread-124961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:29.221 [DEBUG] [Thread-124961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:53:29.222 [INFO] [Thread-124961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:29.225 [DEBUG] [Thread-124961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] Compression: none
2025-09-28T12:53:29.226 [DEBUG] [Thread-124961] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:29.242 [DEBUG] [Thread-124961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:29.243 [DEBUG] [Thread-124961] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:29.243 [DEBUG] [Thread-124961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:53:29.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:53:29.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:29.245 [DEBUG] [Thread-124961] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:29.245 [DEBUG] [Thread-124961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:29.246 [DEBUG] [Thread-124961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:29.246 [DEBUG] [Thread-124961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:53:29.246 [DEBUG] [Thread-124961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:29.264 [INFO] [Thread-124961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:29.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:30.041 [DEBUG] [Thread-124961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:30.041 [DEBUG] [Thread-124961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:30.042 [DEBUG] [Thread-124961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:53:30.082 [DEBUG] [Thread-124961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:30.083 [DEBUG] [Thread-124961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:30.086 [DEBUG] [Thread-124961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:30.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:30.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:53:30.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:53:30.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:53:30.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:30.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:53:30.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:30.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.453556 -999.00  +18.50   9.65     34   +2.60 1 1 1 1 1   888    0 17.14 13.20 ----- 12.3 9.7 238.3 17.0 25.6 -26.7 24.4 -26.7 24.3 -23.8 25.4 -25.5
2025-09-28T12:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:53:30.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.453556
2025-09-28T12:53:30.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:53:30.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:53:30.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:53:30.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:53:30.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:53:30.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:53:25', tmtdew=18.81, humidity=28.23, cloud=0.0, wind=15.83, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:53:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:53:30.112 [DEBUG] [Thread-124961] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:30.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:53:30.208 [DEBUG] [Thread-124964] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T12:53:30.208 [DEBUG] [Thread-124964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:30.224 [DEBUG] [Thread-124964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:53:30.225 [INFO] [Thread-124964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:30.232 [DEBUG] [Thread-124964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] Compression: none
2025-09-28T12:53:30.233 [DEBUG] [Thread-124964] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:30.291 [DEBUG] [Thread-124964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:30.291 [DEBUG] [Thread-124964] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:30.292 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:53:30.292 [DEBUG] [Thread-124964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:53:30.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:30.347 [DEBUG] [Thread-124964] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:30.347 [DEBUG] [Thread-124964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:30.347 [DEBUG] [Thread-124964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:30.347 [DEBUG] [Thread-124964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:53:30.347 [DEBUG] [Thread-124964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:30.367 [INFO] [Thread-124964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:30.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-28T12:53:30.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:31.369 [DEBUG] [Thread-124964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:31.370 [DEBUG] [Thread-124964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:31.417 [DEBUG] [Thread-124964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:31.417 [DEBUG] [Thread-124964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:31.426 [DEBUG] [Thread-124964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:31.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:31.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-28T12:53:31.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T12:53:31.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:31.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:31.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:31.460 [DEBUG] [Thread-124964] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:41.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:53:41.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:53:41.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-28T12:53:42.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 53, 25), 18.81, 28.23, 0.0, 15.83, 18.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:53:42.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:53:25
2025-09-28T12:53:42.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:53:42.290 [DEBUG] [Thread-124966] [transport.py] [_log()] starting thread (client mode): 0x2b9c9780
2025-09-28T12:53:42.290 [DEBUG] [Thread-124966] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:42.311 [DEBUG] [Thread-124966] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:53:42.311 [INFO] [Thread-124966] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:53:42.314 [DEBUG] [Thread-124966] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:42.314 [DEBUG] [Thread-124966] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:53:42.314 [DEBUG] [Thread-124966] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:42.314 [DEBUG] [Thread-124966] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:42.315 [DEBUG] [Thread-124966] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:42.316 [DEBUG] [Thread-124966] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:42.316 [DEBUG] [Thread-124966] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:42.316 [DEBUG] [Thread-124966] [transport.py] [_log()] Compression: none
2025-09-28T12:53:42.316 [DEBUG] [Thread-124966] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:42.335 [DEBUG] [Thread-124966] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:42.335 [DEBUG] [Thread-124966] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:42.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:53:42.337 [DEBUG] [Thread-124966] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:53:42.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:42.338 [DEBUG] [Thread-124966] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:42.339 [DEBUG] [Thread-124966] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:42.339 [DEBUG] [Thread-124966] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:42.339 [DEBUG] [Thread-124966] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:53:42.339 [DEBUG] [Thread-124966] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:42.357 [INFO] [Thread-124966] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:42.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:42.869 [DEBUG] [Thread-124968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:43.115 [DEBUG] [Thread-124966] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:43.116 [DEBUG] [Thread-124966] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:43.116 [DEBUG] [Thread-124966] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:53:43.156 [DEBUG] [Thread-124966] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:43.157 [DEBUG] [Thread-124966] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:43.159 [DEBUG] [Thread-124966] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:43.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:43.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:53:43.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:53:43.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:53:43.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:43.178 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:53:43.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.453556 -999.00  +18.50   9.65     34   +2.60 1 1 1 1 1   888    0 17.14 13.20 ----- 12.3 9.7 238.3 17.0 25.6 -26.7 24.4 -26.7 24.3 -23.8 25.4 -25.5
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:53:43.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.453556
2025-09-28T12:53:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:53:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:53:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:53:43.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:53:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:53:43.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:53:25', tmtdew=18.81, humidity=28.23, cloud=0.0, wind=15.83, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:53:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:53:43.181 [DEBUG] [Thread-124966] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:43.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-28T12:53:43.277 [DEBUG] [Thread-124970] [transport.py] [_log()] starting thread (client mode): 0x2e34bfa0
2025-09-28T12:53:43.278 [DEBUG] [Thread-124970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:43.292 [DEBUG] [Thread-124970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:53:43.293 [INFO] [Thread-124970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:43.300 [DEBUG] [Thread-124970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] Compression: none
2025-09-28T12:53:43.301 [DEBUG] [Thread-124970] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:43.359 [DEBUG] [Thread-124970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:43.359 [DEBUG] [Thread-124970] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:43.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:53:43.360 [DEBUG] [Thread-124970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:53:43.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:43.415 [DEBUG] [Thread-124970] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:43.415 [DEBUG] [Thread-124970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:43.415 [DEBUG] [Thread-124970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:43.415 [DEBUG] [Thread-124970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:53:43.415 [DEBUG] [Thread-124970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:43.435 [INFO] [Thread-124970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:43.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-28T12:53:43.436 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:44.465 [DEBUG] [Thread-124970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:44.466 [DEBUG] [Thread-124970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:44.513 [DEBUG] [Thread-124970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:44.513 [DEBUG] [Thread-124970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:44.522 [DEBUG] [Thread-124970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:44.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:44.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-28T12:53:44.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-28T12:53:44.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:44.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:44.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:44.557 [DEBUG] [Thread-124970] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:49.841 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:49.842 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:53:54.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:53:54.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:53:54.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:53:55.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 53, 25), 18.81, 28.23, 0.0, 15.83, 18.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:53:55.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:53:25
2025-09-28T12:53:55.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:53:55.374 [DEBUG] [Thread-124972] [transport.py] [_log()] starting thread (client mode): 0x2b989780
2025-09-28T12:53:55.375 [DEBUG] [Thread-124972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:55.395 [DEBUG] [Thread-124972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:53:55.395 [INFO] [Thread-124972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:55.398 [DEBUG] [Thread-124972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] Compression: none
2025-09-28T12:53:55.399 [DEBUG] [Thread-124972] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:55.415 [DEBUG] [Thread-124972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:55.415 [DEBUG] [Thread-124972] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:55.416 [DEBUG] [Thread-124972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:53:55.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:53:55.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:55.418 [DEBUG] [Thread-124972] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:55.418 [DEBUG] [Thread-124972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:55.418 [DEBUG] [Thread-124972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:55.418 [DEBUG] [Thread-124972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:53:55.418 [DEBUG] [Thread-124972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:55.432 [INFO] [Thread-124972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:55.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:56.039 [DEBUG] [Thread-124972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:56.039 [DEBUG] [Thread-124972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:56.039 [DEBUG] [Thread-124972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:53:56.080 [DEBUG] [Thread-124972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:56.080 [DEBUG] [Thread-124972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:56.082 [DEBUG] [Thread-124972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:56.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:56.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:53:56.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:53:56.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:53:56.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:56.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:53:56.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.453904 -999.00  +18.90  15.54     33   +2.50 1 1 1 1 1   888    0 16.99 4.93 ----- 9.6 15.5 244.8 22.3 25.6 -27.2 24.5 -24.9 24.3 -24.1 25.5 -27.4
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.453904
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:53:56.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:53:25', tmtdew=18.81, humidity=28.23, cloud=0.0, wind=15.83, temperature=18.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:53:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:53:56.101 [DEBUG] [Thread-124972] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:56.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-28T12:53:56.185 [DEBUG] [Thread-124975] [transport.py] [_log()] starting thread (client mode): 0x2b988820
2025-09-28T12:53:56.185 [DEBUG] [Thread-124975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:53:56.201 [DEBUG] [Thread-124975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:53:56.201 [INFO] [Thread-124975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] client lang: <none>
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] server lang: <none>
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] kex follows: False
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:53:56.208 [DEBUG] [Thread-124975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:53:56.209 [DEBUG] [Thread-124975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:53:56.209 [DEBUG] [Thread-124975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:53:56.209 [DEBUG] [Thread-124975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:53:56.209 [DEBUG] [Thread-124975] [transport.py] [_log()] Compression: none
2025-09-28T12:53:56.209 [DEBUG] [Thread-124975] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:53:56.265 [DEBUG] [Thread-124975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:53:56.266 [DEBUG] [Thread-124975] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:53:56.266 [DEBUG] [Thread-124975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:53:56.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:53:56.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:53:56.323 [DEBUG] [Thread-124975] [transport.py] [_log()] userauth is OK
2025-09-28T12:53:56.323 [DEBUG] [Thread-124975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:53:56.323 [DEBUG] [Thread-124975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:53:56.323 [DEBUG] [Thread-124975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:53:56.323 [DEBUG] [Thread-124975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:53:56.337 [INFO] [Thread-124975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:53:56.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-28T12:53:56.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:53:57.310 [DEBUG] [Thread-124975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:53:57.310 [DEBUG] [Thread-124975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:53:57.359 [DEBUG] [Thread-124975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:53:57.359 [DEBUG] [Thread-124975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:53:57.367 [DEBUG] [Thread-124975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:53:57.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:53:57.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-28T12:53:57.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-28T12:53:57.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:53:57.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:53:57.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:53:57.399 [DEBUG] [Thread-124975] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:53:57.920 [DEBUG] [Thread-124977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:07.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:54:07.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:54:07.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-28T12:54:07.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 53, 57), 19.15, 27.18, 0.0, 19.67, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:54:07.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:53:57
2025-09-28T12:54:08.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:54:08.230 [DEBUG] [Thread-124978] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T12:54:08.230 [DEBUG] [Thread-124978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:08.251 [DEBUG] [Thread-124978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:54:08.252 [INFO] [Thread-124978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:54:08.255 [DEBUG] [Thread-124978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:08.255 [DEBUG] [Thread-124978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] Compression: none
2025-09-28T12:54:08.256 [DEBUG] [Thread-124978] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:08.275 [DEBUG] [Thread-124978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:08.275 [DEBUG] [Thread-124978] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:08.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:54:08.277 [DEBUG] [Thread-124978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:54:08.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:08.279 [DEBUG] [Thread-124978] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:08.279 [DEBUG] [Thread-124978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:08.279 [DEBUG] [Thread-124978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:08.279 [DEBUG] [Thread-124978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:54:08.279 [DEBUG] [Thread-124978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:08.303 [INFO] [Thread-124978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:08.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:09.117 [DEBUG] [Thread-124978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:09.117 [DEBUG] [Thread-124978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:09.117 [DEBUG] [Thread-124978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:54:09.158 [DEBUG] [Thread-124978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:09.158 [DEBUG] [Thread-124978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:09.161 [DEBUG] [Thread-124978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:09.167 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:09.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:54:09.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:54:09.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:54:09.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:09.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:54:09.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:09.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:54:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.453904 -999.00  +18.90  15.54     33   +2.50 1 1 1 1 1   888    0 16.99 4.93 ----- 9.6 15.5 244.8 22.3 25.6 -27.2 24.5 -24.9 24.3 -24.1 25.5 -27.4
2025-09-28T12:54:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:54:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:54:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.453904
2025-09-28T12:54:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:54:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:54:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:54:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:54:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:54:09.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:53:57', tmtdew=19.15, humidity=27.18, cloud=0.0, wind=19.67, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:53:37.306', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:54:09.182 [DEBUG] [Thread-124978] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:09.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-28T12:54:09.277 [DEBUG] [Thread-124981] [transport.py] [_log()] starting thread (client mode): 0x2e3c2fe0
2025-09-28T12:54:09.278 [DEBUG] [Thread-124981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:09.292 [DEBUG] [Thread-124981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:54:09.292 [INFO] [Thread-124981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:09.300 [DEBUG] [Thread-124981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:09.301 [DEBUG] [Thread-124981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:09.301 [DEBUG] [Thread-124981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:09.301 [DEBUG] [Thread-124981] [transport.py] [_log()] Compression: none
2025-09-28T12:54:09.301 [DEBUG] [Thread-124981] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:09.359 [DEBUG] [Thread-124981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:09.359 [DEBUG] [Thread-124981] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:09.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:54:09.360 [DEBUG] [Thread-124981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:54:09.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:09.415 [DEBUG] [Thread-124981] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:09.415 [DEBUG] [Thread-124981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:09.416 [DEBUG] [Thread-124981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:09.416 [DEBUG] [Thread-124981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:54:09.416 [DEBUG] [Thread-124981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:09.434 [INFO] [Thread-124981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:09.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-28T12:54:09.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:10.414 [DEBUG] [Thread-124981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:10.414 [DEBUG] [Thread-124981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:10.462 [DEBUG] [Thread-124981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:10.462 [DEBUG] [Thread-124981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:10.463 [DEBUG] [Thread-124983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:10.470 [DEBUG] [Thread-124981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:10.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:10.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-28T12:54:10.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') -> 00000000
2025-09-28T12:54:10.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:10.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:10.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:10.504 [DEBUG] [Thread-124981] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:12.964 [DEBUG] [Thread-124984 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:20.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:54:20.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:54:20.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-28T12:54:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 53, 57), 19.15, 27.18, 0.0, 19.67, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:54:21.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:53:57
2025-09-28T12:54:21.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:54:21.328 [DEBUG] [Thread-124985] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd90
2025-09-28T12:54:21.328 [DEBUG] [Thread-124985] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:21.347 [DEBUG] [Thread-124985] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:54:21.347 [INFO] [Thread-124985] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:21.350 [DEBUG] [Thread-124985] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] Compression: none
2025-09-28T12:54:21.351 [DEBUG] [Thread-124985] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:21.368 [DEBUG] [Thread-124985] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:21.368 [DEBUG] [Thread-124985] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:21.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:54:21.369 [DEBUG] [Thread-124985] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:54:21.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:21.371 [DEBUG] [Thread-124985] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:21.371 [DEBUG] [Thread-124985] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:21.371 [DEBUG] [Thread-124985] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:21.372 [DEBUG] [Thread-124985] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:54:21.372 [DEBUG] [Thread-124985] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:21.395 [INFO] [Thread-124985] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:21.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:22.365 [DEBUG] [Thread-124985] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:22.366 [DEBUG] [Thread-124985] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:22.366 [DEBUG] [Thread-124985] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:54:22.406 [DEBUG] [Thread-124985] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:22.407 [DEBUG] [Thread-124985] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:22.409 [DEBUG] [Thread-124985] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:22.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:22.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:54:22.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:54:22.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:54:22.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:22.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:54:22.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:22.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454251 -999.00  +19.30  13.47     32   +2.50 1 1 1 1 1   888    0 16.72 -0.04 ----- 15.1 13.5 197.9 17.7 25.6 -26.9 24.4 -26.0 24.4 -26.1 25.6 -26.0
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454251
2025-09-28T12:54:22.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:54:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:54:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:54:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:54:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:54:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:53:57', tmtdew=19.15, humidity=27.18, cloud=0.0, wind=19.67, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:54:22.436 [DEBUG] [Thread-124985] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:22.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-28T12:54:22.531 [DEBUG] [Thread-124988] [transport.py] [_log()] starting thread (client mode): 0x2b98b9a0
2025-09-28T12:54:22.531 [DEBUG] [Thread-124988] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:22.546 [DEBUG] [Thread-124988] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:54:22.546 [INFO] [Thread-124988] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:54:22.553 [DEBUG] [Thread-124988] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] Compression: none
2025-09-28T12:54:22.554 [DEBUG] [Thread-124988] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:22.611 [DEBUG] [Thread-124988] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:22.611 [DEBUG] [Thread-124988] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:22.612 [DEBUG] [Thread-124988] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:54:22.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:54:22.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:22.667 [DEBUG] [Thread-124988] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:22.667 [DEBUG] [Thread-124988] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:22.667 [DEBUG] [Thread-124988] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:22.667 [DEBUG] [Thread-124988] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:54:22.668 [DEBUG] [Thread-124988] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:22.687 [INFO] [Thread-124988] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:22.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-28T12:54:22.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:23.633 [DEBUG] [Thread-124988] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:23.633 [DEBUG] [Thread-124988] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:23.682 [DEBUG] [Thread-124988] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:23.682 [DEBUG] [Thread-124988] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:23.692 [DEBUG] [Thread-124988] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:23.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:23.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-28T12:54:23.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-28T12:54:23.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:23.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:23.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:23.736 [DEBUG] [Thread-124988] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:28.010 [DEBUG] [Thread-124990 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:33.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:54:33.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:54:33.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-28T12:54:34.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 54, 29), 19.09, 27.3, 0.0, 19.43, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:54:34.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:54:29
2025-09-28T12:54:34.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:54:34.603 [DEBUG] [Thread-124991] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T12:54:34.603 [DEBUG] [Thread-124991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:34.626 [DEBUG] [Thread-124991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:54:34.626 [INFO] [Thread-124991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] Compression: none
2025-09-28T12:54:34.630 [DEBUG] [Thread-124991] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:34.645 [DEBUG] [Thread-124991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:34.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:54:34.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:54:34.646 [DEBUG] [Thread-124991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:34.661 [INFO] [Thread-124991] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:34.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:35.489 [DEBUG] [Thread-124991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:35.489 [DEBUG] [Thread-124991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:35.489 [DEBUG] [Thread-124991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:54:35.530 [DEBUG] [Thread-124991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:35.530 [DEBUG] [Thread-124991] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:35.532 [DEBUG] [Thread-124991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:35.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:35.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:54:35.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:54:35.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:54:35.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:35.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:54:35.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454251 -999.00  +19.30  13.47     32   +2.50 1 1 1 1 1   888    0 16.72 -0.04 ----- 15.1 13.5 197.9 17.7 25.6 -26.9 24.4 -26.0 24.4 -26.1 25.6 -26.0
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454251
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:54:35.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:54:29', tmtdew=19.09, humidity=27.3, cloud=0.0, wind=19.43, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:54:35.552 [DEBUG] [Thread-124991] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:35.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-28T12:54:35.640 [DEBUG] [Thread-124994] [transport.py] [_log()] starting thread (client mode): 0x2b989690
2025-09-28T12:54:35.640 [DEBUG] [Thread-124994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:35.655 [DEBUG] [Thread-124994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:54:35.655 [INFO] [Thread-124994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] Compression: none
2025-09-28T12:54:35.663 [DEBUG] [Thread-124994] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:35.718 [DEBUG] [Thread-124994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:35.718 [DEBUG] [Thread-124994] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:35.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:54:35.719 [DEBUG] [Thread-124994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:54:35.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:35.775 [DEBUG] [Thread-124994] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:35.775 [DEBUG] [Thread-124994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:35.775 [DEBUG] [Thread-124994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:35.775 [DEBUG] [Thread-124994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:54:35.775 [DEBUG] [Thread-124994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:35.789 [INFO] [Thread-124994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:35.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-28T12:54:35.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:36.734 [DEBUG] [Thread-124994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:36.734 [DEBUG] [Thread-124994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:36.782 [DEBUG] [Thread-124994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:36.782 [DEBUG] [Thread-124994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:36.790 [DEBUG] [Thread-124994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:36.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:36.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')
2025-09-28T12:54:36.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-28T12:54:36.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:36.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:36.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:36.822 [DEBUG] [Thread-124994] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:43.057 [DEBUG] [Thread-124996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:46.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:54:46.824 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:54:46.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-28T12:54:47.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 54, 29), 19.09, 27.3, 0.0, 19.43, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:54:47.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:54:29
2025-09-28T12:54:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:54:47.648 [DEBUG] [Thread-124997] [transport.py] [_log()] starting thread (client mode): 0x2b9df730
2025-09-28T12:54:47.648 [DEBUG] [Thread-124997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:47.672 [DEBUG] [Thread-124997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:54:47.673 [INFO] [Thread-124997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:54:47.676 [DEBUG] [Thread-124997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:47.676 [DEBUG] [Thread-124997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:54:47.676 [DEBUG] [Thread-124997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:47.676 [DEBUG] [Thread-124997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] Compression: none
2025-09-28T12:54:47.677 [DEBUG] [Thread-124997] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:47.694 [DEBUG] [Thread-124997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:47.695 [DEBUG] [Thread-124997] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:47.695 [DEBUG] [Thread-124997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:54:47.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:54:47.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:47.696 [DEBUG] [Thread-124997] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:47.697 [DEBUG] [Thread-124997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:47.697 [DEBUG] [Thread-124997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:47.697 [DEBUG] [Thread-124997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:54:47.697 [DEBUG] [Thread-124997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:47.716 [INFO] [Thread-124997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:47.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:48.480 [DEBUG] [Thread-124997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:48.480 [DEBUG] [Thread-124997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:48.480 [DEBUG] [Thread-124997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:54:48.521 [DEBUG] [Thread-124997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:48.521 [DEBUG] [Thread-124997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:48.524 [DEBUG] [Thread-124997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:48.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:48.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:54:48.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:54:48.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:54:48.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:48.546 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:54:48.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:48.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:48.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:54:48.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454251 -999.00  +19.30  13.47     32   +2.50 1 1 1 1 1   888    0 16.72 -0.04 ----- 15.1 13.5 197.9 17.7 25.6 -26.9 24.4 -26.0 24.4 -26.1 25.6 -26.0
2025-09-28T12:54:48.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:54:48.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:54:48.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454251
2025-09-28T12:54:48.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:54:48.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:54:48.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:54:48.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:54:48.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:54:48.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:54:29', tmtdew=19.09, humidity=27.3, cloud=0.0, wind=19.43, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:54:48.549 [DEBUG] [Thread-124997] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:48.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-28T12:54:48.644 [DEBUG] [Thread-125000] [transport.py] [_log()] starting thread (client mode): 0x2e38ed10
2025-09-28T12:54:48.644 [DEBUG] [Thread-125000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:54:48.658 [DEBUG] [Thread-125000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:54:48.658 [INFO] [Thread-125000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:54:48.666 [DEBUG] [Thread-125000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:54:48.666 [DEBUG] [Thread-125000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] client lang: <none>
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] server lang: <none>
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] kex follows: False
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] Compression: none
2025-09-28T12:54:48.667 [DEBUG] [Thread-125000] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:54:48.724 [DEBUG] [Thread-125000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:54:48.724 [DEBUG] [Thread-125000] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:54:48.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:54:48.725 [DEBUG] [Thread-125000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:54:48.726 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:54:48.787 [DEBUG] [Thread-125000] [transport.py] [_log()] userauth is OK
2025-09-28T12:54:48.788 [DEBUG] [Thread-125000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:54:48.788 [DEBUG] [Thread-125000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:54:48.788 [DEBUG] [Thread-125000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:54:48.788 [DEBUG] [Thread-125000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:54:48.809 [INFO] [Thread-125000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:54:48.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-28T12:54:48.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:54:49.873 [DEBUG] [Thread-125000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:54:49.873 [DEBUG] [Thread-125000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:54:49.921 [DEBUG] [Thread-125000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:54:49.921 [DEBUG] [Thread-125000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:54:49.929 [DEBUG] [Thread-125000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:54:49.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:54:49.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-28T12:54:49.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-28T12:54:49.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:54:49.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:54:49.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:54:49.964 [DEBUG] [Thread-125000] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:54:49.983 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:49.984 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:58.113 [DEBUG] [Thread-125002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:54:59.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:54:59.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:54:59.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:55:00.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 54, 29), 19.09, 27.3, 0.0, 19.43, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:55:00.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:54:29
2025-09-28T12:55:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:55:00.791 [DEBUG] [Thread-125003] [transport.py] [_log()] starting thread (client mode): 0x2b9dc6a0
2025-09-28T12:55:00.791 [DEBUG] [Thread-125003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:00.811 [DEBUG] [Thread-125003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:55:00.811 [INFO] [Thread-125003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:00.814 [DEBUG] [Thread-125003] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] Compression: none
2025-09-28T12:55:00.815 [DEBUG] [Thread-125003] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:00.831 [DEBUG] [Thread-125003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:00.832 [DEBUG] [Thread-125003] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:00.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:55:00.832 [DEBUG] [Thread-125003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:55:00.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:00.877 [DEBUG] [Thread-125003] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:00.877 [DEBUG] [Thread-125003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:00.877 [DEBUG] [Thread-125003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:00.877 [DEBUG] [Thread-125003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:55:00.877 [DEBUG] [Thread-125003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:00.902 [INFO] [Thread-125003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:00.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:01.546 [DEBUG] [Thread-125003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:01.546 [DEBUG] [Thread-125003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:01.546 [DEBUG] [Thread-125003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:55:01.587 [DEBUG] [Thread-125003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:01.587 [DEBUG] [Thread-125003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:01.589 [DEBUG] [Thread-125003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:01.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:01.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:55:01.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:55:01.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:55:01.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:01.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:55:01.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:55:01.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:55:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:55:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:55:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:55:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:55:01.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:54:29', tmtdew=19.09, humidity=27.3, cloud=0.0, wind=19.43, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:55:01.610 [DEBUG] [Thread-125003] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:01.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-28T12:55:01.694 [DEBUG] [Thread-125006] [transport.py] [_log()] starting thread (client mode): 0x2b98be50
2025-09-28T12:55:01.694 [DEBUG] [Thread-125006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:01.709 [DEBUG] [Thread-125006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:55:01.710 [INFO] [Thread-125006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:01.717 [DEBUG] [Thread-125006] [transport.py] [_log()] Compression: none
2025-09-28T12:55:01.718 [DEBUG] [Thread-125006] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:01.774 [DEBUG] [Thread-125006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:01.775 [DEBUG] [Thread-125006] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:01.775 [DEBUG] [Thread-125006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:55:01.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:55:01.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:01.831 [DEBUG] [Thread-125006] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:01.831 [DEBUG] [Thread-125006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:01.832 [DEBUG] [Thread-125006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:01.832 [DEBUG] [Thread-125006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:55:01.832 [DEBUG] [Thread-125006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:01.850 [INFO] [Thread-125006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:01.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-28T12:55:01.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:02.837 [DEBUG] [Thread-125006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:02.837 [DEBUG] [Thread-125006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:02.887 [DEBUG] [Thread-125006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:02.887 [DEBUG] [Thread-125006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:02.899 [DEBUG] [Thread-125006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:02.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:02.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-28T12:55:02.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-28T12:55:02.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:02.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:02.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:02.952 [DEBUG] [Thread-125006] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:10.517 [DEBUG] [Thread-125008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:12.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:55:12.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:55:12.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-28T12:55:13.139 [DEBUG] [Thread-125009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:13.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 55, 1), 19.49, 26.68, 0.0, 21.47, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:55:13.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:55:01
2025-09-28T12:55:13.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:55:13.820 [DEBUG] [Thread-125010] [transport.py] [_log()] starting thread (client mode): 0x2b9c2c50
2025-09-28T12:55:13.820 [DEBUG] [Thread-125010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:13.833 [DEBUG] [Thread-125010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:55:13.833 [INFO] [Thread-125010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:13.834 [DEBUG] [Thread-125010] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] Compression: none
2025-09-28T12:55:13.835 [DEBUG] [Thread-125010] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:13.844 [DEBUG] [Thread-125010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:13.844 [DEBUG] [Thread-125010] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:13.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:55:13.844 [DEBUG] [Thread-125010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:55:13.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:13.845 [DEBUG] [Thread-125010] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:13.845 [DEBUG] [Thread-125010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:13.845 [DEBUG] [Thread-125010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:13.845 [DEBUG] [Thread-125010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:55:13.845 [DEBUG] [Thread-125010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:13.854 [INFO] [Thread-125010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:13.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:22.497 [DEBUG] [Thread-125010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:22.498 [DEBUG] [Thread-125010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:22.498 [DEBUG] [Thread-125010] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:55:22.538 [DEBUG] [Thread-125010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:22.538 [DEBUG] [Thread-125010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:22.541 [DEBUG] [Thread-125010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:22.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:22.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:55:22.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:55:22.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:55:22.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:22.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:55:22.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:55:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:55:22.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:55:22.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:55:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:55:22.718 [DEBUG] [Thread-125010] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:55:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:55:22.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:55:01', tmtdew=19.49, humidity=26.68, cloud=0.0, wind=21.47, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:55:22.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-28T12:55:22.818 [DEBUG] [Thread-125013] [transport.py] [_log()] starting thread (client mode): 0x2e3f8880
2025-09-28T12:55:22.818 [DEBUG] [Thread-125013] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:22.833 [DEBUG] [Thread-125013] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:55:22.833 [INFO] [Thread-125013] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:55:22.840 [DEBUG] [Thread-125013] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] Compression: none
2025-09-28T12:55:22.841 [DEBUG] [Thread-125013] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:22.904 [DEBUG] [Thread-125013] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:22.904 [DEBUG] [Thread-125013] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:22.905 [DEBUG] [Thread-125013] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:55:22.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:55:22.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:22.960 [DEBUG] [Thread-125013] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:22.960 [DEBUG] [Thread-125013] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:22.960 [DEBUG] [Thread-125013] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:22.960 [DEBUG] [Thread-125013] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:55:22.960 [DEBUG] [Thread-125013] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:22.979 [INFO] [Thread-125013] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:22.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-28T12:55:22.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:23.961 [DEBUG] [Thread-125013] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:23.961 [DEBUG] [Thread-125013] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:24.009 [DEBUG] [Thread-125013] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:24.009 [DEBUG] [Thread-125013] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:24.017 [DEBUG] [Thread-125013] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:24.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:24.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-28T12:55:24.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-28T12:55:24.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:24.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:24.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:24.052 [DEBUG] [Thread-125013] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:28.175 [DEBUG] [Thread-125015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:34.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:55:34.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:55:34.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-28T12:55:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 55, 1), 19.49, 26.68, 0.0, 21.47, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:55:34.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:55:01
2025-09-28T12:55:34.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:55:34.936 [DEBUG] [Thread-125016] [transport.py] [_log()] starting thread (client mode): 0x2b9ca650
2025-09-28T12:55:34.936 [DEBUG] [Thread-125016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:34.956 [DEBUG] [Thread-125016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:55:34.956 [INFO] [Thread-125016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] Compression: none
2025-09-28T12:55:34.957 [DEBUG] [Thread-125016] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:34.968 [DEBUG] [Thread-125016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:55:34.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:55:34.969 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:55:34.969 [DEBUG] [Thread-125016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:34.985 [INFO] [Thread-125016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:34.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:35.735 [DEBUG] [Thread-125016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:35.735 [DEBUG] [Thread-125016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:35.735 [DEBUG] [Thread-125016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:55:35.776 [DEBUG] [Thread-125016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:35.776 [DEBUG] [Thread-125016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:35.779 [DEBUG] [Thread-125016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:35.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:35.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:55:35.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:55:35.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:55:35.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:35.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:55:35.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:35.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:55:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:55:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:55:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:55:35.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:55:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:55:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:55:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:55:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:55:35.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:55:35.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:55:01', tmtdew=19.49, humidity=26.68, cloud=0.0, wind=21.47, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:55:35.804 [DEBUG] [Thread-125016] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:35.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-28T12:55:35.901 [DEBUG] [Thread-125019] [transport.py] [_log()] starting thread (client mode): 0x2b9dd240
2025-09-28T12:55:35.901 [DEBUG] [Thread-125019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:35.917 [DEBUG] [Thread-125019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:55:35.917 [INFO] [Thread-125019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:55:35.925 [DEBUG] [Thread-125019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:35.925 [DEBUG] [Thread-125019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:55:35.925 [DEBUG] [Thread-125019] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:35.925 [DEBUG] [Thread-125019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:35.926 [DEBUG] [Thread-125019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] Compression: none
2025-09-28T12:55:35.927 [DEBUG] [Thread-125019] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:35.984 [DEBUG] [Thread-125019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:35.984 [DEBUG] [Thread-125019] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:35.985 [DEBUG] [Thread-125019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:55:35.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:55:35.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:36.041 [DEBUG] [Thread-125019] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:36.041 [DEBUG] [Thread-125019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:36.041 [DEBUG] [Thread-125019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:36.041 [DEBUG] [Thread-125019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:55:36.041 [DEBUG] [Thread-125019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:36.062 [INFO] [Thread-125019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:36.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-28T12:55:36.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:37.038 [DEBUG] [Thread-125019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:37.039 [DEBUG] [Thread-125019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:37.086 [DEBUG] [Thread-125019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:37.086 [DEBUG] [Thread-125019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:37.096 [DEBUG] [Thread-125019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:37.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:37.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-28T12:55:37.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-28T12:55:37.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:37.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:37.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:37.130 [DEBUG] [Thread-125019] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:43.224 [DEBUG] [Thread-125021 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:47.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:55:47.123 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:55:47.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-28T12:55:47.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 55, 33), 19.42, 26.78, 0.0, 20.03, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:55:47.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:55:33
2025-09-28T12:55:47.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:55:48.010 [DEBUG] [Thread-125022] [transport.py] [_log()] starting thread (client mode): 0x2e38fd00
2025-09-28T12:55:48.010 [DEBUG] [Thread-125022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:48.029 [DEBUG] [Thread-125022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:55:48.030 [INFO] [Thread-125022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] Compression: none
2025-09-28T12:55:48.033 [DEBUG] [Thread-125022] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:48.050 [DEBUG] [Thread-125022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:48.050 [DEBUG] [Thread-125022] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:48.050 [DEBUG] [Thread-125022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:55:48.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:55:48.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:48.051 [DEBUG] [Thread-125022] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:48.051 [DEBUG] [Thread-125022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:48.051 [DEBUG] [Thread-125022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:48.051 [DEBUG] [Thread-125022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:55:48.051 [DEBUG] [Thread-125022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:48.059 [INFO] [Thread-125022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:48.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:48.797 [DEBUG] [Thread-125022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:48.797 [DEBUG] [Thread-125022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:48.797 [DEBUG] [Thread-125022] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:55:48.838 [DEBUG] [Thread-125022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:48.838 [DEBUG] [Thread-125022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:48.840 [DEBUG] [Thread-125022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:48.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55:48.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:55:48.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:55:48.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:55:48.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:48.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:55:48.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:48.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:48.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:55:48.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:55:48.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:55:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:55:33', tmtdew=19.42, humidity=26.78, cloud=0.0, wind=20.03, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:55:48.861 [DEBUG] [Thread-125022] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:48.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-28T12:55:48.945 [DEBUG] [Thread-125025] [transport.py] [_log()] starting thread (client mode): 0x2b9c28f0
2025-09-28T12:55:48.945 [DEBUG] [Thread-125025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:55:48.960 [DEBUG] [Thread-125025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:55:48.960 [INFO] [Thread-125025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] client lang: <none>
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] server lang: <none>
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] kex follows: False
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] Compression: none
2025-09-28T12:55:48.968 [DEBUG] [Thread-125025] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:55:49.023 [DEBUG] [Thread-125025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:55:49.023 [DEBUG] [Thread-125025] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:55:49.023 [DEBUG] [Thread-125025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:55:49.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:55:49.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:55:49.080 [DEBUG] [Thread-125025] [transport.py] [_log()] userauth is OK
2025-09-28T12:55:49.080 [DEBUG] [Thread-125025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:55:49.080 [DEBUG] [Thread-125025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:55:49.080 [DEBUG] [Thread-125025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:55:49.080 [DEBUG] [Thread-125025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:55:49.094 [INFO] [Thread-125025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:55:49.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-28T12:55:49.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:55:50.099 [DEBUG] [Thread-125025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:55:50.099 [DEBUG] [Thread-125025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:55:50.133 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:50.134 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:55:50.148 [DEBUG] [Thread-125025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:55:50.148 [DEBUG] [Thread-125025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:55:50.156 [DEBUG] [Thread-125025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:55:50.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:55: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')
2025-09-28T12:55:50.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-28T12:55:50.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:55:50.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:55:50.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:55:50.187 [DEBUG] [Thread-125025] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:55:58.254 [DEBUG] [Thread-125027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:00.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:56:00.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:56:00.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:56:00.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 55, 33), 19.42, 26.78, 0.0, 20.03, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:56:00.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:55:33
2025-09-28T12:56:00.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:56:01.018 [DEBUG] [Thread-125028] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T12:56:01.018 [DEBUG] [Thread-125028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:01.039 [DEBUG] [Thread-125028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:56:01.039 [INFO] [Thread-125028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] Compression: none
2025-09-28T12:56:01.043 [DEBUG] [Thread-125028] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:01.061 [DEBUG] [Thread-125028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:01.062 [DEBUG] [Thread-125028] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:01.062 [DEBUG] [Thread-125028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:56:01.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:56:01.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:01.064 [DEBUG] [Thread-125028] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:01.065 [DEBUG] [Thread-125028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:01.065 [DEBUG] [Thread-125028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:01.065 [DEBUG] [Thread-125028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:56:01.065 [DEBUG] [Thread-125028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:01.089 [INFO] [Thread-125028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:01.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:01.812 [DEBUG] [Thread-125028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:01.812 [DEBUG] [Thread-125028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:01.813 [DEBUG] [Thread-125028] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:56:01.853 [DEBUG] [Thread-125028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:01.853 [DEBUG] [Thread-125028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:01.856 [DEBUG] [Thread-125028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:01.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:01.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:56:01.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:56:01.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:56:01.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:01.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:56:01.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:56:01.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:56:01.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:56:01.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:56:01.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:56:01.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:56:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:56:01.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:55:33', tmtdew=19.42, humidity=26.78, cloud=0.0, wind=20.03, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:56:01.882 [DEBUG] [Thread-125028] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:01.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:56:01.981 [DEBUG] [Thread-125031] [transport.py] [_log()] starting thread (client mode): 0x2b9ad810
2025-09-28T12:56:01.981 [DEBUG] [Thread-125031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:01.998 [DEBUG] [Thread-125031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:56:01.998 [INFO] [Thread-125031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] Compression: none
2025-09-28T12:56:02.010 [DEBUG] [Thread-125031] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:02.067 [DEBUG] [Thread-125031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:02.067 [DEBUG] [Thread-125031] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:02.067 [DEBUG] [Thread-125031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:56:02.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:56:02.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:02.124 [DEBUG] [Thread-125031] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:02.124 [DEBUG] [Thread-125031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:02.124 [DEBUG] [Thread-125031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:02.124 [DEBUG] [Thread-125031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:56:02.124 [DEBUG] [Thread-125031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:02.147 [INFO] [Thread-125031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:02.147 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:56:02.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:03.205 [DEBUG] [Thread-125031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:03.205 [DEBUG] [Thread-125031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:03.253 [DEBUG] [Thread-125031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:03.253 [DEBUG] [Thread-125031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:03.262 [DEBUG] [Thread-125031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:03.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56: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-28T12:56:03.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-28T12:56:03.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:03.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:03.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:03.299 [DEBUG] [Thread-125031] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:10.568 [DEBUG] [Thread-125033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:13.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:56:13.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:56:13.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-28T12:56:13.305 [DEBUG] [Thread-125034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:13.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 56, 5), 19.5, 26.67, 0.0, 21.3, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:56:13.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:56:05
2025-09-28T12:56:13.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:56:14.138 [DEBUG] [Thread-125035] [transport.py] [_log()] starting thread (client mode): 0x2b9afc70
2025-09-28T12:56:14.138 [DEBUG] [Thread-125035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:14.159 [DEBUG] [Thread-125035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:56:14.159 [INFO] [Thread-125035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:56:14.161 [DEBUG] [Thread-125035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] Compression: none
2025-09-28T12:56:14.162 [DEBUG] [Thread-125035] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:14.181 [DEBUG] [Thread-125035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:14.181 [DEBUG] [Thread-125035] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:14.181 [DEBUG] [Thread-125035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:56:14.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:56:14.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:14.183 [DEBUG] [Thread-125035] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:14.184 [DEBUG] [Thread-125035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:14.184 [DEBUG] [Thread-125035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:14.184 [DEBUG] [Thread-125035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:56:14.184 [DEBUG] [Thread-125035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:14.208 [INFO] [Thread-125035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:14.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:14.929 [DEBUG] [Thread-125035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:14.929 [DEBUG] [Thread-125035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:14.929 [DEBUG] [Thread-125035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:56:14.970 [DEBUG] [Thread-125035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:14.970 [DEBUG] [Thread-125035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:14.972 [DEBUG] [Thread-125035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:14.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:14.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:56:14.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:56:14.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:56:14.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:14.989 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:56:14.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:56:14.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:56:14.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:56:05', tmtdew=19.5, humidity=26.67, cloud=0.0, wind=21.3, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:56:14.990 [DEBUG] [Thread-125035] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:15.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-28T12:56:15.072 [DEBUG] [Thread-125038] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a30
2025-09-28T12:56:15.073 [DEBUG] [Thread-125038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:15.087 [DEBUG] [Thread-125038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:56:15.087 [INFO] [Thread-125038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:15.095 [DEBUG] [Thread-125038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:15.096 [DEBUG] [Thread-125038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:15.097 [DEBUG] [Thread-125038] [transport.py] [_log()] Compression: none
2025-09-28T12:56:15.097 [DEBUG] [Thread-125038] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:15.153 [DEBUG] [Thread-125038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:15.154 [DEBUG] [Thread-125038] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:15.155 [DEBUG] [Thread-125038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:56:15.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:56:15.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:15.212 [DEBUG] [Thread-125038] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:15.212 [DEBUG] [Thread-125038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:15.212 [DEBUG] [Thread-125038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:15.213 [DEBUG] [Thread-125038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:56:15.213 [DEBUG] [Thread-125038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:15.237 [INFO] [Thread-125038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:15.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-28T12:56:15.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:16.169 [DEBUG] [Thread-125038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:16.169 [DEBUG] [Thread-125038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:16.217 [DEBUG] [Thread-125038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:16.217 [DEBUG] [Thread-125038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:16.226 [DEBUG] [Thread-125038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:16.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:16.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-28T12:56:16.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-28T12:56:16.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:16.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:16.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:16.261 [DEBUG] [Thread-125038] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:26.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:56:26.263 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:56:26.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-28T12:56:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 56, 5), 19.5, 26.67, 0.0, 21.3, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:56:26.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:56:05
2025-09-28T12:56:26.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:56:27.133 [DEBUG] [Thread-125040] [transport.py] [_log()] starting thread (client mode): 0x2e38ea70
2025-09-28T12:56:27.133 [DEBUG] [Thread-125040] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:27.153 [DEBUG] [Thread-125040] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:56:27.153 [INFO] [Thread-125040] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] Compression: none
2025-09-28T12:56:27.156 [DEBUG] [Thread-125040] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:27.173 [DEBUG] [Thread-125040] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:27.173 [DEBUG] [Thread-125040] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:27.173 [DEBUG] [Thread-125040] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:56:27.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:56:27.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:27.174 [DEBUG] [Thread-125040] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:27.174 [DEBUG] [Thread-125040] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:27.174 [DEBUG] [Thread-125040] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:27.174 [DEBUG] [Thread-125040] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:56:27.174 [DEBUG] [Thread-125040] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:27.190 [INFO] [Thread-125040] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:27.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:27.921 [DEBUG] [Thread-125040] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:27.921 [DEBUG] [Thread-125040] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:27.921 [DEBUG] [Thread-125040] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:56:27.962 [DEBUG] [Thread-125040] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:27.962 [DEBUG] [Thread-125040] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:27.965 [DEBUG] [Thread-125040] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:27.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:27.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:56:27.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:56:27.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:56:27.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:27.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:56:27.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:27.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:56:27.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:56:05', tmtdew=19.5, humidity=26.67, cloud=0.0, wind=21.3, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:56:27.983 [DEBUG] [Thread-125040] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:28.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-28T12:56:28.067 [DEBUG] [Thread-125043] [transport.py] [_log()] starting thread (client mode): 0x2e38eb60
2025-09-28T12:56:28.067 [DEBUG] [Thread-125043] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:28.085 [DEBUG] [Thread-125043] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:56:28.085 [INFO] [Thread-125043] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:56:28.093 [DEBUG] [Thread-125043] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:28.093 [DEBUG] [Thread-125043] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:56:28.093 [DEBUG] [Thread-125043] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] Compression: none
2025-09-28T12:56:28.094 [DEBUG] [Thread-125043] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:28.152 [DEBUG] [Thread-125043] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:28.152 [DEBUG] [Thread-125043] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:28.153 [DEBUG] [Thread-125043] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:56:28.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:56:28.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:28.208 [DEBUG] [Thread-125043] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:28.208 [DEBUG] [Thread-125043] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:28.208 [DEBUG] [Thread-125043] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:28.208 [DEBUG] [Thread-125043] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:56:28.209 [DEBUG] [Thread-125043] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:28.228 [INFO] [Thread-125043] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:28.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:56:28.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:28.334 [DEBUG] [Thread-125045 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:29.193 [DEBUG] [Thread-125043] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:29.193 [DEBUG] [Thread-125043] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:29.245 [DEBUG] [Thread-125043] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:29.245 [DEBUG] [Thread-125043] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:29.257 [DEBUG] [Thread-125043] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:29.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:29.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')
2025-09-28T12:56:29.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-28T12:56:29.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:29.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:29.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:29.296 [DEBUG] [Thread-125043] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:39.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:56:39.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:56:39.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-28T12:56:39.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 56, 36), 19.45, 27.1, 0.0, 22.28, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:56:39.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:56:36
2025-09-28T12:56:40.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:56:40.153 [DEBUG] [Thread-125046] [transport.py] [_log()] starting thread (client mode): 0x2e3f9030
2025-09-28T12:56:40.153 [DEBUG] [Thread-125046] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:40.175 [DEBUG] [Thread-125046] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:56:40.175 [INFO] [Thread-125046] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:40.178 [DEBUG] [Thread-125046] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:40.179 [DEBUG] [Thread-125046] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:40.179 [DEBUG] [Thread-125046] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:40.179 [DEBUG] [Thread-125046] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:40.179 [DEBUG] [Thread-125046] [transport.py] [_log()] Compression: none
2025-09-28T12:56:40.179 [DEBUG] [Thread-125046] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:40.196 [DEBUG] [Thread-125046] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:40.196 [DEBUG] [Thread-125046] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:40.196 [DEBUG] [Thread-125046] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:56:40.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:56:40.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:40.197 [DEBUG] [Thread-125046] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:40.197 [DEBUG] [Thread-125046] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:40.197 [DEBUG] [Thread-125046] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:40.197 [DEBUG] [Thread-125046] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:56:40.197 [DEBUG] [Thread-125046] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:40.207 [INFO] [Thread-125046] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:40.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:40.939 [DEBUG] [Thread-125046] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:40.939 [DEBUG] [Thread-125046] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:40.939 [DEBUG] [Thread-125046] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:56:40.980 [DEBUG] [Thread-125046] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:40.981 [DEBUG] [Thread-125046] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:40.983 [DEBUG] [Thread-125046] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:40.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:40.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:56:40.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:56:40.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:56:41.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:41.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:56:41.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:56:41.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:56:41.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:56:41.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:56:41.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:56:41.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:56:41.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:56:41.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:56:36', tmtdew=19.45, humidity=27.1, cloud=0.0, wind=22.28, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:56:41.008 [DEBUG] [Thread-125046] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:41.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-28T12:56:41.105 [DEBUG] [Thread-125049] [transport.py] [_log()] starting thread (client mode): 0x2e38d630
2025-09-28T12:56:41.105 [DEBUG] [Thread-125049] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:41.119 [DEBUG] [Thread-125049] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:56:41.119 [INFO] [Thread-125049] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:56:41.127 [DEBUG] [Thread-125049] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:41.127 [DEBUG] [Thread-125049] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] Compression: none
2025-09-28T12:56:41.128 [DEBUG] [Thread-125049] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:41.184 [DEBUG] [Thread-125049] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:41.184 [DEBUG] [Thread-125049] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:41.185 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:56:41.185 [DEBUG] [Thread-125049] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:56:41.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:41.240 [DEBUG] [Thread-125049] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:41.241 [DEBUG] [Thread-125049] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:41.241 [DEBUG] [Thread-125049] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:41.241 [DEBUG] [Thread-125049] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:56:41.241 [DEBUG] [Thread-125049] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:41.260 [INFO] [Thread-125049] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:41.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-28T12:56:41.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:42.248 [DEBUG] [Thread-125049] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:42.248 [DEBUG] [Thread-125049] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:42.296 [DEBUG] [Thread-125049] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:42.297 [DEBUG] [Thread-125049] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:42.305 [DEBUG] [Thread-125049] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:42.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:42.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-28T12:56:42.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-28T12:56:42.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:42.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:42.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:42.342 [DEBUG] [Thread-125049] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:43.377 [DEBUG] [Thread-125051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:50.273 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:50.274 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:56:52.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:56:52.344 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:56:52.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T12:56:52.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 56, 36), 19.45, 27.1, 0.0, 22.28, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:56:52.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:56:36
2025-09-28T12:56:53.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:56:53.187 [DEBUG] [Thread-125052] [transport.py] [_log()] starting thread (client mode): 0x2b9cad70
2025-09-28T12:56:53.187 [DEBUG] [Thread-125052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:53.208 [DEBUG] [Thread-125052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:56:53.208 [INFO] [Thread-125052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:56:53.211 [DEBUG] [Thread-125052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:53.211 [DEBUG] [Thread-125052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:56:53.211 [DEBUG] [Thread-125052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:53.211 [DEBUG] [Thread-125052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] Compression: none
2025-09-28T12:56:53.212 [DEBUG] [Thread-125052] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:53.228 [DEBUG] [Thread-125052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:53.229 [DEBUG] [Thread-125052] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:53.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:56:53.230 [DEBUG] [Thread-125052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:56:53.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:53.231 [DEBUG] [Thread-125052] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:53.231 [DEBUG] [Thread-125052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:53.231 [DEBUG] [Thread-125052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:53.232 [DEBUG] [Thread-125052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:56:53.232 [DEBUG] [Thread-125052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:53.256 [INFO] [Thread-125052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:53.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:53.997 [DEBUG] [Thread-125052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:53.998 [DEBUG] [Thread-125052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:53.998 [DEBUG] [Thread-125052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:56:54.038 [DEBUG] [Thread-125052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:54.038 [DEBUG] [Thread-125052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:54.041 [DEBUG] [Thread-125052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:54.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:54.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:56:54.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:56:54.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:56:54.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:54.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:56:54.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:54.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:56:54.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:56:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:56:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:56:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:56:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:56:54.067 [DEBUG] [Thread-125052] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:54.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:56:36', tmtdew=19.45, humidity=27.1, cloud=0.0, wind=22.28, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:56:54.152 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:56:54.161 [DEBUG] [Thread-125055] [transport.py] [_log()] starting thread (client mode): 0x2e3f87c0
2025-09-28T12:56:54.161 [DEBUG] [Thread-125055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:56:54.176 [DEBUG] [Thread-125055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:56:54.176 [INFO] [Thread-125055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:56:54.184 [DEBUG] [Thread-125055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] client lang: <none>
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] server lang: <none>
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] kex follows: False
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] Compression: none
2025-09-28T12:56:54.185 [DEBUG] [Thread-125055] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:56:54.242 [DEBUG] [Thread-125055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:56:54.243 [DEBUG] [Thread-125055] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:56:54.243 [DEBUG] [Thread-125055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:56:54.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:56:54.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:56:54.301 [DEBUG] [Thread-125055] [transport.py] [_log()] userauth is OK
2025-09-28T12:56:54.301 [DEBUG] [Thread-125055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:56:54.301 [DEBUG] [Thread-125055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:56:54.302 [DEBUG] [Thread-125055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:56:54.302 [DEBUG] [Thread-125055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:56:54.320 [INFO] [Thread-125055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:56:54.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-28T12:56:54.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:56:55.294 [DEBUG] [Thread-125055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:56:55.294 [DEBUG] [Thread-125055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:56:55.343 [DEBUG] [Thread-125055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:56:55.343 [DEBUG] [Thread-125055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:56:55.353 [DEBUG] [Thread-125055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:56:55.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:56:55.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-28T12:56:55.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-28T12:56:55.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:56:55.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:56:55.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:56:55.392 [DEBUG] [Thread-125055] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:56:58.421 [DEBUG] [Thread-125057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:05.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:57:05.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:57:05.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-28T12:57:05.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 56, 36), 19.45, 27.1, 0.0, 22.28, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:57:05.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:56:36
2025-09-28T12:57:06.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:57:06.240 [DEBUG] [Thread-125058] [transport.py] [_log()] starting thread (client mode): 0x2b9af130
2025-09-28T12:57:06.241 [DEBUG] [Thread-125058] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:06.261 [DEBUG] [Thread-125058] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:57:06.261 [INFO] [Thread-125058] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:06.264 [DEBUG] [Thread-125058] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:06.265 [DEBUG] [Thread-125058] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:06.265 [DEBUG] [Thread-125058] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:06.265 [DEBUG] [Thread-125058] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:06.265 [DEBUG] [Thread-125058] [transport.py] [_log()] Compression: none
2025-09-28T12:57:06.265 [DEBUG] [Thread-125058] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:06.273 [DEBUG] [Thread-125058] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:06.273 [DEBUG] [Thread-125058] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:06.274 [DEBUG] [Thread-125058] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:57:06.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:57:06.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:06.276 [DEBUG] [Thread-125058] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:06.276 [DEBUG] [Thread-125058] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:06.276 [DEBUG] [Thread-125058] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:06.277 [DEBUG] [Thread-125058] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:57:06.277 [DEBUG] [Thread-125058] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:06.302 [INFO] [Thread-125058] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:06.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:07.022 [DEBUG] [Thread-125058] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:07.022 [DEBUG] [Thread-125058] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:07.022 [DEBUG] [Thread-125058] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:57:07.063 [DEBUG] [Thread-125058] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:07.064 [DEBUG] [Thread-125058] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:07.067 [DEBUG] [Thread-125058] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:07.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:07.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:57:07.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:57:07.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:57:07.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:07.093 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:57:07.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:07.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:57:07.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:57:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:57:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:57:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:57:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:57:07.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:56:36', tmtdew=19.45, humidity=27.1, cloud=0.0, wind=22.28, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:57:07.096 [DEBUG] [Thread-125058] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57: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-28T12:57:07.193 [DEBUG] [Thread-125061] [transport.py] [_log()] starting thread (client mode): 0x2b9ca470
2025-09-28T12:57:07.193 [DEBUG] [Thread-125061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:07.209 [DEBUG] [Thread-125061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:57:07.209 [INFO] [Thread-125061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:57:07.217 [DEBUG] [Thread-125061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:07.217 [DEBUG] [Thread-125061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:57:07.217 [DEBUG] [Thread-125061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:07.217 [DEBUG] [Thread-125061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:07.217 [DEBUG] [Thread-125061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:07.218 [DEBUG] [Thread-125061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:07.219 [DEBUG] [Thread-125061] [transport.py] [_log()] Compression: none
2025-09-28T12:57:07.219 [DEBUG] [Thread-125061] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:07.276 [DEBUG] [Thread-125061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:07.277 [DEBUG] [Thread-125061] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:07.277 [DEBUG] [Thread-125061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:57:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:57:07.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:07.333 [DEBUG] [Thread-125061] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:07.333 [DEBUG] [Thread-125061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:07.333 [DEBUG] [Thread-125061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:07.333 [DEBUG] [Thread-125061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:57:07.333 [DEBUG] [Thread-125061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:07.352 [INFO] [Thread-125061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:07.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-28T12:57:07.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:08.338 [DEBUG] [Thread-125061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:08.339 [DEBUG] [Thread-125061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:08.387 [DEBUG] [Thread-125061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:08.387 [DEBUG] [Thread-125061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:08.398 [DEBUG] [Thread-125061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:08.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:08.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')
2025-09-28T12:57:08.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-28T12:57:08.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:08.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:08.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:08.443 [DEBUG] [Thread-125061] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:10.595 [DEBUG] [Thread-125063 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:13.448 [DEBUG] [Thread-125064 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:18.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:57:18.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:57:18.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-28T12:57:19.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 57, 8), 19.41, 27.13, 0.0, 15.41, 18.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:57:19.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:57:08
2025-09-28T12:57:19.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:57:19.281 [DEBUG] [Thread-125065] [transport.py] [_log()] starting thread (client mode): 0x2e34a410
2025-09-28T12:57:19.281 [DEBUG] [Thread-125065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:19.301 [DEBUG] [Thread-125065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:57:19.302 [INFO] [Thread-125065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:19.305 [DEBUG] [Thread-125065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] Compression: none
2025-09-28T12:57:19.306 [DEBUG] [Thread-125065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:19.323 [DEBUG] [Thread-125065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:19.323 [DEBUG] [Thread-125065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:19.324 [DEBUG] [Thread-125065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:57:19.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:57:19.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:19.326 [DEBUG] [Thread-125065] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:19.326 [DEBUG] [Thread-125065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:19.326 [DEBUG] [Thread-125065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:19.326 [DEBUG] [Thread-125065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:57:19.326 [DEBUG] [Thread-125065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:19.349 [INFO] [Thread-125065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:19.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:20.060 [DEBUG] [Thread-125065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:20.060 [DEBUG] [Thread-125065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:20.060 [DEBUG] [Thread-125065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:57:20.101 [DEBUG] [Thread-125065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:20.102 [DEBUG] [Thread-125065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:20.104 [DEBUG] [Thread-125065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:20.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:20.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:57:20.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:57:20.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:57:20.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:20.126 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:57:20.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:57:20.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:57:20.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:57:20.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:57:20.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:57:20.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:57:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:57:20.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:57:08', tmtdew=19.41, humidity=27.13, cloud=0.0, wind=15.41, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:57:20.129 [DEBUG] [Thread-125065] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:20.225 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:57:20.235 [DEBUG] [Thread-125068] [transport.py] [_log()] starting thread (client mode): 0x2e3fa200
2025-09-28T12:57:20.235 [DEBUG] [Thread-125068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:20.253 [DEBUG] [Thread-125068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:57:20.253 [INFO] [Thread-125068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:57:20.260 [DEBUG] [Thread-125068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:20.261 [DEBUG] [Thread-125068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:20.262 [DEBUG] [Thread-125068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:20.263 [DEBUG] [Thread-125068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:20.263 [DEBUG] [Thread-125068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:20.263 [DEBUG] [Thread-125068] [transport.py] [_log()] Compression: none
2025-09-28T12:57:20.263 [DEBUG] [Thread-125068] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:20.324 [DEBUG] [Thread-125068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:20.324 [DEBUG] [Thread-125068] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:20.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:57:20.326 [DEBUG] [Thread-125068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:57:20.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:20.382 [DEBUG] [Thread-125068] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:20.382 [DEBUG] [Thread-125068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:20.382 [DEBUG] [Thread-125068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:20.382 [DEBUG] [Thread-125068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:57:20.383 [DEBUG] [Thread-125068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:20.403 [INFO] [Thread-125068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:20.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-28T12:57:20.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:21.354 [DEBUG] [Thread-125068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:21.355 [DEBUG] [Thread-125068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:21.402 [DEBUG] [Thread-125068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:21.402 [DEBUG] [Thread-125068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:21.411 [DEBUG] [Thread-125068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:21.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:21.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')
2025-09-28T12:57:21.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-28T12:57:21.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:21.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:21.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:21.448 [DEBUG] [Thread-125068] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:28.477 [DEBUG] [Thread-125070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:31.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:57:31.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:57:31.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-28T12:57:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 57, 8), 19.41, 27.13, 0.0, 15.41, 18.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:57:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:57:08
2025-09-28T12:57:32.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:57:32.302 [DEBUG] [Thread-125071] [transport.py] [_log()] starting thread (client mode): 0x2e3f85e0
2025-09-28T12:57:32.302 [DEBUG] [Thread-125071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:32.321 [DEBUG] [Thread-125071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:57:32.322 [INFO] [Thread-125071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:32.323 [DEBUG] [Thread-125071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:32.324 [DEBUG] [Thread-125071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:32.324 [DEBUG] [Thread-125071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:32.324 [DEBUG] [Thread-125071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:32.324 [DEBUG] [Thread-125071] [transport.py] [_log()] Compression: none
2025-09-28T12:57:32.324 [DEBUG] [Thread-125071] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:32.336 [DEBUG] [Thread-125071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:32.337 [DEBUG] [Thread-125071] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:32.337 [DEBUG] [Thread-125071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:57:32.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:57:32.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:32.339 [DEBUG] [Thread-125071] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:32.339 [DEBUG] [Thread-125071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:32.340 [DEBUG] [Thread-125071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:32.340 [DEBUG] [Thread-125071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:57:32.340 [DEBUG] [Thread-125071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:32.354 [INFO] [Thread-125071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:32.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:33.085 [DEBUG] [Thread-125071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:33.085 [DEBUG] [Thread-125071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:33.085 [DEBUG] [Thread-125071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:57:33.126 [DEBUG] [Thread-125071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:33.126 [DEBUG] [Thread-125071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:33.129 [DEBUG] [Thread-125071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:33.139 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:33.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:57:33.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:57:33.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:57:33.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:33.148 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:57:33.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:33.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:57:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:57:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:57:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:57:33.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:57:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:57:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:57:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:57:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:57:33.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:57:33.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:57:08', tmtdew=19.41, humidity=27.13, cloud=0.0, wind=15.41, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:57:33.151 [DEBUG] [Thread-125071] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:33.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-28T12:57:33.254 [DEBUG] [Thread-125074] [transport.py] [_log()] starting thread (client mode): 0x2e3fabc0
2025-09-28T12:57:33.254 [DEBUG] [Thread-125074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:33.269 [DEBUG] [Thread-125074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:57:33.269 [INFO] [Thread-125074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:33.278 [DEBUG] [Thread-125074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:33.279 [DEBUG] [Thread-125074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:33.280 [DEBUG] [Thread-125074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:33.280 [DEBUG] [Thread-125074] [transport.py] [_log()] Compression: none
2025-09-28T12:57:33.280 [DEBUG] [Thread-125074] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:33.336 [DEBUG] [Thread-125074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:33.337 [DEBUG] [Thread-125074] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:33.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:57:33.338 [DEBUG] [Thread-125074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:57:33.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:33.397 [DEBUG] [Thread-125074] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:33.397 [DEBUG] [Thread-125074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:33.397 [DEBUG] [Thread-125074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:33.397 [DEBUG] [Thread-125074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:57:33.397 [DEBUG] [Thread-125074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:33.416 [INFO] [Thread-125074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:33.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T12:57:33.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:34.387 [DEBUG] [Thread-125074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:34.388 [DEBUG] [Thread-125074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:34.435 [DEBUG] [Thread-125074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:34.435 [DEBUG] [Thread-125074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:34.445 [DEBUG] [Thread-125074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:34.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:34.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-28T12:57:34.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-28T12:57:34.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:34.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:34.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:34.480 [DEBUG] [Thread-125074] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:43.527 [DEBUG] [Thread-125076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:44.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:57:44.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:57:44.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-28T12:57:45.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 57, 40), 19.13, 27.43, 0.0, 19.85, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:57:45.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:57:40
2025-09-28T12:57:45.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:57:45.325 [DEBUG] [Thread-125077] [transport.py] [_log()] starting thread (client mode): 0x2b95e290
2025-09-28T12:57:45.325 [DEBUG] [Thread-125077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:45.341 [DEBUG] [Thread-125077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:57:45.341 [INFO] [Thread-125077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:57:45.344 [DEBUG] [Thread-125077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:45.344 [DEBUG] [Thread-125077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:57:45.344 [DEBUG] [Thread-125077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:45.344 [DEBUG] [Thread-125077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] Compression: none
2025-09-28T12:57:45.345 [DEBUG] [Thread-125077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:45.361 [DEBUG] [Thread-125077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:45.361 [DEBUG] [Thread-125077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:45.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:57:45.362 [DEBUG] [Thread-125077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:57:45.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:45.365 [DEBUG] [Thread-125077] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:45.365 [DEBUG] [Thread-125077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:45.365 [DEBUG] [Thread-125077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:45.365 [DEBUG] [Thread-125077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:57:45.365 [DEBUG] [Thread-125077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:45.389 [INFO] [Thread-125077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:45.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:46.153 [DEBUG] [Thread-125077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:46.154 [DEBUG] [Thread-125077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:46.154 [DEBUG] [Thread-125077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:57:46.194 [DEBUG] [Thread-125077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:46.194 [DEBUG] [Thread-125077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:46.198 [DEBUG] [Thread-125077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:46.210 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:46.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:57:46.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:57:46.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:57:46.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:46.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:57:46.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:57:46.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:57:40', tmtdew=19.13, humidity=27.43, cloud=0.0, wind=19.85, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:57:46.217 [DEBUG] [Thread-125077] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:46.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-28T12:57:46.301 [DEBUG] [Thread-125080] [transport.py] [_log()] starting thread (client mode): 0x2e38f550
2025-09-28T12:57:46.301 [DEBUG] [Thread-125080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:46.315 [DEBUG] [Thread-125080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:57:46.315 [INFO] [Thread-125080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:57:46.322 [DEBUG] [Thread-125080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] Compression: none
2025-09-28T12:57:46.323 [DEBUG] [Thread-125080] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:46.380 [DEBUG] [Thread-125080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:46.380 [DEBUG] [Thread-125080] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:46.380 [DEBUG] [Thread-125080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:57:46.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:57:46.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:46.437 [DEBUG] [Thread-125080] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:46.437 [DEBUG] [Thread-125080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:46.437 [DEBUG] [Thread-125080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:46.437 [DEBUG] [Thread-125080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:57:46.437 [DEBUG] [Thread-125080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:46.461 [INFO] [Thread-125080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:46.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-28T12:57:46.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:47.420 [DEBUG] [Thread-125080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:47.420 [DEBUG] [Thread-125080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:47.468 [DEBUG] [Thread-125080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:47.468 [DEBUG] [Thread-125080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:47.477 [DEBUG] [Thread-125080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:47.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:47.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-28T12:57:47.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-28T12:57:47.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:47.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:47.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:47.512 [DEBUG] [Thread-125080] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:50.416 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:50.417 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:57:57.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:57:57.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-28T12:57:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 57, 40), 19.13, 27.43, 0.0, 19.85, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:57:58.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:57:40
2025-09-28T12:57:58.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:57:58.347 [DEBUG] [Thread-125082] [transport.py] [_log()] starting thread (client mode): 0x2b9f3250
2025-09-28T12:57:58.347 [DEBUG] [Thread-125082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:58.366 [DEBUG] [Thread-125082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:57:58.366 [INFO] [Thread-125082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:57:58.369 [DEBUG] [Thread-125082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:58.370 [DEBUG] [Thread-125082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:58.371 [DEBUG] [Thread-125082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:58.371 [DEBUG] [Thread-125082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:58.371 [DEBUG] [Thread-125082] [transport.py] [_log()] Compression: none
2025-09-28T12:57:58.371 [DEBUG] [Thread-125082] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:58.387 [DEBUG] [Thread-125082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:58.388 [DEBUG] [Thread-125082] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:58.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:57:58.389 [DEBUG] [Thread-125082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:57:58.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:58.392 [DEBUG] [Thread-125082] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:58.392 [DEBUG] [Thread-125082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:58.392 [DEBUG] [Thread-125082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:58.392 [DEBUG] [Thread-125082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:57:58.393 [DEBUG] [Thread-125082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:58.410 [INFO] [Thread-125082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:58.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:57:58.558 [DEBUG] [Thread-125084 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:57:59.196 [DEBUG] [Thread-125082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:57:59.197 [DEBUG] [Thread-125082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:57:59.198 [DEBUG] [Thread-125082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:57:59.237 [DEBUG] [Thread-125082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:57:59.237 [DEBUG] [Thread-125082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:57:59.241 [DEBUG] [Thread-125082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:57:59.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:57:59.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:57:59.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:57:59.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:57:59.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:57:59.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:57:59.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:57:59.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:57:59.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:57:59.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:57:59.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:57:59.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:57:59.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:57:59.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:57:40', tmtdew=19.13, humidity=27.43, cloud=0.0, wind=19.85, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:57:59.257 [DEBUG] [Thread-125082] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:57:59.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-28T12:57:59.350 [DEBUG] [Thread-125086] [transport.py] [_log()] starting thread (client mode): 0x2e34a6b0
2025-09-28T12:57:59.350 [DEBUG] [Thread-125086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:57:59.365 [DEBUG] [Thread-125086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:57:59.365 [INFO] [Thread-125086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] client lang: <none>
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] server lang: <none>
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] kex follows: False
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:57:59.373 [DEBUG] [Thread-125086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:57:59.374 [DEBUG] [Thread-125086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:57:59.374 [DEBUG] [Thread-125086] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:57:59.374 [DEBUG] [Thread-125086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:57:59.374 [DEBUG] [Thread-125086] [transport.py] [_log()] Compression: none
2025-09-28T12:57:59.374 [DEBUG] [Thread-125086] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:57:59.432 [DEBUG] [Thread-125086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:57:59.433 [DEBUG] [Thread-125086] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:57:59.433 [DEBUG] [Thread-125086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:57:59.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:57:59.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:57:59.489 [DEBUG] [Thread-125086] [transport.py] [_log()] userauth is OK
2025-09-28T12:57:59.490 [DEBUG] [Thread-125086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:57:59.490 [DEBUG] [Thread-125086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:57:59.490 [DEBUG] [Thread-125086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:57:59.490 [DEBUG] [Thread-125086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:57:59.513 [INFO] [Thread-125086] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:57:59.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-28T12:57:59.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:00.496 [DEBUG] [Thread-125086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:00.496 [DEBUG] [Thread-125086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:00.543 [DEBUG] [Thread-125086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:00.543 [DEBUG] [Thread-125086] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:00.553 [DEBUG] [Thread-125086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:00.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:00.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-28T12:58:00.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-28T12:58:00.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:00.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:00.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:00.588 [DEBUG] [Thread-125086] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:10.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:58:10.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:58:10.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-28T12:58:10.643 [DEBUG] [Thread-125088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:11.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 57, 40), 19.13, 27.43, 0.0, 19.85, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:58:11.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:57:40
2025-09-28T12:58:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:58:11.431 [DEBUG] [Thread-125089] [transport.py] [_log()] starting thread (client mode): 0x2b95d900
2025-09-28T12:58:11.431 [DEBUG] [Thread-125089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:11.451 [DEBUG] [Thread-125089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:58:11.451 [INFO] [Thread-125089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:11.454 [DEBUG] [Thread-125089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:11.455 [DEBUG] [Thread-125089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:11.455 [DEBUG] [Thread-125089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:11.455 [DEBUG] [Thread-125089] [transport.py] [_log()] Compression: none
2025-09-28T12:58:11.455 [DEBUG] [Thread-125089] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:11.469 [DEBUG] [Thread-125089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:11.469 [DEBUG] [Thread-125089] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:11.469 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:58:11.470 [DEBUG] [Thread-125089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:58:11.470 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:11.512 [DEBUG] [Thread-125089] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:11.512 [DEBUG] [Thread-125089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:11.512 [DEBUG] [Thread-125089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:11.512 [DEBUG] [Thread-125089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:58:11.512 [DEBUG] [Thread-125089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:11.527 [INFO] [Thread-125089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:11.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:12.264 [DEBUG] [Thread-125089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:12.265 [DEBUG] [Thread-125089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:12.265 [DEBUG] [Thread-125089] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:58:12.305 [DEBUG] [Thread-125089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:12.306 [DEBUG] [Thread-125089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:12.308 [DEBUG] [Thread-125089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:12.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:12.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:58:12.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:58:12.323 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:58:12.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:12.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:58:12.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:12.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:58:12.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:58:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:58:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:58:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:58:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:58:12.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:57:40', tmtdew=19.13, humidity=27.43, cloud=0.0, wind=19.85, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:58:12.334 [DEBUG] [Thread-125089] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:12.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-28T12:58:12.429 [DEBUG] [Thread-125092] [transport.py] [_log()] starting thread (client mode): 0x2e3f96c0
2025-09-28T12:58:12.429 [DEBUG] [Thread-125092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:12.443 [DEBUG] [Thread-125092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:58:12.443 [INFO] [Thread-125092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:58:12.453 [DEBUG] [Thread-125092] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:12.453 [DEBUG] [Thread-125092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:12.454 [DEBUG] [Thread-125092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:12.455 [DEBUG] [Thread-125092] [transport.py] [_log()] Compression: none
2025-09-28T12:58:12.455 [DEBUG] [Thread-125092] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:12.509 [DEBUG] [Thread-125092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:12.510 [DEBUG] [Thread-125092] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:12.510 [DEBUG] [Thread-125092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:58:12.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:58:12.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:12.565 [DEBUG] [Thread-125092] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:12.565 [DEBUG] [Thread-125092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:12.565 [DEBUG] [Thread-125092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:12.565 [DEBUG] [Thread-125092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:58:12.565 [DEBUG] [Thread-125092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:12.584 [INFO] [Thread-125092] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:12.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-28T12:58:12.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:13.558 [DEBUG] [Thread-125092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:13.558 [DEBUG] [Thread-125092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:13.603 [DEBUG] [Thread-125094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:13.606 [DEBUG] [Thread-125092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:13.606 [DEBUG] [Thread-125092] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:13.615 [DEBUG] [Thread-125092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:13.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58: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-28T12:58: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-28T12:58:13.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:13.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:13.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:13.647 [DEBUG] [Thread-125092] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:23.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:58:23.649 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:58:23.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-28T12:58:24.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 58, 12), 19.03, 27.63, 0.0, 19.0, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:58:24.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:58:12
2025-09-28T12:58:24.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:58:24.486 [DEBUG] [Thread-125095] [transport.py] [_log()] starting thread (client mode): 0x2b9f3ca0
2025-09-28T12:58:24.487 [DEBUG] [Thread-125095] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:24.506 [DEBUG] [Thread-125095] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:58:24.506 [INFO] [Thread-125095] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:58:24.509 [DEBUG] [Thread-125095] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:24.509 [DEBUG] [Thread-125095] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:58:24.509 [DEBUG] [Thread-125095] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:24.510 [DEBUG] [Thread-125095] [transport.py] [_log()] Compression: none
2025-09-28T12:58:24.511 [DEBUG] [Thread-125095] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:24.527 [DEBUG] [Thread-125095] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:24.527 [DEBUG] [Thread-125095] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:24.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:58:24.528 [DEBUG] [Thread-125095] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:58:24.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:24.530 [DEBUG] [Thread-125095] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:24.530 [DEBUG] [Thread-125095] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:24.530 [DEBUG] [Thread-125095] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:24.530 [DEBUG] [Thread-125095] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:58:24.530 [DEBUG] [Thread-125095] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:24.554 [INFO] [Thread-125095] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:24.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:25.316 [DEBUG] [Thread-125095] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:25.317 [DEBUG] [Thread-125095] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:25.317 [DEBUG] [Thread-125095] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:58:25.357 [DEBUG] [Thread-125095] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:25.358 [DEBUG] [Thread-125095] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:25.361 [DEBUG] [Thread-125095] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:25.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:25.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:58:25.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:58:25.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:58:25.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:25.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:58:25.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:25.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:58:25.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:58:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:58:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:58:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:58:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:58:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:58:12', tmtdew=19.03, humidity=27.63, cloud=0.0, wind=19.0, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:58:25.383 [DEBUG] [Thread-125095] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58: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-28T12:58:25.477 [DEBUG] [Thread-125098] [transport.py] [_log()] starting thread (client mode): 0x2b9f32b0
2025-09-28T12:58:25.478 [DEBUG] [Thread-125098] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:25.492 [DEBUG] [Thread-125098] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:58:25.492 [INFO] [Thread-125098] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] Compression: none
2025-09-28T12:58:25.500 [DEBUG] [Thread-125098] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:25.561 [DEBUG] [Thread-125098] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:25.562 [DEBUG] [Thread-125098] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:25.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:58:25.563 [DEBUG] [Thread-125098] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:58:25.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:25.617 [DEBUG] [Thread-125098] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:25.618 [DEBUG] [Thread-125098] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:25.618 [DEBUG] [Thread-125098] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:25.618 [DEBUG] [Thread-125098] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:58:25.618 [DEBUG] [Thread-125098] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:25.636 [INFO] [Thread-125098] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:25.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-28T12:58:25.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:26.610 [DEBUG] [Thread-125098] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:26.610 [DEBUG] [Thread-125098] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:26.658 [DEBUG] [Thread-125098] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:26.659 [DEBUG] [Thread-125098] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:26.671 [DEBUG] [Thread-125098] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:26.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58: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')
2025-09-28T12:58:26.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-28T12:58:26.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:26.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:26.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:26.709 [DEBUG] [Thread-125098] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:28.628 [DEBUG] [Thread-125100 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:36.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:58:36.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:58:36.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-28T12:58:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 58, 12), 19.03, 27.63, 0.0, 19.0, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:58:37.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:58:12
2025-09-28T12:58:37.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:58:37.540 [DEBUG] [Thread-125101] [transport.py] [_log()] starting thread (client mode): 0x2b95e770
2025-09-28T12:58:37.540 [DEBUG] [Thread-125101] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:37.560 [DEBUG] [Thread-125101] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:58:37.560 [INFO] [Thread-125101] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:58:37.564 [DEBUG] [Thread-125101] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:37.564 [DEBUG] [Thread-125101] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] Compression: none
2025-09-28T12:58:37.565 [DEBUG] [Thread-125101] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:37.581 [DEBUG] [Thread-125101] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:37.582 [DEBUG] [Thread-125101] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:37.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:58:37.583 [DEBUG] [Thread-125101] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:58:37.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:37.585 [DEBUG] [Thread-125101] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:37.585 [DEBUG] [Thread-125101] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:37.585 [DEBUG] [Thread-125101] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:37.586 [DEBUG] [Thread-125101] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:58:37.586 [DEBUG] [Thread-125101] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:37.610 [INFO] [Thread-125101] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:37.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:38.357 [DEBUG] [Thread-125101] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:38.357 [DEBUG] [Thread-125101] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:38.357 [DEBUG] [Thread-125101] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:58:38.398 [DEBUG] [Thread-125101] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:38.398 [DEBUG] [Thread-125101] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:38.401 [DEBUG] [Thread-125101] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:38.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:38.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:58:38.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:58:38.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:58:38.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:38.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:58:38.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:38.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:38.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:58:38.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:58:38.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:58:38.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:58:38.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:58:38.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:58:38.427 [DEBUG] [Thread-125101] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:38.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:58:38.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:58:38.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:58:38.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:58:38.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:58:12', tmtdew=19.03, humidity=27.63, cloud=0.0, wind=19.0, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:58:38.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-28T12:58:38.524 [DEBUG] [Thread-125104] [transport.py] [_log()] starting thread (client mode): 0x2b95e1a0
2025-09-28T12:58:38.524 [DEBUG] [Thread-125104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:38.539 [DEBUG] [Thread-125104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:58:38.539 [INFO] [Thread-125104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:38.547 [DEBUG] [Thread-125104] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] Compression: none
2025-09-28T12:58:38.548 [DEBUG] [Thread-125104] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:38.606 [DEBUG] [Thread-125104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:38.607 [DEBUG] [Thread-125104] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:38.607 [DEBUG] [Thread-125104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:58:38.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:58:38.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:38.663 [DEBUG] [Thread-125104] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:38.663 [DEBUG] [Thread-125104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:38.663 [DEBUG] [Thread-125104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:38.663 [DEBUG] [Thread-125104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:58:38.663 [DEBUG] [Thread-125104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:38.683 [INFO] [Thread-125104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:38.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-28T12:58:38.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:39.634 [DEBUG] [Thread-125104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:39.635 [DEBUG] [Thread-125104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:39.682 [DEBUG] [Thread-125104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:39.682 [DEBUG] [Thread-125104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:39.692 [DEBUG] [Thread-125104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:39.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:39.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-28T12:58:39.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-28T12:58:39.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:39.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:39.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:39.727 [DEBUG] [Thread-125104] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:43.678 [DEBUG] [Thread-125106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:49.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:58:49.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:58:49.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-28T12:58:50.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 58, 44), 19.01, 27.75, 0.0, 19.04, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:58:50.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:58:44
2025-09-28T12:58:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:58:50.558 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:50.559 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:58:50.592 [DEBUG] [Thread-125107] [transport.py] [_log()] starting thread (client mode): 0x2b95f700
2025-09-28T12:58:50.592 [DEBUG] [Thread-125107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:50.614 [DEBUG] [Thread-125107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:58:50.614 [INFO] [Thread-125107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] Compression: none
2025-09-28T12:58:50.617 [DEBUG] [Thread-125107] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:58:50.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:58:50.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:58:50.634 [DEBUG] [Thread-125107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:50.643 [INFO] [Thread-125107] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:50.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:51.346 [DEBUG] [Thread-125107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:51.346 [DEBUG] [Thread-125107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:51.346 [DEBUG] [Thread-125107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:58:51.387 [DEBUG] [Thread-125107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:51.387 [DEBUG] [Thread-125107] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:51.389 [DEBUG] [Thread-125107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:51.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:51.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:58:51.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:58:51.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:58:51.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:51.400 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:58:51.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:58:51.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:58:44', tmtdew=19.01, humidity=27.75, cloud=0.0, wind=19.04, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:58:51.401 [DEBUG] [Thread-125107] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:51.478 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T12:58:51.487 [DEBUG] [Thread-125110] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T12:58:51.488 [DEBUG] [Thread-125110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:58:51.502 [DEBUG] [Thread-125110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:58:51.502 [INFO] [Thread-125110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] client lang: <none>
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] server lang: <none>
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] kex follows: False
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] Compression: none
2025-09-28T12:58:51.510 [DEBUG] [Thread-125110] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:58:51.568 [DEBUG] [Thread-125110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:58:51.568 [DEBUG] [Thread-125110] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:58:51.568 [DEBUG] [Thread-125110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:58:51.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:58:51.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:58:51.625 [DEBUG] [Thread-125110] [transport.py] [_log()] userauth is OK
2025-09-28T12:58:51.625 [DEBUG] [Thread-125110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:58:51.625 [DEBUG] [Thread-125110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:58:51.625 [DEBUG] [Thread-125110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:58:51.625 [DEBUG] [Thread-125110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:58:51.639 [INFO] [Thread-125110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:58:51.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-28T12:58:51.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:58:52.580 [DEBUG] [Thread-125110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:58:52.580 [DEBUG] [Thread-125110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:58:52.629 [DEBUG] [Thread-125110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:58:52.629 [DEBUG] [Thread-125110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:58:52.637 [DEBUG] [Thread-125110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:58:52.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:58:52.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-28T12:58: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') -> 00000000
2025-09-28T12:58:52.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:58:52.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:58:52.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:58:52.669 [DEBUG] [Thread-125110] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:58:58.708 [DEBUG] [Thread-125112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:59:02.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:59:02.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-28T12:59:03.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 58, 44), 19.01, 27.75, 0.0, 19.04, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:59:03.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:58:44
2025-09-28T12:59:03.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:59:03.528 [DEBUG] [Thread-125113] [transport.py] [_log()] starting thread (client mode): 0x2b9848e0
2025-09-28T12:59:03.528 [DEBUG] [Thread-125113] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:03.549 [DEBUG] [Thread-125113] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:59:03.549 [INFO] [Thread-125113] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] Compression: none
2025-09-28T12:59:03.553 [DEBUG] [Thread-125113] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:03.564 [DEBUG] [Thread-125113] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:03.565 [DEBUG] [Thread-125113] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:03.565 [DEBUG] [Thread-125113] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:59:03.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:59:03.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:03.566 [DEBUG] [Thread-125113] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:03.567 [DEBUG] [Thread-125113] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:03.567 [DEBUG] [Thread-125113] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:03.567 [DEBUG] [Thread-125113] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:59:03.567 [DEBUG] [Thread-125113] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:03.587 [INFO] [Thread-125113] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:03.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:04.295 [DEBUG] [Thread-125113] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:04.296 [DEBUG] [Thread-125113] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:04.296 [DEBUG] [Thread-125113] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:59:04.336 [DEBUG] [Thread-125113] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:04.336 [DEBUG] [Thread-125113] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:04.338 [DEBUG] [Thread-125113] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:04.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:04.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:59:04.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:59:04.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:59:04.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:04.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:59:04.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:04.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:04.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:59:04.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:59:04.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:59:04.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:59:04.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:59:04.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:59:04.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:59:04.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:59:04.359 [DEBUG] [Thread-125113] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:04.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:59:04.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:59:04.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:58:44', tmtdew=19.01, humidity=27.75, cloud=0.0, wind=19.04, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:59:04.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-28T12:59:04.456 [DEBUG] [Thread-125116] [transport.py] [_log()] starting thread (client mode): 0x2b985120
2025-09-28T12:59:04.456 [DEBUG] [Thread-125116] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:04.470 [DEBUG] [Thread-125116] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:59:04.471 [INFO] [Thread-125116] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:59:04.478 [DEBUG] [Thread-125116] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:04.478 [DEBUG] [Thread-125116] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:59:04.478 [DEBUG] [Thread-125116] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:04.479 [DEBUG] [Thread-125116] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] Compression: none
2025-09-28T12:59:04.480 [DEBUG] [Thread-125116] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:04.538 [DEBUG] [Thread-125116] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:04.538 [DEBUG] [Thread-125116] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:04.539 [DEBUG] [Thread-125116] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:59:04.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:59:04.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:04.594 [DEBUG] [Thread-125116] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:04.594 [DEBUG] [Thread-125116] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:04.595 [DEBUG] [Thread-125116] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:04.595 [DEBUG] [Thread-125116] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:59:04.595 [DEBUG] [Thread-125116] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:04.615 [INFO] [Thread-125116] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:04.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-28T12:59:04.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:05.607 [DEBUG] [Thread-125116] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:05.607 [DEBUG] [Thread-125116] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:05.655 [DEBUG] [Thread-125116] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:05.655 [DEBUG] [Thread-125116] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:05.664 [DEBUG] [Thread-125116] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:05.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:05.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-28T12:59:05.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') -> 00000000
2025-09-28T12:59:05.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:05.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:05.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:05.700 [DEBUG] [Thread-125116] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:10.701 [DEBUG] [Thread-125118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:13.743 [DEBUG] [Thread-125119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:15.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:59:15.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:59:15.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-28T12:59:16.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 58, 44), 19.01, 27.75, 0.0, 19.04, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:59:16.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:58:44
2025-09-28T12:59:16.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:59:16.527 [DEBUG] [Thread-125120] [transport.py] [_log()] starting thread (client mode): 0x2b95fcd0
2025-09-28T12:59:16.527 [DEBUG] [Thread-125120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:16.548 [DEBUG] [Thread-125120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:59:16.548 [INFO] [Thread-125120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] Compression: none
2025-09-28T12:59:16.552 [DEBUG] [Thread-125120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:16.568 [DEBUG] [Thread-125120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:16.568 [DEBUG] [Thread-125120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:16.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:59:16.569 [DEBUG] [Thread-125120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:59:16.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:16.571 [DEBUG] [Thread-125120] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:16.571 [DEBUG] [Thread-125120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:16.571 [DEBUG] [Thread-125120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:16.571 [DEBUG] [Thread-125120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:59:16.571 [DEBUG] [Thread-125120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:16.595 [INFO] [Thread-125120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:16.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:17.345 [DEBUG] [Thread-125120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:17.345 [DEBUG] [Thread-125120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:17.345 [DEBUG] [Thread-125120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:59:17.386 [DEBUG] [Thread-125120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:17.386 [DEBUG] [Thread-125120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:17.388 [DEBUG] [Thread-125120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:17.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:17.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:59:17.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:59:17.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:59:17.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:17.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:59:17.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:59:17.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:58:44', tmtdew=19.01, humidity=27.75, cloud=0.0, wind=19.04, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:59:17.407 [DEBUG] [Thread-125120] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:17.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-28T12:59:17.491 [DEBUG] [Thread-125123] [transport.py] [_log()] starting thread (client mode): 0x2b9ae1d0
2025-09-28T12:59:17.491 [DEBUG] [Thread-125123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:17.507 [DEBUG] [Thread-125123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:59:17.507 [INFO] [Thread-125123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] Compression: none
2025-09-28T12:59:17.515 [DEBUG] [Thread-125123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:17.572 [DEBUG] [Thread-125123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:17.572 [DEBUG] [Thread-125123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:17.572 [DEBUG] [Thread-125123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:59:17.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:59:17.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:17.629 [DEBUG] [Thread-125123] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:17.629 [DEBUG] [Thread-125123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:17.629 [DEBUG] [Thread-125123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:17.629 [DEBUG] [Thread-125123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:59:17.629 [DEBUG] [Thread-125123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:17.647 [INFO] [Thread-125123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:17.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-28T12:59:17.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:18.572 [DEBUG] [Thread-125123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:18.572 [DEBUG] [Thread-125123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:18.620 [DEBUG] [Thread-125123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:18.620 [DEBUG] [Thread-125123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:18.628 [DEBUG] [Thread-125123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:18.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:18.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-28T12:59: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') -> 00000000
2025-09-28T12:59:18.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:18.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:18.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:18.660 [DEBUG] [Thread-125123] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:28.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:59:28.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:59:28.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-28T12:59:28.771 [DEBUG] [Thread-125125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:29.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 59, 16), 18.92, 27.91, 0.0, 22.09, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:59:29.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:59:16
2025-09-28T12:59:29.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:59:29.534 [DEBUG] [Thread-125126] [transport.py] [_log()] starting thread (client mode): 0x2e34a410
2025-09-28T12:59:29.534 [DEBUG] [Thread-125126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:29.553 [DEBUG] [Thread-125126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:59:29.554 [INFO] [Thread-125126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] Compression: none
2025-09-28T12:59:29.557 [DEBUG] [Thread-125126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:29.575 [DEBUG] [Thread-125126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:29.575 [DEBUG] [Thread-125126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:29.575 [DEBUG] [Thread-125126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:59:29.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:59:29.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:29.576 [DEBUG] [Thread-125126] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:29.576 [DEBUG] [Thread-125126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:29.576 [DEBUG] [Thread-125126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:29.576 [DEBUG] [Thread-125126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:59:29.576 [DEBUG] [Thread-125126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:29.591 [INFO] [Thread-125126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:29.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:30.304 [DEBUG] [Thread-125126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:30.304 [DEBUG] [Thread-125126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:30.304 [DEBUG] [Thread-125126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:59:30.345 [DEBUG] [Thread-125126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:30.345 [DEBUG] [Thread-125126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:30.347 [DEBUG] [Thread-125126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:30.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:30.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:59:30.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:59:30.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:59:30.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:30.357 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:59:30.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:59:30.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:59:30.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:59:16', tmtdew=18.92, humidity=27.91, cloud=0.0, wind=22.09, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:59:30.358 [DEBUG] [Thread-125126] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:30.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-28T12:59:30.445 [DEBUG] [Thread-125129] [transport.py] [_log()] starting thread (client mode): 0x2b986b30
2025-09-28T12:59:30.445 [DEBUG] [Thread-125129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:30.463 [DEBUG] [Thread-125129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:59:30.463 [INFO] [Thread-125129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] Compression: none
2025-09-28T12:59:30.474 [DEBUG] [Thread-125129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:30.532 [DEBUG] [Thread-125129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:30.533 [DEBUG] [Thread-125129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:30.533 [DEBUG] [Thread-125129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:59:30.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:59:30.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:30.589 [DEBUG] [Thread-125129] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:30.589 [DEBUG] [Thread-125129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:30.589 [DEBUG] [Thread-125129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:30.589 [DEBUG] [Thread-125129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:59:30.590 [DEBUG] [Thread-125129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:30.603 [INFO] [Thread-125129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:30.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-28T12:59:30.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:31.659 [DEBUG] [Thread-125129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:31.659 [DEBUG] [Thread-125129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:31.707 [DEBUG] [Thread-125129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:31.707 [DEBUG] [Thread-125129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:31.715 [DEBUG] [Thread-125129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:31.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:31.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-28T12:59:31.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-28T12:59:31.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:31.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:31.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:31.747 [DEBUG] [Thread-125129] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:41.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:59:41.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:59: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-28T12:59:42.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 59, 16), 18.92, 27.91, 0.0, 22.09, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:59:42.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:59:16
2025-09-28T12:59:42.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:59:42.584 [DEBUG] [Thread-125131] [transport.py] [_log()] starting thread (client mode): 0x2b95f8b0
2025-09-28T12:59:42.584 [DEBUG] [Thread-125131] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:42.602 [DEBUG] [Thread-125131] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:59:42.602 [INFO] [Thread-125131] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:42.605 [DEBUG] [Thread-125131] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] Compression: none
2025-09-28T12:59:42.606 [DEBUG] [Thread-125131] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:42.623 [DEBUG] [Thread-125131] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:42.623 [DEBUG] [Thread-125131] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:42.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:59:42.624 [DEBUG] [Thread-125131] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:59:42.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:42.626 [DEBUG] [Thread-125131] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:42.626 [DEBUG] [Thread-125131] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:42.626 [DEBUG] [Thread-125131] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:42.626 [DEBUG] [Thread-125131] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:59:42.627 [DEBUG] [Thread-125131] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:42.649 [INFO] [Thread-125131] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:42.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:43.390 [DEBUG] [Thread-125131] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:43.390 [DEBUG] [Thread-125131] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:43.390 [DEBUG] [Thread-125131] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:59:43.430 [DEBUG] [Thread-125131] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:43.430 [DEBUG] [Thread-125131] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:43.433 [DEBUG] [Thread-125131] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:43.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:43.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:59:43.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:59:43.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:59:43.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:43.456 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:59:43.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:43.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:59:43.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:59:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:59:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:59:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:59:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:59:43.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:59:16', tmtdew=18.92, humidity=27.91, cloud=0.0, wind=22.09, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:59:43.458 [DEBUG] [Thread-125131] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:43.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-28T12:59:43.558 [DEBUG] [Thread-125134] [transport.py] [_log()] starting thread (client mode): 0x2e38dea0
2025-09-28T12:59:43.558 [DEBUG] [Thread-125134] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:43.573 [DEBUG] [Thread-125134] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:59:43.573 [INFO] [Thread-125134] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:43.581 [DEBUG] [Thread-125134] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:43.582 [DEBUG] [Thread-125134] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:43.582 [DEBUG] [Thread-125134] [transport.py] [_log()] Compression: none
2025-09-28T12:59:43.582 [DEBUG] [Thread-125134] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:43.637 [DEBUG] [Thread-125134] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:43.638 [DEBUG] [Thread-125134] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:43.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:59:43.638 [DEBUG] [Thread-125134] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:59:43.639 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:43.694 [DEBUG] [Thread-125134] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:43.694 [DEBUG] [Thread-125134] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:43.694 [DEBUG] [Thread-125134] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:43.694 [DEBUG] [Thread-125134] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:59:43.694 [DEBUG] [Thread-125134] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:43.713 [INFO] [Thread-125134] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:43.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-28T12:59:43.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:43.801 [DEBUG] [Thread-125136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:44.646 [DEBUG] [Thread-125134] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:44.646 [DEBUG] [Thread-125134] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:44.694 [DEBUG] [Thread-125134] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:44.695 [DEBUG] [Thread-125134] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:44.703 [DEBUG] [Thread-125134] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:44.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:44.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-28T12:59:44.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-28T12:59:44.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:44.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:44.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:44.739 [DEBUG] [Thread-125134] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:50.703 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:50.704 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T12:59:54.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T12:59:54.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T12:59:54.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-28T12:59:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 59, 48), 18.93, 27.6, 0.0, 13.64, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T12:59:55.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:59:48
2025-09-28T12:59:55.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T12:59:55.576 [DEBUG] [Thread-125137] [transport.py] [_log()] starting thread (client mode): 0x2e38c4f0
2025-09-28T12:59:55.576 [DEBUG] [Thread-125137] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:55.597 [DEBUG] [Thread-125137] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T12:59:55.597 [INFO] [Thread-125137] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:55.599 [DEBUG] [Thread-125137] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] Compression: none
2025-09-28T12:59:55.600 [DEBUG] [Thread-125137] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:55.612 [DEBUG] [Thread-125137] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:55.613 [DEBUG] [Thread-125137] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:55.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T12:59:55.614 [DEBUG] [Thread-125137] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T12:59:55.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:55.615 [DEBUG] [Thread-125137] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:55.615 [DEBUG] [Thread-125137] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:55.615 [DEBUG] [Thread-125137] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:55.615 [DEBUG] [Thread-125137] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T12:59:55.615 [DEBUG] [Thread-125137] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:55.629 [INFO] [Thread-125137] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:55.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:56.357 [DEBUG] [Thread-125137] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:56.357 [DEBUG] [Thread-125137] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:56.357 [DEBUG] [Thread-125137] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T12:59:56.398 [DEBUG] [Thread-125137] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:56.398 [DEBUG] [Thread-125137] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:56.400 [DEBUG] [Thread-125137] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:56.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:56.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T12:59:56.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T12:59:56.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T12:59:56.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:56.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T12:59:56.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T12:59:56.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T12:59:56.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T12:59:56.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T12:59:56.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T12:59:56.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T12:59:56.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T12:59:56.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:59:48', tmtdew=18.93, humidity=27.6, cloud=0.0, wind=13.64, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T12:59:56.424 [DEBUG] [Thread-125137] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:56.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-28T12:59:56.518 [DEBUG] [Thread-125140] [transport.py] [_log()] starting thread (client mode): 0x2b95da20
2025-09-28T12:59:56.518 [DEBUG] [Thread-125140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T12:59:56.533 [DEBUG] [Thread-125140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T12:59:56.533 [INFO] [Thread-125140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T12:59:56.541 [DEBUG] [Thread-125140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T12:59:56.541 [DEBUG] [Thread-125140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T12:59:56.541 [DEBUG] [Thread-125140] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T12:59:56.541 [DEBUG] [Thread-125140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:56.541 [DEBUG] [Thread-125140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] client lang: <none>
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] server lang: <none>
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] kex follows: False
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T12:59:56.542 [DEBUG] [Thread-125140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T12:59:56.543 [DEBUG] [Thread-125140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T12:59:56.543 [DEBUG] [Thread-125140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T12:59:56.543 [DEBUG] [Thread-125140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T12:59:56.543 [DEBUG] [Thread-125140] [transport.py] [_log()] Compression: none
2025-09-28T12:59:56.543 [DEBUG] [Thread-125140] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T12:59:56.598 [DEBUG] [Thread-125140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T12:59:56.599 [DEBUG] [Thread-125140] [transport.py] [_log()] Switch to new keys ...
2025-09-28T12:59:56.599 [DEBUG] [Thread-125140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T12:59:56.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T12:59:56.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T12:59:56.654 [DEBUG] [Thread-125140] [transport.py] [_log()] userauth is OK
2025-09-28T12:59:56.654 [DEBUG] [Thread-125140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T12:59:56.654 [DEBUG] [Thread-125140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T12:59:56.654 [DEBUG] [Thread-125140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T12:59:56.654 [DEBUG] [Thread-125140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T12:59:56.673 [INFO] [Thread-125140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T12:59:56.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-28T12:59:56.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T12:59:57.637 [DEBUG] [Thread-125140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T12:59:57.637 [DEBUG] [Thread-125140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T12:59:57.685 [DEBUG] [Thread-125140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T12:59:57.685 [DEBUG] [Thread-125140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T12:59:57.694 [DEBUG] [Thread-125140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T12:59:57.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T12:59:57.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-28T12:59:57.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-28T12:59:57.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T12:59:57.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T12:59:57.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T12:59:57.728 [DEBUG] [Thread-125140] [transport.py] [_log()] EOF in transport thread
2025-09-28T12:59:58.853 [DEBUG] [Thread-125142 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:07.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:00:07.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:00:07.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:00:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 12, 59, 48), 18.93, 27.6, 0.0, 13.64, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:00:08.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 12:59:48
2025-09-28T13:00:08.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:00:08.578 [DEBUG] [Thread-125143] [transport.py] [_log()] starting thread (client mode): 0x2b9ac130
2025-09-28T13:00:08.579 [DEBUG] [Thread-125143] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:08.598 [DEBUG] [Thread-125143] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:00:08.598 [INFO] [Thread-125143] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] Compression: none
2025-09-28T13:00:08.601 [DEBUG] [Thread-125143] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:08.609 [DEBUG] [Thread-125143] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:08.609 [DEBUG] [Thread-125143] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:08.609 [DEBUG] [Thread-125143] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:00:08.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:00:08.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:08.610 [DEBUG] [Thread-125143] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:08.610 [DEBUG] [Thread-125143] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:08.610 [DEBUG] [Thread-125143] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:08.610 [DEBUG] [Thread-125143] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:00:08.610 [DEBUG] [Thread-125143] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:08.625 [INFO] [Thread-125143] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:08.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:10.756 [DEBUG] [Thread-125145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:13.898 [DEBUG] [Thread-125146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:18.277 [DEBUG] [Thread-125143] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:18.278 [DEBUG] [Thread-125143] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:18.278 [DEBUG] [Thread-125143] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:00:18.318 [DEBUG] [Thread-125143] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:18.319 [DEBUG] [Thread-125143] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:18.322 [DEBUG] [Thread-125143] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:18.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:18.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:00:18.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:00:18.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:00:18.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:18.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:00:18.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:18.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:18.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:00:18.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.454598 -999.00  +19.30  14.23     32   +2.20 1 1 1 1 1   888    0 16.53 -3.13 ----- 14.2 14.2 254.4 23.5 25.5 -27.2 24.4 -25.1 24.4 -26.8 25.5 -27.7
2025-09-28T13:00:18.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:00:18.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:00:18.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.454598
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:00:18.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T12:59:48', tmtdew=18.93, humidity=27.6, cloud=0.0, wind=13.64, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T10:54:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:00:18.454 [DEBUG] [Thread-125143] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:18.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-28T13:00:18.551 [DEBUG] [Thread-125148] [transport.py] [_log()] starting thread (client mode): 0x2b9854b0
2025-09-28T13:00:18.551 [DEBUG] [Thread-125148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:18.567 [DEBUG] [Thread-125148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:00:18.567 [INFO] [Thread-125148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:00:18.574 [DEBUG] [Thread-125148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:18.575 [DEBUG] [Thread-125148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:00:18.575 [DEBUG] [Thread-125148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:18.575 [DEBUG] [Thread-125148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:18.575 [DEBUG] [Thread-125148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:18.575 [DEBUG] [Thread-125148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] Compression: none
2025-09-28T13:00:18.576 [DEBUG] [Thread-125148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:18.634 [DEBUG] [Thread-125148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:18.634 [DEBUG] [Thread-125148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:18.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:00:18.635 [DEBUG] [Thread-125148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:00:18.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:18.692 [DEBUG] [Thread-125148] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:18.692 [DEBUG] [Thread-125148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:18.692 [DEBUG] [Thread-125148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:18.692 [DEBUG] [Thread-125148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:00:18.692 [DEBUG] [Thread-125148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:18.711 [INFO] [Thread-125148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:18.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-28T13:00:18.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:19.680 [DEBUG] [Thread-125148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:19.680 [DEBUG] [Thread-125148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:19.728 [DEBUG] [Thread-125148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:19.728 [DEBUG] [Thread-125148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:19.737 [DEBUG] [Thread-125148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:19.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:19.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-28T13:00:19.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-28T13:00:19.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:19.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:19.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:19.773 [DEBUG] [Thread-125148] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:28.930 [DEBUG] [Thread-125150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:29.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:00:29.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:00:29.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:00:30.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 0, 20), 18.79, 27.83, 0.0, 15.74, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:00:30.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:00:20
2025-09-28T13:00:30.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:00:30.617 [DEBUG] [Thread-125151] [transport.py] [_log()] starting thread (client mode): 0x2e38d030
2025-09-28T13:00:30.617 [DEBUG] [Thread-125151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:30.637 [DEBUG] [Thread-125151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:00:30.637 [INFO] [Thread-125151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] Compression: none
2025-09-28T13:00:30.641 [DEBUG] [Thread-125151] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:30.656 [DEBUG] [Thread-125151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:30.657 [DEBUG] [Thread-125151] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:30.657 [DEBUG] [Thread-125151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:00:30.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:00:30.658 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:30.659 [DEBUG] [Thread-125151] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:30.659 [DEBUG] [Thread-125151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:30.659 [DEBUG] [Thread-125151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:30.660 [DEBUG] [Thread-125151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:00:30.660 [DEBUG] [Thread-125151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:30.681 [INFO] [Thread-125151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:30.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:31.321 [DEBUG] [Thread-125151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:31.322 [DEBUG] [Thread-125151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:31.322 [DEBUG] [Thread-125151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:00:31.362 [DEBUG] [Thread-125151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:31.362 [DEBUG] [Thread-125151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:31.365 [DEBUG] [Thread-125151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:31.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:31.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:00:31.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:00:31.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:00:31.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:31.386 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:00:31.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:31.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:31.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:00:31.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.458417 -999.00  +18.70  13.98     33   +2.10 1 1 1 1 1   888    0 14.51 -72.24 NA 13.3 14.0 253.0 18.7 25.6 -26.3 24.5 -24.8 24.1 -23.4 25.4 -25.2
2025-09-28T13:00:31.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:00:31.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:00:31.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.458417
2025-09-28T13:00:31.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:00:31.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:00:31.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:00:31.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:00:31.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:00:31.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:00:20', tmtdew=18.79, humidity=27.83, cloud=0.0, wind=15.74, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:00:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:00:31.389 [DEBUG] [Thread-125151] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:31.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-28T13:00:31.483 [DEBUG] [Thread-125154] [transport.py] [_log()] starting thread (client mode): 0x2b9ca8f0
2025-09-28T13:00:31.484 [DEBUG] [Thread-125154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:31.498 [DEBUG] [Thread-125154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:00:31.498 [INFO] [Thread-125154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:31.507 [DEBUG] [Thread-125154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] Compression: none
2025-09-28T13:00:31.508 [DEBUG] [Thread-125154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:31.566 [DEBUG] [Thread-125154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:31.566 [DEBUG] [Thread-125154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:31.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:00:31.568 [DEBUG] [Thread-125154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:00:31.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:31.622 [DEBUG] [Thread-125154] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:31.623 [DEBUG] [Thread-125154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:31.623 [DEBUG] [Thread-125154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:31.623 [DEBUG] [Thread-125154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:00:31.623 [DEBUG] [Thread-125154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:31.642 [INFO] [Thread-125154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:31.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-28T13:00:31.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:32.630 [DEBUG] [Thread-125154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:32.630 [DEBUG] [Thread-125154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:32.678 [DEBUG] [Thread-125154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:32.678 [DEBUG] [Thread-125154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:32.687 [DEBUG] [Thread-125154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:32.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:32.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-28T13:00:32.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-28T13:00:32.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:32.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:32.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:32.722 [DEBUG] [Thread-125154] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:42.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:00:42.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:00:42.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-28T13:00:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 0, 20), 18.79, 27.83, 0.0, 15.74, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:00:43.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:00:20
2025-09-28T13:00:43.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:00:43.580 [DEBUG] [Thread-125156] [transport.py] [_log()] starting thread (client mode): 0x2b9af880
2025-09-28T13:00:43.580 [DEBUG] [Thread-125156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:43.601 [DEBUG] [Thread-125156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:00:43.601 [INFO] [Thread-125156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] Compression: none
2025-09-28T13:00:43.605 [DEBUG] [Thread-125156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:43.621 [DEBUG] [Thread-125156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:43.622 [DEBUG] [Thread-125156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:43.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:00:43.622 [DEBUG] [Thread-125156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:00:43.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:43.623 [DEBUG] [Thread-125156] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:43.623 [DEBUG] [Thread-125156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:43.623 [DEBUG] [Thread-125156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:43.623 [DEBUG] [Thread-125156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:00:43.623 [DEBUG] [Thread-125156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:43.632 [INFO] [Thread-125156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:43.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:43.962 [DEBUG] [Thread-125158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:44.398 [DEBUG] [Thread-125156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:44.398 [DEBUG] [Thread-125156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:44.398 [DEBUG] [Thread-125156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:00:44.439 [DEBUG] [Thread-125156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:44.439 [DEBUG] [Thread-125156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:44.441 [DEBUG] [Thread-125156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:44.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:44.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:00:44.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:00:44.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:00:44.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:44.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:00:44.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.458417 -999.00  +18.70  13.98     33   +2.10 1 1 1 1 1   888    0 14.51 -72.24 NA 13.3 14.0 253.0 18.7 25.6 -26.3 24.5 -24.8 24.1 -23.4 25.4 -25.2
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.458417
2025-09-28T13:00:44.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:00:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:00:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:00:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:00:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:00:44.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:00:20', tmtdew=18.79, humidity=27.83, cloud=0.0, wind=15.74, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:00:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:00:44.454 [DEBUG] [Thread-125156] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:44.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-28T13:00:44.537 [DEBUG] [Thread-125160] [transport.py] [_log()] starting thread (client mode): 0x2b9ca710
2025-09-28T13:00:44.537 [DEBUG] [Thread-125160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:44.552 [DEBUG] [Thread-125160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:00:44.552 [INFO] [Thread-125160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:44.559 [DEBUG] [Thread-125160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:44.560 [DEBUG] [Thread-125160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:44.560 [DEBUG] [Thread-125160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:44.560 [DEBUG] [Thread-125160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:44.560 [DEBUG] [Thread-125160] [transport.py] [_log()] Compression: none
2025-09-28T13:00:44.560 [DEBUG] [Thread-125160] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:44.616 [DEBUG] [Thread-125160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:44.617 [DEBUG] [Thread-125160] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:44.617 [DEBUG] [Thread-125160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:00:44.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:00:44.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:44.674 [DEBUG] [Thread-125160] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:44.674 [DEBUG] [Thread-125160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:44.674 [DEBUG] [Thread-125160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:44.674 [DEBUG] [Thread-125160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:00:44.674 [DEBUG] [Thread-125160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:44.688 [INFO] [Thread-125160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:44.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-28T13:00:44.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:45.639 [DEBUG] [Thread-125160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:45.639 [DEBUG] [Thread-125160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:45.687 [DEBUG] [Thread-125160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:45.687 [DEBUG] [Thread-125160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:45.696 [DEBUG] [Thread-125160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:45.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:45.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-28T13:00:45.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-28T13:00:45.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:45.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:45.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:45.729 [DEBUG] [Thread-125160] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:50.844 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:50.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:00:55.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:00:55.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:00:55.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-28T13:00:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 0, 52), 19.71, 26.11, 0.0, 22.13, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:00:56.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:00:52
2025-09-28T13:00:56.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:00:56.561 [DEBUG] [Thread-125162] [transport.py] [_log()] starting thread (client mode): 0x2b9c24d0
2025-09-28T13:00:56.562 [DEBUG] [Thread-125162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:56.582 [DEBUG] [Thread-125162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:00:56.582 [INFO] [Thread-125162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] Compression: none
2025-09-28T13:00:56.585 [DEBUG] [Thread-125162] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:56.602 [DEBUG] [Thread-125162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:56.603 [DEBUG] [Thread-125162] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:56.603 [DEBUG] [Thread-125162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:00:56.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:00:56.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:56.605 [DEBUG] [Thread-125162] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:56.605 [DEBUG] [Thread-125162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:56.605 [DEBUG] [Thread-125162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:56.605 [DEBUG] [Thread-125162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:00:56.605 [DEBUG] [Thread-125162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:56.627 [INFO] [Thread-125162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:56.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:57.246 [DEBUG] [Thread-125162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:57.246 [DEBUG] [Thread-125162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:57.246 [DEBUG] [Thread-125162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:00:57.287 [DEBUG] [Thread-125162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:57.288 [DEBUG] [Thread-125162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:57.291 [DEBUG] [Thread-125162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:57.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:57.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:00:57.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:00:57.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:00:57.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:57.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:00:57.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.458765 -999.00  +18.80  14.17     31   +1.50 1 1 1 1 1   888    0 14.74 -72.12 NA 15.6 14.2 233.4 23.6 25.4 -27.0 24.4 -25.7 24.2 -25.1 25.3 -27.4
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.458765
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:00:57.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:00:52', tmtdew=19.71, humidity=26.11, cloud=0.0, wind=22.13, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:00:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:00:57.309 [DEBUG] [Thread-125162] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:57.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-28T13:00:57.397 [DEBUG] [Thread-125165] [transport.py] [_log()] starting thread (client mode): 0x2b9dc7f0
2025-09-28T13:00:57.397 [DEBUG] [Thread-125165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:00:57.412 [DEBUG] [Thread-125165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:00:57.412 [INFO] [Thread-125165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:00:57.419 [DEBUG] [Thread-125165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] client lang: <none>
2025-09-28T13:00:57.420 [DEBUG] [Thread-125165] [transport.py] [_log()] server lang: <none>
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] kex follows: False
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] Compression: none
2025-09-28T13:00:57.421 [DEBUG] [Thread-125165] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:00:57.478 [DEBUG] [Thread-125165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:00:57.479 [DEBUG] [Thread-125165] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:00:57.479 [DEBUG] [Thread-125165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:00:57.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:00:57.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:00:57.534 [DEBUG] [Thread-125165] [transport.py] [_log()] userauth is OK
2025-09-28T13:00:57.535 [DEBUG] [Thread-125165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:00:57.535 [DEBUG] [Thread-125165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:00:57.535 [DEBUG] [Thread-125165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:00:57.535 [DEBUG] [Thread-125165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:00:57.554 [INFO] [Thread-125165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:00:57.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-28T13:00:57.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:00:58.514 [DEBUG] [Thread-125165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:00:58.515 [DEBUG] [Thread-125165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:00:58.562 [DEBUG] [Thread-125165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:00:58.562 [DEBUG] [Thread-125165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:00:58.571 [DEBUG] [Thread-125165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:00:58.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:00:58.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-28T13:00:58.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-28T13:00:58.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:00:58.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:00:58.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:00:58.606 [DEBUG] [Thread-125165] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:00:58.997 [DEBUG] [Thread-125167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:08.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:01:08.608 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:01:08.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-28T13:01:09.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 0, 52), 19.71, 26.11, 0.0, 22.13, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:01:09.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:00:52
2025-09-28T13:01:09.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:01:09.447 [DEBUG] [Thread-125168] [transport.py] [_log()] starting thread (client mode): 0x2b95f340
2025-09-28T13:01:09.447 [DEBUG] [Thread-125168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:09.468 [DEBUG] [Thread-125168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:01:09.468 [INFO] [Thread-125168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] Compression: none
2025-09-28T13:01:09.471 [DEBUG] [Thread-125168] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:09.489 [DEBUG] [Thread-125168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:09.489 [DEBUG] [Thread-125168] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:09.490 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:01:09.490 [DEBUG] [Thread-125168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:01:09.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:09.492 [DEBUG] [Thread-125168] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:09.492 [DEBUG] [Thread-125168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:09.492 [DEBUG] [Thread-125168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:09.493 [DEBUG] [Thread-125168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:01:09.493 [DEBUG] [Thread-125168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:09.509 [INFO] [Thread-125168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:09.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:10.065 [DEBUG] [Thread-125168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:10.066 [DEBUG] [Thread-125168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:10.066 [DEBUG] [Thread-125168] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:01:10.106 [DEBUG] [Thread-125168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:10.107 [DEBUG] [Thread-125168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:10.109 [DEBUG] [Thread-125168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:10.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:10.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:01:10.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:01:10.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:01:10.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:10.142 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:01:10.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.458765 -999.00  +18.80  14.17     31   +1.50 1 1 1 1 1   888    0 14.74 -72.12 NA 15.6 14.2 233.4 23.6 25.4 -27.0 24.4 -25.7 24.2 -25.1 25.3 -27.4
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:01:10.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.458765
2025-09-28T13:01:10.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:01:10.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:01:10.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:01:10.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:01:10.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:01:10.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:00:52', tmtdew=19.71, humidity=26.11, cloud=0.0, wind=22.13, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:00:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:01:10.145 [DEBUG] [Thread-125168] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:10.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-28T13:01:10.245 [DEBUG] [Thread-125171] [transport.py] [_log()] starting thread (client mode): 0x2b9dd5a0
2025-09-28T13:01:10.245 [DEBUG] [Thread-125171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:10.260 [DEBUG] [Thread-125171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:01:10.260 [INFO] [Thread-125171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:10.268 [DEBUG] [Thread-125171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] Compression: none
2025-09-28T13:01:10.269 [DEBUG] [Thread-125171] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:10.326 [DEBUG] [Thread-125171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:10.327 [DEBUG] [Thread-125171] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:10.327 [DEBUG] [Thread-125171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:01:10.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:01:10.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:10.383 [DEBUG] [Thread-125171] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:10.383 [DEBUG] [Thread-125171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:10.383 [DEBUG] [Thread-125171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:10.383 [DEBUG] [Thread-125171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:01:10.383 [DEBUG] [Thread-125171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:10.403 [INFO] [Thread-125171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:10.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-28T13:01:10.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:10.813 [DEBUG] [Thread-125173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:11.363 [DEBUG] [Thread-125171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:11.363 [DEBUG] [Thread-125171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:11.411 [DEBUG] [Thread-125171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:11.411 [DEBUG] [Thread-125171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:11.420 [DEBUG] [Thread-125171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:11.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:11.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-28T13:01:11.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-28T13:01:11.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:11.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:11.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:11.454 [DEBUG] [Thread-125171] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:14.051 [DEBUG] [Thread-125174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:21.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:01:21.456 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:01:21.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-28T13:01:22.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 0, 52), 19.71, 26.11, 0.0, 22.13, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:01:22.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:00:52
2025-09-28T13:01:22.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:01:22.296 [DEBUG] [Thread-125175] [transport.py] [_log()] starting thread (client mode): 0x2e38e170
2025-09-28T13:01:22.296 [DEBUG] [Thread-125175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:22.311 [DEBUG] [Thread-125175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:01:22.312 [INFO] [Thread-125175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:22.313 [DEBUG] [Thread-125175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] Compression: none
2025-09-28T13:01:22.314 [DEBUG] [Thread-125175] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:22.332 [DEBUG] [Thread-125175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:22.333 [DEBUG] [Thread-125175] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:22.333 [DEBUG] [Thread-125175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:01:22.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:01:22.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:22.335 [DEBUG] [Thread-125175] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:22.336 [DEBUG] [Thread-125175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:22.336 [DEBUG] [Thread-125175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:22.336 [DEBUG] [Thread-125175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:01:22.336 [DEBUG] [Thread-125175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:22.359 [INFO] [Thread-125175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:22.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:23.107 [DEBUG] [Thread-125175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:23.107 [DEBUG] [Thread-125175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:23.107 [DEBUG] [Thread-125175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:01:23.148 [DEBUG] [Thread-125175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:23.149 [DEBUG] [Thread-125175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:23.152 [DEBUG] [Thread-125175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:23.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:23.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:01:23.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:01:23.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:01:23.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:23.173 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:01:23.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:23.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:23.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:01:23.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.458765 -999.00  +18.80  14.17     31   +1.50 1 1 1 1 1   888    0 14.74 -72.12 NA 15.6 14.2 233.4 23.6 25.4 -27.0 24.4 -25.7 24.2 -25.1 25.3 -27.4
2025-09-28T13:01:23.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:01:23.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:01:23.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.458765
2025-09-28T13:01:23.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:01:23.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:01:23.175 [DEBUG] [Thread-125175] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:23.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:01:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:01:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:01:23.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:00:52', tmtdew=19.71, humidity=26.11, cloud=0.0, wind=22.13, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:00:37.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:01:23.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-28T13:01:23.271 [DEBUG] [Thread-125178] [transport.py] [_log()] starting thread (client mode): 0x2b9cab60
2025-09-28T13:01:23.271 [DEBUG] [Thread-125178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:23.286 [DEBUG] [Thread-125178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:01:23.286 [INFO] [Thread-125178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:23.297 [DEBUG] [Thread-125178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:23.298 [DEBUG] [Thread-125178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:23.298 [DEBUG] [Thread-125178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:23.298 [DEBUG] [Thread-125178] [transport.py] [_log()] Compression: none
2025-09-28T13:01:23.298 [DEBUG] [Thread-125178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:23.355 [DEBUG] [Thread-125178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:23.355 [DEBUG] [Thread-125178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:23.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:01:23.356 [DEBUG] [Thread-125178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:01:23.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:23.410 [DEBUG] [Thread-125178] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:23.411 [DEBUG] [Thread-125178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:23.411 [DEBUG] [Thread-125178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:23.411 [DEBUG] [Thread-125178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:01:23.411 [DEBUG] [Thread-125178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:23.429 [INFO] [Thread-125178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:23.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-28T13:01:23.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:24.376 [DEBUG] [Thread-125178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:24.376 [DEBUG] [Thread-125178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:24.424 [DEBUG] [Thread-125178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:24.424 [DEBUG] [Thread-125178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:24.433 [DEBUG] [Thread-125178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:24.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:24.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:01:24.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-28T13:01:24.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:24.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:24.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:24.469 [DEBUG] [Thread-125178] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:29.080 [DEBUG] [Thread-125180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:34.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:01:34.476 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:01:34.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:01:35.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 1, 24), 20.18, 25.27, 0.0, 24.42, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:01:35.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:01:24
2025-09-28T13:01:35.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:01:35.304 [DEBUG] [Thread-125181] [transport.py] [_log()] starting thread (client mode): 0x2b9ae650
2025-09-28T13:01:35.304 [DEBUG] [Thread-125181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:35.324 [DEBUG] [Thread-125181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:01:35.324 [INFO] [Thread-125181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:35.327 [DEBUG] [Thread-125181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] Compression: none
2025-09-28T13:01:35.328 [DEBUG] [Thread-125181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:35.344 [DEBUG] [Thread-125181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:35.345 [DEBUG] [Thread-125181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:35.345 [DEBUG] [Thread-125181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:01:35.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:01:35.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:35.347 [DEBUG] [Thread-125181] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:35.347 [DEBUG] [Thread-125181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:35.347 [DEBUG] [Thread-125181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:35.347 [DEBUG] [Thread-125181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:01:35.348 [DEBUG] [Thread-125181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:35.371 [INFO] [Thread-125181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:35.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:36.032 [DEBUG] [Thread-125181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:36.033 [DEBUG] [Thread-125181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:36.033 [DEBUG] [Thread-125181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:01:36.073 [DEBUG] [Thread-125181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:36.073 [DEBUG] [Thread-125181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:36.075 [DEBUG] [Thread-125181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:36.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:36.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:01:36.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:01:36.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:01:36.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:36.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:01:36.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459112 -999.00  +19.00  14.28     31   +1.70 1 1 1 1 1   888    0 14.94 -74.31 ----- 12.4 14.3 210.4 21.6 25.3 -28.8 24.3 -25.4 24.2 -25.8 25.3 -26.4
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459112
2025-09-28T13:01:36.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:01:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:01:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:01:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:01:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:01:36.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:01:24', tmtdew=20.18, humidity=25.27, cloud=0.0, wind=24.42, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:01:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:01:36.098 [DEBUG] [Thread-125181] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:36.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-28T13:01:36.181 [DEBUG] [Thread-125184] [transport.py] [_log()] starting thread (client mode): 0x2e3c3250
2025-09-28T13:01:36.182 [DEBUG] [Thread-125184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:36.196 [DEBUG] [Thread-125184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:01:36.196 [INFO] [Thread-125184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:36.203 [DEBUG] [Thread-125184] [transport.py] [_log()] Compression: none
2025-09-28T13:01:36.204 [DEBUG] [Thread-125184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:36.262 [DEBUG] [Thread-125184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:36.262 [DEBUG] [Thread-125184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:36.263 [DEBUG] [Thread-125184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:01:36.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:01:36.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:36.319 [DEBUG] [Thread-125184] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:36.319 [DEBUG] [Thread-125184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:36.319 [DEBUG] [Thread-125184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:36.319 [DEBUG] [Thread-125184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:01:36.319 [DEBUG] [Thread-125184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:36.339 [INFO] [Thread-125184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:36.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-28T13:01:36.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:37.312 [DEBUG] [Thread-125184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:37.312 [DEBUG] [Thread-125184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:37.360 [DEBUG] [Thread-125184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:37.360 [DEBUG] [Thread-125184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:37.369 [DEBUG] [Thread-125184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:37.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01: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')
2025-09-28T13:01:37.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-28T13:01:37.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:37.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:37.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:37.405 [DEBUG] [Thread-125184] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:44.111 [DEBUG] [Thread-125186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:47.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:01:47.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:01:47.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-28T13:01:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 1, 24), 20.18, 25.27, 0.0, 24.42, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:01:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:01:24
2025-09-28T13:01:48.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:01:48.244 [DEBUG] [Thread-125187] [transport.py] [_log()] starting thread (client mode): 0x2b95c4f0
2025-09-28T13:01:48.244 [DEBUG] [Thread-125187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:48.259 [DEBUG] [Thread-125187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:01:48.259 [INFO] [Thread-125187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:01:48.262 [DEBUG] [Thread-125187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:48.262 [DEBUG] [Thread-125187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:01:48.262 [DEBUG] [Thread-125187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:48.262 [DEBUG] [Thread-125187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:48.262 [DEBUG] [Thread-125187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] Compression: none
2025-09-28T13:01:48.263 [DEBUG] [Thread-125187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:48.280 [DEBUG] [Thread-125187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:48.281 [DEBUG] [Thread-125187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:48.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:01:48.283 [DEBUG] [Thread-125187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:01:48.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:48.284 [DEBUG] [Thread-125187] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:48.284 [DEBUG] [Thread-125187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:48.285 [DEBUG] [Thread-125187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:48.285 [DEBUG] [Thread-125187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:01:48.285 [DEBUG] [Thread-125187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:48.300 [INFO] [Thread-125187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:48.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:49.099 [DEBUG] [Thread-125187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:49.099 [DEBUG] [Thread-125187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:49.100 [DEBUG] [Thread-125187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:01:49.140 [DEBUG] [Thread-125187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:49.140 [DEBUG] [Thread-125187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:49.143 [DEBUG] [Thread-125187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:49.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:49.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:01:49.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:01:49.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:01:49.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:49.163 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:01:49.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459112 -999.00  +19.00  14.28     31   +1.70 1 1 1 1 1   888    0 14.94 -74.31 ----- 12.4 14.3 210.4 21.6 25.3 -28.8 24.3 -25.4 24.2 -25.8 25.3 -26.4
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:01:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459112
2025-09-28T13:01:49.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:01:49.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:01:49.165 [DEBUG] [Thread-125187] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:49.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:01:49.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:01:49.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:01:49.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:01:24', tmtdew=20.18, humidity=25.27, cloud=0.0, wind=24.42, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:01:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:01:49.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-28T13:01:49.263 [DEBUG] [Thread-125190] [transport.py] [_log()] starting thread (client mode): 0x2b95e2c0
2025-09-28T13:01:49.263 [DEBUG] [Thread-125190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:01:49.284 [DEBUG] [Thread-125190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:01:49.284 [INFO] [Thread-125190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] client lang: <none>
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] server lang: <none>
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] kex follows: False
2025-09-28T13:01:49.294 [DEBUG] [Thread-125190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] Compression: none
2025-09-28T13:01:49.295 [DEBUG] [Thread-125190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:01:49.358 [DEBUG] [Thread-125190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:01:49.359 [DEBUG] [Thread-125190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:01:49.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:01:49.360 [DEBUG] [Thread-125190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:01:49.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:01:49.428 [DEBUG] [Thread-125190] [transport.py] [_log()] userauth is OK
2025-09-28T13:01:49.428 [DEBUG] [Thread-125190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:01:49.428 [DEBUG] [Thread-125190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:01:49.428 [DEBUG] [Thread-125190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:01:49.428 [DEBUG] [Thread-125190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:01:49.447 [INFO] [Thread-125190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:01:49.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-28T13:01:49.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:01:50.436 [DEBUG] [Thread-125190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:01:50.436 [DEBUG] [Thread-125190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:01:50.484 [DEBUG] [Thread-125190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:01:50.484 [DEBUG] [Thread-125190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:01:50.493 [DEBUG] [Thread-125190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:01:50.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:01:50.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-28T13:01:50.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-28T13:01:50.520 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:01:50.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:01:50.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:01:50.529 [DEBUG] [Thread-125190] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:01:50.988 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:50.990 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:01:59.149 [DEBUG] [Thread-125192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:00.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:02:00.524 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:02:00.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-28T13:02:01.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 1, 56), 19.93, 26.14, 0.0, 18.68, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:02:01.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:01:56
2025-09-28T13:02:01.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:02:01.350 [DEBUG] [Thread-125193] [transport.py] [_log()] starting thread (client mode): 0x2b9cb3a0
2025-09-28T13:02:01.350 [DEBUG] [Thread-125193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:01.369 [DEBUG] [Thread-125193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:02:01.370 [INFO] [Thread-125193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:02:01.372 [DEBUG] [Thread-125193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:01.372 [DEBUG] [Thread-125193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:02:01.372 [DEBUG] [Thread-125193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] Compression: none
2025-09-28T13:02:01.373 [DEBUG] [Thread-125193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:01.391 [DEBUG] [Thread-125193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:01.391 [DEBUG] [Thread-125193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:01.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:02:01.391 [DEBUG] [Thread-125193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:02:01.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:01.392 [DEBUG] [Thread-125193] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:01.392 [DEBUG] [Thread-125193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:01.392 [DEBUG] [Thread-125193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:01.392 [DEBUG] [Thread-125193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:02:01.392 [DEBUG] [Thread-125193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:01.421 [INFO] [Thread-125193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:01.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:02.240 [DEBUG] [Thread-125193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:02.240 [DEBUG] [Thread-125193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:02.240 [DEBUG] [Thread-125193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:02:02.281 [DEBUG] [Thread-125193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:02.281 [DEBUG] [Thread-125193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:02.283 [DEBUG] [Thread-125193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:02.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:02.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:02:02.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:02:02.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:02:02.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:02.297 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:02:02.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:02.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459112 -999.00  +19.00  14.28     31   +1.70 1 1 1 1 1   888    0 14.94 -74.31 ----- 12.4 14.3 210.4 21.6 25.3 -28.8 24.3 -25.4 24.2 -25.8 25.3 -26.4
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459112
2025-09-28T13:02:02.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:02:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:02:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:02:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:02:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:02:02.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:01:56', tmtdew=19.93, humidity=26.14, cloud=0.0, wind=18.68, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:01:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:02:02.299 [DEBUG] [Thread-125193] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:02.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:02:02.397 [DEBUG] [Thread-125196] [transport.py] [_log()] starting thread (client mode): 0x2b9dece0
2025-09-28T13:02:02.397 [DEBUG] [Thread-125196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:02.411 [DEBUG] [Thread-125196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:02:02.412 [INFO] [Thread-125196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:02:02.420 [DEBUG] [Thread-125196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:02.420 [DEBUG] [Thread-125196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:02:02.420 [DEBUG] [Thread-125196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:02.420 [DEBUG] [Thread-125196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:02.421 [DEBUG] [Thread-125196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:02.422 [DEBUG] [Thread-125196] [transport.py] [_log()] Compression: none
2025-09-28T13:02:02.422 [DEBUG] [Thread-125196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:02.477 [DEBUG] [Thread-125196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:02.477 [DEBUG] [Thread-125196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:02.478 [DEBUG] [Thread-125196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:02:02.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:02:02.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:02.534 [DEBUG] [Thread-125196] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:02.534 [DEBUG] [Thread-125196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:02.534 [DEBUG] [Thread-125196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:02.534 [DEBUG] [Thread-125196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:02:02.534 [DEBUG] [Thread-125196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:02.553 [INFO] [Thread-125196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:02.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-28T13:02:02.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:03.514 [DEBUG] [Thread-125196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:03.515 [DEBUG] [Thread-125196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:03.562 [DEBUG] [Thread-125196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:03.562 [DEBUG] [Thread-125196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:03.571 [DEBUG] [Thread-125196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:03.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:03.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-28T13:02:03.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') -> 00000000
2025-09-28T13:02:03.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:03.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:03.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:03.607 [DEBUG] [Thread-125196] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:10.858 [DEBUG] [Thread-125198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:13.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:02:13.607 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:02:13.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-28T13:02:14.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 1, 56), 19.93, 26.14, 0.0, 18.68, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:02:14.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:01:56
2025-09-28T13:02:14.182 [DEBUG] [Thread-125199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:14.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:02:14.431 [DEBUG] [Thread-125200] [transport.py] [_log()] starting thread (client mode): 0x2b9ae890
2025-09-28T13:02:14.431 [DEBUG] [Thread-125200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:14.453 [DEBUG] [Thread-125200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:02:14.453 [INFO] [Thread-125200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:14.456 [DEBUG] [Thread-125200] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] Compression: none
2025-09-28T13:02:14.457 [DEBUG] [Thread-125200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:14.476 [DEBUG] [Thread-125200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:14.476 [DEBUG] [Thread-125200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:14.477 [DEBUG] [Thread-125200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:02:14.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:02:14.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:14.479 [DEBUG] [Thread-125200] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:14.479 [DEBUG] [Thread-125200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:14.479 [DEBUG] [Thread-125200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:14.479 [DEBUG] [Thread-125200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:02:14.480 [DEBUG] [Thread-125200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:14.515 [INFO] [Thread-125200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:14.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:15.136 [DEBUG] [Thread-125200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:15.137 [DEBUG] [Thread-125200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:15.137 [DEBUG] [Thread-125200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:02:15.177 [DEBUG] [Thread-125200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:15.177 [DEBUG] [Thread-125200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:15.180 [DEBUG] [Thread-125200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:15.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:15.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:02:15.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:02:15.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:02:15.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:15.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:02:15.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:15.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:15.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:02:15.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459459 -999.00  +18.80  10.07     32   +1.80 1 1 1 1 1   888    0 14.60 -69.68 ----- 10.9 10.1 213.2 17.2 25.4 -26.3 24.1 -26.4 24.2 -24.7 25.5 -25.3
2025-09-28T13:02:15.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:02:15.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:02:15.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459459
2025-09-28T13:02:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:02:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:02:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:02:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:02:15.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:02:15.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:01:56', tmtdew=19.93, humidity=26.14, cloud=0.0, wind=18.68, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:01:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:02:15.204 [DEBUG] [Thread-125200] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:15.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-28T13:02:15.297 [DEBUG] [Thread-125203] [transport.py] [_log()] starting thread (client mode): 0x2b9cb730
2025-09-28T13:02:15.298 [DEBUG] [Thread-125203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:15.312 [DEBUG] [Thread-125203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:02:15.312 [INFO] [Thread-125203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:15.320 [DEBUG] [Thread-125203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:15.321 [DEBUG] [Thread-125203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:15.321 [DEBUG] [Thread-125203] [transport.py] [_log()] Compression: none
2025-09-28T13:02:15.321 [DEBUG] [Thread-125203] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:15.375 [DEBUG] [Thread-125203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:15.376 [DEBUG] [Thread-125203] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:15.376 [DEBUG] [Thread-125203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:02:15.376 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:02:15.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:15.433 [DEBUG] [Thread-125203] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:15.433 [DEBUG] [Thread-125203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:15.433 [DEBUG] [Thread-125203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:15.433 [DEBUG] [Thread-125203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:02:15.433 [DEBUG] [Thread-125203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:15.451 [INFO] [Thread-125203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:15.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:02:15.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:16.410 [DEBUG] [Thread-125203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:16.410 [DEBUG] [Thread-125203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:16.457 [DEBUG] [Thread-125203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:16.457 [DEBUG] [Thread-125203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:16.466 [DEBUG] [Thread-125203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:16.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:16.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-28T13:02:16.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-28T13:02:16.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:16.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:16.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:16.501 [DEBUG] [Thread-125203] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:26.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:02:26.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:02:26.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-28T13:02:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 1, 56), 19.93, 26.14, 0.0, 18.68, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:02:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:01:56
2025-09-28T13:02:27.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:02:27.314 [DEBUG] [Thread-125205] [transport.py] [_log()] starting thread (client mode): 0x2b98a260
2025-09-28T13:02:27.314 [DEBUG] [Thread-125205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:27.329 [DEBUG] [Thread-125205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:02:27.329 [INFO] [Thread-125205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] Compression: none
2025-09-28T13:02:27.332 [DEBUG] [Thread-125205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:27.351 [DEBUG] [Thread-125205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:27.351 [DEBUG] [Thread-125205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:27.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:02:27.352 [DEBUG] [Thread-125205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:02:27.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:27.354 [DEBUG] [Thread-125205] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:27.354 [DEBUG] [Thread-125205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:27.354 [DEBUG] [Thread-125205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:27.354 [DEBUG] [Thread-125205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:02:27.354 [DEBUG] [Thread-125205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:27.390 [INFO] [Thread-125205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:27.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:28.145 [DEBUG] [Thread-125205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:28.145 [DEBUG] [Thread-125205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:28.146 [DEBUG] [Thread-125205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:02:28.186 [DEBUG] [Thread-125205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:28.187 [DEBUG] [Thread-125205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:28.189 [DEBUG] [Thread-125205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:28.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:28.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:02:28.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:02:28.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:02:28.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:28.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:02:28.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:28.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:28.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:02:28.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459459 -999.00  +18.80  10.07     32   +1.80 1 1 1 1 1   888    0 14.60 -69.68 ----- 10.9 10.1 213.2 17.2 25.4 -26.3 24.1 -26.4 24.2 -24.7 25.5 -25.3
2025-09-28T13:02:28.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:02:28.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:02:28.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459459
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:02:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:01:56', tmtdew=19.93, humidity=26.14, cloud=0.0, wind=18.68, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:01:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:02:28.216 [DEBUG] [Thread-125205] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:28.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-28T13:02:28.310 [DEBUG] [Thread-125208] [transport.py] [_log()] starting thread (client mode): 0x2b98b910
2025-09-28T13:02:28.310 [DEBUG] [Thread-125208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:28.324 [DEBUG] [Thread-125208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:02:28.325 [INFO] [Thread-125208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:02:28.332 [DEBUG] [Thread-125208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:28.333 [DEBUG] [Thread-125208] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] Compression: none
2025-09-28T13:02:28.334 [DEBUG] [Thread-125208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:28.392 [DEBUG] [Thread-125208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:28.392 [DEBUG] [Thread-125208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:28.393 [DEBUG] [Thread-125208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:02:28.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:02:28.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:28.451 [DEBUG] [Thread-125208] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:28.451 [DEBUG] [Thread-125208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:28.451 [DEBUG] [Thread-125208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:28.451 [DEBUG] [Thread-125208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:02:28.451 [DEBUG] [Thread-125208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:28.469 [INFO] [Thread-125208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:28.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-28T13:02:28.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:29.216 [DEBUG] [Thread-125210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:29.426 [DEBUG] [Thread-125208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:29.426 [DEBUG] [Thread-125208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:29.474 [DEBUG] [Thread-125208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:29.474 [DEBUG] [Thread-125208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:29.482 [DEBUG] [Thread-125208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:29.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:29.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-28T13:02:29.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-28T13:02:29.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:29.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:29.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:29.514 [DEBUG] [Thread-125208] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:39.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:02:39.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:02:39.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-28T13:02:40.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 2, 28), 19.89, 26.24, 0.0, 14.52, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:02:40.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:02:28
2025-09-28T13:02:40.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:02:40.328 [DEBUG] [Thread-125211] [transport.py] [_log()] starting thread (client mode): 0x2b9888e0
2025-09-28T13:02:40.328 [DEBUG] [Thread-125211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:40.348 [DEBUG] [Thread-125211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:02:40.348 [INFO] [Thread-125211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:40.351 [DEBUG] [Thread-125211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:40.352 [DEBUG] [Thread-125211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:40.352 [DEBUG] [Thread-125211] [transport.py] [_log()] Compression: none
2025-09-28T13:02:40.352 [DEBUG] [Thread-125211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:40.369 [DEBUG] [Thread-125211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:40.369 [DEBUG] [Thread-125211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:40.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:02:40.370 [DEBUG] [Thread-125211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:02:40.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:40.372 [DEBUG] [Thread-125211] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:40.372 [DEBUG] [Thread-125211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:40.372 [DEBUG] [Thread-125211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:40.373 [DEBUG] [Thread-125211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:02:40.373 [DEBUG] [Thread-125211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:40.391 [INFO] [Thread-125211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:40.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:41.006 [DEBUG] [Thread-125211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:41.006 [DEBUG] [Thread-125211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:41.006 [DEBUG] [Thread-125211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:02:41.047 [DEBUG] [Thread-125211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:41.047 [DEBUG] [Thread-125211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:41.050 [DEBUG] [Thread-125211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:41.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:41.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:02:41.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:02:41.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:02:41.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:41.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:02:41.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:41.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:41.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:02:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459806 -999.00  +19.00  10.02     32   +2.20 1 1 1 1 1   888    0 14.52 -75.07 ----- 8.3 10.0 237.8 12.2 25.4 -26.3 24.3 -24.6 24.4 -24.8 25.6 -25.8
2025-09-28T13:02:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:02:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:02:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459806
2025-09-28T13:02:41.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:02:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:02:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:02:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:02:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:02:41.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:02:28', tmtdew=19.89, humidity=26.24, cloud=0.0, wind=14.52, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:02:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:02:41.073 [DEBUG] [Thread-125211] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:41.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-28T13:02:41.172 [DEBUG] [Thread-125214] [transport.py] [_log()] starting thread (client mode): 0x2b9dca60
2025-09-28T13:02:41.172 [DEBUG] [Thread-125214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:41.186 [DEBUG] [Thread-125214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:02:41.187 [INFO] [Thread-125214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:41.196 [DEBUG] [Thread-125214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] Compression: none
2025-09-28T13:02:41.197 [DEBUG] [Thread-125214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:41.256 [DEBUG] [Thread-125214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:41.257 [DEBUG] [Thread-125214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:41.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:02:41.257 [DEBUG] [Thread-125214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:02:41.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:41.314 [DEBUG] [Thread-125214] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:41.314 [DEBUG] [Thread-125214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:41.315 [DEBUG] [Thread-125214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:41.315 [DEBUG] [Thread-125214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:02:41.315 [DEBUG] [Thread-125214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:41.335 [INFO] [Thread-125214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:41.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-28T13:02:41.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:42.285 [DEBUG] [Thread-125214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:42.285 [DEBUG] [Thread-125214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:42.333 [DEBUG] [Thread-125214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:42.333 [DEBUG] [Thread-125214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:42.341 [DEBUG] [Thread-125214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:42.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:42.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')
2025-09-28T13:02:42.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') -> 00000000
2025-09-28T13:02:42.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:42.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:42.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:42.374 [DEBUG] [Thread-125214] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:44.249 [DEBUG] [Thread-125216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:51.132 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:51.133 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:02:52.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:02:52.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:02:52.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-28T13:02:52.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 2, 28), 19.89, 26.24, 0.0, 14.52, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:02:52.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:02:28
2025-09-28T13:02:53.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:02:53.196 [DEBUG] [Thread-125217] [transport.py] [_log()] starting thread (client mode): 0x2e3c0880
2025-09-28T13:02:53.196 [DEBUG] [Thread-125217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:53.216 [DEBUG] [Thread-125217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:02:53.216 [INFO] [Thread-125217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] Compression: none
2025-09-28T13:02:53.219 [DEBUG] [Thread-125217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:53.238 [DEBUG] [Thread-125217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:53.238 [DEBUG] [Thread-125217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:53.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:02:53.239 [DEBUG] [Thread-125217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:02:53.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:53.241 [DEBUG] [Thread-125217] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:53.242 [DEBUG] [Thread-125217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:53.242 [DEBUG] [Thread-125217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:53.242 [DEBUG] [Thread-125217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:02:53.242 [DEBUG] [Thread-125217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:53.263 [INFO] [Thread-125217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:53.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:54.087 [DEBUG] [Thread-125217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:54.087 [DEBUG] [Thread-125217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:54.087 [DEBUG] [Thread-125217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:02:54.128 [DEBUG] [Thread-125217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:54.128 [DEBUG] [Thread-125217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:54.131 [DEBUG] [Thread-125217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:54.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:54.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:02:54.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:02:54.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:02:54.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:54.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:02:54.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:54.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:02:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459806 -999.00  +19.00  10.02     32   +2.20 1 1 1 1 1   888    0 14.52 -75.07 ----- 8.3 10.0 237.8 12.2 25.4 -26.3 24.3 -24.6 24.4 -24.8 25.6 -25.8
2025-09-28T13:02:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:02:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:02:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459806
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:02:54.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:02:28', tmtdew=19.89, humidity=26.24, cloud=0.0, wind=14.52, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:02:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:02:54.156 [DEBUG] [Thread-125217] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:54.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-28T13:02:54.250 [DEBUG] [Thread-125220] [transport.py] [_log()] starting thread (client mode): 0x2e38ea70
2025-09-28T13:02:54.250 [DEBUG] [Thread-125220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:02:54.265 [DEBUG] [Thread-125220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:02:54.265 [INFO] [Thread-125220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:02:54.272 [DEBUG] [Thread-125220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:02:54.272 [DEBUG] [Thread-125220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:02:54.272 [DEBUG] [Thread-125220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] client lang: <none>
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] server lang: <none>
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] kex follows: False
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] Compression: none
2025-09-28T13:02:54.273 [DEBUG] [Thread-125220] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:02:54.329 [DEBUG] [Thread-125220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:02:54.329 [DEBUG] [Thread-125220] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:02:54.330 [DEBUG] [Thread-125220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:02:54.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:02:54.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:02:54.385 [DEBUG] [Thread-125220] [transport.py] [_log()] userauth is OK
2025-09-28T13:02:54.385 [DEBUG] [Thread-125220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:02:54.386 [DEBUG] [Thread-125220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:02:54.386 [DEBUG] [Thread-125220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:02:54.386 [DEBUG] [Thread-125220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:02:54.406 [INFO] [Thread-125220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:02:54.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-28T13:02:54.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:02:55.333 [DEBUG] [Thread-125220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:02:55.334 [DEBUG] [Thread-125220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:02:55.381 [DEBUG] [Thread-125220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:02:55.381 [DEBUG] [Thread-125220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:02:55.390 [DEBUG] [Thread-125220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:02:55.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:02:55.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-28T13:02:55.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-28T13:02:55.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:02:55.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:02:55.416 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:02:55.424 [DEBUG] [Thread-125220] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:02:59.294 [DEBUG] [Thread-125222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:05.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:03:05.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:03:05.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-28T13:03:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 2, 28), 19.89, 26.24, 0.0, 14.52, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:03:05.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:02:28
2025-09-28T13:03:06.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:03:06.243 [DEBUG] [Thread-125223] [transport.py] [_log()] starting thread (client mode): 0x2e3c05b0
2025-09-28T13:03:06.243 [DEBUG] [Thread-125223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:06.263 [DEBUG] [Thread-125223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:03:06.263 [INFO] [Thread-125223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:06.266 [DEBUG] [Thread-125223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:06.267 [DEBUG] [Thread-125223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:06.267 [DEBUG] [Thread-125223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:06.267 [DEBUG] [Thread-125223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:06.267 [DEBUG] [Thread-125223] [transport.py] [_log()] Compression: none
2025-09-28T13:03:06.267 [DEBUG] [Thread-125223] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:06.280 [DEBUG] [Thread-125223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:06.280 [DEBUG] [Thread-125223] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:06.281 [DEBUG] [Thread-125223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:03:06.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:03:06.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:06.325 [DEBUG] [Thread-125223] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:06.325 [DEBUG] [Thread-125223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:06.325 [DEBUG] [Thread-125223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:06.325 [DEBUG] [Thread-125223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:03:06.325 [DEBUG] [Thread-125223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:06.342 [INFO] [Thread-125223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:06.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:07.121 [DEBUG] [Thread-125223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:07.121 [DEBUG] [Thread-125223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:07.122 [DEBUG] [Thread-125223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:03:07.162 [DEBUG] [Thread-125223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:07.162 [DEBUG] [Thread-125223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:07.165 [DEBUG] [Thread-125223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:07.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:07.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:03:07.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:03:07.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:03:07.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:07.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:03:07.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.459806 -999.00  +19.00  10.02     32   +2.20 1 1 1 1 1   888    0 14.52 -75.07 ----- 8.3 10.0 237.8 12.2 25.4 -26.3 24.3 -24.6 24.4 -24.8 25.6 -25.8
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:03:07.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.459806
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:03:07.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:02:28', tmtdew=19.89, humidity=26.24, cloud=0.0, wind=14.52, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:02:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:03:07.185 [DEBUG] [Thread-125223] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:07.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-28T13:03:07.271 [DEBUG] [Thread-125226] [transport.py] [_log()] starting thread (client mode): 0x2e38fb50
2025-09-28T13:03:07.271 [DEBUG] [Thread-125226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:07.289 [DEBUG] [Thread-125226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:03:07.289 [INFO] [Thread-125226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] Compression: none
2025-09-28T13:03:07.297 [DEBUG] [Thread-125226] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:07.362 [DEBUG] [Thread-125226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:07.362 [DEBUG] [Thread-125226] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:07.363 [DEBUG] [Thread-125226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:03:07.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:03:07.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:07.422 [DEBUG] [Thread-125226] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:07.423 [DEBUG] [Thread-125226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:07.423 [DEBUG] [Thread-125226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:07.423 [DEBUG] [Thread-125226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:03:07.423 [DEBUG] [Thread-125226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:07.439 [INFO] [Thread-125226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:07.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:03:07.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:08.406 [DEBUG] [Thread-125226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:08.407 [DEBUG] [Thread-125226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:08.455 [DEBUG] [Thread-125226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:08.455 [DEBUG] [Thread-125226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:08.463 [DEBUG] [Thread-125226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:08.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03: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')
2025-09-28T13:03:08.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-28T13:03:08.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:08.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:08.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:08.495 [DEBUG] [Thread-125226] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:10.908 [DEBUG] [Thread-125228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:14.323 [DEBUG] [Thread-125229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:18.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:03:18.490 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:03:18.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-28T13:03:19.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 2, 28), 19.89, 26.24, 0.0, 14.52, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:03:19.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:02:28
2025-09-28T13:03:19.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:03:19.306 [DEBUG] [Thread-125230] [transport.py] [_log()] starting thread (client mode): 0x2e3c1cc0
2025-09-28T13:03:19.306 [DEBUG] [Thread-125230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:19.326 [DEBUG] [Thread-125230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:03:19.326 [INFO] [Thread-125230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] Compression: none
2025-09-28T13:03:19.328 [DEBUG] [Thread-125230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:19.347 [DEBUG] [Thread-125230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:19.348 [DEBUG] [Thread-125230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:19.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:03:19.348 [DEBUG] [Thread-125230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:03:19.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:19.350 [DEBUG] [Thread-125230] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:19.351 [DEBUG] [Thread-125230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:19.351 [DEBUG] [Thread-125230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:19.351 [DEBUG] [Thread-125230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:03:19.351 [DEBUG] [Thread-125230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:19.374 [INFO] [Thread-125230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:19.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:20.037 [DEBUG] [Thread-125230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:20.037 [DEBUG] [Thread-125230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:20.037 [DEBUG] [Thread-125230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:03:20.078 [DEBUG] [Thread-125230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:20.078 [DEBUG] [Thread-125230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:20.080 [DEBUG] [Thread-125230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:20.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:20.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:03:20.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:03:20.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:03:20.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:20.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:03:20.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:20.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.460501 -999.00  +19.70   7.53     32   +2.60 1 1 1 1 1   888    0 14.62 -76.00 ----- 16.0 7.5 255.0 14.0 25.6 -26.1 24.4 -25.4 24.6 -24.3 25.9 -26.1
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.460501
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:03:20.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:02:28', tmtdew=19.89, humidity=26.24, cloud=0.0, wind=14.52, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:03:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:03:20.098 [DEBUG] [Thread-125230] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03: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-28T13:03:20.180 [DEBUG] [Thread-125233] [transport.py] [_log()] starting thread (client mode): 0x2e3c11e0
2025-09-28T13:03:20.180 [DEBUG] [Thread-125233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:20.195 [DEBUG] [Thread-125233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:03:20.196 [INFO] [Thread-125233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:03:20.203 [DEBUG] [Thread-125233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:20.203 [DEBUG] [Thread-125233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:03:20.203 [DEBUG] [Thread-125233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] Compression: none
2025-09-28T13:03:20.204 [DEBUG] [Thread-125233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:20.263 [DEBUG] [Thread-125233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:20.264 [DEBUG] [Thread-125233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:20.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:03:20.265 [DEBUG] [Thread-125233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:03:20.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:20.319 [DEBUG] [Thread-125233] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:20.320 [DEBUG] [Thread-125233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:20.320 [DEBUG] [Thread-125233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:20.320 [DEBUG] [Thread-125233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:03:20.320 [DEBUG] [Thread-125233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:20.343 [INFO] [Thread-125233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:20.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-28T13:03:20.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:21.294 [DEBUG] [Thread-125233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:21.294 [DEBUG] [Thread-125233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:21.342 [DEBUG] [Thread-125233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:21.342 [DEBUG] [Thread-125233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:21.351 [DEBUG] [Thread-125233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:21.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:21.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-28T13:03:21.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-28T13:03:21.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:21.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:21.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:21.386 [DEBUG] [Thread-125233] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:29.349 [DEBUG] [Thread-125235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:31.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:03:31.387 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:03:31.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-28T13:03:31.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 2, 28), 19.89, 26.24, 0.0, 14.52, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:03:31.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:02:28
2025-09-28T13:03:32.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:03:32.216 [DEBUG] [Thread-125236] [transport.py] [_log()] starting thread (client mode): 0x2b9def50
2025-09-28T13:03:32.216 [DEBUG] [Thread-125236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:32.236 [DEBUG] [Thread-125236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:03:32.236 [INFO] [Thread-125236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:32.240 [DEBUG] [Thread-125236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] Compression: none
2025-09-28T13:03:32.241 [DEBUG] [Thread-125236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:32.257 [DEBUG] [Thread-125236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:32.257 [DEBUG] [Thread-125236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:32.257 [DEBUG] [Thread-125236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:03:32.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:03:32.257 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:32.258 [DEBUG] [Thread-125236] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:32.258 [DEBUG] [Thread-125236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:32.258 [DEBUG] [Thread-125236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:32.258 [DEBUG] [Thread-125236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:03:32.258 [DEBUG] [Thread-125236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:32.268 [INFO] [Thread-125236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:32.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:33.022 [DEBUG] [Thread-125236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:33.022 [DEBUG] [Thread-125236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:33.022 [DEBUG] [Thread-125236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:03:33.063 [DEBUG] [Thread-125236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:33.063 [DEBUG] [Thread-125236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:33.065 [DEBUG] [Thread-125236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:33.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:33.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:03:33.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:03:33.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:33.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:03:33.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.460501 -999.00  +19.70   7.53     32   +2.60 1 1 1 1 1   888    0 14.62 -76.00 ----- 16.0 7.5 255.0 14.0 25.6 -26.1 24.4 -25.4 24.6 -24.3 25.9 -26.1
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:03:33.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.460501
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:03:33.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:02:28', tmtdew=19.89, humidity=26.24, cloud=0.0, wind=14.52, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:03:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:03:33.084 [DEBUG] [Thread-125236] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:33.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-28T13:03:33.170 [DEBUG] [Thread-125239] [transport.py] [_log()] starting thread (client mode): 0x2b9dc4f0
2025-09-28T13:03:33.170 [DEBUG] [Thread-125239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:33.184 [DEBUG] [Thread-125239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:03:33.184 [INFO] [Thread-125239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] Compression: none
2025-09-28T13:03:33.192 [DEBUG] [Thread-125239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:33.249 [DEBUG] [Thread-125239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:33.249 [DEBUG] [Thread-125239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:33.249 [DEBUG] [Thread-125239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:03:33.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:03:33.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:33.306 [DEBUG] [Thread-125239] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:33.307 [DEBUG] [Thread-125239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:33.307 [DEBUG] [Thread-125239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:33.307 [DEBUG] [Thread-125239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:03:33.307 [DEBUG] [Thread-125239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:33.320 [INFO] [Thread-125239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:33.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-28T13:03:33.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:34.300 [DEBUG] [Thread-125239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:34.300 [DEBUG] [Thread-125239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:34.348 [DEBUG] [Thread-125239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:34.348 [DEBUG] [Thread-125239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:34.357 [DEBUG] [Thread-125239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:34.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:34.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-28T13:03:34.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-28T13:03:34.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:34.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:34.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:34.392 [DEBUG] [Thread-125239] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:44.388 [DEBUG] [Thread-125241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:44.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:03:44.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:03:44.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:03:44.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 3, 32), 19.14, 27.5, 0.0, 14.2, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:03:44.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:03:32
2025-09-28T13:03:45.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:03:45.252 [DEBUG] [Thread-125242] [transport.py] [_log()] starting thread (client mode): 0x2b9ca770
2025-09-28T13:03:45.253 [DEBUG] [Thread-125242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:45.272 [DEBUG] [Thread-125242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:03:45.273 [INFO] [Thread-125242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:45.276 [DEBUG] [Thread-125242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:45.277 [DEBUG] [Thread-125242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:45.277 [DEBUG] [Thread-125242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:45.277 [DEBUG] [Thread-125242] [transport.py] [_log()] Compression: none
2025-09-28T13:03:45.277 [DEBUG] [Thread-125242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:45.294 [DEBUG] [Thread-125242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:45.294 [DEBUG] [Thread-125242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:45.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:03:45.294 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:45.294 [DEBUG] [Thread-125242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:03:45.295 [DEBUG] [Thread-125242] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:45.295 [DEBUG] [Thread-125242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:45.295 [DEBUG] [Thread-125242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:45.295 [DEBUG] [Thread-125242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:03:45.295 [DEBUG] [Thread-125242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:45.303 [INFO] [Thread-125242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:45.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:45.931 [DEBUG] [Thread-125242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:45.931 [DEBUG] [Thread-125242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:45.931 [DEBUG] [Thread-125242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:03:45.973 [DEBUG] [Thread-125242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:45.973 [DEBUG] [Thread-125242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:45.975 [DEBUG] [Thread-125242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:45.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:45.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:03:45.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:03:45.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:03:45.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:45.992 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:03:45.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.460848 -999.00  +19.10  20.00     32   +2.00 1 1 1 1 1   888    0 14.51 -67.18 ----- 14.1 20.0 270.0 27.0 25.5 -25.9 24.4 -24.6 24.5 -25.7 25.7 -25.9
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.460848
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:03:45.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:03:32', tmtdew=19.14, humidity=27.5, cloud=0.0, wind=14.2, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:03:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:03:45.993 [DEBUG] [Thread-125242] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:46.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-28T13:03:46.079 [DEBUG] [Thread-125245] [transport.py] [_log()] starting thread (client mode): 0x2b9c3760
2025-09-28T13:03:46.079 [DEBUG] [Thread-125245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:46.093 [DEBUG] [Thread-125245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:03:46.093 [INFO] [Thread-125245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:46.101 [DEBUG] [Thread-125245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] Compression: none
2025-09-28T13:03:46.102 [DEBUG] [Thread-125245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:46.156 [DEBUG] [Thread-125245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:46.156 [DEBUG] [Thread-125245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:46.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:03:46.156 [DEBUG] [Thread-125245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:03:46.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:46.213 [DEBUG] [Thread-125245] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:46.213 [DEBUG] [Thread-125245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:46.213 [DEBUG] [Thread-125245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:46.213 [DEBUG] [Thread-125245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:03:46.213 [DEBUG] [Thread-125245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:46.228 [INFO] [Thread-125245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:46.228 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:03:46.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:47.203 [DEBUG] [Thread-125245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:47.203 [DEBUG] [Thread-125245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:47.251 [DEBUG] [Thread-125245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:47.251 [DEBUG] [Thread-125245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:47.259 [DEBUG] [Thread-125245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:47.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:47.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-28T13:03:47.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-28T13:03:47.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:47.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:47.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:47.290 [DEBUG] [Thread-125245] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:51.274 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:51.276 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:03:57.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:03:57.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:03:57.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-28T13:03:57.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 3, 32), 19.14, 27.5, 0.0, 14.2, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:03:57.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:03:32
2025-09-28T13:03:57.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:03:58.132 [DEBUG] [Thread-125247] [transport.py] [_log()] starting thread (client mode): 0x2b9dcd30
2025-09-28T13:03:58.132 [DEBUG] [Thread-125247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:58.152 [DEBUG] [Thread-125247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:03:58.153 [INFO] [Thread-125247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:58.155 [DEBUG] [Thread-125247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] Compression: none
2025-09-28T13:03:58.156 [DEBUG] [Thread-125247] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:58.173 [DEBUG] [Thread-125247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:58.173 [DEBUG] [Thread-125247] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:58.174 [DEBUG] [Thread-125247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:03:58.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:03:58.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:58.176 [DEBUG] [Thread-125247] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:58.176 [DEBUG] [Thread-125247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:58.176 [DEBUG] [Thread-125247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:58.176 [DEBUG] [Thread-125247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:03:58.176 [DEBUG] [Thread-125247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:58.194 [INFO] [Thread-125247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:58.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:58.973 [DEBUG] [Thread-125247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:03:58.974 [DEBUG] [Thread-125247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:03:58.974 [DEBUG] [Thread-125247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:03:59.014 [DEBUG] [Thread-125247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:03:59.014 [DEBUG] [Thread-125247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:03:59.017 [DEBUG] [Thread-125247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:03:59.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:03:59.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:03:59.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:03:59.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:03:59.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:03:59.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:03:59.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:03:59.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:03:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:03:59.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.460848 -999.00  +19.10  20.00     32   +2.00 1 1 1 1 1   888    0 14.51 -67.18 ----- 14.1 20.0 270.0 27.0 25.5 -25.9 24.4 -24.6 24.5 -25.7 25.7 -25.9
2025-09-28T13:03:59.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:03:59.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:03:59.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.460848
2025-09-28T13:03:59.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:03:59.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:03:59.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:03:59.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:03:59.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:03:59.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:03:32', tmtdew=19.14, humidity=27.5, cloud=0.0, wind=14.2, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:03:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:03:59.044 [DEBUG] [Thread-125247] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:03:59.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-28T13:03:59.148 [DEBUG] [Thread-125250] [transport.py] [_log()] starting thread (client mode): 0x2e3c1840
2025-09-28T13:03:59.148 [DEBUG] [Thread-125250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:03:59.162 [DEBUG] [Thread-125250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:03:59.162 [INFO] [Thread-125250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:03:59.170 [DEBUG] [Thread-125250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:03:59.170 [DEBUG] [Thread-125250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:03:59.170 [DEBUG] [Thread-125250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] client lang: <none>
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] server lang: <none>
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] kex follows: False
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] Compression: none
2025-09-28T13:03:59.171 [DEBUG] [Thread-125250] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:03:59.227 [DEBUG] [Thread-125250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:03:59.228 [DEBUG] [Thread-125250] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:03:59.228 [DEBUG] [Thread-125250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:03:59.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:03:59.229 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:03:59.285 [DEBUG] [Thread-125250] [transport.py] [_log()] userauth is OK
2025-09-28T13:03:59.285 [DEBUG] [Thread-125250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:03:59.285 [DEBUG] [Thread-125250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:03:59.285 [DEBUG] [Thread-125250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:03:59.285 [DEBUG] [Thread-125250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:03:59.305 [INFO] [Thread-125250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:03:59.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-28T13:03:59.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:03:59.414 [DEBUG] [Thread-125252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:00.263 [DEBUG] [Thread-125250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:00.263 [DEBUG] [Thread-125250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:00.311 [DEBUG] [Thread-125250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:00.311 [DEBUG] [Thread-125250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:00.320 [DEBUG] [Thread-125250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:00.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:00.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-28T13:04:00.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-28T13:04:00.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:00.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:00.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:00.355 [DEBUG] [Thread-125250] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:04:10.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:04:10.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-28T13:04:10.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 4, 4), 19.13, 27.51, 0.0, 15.9, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:04:10.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:04:04
2025-09-28T13:04:10.953 [DEBUG] [Thread-125253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:11.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:04:11.184 [DEBUG] [Thread-125254] [transport.py] [_log()] starting thread (client mode): 0x2b9cb910
2025-09-28T13:04:11.184 [DEBUG] [Thread-125254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:11.203 [DEBUG] [Thread-125254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:04:11.203 [INFO] [Thread-125254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:11.206 [DEBUG] [Thread-125254] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] Compression: none
2025-09-28T13:04:11.207 [DEBUG] [Thread-125254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:11.222 [DEBUG] [Thread-125254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:11.222 [DEBUG] [Thread-125254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:11.223 [DEBUG] [Thread-125254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:04:11.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:04:11.224 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:11.225 [DEBUG] [Thread-125254] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:11.225 [DEBUG] [Thread-125254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:11.225 [DEBUG] [Thread-125254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:11.225 [DEBUG] [Thread-125254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:04:11.225 [DEBUG] [Thread-125254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:11.243 [INFO] [Thread-125254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:11.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:12.050 [DEBUG] [Thread-125254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:12.050 [DEBUG] [Thread-125254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:12.051 [DEBUG] [Thread-125254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:04:12.091 [DEBUG] [Thread-125254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:12.091 [DEBUG] [Thread-125254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:12.094 [DEBUG] [Thread-125254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:12.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:12.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:04:12.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:04:12.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:04:12.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:12.113 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:04:12.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.460848 -999.00  +19.10  20.00     32   +2.00 1 1 1 1 1   888    0 14.51 -67.18 ----- 14.1 20.0 270.0 27.0 25.5 -25.9 24.4 -24.6 24.5 -25.7 25.7 -25.9
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:04:12.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.460848
2025-09-28T13:04:12.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:04:12.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:04:12.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:04:12.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:04:12.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:04:12.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:04:04', tmtdew=19.13, humidity=27.51, cloud=0.0, wind=15.9, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:03:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:04:12.116 [DEBUG] [Thread-125254] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:12.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-28T13:04:12.213 [DEBUG] [Thread-125257] [transport.py] [_log()] starting thread (client mode): 0x2b9ac4f0
2025-09-28T13:04:12.213 [DEBUG] [Thread-125257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:12.229 [DEBUG] [Thread-125257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:04:12.229 [INFO] [Thread-125257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:04:12.237 [DEBUG] [Thread-125257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:12.238 [DEBUG] [Thread-125257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] Compression: none
2025-09-28T13:04:12.239 [DEBUG] [Thread-125257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:12.296 [DEBUG] [Thread-125257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:12.296 [DEBUG] [Thread-125257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:12.305 [DEBUG] [Thread-125257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:04:12.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:04:12.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:12.353 [DEBUG] [Thread-125257] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:12.353 [DEBUG] [Thread-125257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:12.353 [DEBUG] [Thread-125257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:12.354 [DEBUG] [Thread-125257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:04:12.354 [DEBUG] [Thread-125257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:12.374 [INFO] [Thread-125257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:12.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-28T13:04:12.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:13.393 [DEBUG] [Thread-125257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:13.393 [DEBUG] [Thread-125257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:13.441 [DEBUG] [Thread-125257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:13.441 [DEBUG] [Thread-125257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:13.449 [DEBUG] [Thread-125257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:13.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:13.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-28T13:04:13.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-28T13:04:13.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:13.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:13.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:13.482 [DEBUG] [Thread-125257] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:14.469 [DEBUG] [Thread-125259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:23.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:04:23.484 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:04:23.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-28T13:04:24.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 4, 4), 19.13, 27.51, 0.0, 15.9, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:04:24.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:04:04
2025-09-28T13:04:24.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:04:24.323 [DEBUG] [Thread-125260] [transport.py] [_log()] starting thread (client mode): 0x2b9df6d0
2025-09-28T13:04:24.323 [DEBUG] [Thread-125260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:24.344 [DEBUG] [Thread-125260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:04:24.344 [INFO] [Thread-125260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:04:24.347 [DEBUG] [Thread-125260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] Compression: none
2025-09-28T13:04:24.348 [DEBUG] [Thread-125260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:24.364 [DEBUG] [Thread-125260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:24.364 [DEBUG] [Thread-125260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:24.364 [DEBUG] [Thread-125260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:04:24.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:04:24.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:24.365 [DEBUG] [Thread-125260] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:24.365 [DEBUG] [Thread-125260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:24.365 [DEBUG] [Thread-125260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:24.365 [DEBUG] [Thread-125260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:04:24.365 [DEBUG] [Thread-125260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:24.374 [INFO] [Thread-125260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:24.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:25.003 [DEBUG] [Thread-125260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:25.003 [DEBUG] [Thread-125260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:25.003 [DEBUG] [Thread-125260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:04:25.044 [DEBUG] [Thread-125260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:25.044 [DEBUG] [Thread-125260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:25.047 [DEBUG] [Thread-125260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:25.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:25.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:04:25.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:04:25.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:04:25.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:25.063 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:04:25.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461195 -999.00  +19.20  23.18     31   +1.70 1 1 1 1 1   888    0 15.34 -57.60 ----- 22.6 23.2 272.8 29.6 25.5 -27.2 24.4 -26.0 24.3 -26.6 25.8 -25.4
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461195
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:04:25.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:04:04', tmtdew=19.13, humidity=27.51, cloud=0.0, wind=15.9, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:04:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:04:25.064 [DEBUG] [Thread-125260] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:25.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-28T13:04:25.146 [DEBUG] [Thread-125263] [transport.py] [_log()] starting thread (client mode): 0x2b9c9db0
2025-09-28T13:04:25.146 [DEBUG] [Thread-125263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:25.161 [DEBUG] [Thread-125263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:04:25.161 [INFO] [Thread-125263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] Compression: none
2025-09-28T13:04:25.168 [DEBUG] [Thread-125263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:25.225 [DEBUG] [Thread-125263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:25.225 [DEBUG] [Thread-125263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:25.225 [DEBUG] [Thread-125263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:04:25.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:04:25.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:25.283 [DEBUG] [Thread-125263] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:25.283 [DEBUG] [Thread-125263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:25.283 [DEBUG] [Thread-125263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:25.283 [DEBUG] [Thread-125263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:04:25.283 [DEBUG] [Thread-125263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:25.297 [INFO] [Thread-125263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:25.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-28T13:04:25.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:26.265 [DEBUG] [Thread-125263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:26.265 [DEBUG] [Thread-125263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:26.313 [DEBUG] [Thread-125263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:26.313 [DEBUG] [Thread-125263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:26.322 [DEBUG] [Thread-125263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:26.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:26.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-28T13:04:26.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-28T13:04:26.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:26.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:26.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:26.357 [DEBUG] [Thread-125263] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:29.516 [DEBUG] [Thread-125265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:36.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:04:36.359 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:04:36.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:04:36.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 4, 4), 19.13, 27.51, 0.0, 15.9, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:04:36.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:04:04
2025-09-28T13:04:37.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:04:37.244 [DEBUG] [Thread-125266] [transport.py] [_log()] starting thread (client mode): 0x2b9cb640
2025-09-28T13:04:37.245 [DEBUG] [Thread-125266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:37.263 [DEBUG] [Thread-125266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:04:37.263 [INFO] [Thread-125266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] Compression: none
2025-09-28T13:04:37.267 [DEBUG] [Thread-125266] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:37.274 [DEBUG] [Thread-125266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:37.274 [DEBUG] [Thread-125266] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:37.275 [DEBUG] [Thread-125266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:04:37.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:04:37.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:37.275 [DEBUG] [Thread-125266] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:37.275 [DEBUG] [Thread-125266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:37.276 [DEBUG] [Thread-125266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:37.276 [DEBUG] [Thread-125266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:04:37.276 [DEBUG] [Thread-125266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:37.287 [INFO] [Thread-125266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:37.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:38.054 [DEBUG] [Thread-125266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:38.054 [DEBUG] [Thread-125266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:38.054 [DEBUG] [Thread-125266] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:04:38.096 [DEBUG] [Thread-125266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:38.096 [DEBUG] [Thread-125266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:38.099 [DEBUG] [Thread-125266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:38.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:38.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:04:38.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:04:38.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:04:38.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:38.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:04:38.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461195 -999.00  +19.20  23.18     31   +1.70 1 1 1 1 1   888    0 15.34 -57.60 ----- 22.6 23.2 272.8 29.6 25.5 -27.2 24.4 -26.0 24.3 -26.6 25.8 -25.4
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:04:38.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461195
2025-09-28T13:04:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:04:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:04:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:04:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:04:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:04:38.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:04:04', tmtdew=19.13, humidity=27.51, cloud=0.0, wind=15.9, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:04:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:04:38.125 [DEBUG] [Thread-125266] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:38.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-28T13:04:38.220 [DEBUG] [Thread-125269] [transport.py] [_log()] starting thread (client mode): 0x2b9af880
2025-09-28T13:04:38.220 [DEBUG] [Thread-125269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:38.236 [DEBUG] [Thread-125269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:04:38.236 [INFO] [Thread-125269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:04:38.243 [DEBUG] [Thread-125269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:38.244 [DEBUG] [Thread-125269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:38.245 [DEBUG] [Thread-125269] [transport.py] [_log()] Compression: none
2025-09-28T13:04:38.245 [DEBUG] [Thread-125269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:38.301 [DEBUG] [Thread-125269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:38.302 [DEBUG] [Thread-125269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:38.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:04:38.303 [DEBUG] [Thread-125269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:04:38.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:38.358 [DEBUG] [Thread-125269] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:38.358 [DEBUG] [Thread-125269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:38.358 [DEBUG] [Thread-125269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:38.358 [DEBUG] [Thread-125269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:04:38.359 [DEBUG] [Thread-125269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:38.377 [INFO] [Thread-125269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:38.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-28T13:04:38.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:39.312 [DEBUG] [Thread-125269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:39.312 [DEBUG] [Thread-125269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:39.360 [DEBUG] [Thread-125269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:39.360 [DEBUG] [Thread-125269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:39.369 [DEBUG] [Thread-125269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:39.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:39.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-28T13:04:39.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-28T13:04:39.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:39.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:39.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:39.404 [DEBUG] [Thread-125269] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:44.555 [DEBUG] [Thread-125271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:49.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:04:49.403 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:04:49.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-28T13:04:49.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 4, 35), 20.32, 25.22, 0.0, 23.01, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:04:49.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:04:35
2025-09-28T13:04:50.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:04:50.223 [DEBUG] [Thread-125272] [transport.py] [_log()] starting thread (client mode): 0x2b9cb040
2025-09-28T13:04:50.223 [DEBUG] [Thread-125272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:50.232 [DEBUG] [Thread-125272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:04:50.232 [INFO] [Thread-125272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:04:50.235 [DEBUG] [Thread-125272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:50.235 [DEBUG] [Thread-125272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] Compression: none
2025-09-28T13:04:50.236 [DEBUG] [Thread-125272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:50.243 [DEBUG] [Thread-125272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:50.243 [DEBUG] [Thread-125272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:50.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:04:50.243 [DEBUG] [Thread-125272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:04:50.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:50.244 [DEBUG] [Thread-125272] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:50.244 [DEBUG] [Thread-125272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:50.244 [DEBUG] [Thread-125272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:50.244 [DEBUG] [Thread-125272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:04:50.244 [DEBUG] [Thread-125272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:50.262 [INFO] [Thread-125272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:50.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:50.845 [DEBUG] [Thread-125272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:50.846 [DEBUG] [Thread-125272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:50.846 [DEBUG] [Thread-125272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:04:50.886 [DEBUG] [Thread-125272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:50.887 [DEBUG] [Thread-125272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:50.889 [DEBUG] [Thread-125272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:50.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:50.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:04:50.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:04:50.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:04:50.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:50.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:04:50.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:50.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461542 -999.00  +18.40  16.14     30   +1.00 1 1 1 1 1   888    0 15.21 -47.98 ----- 16.5 16.1 278.6 33.1 25.2 -27.5 24.4 -25.4 24.0 -29.3 25.5 -26.1
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461542
2025-09-28T13:04:50.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:04:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:04:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:04:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:04:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:04:50.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:04:35', tmtdew=20.32, humidity=25.22, cloud=0.0, wind=23.01, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:04:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:04:50.914 [DEBUG] [Thread-125272] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:50.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-28T13:04:51.008 [DEBUG] [Thread-125275] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-28T13:04:51.009 [DEBUG] [Thread-125275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:04:51.025 [DEBUG] [Thread-125275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:04:51.025 [INFO] [Thread-125275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:04:51.036 [DEBUG] [Thread-125275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:04:51.036 [DEBUG] [Thread-125275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] client lang: <none>
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] server lang: <none>
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] kex follows: False
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:04:51.037 [DEBUG] [Thread-125275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:04:51.038 [DEBUG] [Thread-125275] [transport.py] [_log()] Compression: none
2025-09-28T13:04:51.038 [DEBUG] [Thread-125275] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:04:51.093 [DEBUG] [Thread-125275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:04:51.094 [DEBUG] [Thread-125275] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:04:51.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:04:51.095 [DEBUG] [Thread-125275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:04:51.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:04:51.149 [DEBUG] [Thread-125275] [transport.py] [_log()] userauth is OK
2025-09-28T13:04:51.150 [DEBUG] [Thread-125275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:04:51.150 [DEBUG] [Thread-125275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:04:51.150 [DEBUG] [Thread-125275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:04:51.150 [DEBUG] [Thread-125275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:04:51.169 [INFO] [Thread-125275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:04:51.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-28T13:04:51.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:04:51.418 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:51.419 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:04:52.140 [DEBUG] [Thread-125275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:04:52.140 [DEBUG] [Thread-125275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:04:52.188 [DEBUG] [Thread-125275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:04:52.188 [DEBUG] [Thread-125275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:04:52.197 [DEBUG] [Thread-125275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:04:52.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:04:52.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')
2025-09-28T13:04:52.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-28T13:04:52.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:04:52.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:04:52.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:04:52.232 [DEBUG] [Thread-125275] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:04:59.582 [DEBUG] [Thread-125277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:02.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:05:02.234 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:05:02.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-28T13:05:02.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 4, 35), 20.32, 25.22, 0.0, 23.01, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:05:02.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:04:35
2025-09-28T13:05:02.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:05:03.077 [DEBUG] [Thread-125278] [transport.py] [_log()] starting thread (client mode): 0x2b95f0d0
2025-09-28T13:05:03.077 [DEBUG] [Thread-125278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:03.099 [DEBUG] [Thread-125278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:05:03.099 [INFO] [Thread-125278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:03.102 [DEBUG] [Thread-125278] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] Compression: none
2025-09-28T13:05:03.103 [DEBUG] [Thread-125278] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:03.120 [DEBUG] [Thread-125278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:03.121 [DEBUG] [Thread-125278] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:03.122 [DEBUG] [Thread-125278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:05:03.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:05:03.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:03.124 [DEBUG] [Thread-125278] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:03.124 [DEBUG] [Thread-125278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:03.124 [DEBUG] [Thread-125278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:03.124 [DEBUG] [Thread-125278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:05:03.124 [DEBUG] [Thread-125278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:03.148 [INFO] [Thread-125278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:03.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:09.994 [DEBUG] [Thread-125278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:09.994 [DEBUG] [Thread-125278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:09.995 [DEBUG] [Thread-125278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:05:10.036 [DEBUG] [Thread-125278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:10.036 [DEBUG] [Thread-125278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:10.039 [DEBUG] [Thread-125278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:10.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:10.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:05:10.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:05:10.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:05:10.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:10.282 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:05:10.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461542 -999.00  +18.40  16.14     30   +1.00 1 1 1 1 1   888    0 15.21 -47.98 ----- 16.5 16.1 278.6 33.1 25.2 -27.5 24.4 -25.4 24.0 -29.3 25.5 -26.1
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461542
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:05:10.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:04:35', tmtdew=20.32, humidity=25.22, cloud=0.0, wind=23.01, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:04:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:05:10.283 [DEBUG] [Thread-125278] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:10.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-28T13:05:10.366 [DEBUG] [Thread-125281] [transport.py] [_log()] starting thread (client mode): 0x2b9caf80
2025-09-28T13:05:10.367 [DEBUG] [Thread-125281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:10.381 [DEBUG] [Thread-125281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:05:10.382 [INFO] [Thread-125281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:05:10.389 [DEBUG] [Thread-125281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] Compression: none
2025-09-28T13:05:10.390 [DEBUG] [Thread-125281] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:10.448 [DEBUG] [Thread-125281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:10.448 [DEBUG] [Thread-125281] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:10.449 [DEBUG] [Thread-125281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:05:10.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:05:10.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:10.504 [DEBUG] [Thread-125281] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:10.504 [DEBUG] [Thread-125281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:10.504 [DEBUG] [Thread-125281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:10.504 [DEBUG] [Thread-125281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:05:10.504 [DEBUG] [Thread-125281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:10.522 [INFO] [Thread-125281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:10.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-28T13:05:10.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:11.008 [DEBUG] [Thread-125283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:11.555 [DEBUG] [Thread-125281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:11.555 [DEBUG] [Thread-125281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:11.769 [DEBUG] [Thread-125281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:11.769 [DEBUG] [Thread-125281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:11.778 [DEBUG] [Thread-125281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:11.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:11.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-28T13:05:11.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-28T13:05:11.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:11.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:11.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:11.813 [DEBUG] [Thread-125281] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:14.619 [DEBUG] [Thread-125284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:21.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:05:21.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:05:21.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-28T13:05:22.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 5, 7), 21.05, 23.97, 0.0, 23.77, 19.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:05:22.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:05:07
2025-09-28T13:05:22.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:05:22.665 [DEBUG] [Thread-125285] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-28T13:05:22.665 [DEBUG] [Thread-125285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:22.675 [DEBUG] [Thread-125285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:05:22.676 [INFO] [Thread-125285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] Compression: none
2025-09-28T13:05:22.677 [DEBUG] [Thread-125285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:22.684 [DEBUG] [Thread-125285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:22.685 [DEBUG] [Thread-125285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:22.685 [DEBUG] [Thread-125285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:05:22.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:05:22.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:22.686 [DEBUG] [Thread-125285] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:22.686 [DEBUG] [Thread-125285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:22.686 [DEBUG] [Thread-125285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:22.686 [DEBUG] [Thread-125285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:05:22.686 [DEBUG] [Thread-125285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:22.696 [INFO] [Thread-125285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:22.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:23.800 [DEBUG] [Thread-125285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:23.800 [DEBUG] [Thread-125285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:23.800 [DEBUG] [Thread-125285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:05:23.841 [DEBUG] [Thread-125285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:23.841 [DEBUG] [Thread-125285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:23.843 [DEBUG] [Thread-125285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:23.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:23.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:05:23.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:05:23.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:05:23.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:23.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:05:23.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:23.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461542 -999.00  +18.40  16.14     30   +1.00 1 1 1 1 1   888    0 15.21 -47.98 ----- 16.5 16.1 278.6 33.1 25.2 -27.5 24.4 -25.4 24.0 -29.3 25.5 -26.1
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461542
2025-09-28T13:05:23.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:05:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:05:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:05:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:05:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:05:23.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:05:07', tmtdew=21.05, humidity=23.97, cloud=0.0, wind=23.77, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:04:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:05:23.866 [DEBUG] [Thread-125285] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:23.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-28T13:05:23.964 [DEBUG] [Thread-125288] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T13:05:23.964 [DEBUG] [Thread-125288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:23.979 [DEBUG] [Thread-125288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:05:23.979 [INFO] [Thread-125288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:05:23.987 [DEBUG] [Thread-125288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:23.987 [DEBUG] [Thread-125288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] Compression: none
2025-09-28T13:05:23.988 [DEBUG] [Thread-125288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:24.047 [DEBUG] [Thread-125288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:24.048 [DEBUG] [Thread-125288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:24.048 [DEBUG] [Thread-125288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:05:24.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:05:24.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:24.104 [DEBUG] [Thread-125288] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:24.104 [DEBUG] [Thread-125288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:24.104 [DEBUG] [Thread-125288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:24.104 [DEBUG] [Thread-125288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:05:24.104 [DEBUG] [Thread-125288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:24.123 [INFO] [Thread-125288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:24.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-28T13:05:24.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:25.061 [DEBUG] [Thread-125288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:25.061 [DEBUG] [Thread-125288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:25.109 [DEBUG] [Thread-125288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:25.109 [DEBUG] [Thread-125288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:25.120 [DEBUG] [Thread-125288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:25.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:25.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-28T13:05:25.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-28T13:05:25.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:25.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:25.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:25.163 [DEBUG] [Thread-125288] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:29.651 [DEBUG] [Thread-125290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:35.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:05:35.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:05:35.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-28T13:05:35.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 5, 7), 21.05, 23.97, 0.0, 23.77, 19.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:05:35.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:05:07
2025-09-28T13:05:35.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:05:36.027 [DEBUG] [Thread-125291] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T13:05:36.027 [DEBUG] [Thread-125291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:36.048 [DEBUG] [Thread-125291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:05:36.048 [INFO] [Thread-125291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] Compression: none
2025-09-28T13:05:36.051 [DEBUG] [Thread-125291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:36.069 [DEBUG] [Thread-125291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:05:36.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:05:36.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:05:36.070 [DEBUG] [Thread-125291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:36.080 [INFO] [Thread-125291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:36.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:36.637 [DEBUG] [Thread-125291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:36.637 [DEBUG] [Thread-125291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:36.637 [DEBUG] [Thread-125291] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:05:36.678 [DEBUG] [Thread-125291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:36.678 [DEBUG] [Thread-125291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:36.680 [DEBUG] [Thread-125291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:36.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:36.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:05:36.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:05:36.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:05:36.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:36.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:05:36.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461889 -999.00  +18.40  22.67     32   +1.60 1 1 1 1 1   888    0 15.60 -42.13 ----- 17.0 22.7 266.6 27.8 25.2 -27.9 24.3 -24.7 23.9 -25.0 25.4 -26.5
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461889
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:05:36.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:05:07', tmtdew=21.05, humidity=23.97, cloud=0.0, wind=23.77, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:05:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:05:36.701 [DEBUG] [Thread-125291] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:36.773 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:05:36.785 [DEBUG] [Thread-125294] [transport.py] [_log()] starting thread (client mode): 0x2b9c9f60
2025-09-28T13:05:36.785 [DEBUG] [Thread-125294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:36.800 [DEBUG] [Thread-125294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:05:36.800 [INFO] [Thread-125294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] Compression: none
2025-09-28T13:05:36.808 [DEBUG] [Thread-125294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:36.865 [DEBUG] [Thread-125294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:36.865 [DEBUG] [Thread-125294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:36.866 [DEBUG] [Thread-125294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:05:36.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:05:36.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:36.922 [DEBUG] [Thread-125294] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:36.922 [DEBUG] [Thread-125294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:36.922 [DEBUG] [Thread-125294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:36.922 [DEBUG] [Thread-125294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:05:36.922 [DEBUG] [Thread-125294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:36.937 [INFO] [Thread-125294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:36.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-28T13:05:36.937 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:37.927 [DEBUG] [Thread-125294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:37.927 [DEBUG] [Thread-125294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:37.975 [DEBUG] [Thread-125294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:37.975 [DEBUG] [Thread-125294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:37.984 [DEBUG] [Thread-125294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:37.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:37.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-28T13:05:38.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-28T13:05:38.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:38.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:38.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:38.017 [DEBUG] [Thread-125294] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:44.694 [DEBUG] [Thread-125296 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:48.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:05:48.016 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:05: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-28T13:05:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 5, 39), 20.58, 24.89, 0.0, 15.26, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:05:48.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:05:39
2025-09-28T13:05:48.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:05:48.849 [DEBUG] [Thread-125297] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T13:05:48.849 [DEBUG] [Thread-125297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:48.868 [DEBUG] [Thread-125297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:05:48.868 [INFO] [Thread-125297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:05:48.871 [DEBUG] [Thread-125297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:48.872 [DEBUG] [Thread-125297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:48.873 [DEBUG] [Thread-125297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:48.873 [DEBUG] [Thread-125297] [transport.py] [_log()] Compression: none
2025-09-28T13:05:48.873 [DEBUG] [Thread-125297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:48.890 [DEBUG] [Thread-125297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:48.891 [DEBUG] [Thread-125297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:48.891 [DEBUG] [Thread-125297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:05:48.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:05:48.892 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:48.893 [DEBUG] [Thread-125297] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:48.893 [DEBUG] [Thread-125297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:48.893 [DEBUG] [Thread-125297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:48.894 [DEBUG] [Thread-125297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:05:48.894 [DEBUG] [Thread-125297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:48.918 [INFO] [Thread-125297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:48.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:49.676 [DEBUG] [Thread-125297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:49.676 [DEBUG] [Thread-125297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:49.677 [DEBUG] [Thread-125297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:05:49.717 [DEBUG] [Thread-125297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:49.717 [DEBUG] [Thread-125297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:49.720 [DEBUG] [Thread-125297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:49.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:49.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:05:49.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:05:49.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:05:49.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:49.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:05:49.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:49.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:05:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.461889 -999.00  +18.40  22.67     32   +1.60 1 1 1 1 1   888    0 15.60 -42.13 ----- 17.0 22.7 266.6 27.8 25.2 -27.9 24.3 -24.7 23.9 -25.0 25.4 -26.5
2025-09-28T13:05:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:05:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:05:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.461889
2025-09-28T13:05:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:05:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:05:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:05:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:05:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:05:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:05:39', tmtdew=20.58, humidity=24.89, cloud=0.0, wind=15.26, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:05:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:05:49.743 [DEBUG] [Thread-125297] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:49.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-28T13:05:49.839 [DEBUG] [Thread-125300] [transport.py] [_log()] starting thread (client mode): 0x2b95e2f0
2025-09-28T13:05:49.839 [DEBUG] [Thread-125300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:05:49.854 [DEBUG] [Thread-125300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:05:49.854 [INFO] [Thread-125300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] client lang: <none>
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] server lang: <none>
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] kex follows: False
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:05:49.862 [DEBUG] [Thread-125300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:05:49.863 [DEBUG] [Thread-125300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:05:49.863 [DEBUG] [Thread-125300] [transport.py] [_log()] Compression: none
2025-09-28T13:05:49.863 [DEBUG] [Thread-125300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:05:49.923 [DEBUG] [Thread-125300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:05:49.923 [DEBUG] [Thread-125300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:05:49.924 [DEBUG] [Thread-125300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:05:49.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:05:49.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:05:49.983 [DEBUG] [Thread-125300] [transport.py] [_log()] userauth is OK
2025-09-28T13:05:49.984 [DEBUG] [Thread-125300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:05:49.984 [DEBUG] [Thread-125300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:05:49.984 [DEBUG] [Thread-125300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:05:49.984 [DEBUG] [Thread-125300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:05:50.003 [INFO] [Thread-125300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:05:50.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-28T13:05:50.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:05:50.959 [DEBUG] [Thread-125300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:05:50.959 [DEBUG] [Thread-125300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:05:51.007 [DEBUG] [Thread-125300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:05:51.008 [DEBUG] [Thread-125300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:05:51.017 [DEBUG] [Thread-125300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:05:51.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:05:51.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-28T13:05:51.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-28T13:05:51.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:05:51.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:05:51.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:05:51.052 [DEBUG] [Thread-125300] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:05:51.560 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:51.561 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:05:59.746 [DEBUG] [Thread-125302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:01.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:06:01.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:06:01.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-28T13:06:01.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 5, 39), 20.58, 24.89, 0.0, 15.26, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:06:01.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:05:39
2025-09-28T13:06:01.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:06:01.907 [DEBUG] [Thread-125303] [transport.py] [_log()] starting thread (client mode): 0x2b98a4a0
2025-09-28T13:06:01.907 [DEBUG] [Thread-125303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:01.927 [DEBUG] [Thread-125303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:06:01.927 [INFO] [Thread-125303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:01.930 [DEBUG] [Thread-125303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] Compression: none
2025-09-28T13:06:01.931 [DEBUG] [Thread-125303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:01.949 [DEBUG] [Thread-125303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:01.949 [DEBUG] [Thread-125303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:01.950 [DEBUG] [Thread-125303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:06:01.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:06:01.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:01.992 [DEBUG] [Thread-125303] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:01.993 [DEBUG] [Thread-125303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:01.993 [DEBUG] [Thread-125303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:01.993 [DEBUG] [Thread-125303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:06:01.993 [DEBUG] [Thread-125303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:02.019 [INFO] [Thread-125303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:02.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:02.609 [DEBUG] [Thread-125303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:02.609 [DEBUG] [Thread-125303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:02.610 [DEBUG] [Thread-125303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:06:02.650 [DEBUG] [Thread-125303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:02.650 [DEBUG] [Thread-125303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:02.652 [DEBUG] [Thread-125303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:02.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:02.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:06:02.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:06:02.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:06:02.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:02.670 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:06:02.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462237 -999.00  +18.70  13.95     33   +2.40 1 1 1 1 1   888    0 15.75 -39.07 ----- 9.6 13.9 216.4 22.4 25.4 -26.0 24.3 -27.8 24.2 -24.3 25.4 -25.5
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462237
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:06:02.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:05:39', tmtdew=20.58, humidity=24.89, cloud=0.0, wind=15.26, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:05:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:06:02.671 [DEBUG] [Thread-125303] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:02.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-28T13:06:02.757 [DEBUG] [Thread-125306] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd30
2025-09-28T13:06:02.757 [DEBUG] [Thread-125306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:02.771 [DEBUG] [Thread-125306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:06:02.772 [INFO] [Thread-125306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:02.782 [DEBUG] [Thread-125306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:02.783 [DEBUG] [Thread-125306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:02.783 [DEBUG] [Thread-125306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:02.783 [DEBUG] [Thread-125306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:02.783 [DEBUG] [Thread-125306] [transport.py] [_log()] Compression: none
2025-09-28T13:06:02.783 [DEBUG] [Thread-125306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:02.837 [DEBUG] [Thread-125306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:02.838 [DEBUG] [Thread-125306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:02.839 [DEBUG] [Thread-125306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:06:02.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:06:02.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:02.898 [DEBUG] [Thread-125306] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:02.898 [DEBUG] [Thread-125306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:02.898 [DEBUG] [Thread-125306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:02.898 [DEBUG] [Thread-125306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:06:02.898 [DEBUG] [Thread-125306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:02.918 [INFO] [Thread-125306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:02.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:06:02.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:03.864 [DEBUG] [Thread-125306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:03.864 [DEBUG] [Thread-125306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:03.912 [DEBUG] [Thread-125306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:03.912 [DEBUG] [Thread-125306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:03.921 [DEBUG] [Thread-125306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:03.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:03.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-28T13:06:03.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-28T13:06:03.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:03.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:03.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:03.954 [DEBUG] [Thread-125306] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:11.056 [DEBUG] [Thread-125308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:13.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:06:13.956 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:06:13.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-28T13:06:14.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 5, 39), 20.58, 24.89, 0.0, 15.26, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:06:14.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:05:39
2025-09-28T13:06:14.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:06:14.785 [DEBUG] [Thread-125309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:14.850 [DEBUG] [Thread-125310] [transport.py] [_log()] starting thread (client mode): 0x2b9844f0
2025-09-28T13:06:14.850 [DEBUG] [Thread-125310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:14.871 [DEBUG] [Thread-125310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:06:14.871 [INFO] [Thread-125310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:14.874 [DEBUG] [Thread-125310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:14.875 [DEBUG] [Thread-125310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:14.875 [DEBUG] [Thread-125310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:14.875 [DEBUG] [Thread-125310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:14.875 [DEBUG] [Thread-125310] [transport.py] [_log()] Compression: none
2025-09-28T13:06:14.875 [DEBUG] [Thread-125310] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:14.890 [DEBUG] [Thread-125310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:14.890 [DEBUG] [Thread-125310] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:14.890 [DEBUG] [Thread-125310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:06:14.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:06:14.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:14.891 [DEBUG] [Thread-125310] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:14.891 [DEBUG] [Thread-125310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:14.891 [DEBUG] [Thread-125310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:14.891 [DEBUG] [Thread-125310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:06:14.891 [DEBUG] [Thread-125310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:14.906 [INFO] [Thread-125310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:14.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:15.655 [DEBUG] [Thread-125310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:15.655 [DEBUG] [Thread-125310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:15.655 [DEBUG] [Thread-125310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:06:15.696 [DEBUG] [Thread-125310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:15.696 [DEBUG] [Thread-125310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:15.698 [DEBUG] [Thread-125310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:15.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:15.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:06:15.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:06:15.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:06:15.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:15.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:06:15.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:15.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462237 -999.00  +18.70  13.95     33   +2.40 1 1 1 1 1   888    0 15.75 -39.07 ----- 9.6 13.9 216.4 22.4 25.4 -26.0 24.3 -27.8 24.2 -24.3 25.4 -25.5
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462237
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:06:15.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:05:39', tmtdew=20.58, humidity=24.89, cloud=0.0, wind=15.26, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:05:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:06:15.715 [DEBUG] [Thread-125310] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:15.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-28T13:06:15.806 [DEBUG] [Thread-125313] [transport.py] [_log()] starting thread (client mode): 0x2b9c2ec0
2025-09-28T13:06:15.806 [DEBUG] [Thread-125313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:15.826 [DEBUG] [Thread-125313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:06:15.826 [INFO] [Thread-125313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] Compression: none
2025-09-28T13:06:15.836 [DEBUG] [Thread-125313] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:15.892 [DEBUG] [Thread-125313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:15.892 [DEBUG] [Thread-125313] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:15.893 [DEBUG] [Thread-125313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:06:15.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:06:15.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:15.948 [DEBUG] [Thread-125313] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:15.948 [DEBUG] [Thread-125313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:15.949 [DEBUG] [Thread-125313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:15.949 [DEBUG] [Thread-125313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:06:15.949 [DEBUG] [Thread-125313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:15.967 [INFO] [Thread-125313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:15.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-28T13:06:15.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:16.938 [DEBUG] [Thread-125313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:16.939 [DEBUG] [Thread-125313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:16.986 [DEBUG] [Thread-125313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:16.986 [DEBUG] [Thread-125313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:16.995 [DEBUG] [Thread-125313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:17.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:17.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-28T13:06:17.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-28T13:06:17.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:17.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:17.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:17.031 [DEBUG] [Thread-125313] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:06:27.034 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:06:27.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-28T13:06:27.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 6, 12), 20.25, 25.49, 0.0, 15.14, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:06:27.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:06:12
2025-09-28T13:06:27.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:06:27.875 [DEBUG] [Thread-125315] [transport.py] [_log()] starting thread (client mode): 0x2b985180
2025-09-28T13:06:27.875 [DEBUG] [Thread-125315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:27.894 [DEBUG] [Thread-125315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:06:27.894 [INFO] [Thread-125315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:06:27.895 [DEBUG] [Thread-125315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:27.895 [DEBUG] [Thread-125315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:06:27.895 [DEBUG] [Thread-125315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:27.896 [DEBUG] [Thread-125315] [transport.py] [_log()] Compression: none
2025-09-28T13:06:27.897 [DEBUG] [Thread-125315] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:27.906 [DEBUG] [Thread-125315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:27.906 [DEBUG] [Thread-125315] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:27.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:06:27.907 [DEBUG] [Thread-125315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:06:27.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:27.909 [DEBUG] [Thread-125315] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:27.909 [DEBUG] [Thread-125315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:27.909 [DEBUG] [Thread-125315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:27.909 [DEBUG] [Thread-125315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:06:27.909 [DEBUG] [Thread-125315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:27.930 [INFO] [Thread-125315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:27.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:28.680 [DEBUG] [Thread-125315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:28.680 [DEBUG] [Thread-125315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:28.681 [DEBUG] [Thread-125315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:06:28.721 [DEBUG] [Thread-125315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:28.721 [DEBUG] [Thread-125315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:28.724 [DEBUG] [Thread-125315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:28.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:28.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:06:28.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:06:28.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:06:28.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:28.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:06:28.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:28.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:28.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:06:28.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462237 -999.00  +18.70  13.95     33   +2.40 1 1 1 1 1   888    0 15.75 -39.07 ----- 9.6 13.9 216.4 22.4 25.4 -26.0 24.3 -27.8 24.2 -24.3 25.4 -25.5
2025-09-28T13:06:28.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:06:28.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:06:28.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462237
2025-09-28T13:06:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:06:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:06:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:06:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:06:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:06:28.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:06:12', tmtdew=20.25, humidity=25.49, cloud=0.0, wind=15.14, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:05:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:06:28.745 [DEBUG] [Thread-125315] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:28.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-28T13:06:28.831 [DEBUG] [Thread-125318] [transport.py] [_log()] starting thread (client mode): 0x2b95fb50
2025-09-28T13:06:28.832 [DEBUG] [Thread-125318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:28.847 [DEBUG] [Thread-125318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:06:28.847 [INFO] [Thread-125318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:28.855 [DEBUG] [Thread-125318] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] Compression: none
2025-09-28T13:06:28.856 [DEBUG] [Thread-125318] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:28.916 [DEBUG] [Thread-125318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:28.916 [DEBUG] [Thread-125318] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:28.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:06:28.917 [DEBUG] [Thread-125318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:06:28.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:28.971 [DEBUG] [Thread-125318] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:28.971 [DEBUG] [Thread-125318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:28.971 [DEBUG] [Thread-125318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:28.971 [DEBUG] [Thread-125318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:06:28.971 [DEBUG] [Thread-125318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:28.985 [INFO] [Thread-125318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:28.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-28T13:06:28.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:29.821 [DEBUG] [Thread-125320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:29.943 [DEBUG] [Thread-125318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:29.944 [DEBUG] [Thread-125318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:29.992 [DEBUG] [Thread-125318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:29.992 [DEBUG] [Thread-125318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:30.001 [DEBUG] [Thread-125318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:30.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:30.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')
2025-09-28T13:06:30.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') -> 00000000
2025-09-28T13:06:30.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:30.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:30.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:30.036 [DEBUG] [Thread-125318] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:40.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:06:40.039 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:06:40.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-28T13:06:40.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 6, 12), 20.25, 25.49, 0.0, 15.14, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:06:40.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:06:12
2025-09-28T13:06:40.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:06:40.866 [DEBUG] [Thread-125321] [transport.py] [_log()] starting thread (client mode): 0x2b9c04f0
2025-09-28T13:06:40.866 [DEBUG] [Thread-125321] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:40.886 [DEBUG] [Thread-125321] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:06:40.886 [INFO] [Thread-125321] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] Compression: none
2025-09-28T13:06:40.888 [DEBUG] [Thread-125321] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:40.905 [DEBUG] [Thread-125321] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:40.905 [DEBUG] [Thread-125321] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:40.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:06:40.906 [DEBUG] [Thread-125321] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:06:40.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:40.908 [DEBUG] [Thread-125321] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:40.909 [DEBUG] [Thread-125321] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:40.909 [DEBUG] [Thread-125321] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:40.909 [DEBUG] [Thread-125321] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:06:40.909 [DEBUG] [Thread-125321] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:40.933 [INFO] [Thread-125321] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:40.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:41.590 [DEBUG] [Thread-125321] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:41.590 [DEBUG] [Thread-125321] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:41.590 [DEBUG] [Thread-125321] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:06:41.631 [DEBUG] [Thread-125321] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:41.631 [DEBUG] [Thread-125321] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:41.633 [DEBUG] [Thread-125321] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:41.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:41.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:06:41.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:06:41.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:06:41.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:41.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:06:41.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:41.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462584 -999.00  +18.90   8.78     33   +2.30 1 1 1 1 1   888    0 15.73 -37.17 ----- 12.2 8.8 219.6 17.2 25.4 -26.1 24.2 -25.0 24.2 -24.4 25.4 -25.8
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462584
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:06:41.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:06:12', tmtdew=20.25, humidity=25.49, cloud=0.0, wind=15.14, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:06:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:06:41.647 [DEBUG] [Thread-125321] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:41.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-28T13:06:41.732 [DEBUG] [Thread-125324] [transport.py] [_log()] starting thread (client mode): 0x2b987820
2025-09-28T13:06:41.732 [DEBUG] [Thread-125324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:41.747 [DEBUG] [Thread-125324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:06:41.747 [INFO] [Thread-125324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:06:41.754 [DEBUG] [Thread-125324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:41.754 [DEBUG] [Thread-125324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:06:41.754 [DEBUG] [Thread-125324] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] Compression: none
2025-09-28T13:06:41.755 [DEBUG] [Thread-125324] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:41.816 [DEBUG] [Thread-125324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:41.817 [DEBUG] [Thread-125324] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:41.817 [DEBUG] [Thread-125324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:06:41.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:06:41.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:41.875 [DEBUG] [Thread-125324] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:41.875 [DEBUG] [Thread-125324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:41.875 [DEBUG] [Thread-125324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:41.876 [DEBUG] [Thread-125324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:06:41.876 [DEBUG] [Thread-125324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:41.894 [INFO] [Thread-125324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:41.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-28T13:06:41.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:42.826 [DEBUG] [Thread-125324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:42.826 [DEBUG] [Thread-125324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:42.874 [DEBUG] [Thread-125324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:42.874 [DEBUG] [Thread-125324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:42.883 [DEBUG] [Thread-125324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:42.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:42.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-28T13:06:42.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-28T13:06:42.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:42.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:42.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:42.919 [DEBUG] [Thread-125324] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:44.868 [DEBUG] [Thread-125326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:51.703 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:51.704 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:06:52.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:06:52.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:06:52.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-28T13:06:53.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 6, 44), 20.1, 25.99, 0.0, 20.54, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:06:53.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:06:44
2025-09-28T13:06:53.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:06:53.774 [DEBUG] [Thread-125327] [transport.py] [_log()] starting thread (client mode): 0x2e34b460
2025-09-28T13:06:53.774 [DEBUG] [Thread-125327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:53.794 [DEBUG] [Thread-125327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:06:53.795 [INFO] [Thread-125327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:06:53.797 [DEBUG] [Thread-125327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:53.797 [DEBUG] [Thread-125327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] Compression: none
2025-09-28T13:06:53.798 [DEBUG] [Thread-125327] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:53.815 [DEBUG] [Thread-125327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:53.815 [DEBUG] [Thread-125327] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:53.816 [DEBUG] [Thread-125327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:06:53.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:06:53.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:53.818 [DEBUG] [Thread-125327] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:53.818 [DEBUG] [Thread-125327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:53.818 [DEBUG] [Thread-125327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:53.818 [DEBUG] [Thread-125327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:06:53.818 [DEBUG] [Thread-125327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:53.833 [INFO] [Thread-125327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:53.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:54.568 [DEBUG] [Thread-125327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:54.568 [DEBUG] [Thread-125327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:54.569 [DEBUG] [Thread-125327] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:06:54.609 [DEBUG] [Thread-125327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:54.609 [DEBUG] [Thread-125327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:54.612 [DEBUG] [Thread-125327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:54.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:54.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:06:54.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:06:54.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:06:54.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:54.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:06:54.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:54.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:54.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:06:54.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462584 -999.00  +18.90   8.78     33   +2.30 1 1 1 1 1   888    0 15.73 -37.17 ----- 12.2 8.8 219.6 17.2 25.4 -26.1 24.2 -25.0 24.2 -24.4 25.4 -25.8
2025-09-28T13:06:54.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:06:54.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:06:54.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462584
2025-09-28T13:06:54.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:06:54.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:06:54.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:06:54.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:06:54.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:06:54.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:06:44', tmtdew=20.1, humidity=25.99, cloud=0.0, wind=20.54, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:06:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:06:54.635 [DEBUG] [Thread-125327] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:54.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:06:54.730 [DEBUG] [Thread-125330] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T13:06:54.730 [DEBUG] [Thread-125330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:06:54.745 [DEBUG] [Thread-125330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:06:54.745 [INFO] [Thread-125330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:06:54.752 [DEBUG] [Thread-125330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:06:54.752 [DEBUG] [Thread-125330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:06:54.752 [DEBUG] [Thread-125330] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] client lang: <none>
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] server lang: <none>
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] kex follows: False
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] Compression: none
2025-09-28T13:06:54.753 [DEBUG] [Thread-125330] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:06:54.810 [DEBUG] [Thread-125330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:06:54.811 [DEBUG] [Thread-125330] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:06:54.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:06:54.812 [DEBUG] [Thread-125330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:06:54.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:06:54.866 [DEBUG] [Thread-125330] [transport.py] [_log()] userauth is OK
2025-09-28T13:06:54.867 [DEBUG] [Thread-125330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:06:54.867 [DEBUG] [Thread-125330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:06:54.867 [DEBUG] [Thread-125330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:06:54.867 [DEBUG] [Thread-125330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:06:54.886 [INFO] [Thread-125330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:06:54.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:06:54.887 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:06:55.813 [DEBUG] [Thread-125330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:06:55.814 [DEBUG] [Thread-125330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:06:55.861 [DEBUG] [Thread-125330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:06:55.861 [DEBUG] [Thread-125330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:06:55.870 [DEBUG] [Thread-125330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:06:55.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:06:55.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')
2025-09-28T13:06:55.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-28T13:06:55.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:06:55.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:06:55.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:06:55.905 [DEBUG] [Thread-125330] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:06:59.909 [DEBUG] [Thread-125332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:05.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:07:05.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:07:05.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-28T13:07:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 6, 44), 20.1, 25.99, 0.0, 20.54, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:07:06.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:06:44
2025-09-28T13:07:06.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:07:06.736 [DEBUG] [Thread-125333] [transport.py] [_log()] starting thread (client mode): 0x2b985000
2025-09-28T13:07:06.736 [DEBUG] [Thread-125333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:06.750 [DEBUG] [Thread-125333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:07:06.750 [INFO] [Thread-125333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] Compression: none
2025-09-28T13:07:06.753 [DEBUG] [Thread-125333] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:06.770 [DEBUG] [Thread-125333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:06.770 [DEBUG] [Thread-125333] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:06.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:07:06.770 [DEBUG] [Thread-125333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:07:06.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:06.771 [DEBUG] [Thread-125333] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:06.771 [DEBUG] [Thread-125333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:06.771 [DEBUG] [Thread-125333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:06.771 [DEBUG] [Thread-125333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:07:06.771 [DEBUG] [Thread-125333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:06.786 [INFO] [Thread-125333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:06.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:07.438 [DEBUG] [Thread-125333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:07.438 [DEBUG] [Thread-125333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:07.439 [DEBUG] [Thread-125333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:07:07.479 [DEBUG] [Thread-125333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:07.479 [DEBUG] [Thread-125333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:07.481 [DEBUG] [Thread-125333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:07.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:07.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:07:07.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:07:07.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:07:07.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:07.504 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:07:07.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:07.504 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462931 -999.00  +19.30  18.97     33   +2.70 1 1 1 1 1   888    0 15.83 -31.49 ----- 7.8 19.0 224.2 30.5 25.3 -26.8 24.2 -25.4 24.3 -26.7 25.4 -26.1
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462931
2025-09-28T13:07:07.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:07:07.505 [DEBUG] [Thread-125333] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:07.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:07:07.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:07:07.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:07:07.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:07:07.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:06:44', tmtdew=20.1, humidity=25.99, cloud=0.0, wind=20.54, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:06:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:07:07.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-28T13:07:07.605 [DEBUG] [Thread-125336] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T13:07:07.605 [DEBUG] [Thread-125336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:07.620 [DEBUG] [Thread-125336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:07:07.620 [INFO] [Thread-125336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:07.628 [DEBUG] [Thread-125336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:07.629 [DEBUG] [Thread-125336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:07.629 [DEBUG] [Thread-125336] [transport.py] [_log()] Compression: none
2025-09-28T13:07:07.629 [DEBUG] [Thread-125336] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:07.689 [DEBUG] [Thread-125336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:07.690 [DEBUG] [Thread-125336] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:07.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:07:07.690 [DEBUG] [Thread-125336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:07:07.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:07.745 [DEBUG] [Thread-125336] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:07.746 [DEBUG] [Thread-125336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:07.746 [DEBUG] [Thread-125336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:07.746 [DEBUG] [Thread-125336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:07:07.746 [DEBUG] [Thread-125336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:07.766 [INFO] [Thread-125336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:07.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-28T13:07:07.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:08.760 [DEBUG] [Thread-125336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:08.760 [DEBUG] [Thread-125336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:08.808 [DEBUG] [Thread-125336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:08.808 [DEBUG] [Thread-125336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:08.817 [DEBUG] [Thread-125336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:08.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:08.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')
2025-09-28T13:07:08.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-28T13:07:08.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:08.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:08.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:08.853 [DEBUG] [Thread-125336] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:11.108 [DEBUG] [Thread-125338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:14.956 [DEBUG] [Thread-125339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:18.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:07:18.856 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:07: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-28T13:07:19.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 7, 16), 20.1, 25.99, 0.0, 20.54, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:07:19.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:07:16
2025-09-28T13:07:19.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:07:19.687 [DEBUG] [Thread-125340] [transport.py] [_log()] starting thread (client mode): 0x2b984700
2025-09-28T13:07:19.687 [DEBUG] [Thread-125340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:19.707 [DEBUG] [Thread-125340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:07:19.707 [INFO] [Thread-125340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:07:19.710 [DEBUG] [Thread-125340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] Compression: none
2025-09-28T13:07:19.711 [DEBUG] [Thread-125340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:19.728 [DEBUG] [Thread-125340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:19.728 [DEBUG] [Thread-125340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:19.729 [DEBUG] [Thread-125340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:07:19.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:07:19.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:19.773 [DEBUG] [Thread-125340] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:19.773 [DEBUG] [Thread-125340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:19.773 [DEBUG] [Thread-125340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:19.773 [DEBUG] [Thread-125340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:07:19.773 [DEBUG] [Thread-125340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:19.793 [INFO] [Thread-125340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:19.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:20.570 [DEBUG] [Thread-125340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:20.570 [DEBUG] [Thread-125340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:20.570 [DEBUG] [Thread-125340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:07:20.611 [DEBUG] [Thread-125340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:20.612 [DEBUG] [Thread-125340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:20.614 [DEBUG] [Thread-125340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:20.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:20.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:07:20.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:07:20.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:07:20.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:20.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:07:20.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:20.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462931 -999.00  +19.30  18.97     33   +2.70 1 1 1 1 1   888    0 15.83 -31.49 ----- 7.8 19.0 224.2 30.5 25.3 -26.8 24.2 -25.4 24.3 -26.7 25.4 -26.1
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462931
2025-09-28T13:07:20.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:07:20.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:07:20.631 [DEBUG] [Thread-125340] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:20.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:07:20.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:07:20.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:07:20.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:07:16', tmtdew=20.1, humidity=25.99, cloud=0.0, wind=20.54, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:06:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:07:20.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-28T13:07:20.726 [DEBUG] [Thread-125343] [transport.py] [_log()] starting thread (client mode): 0x2b9876a0
2025-09-28T13:07:20.726 [DEBUG] [Thread-125343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:20.741 [DEBUG] [Thread-125343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:07:20.741 [INFO] [Thread-125343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:07:20.748 [DEBUG] [Thread-125343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:20.749 [DEBUG] [Thread-125343] [transport.py] [_log()] Compression: none
2025-09-28T13:07:20.750 [DEBUG] [Thread-125343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:20.804 [DEBUG] [Thread-125343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:20.805 [DEBUG] [Thread-125343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:20.805 [DEBUG] [Thread-125343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:07:20.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:07:20.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:20.861 [DEBUG] [Thread-125343] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:20.862 [DEBUG] [Thread-125343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:20.862 [DEBUG] [Thread-125343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:20.862 [DEBUG] [Thread-125343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:07:20.862 [DEBUG] [Thread-125343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:20.881 [INFO] [Thread-125343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:20.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-28T13:07:20.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:21.929 [DEBUG] [Thread-125343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:21.929 [DEBUG] [Thread-125343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:21.977 [DEBUG] [Thread-125343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:21.977 [DEBUG] [Thread-125343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:21.986 [DEBUG] [Thread-125343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:21.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:21.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')
2025-09-28T13:07:22.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') -> 00000000
2025-09-28T13:07:22.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:22.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:22.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:22.021 [DEBUG] [Thread-125343] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:29.995 [DEBUG] [Thread-125345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:32.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:07:32.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:07: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-28T13:07:32.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 7, 16), 20.1, 25.99, 0.0, 20.54, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:07:32.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:07:16
2025-09-28T13:07:32.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:07:32.839 [DEBUG] [Thread-125346] [transport.py] [_log()] starting thread (client mode): 0x2b9f32b0
2025-09-28T13:07:32.839 [DEBUG] [Thread-125346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:32.859 [DEBUG] [Thread-125346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:07:32.860 [INFO] [Thread-125346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:32.861 [DEBUG] [Thread-125346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] Compression: none
2025-09-28T13:07:32.862 [DEBUG] [Thread-125346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:32.876 [DEBUG] [Thread-125346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:32.876 [DEBUG] [Thread-125346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:32.877 [DEBUG] [Thread-125346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:07:32.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:07:32.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:32.879 [DEBUG] [Thread-125346] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:32.879 [DEBUG] [Thread-125346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:32.879 [DEBUG] [Thread-125346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:32.879 [DEBUG] [Thread-125346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:07:32.879 [DEBUG] [Thread-125346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:32.903 [INFO] [Thread-125346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:32.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:33.643 [DEBUG] [Thread-125346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:33.644 [DEBUG] [Thread-125346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:33.644 [DEBUG] [Thread-125346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:07:33.684 [DEBUG] [Thread-125346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:33.685 [DEBUG] [Thread-125346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:33.688 [DEBUG] [Thread-125346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:33.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:33.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:07:33.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:07:33.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:07:33.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:33.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:07:33.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.462931 -999.00  +19.30  18.97     33   +2.70 1 1 1 1 1   888    0 15.83 -31.49 ----- 7.8 19.0 224.2 30.5 25.3 -26.8 24.2 -25.4 24.3 -26.7 25.4 -26.1
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:07:33.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.462931
2025-09-28T13:07:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:07:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:07:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:07:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:07:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:07:33.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:07:16', tmtdew=20.1, humidity=25.99, cloud=0.0, wind=20.54, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:06:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:07:33.717 [DEBUG] [Thread-125346] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:33.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-28T13:07:33.816 [DEBUG] [Thread-125349] [transport.py] [_log()] starting thread (client mode): 0x2b95ffa0
2025-09-28T13:07:33.816 [DEBUG] [Thread-125349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:33.832 [DEBUG] [Thread-125349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:07:33.832 [INFO] [Thread-125349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:07:33.839 [DEBUG] [Thread-125349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:33.840 [DEBUG] [Thread-125349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] Compression: none
2025-09-28T13:07:33.841 [DEBUG] [Thread-125349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:33.896 [DEBUG] [Thread-125349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:33.897 [DEBUG] [Thread-125349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:33.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:07:33.898 [DEBUG] [Thread-125349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:07:33.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:33.952 [DEBUG] [Thread-125349] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:33.952 [DEBUG] [Thread-125349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:33.952 [DEBUG] [Thread-125349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:33.953 [DEBUG] [Thread-125349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:07:33.953 [DEBUG] [Thread-125349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:33.971 [INFO] [Thread-125349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:33.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-28T13:07:33.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:34.918 [DEBUG] [Thread-125349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:34.918 [DEBUG] [Thread-125349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:34.967 [DEBUG] [Thread-125349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:34.967 [DEBUG] [Thread-125349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:34.977 [DEBUG] [Thread-125349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:34.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:34.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-28T13:07:35.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-28T13:07:35.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:35.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:35.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:35.022 [DEBUG] [Thread-125349] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:45.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:07:45.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:07:45.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-28T13:07:45.046 [DEBUG] [Thread-125351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:45.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 7, 16), 20.1, 25.99, 0.0, 20.54, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:07:45.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:07:16
2025-09-28T13:07:45.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:07:45.853 [DEBUG] [Thread-125352] [transport.py] [_log()] starting thread (client mode): 0x2b95f6a0
2025-09-28T13:07:45.853 [DEBUG] [Thread-125352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:45.875 [DEBUG] [Thread-125352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:07:45.875 [INFO] [Thread-125352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:45.878 [DEBUG] [Thread-125352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] Compression: none
2025-09-28T13:07:45.879 [DEBUG] [Thread-125352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:45.896 [DEBUG] [Thread-125352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:45.896 [DEBUG] [Thread-125352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:45.897 [DEBUG] [Thread-125352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:07:45.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:07:45.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:45.899 [DEBUG] [Thread-125352] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:45.899 [DEBUG] [Thread-125352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:45.900 [DEBUG] [Thread-125352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:45.900 [DEBUG] [Thread-125352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:07:45.900 [DEBUG] [Thread-125352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:45.923 [INFO] [Thread-125352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:45.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:46.570 [DEBUG] [Thread-125352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:46.570 [DEBUG] [Thread-125352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:46.571 [DEBUG] [Thread-125352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:07:46.612 [DEBUG] [Thread-125352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:46.612 [DEBUG] [Thread-125352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:46.615 [DEBUG] [Thread-125352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:46.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:46.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:07:46.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:07:46.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:07:46.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:46.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:07:46.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:46.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:07:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.463278 -999.00  +18.80  18.78     33   +2.40 1 1 1 1 1   888    0 16.07 -24.68 ----- 18.6 18.8 258.2 29.1 25.2 -26.6 24.2 -25.3 24.4 -24.9 25.3 -26.6
2025-09-28T13:07:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:07:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:07:46.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.463278
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:07:46.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:07:16', tmtdew=20.1, humidity=25.99, cloud=0.0, wind=20.54, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:07:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:07:46.641 [DEBUG] [Thread-125352] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:46.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-28T13:07:46.734 [DEBUG] [Thread-125355] [transport.py] [_log()] starting thread (client mode): 0x2b984910
2025-09-28T13:07:46.734 [DEBUG] [Thread-125355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:46.749 [DEBUG] [Thread-125355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:07:46.749 [INFO] [Thread-125355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:46.757 [DEBUG] [Thread-125355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] Compression: none
2025-09-28T13:07:46.758 [DEBUG] [Thread-125355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:46.815 [DEBUG] [Thread-125355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:46.816 [DEBUG] [Thread-125355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:46.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:07:46.817 [DEBUG] [Thread-125355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:07:46.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:46.872 [DEBUG] [Thread-125355] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:46.872 [DEBUG] [Thread-125355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:46.872 [DEBUG] [Thread-125355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:46.872 [DEBUG] [Thread-125355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:07:46.872 [DEBUG] [Thread-125355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:46.891 [INFO] [Thread-125355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:46.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-28T13:07:46.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:47.874 [DEBUG] [Thread-125355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:47.874 [DEBUG] [Thread-125355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:47.922 [DEBUG] [Thread-125355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:47.922 [DEBUG] [Thread-125355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:47.931 [DEBUG] [Thread-125355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:47.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:47.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-28T13:07:47.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') -> 00000000
2025-09-28T13:07:47.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:47.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:47.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:47.967 [DEBUG] [Thread-125355] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:51.845 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:51.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:07:57.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:07:57.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:07:57.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-28T13:07:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 7, 48), 19.41, 27.07, 0.0, 23.45, 19.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:07:58.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:07:48
2025-09-28T13:07:58.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:07:58.793 [DEBUG] [Thread-125357] [transport.py] [_log()] starting thread (client mode): 0x2e348280
2025-09-28T13:07:58.793 [DEBUG] [Thread-125357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:58.813 [DEBUG] [Thread-125357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:07:58.813 [INFO] [Thread-125357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:07:58.816 [DEBUG] [Thread-125357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] Compression: none
2025-09-28T13:07:58.817 [DEBUG] [Thread-125357] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:58.833 [DEBUG] [Thread-125357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:58.834 [DEBUG] [Thread-125357] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:58.834 [DEBUG] [Thread-125357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:07:58.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:07:58.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:58.837 [DEBUG] [Thread-125357] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:58.837 [DEBUG] [Thread-125357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:58.837 [DEBUG] [Thread-125357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:58.837 [DEBUG] [Thread-125357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:07:58.837 [DEBUG] [Thread-125357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:58.855 [INFO] [Thread-125357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:58.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:07:59.649 [DEBUG] [Thread-125357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:07:59.649 [DEBUG] [Thread-125357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:07:59.649 [DEBUG] [Thread-125357] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:07:59.690 [DEBUG] [Thread-125357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:07:59.690 [DEBUG] [Thread-125357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:07:59.693 [DEBUG] [Thread-125357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:07:59.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:07:59.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:07:59.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:07:59.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:07:59.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:07:59.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:07:59.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.463278 -999.00  +18.80  18.78     33   +2.40 1 1 1 1 1   888    0 16.07 -24.68 ----- 18.6 18.8 258.2 29.1 25.2 -26.6 24.2 -25.3 24.4 -24.9 25.3 -26.6
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:07:59.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.463278
2025-09-28T13:07:59.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:07:59.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:07:59.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:07:59.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:07:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:07:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:07:48', tmtdew=19.41, humidity=27.07, cloud=0.0, wind=23.45, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:07:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:07:59.718 [DEBUG] [Thread-125357] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:07:59.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:07:59.814 [DEBUG] [Thread-125360] [transport.py] [_log()] starting thread (client mode): 0x2b984dc0
2025-09-28T13:07:59.814 [DEBUG] [Thread-125360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:07:59.829 [DEBUG] [Thread-125360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:07:59.829 [INFO] [Thread-125360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] client lang: <none>
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] server lang: <none>
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] kex follows: False
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] Compression: none
2025-09-28T13:07:59.837 [DEBUG] [Thread-125360] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:07:59.895 [DEBUG] [Thread-125360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:07:59.895 [DEBUG] [Thread-125360] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:07:59.896 [DEBUG] [Thread-125360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:07:59.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:07:59.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:07:59.951 [DEBUG] [Thread-125360] [transport.py] [_log()] userauth is OK
2025-09-28T13:07:59.951 [DEBUG] [Thread-125360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:07:59.951 [DEBUG] [Thread-125360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:07:59.951 [DEBUG] [Thread-125360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:07:59.951 [DEBUG] [Thread-125360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:07:59.969 [INFO] [Thread-125360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:07:59.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-28T13:07:59.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:00.077 [DEBUG] [Thread-125362 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:00.940 [DEBUG] [Thread-125360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:00.940 [DEBUG] [Thread-125360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:00.988 [DEBUG] [Thread-125360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:00.988 [DEBUG] [Thread-125360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:00.996 [DEBUG] [Thread-125360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:01.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:01.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-28T13:08:01.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') -> 00000000
2025-09-28T13:08:01.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:01.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:01.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:01.027 [DEBUG] [Thread-125360] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:11.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:08:11.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:08:11.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-28T13:08:11.152 [DEBUG] [Thread-125363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 7, 48), 19.41, 27.07, 0.0, 23.45, 19.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:08:11.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:07:48
2025-09-28T13:08:11.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:08:11.872 [DEBUG] [Thread-125364] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T13:08:11.873 [DEBUG] [Thread-125364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:11.889 [DEBUG] [Thread-125364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:08:11.889 [INFO] [Thread-125364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:11.891 [DEBUG] [Thread-125364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] Compression: none
2025-09-28T13:08:11.892 [DEBUG] [Thread-125364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:11.903 [DEBUG] [Thread-125364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:11.904 [DEBUG] [Thread-125364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:11.904 [DEBUG] [Thread-125364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:08:11.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:08:11.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:11.907 [DEBUG] [Thread-125364] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:11.907 [DEBUG] [Thread-125364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:11.907 [DEBUG] [Thread-125364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:11.908 [DEBUG] [Thread-125364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:08:11.908 [DEBUG] [Thread-125364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:11.922 [INFO] [Thread-125364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:11.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:12.497 [DEBUG] [Thread-125364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:12.497 [DEBUG] [Thread-125364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:12.497 [DEBUG] [Thread-125364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:08:12.538 [DEBUG] [Thread-125364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:12.538 [DEBUG] [Thread-125364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:12.540 [DEBUG] [Thread-125364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:12.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:12.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:08:12.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:08:12.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:08:12.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:12.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:08:12.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:12.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:12.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:08:12.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.463973 -999.00  +18.90  15.38     34   +2.80 1 1 1 1 1   888    0 16.17 -18.38 ----- 13.5 15.4 256.6 28.7 25.3 -25.0 24.3 -24.4 24.2 -23.8 25.4 -25.4
2025-09-28T13:08:12.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:08:12.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:08:12.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.463973
2025-09-28T13:08:12.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:08:12.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:08:12.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:08:12.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:08:12.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:08:12.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:07:48', tmtdew=19.41, humidity=27.07, cloud=0.0, wind=23.45, temperature=19.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:08:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:08:12.564 [DEBUG] [Thread-125364] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:12.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-28T13:08:12.656 [DEBUG] [Thread-125367] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-28T13:08:12.656 [DEBUG] [Thread-125367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:12.672 [DEBUG] [Thread-125367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:08:12.672 [INFO] [Thread-125367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:08:12.679 [DEBUG] [Thread-125367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] Compression: none
2025-09-28T13:08:12.680 [DEBUG] [Thread-125367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:12.738 [DEBUG] [Thread-125367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:12.739 [DEBUG] [Thread-125367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:12.739 [DEBUG] [Thread-125367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:08:12.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:08:12.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:12.795 [DEBUG] [Thread-125367] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:12.795 [DEBUG] [Thread-125367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:12.795 [DEBUG] [Thread-125367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:12.795 [DEBUG] [Thread-125367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:08:12.795 [DEBUG] [Thread-125367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:12.814 [INFO] [Thread-125367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:12.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:08:12.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:13.765 [DEBUG] [Thread-125367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:13.765 [DEBUG] [Thread-125367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:13.813 [DEBUG] [Thread-125367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:13.813 [DEBUG] [Thread-125367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:13.822 [DEBUG] [Thread-125367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:13.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:13.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-28T13:08:13.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-28T13:08:13.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:13.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:13.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:13.858 [DEBUG] [Thread-125367] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:15.118 [DEBUG] [Thread-125369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:23.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:08:23.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:08:23.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-28T13:08:24.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 8, 20), 19.44, 27.03, 0.0, 21.0, 19.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:08:24.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:08:20
2025-09-28T13:08:24.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:08:24.678 [DEBUG] [Thread-125370] [transport.py] [_log()] starting thread (client mode): 0x2e3f99f0
2025-09-28T13:08:24.678 [DEBUG] [Thread-125370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:24.703 [DEBUG] [Thread-125370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:08:24.703 [INFO] [Thread-125370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:24.706 [DEBUG] [Thread-125370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] Compression: none
2025-09-28T13:08:24.707 [DEBUG] [Thread-125370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:24.726 [DEBUG] [Thread-125370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:24.726 [DEBUG] [Thread-125370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:24.727 [DEBUG] [Thread-125370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:08:24.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:08:24.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:24.728 [DEBUG] [Thread-125370] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:24.729 [DEBUG] [Thread-125370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:24.729 [DEBUG] [Thread-125370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:24.729 [DEBUG] [Thread-125370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:08:24.729 [DEBUG] [Thread-125370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:24.746 [INFO] [Thread-125370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:24.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:25.524 [DEBUG] [Thread-125370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:25.524 [DEBUG] [Thread-125370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:25.524 [DEBUG] [Thread-125370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:08:25.565 [DEBUG] [Thread-125370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:25.565 [DEBUG] [Thread-125370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:25.568 [DEBUG] [Thread-125370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:25.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:25.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:08:25.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:08:25.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:08:25.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:25.585 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:08:25.585 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.463973 -999.00  +18.90  15.38     34   +2.80 1 1 1 1 1   888    0 16.17 -18.38 ----- 13.5 15.4 256.6 28.7 25.3 -25.0 24.3 -24.4 24.2 -23.8 25.4 -25.4
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.463973
2025-09-28T13:08:25.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:08:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:08:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:08:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:08:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:08:25.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:08:20', tmtdew=19.44, humidity=27.03, cloud=0.0, wind=21.0, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:08:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:08:25.586 [DEBUG] [Thread-125370] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:25.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-28T13:08:25.672 [DEBUG] [Thread-125373] [transport.py] [_log()] starting thread (client mode): 0x2b95f730
2025-09-28T13:08:25.672 [DEBUG] [Thread-125373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:25.686 [DEBUG] [Thread-125373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:08:25.687 [INFO] [Thread-125373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:08:25.694 [DEBUG] [Thread-125373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:25.694 [DEBUG] [Thread-125373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:08:25.694 [DEBUG] [Thread-125373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:25.694 [DEBUG] [Thread-125373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] Compression: none
2025-09-28T13:08:25.695 [DEBUG] [Thread-125373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:25.754 [DEBUG] [Thread-125373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:25.755 [DEBUG] [Thread-125373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:25.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:08:25.756 [DEBUG] [Thread-125373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:08:25.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:25.810 [DEBUG] [Thread-125373] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:25.810 [DEBUG] [Thread-125373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:25.810 [DEBUG] [Thread-125373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:25.810 [DEBUG] [Thread-125373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:08:25.810 [DEBUG] [Thread-125373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:25.829 [INFO] [Thread-125373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:25.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-28T13:08:25.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:26.826 [DEBUG] [Thread-125373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:26.826 [DEBUG] [Thread-125373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:26.874 [DEBUG] [Thread-125373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:26.874 [DEBUG] [Thread-125373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:26.883 [DEBUG] [Thread-125373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:26.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:26.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-28T13:08:26.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-28T13:08:26.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:26.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:26.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:26.918 [DEBUG] [Thread-125373] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:30.164 [DEBUG] [Thread-125375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:36.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:08:36.921 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:08:36.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-28T13:08:37.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 8, 20), 19.44, 27.03, 0.0, 21.0, 19.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:08:37.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:08:20
2025-09-28T13:08:37.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:08:37.763 [DEBUG] [Thread-125376] [transport.py] [_log()] starting thread (client mode): 0x2b9c2cb0
2025-09-28T13:08:37.763 [DEBUG] [Thread-125376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:37.782 [DEBUG] [Thread-125376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:08:37.782 [INFO] [Thread-125376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] Compression: none
2025-09-28T13:08:37.786 [DEBUG] [Thread-125376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:37.801 [DEBUG] [Thread-125376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:37.801 [DEBUG] [Thread-125376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:37.801 [DEBUG] [Thread-125376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:08:37.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:08:37.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:37.802 [DEBUG] [Thread-125376] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:37.802 [DEBUG] [Thread-125376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:37.802 [DEBUG] [Thread-125376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:37.802 [DEBUG] [Thread-125376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:08:37.802 [DEBUG] [Thread-125376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:37.811 [INFO] [Thread-125376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:37.811 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:38.654 [DEBUG] [Thread-125376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:38.654 [DEBUG] [Thread-125376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:38.654 [DEBUG] [Thread-125376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:08:38.695 [DEBUG] [Thread-125376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:38.695 [DEBUG] [Thread-125376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:38.697 [DEBUG] [Thread-125376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:38.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:38.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:08:38.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:08:38.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:08:38.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:38.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:08:38.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.463973 -999.00  +18.90  15.38     34   +2.80 1 1 1 1 1   888    0 16.17 -18.38 ----- 13.5 15.4 256.6 28.7 25.3 -25.0 24.3 -24.4 24.2 -23.8 25.4 -25.4
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.463973
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:08:38.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:08:20', tmtdew=19.44, humidity=27.03, cloud=0.0, wind=21.0, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:08:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:08:38.719 [DEBUG] [Thread-125376] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:38.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-28T13:08:38.806 [DEBUG] [Thread-125379] [transport.py] [_log()] starting thread (client mode): 0x2e38e830
2025-09-28T13:08:38.806 [DEBUG] [Thread-125379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:38.821 [DEBUG] [Thread-125379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:08:38.822 [INFO] [Thread-125379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:08:38.829 [DEBUG] [Thread-125379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] Compression: none
2025-09-28T13:08:38.830 [DEBUG] [Thread-125379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:38.884 [DEBUG] [Thread-125379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:38.884 [DEBUG] [Thread-125379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:38.884 [DEBUG] [Thread-125379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:08:38.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:08:38.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:38.941 [DEBUG] [Thread-125379] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:38.941 [DEBUG] [Thread-125379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:38.941 [DEBUG] [Thread-125379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:38.941 [DEBUG] [Thread-125379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:08:38.941 [DEBUG] [Thread-125379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:38.956 [INFO] [Thread-125379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:38.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-28T13:08:38.956 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:39.953 [DEBUG] [Thread-125379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:39.953 [DEBUG] [Thread-125379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:40.001 [DEBUG] [Thread-125379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:40.001 [DEBUG] [Thread-125379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:40.009 [DEBUG] [Thread-125379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:40.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:40.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-28T13:08:40.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-28T13:08:40.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:40.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:40.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:40.042 [DEBUG] [Thread-125379] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:45.208 [DEBUG] [Thread-125381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:50.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:08:50.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:08:50.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-28T13:08:50.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 8, 20), 19.44, 27.03, 0.0, 21.0, 19.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:08:50.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:08:20
2025-09-28T13:08:50.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:08:50.864 [DEBUG] [Thread-125382] [transport.py] [_log()] starting thread (client mode): 0x2b985b70
2025-09-28T13:08:50.865 [DEBUG] [Thread-125382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:50.885 [DEBUG] [Thread-125382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:08:50.885 [INFO] [Thread-125382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] Compression: none
2025-09-28T13:08:50.889 [DEBUG] [Thread-125382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:50.906 [DEBUG] [Thread-125382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:50.906 [DEBUG] [Thread-125382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:50.907 [DEBUG] [Thread-125382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:08:50.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:08:50.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:50.908 [DEBUG] [Thread-125382] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:50.908 [DEBUG] [Thread-125382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:50.908 [DEBUG] [Thread-125382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:50.909 [DEBUG] [Thread-125382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:08:50.909 [DEBUG] [Thread-125382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:50.924 [INFO] [Thread-125382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:50.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:51.559 [DEBUG] [Thread-125382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:51.559 [DEBUG] [Thread-125382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:51.560 [DEBUG] [Thread-125382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:08:51.600 [DEBUG] [Thread-125382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:51.600 [DEBUG] [Thread-125382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:51.603 [DEBUG] [Thread-125382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:51.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:51.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:08:51.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:08:51.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:08:51.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:51.625 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:08:51.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:51.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:08:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.464320 -999.00  +19.00   9.60     34   +2.90 1 1 1 1 1   888    0 16.38 -16.52 ----- 13.1 9.6 230.5 24.9 25.4 -27.1 24.4 -25.3 24.3 -23.7 25.4 -27.0
2025-09-28T13:08:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:08:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:08:51.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.464320
2025-09-28T13:08:51.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:08:51.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:08:51.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:08:51.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:08:51.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:08:51.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:08:20', tmtdew=19.44, humidity=27.03, cloud=0.0, wind=21.0, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:08:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:08:51.628 [DEBUG] [Thread-125382] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:08:51.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-28T13:08:51.722 [DEBUG] [Thread-125385] [transport.py] [_log()] starting thread (client mode): 0x2b9aea40
2025-09-28T13:08:51.722 [DEBUG] [Thread-125385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:08:51.737 [DEBUG] [Thread-125385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:08:51.738 [INFO] [Thread-125385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:08:51.745 [DEBUG] [Thread-125385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] client lang: <none>
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] server lang: <none>
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] kex follows: False
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] Compression: none
2025-09-28T13:08:51.746 [DEBUG] [Thread-125385] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:08:51.804 [DEBUG] [Thread-125385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:08:51.805 [DEBUG] [Thread-125385] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:08:51.805 [DEBUG] [Thread-125385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:08:51.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:08:51.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:08:51.861 [DEBUG] [Thread-125385] [transport.py] [_log()] userauth is OK
2025-09-28T13:08:51.861 [DEBUG] [Thread-125385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:08:51.861 [DEBUG] [Thread-125385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:08:51.861 [DEBUG] [Thread-125385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:08:51.861 [DEBUG] [Thread-125385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:08:51.880 [INFO] [Thread-125385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:08:51.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:08:51.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:08:51.989 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:51.990 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:08:52.859 [DEBUG] [Thread-125385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:08:52.859 [DEBUG] [Thread-125385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:08:52.906 [DEBUG] [Thread-125385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:08:52.907 [DEBUG] [Thread-125385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:08:52.915 [DEBUG] [Thread-125385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:08:52.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:08:52.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-28T13:08:52.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-28T13:08:52.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:08:52.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:08:52.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:08:52.946 [DEBUG] [Thread-125385] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:00.240 [DEBUG] [Thread-125387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:02.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:09:02.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:09:02.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-28T13:09:03.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 8, 52), 19.38, 26.88, 0.0, 21.83, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:09:03.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:08:52
2025-09-28T13:09:03.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:09:03.777 [DEBUG] [Thread-125388] [transport.py] [_log()] starting thread (client mode): 0x2e3f93f0
2025-09-28T13:09:03.778 [DEBUG] [Thread-125388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:03.799 [DEBUG] [Thread-125388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:09:03.799 [INFO] [Thread-125388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:09:03.802 [DEBUG] [Thread-125388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] Compression: none
2025-09-28T13:09:03.803 [DEBUG] [Thread-125388] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:03.821 [DEBUG] [Thread-125388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:03.821 [DEBUG] [Thread-125388] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:03.822 [DEBUG] [Thread-125388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:09:03.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:09:03.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:03.824 [DEBUG] [Thread-125388] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:03.824 [DEBUG] [Thread-125388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:03.824 [DEBUG] [Thread-125388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:03.824 [DEBUG] [Thread-125388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:09:03.824 [DEBUG] [Thread-125388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:03.840 [INFO] [Thread-125388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:03.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:04.624 [DEBUG] [Thread-125388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:04.624 [DEBUG] [Thread-125388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:04.624 [DEBUG] [Thread-125388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:09:04.665 [DEBUG] [Thread-125388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:04.666 [DEBUG] [Thread-125388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:04.668 [DEBUG] [Thread-125388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:04.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:04.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:09:04.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:09:04.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:09:04.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:04.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:09:04.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.464320 -999.00  +19.00   9.60     34   +2.90 1 1 1 1 1   888    0 16.38 -16.52 ----- 13.1 9.6 230.5 24.9 25.4 -27.1 24.4 -25.3 24.3 -23.7 25.4 -27.0
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:09:04.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.464320
2025-09-28T13:09:04.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:09:04.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:09:04.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:09:04.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:09:04.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:09:04.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:08:52', tmtdew=19.38, humidity=26.88, cloud=0.0, wind=21.83, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:08:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:09:04.693 [DEBUG] [Thread-125388] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:04.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-28T13:09:04.791 [DEBUG] [Thread-125391] [transport.py] [_log()] starting thread (client mode): 0x2b9c07f0
2025-09-28T13:09:04.791 [DEBUG] [Thread-125391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:04.806 [DEBUG] [Thread-125391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:09:04.806 [INFO] [Thread-125391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:04.814 [DEBUG] [Thread-125391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:04.815 [DEBUG] [Thread-125391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:04.816 [DEBUG] [Thread-125391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:04.816 [DEBUG] [Thread-125391] [transport.py] [_log()] Compression: none
2025-09-28T13:09:04.816 [DEBUG] [Thread-125391] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:04.872 [DEBUG] [Thread-125391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:04.873 [DEBUG] [Thread-125391] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:04.873 [DEBUG] [Thread-125391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:09:04.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:09:04.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:04.928 [DEBUG] [Thread-125391] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:04.928 [DEBUG] [Thread-125391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:04.929 [DEBUG] [Thread-125391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:04.929 [DEBUG] [Thread-125391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:09:04.929 [DEBUG] [Thread-125391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:04.947 [INFO] [Thread-125391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:04.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-28T13:09:04.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:05.905 [DEBUG] [Thread-125391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:05.906 [DEBUG] [Thread-125391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:05.953 [DEBUG] [Thread-125391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:05.953 [DEBUG] [Thread-125391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:05.966 [DEBUG] [Thread-125391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:05.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:05.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-28T13:09:05.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-28T13:09:05.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:05.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:05.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:06.004 [DEBUG] [Thread-125391] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:11.205 [DEBUG] [Thread-125393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:15.282 [DEBUG] [Thread-125394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:16.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:09:16.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:09:16.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:09:16.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 8, 52), 19.38, 26.88, 0.0, 21.83, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:09:16.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:08:52
2025-09-28T13:09:16.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:09:16.863 [DEBUG] [Thread-125395] [transport.py] [_log()] starting thread (client mode): 0x2b9c2bc0
2025-09-28T13:09:16.863 [DEBUG] [Thread-125395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:16.883 [DEBUG] [Thread-125395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:09:16.883 [INFO] [Thread-125395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:09:16.886 [DEBUG] [Thread-125395] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:16.886 [DEBUG] [Thread-125395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] Compression: none
2025-09-28T13:09:16.887 [DEBUG] [Thread-125395] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:16.896 [DEBUG] [Thread-125395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:16.896 [DEBUG] [Thread-125395] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:16.896 [DEBUG] [Thread-125395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:09:16.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:09:16.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:16.897 [DEBUG] [Thread-125395] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:16.897 [DEBUG] [Thread-125395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:16.897 [DEBUG] [Thread-125395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:16.897 [DEBUG] [Thread-125395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:09:16.897 [DEBUG] [Thread-125395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:16.905 [INFO] [Thread-125395] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:16.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:17.517 [DEBUG] [Thread-125395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:17.517 [DEBUG] [Thread-125395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:17.517 [DEBUG] [Thread-125395] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:09:17.558 [DEBUG] [Thread-125395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:17.558 [DEBUG] [Thread-125395] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:17.560 [DEBUG] [Thread-125395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:17.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:17.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:09:17.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:09:17.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:09:17.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:17.579 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:09:17.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.464667 -999.00  +19.20  12.03     34   +2.90 1 1 1 1 1   888    0 16.29 -15.14 ----- 13.3 12.0 258.6 16.6 25.5 -26.0 24.5 -24.7 24.4 -23.7 25.6 -25.4
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.464667
2025-09-28T13:09:17.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:09:17.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:09:17.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:09:17.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:09:17.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:09:17.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:08:52', tmtdew=19.38, humidity=26.88, cloud=0.0, wind=21.83, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:09:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:09:17.580 [DEBUG] [Thread-125395] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:17.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-28T13:09:17.664 [DEBUG] [Thread-125398] [transport.py] [_log()] starting thread (client mode): 0x2e3c2f80
2025-09-28T13:09:17.664 [DEBUG] [Thread-125398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:17.681 [DEBUG] [Thread-125398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:09:17.681 [INFO] [Thread-125398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] Compression: none
2025-09-28T13:09:17.689 [DEBUG] [Thread-125398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:17.748 [DEBUG] [Thread-125398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:17.748 [DEBUG] [Thread-125398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:17.748 [DEBUG] [Thread-125398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:09:17.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:09:17.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:17.804 [DEBUG] [Thread-125398] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:17.804 [DEBUG] [Thread-125398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:17.804 [DEBUG] [Thread-125398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:17.804 [DEBUG] [Thread-125398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:09:17.804 [DEBUG] [Thread-125398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:17.817 [INFO] [Thread-125398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:17.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-28T13:09:17.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:18.786 [DEBUG] [Thread-125398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:18.786 [DEBUG] [Thread-125398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:18.834 [DEBUG] [Thread-125398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:18.834 [DEBUG] [Thread-125398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:18.842 [DEBUG] [Thread-125398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:18.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:18.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-28T13:09:18.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-28T13:09:18.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:18.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:18.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:18.874 [DEBUG] [Thread-125398] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:28.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:09:28.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:09:28.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-28T13:09:29.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 9, 24), 19.11, 27.33, 0.0, 16.52, 19.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:09:29.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:09:24
2025-09-28T13:09:29.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:09:29.716 [DEBUG] [Thread-125400] [transport.py] [_log()] starting thread (client mode): 0x2b95f0a0
2025-09-28T13:09:29.716 [DEBUG] [Thread-125400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:29.735 [DEBUG] [Thread-125400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:09:29.735 [INFO] [Thread-125400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] Compression: none
2025-09-28T13:09:29.739 [DEBUG] [Thread-125400] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:29.757 [DEBUG] [Thread-125400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:29.757 [DEBUG] [Thread-125400] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:29.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:09:29.758 [DEBUG] [Thread-125400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:09:29.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:29.760 [DEBUG] [Thread-125400] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:29.760 [DEBUG] [Thread-125400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:29.760 [DEBUG] [Thread-125400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:29.760 [DEBUG] [Thread-125400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:09:29.760 [DEBUG] [Thread-125400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:29.784 [INFO] [Thread-125400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:29.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:30.319 [DEBUG] [Thread-125402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:30.559 [DEBUG] [Thread-125400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:30.560 [DEBUG] [Thread-125400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:30.560 [DEBUG] [Thread-125400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:09:30.600 [DEBUG] [Thread-125400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:30.600 [DEBUG] [Thread-125400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:30.602 [DEBUG] [Thread-125400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:30.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:30.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:09:30.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:09:30.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:09:30.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:30.624 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:09:30.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:30.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.464667 -999.00  +19.20  12.03     34   +2.90 1 1 1 1 1   888    0 16.29 -15.14 ----- 13.3 12.0 258.6 16.6 25.5 -26.0 24.5 -24.7 24.4 -23.7 25.6 -25.4
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.464667
2025-09-28T13:09:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:09:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:09:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:09:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:09:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:09:30.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:09:24', tmtdew=19.11, humidity=27.33, cloud=0.0, wind=16.52, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:09:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:09:30.626 [DEBUG] [Thread-125400] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:30.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-28T13:09:30.722 [DEBUG] [Thread-125404] [transport.py] [_log()] starting thread (client mode): 0x2b9c0b50
2025-09-28T13:09:30.722 [DEBUG] [Thread-125404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:30.737 [DEBUG] [Thread-125404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:09:30.737 [INFO] [Thread-125404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:09:30.744 [DEBUG] [Thread-125404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:30.745 [DEBUG] [Thread-125404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:30.746 [DEBUG] [Thread-125404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:30.747 [DEBUG] [Thread-125404] [transport.py] [_log()] Compression: none
2025-09-28T13:09:30.747 [DEBUG] [Thread-125404] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:30.808 [DEBUG] [Thread-125404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:30.808 [DEBUG] [Thread-125404] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:30.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:09:30.809 [DEBUG] [Thread-125404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:09:30.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:30.863 [DEBUG] [Thread-125404] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:30.863 [DEBUG] [Thread-125404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:30.863 [DEBUG] [Thread-125404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:30.863 [DEBUG] [Thread-125404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:09:30.863 [DEBUG] [Thread-125404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:30.881 [INFO] [Thread-125404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:30.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-28T13:09:30.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:31.840 [DEBUG] [Thread-125404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:31.841 [DEBUG] [Thread-125404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:31.888 [DEBUG] [Thread-125404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:31.888 [DEBUG] [Thread-125404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:31.897 [DEBUG] [Thread-125404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:31.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:31.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-28T13:09:31.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-28T13:09:31.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:31.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:31.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:31.931 [DEBUG] [Thread-125404] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:41.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:09:41.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:09:41.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:09:42.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 9, 24), 19.11, 27.33, 0.0, 16.52, 19.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:09:42.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:09:24
2025-09-28T13:09:42.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:09:42.766 [DEBUG] [Thread-125406] [transport.py] [_log()] starting thread (client mode): 0x2e3fb760
2025-09-28T13:09:42.766 [DEBUG] [Thread-125406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:09:42.786 [DEBUG] [Thread-125406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:09:42.786 [INFO] [Thread-125406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:09:42.789 [DEBUG] [Thread-125406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:09:42.790 [DEBUG] [Thread-125406] [transport.py] [_log()] client lang: <none>
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] server lang: <none>
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] kex follows: False
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] Compression: none
2025-09-28T13:09:42.791 [DEBUG] [Thread-125406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:09:42.810 [DEBUG] [Thread-125406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:09:42.811 [DEBUG] [Thread-125406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:09:42.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:09:42.812 [DEBUG] [Thread-125406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:09:42.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:09:42.814 [DEBUG] [Thread-125406] [transport.py] [_log()] userauth is OK
2025-09-28T13:09:42.814 [DEBUG] [Thread-125406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:09:42.814 [DEBUG] [Thread-125406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:09:42.814 [DEBUG] [Thread-125406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:09:42.815 [DEBUG] [Thread-125406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:09:42.837 [INFO] [Thread-125406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:09:42.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:09:43.601 [DEBUG] [Thread-125406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:09:43.601 [DEBUG] [Thread-125406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:09:43.601 [DEBUG] [Thread-125406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:09:43.642 [DEBUG] [Thread-125406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:09:43.642 [DEBUG] [Thread-125406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:09:43.645 [DEBUG] [Thread-125406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:09:43.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:09:43.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:09:43.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:09:43.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:09:43.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:09:43.666 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:09:43.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:09:43.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:09:43.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:09:43.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.464667 -999.00  +19.20  12.03     34   +2.90 1 1 1 1 1   888    0 16.29 -15.14 ----- 13.3 12.0 258.6 16.6 25.5 -26.0 24.5 -24.7 24.4 -23.7 25.6 -25.4
2025-09-28T13:09:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:09:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:09:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.464667
2025-09-28T13:09:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:09:43.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:09:43.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:09:43.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:09:43.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:09:43.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:09:24', tmtdew=19.11, humidity=27.33, cloud=0.0, wind=16.52, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:09:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:09:43.668 [DEBUG] [Thread-125406] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:09:43.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-28T13:09:45.363 [DEBUG] [Thread-125409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:52.131 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:09:52.132 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:00.414 [DEBUG] [Thread-125410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:11.233 [DEBUG] [Thread-125411 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:15.444 [DEBUG] [Thread-125412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:30.472 [DEBUG] [Thread-125413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:45.500 [DEBUG] [Thread-125414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:52.272 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:10:52.273 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:00.532 [DEBUG] [Thread-125415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:11.280 [DEBUG] [Thread-125416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:15.556 [DEBUG] [Thread-125417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:30.585 [DEBUG] [Thread-125418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:45.613 [DEBUG] [Thread-125419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:52.418 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:52.419 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:11:59.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-28T13:12:00.641 [DEBUG] [Thread-125420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:09.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:12:09.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:12:09.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-28T13:12:09.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 12, 3), 19.46, 26.58, 0.0, 21.07, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:12:09.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:12:03
2025-09-28T13:12:09.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:12:10.033 [DEBUG] [Thread-125421] [transport.py] [_log()] starting thread (client mode): 0x2b9ca2f0
2025-09-28T13:12:10.034 [DEBUG] [Thread-125421] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:10.053 [DEBUG] [Thread-125421] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:12:10.053 [INFO] [Thread-125421] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:12:10.054 [DEBUG] [Thread-125421] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:10.054 [DEBUG] [Thread-125421] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:12:10.054 [DEBUG] [Thread-125421] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] Compression: none
2025-09-28T13:12:10.055 [DEBUG] [Thread-125421] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:10.069 [DEBUG] [Thread-125421] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:10.069 [DEBUG] [Thread-125421] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:10.070 [DEBUG] [Thread-125421] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:12:10.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:12:10.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:10.072 [DEBUG] [Thread-125421] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:10.072 [DEBUG] [Thread-125421] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:10.072 [DEBUG] [Thread-125421] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:10.072 [DEBUG] [Thread-125421] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:12:10.072 [DEBUG] [Thread-125421] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:10.090 [INFO] [Thread-125421] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:10.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:10.666 [DEBUG] [Thread-125421] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:10.666 [DEBUG] [Thread-125421] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:10.666 [DEBUG] [Thread-125421] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:12:10.707 [DEBUG] [Thread-125421] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:10.707 [DEBUG] [Thread-125421] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:10.710 [DEBUG] [Thread-125421] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:10.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:10.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:12:10.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:12:10.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:12:10.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:10.731 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:12:10.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:10.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:12:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.466403 -999.00  +18.40  18.54     33   +2.10 1 1 1 1 1   888    0 16.16 -7.74 ----- 22.3 18.5 263.2 25.4 25.5 -27.1 24.5 -25.6 24.1 -24.7 25.4 -27.5
2025-09-28T13:12:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:12:10.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:12:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.466403
2025-09-28T13:12:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:12:10.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:12:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:12:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:12:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:12:10.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:12:03', tmtdew=19.46, humidity=26.58, cloud=0.0, wind=21.07, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:11:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:12:10.734 [DEBUG] [Thread-125421] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:10.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-28T13:12:10.831 [DEBUG] [Thread-125424] [transport.py] [_log()] starting thread (client mode): 0x2b9c0490
2025-09-28T13:12:10.831 [DEBUG] [Thread-125424] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:10.847 [DEBUG] [Thread-125424] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:12:10.847 [INFO] [Thread-125424] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:12:10.854 [DEBUG] [Thread-125424] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:10.855 [DEBUG] [Thread-125424] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:10.856 [DEBUG] [Thread-125424] [transport.py] [_log()] Compression: none
2025-09-28T13:12:10.856 [DEBUG] [Thread-125424] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:10.913 [DEBUG] [Thread-125424] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:10.913 [DEBUG] [Thread-125424] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:10.914 [DEBUG] [Thread-125424] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:12:10.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:12:10.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:10.969 [DEBUG] [Thread-125424] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:10.969 [DEBUG] [Thread-125424] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:10.969 [DEBUG] [Thread-125424] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:10.970 [DEBUG] [Thread-125424] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:12:10.970 [DEBUG] [Thread-125424] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:10.988 [INFO] [Thread-125424] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:10.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:12:10.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:11.336 [DEBUG] [Thread-125426 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:11.957 [DEBUG] [Thread-125424] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:11.958 [DEBUG] [Thread-125424] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:12.005 [DEBUG] [Thread-125424] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:12.005 [DEBUG] [Thread-125424] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:12.015 [DEBUG] [Thread-125424] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:12.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:12.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-28T13:12:12.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-28T13:12:12.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:12.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:12.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:12.049 [DEBUG] [Thread-125424] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:15.672 [DEBUG] [Thread-125427 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:22.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:12:22.051 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:12:22.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-28T13:12:22.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 12, 3), 19.46, 26.58, 0.0, 21.07, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:12:22.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:12:03
2025-09-28T13:12:22.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:12:22.914 [DEBUG] [Thread-125428] [transport.py] [_log()] starting thread (client mode): 0x2b9caa40
2025-09-28T13:12:22.914 [DEBUG] [Thread-125428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:22.935 [DEBUG] [Thread-125428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:12:22.935 [INFO] [Thread-125428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:12:22.938 [DEBUG] [Thread-125428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:22.938 [DEBUG] [Thread-125428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:12:22.938 [DEBUG] [Thread-125428] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:22.938 [DEBUG] [Thread-125428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] Compression: none
2025-09-28T13:12:22.939 [DEBUG] [Thread-125428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:22.958 [DEBUG] [Thread-125428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:22.959 [DEBUG] [Thread-125428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:22.960 [DEBUG] [Thread-125428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:12:22.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:12:22.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:22.962 [DEBUG] [Thread-125428] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:22.962 [DEBUG] [Thread-125428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:22.962 [DEBUG] [Thread-125428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:22.963 [DEBUG] [Thread-125428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:12:22.963 [DEBUG] [Thread-125428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:22.985 [INFO] [Thread-125428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:22.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:23.608 [DEBUG] [Thread-125428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:23.608 [DEBUG] [Thread-125428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:23.608 [DEBUG] [Thread-125428] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:12:23.649 [DEBUG] [Thread-125428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:23.649 [DEBUG] [Thread-125428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:23.652 [DEBUG] [Thread-125428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:23.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:23.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:12:23.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:12:23.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:12:23.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:23.674 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:12:23.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:23.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.466403 -999.00  +18.40  18.54     33   +2.10 1 1 1 1 1   888    0 16.16 -7.74 ----- 22.3 18.5 263.2 25.4 25.5 -27.1 24.5 -25.6 24.1 -24.7 25.4 -27.5
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.466403
2025-09-28T13:12:23.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:12:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:12:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:12:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:12:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:12:23.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:12:03', tmtdew=19.46, humidity=26.58, cloud=0.0, wind=21.07, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:11:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:12:23.676 [DEBUG] [Thread-125428] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:23.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-28T13:12:23.773 [DEBUG] [Thread-125431] [transport.py] [_log()] starting thread (client mode): 0x2b95feb0
2025-09-28T13:12:23.774 [DEBUG] [Thread-125431] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:23.788 [DEBUG] [Thread-125431] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:12:23.788 [INFO] [Thread-125431] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:12:23.795 [DEBUG] [Thread-125431] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:23.795 [DEBUG] [Thread-125431] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] Compression: none
2025-09-28T13:12:23.796 [DEBUG] [Thread-125431] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:23.852 [DEBUG] [Thread-125431] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:23.853 [DEBUG] [Thread-125431] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:23.853 [DEBUG] [Thread-125431] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:12:23.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:12:23.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:23.909 [DEBUG] [Thread-125431] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:23.909 [DEBUG] [Thread-125431] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:23.909 [DEBUG] [Thread-125431] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:23.909 [DEBUG] [Thread-125431] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:12:23.909 [DEBUG] [Thread-125431] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:23.929 [INFO] [Thread-125431] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:23.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-28T13:12:23.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:24.911 [DEBUG] [Thread-125431] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:24.911 [DEBUG] [Thread-125431] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:24.960 [DEBUG] [Thread-125431] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:24.960 [DEBUG] [Thread-125431] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:24.968 [DEBUG] [Thread-125431] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:24.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:24.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-28T13:12:24.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-28T13:12:24.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:24.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:24.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:25.003 [DEBUG] [Thread-125431] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:30.717 [DEBUG] [Thread-125433 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:35.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:12:35.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:12:35.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:12:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 12, 3), 19.46, 26.58, 0.0, 21.07, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:12:35.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:12:03
2025-09-28T13:12:35.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:12:35.862 [DEBUG] [Thread-125434] [transport.py] [_log()] starting thread (client mode): 0x2b9ac9a0
2025-09-28T13:12:35.862 [DEBUG] [Thread-125434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:35.882 [DEBUG] [Thread-125434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:12:35.882 [INFO] [Thread-125434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:35.885 [DEBUG] [Thread-125434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:35.886 [DEBUG] [Thread-125434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:35.886 [DEBUG] [Thread-125434] [transport.py] [_log()] Compression: none
2025-09-28T13:12:35.886 [DEBUG] [Thread-125434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:35.901 [DEBUG] [Thread-125434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:35.901 [DEBUG] [Thread-125434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:35.902 [DEBUG] [Thread-125434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:12:35.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:12:35.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:35.904 [DEBUG] [Thread-125434] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:35.905 [DEBUG] [Thread-125434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:35.905 [DEBUG] [Thread-125434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:35.905 [DEBUG] [Thread-125434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:12:35.905 [DEBUG] [Thread-125434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:35.928 [INFO] [Thread-125434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:35.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:36.482 [DEBUG] [Thread-125434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:36.482 [DEBUG] [Thread-125434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:36.482 [DEBUG] [Thread-125434] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:12:36.523 [DEBUG] [Thread-125434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:36.523 [DEBUG] [Thread-125434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:36.525 [DEBUG] [Thread-125434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:36.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:36.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:12:36.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:12:36.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:12:36.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:36.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:12:36.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.466751 -999.00  +18.40  18.77     33   +1.80 1 1 1 1 1   888    0 16.35 -3.60 ----- 18.9 18.8 278.8 25.4 25.5 -26.9 24.5 -25.9 24.1 -25.0 25.4 -25.5
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.466751
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:12:36.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:12:03', tmtdew=19.46, humidity=26.58, cloud=0.0, wind=21.07, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:12:36.544 [DEBUG] [Thread-125434] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:36.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-28T13:12:36.629 [DEBUG] [Thread-125437] [transport.py] [_log()] starting thread (client mode): 0x2b9c28f0
2025-09-28T13:12:36.629 [DEBUG] [Thread-125437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:36.644 [DEBUG] [Thread-125437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:12:36.644 [INFO] [Thread-125437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] Compression: none
2025-09-28T13:12:36.652 [DEBUG] [Thread-125437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:36.707 [DEBUG] [Thread-125437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:36.707 [DEBUG] [Thread-125437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:36.708 [DEBUG] [Thread-125437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:12:36.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:12:36.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:36.764 [DEBUG] [Thread-125437] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:36.764 [DEBUG] [Thread-125437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:36.764 [DEBUG] [Thread-125437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:36.764 [DEBUG] [Thread-125437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:12:36.764 [DEBUG] [Thread-125437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:36.778 [INFO] [Thread-125437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:36.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-28T13:12:36.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:37.745 [DEBUG] [Thread-125437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:37.745 [DEBUG] [Thread-125437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:37.794 [DEBUG] [Thread-125437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:37.794 [DEBUG] [Thread-125437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:37.802 [DEBUG] [Thread-125437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:37.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:37.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')
2025-09-28T13:12:37.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-28T13:12:37.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:37.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:37.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:37.837 [DEBUG] [Thread-125437] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:45.750 [DEBUG] [Thread-125439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:47.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:12:47.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:12:47.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-28T13:12:48.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 12, 35), 19.5, 26.87, 0.0, 18.05, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:12:48.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:12:35
2025-09-28T13:12:48.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:12:48.698 [DEBUG] [Thread-125440] [transport.py] [_log()] starting thread (client mode): 0x2e3c1630
2025-09-28T13:12:48.698 [DEBUG] [Thread-125440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:48.717 [DEBUG] [Thread-125440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:12:48.717 [INFO] [Thread-125440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:12:48.720 [DEBUG] [Thread-125440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:48.720 [DEBUG] [Thread-125440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:12:48.720 [DEBUG] [Thread-125440] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:48.720 [DEBUG] [Thread-125440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:48.720 [DEBUG] [Thread-125440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] Compression: none
2025-09-28T13:12:48.721 [DEBUG] [Thread-125440] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:48.741 [DEBUG] [Thread-125440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:48.742 [DEBUG] [Thread-125440] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:48.742 [DEBUG] [Thread-125440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:12:48.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:12:48.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:48.745 [DEBUG] [Thread-125440] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:48.753 [DEBUG] [Thread-125440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:48.753 [DEBUG] [Thread-125440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:48.753 [DEBUG] [Thread-125440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:12:48.753 [DEBUG] [Thread-125440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:48.790 [INFO] [Thread-125440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:48.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:49.450 [DEBUG] [Thread-125440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:49.450 [DEBUG] [Thread-125440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:49.450 [DEBUG] [Thread-125440] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:12:49.491 [DEBUG] [Thread-125440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:49.492 [DEBUG] [Thread-125440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:49.495 [DEBUG] [Thread-125440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:49.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:49.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:12:49.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:12:49.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:12:49.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:49.518 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:12:49.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:49.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:49.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:12:49.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.466751 -999.00  +18.40  18.77     33   +1.80 1 1 1 1 1   888    0 16.35 -3.60 ----- 18.9 18.8 278.8 25.4 25.5 -26.9 24.5 -25.9 24.1 -25.0 25.4 -25.5
2025-09-28T13:12:49.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:12:49.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:12:49.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.466751
2025-09-28T13:12:49.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:12:49.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:12:49.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:12:49.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:12:49.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:12:49.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:12:35', tmtdew=19.5, humidity=26.87, cloud=0.0, wind=18.05, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:12:49.522 [DEBUG] [Thread-125440] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:49.608 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:12:49.617 [DEBUG] [Thread-125443] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd00
2025-09-28T13:12:49.617 [DEBUG] [Thread-125443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:12:49.632 [DEBUG] [Thread-125443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:12:49.632 [INFO] [Thread-125443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:12:49.640 [DEBUG] [Thread-125443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:12:49.640 [DEBUG] [Thread-125443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:12:49.640 [DEBUG] [Thread-125443] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] client lang: <none>
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] server lang: <none>
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] kex follows: False
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] Compression: none
2025-09-28T13:12:49.641 [DEBUG] [Thread-125443] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:12:49.700 [DEBUG] [Thread-125443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:12:49.701 [DEBUG] [Thread-125443] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:12:49.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:12:49.702 [DEBUG] [Thread-125443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:12:49.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:12:49.757 [DEBUG] [Thread-125443] [transport.py] [_log()] userauth is OK
2025-09-28T13:12:49.757 [DEBUG] [Thread-125443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:12:49.757 [DEBUG] [Thread-125443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:12:49.757 [DEBUG] [Thread-125443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:12:49.757 [DEBUG] [Thread-125443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:12:49.776 [INFO] [Thread-125443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:12:49.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-28T13:12:49.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:12:50.739 [DEBUG] [Thread-125443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:12:50.739 [DEBUG] [Thread-125443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:12:50.788 [DEBUG] [Thread-125443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:12:50.789 [DEBUG] [Thread-125443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:12:50.801 [DEBUG] [Thread-125443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:12:50.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:12:50.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-28T13:12:50.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-28T13:12:50.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:12:50.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:12:50.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:12:50.839 [DEBUG] [Thread-125443] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:12:52.561 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:12:52.562 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:00.793 [DEBUG] [Thread-125445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:00.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:13:00.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:13:00.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-28T13:13:01.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 12, 35), 19.5, 26.87, 0.0, 18.05, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:13:01.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:12:35
2025-09-28T13:13:01.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:13:01.701 [DEBUG] [Thread-125446] [transport.py] [_log()] starting thread (client mode): 0x2b98a230
2025-09-28T13:13:01.701 [DEBUG] [Thread-125446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:01.714 [DEBUG] [Thread-125446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:13:01.714 [INFO] [Thread-125446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:13:01.715 [DEBUG] [Thread-125446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:01.715 [DEBUG] [Thread-125446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] Compression: none
2025-09-28T13:13:01.716 [DEBUG] [Thread-125446] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:01.729 [DEBUG] [Thread-125446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:01.730 [DEBUG] [Thread-125446] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:01.730 [DEBUG] [Thread-125446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:13:01.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:13:01.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:01.731 [DEBUG] [Thread-125446] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:01.731 [DEBUG] [Thread-125446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:01.732 [DEBUG] [Thread-125446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:01.732 [DEBUG] [Thread-125446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:13:01.732 [DEBUG] [Thread-125446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:01.763 [INFO] [Thread-125446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:01.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:02.403 [DEBUG] [Thread-125446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:02.403 [DEBUG] [Thread-125446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:02.403 [DEBUG] [Thread-125446] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:13:02.444 [DEBUG] [Thread-125446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:02.444 [DEBUG] [Thread-125446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:02.447 [DEBUG] [Thread-125446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:02.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:02.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:13:02.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:13:02.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:13:02.466 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:02.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:13:02.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:02.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.466751 -999.00  +18.40  18.77     33   +1.80 1 1 1 1 1   888    0 16.35 -3.60 ----- 18.9 18.8 278.8 25.4 25.5 -26.9 24.5 -25.9 24.1 -25.0 25.4 -25.5
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.466751
2025-09-28T13:13:02.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:13:02.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:13:02.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:13:02.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:13:02.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:13:02.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:12:35', tmtdew=19.5, humidity=26.87, cloud=0.0, wind=18.05, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:07.286', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:13:02.470 [DEBUG] [Thread-125446] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:02.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-28T13:13:02.566 [DEBUG] [Thread-125449] [transport.py] [_log()] starting thread (client mode): 0x2e38c460
2025-09-28T13:13:02.567 [DEBUG] [Thread-125449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:02.586 [DEBUG] [Thread-125449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:13:02.586 [INFO] [Thread-125449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] Compression: none
2025-09-28T13:13:02.594 [DEBUG] [Thread-125449] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:02.655 [DEBUG] [Thread-125449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:02.655 [DEBUG] [Thread-125449] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:02.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:13:02.657 [DEBUG] [Thread-125449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:13:02.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:02.711 [DEBUG] [Thread-125449] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:02.711 [DEBUG] [Thread-125449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:02.711 [DEBUG] [Thread-125449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:02.711 [DEBUG] [Thread-125449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:13:02.711 [DEBUG] [Thread-125449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:02.725 [INFO] [Thread-125449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:02.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-28T13:13:02.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:03.697 [DEBUG] [Thread-125449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:03.698 [DEBUG] [Thread-125449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:03.745 [DEBUG] [Thread-125449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:03.745 [DEBUG] [Thread-125449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:03.754 [DEBUG] [Thread-125449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:03.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:03.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-28T13:13:03.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-28T13:13:03.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:03.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:03.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:03.789 [DEBUG] [Thread-125449] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:11.385 [DEBUG] [Thread-125451 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:13.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:13:13.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:13:13.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:13:14.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 13, 7), 19.61, 26.62, 0.0, 18.95, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:13:14.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:13:07
2025-09-28T13:13:14.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:13:14.651 [DEBUG] [Thread-125452] [transport.py] [_log()] starting thread (client mode): 0x2b9de140
2025-09-28T13:13:14.651 [DEBUG] [Thread-125452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:14.672 [DEBUG] [Thread-125452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:13:14.672 [INFO] [Thread-125452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:13:14.676 [DEBUG] [Thread-125452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:14.676 [DEBUG] [Thread-125452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:13:14.676 [DEBUG] [Thread-125452] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:14.676 [DEBUG] [Thread-125452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] Compression: none
2025-09-28T13:13:14.677 [DEBUG] [Thread-125452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:14.696 [DEBUG] [Thread-125452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:14.697 [DEBUG] [Thread-125452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:14.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:13:14.698 [DEBUG] [Thread-125452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:13:14.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:14.700 [DEBUG] [Thread-125452] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:14.700 [DEBUG] [Thread-125452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:14.700 [DEBUG] [Thread-125452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:14.700 [DEBUG] [Thread-125452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:13:14.701 [DEBUG] [Thread-125452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:14.736 [INFO] [Thread-125452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:14.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:15.366 [DEBUG] [Thread-125452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:15.366 [DEBUG] [Thread-125452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:15.367 [DEBUG] [Thread-125452] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:13:15.407 [DEBUG] [Thread-125452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:15.407 [DEBUG] [Thread-125452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:15.410 [DEBUG] [Thread-125452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:15.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:15.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:13:15.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:13:15.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:13:15.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:15.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:13:15.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:15.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.467098 -999.00  +18.50  16.54     32   +1.90 1 1 1 1 1   888    0 16.22 -1.98 ----- 13.7 16.5 271.2 19.9 25.6 -26.5 24.6 -25.3 24.3 -24.7 25.4 -26.0
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.467098
2025-09-28T13:13:15.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:13:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:13:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:13:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:13:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:13:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:13:07', tmtdew=19.61, humidity=26.62, cloud=0.0, wind=18.95, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:13:15.435 [DEBUG] [Thread-125452] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:15.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-28T13:13:15.537 [DEBUG] [Thread-125455] [transport.py] [_log()] starting thread (client mode): 0x2b9cb460
2025-09-28T13:13:15.537 [DEBUG] [Thread-125455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:15.552 [DEBUG] [Thread-125455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:13:15.552 [INFO] [Thread-125455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:13:15.559 [DEBUG] [Thread-125455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] Compression: none
2025-09-28T13:13:15.560 [DEBUG] [Thread-125455] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:15.619 [DEBUG] [Thread-125455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:15.619 [DEBUG] [Thread-125455] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:15.620 [DEBUG] [Thread-125455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:13:15.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:13:15.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:15.680 [DEBUG] [Thread-125455] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:15.680 [DEBUG] [Thread-125455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:15.680 [DEBUG] [Thread-125455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:15.681 [DEBUG] [Thread-125455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:13:15.681 [DEBUG] [Thread-125455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:15.699 [INFO] [Thread-125455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:15.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-28T13:13:15.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:15.844 [DEBUG] [Thread-125457 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:16.759 [DEBUG] [Thread-125455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:16.759 [DEBUG] [Thread-125455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:16.807 [DEBUG] [Thread-125455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:16.807 [DEBUG] [Thread-125455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:16.816 [DEBUG] [Thread-125455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:16.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:16.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-28T13:13:16.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-28T13:13:16.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:16.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:16.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:16.850 [DEBUG] [Thread-125455] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:26.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:13:26.853 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:13:26.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:13:27.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 13, 7), 19.61, 26.62, 0.0, 18.95, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:13:27.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:13:07
2025-09-28T13:13:27.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:13:27.707 [DEBUG] [Thread-125458] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd00
2025-09-28T13:13:27.707 [DEBUG] [Thread-125458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:27.725 [DEBUG] [Thread-125458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:13:27.725 [INFO] [Thread-125458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:27.726 [DEBUG] [Thread-125458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] Compression: none
2025-09-28T13:13:27.727 [DEBUG] [Thread-125458] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:27.737 [DEBUG] [Thread-125458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:27.738 [DEBUG] [Thread-125458] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:27.738 [DEBUG] [Thread-125458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:13:27.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:13:27.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:27.740 [DEBUG] [Thread-125458] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:27.740 [DEBUG] [Thread-125458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:27.740 [DEBUG] [Thread-125458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:27.740 [DEBUG] [Thread-125458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:13:27.740 [DEBUG] [Thread-125458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:27.762 [INFO] [Thread-125458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:27.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:28.302 [DEBUG] [Thread-125458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:28.302 [DEBUG] [Thread-125458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:28.303 [DEBUG] [Thread-125458] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:13:28.343 [DEBUG] [Thread-125458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:28.344 [DEBUG] [Thread-125458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:28.347 [DEBUG] [Thread-125458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:28.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:28.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:13:28.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:13:28.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:13:28.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:28.368 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:13:28.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.467098 -999.00  +18.50  16.54     32   +1.90 1 1 1 1 1   888    0 16.22 -1.98 ----- 13.7 16.5 271.2 19.9 25.6 -26.5 24.6 -25.3 24.3 -24.7 25.4 -26.0
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:13:28.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.467098
2025-09-28T13:13:28.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:13:28.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:13:28.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:13:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:13:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:13:28.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:13:07', tmtdew=19.61, humidity=26.62, cloud=0.0, wind=18.95, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:13:28.371 [DEBUG] [Thread-125458] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:28.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-28T13:13:28.467 [DEBUG] [Thread-125461] [transport.py] [_log()] starting thread (client mode): 0x2e34ae60
2025-09-28T13:13:28.468 [DEBUG] [Thread-125461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:28.483 [DEBUG] [Thread-125461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:13:28.483 [INFO] [Thread-125461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:28.491 [DEBUG] [Thread-125461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] Compression: none
2025-09-28T13:13:28.492 [DEBUG] [Thread-125461] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:28.554 [DEBUG] [Thread-125461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:28.555 [DEBUG] [Thread-125461] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:28.555 [DEBUG] [Thread-125461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:13:28.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:13:28.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:28.615 [DEBUG] [Thread-125461] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:28.615 [DEBUG] [Thread-125461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:28.615 [DEBUG] [Thread-125461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:28.616 [DEBUG] [Thread-125461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:13:28.616 [DEBUG] [Thread-125461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:28.638 [INFO] [Thread-125461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:28.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-28T13:13:28.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:29.618 [DEBUG] [Thread-125461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:29.619 [DEBUG] [Thread-125461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:29.666 [DEBUG] [Thread-125461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:29.666 [DEBUG] [Thread-125461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:29.675 [DEBUG] [Thread-125461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:29.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:29.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-28T13:13: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-28T13:13:29.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:29.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:29.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:29.710 [DEBUG] [Thread-125461] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:30.893 [DEBUG] [Thread-125463 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:39.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:13:39.713 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:13:39.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-28T13:13:40.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 13, 7), 19.61, 26.62, 0.0, 18.95, 18.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:13:40.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:13:07
2025-09-28T13:13:40.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:13:40.615 [DEBUG] [Thread-125464] [transport.py] [_log()] starting thread (client mode): 0x2b92a5c0
2025-09-28T13:13:40.615 [DEBUG] [Thread-125464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:40.634 [DEBUG] [Thread-125464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:13:40.634 [INFO] [Thread-125464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:40.637 [DEBUG] [Thread-125464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] Compression: none
2025-09-28T13:13:40.638 [DEBUG] [Thread-125464] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:40.652 [DEBUG] [Thread-125464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:40.653 [DEBUG] [Thread-125464] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:40.653 [DEBUG] [Thread-125464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:13:40.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:13:40.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:40.654 [DEBUG] [Thread-125464] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:40.654 [DEBUG] [Thread-125464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:40.654 [DEBUG] [Thread-125464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:40.654 [DEBUG] [Thread-125464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:13:40.654 [DEBUG] [Thread-125464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:40.670 [INFO] [Thread-125464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:40.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:41.320 [DEBUG] [Thread-125464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:41.320 [DEBUG] [Thread-125464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:41.320 [DEBUG] [Thread-125464] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:13:41.361 [DEBUG] [Thread-125464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:41.361 [DEBUG] [Thread-125464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:41.365 [DEBUG] [Thread-125464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:41.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:41.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:13:41.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:13:41.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:13:41.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:41.400 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:13:41.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.467098 -999.00  +18.50  16.54     32   +1.90 1 1 1 1 1   888    0 16.22 -1.98 ----- 13.7 16.5 271.2 19.9 25.6 -26.5 24.6 -25.3 24.3 -24.7 25.4 -26.0
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.467098
2025-09-28T13:13:41.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:13:41.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:13:41.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:13:41.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:13:41.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:13:41.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:13:07', tmtdew=19.61, humidity=26.62, cloud=0.0, wind=18.95, temperature=18.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:12:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:13:41.403 [DEBUG] [Thread-125464] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:41.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-28T13:13:41.486 [DEBUG] [Thread-125467] [transport.py] [_log()] starting thread (client mode): 0x2b92ae00
2025-09-28T13:13:41.486 [DEBUG] [Thread-125467] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:41.504 [DEBUG] [Thread-125467] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:13:41.504 [INFO] [Thread-125467] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] Compression: none
2025-09-28T13:13:41.512 [DEBUG] [Thread-125467] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:41.569 [DEBUG] [Thread-125467] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:41.569 [DEBUG] [Thread-125467] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:41.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:13:41.569 [DEBUG] [Thread-125467] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:13:41.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:41.627 [DEBUG] [Thread-125467] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:41.627 [DEBUG] [Thread-125467] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:41.627 [DEBUG] [Thread-125467] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:41.627 [DEBUG] [Thread-125467] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:13:41.627 [DEBUG] [Thread-125467] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:41.641 [INFO] [Thread-125467] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:41.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-28T13:13:41.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:42.580 [DEBUG] [Thread-125467] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:42.580 [DEBUG] [Thread-125467] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:42.628 [DEBUG] [Thread-125467] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:42.628 [DEBUG] [Thread-125467] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:42.637 [DEBUG] [Thread-125467] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:42.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13: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')
2025-09-28T13:13:42.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-28T13:13:42.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:42.664 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:42.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:42.672 [DEBUG] [Thread-125467] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:45.925 [DEBUG] [Thread-125469 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:52.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:13:52.675 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:13: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-28T13:13:52.704 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:52.705 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:13:53.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 13, 39), 19.46, 26.67, 0.0, 18.12, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:13:53.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:13:39
2025-09-28T13:13:53.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:13:53.535 [DEBUG] [Thread-125470] [transport.py] [_log()] starting thread (client mode): 0x2b929bd0
2025-09-28T13:13:53.535 [DEBUG] [Thread-125470] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:53.555 [DEBUG] [Thread-125470] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:13:53.556 [INFO] [Thread-125470] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:13:53.559 [DEBUG] [Thread-125470] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:53.559 [DEBUG] [Thread-125470] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:13:53.559 [DEBUG] [Thread-125470] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] Compression: none
2025-09-28T13:13:53.560 [DEBUG] [Thread-125470] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:53.569 [DEBUG] [Thread-125470] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:53.570 [DEBUG] [Thread-125470] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:53.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:13:53.570 [DEBUG] [Thread-125470] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:13:53.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:53.613 [DEBUG] [Thread-125470] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:53.613 [DEBUG] [Thread-125470] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:53.613 [DEBUG] [Thread-125470] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:53.613 [DEBUG] [Thread-125470] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:13:53.613 [DEBUG] [Thread-125470] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:53.646 [INFO] [Thread-125470] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:53.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:54.308 [DEBUG] [Thread-125470] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:54.309 [DEBUG] [Thread-125470] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:54.309 [DEBUG] [Thread-125470] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:13:54.350 [DEBUG] [Thread-125470] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:54.350 [DEBUG] [Thread-125470] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:54.353 [DEBUG] [Thread-125470] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:54.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:54.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:13:54.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:13:54.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:13:54.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:54.374 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:13:54.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:54.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:13:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.467792 -999.00  +18.50  17.88     34   +2.40 1 1 1 1 1   888    0 16.99 3.14 ----- 17.4 17.9 268.0 26.9 25.5 -26.9 24.5 -25.3 24.2 -24.9 25.4 -25.0
2025-09-28T13:13:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:13:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:13:54.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.467792
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:13:54.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:13:39', tmtdew=19.46, humidity=26.67, cloud=0.0, wind=18.12, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:13:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:13:54.377 [DEBUG] [Thread-125470] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:13:54.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-28T13:13:54.471 [DEBUG] [Thread-125473] [transport.py] [_log()] starting thread (client mode): 0x2b928a60
2025-09-28T13:13:54.471 [DEBUG] [Thread-125473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:13:54.487 [DEBUG] [Thread-125473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:13:54.487 [INFO] [Thread-125473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:13:54.494 [DEBUG] [Thread-125473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:13:54.494 [DEBUG] [Thread-125473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] client lang: <none>
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] server lang: <none>
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] kex follows: False
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] Compression: none
2025-09-28T13:13:54.495 [DEBUG] [Thread-125473] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:13:54.554 [DEBUG] [Thread-125473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:13:54.554 [DEBUG] [Thread-125473] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:13:54.555 [DEBUG] [Thread-125473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:13:54.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:13:54.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:13:54.610 [DEBUG] [Thread-125473] [transport.py] [_log()] userauth is OK
2025-09-28T13:13:54.611 [DEBUG] [Thread-125473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:13:54.611 [DEBUG] [Thread-125473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:13:54.611 [DEBUG] [Thread-125473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:13:54.611 [DEBUG] [Thread-125473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:13:54.629 [INFO] [Thread-125473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:13:54.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-28T13:13:54.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:13:55.573 [DEBUG] [Thread-125473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:13:55.574 [DEBUG] [Thread-125473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:13:55.621 [DEBUG] [Thread-125473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:13:55.621 [DEBUG] [Thread-125473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:13:55.630 [DEBUG] [Thread-125473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:13:55.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:13:55.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-28T13:13:55.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-28T13:13:55.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:13:55.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:13:55.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:13:55.666 [DEBUG] [Thread-125473] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:00.953 [DEBUG] [Thread-125475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:05.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:14:05.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:14:05.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-28T13:14:06.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 13, 39), 19.46, 26.67, 0.0, 18.12, 18.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:14:06.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:13:39
2025-09-28T13:14:06.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:14:06.509 [DEBUG] [Thread-125476] [transport.py] [_log()] starting thread (client mode): 0x2b92beb0
2025-09-28T13:14:06.509 [DEBUG] [Thread-125476] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:06.529 [DEBUG] [Thread-125476] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:14:06.529 [INFO] [Thread-125476] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:06.531 [DEBUG] [Thread-125476] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] Compression: none
2025-09-28T13:14:06.532 [DEBUG] [Thread-125476] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:06.541 [DEBUG] [Thread-125476] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:06.541 [DEBUG] [Thread-125476] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:06.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:14:06.542 [DEBUG] [Thread-125476] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:14:06.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:06.543 [DEBUG] [Thread-125476] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:06.543 [DEBUG] [Thread-125476] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:06.543 [DEBUG] [Thread-125476] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:06.543 [DEBUG] [Thread-125476] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:14:06.543 [DEBUG] [Thread-125476] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:06.557 [INFO] [Thread-125476] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:06.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:07.133 [DEBUG] [Thread-125476] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:07.133 [DEBUG] [Thread-125476] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:07.134 [DEBUG] [Thread-125476] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:14:07.174 [DEBUG] [Thread-125476] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:07.174 [DEBUG] [Thread-125476] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:07.176 [DEBUG] [Thread-125476] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:07.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:07.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:14:07.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:14:07.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:14:07.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:07.198 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:14:07.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:07.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:14:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.467792 -999.00  +18.50  17.88     34   +2.40 1 1 1 1 1   888    0 16.99 3.14 ----- 17.4 17.9 268.0 26.9 25.5 -26.9 24.5 -25.3 24.2 -24.9 25.4 -25.0
2025-09-28T13:14:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:14:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:14:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.467792
2025-09-28T13:14:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:14:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:14:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:14:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:14:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:14:07.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:13:39', tmtdew=19.46, humidity=26.67, cloud=0.0, wind=18.12, temperature=18.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:13:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:14:07.201 [DEBUG] [Thread-125476] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:07.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-28T13:14:07.297 [DEBUG] [Thread-125479] [transport.py] [_log()] starting thread (client mode): 0x2e38fdc0
2025-09-28T13:14:07.297 [DEBUG] [Thread-125479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:07.311 [DEBUG] [Thread-125479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:14:07.312 [INFO] [Thread-125479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:14:07.319 [DEBUG] [Thread-125479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:07.320 [DEBUG] [Thread-125479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:07.321 [DEBUG] [Thread-125479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:07.322 [DEBUG] [Thread-125479] [transport.py] [_log()] Compression: none
2025-09-28T13:14:07.322 [DEBUG] [Thread-125479] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:07.378 [DEBUG] [Thread-125479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:07.379 [DEBUG] [Thread-125479] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:07.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:14:07.380 [DEBUG] [Thread-125479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:14:07.381 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:07.438 [DEBUG] [Thread-125479] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:07.438 [DEBUG] [Thread-125479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:07.438 [DEBUG] [Thread-125479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:07.439 [DEBUG] [Thread-125479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:14:07.439 [DEBUG] [Thread-125479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:07.458 [INFO] [Thread-125479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:07.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-28T13:14:07.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:08.406 [DEBUG] [Thread-125479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:08.406 [DEBUG] [Thread-125479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:08.455 [DEBUG] [Thread-125479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:08.455 [DEBUG] [Thread-125479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:08.463 [DEBUG] [Thread-125479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:08.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14: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')
2025-09-28T13:14:08.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-28T13:14:08.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:08.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:08.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:08.494 [DEBUG] [Thread-125479] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:11.432 [DEBUG] [Thread-125481 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:15.994 [DEBUG] [Thread-125482 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:18.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:14:18.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:14:18.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-28T13:14:19.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 14, 11), 19.29, 26.98, 0.0, 18.7, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:14:19.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:14:11
2025-09-28T13:14:19.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:14:19.347 [DEBUG] [Thread-125483] [transport.py] [_log()] starting thread (client mode): 0x2b9df400
2025-09-28T13:14:19.347 [DEBUG] [Thread-125483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:19.368 [DEBUG] [Thread-125483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:14:19.368 [INFO] [Thread-125483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] Compression: none
2025-09-28T13:14:19.371 [DEBUG] [Thread-125483] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:19.389 [DEBUG] [Thread-125483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:19.389 [DEBUG] [Thread-125483] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:19.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:14:19.390 [DEBUG] [Thread-125483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:14:19.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:19.433 [DEBUG] [Thread-125483] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:19.433 [DEBUG] [Thread-125483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:19.433 [DEBUG] [Thread-125483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:19.433 [DEBUG] [Thread-125483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:14:19.433 [DEBUG] [Thread-125483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:19.465 [INFO] [Thread-125483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:19.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:20.122 [DEBUG] [Thread-125483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:20.123 [DEBUG] [Thread-125483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:20.123 [DEBUG] [Thread-125483] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:14:20.163 [DEBUG] [Thread-125483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:20.163 [DEBUG] [Thread-125483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:20.166 [DEBUG] [Thread-125483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:20.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:20.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:14:20.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:14:20.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:14:20.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:20.191 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:14:20.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:20.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468139 -999.00  +18.40  13.41     34   +2.50 1 1 1 1 1   888    0 16.55 -1.16 ----- 15.3 13.4 263.0 15.7 25.5 -27.2 24.6 -25.7 24.1 -24.0 25.4 -25.1
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468139
2025-09-28T13:14:20.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:14:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:14:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:14:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:14:20.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:14:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:14:11', tmtdew=19.29, humidity=26.98, cloud=0.0, wind=18.7, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:14:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:14:20.194 [DEBUG] [Thread-125483] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:20.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:14:20.288 [DEBUG] [Thread-125486] [transport.py] [_log()] starting thread (client mode): 0x2b9df550
2025-09-28T13:14:20.288 [DEBUG] [Thread-125486] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:20.303 [DEBUG] [Thread-125486] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:14:20.303 [INFO] [Thread-125486] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] Compression: none
2025-09-28T13:14:20.311 [DEBUG] [Thread-125486] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:20.371 [DEBUG] [Thread-125486] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:20.371 [DEBUG] [Thread-125486] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:20.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:14:20.372 [DEBUG] [Thread-125486] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:14:20.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:20.435 [DEBUG] [Thread-125486] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:20.435 [DEBUG] [Thread-125486] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:20.435 [DEBUG] [Thread-125486] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:20.435 [DEBUG] [Thread-125486] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:14:20.435 [DEBUG] [Thread-125486] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:20.454 [INFO] [Thread-125486] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:20.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-28T13:14:20.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:21.414 [DEBUG] [Thread-125486] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:21.414 [DEBUG] [Thread-125486] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:21.462 [DEBUG] [Thread-125486] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:21.462 [DEBUG] [Thread-125486] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:21.470 [DEBUG] [Thread-125486] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:21.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14: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')
2025-09-28T13:14:21.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-28T13:14:21.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:21.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:21.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:21.502 [DEBUG] [Thread-125486] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:31.024 [DEBUG] [Thread-125488 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:31.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:14:31.505 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:14:31.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-28T13:14:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 14, 11), 19.29, 26.98, 0.0, 18.7, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:14:32.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:14:11
2025-09-28T13:14:32.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:14:32.351 [DEBUG] [Thread-125489] [transport.py] [_log()] starting thread (client mode): 0x2b929540
2025-09-28T13:14:32.352 [DEBUG] [Thread-125489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:32.373 [DEBUG] [Thread-125489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:14:32.373 [INFO] [Thread-125489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:32.376 [DEBUG] [Thread-125489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] Compression: none
2025-09-28T13:14:32.377 [DEBUG] [Thread-125489] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:32.387 [DEBUG] [Thread-125489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:32.387 [DEBUG] [Thread-125489] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:32.388 [DEBUG] [Thread-125489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:14:32.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:14:32.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:32.390 [DEBUG] [Thread-125489] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:32.390 [DEBUG] [Thread-125489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:32.390 [DEBUG] [Thread-125489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:32.390 [DEBUG] [Thread-125489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:14:32.390 [DEBUG] [Thread-125489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:32.409 [INFO] [Thread-125489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:32.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:33.024 [DEBUG] [Thread-125489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:33.024 [DEBUG] [Thread-125489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:33.025 [DEBUG] [Thread-125489] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:14:33.065 [DEBUG] [Thread-125489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:33.065 [DEBUG] [Thread-125489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:33.068 [DEBUG] [Thread-125489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:33.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:33.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:14:33.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:14:33.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:14:33.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:33.092 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:14:33.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468139 -999.00  +18.40  13.41     34   +2.50 1 1 1 1 1   888    0 16.55 -1.16 ----- 15.3 13.4 263.0 15.7 25.5 -27.2 24.6 -25.7 24.1 -24.0 25.4 -25.1
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:14:33.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468139
2025-09-28T13:14:33.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:14:33.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:14:33.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:14:33.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:14:33.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:14:33.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:14:11', tmtdew=19.29, humidity=26.98, cloud=0.0, wind=18.7, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:14:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:14:33.095 [DEBUG] [Thread-125489] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:33.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-28T13:14:33.188 [DEBUG] [Thread-125492] [transport.py] [_log()] starting thread (client mode): 0x2b9ca9b0
2025-09-28T13:14:33.188 [DEBUG] [Thread-125492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:33.202 [DEBUG] [Thread-125492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:14:33.202 [INFO] [Thread-125492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:33.210 [DEBUG] [Thread-125492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:33.211 [DEBUG] [Thread-125492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:33.212 [DEBUG] [Thread-125492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:33.212 [DEBUG] [Thread-125492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:33.212 [DEBUG] [Thread-125492] [transport.py] [_log()] Compression: none
2025-09-28T13:14:33.212 [DEBUG] [Thread-125492] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:33.269 [DEBUG] [Thread-125492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:33.269 [DEBUG] [Thread-125492] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:33.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:14:33.270 [DEBUG] [Thread-125492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:14:33.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:33.325 [DEBUG] [Thread-125492] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:33.325 [DEBUG] [Thread-125492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:33.325 [DEBUG] [Thread-125492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:33.326 [DEBUG] [Thread-125492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:14:33.326 [DEBUG] [Thread-125492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:33.344 [INFO] [Thread-125492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:33.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-28T13:14:33.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:34.313 [DEBUG] [Thread-125492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:34.313 [DEBUG] [Thread-125492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:34.361 [DEBUG] [Thread-125492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:34.361 [DEBUG] [Thread-125492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:34.370 [DEBUG] [Thread-125492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:34.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:34.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-28T13:14:34.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-28T13:14:34.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:34.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:34.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:34.404 [DEBUG] [Thread-125492] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:44.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:14:44.407 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:14:44.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:14:45.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 14, 11), 19.29, 26.98, 0.0, 18.7, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:14:45.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:14:11
2025-09-28T13:14:45.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:14:45.315 [DEBUG] [Thread-125494] [transport.py] [_log()] starting thread (client mode): 0x2b9cbd60
2025-09-28T13:14:45.315 [DEBUG] [Thread-125494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:45.335 [DEBUG] [Thread-125494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:14:45.335 [INFO] [Thread-125494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] Compression: none
2025-09-28T13:14:45.338 [DEBUG] [Thread-125494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:45.354 [DEBUG] [Thread-125494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:45.355 [DEBUG] [Thread-125494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:45.355 [DEBUG] [Thread-125494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:14:45.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:14:45.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:45.356 [DEBUG] [Thread-125494] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:45.356 [DEBUG] [Thread-125494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:45.356 [DEBUG] [Thread-125494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:45.356 [DEBUG] [Thread-125494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:14:45.356 [DEBUG] [Thread-125494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:45.386 [INFO] [Thread-125494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:45.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:46.048 [DEBUG] [Thread-125494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:46.048 [DEBUG] [Thread-125494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:46.048 [DEBUG] [Thread-125494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:14:46.068 [DEBUG] [Thread-125496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:46.089 [DEBUG] [Thread-125494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:46.089 [DEBUG] [Thread-125494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:46.092 [DEBUG] [Thread-125494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:46.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:46.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:14:46.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:14:46.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:46.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:14:46.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468139 -999.00  +18.40  13.41     34   +2.50 1 1 1 1 1   888    0 16.55 -1.16 ----- 15.3 13.4 263.0 15.7 25.5 -27.2 24.6 -25.7 24.1 -24.0 25.4 -25.1
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:14:46.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468139
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:14:46.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:14:11', tmtdew=19.29, humidity=26.98, cloud=0.0, wind=18.7, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:14:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:14:46.110 [DEBUG] [Thread-125494] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:46.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:14:46.196 [DEBUG] [Thread-125498] [transport.py] [_log()] starting thread (client mode): 0x2b929750
2025-09-28T13:14:46.196 [DEBUG] [Thread-125498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:46.211 [DEBUG] [Thread-125498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:14:46.211 [INFO] [Thread-125498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:46.218 [DEBUG] [Thread-125498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] Compression: none
2025-09-28T13:14:46.219 [DEBUG] [Thread-125498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:46.276 [DEBUG] [Thread-125498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:46.276 [DEBUG] [Thread-125498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:46.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:14:46.276 [DEBUG] [Thread-125498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:14:46.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:46.333 [DEBUG] [Thread-125498] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:46.333 [DEBUG] [Thread-125498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:46.333 [DEBUG] [Thread-125498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:46.333 [DEBUG] [Thread-125498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:14:46.333 [DEBUG] [Thread-125498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:46.347 [INFO] [Thread-125498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:46.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-28T13:14:46.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:47.375 [DEBUG] [Thread-125498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:47.375 [DEBUG] [Thread-125498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:47.423 [DEBUG] [Thread-125498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:47.423 [DEBUG] [Thread-125498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:47.431 [DEBUG] [Thread-125498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:47.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:47.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-28T13:14:47.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-28T13:14:47.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:47.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:47.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:47.464 [DEBUG] [Thread-125498] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:52.845 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:52.846 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:14:57.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:14:57.457 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:14:57.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-28T13:14:58.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 14, 43), 18.91, 27.81, 0.0, 18.1, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:14:58.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:14:43
2025-09-28T13:14:58.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:14:58.280 [DEBUG] [Thread-125500] [transport.py] [_log()] starting thread (client mode): 0x2b9de7d0
2025-09-28T13:14:58.280 [DEBUG] [Thread-125500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:58.302 [DEBUG] [Thread-125500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:14:58.302 [INFO] [Thread-125500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:58.305 [DEBUG] [Thread-125500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] Compression: none
2025-09-28T13:14:58.306 [DEBUG] [Thread-125500] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:58.322 [DEBUG] [Thread-125500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:58.323 [DEBUG] [Thread-125500] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:58.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:14:58.324 [DEBUG] [Thread-125500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:14:58.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:58.326 [DEBUG] [Thread-125500] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:58.326 [DEBUG] [Thread-125500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:58.326 [DEBUG] [Thread-125500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:58.326 [DEBUG] [Thread-125500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:14:58.326 [DEBUG] [Thread-125500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:58.350 [INFO] [Thread-125500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:58.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:14:58.988 [DEBUG] [Thread-125500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:14:58.989 [DEBUG] [Thread-125500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:14:58.989 [DEBUG] [Thread-125500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:14:59.029 [DEBUG] [Thread-125500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:14:59.030 [DEBUG] [Thread-125500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:14:59.032 [DEBUG] [Thread-125500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:14:59.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:14:59.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:14:59.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:14:59.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:14:59.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:14:59.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:14:59.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468486 -999.00  +18.20  12.11     34   +2.30 1 1 1 1 1   888    0 15.96 -5.67 ----- 13.4 12.1 266.0 17.1 25.6 -26.3 24.6 -24.9 24.2 -23.6 25.5 -24.4
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:14:59.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468486
2025-09-28T13:14:59.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:14:59.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:14:59.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:14:59.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:14:59.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:14:59.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:14:43', tmtdew=18.91, humidity=27.81, cloud=0.0, wind=18.1, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:14:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:14:59.056 [DEBUG] [Thread-125500] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:14:59.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-28T13:14:59.150 [DEBUG] [Thread-125503] [transport.py] [_log()] starting thread (client mode): 0x2b9df400
2025-09-28T13:14:59.150 [DEBUG] [Thread-125503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:14:59.164 [DEBUG] [Thread-125503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:14:59.165 [INFO] [Thread-125503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] client lang: <none>
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] server lang: <none>
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] kex follows: False
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:14:59.172 [DEBUG] [Thread-125503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:14:59.173 [DEBUG] [Thread-125503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:14:59.173 [DEBUG] [Thread-125503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:14:59.173 [DEBUG] [Thread-125503] [transport.py] [_log()] Compression: none
2025-09-28T13:14:59.173 [DEBUG] [Thread-125503] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:14:59.227 [DEBUG] [Thread-125503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:14:59.228 [DEBUG] [Thread-125503] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:14:59.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:14:59.228 [DEBUG] [Thread-125503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:14:59.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:14:59.284 [DEBUG] [Thread-125503] [transport.py] [_log()] userauth is OK
2025-09-28T13:14:59.285 [DEBUG] [Thread-125503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:14:59.285 [DEBUG] [Thread-125503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:14:59.285 [DEBUG] [Thread-125503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:14:59.285 [DEBUG] [Thread-125503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:14:59.298 [INFO] [Thread-125503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:14:59.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-28T13:14:59.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:00.266 [DEBUG] [Thread-125503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:00.266 [DEBUG] [Thread-125503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:00.314 [DEBUG] [Thread-125503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:00.314 [DEBUG] [Thread-125503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:00.323 [DEBUG] [Thread-125503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:00.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:00.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-28T13:15:00.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-28T13:15:00.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:00.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:00.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:00.357 [DEBUG] [Thread-125503] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:01.093 [DEBUG] [Thread-125505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:10.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:15:10.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:15:10.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-28T13:15:10.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 14, 43), 18.91, 27.81, 0.0, 18.1, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:15:10.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:14:43
2025-09-28T13:15:11.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:15:11.188 [DEBUG] [Thread-125506] [transport.py] [_log()] starting thread (client mode): 0x2b929840
2025-09-28T13:15:11.188 [DEBUG] [Thread-125506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:11.209 [DEBUG] [Thread-125506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:15:11.209 [INFO] [Thread-125506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:11.212 [DEBUG] [Thread-125506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:11.213 [DEBUG] [Thread-125506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:11.213 [DEBUG] [Thread-125506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:11.213 [DEBUG] [Thread-125506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:11.213 [DEBUG] [Thread-125506] [transport.py] [_log()] Compression: none
2025-09-28T13:15:11.213 [DEBUG] [Thread-125506] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:11.226 [DEBUG] [Thread-125506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:11.227 [DEBUG] [Thread-125506] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:11.227 [DEBUG] [Thread-125506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:15:11.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:15:11.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:11.228 [DEBUG] [Thread-125506] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:11.228 [DEBUG] [Thread-125506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:11.228 [DEBUG] [Thread-125506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:11.228 [DEBUG] [Thread-125506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:15:11.228 [DEBUG] [Thread-125506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:11.259 [INFO] [Thread-125506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:11.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:11.480 [DEBUG] [Thread-125508 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:16.139 [DEBUG] [Thread-125509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:16.808 [DEBUG] [Thread-125506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:16.808 [DEBUG] [Thread-125506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:16.808 [DEBUG] [Thread-125506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:15:16.849 [DEBUG] [Thread-125506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:16.849 [DEBUG] [Thread-125506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:16.851 [DEBUG] [Thread-125506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:16.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:16.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:15:16.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:15:16.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:15:16.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:16.921 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:15:16.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:16.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:16.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468486 -999.00  +18.20  12.11     34   +2.30 1 1 1 1 1   888    0 15.96 -5.67 ----- 13.4 12.1 266.0 17.1 25.6 -26.3 24.6 -24.9 24.2 -23.6 25.5 -24.4
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468486
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:15:16.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:14:43', tmtdew=18.91, humidity=27.81, cloud=0.0, wind=18.1, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:14:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:15:16.923 [DEBUG] [Thread-125506] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:16.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-28T13:15:17.008 [DEBUG] [Thread-125511] [transport.py] [_log()] starting thread (client mode): 0x2e3fb7f0
2025-09-28T13:15:17.008 [DEBUG] [Thread-125511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:17.025 [DEBUG] [Thread-125511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:15:17.025 [INFO] [Thread-125511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] Compression: none
2025-09-28T13:15:17.033 [DEBUG] [Thread-125511] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:17.091 [DEBUG] [Thread-125511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:17.091 [DEBUG] [Thread-125511] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:17.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:15:17.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:17.092 [DEBUG] [Thread-125511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:15:17.148 [DEBUG] [Thread-125511] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:17.148 [DEBUG] [Thread-125511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:17.148 [DEBUG] [Thread-125511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:17.148 [DEBUG] [Thread-125511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:15:17.148 [DEBUG] [Thread-125511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:17.166 [INFO] [Thread-125511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:17.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-28T13:15:17.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:18.099 [DEBUG] [Thread-125511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:18.099 [DEBUG] [Thread-125511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:18.147 [DEBUG] [Thread-125511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:18.147 [DEBUG] [Thread-125511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:18.158 [DEBUG] [Thread-125511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:18.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:18.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:15:18.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-28T13:15:18.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:18.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:18.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:18.189 [DEBUG] [Thread-125511] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:28.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:15:28.192 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:15:28.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:15:28.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 15, 15), 18.58, 28.46, 0.0, 14.35, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:15:28.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:15:15
2025-09-28T13:15:28.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:15:29.033 [DEBUG] [Thread-125513] [transport.py] [_log()] starting thread (client mode): 0x2b98b730
2025-09-28T13:15:29.033 [DEBUG] [Thread-125513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:29.053 [DEBUG] [Thread-125513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:15:29.053 [INFO] [Thread-125513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:15:29.056 [DEBUG] [Thread-125513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:29.056 [DEBUG] [Thread-125513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:15:29.056 [DEBUG] [Thread-125513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] Compression: none
2025-09-28T13:15:29.057 [DEBUG] [Thread-125513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:29.075 [DEBUG] [Thread-125513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:29.076 [DEBUG] [Thread-125513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:29.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:15:29.077 [DEBUG] [Thread-125513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:15:29.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:29.078 [DEBUG] [Thread-125513] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:29.079 [DEBUG] [Thread-125513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:29.079 [DEBUG] [Thread-125513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:29.079 [DEBUG] [Thread-125513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:15:29.079 [DEBUG] [Thread-125513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:29.102 [INFO] [Thread-125513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:29.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:29.650 [DEBUG] [Thread-125513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:29.650 [DEBUG] [Thread-125513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:29.651 [DEBUG] [Thread-125513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:15:29.691 [DEBUG] [Thread-125513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:29.692 [DEBUG] [Thread-125513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:29.694 [DEBUG] [Thread-125513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:29.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:29.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:15:29.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:15:29.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:15:29.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:29.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:15:29.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:29.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468833 -999.00  +18.70  11.34     33   +2.50 1 1 1 1 1   888    0 16.39 -7.99 ----- 10.6 11.3 258.9 14.4 25.7 -26.2 24.7 -25.2 24.4 -23.6 25.6 -25.1
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468833
2025-09-28T13:15:29.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:15:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:15:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:15:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:15:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:15:29.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:15:15', tmtdew=18.58, humidity=28.46, cloud=0.0, wind=14.35, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:15:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:15:29.715 [DEBUG] [Thread-125513] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:29.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-28T13:15:29.810 [DEBUG] [Thread-125516] [transport.py] [_log()] starting thread (client mode): 0x2b988430
2025-09-28T13:15:29.811 [DEBUG] [Thread-125516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:29.830 [DEBUG] [Thread-125516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:15:29.830 [INFO] [Thread-125516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:29.839 [DEBUG] [Thread-125516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:29.840 [DEBUG] [Thread-125516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:29.841 [DEBUG] [Thread-125516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:29.841 [DEBUG] [Thread-125516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:29.841 [DEBUG] [Thread-125516] [transport.py] [_log()] Compression: none
2025-09-28T13:15:29.841 [DEBUG] [Thread-125516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:29.896 [DEBUG] [Thread-125516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:29.896 [DEBUG] [Thread-125516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:29.897 [DEBUG] [Thread-125516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:15:29.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:15:29.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:29.952 [DEBUG] [Thread-125516] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:29.952 [DEBUG] [Thread-125516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:29.953 [DEBUG] [Thread-125516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:29.953 [DEBUG] [Thread-125516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:15:29.953 [DEBUG] [Thread-125516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:29.972 [INFO] [Thread-125516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:29.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-28T13:15:29.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:30.947 [DEBUG] [Thread-125516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:30.948 [DEBUG] [Thread-125516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:30.996 [DEBUG] [Thread-125516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:30.997 [DEBUG] [Thread-125516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:31.005 [DEBUG] [Thread-125516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:31.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:31.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-28T13:15:31.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') -> 00000000
2025-09-28T13:15:31.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:31.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:31.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:31.042 [DEBUG] [Thread-125516] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:31.167 [DEBUG] [Thread-125518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:41.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:15:41.044 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:15:41.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-28T13:15:41.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 15, 15), 18.58, 28.46, 0.0, 14.35, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:15:41.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:15:15
2025-09-28T13:15:41.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:15:41.873 [DEBUG] [Thread-125519] [transport.py] [_log()] starting thread (client mode): 0x2b928100
2025-09-28T13:15:41.873 [DEBUG] [Thread-125519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:41.892 [DEBUG] [Thread-125519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:15:41.892 [INFO] [Thread-125519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:41.894 [DEBUG] [Thread-125519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] Compression: none
2025-09-28T13:15:41.895 [DEBUG] [Thread-125519] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:41.911 [DEBUG] [Thread-125519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:41.912 [DEBUG] [Thread-125519] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:41.912 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:15:41.912 [DEBUG] [Thread-125519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:15:41.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:41.914 [DEBUG] [Thread-125519] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:41.914 [DEBUG] [Thread-125519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:41.914 [DEBUG] [Thread-125519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:41.914 [DEBUG] [Thread-125519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:15:41.914 [DEBUG] [Thread-125519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:41.929 [INFO] [Thread-125519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:41.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:43.713 [DEBUG] [Thread-125519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:43.714 [DEBUG] [Thread-125519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:43.714 [DEBUG] [Thread-125519] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:15:43.754 [DEBUG] [Thread-125519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:43.755 [DEBUG] [Thread-125519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:43.757 [DEBUG] [Thread-125519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:43.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:43.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:15:43.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:15:43.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:15:43.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:43.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:15:43.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:43.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:15:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.468833 -999.00  +18.70  11.34     33   +2.50 1 1 1 1 1   888    0 16.39 -7.99 ----- 10.6 11.3 258.9 14.4 25.7 -26.2 24.7 -25.2 24.4 -23.6 25.6 -25.1
2025-09-28T13:15:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:15:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:15:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.468833
2025-09-28T13:15:43.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:15:43.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:15:43.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:15:43.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:15:43.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:15:43.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:15:15', tmtdew=18.58, humidity=28.46, cloud=0.0, wind=14.35, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:15:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:15:43.782 [DEBUG] [Thread-125519] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:43.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-28T13:15:43.879 [DEBUG] [Thread-125522] [transport.py] [_log()] starting thread (client mode): 0x2e3c0af0
2025-09-28T13:15:43.879 [DEBUG] [Thread-125522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:43.895 [DEBUG] [Thread-125522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:15:43.895 [INFO] [Thread-125522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:15:43.903 [DEBUG] [Thread-125522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:43.903 [DEBUG] [Thread-125522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:15:43.903 [DEBUG] [Thread-125522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:43.903 [DEBUG] [Thread-125522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] Compression: none
2025-09-28T13:15:43.904 [DEBUG] [Thread-125522] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:43.960 [DEBUG] [Thread-125522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:43.960 [DEBUG] [Thread-125522] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:43.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:15:43.961 [DEBUG] [Thread-125522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:15:43.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:44.016 [DEBUG] [Thread-125522] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:44.016 [DEBUG] [Thread-125522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:44.016 [DEBUG] [Thread-125522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:44.016 [DEBUG] [Thread-125522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:15:44.016 [DEBUG] [Thread-125522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:44.035 [INFO] [Thread-125522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:44.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-28T13:15:44.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:45.001 [DEBUG] [Thread-125522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:45.001 [DEBUG] [Thread-125522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:45.049 [DEBUG] [Thread-125522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:45.049 [DEBUG] [Thread-125522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:45.058 [DEBUG] [Thread-125522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:45.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:45.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')
2025-09-28T13:15:45.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-28T13:15:45.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:45.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:45.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:45.093 [DEBUG] [Thread-125522] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:46.220 [DEBUG] [Thread-125524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:52.992 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:52.993 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:15:55.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:15:55.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:15:55.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-28T13:15:55.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 15, 47), 18.44, 28.78, 0.0, 15.09, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:15:55.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:15:47
2025-09-28T13:15:55.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:15:55.942 [DEBUG] [Thread-125525] [transport.py] [_log()] starting thread (client mode): 0x2b988640
2025-09-28T13:15:55.942 [DEBUG] [Thread-125525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:55.962 [DEBUG] [Thread-125525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:15:55.962 [INFO] [Thread-125525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] Compression: none
2025-09-28T13:15:55.964 [DEBUG] [Thread-125525] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:55.972 [DEBUG] [Thread-125525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:55.972 [DEBUG] [Thread-125525] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:55.972 [DEBUG] [Thread-125525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:15:55.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:15:55.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:55.972 [DEBUG] [Thread-125525] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:55.972 [DEBUG] [Thread-125525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:55.973 [DEBUG] [Thread-125525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:55.973 [DEBUG] [Thread-125525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:15:55.973 [DEBUG] [Thread-125525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:55.983 [INFO] [Thread-125525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:55.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:56.578 [DEBUG] [Thread-125525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:56.578 [DEBUG] [Thread-125525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:56.578 [DEBUG] [Thread-125525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:15:56.619 [DEBUG] [Thread-125525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:56.619 [DEBUG] [Thread-125525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:56.622 [DEBUG] [Thread-125525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:56.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:56.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:15:56.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:15:56.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:15:56.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:56.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:15:56.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:56.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:56.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:15:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469181 -999.00  +18.80  11.84     33   +2.40 1 1 1 1 1   888    0 16.11 -6.48 ----- 11.6 11.8 244.3 18.4 25.7 -25.9 24.7 -28.8 24.5 -24.2 25.6 -25.3
2025-09-28T13:15:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:15:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:15:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469181
2025-09-28T13:15:56.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:15:56.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:15:56.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:15:56.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:15:56.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:15:56.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:15:47', tmtdew=18.44, humidity=28.78, cloud=0.0, wind=15.09, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:15:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:15:56.643 [DEBUG] [Thread-125525] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:15:56.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-28T13:15:56.727 [DEBUG] [Thread-125528] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T13:15:56.728 [DEBUG] [Thread-125528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:15:56.743 [DEBUG] [Thread-125528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:15:56.743 [INFO] [Thread-125528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:15:56.750 [DEBUG] [Thread-125528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] client lang: <none>
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] server lang: <none>
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] kex follows: False
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] Compression: none
2025-09-28T13:15:56.751 [DEBUG] [Thread-125528] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:15:56.809 [DEBUG] [Thread-125528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:15:56.809 [DEBUG] [Thread-125528] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:15:56.810 [DEBUG] [Thread-125528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:15:56.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:15:56.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:15:56.867 [DEBUG] [Thread-125528] [transport.py] [_log()] userauth is OK
2025-09-28T13:15:56.868 [DEBUG] [Thread-125528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:15:56.868 [DEBUG] [Thread-125528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:15:56.868 [DEBUG] [Thread-125528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:15:56.868 [DEBUG] [Thread-125528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:15:56.887 [INFO] [Thread-125528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:15:56.887 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:15:56.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:15:57.885 [DEBUG] [Thread-125528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:15:57.885 [DEBUG] [Thread-125528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:15:57.933 [DEBUG] [Thread-125528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:15:57.933 [DEBUG] [Thread-125528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:15:57.941 [DEBUG] [Thread-125528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:15:57.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:15:57.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-28T13:15:57.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') -> 00000000
2025-09-28T13:15:57.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:15:57.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:15:57.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:15:57.975 [DEBUG] [Thread-125528] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:01.252 [DEBUG] [Thread-125530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:07.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:16:07.976 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:16:07.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-28T13:16:08.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 15, 47), 18.44, 28.78, 0.0, 15.09, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:16:08.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:15:47
2025-09-28T13:16:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:16:08.806 [DEBUG] [Thread-125531] [transport.py] [_log()] starting thread (client mode): 0x2b98ab60
2025-09-28T13:16:08.806 [DEBUG] [Thread-125531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:08.827 [DEBUG] [Thread-125531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:16:08.827 [INFO] [Thread-125531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:08.829 [DEBUG] [Thread-125531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] Compression: none
2025-09-28T13:16:08.830 [DEBUG] [Thread-125531] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:08.845 [DEBUG] [Thread-125531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:08.845 [DEBUG] [Thread-125531] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:08.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:16:08.846 [DEBUG] [Thread-125531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:16:08.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:08.848 [DEBUG] [Thread-125531] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:08.848 [DEBUG] [Thread-125531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:08.848 [DEBUG] [Thread-125531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:08.848 [DEBUG] [Thread-125531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:16:08.848 [DEBUG] [Thread-125531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:08.866 [INFO] [Thread-125531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:08.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:09.659 [DEBUG] [Thread-125531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:09.659 [DEBUG] [Thread-125531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:09.659 [DEBUG] [Thread-125531] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:16:09.700 [DEBUG] [Thread-125531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:09.700 [DEBUG] [Thread-125531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:09.703 [DEBUG] [Thread-125531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:09.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:09.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:16:09.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:16:09.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:16:09.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:09.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:16:09.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:09.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469181 -999.00  +18.80  11.84     33   +2.40 1 1 1 1 1   888    0 16.11 -6.48 ----- 11.6 11.8 244.3 18.4 25.7 -25.9 24.7 -28.8 24.5 -24.2 25.6 -25.3
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469181
2025-09-28T13:16:09.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:16:09.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:16:09.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:16:09.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:16:09.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:16:09.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:15:47', tmtdew=18.44, humidity=28.78, cloud=0.0, wind=15.09, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:15:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:16:09.727 [DEBUG] [Thread-125531] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:09.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-28T13:16:09.822 [DEBUG] [Thread-125534] [transport.py] [_log()] starting thread (client mode): 0x2b98b940
2025-09-28T13:16:09.822 [DEBUG] [Thread-125534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:09.838 [DEBUG] [Thread-125534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:16:09.838 [INFO] [Thread-125534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:16:09.845 [DEBUG] [Thread-125534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:09.846 [DEBUG] [Thread-125534] [transport.py] [_log()] Compression: none
2025-09-28T13:16:09.847 [DEBUG] [Thread-125534] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:09.902 [DEBUG] [Thread-125534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:09.903 [DEBUG] [Thread-125534] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:09.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:16:09.904 [DEBUG] [Thread-125534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:16:09.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:09.965 [DEBUG] [Thread-125534] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:09.965 [DEBUG] [Thread-125534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:09.965 [DEBUG] [Thread-125534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:09.966 [DEBUG] [Thread-125534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:16:09.966 [DEBUG] [Thread-125534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:09.984 [INFO] [Thread-125534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:09.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:16:09.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:10.922 [DEBUG] [Thread-125534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:10.922 [DEBUG] [Thread-125534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:10.971 [DEBUG] [Thread-125534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:10.971 [DEBUG] [Thread-125534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:10.981 [DEBUG] [Thread-125534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:10.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:10.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-28T13:16:11.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-28T13:16:11.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:11.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:11.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:11.021 [DEBUG] [Thread-125534] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:11.535 [DEBUG] [Thread-125536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:16.288 [DEBUG] [Thread-125537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:21.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:16:21.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:16:21.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 15, 47), 18.44, 28.78, 0.0, 15.09, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:16:21.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:15:47
2025-09-28T13:16:21.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:16:21.875 [DEBUG] [Thread-125538] [transport.py] [_log()] starting thread (client mode): 0x2b929f90
2025-09-28T13:16:21.875 [DEBUG] [Thread-125538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:21.893 [DEBUG] [Thread-125538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:16:21.893 [INFO] [Thread-125538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:16:21.896 [DEBUG] [Thread-125538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:21.897 [DEBUG] [Thread-125538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:21.898 [DEBUG] [Thread-125538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:21.898 [DEBUG] [Thread-125538] [transport.py] [_log()] Compression: none
2025-09-28T13:16:21.898 [DEBUG] [Thread-125538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:21.913 [DEBUG] [Thread-125538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:21.914 [DEBUG] [Thread-125538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:21.914 [DEBUG] [Thread-125538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:16:21.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:16:21.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:21.916 [DEBUG] [Thread-125538] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:21.916 [DEBUG] [Thread-125538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:21.916 [DEBUG] [Thread-125538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:21.916 [DEBUG] [Thread-125538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:16:21.917 [DEBUG] [Thread-125538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:21.940 [INFO] [Thread-125538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:21.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:22.674 [DEBUG] [Thread-125538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:22.674 [DEBUG] [Thread-125538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:22.675 [DEBUG] [Thread-125538] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:16:22.715 [DEBUG] [Thread-125538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:22.715 [DEBUG] [Thread-125538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:22.718 [DEBUG] [Thread-125538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:22.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:22.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:16:22.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:16:22.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:16:22.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:22.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:16:22.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:22.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469181 -999.00  +18.80  11.84     33   +2.40 1 1 1 1 1   888    0 16.11 -6.48 ----- 11.6 11.8 244.3 18.4 25.7 -25.9 24.7 -28.8 24.5 -24.2 25.6 -25.3
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469181
2025-09-28T13:16:22.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:16:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:16:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:16:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:16:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:16:22.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:15:47', tmtdew=18.44, humidity=28.78, cloud=0.0, wind=15.09, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:15:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:16:22.738 [DEBUG] [Thread-125538] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:22.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-28T13:16:22.834 [DEBUG] [Thread-125541] [transport.py] [_log()] starting thread (client mode): 0x2b9dd240
2025-09-28T13:16:22.834 [DEBUG] [Thread-125541] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:22.849 [DEBUG] [Thread-125541] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:16:22.849 [INFO] [Thread-125541] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:22.857 [DEBUG] [Thread-125541] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:22.858 [DEBUG] [Thread-125541] [transport.py] [_log()] Compression: none
2025-09-28T13:16:22.858 [DEBUG] [Thread-125541] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:22.918 [DEBUG] [Thread-125541] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:22.918 [DEBUG] [Thread-125541] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:22.919 [DEBUG] [Thread-125541] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:16:22.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:16:22.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:22.975 [DEBUG] [Thread-125541] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:22.975 [DEBUG] [Thread-125541] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:22.975 [DEBUG] [Thread-125541] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:22.975 [DEBUG] [Thread-125541] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:16:22.975 [DEBUG] [Thread-125541] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:22.994 [INFO] [Thread-125541] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:22.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-28T13:16:22.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:23.943 [DEBUG] [Thread-125541] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:23.944 [DEBUG] [Thread-125541] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:23.991 [DEBUG] [Thread-125541] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:23.991 [DEBUG] [Thread-125541] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:24.000 [DEBUG] [Thread-125541] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:24.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:24.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-28T13:16:24.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-28T13:16:24.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:24.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:24.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:24.034 [DEBUG] [Thread-125541] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:31.319 [DEBUG] [Thread-125543 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:34.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:16:34.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:16:34.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-28T13:16:34.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 16, 19), 18.61, 28.45, 0.0, 17.73, 18.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:16:34.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:16:19
2025-09-28T13:16:34.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:16:34.878 [DEBUG] [Thread-125544] [transport.py] [_log()] starting thread (client mode): 0x2e3c00d0
2025-09-28T13:16:34.879 [DEBUG] [Thread-125544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:34.898 [DEBUG] [Thread-125544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:16:34.898 [INFO] [Thread-125544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:16:34.901 [DEBUG] [Thread-125544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] Compression: none
2025-09-28T13:16:34.902 [DEBUG] [Thread-125544] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:34.910 [DEBUG] [Thread-125544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:34.910 [DEBUG] [Thread-125544] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:34.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:16:34.910 [DEBUG] [Thread-125544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:16:34.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:34.911 [DEBUG] [Thread-125544] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:34.911 [DEBUG] [Thread-125544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:34.911 [DEBUG] [Thread-125544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:34.911 [DEBUG] [Thread-125544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:16:34.911 [DEBUG] [Thread-125544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:34.925 [INFO] [Thread-125544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:34.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:35.479 [DEBUG] [Thread-125544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:35.480 [DEBUG] [Thread-125544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:35.480 [DEBUG] [Thread-125544] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:16:35.521 [DEBUG] [Thread-125544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:35.521 [DEBUG] [Thread-125544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:35.523 [DEBUG] [Thread-125544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:35.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:35.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:16:35.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:16:35.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:16:35.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:35.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:16:35.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469528 -999.00  +19.10  11.89     34   +3.20 1 1 1 1 1   888    0 15.97 -11.15 ----- 10.1 11.9 213.1 18.3 25.7 -25.7 24.5 -26.4 24.4 -25.5 25.8 -25.2
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469528
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:16:35.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:16:19', tmtdew=18.61, humidity=28.45, cloud=0.0, wind=17.73, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:16:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:16:35.550 [DEBUG] [Thread-125544] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:35.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-28T13:16:35.636 [DEBUG] [Thread-125547] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T13:16:35.636 [DEBUG] [Thread-125547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:35.651 [DEBUG] [Thread-125547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:16:35.651 [INFO] [Thread-125547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:35.658 [DEBUG] [Thread-125547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:35.659 [DEBUG] [Thread-125547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:35.659 [DEBUG] [Thread-125547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:35.659 [DEBUG] [Thread-125547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:35.659 [DEBUG] [Thread-125547] [transport.py] [_log()] Compression: none
2025-09-28T13:16:35.659 [DEBUG] [Thread-125547] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:35.712 [DEBUG] [Thread-125547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:35.713 [DEBUG] [Thread-125547] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:35.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:16:35.713 [DEBUG] [Thread-125547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:16:35.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:35.770 [DEBUG] [Thread-125547] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:35.770 [DEBUG] [Thread-125547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:35.770 [DEBUG] [Thread-125547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:35.770 [DEBUG] [Thread-125547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:16:35.770 [DEBUG] [Thread-125547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:35.784 [INFO] [Thread-125547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:35.784 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:16:35.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:36.712 [DEBUG] [Thread-125547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:36.712 [DEBUG] [Thread-125547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:36.760 [DEBUG] [Thread-125547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:36.760 [DEBUG] [Thread-125547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:36.768 [DEBUG] [Thread-125547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:36.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:36.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-28T13:16:36.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-28T13:16:36.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:36.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:36.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:36.798 [DEBUG] [Thread-125547] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:46.352 [DEBUG] [Thread-125549 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:46.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:16:46.794 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:16:46.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-28T13:16:47.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 16, 19), 18.61, 28.45, 0.0, 17.73, 18.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:16:47.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:16:19
2025-09-28T13:16:47.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:16:47.630 [DEBUG] [Thread-125550] [transport.py] [_log()] starting thread (client mode): 0x2b92be80
2025-09-28T13:16:47.630 [DEBUG] [Thread-125550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:47.650 [DEBUG] [Thread-125550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:16:47.650 [INFO] [Thread-125550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:16:47.654 [DEBUG] [Thread-125550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:47.654 [DEBUG] [Thread-125550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:16:47.654 [DEBUG] [Thread-125550] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:47.654 [DEBUG] [Thread-125550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:47.654 [DEBUG] [Thread-125550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] Compression: none
2025-09-28T13:16:47.655 [DEBUG] [Thread-125550] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:47.671 [DEBUG] [Thread-125550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:47.672 [DEBUG] [Thread-125550] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:47.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:16:47.673 [DEBUG] [Thread-125550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:16:47.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:47.674 [DEBUG] [Thread-125550] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:47.675 [DEBUG] [Thread-125550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:47.675 [DEBUG] [Thread-125550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:47.675 [DEBUG] [Thread-125550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:16:47.675 [DEBUG] [Thread-125550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:47.698 [INFO] [Thread-125550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:47.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:48.460 [DEBUG] [Thread-125550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:48.460 [DEBUG] [Thread-125550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:48.460 [DEBUG] [Thread-125550] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:16:48.501 [DEBUG] [Thread-125550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:48.501 [DEBUG] [Thread-125550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:48.505 [DEBUG] [Thread-125550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:48.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:48.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:16:48.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:16:48.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:16:48.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:48.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:16:48.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:48.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:16:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469528 -999.00  +19.10  11.89     34   +3.20 1 1 1 1 1   888    0 15.97 -11.15 ----- 10.1 11.9 213.1 18.3 25.7 -25.7 24.5 -26.4 24.4 -25.5 25.8 -25.2
2025-09-28T13:16:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:16:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:16:48.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469528
2025-09-28T13:16:48.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:16:48.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:16:48.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:16:48.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:16:48.542 [DEBUG] [Thread-125550] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:48.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:16:48.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:16:19', tmtdew=18.61, humidity=28.45, cloud=0.0, wind=17.73, temperature=18.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:16:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:16:48.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-28T13:16:48.637 [DEBUG] [Thread-125553] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb20
2025-09-28T13:16:48.637 [DEBUG] [Thread-125553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:16:48.652 [DEBUG] [Thread-125553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:16:48.652 [INFO] [Thread-125553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:16:48.659 [DEBUG] [Thread-125553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] client lang: <none>
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] server lang: <none>
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] kex follows: False
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] Compression: none
2025-09-28T13:16:48.660 [DEBUG] [Thread-125553] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:16:48.717 [DEBUG] [Thread-125553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:16:48.718 [DEBUG] [Thread-125553] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:16:48.718 [DEBUG] [Thread-125553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:16:48.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:16:48.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:16:48.774 [DEBUG] [Thread-125553] [transport.py] [_log()] userauth is OK
2025-09-28T13:16:48.774 [DEBUG] [Thread-125553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:16:48.775 [DEBUG] [Thread-125553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:16:48.775 [DEBUG] [Thread-125553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:16:48.775 [DEBUG] [Thread-125553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:16:48.799 [INFO] [Thread-125553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:16:48.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-28T13:16:48.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:16:49.745 [DEBUG] [Thread-125553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:16:49.745 [DEBUG] [Thread-125553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:16:49.793 [DEBUG] [Thread-125553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:16:49.793 [DEBUG] [Thread-125553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:16:49.802 [DEBUG] [Thread-125553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:16:49.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:16:49.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')
2025-09-28T13:16:49.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-28T13:16:49.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:16:49.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:16:49.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:16:49.838 [DEBUG] [Thread-125553] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:16:53.135 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:53.136 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:16:59.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:16:59.841 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:16:59.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-28T13:17:00.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 16, 51), 18.38, 28.92, 0.0, 13.69, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:17:00.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:16:51
2025-09-28T13:17:00.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:17:00.675 [DEBUG] [Thread-125555] [transport.py] [_log()] starting thread (client mode): 0x2e3c1630
2025-09-28T13:17:00.675 [DEBUG] [Thread-125555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:00.696 [DEBUG] [Thread-125555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:17:00.696 [INFO] [Thread-125555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] Compression: none
2025-09-28T13:17:00.699 [DEBUG] [Thread-125555] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:00.716 [DEBUG] [Thread-125555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:00.716 [DEBUG] [Thread-125555] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:00.717 [DEBUG] [Thread-125555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:17:00.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:17:00.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:00.719 [DEBUG] [Thread-125555] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:00.719 [DEBUG] [Thread-125555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:00.719 [DEBUG] [Thread-125555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:00.719 [DEBUG] [Thread-125555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:17:00.719 [DEBUG] [Thread-125555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:00.737 [INFO] [Thread-125555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:00.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:01.334 [DEBUG] [Thread-125555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:01.334 [DEBUG] [Thread-125555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:01.334 [DEBUG] [Thread-125555] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:17:01.375 [DEBUG] [Thread-125555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:01.375 [DEBUG] [Thread-125555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:01.378 [DEBUG] [Thread-125555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:01.385 [DEBUG] [Thread-125557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:01.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:01.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:17:01.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:17:01.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:17:01.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:01.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:17:01.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469875 -999.00  +19.10   9.84     35   +3.30 1 1 1 1 1   888    0 15.86 -17.83 ----- 8.9 9.8 218.4 15.7 25.6 -26.2 24.4 -25.7 24.6 -24.2 25.8 -25.7
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:17:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469875
2025-09-28T13:17:01.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:17:01.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:17:01.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:17:01.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:17:01.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:17:01.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:16:51', tmtdew=18.38, humidity=28.92, cloud=0.0, wind=13.69, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:16:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:17:01.401 [DEBUG] [Thread-125555] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:01.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-28T13:17:01.504 [DEBUG] [Thread-125559] [transport.py] [_log()] starting thread (client mode): 0x2b9dda80
2025-09-28T13:17:01.504 [DEBUG] [Thread-125559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:01.521 [DEBUG] [Thread-125559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:17:01.521 [INFO] [Thread-125559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:01.529 [DEBUG] [Thread-125559] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] Compression: none
2025-09-28T13:17:01.530 [DEBUG] [Thread-125559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:01.586 [DEBUG] [Thread-125559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:01.586 [DEBUG] [Thread-125559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:01.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:17:01.587 [DEBUG] [Thread-125559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:17:01.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:01.642 [DEBUG] [Thread-125559] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:01.642 [DEBUG] [Thread-125559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:01.642 [DEBUG] [Thread-125559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:01.642 [DEBUG] [Thread-125559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:17:01.642 [DEBUG] [Thread-125559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:01.661 [INFO] [Thread-125559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:01.661 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:17:01.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:02.610 [DEBUG] [Thread-125559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:02.610 [DEBUG] [Thread-125559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:02.658 [DEBUG] [Thread-125559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:02.658 [DEBUG] [Thread-125559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:02.667 [DEBUG] [Thread-125559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:02.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:02.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-28T13:17:02.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') -> 00000000
2025-09-28T13:17:02.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:02.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:02.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:02.699 [DEBUG] [Thread-125559] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:11.586 [DEBUG] [Thread-125561 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:12.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:17:12.701 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:17:12.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-28T13:17:13.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 16, 51), 18.38, 28.92, 0.0, 13.69, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:17:13.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:16:51
2025-09-28T13:17:13.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:17:13.565 [DEBUG] [Thread-125562] [transport.py] [_log()] starting thread (client mode): 0x2b95ccd0
2025-09-28T13:17:13.566 [DEBUG] [Thread-125562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:13.584 [DEBUG] [Thread-125562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:17:13.584 [INFO] [Thread-125562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:17:13.587 [DEBUG] [Thread-125562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] Compression: none
2025-09-28T13:17:13.588 [DEBUG] [Thread-125562] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:13.604 [DEBUG] [Thread-125562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:13.604 [DEBUG] [Thread-125562] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:13.604 [DEBUG] [Thread-125562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:17:13.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:17:13.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:13.605 [DEBUG] [Thread-125562] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:13.605 [DEBUG] [Thread-125562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:13.605 [DEBUG] [Thread-125562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:13.605 [DEBUG] [Thread-125562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:17:13.605 [DEBUG] [Thread-125562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:13.614 [INFO] [Thread-125562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:13.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:14.423 [DEBUG] [Thread-125562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:14.423 [DEBUG] [Thread-125562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:14.424 [DEBUG] [Thread-125562] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:17:14.465 [DEBUG] [Thread-125562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:14.465 [DEBUG] [Thread-125562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:14.468 [DEBUG] [Thread-125562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:14.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:14.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:17:14.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:17:14.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:17:14.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:14.485 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:17:14.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:14.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469875 -999.00  +19.10   9.84     35   +3.30 1 1 1 1 1   888    0 15.86 -17.83 ----- 8.9 9.8 218.4 15.7 25.6 -26.2 24.4 -25.7 24.6 -24.2 25.8 -25.7
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469875
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:17:14.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:16:51', tmtdew=18.38, humidity=28.92, cloud=0.0, wind=13.69, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:16:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:17:14.486 [DEBUG] [Thread-125562] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:14.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-28T13:17:14.569 [DEBUG] [Thread-125565] [transport.py] [_log()] starting thread (client mode): 0x2b92bee0
2025-09-28T13:17:14.569 [DEBUG] [Thread-125565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:14.584 [DEBUG] [Thread-125565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:17:14.584 [INFO] [Thread-125565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:14.591 [DEBUG] [Thread-125565] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] Compression: none
2025-09-28T13:17:14.592 [DEBUG] [Thread-125565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:14.648 [DEBUG] [Thread-125565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:14.648 [DEBUG] [Thread-125565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:14.649 [DEBUG] [Thread-125565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:17:14.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:17:14.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:14.705 [DEBUG] [Thread-125565] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:14.705 [DEBUG] [Thread-125565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:14.705 [DEBUG] [Thread-125565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:14.705 [DEBUG] [Thread-125565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:17:14.705 [DEBUG] [Thread-125565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:14.719 [INFO] [Thread-125565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:14.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-28T13:17:14.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:15.683 [DEBUG] [Thread-125565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:15.683 [DEBUG] [Thread-125565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:15.731 [DEBUG] [Thread-125565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:15.731 [DEBUG] [Thread-125565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:15.739 [DEBUG] [Thread-125565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:15.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:15.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-28T13:17:15.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-28T13:17:15.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:15.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:15.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:15.772 [DEBUG] [Thread-125565] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:16.412 [DEBUG] [Thread-125567 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:25.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:17:25.774 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:17:25.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:17:26.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 17, 23), 17.93, 29.83, 0.0, 15.9, 18.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:17:26.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:17:23
2025-09-28T13:17:26.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:17:26.607 [DEBUG] [Thread-125568] [transport.py] [_log()] starting thread (client mode): 0x2b9858d0
2025-09-28T13:17:26.607 [DEBUG] [Thread-125568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:26.627 [DEBUG] [Thread-125568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:17:26.627 [INFO] [Thread-125568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] Compression: none
2025-09-28T13:17:26.630 [DEBUG] [Thread-125568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:26.647 [DEBUG] [Thread-125568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:26.648 [DEBUG] [Thread-125568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:26.648 [DEBUG] [Thread-125568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:17:26.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:17:26.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:26.689 [DEBUG] [Thread-125568] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:26.689 [DEBUG] [Thread-125568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:26.689 [DEBUG] [Thread-125568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:26.689 [DEBUG] [Thread-125568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:17:26.689 [DEBUG] [Thread-125568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:26.721 [INFO] [Thread-125568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:26.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:27.536 [DEBUG] [Thread-125568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:27.537 [DEBUG] [Thread-125568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:27.537 [DEBUG] [Thread-125568] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:17:27.577 [DEBUG] [Thread-125568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:27.577 [DEBUG] [Thread-125568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:27.581 [DEBUG] [Thread-125568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:27.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:27.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:17:27.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:17:27.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:17:27.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:27.604 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:17:27.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.469875 -999.00  +19.10   9.84     35   +3.30 1 1 1 1 1   888    0 15.86 -17.83 ----- 8.9 9.8 218.4 15.7 25.6 -26.2 24.4 -25.7 24.6 -24.2 25.8 -25.7
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:17:27.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.469875
2025-09-28T13:17:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:17:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:17:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:17:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:17:27.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:17:27.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:17:23', tmtdew=17.93, humidity=29.83, cloud=0.0, wind=15.9, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:16:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:17:27.607 [DEBUG] [Thread-125568] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:27.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-28T13:17:27.703 [DEBUG] [Thread-125571] [transport.py] [_log()] starting thread (client mode): 0x2e3c1750
2025-09-28T13:17:27.703 [DEBUG] [Thread-125571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:27.718 [DEBUG] [Thread-125571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:17:27.718 [INFO] [Thread-125571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:27.726 [DEBUG] [Thread-125571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:27.727 [DEBUG] [Thread-125571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:27.727 [DEBUG] [Thread-125571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:27.727 [DEBUG] [Thread-125571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:27.727 [DEBUG] [Thread-125571] [transport.py] [_log()] Compression: none
2025-09-28T13:17:27.727 [DEBUG] [Thread-125571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:27.785 [DEBUG] [Thread-125571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:27.786 [DEBUG] [Thread-125571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:27.786 [DEBUG] [Thread-125571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:17:27.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:17:27.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:27.841 [DEBUG] [Thread-125571] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:27.841 [DEBUG] [Thread-125571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:27.841 [DEBUG] [Thread-125571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:27.841 [DEBUG] [Thread-125571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:17:27.841 [DEBUG] [Thread-125571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:27.860 [INFO] [Thread-125571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:27.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-28T13:17:27.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:28.800 [DEBUG] [Thread-125571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:28.800 [DEBUG] [Thread-125571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:28.848 [DEBUG] [Thread-125571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:28.848 [DEBUG] [Thread-125571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:28.857 [DEBUG] [Thread-125571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:28.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:28.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-28T13:17:28.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-28T13:17:28.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:28.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:28.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:28.892 [DEBUG] [Thread-125571] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:31.447 [DEBUG] [Thread-125573 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:38.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:17:38.895 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:17:38.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-28T13:17:39.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 17, 23), 17.93, 29.83, 0.0, 15.9, 18.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:17:39.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:17:23
2025-09-28T13:17:39.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:17:39.732 [DEBUG] [Thread-125574] [transport.py] [_log()] starting thread (client mode): 0x2b9ae2c0
2025-09-28T13:17:39.732 [DEBUG] [Thread-125574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:39.748 [DEBUG] [Thread-125574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:17:39.748 [INFO] [Thread-125574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:39.751 [DEBUG] [Thread-125574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:39.752 [DEBUG] [Thread-125574] [transport.py] [_log()] Compression: none
2025-09-28T13:17:39.752 [DEBUG] [Thread-125574] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:39.767 [DEBUG] [Thread-125574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:39.767 [DEBUG] [Thread-125574] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:39.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:17:39.767 [DEBUG] [Thread-125574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:17:39.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:39.768 [DEBUG] [Thread-125574] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:39.768 [DEBUG] [Thread-125574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:39.768 [DEBUG] [Thread-125574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:39.768 [DEBUG] [Thread-125574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:17:39.768 [DEBUG] [Thread-125574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:39.782 [INFO] [Thread-125574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:39.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:40.463 [DEBUG] [Thread-125574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:40.463 [DEBUG] [Thread-125574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:40.463 [DEBUG] [Thread-125574] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:17:40.503 [DEBUG] [Thread-125574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:40.504 [DEBUG] [Thread-125574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:40.507 [DEBUG] [Thread-125574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:40.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:40.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:17:40.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:17:40.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:17:40.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:40.529 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:17:40.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.470223 -999.00  +19.30  16.47     35   +3.70 1 1 1 1 1   888    0 15.80 -23.94 ----- 11.7 16.5 235.3 24.5 25.7 -26.9 24.4 -25.6 24.6 -24.9 25.9 -25.9
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:17:40.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.470223
2025-09-28T13:17:40.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:17:40.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:17:40.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:17:40.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:17:40.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:17:40.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:17:23', tmtdew=17.93, humidity=29.83, cloud=0.0, wind=15.9, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:17:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:17:40.532 [DEBUG] [Thread-125574] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:40.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-28T13:17:40.631 [DEBUG] [Thread-125577] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb20
2025-09-28T13:17:40.631 [DEBUG] [Thread-125577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:40.649 [DEBUG] [Thread-125577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:17:40.649 [INFO] [Thread-125577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:17:40.656 [DEBUG] [Thread-125577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:40.657 [DEBUG] [Thread-125577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:40.658 [DEBUG] [Thread-125577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:40.658 [DEBUG] [Thread-125577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:40.658 [DEBUG] [Thread-125577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:40.658 [DEBUG] [Thread-125577] [transport.py] [_log()] Compression: none
2025-09-28T13:17:40.658 [DEBUG] [Thread-125577] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:40.717 [DEBUG] [Thread-125577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:40.717 [DEBUG] [Thread-125577] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:40.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:17:40.718 [DEBUG] [Thread-125577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:17:40.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:40.773 [DEBUG] [Thread-125577] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:40.773 [DEBUG] [Thread-125577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:40.773 [DEBUG] [Thread-125577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:40.773 [DEBUG] [Thread-125577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:17:40.773 [DEBUG] [Thread-125577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:40.792 [INFO] [Thread-125577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:40.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:17:40.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:41.767 [DEBUG] [Thread-125577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:41.768 [DEBUG] [Thread-125577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:41.815 [DEBUG] [Thread-125577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:41.815 [DEBUG] [Thread-125577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:41.824 [DEBUG] [Thread-125577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:41.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:41.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')
2025-09-28T13:17:41.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') -> 00000000
2025-09-28T13:17:41.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:41.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:41.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:41.860 [DEBUG] [Thread-125577] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:46.495 [DEBUG] [Thread-125579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:51.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:17:51.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:17:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:17:52.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 17, 23), 17.93, 29.83, 0.0, 15.9, 18.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:17:52.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:17:23
2025-09-28T13:17:52.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:17:52.704 [DEBUG] [Thread-125580] [transport.py] [_log()] starting thread (client mode): 0x2b9dd120
2025-09-28T13:17:52.704 [DEBUG] [Thread-125580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:52.724 [DEBUG] [Thread-125580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:17:52.724 [INFO] [Thread-125580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:52.727 [DEBUG] [Thread-125580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:52.728 [DEBUG] [Thread-125580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:52.728 [DEBUG] [Thread-125580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:52.728 [DEBUG] [Thread-125580] [transport.py] [_log()] Compression: none
2025-09-28T13:17:52.728 [DEBUG] [Thread-125580] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:52.743 [DEBUG] [Thread-125580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:52.743 [DEBUG] [Thread-125580] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:52.743 [DEBUG] [Thread-125580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:17:52.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:17:52.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:52.744 [DEBUG] [Thread-125580] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:52.744 [DEBUG] [Thread-125580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:52.744 [DEBUG] [Thread-125580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:52.744 [DEBUG] [Thread-125580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:17:52.744 [DEBUG] [Thread-125580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:52.757 [INFO] [Thread-125580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:52.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:53.276 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:53.277 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:17:53.580 [DEBUG] [Thread-125580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:53.580 [DEBUG] [Thread-125580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:53.581 [DEBUG] [Thread-125580] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:17:53.621 [DEBUG] [Thread-125580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:53.621 [DEBUG] [Thread-125580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:53.624 [DEBUG] [Thread-125580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:53.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:53.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:17:53.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:17:53.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:17:53.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:53.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:17:53.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:53.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:53.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:17:53.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.470223 -999.00  +19.30  16.47     35   +3.70 1 1 1 1 1   888    0 15.80 -23.94 ----- 11.7 16.5 235.3 24.5 25.7 -26.9 24.4 -25.6 24.6 -24.9 25.9 -25.9
2025-09-28T13:17:53.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:17:53.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:17:53.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.470223
2025-09-28T13:17:53.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:17:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:17:53.647 [DEBUG] [Thread-125580] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:17:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:17:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:17:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:17:53.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:17:23', tmtdew=17.93, humidity=29.83, cloud=0.0, wind=15.9, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:17:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:17:53.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-28T13:17:53.737 [DEBUG] [Thread-125583] [transport.py] [_log()] starting thread (client mode): 0x2e34bfd0
2025-09-28T13:17:53.737 [DEBUG] [Thread-125583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:17:53.752 [DEBUG] [Thread-125583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:17:53.752 [INFO] [Thread-125583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:53.760 [DEBUG] [Thread-125583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] client lang: <none>
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] server lang: <none>
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] kex follows: False
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:17:53.761 [DEBUG] [Thread-125583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:17:53.762 [DEBUG] [Thread-125583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:17:53.762 [DEBUG] [Thread-125583] [transport.py] [_log()] Compression: none
2025-09-28T13:17:53.762 [DEBUG] [Thread-125583] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:17:53.816 [DEBUG] [Thread-125583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:17:53.817 [DEBUG] [Thread-125583] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:17:53.817 [DEBUG] [Thread-125583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:17:53.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:17:53.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:17:53.873 [DEBUG] [Thread-125583] [transport.py] [_log()] userauth is OK
2025-09-28T13:17:53.873 [DEBUG] [Thread-125583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:17:53.873 [DEBUG] [Thread-125583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:17:53.873 [DEBUG] [Thread-125583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:17:53.873 [DEBUG] [Thread-125583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:17:53.892 [INFO] [Thread-125583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:17:53.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:17:53.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:17:54.884 [DEBUG] [Thread-125583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:17:54.884 [DEBUG] [Thread-125583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:17:54.932 [DEBUG] [Thread-125583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:17:54.932 [DEBUG] [Thread-125583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:17:54.941 [DEBUG] [Thread-125583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:17:54.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:17:54.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')
2025-09-28T13:17:54.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') -> 00000000
2025-09-28T13:17:54.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:17:54.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:17:54.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:17:54.976 [DEBUG] [Thread-125583] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:01.541 [DEBUG] [Thread-125585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:04.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:18:04.978 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:18:04.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-28T13:18:05.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 17, 55), 17.89, 30.12, 0.0, 18.02, 18.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:18:05.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:17:55
2025-09-28T13:18:05.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:18:05.804 [DEBUG] [Thread-125586] [transport.py] [_log()] starting thread (client mode): 0x2b95ffa0
2025-09-28T13:18:05.804 [DEBUG] [Thread-125586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:05.823 [DEBUG] [Thread-125586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:18:05.823 [INFO] [Thread-125586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:18:05.826 [DEBUG] [Thread-125586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:05.826 [DEBUG] [Thread-125586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] Compression: none
2025-09-28T13:18:05.827 [DEBUG] [Thread-125586] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:05.842 [DEBUG] [Thread-125586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:05.843 [DEBUG] [Thread-125586] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:05.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:18:05.844 [DEBUG] [Thread-125586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:18:05.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:05.846 [DEBUG] [Thread-125586] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:05.846 [DEBUG] [Thread-125586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:05.846 [DEBUG] [Thread-125586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:05.846 [DEBUG] [Thread-125586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:18:05.846 [DEBUG] [Thread-125586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:05.864 [INFO] [Thread-125586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:05.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:06.642 [DEBUG] [Thread-125586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:06.642 [DEBUG] [Thread-125586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:06.642 [DEBUG] [Thread-125586] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:18:06.683 [DEBUG] [Thread-125586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:06.683 [DEBUG] [Thread-125586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:06.686 [DEBUG] [Thread-125586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:06.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:06.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:18:06.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:18:06.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:18:06.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:06.709 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:18:06.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:06.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.470223 -999.00  +19.30  16.47     35   +3.70 1 1 1 1 1   888    0 15.80 -23.94 ----- 11.7 16.5 235.3 24.5 25.7 -26.9 24.4 -25.6 24.6 -24.9 25.9 -25.9
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.470223
2025-09-28T13:18:06.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:18:06.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:18:06.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:18:06.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:18:06.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:18:06.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:17:55', tmtdew=17.89, humidity=30.12, cloud=0.0, wind=18.02, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:17:07.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:18:06.711 [DEBUG] [Thread-125586] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:06.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:18:06.809 [DEBUG] [Thread-125589] [transport.py] [_log()] starting thread (client mode): 0x2b95e680
2025-09-28T13:18:06.809 [DEBUG] [Thread-125589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:06.823 [DEBUG] [Thread-125589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:18:06.824 [INFO] [Thread-125589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:06.831 [DEBUG] [Thread-125589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] Compression: none
2025-09-28T13:18:06.832 [DEBUG] [Thread-125589] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:06.889 [DEBUG] [Thread-125589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:06.889 [DEBUG] [Thread-125589] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:06.890 [DEBUG] [Thread-125589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:18:06.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:18:06.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:06.948 [DEBUG] [Thread-125589] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:06.949 [DEBUG] [Thread-125589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:06.949 [DEBUG] [Thread-125589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:06.949 [DEBUG] [Thread-125589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:18:06.949 [DEBUG] [Thread-125589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:06.967 [INFO] [Thread-125589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:06.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-28T13:18:06.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:07.956 [DEBUG] [Thread-125589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:07.957 [DEBUG] [Thread-125589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:08.004 [DEBUG] [Thread-125589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:08.004 [DEBUG] [Thread-125589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:08.013 [DEBUG] [Thread-125589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:08.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:08.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-28T13:18:08.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-28T13:18:08.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:08.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:08.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:08.049 [DEBUG] [Thread-125589] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:11.640 [DEBUG] [Thread-125591 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:16.570 [DEBUG] [Thread-125592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:18:18.051 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:18:18.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-28T13:18:18.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 17, 55), 17.89, 30.12, 0.0, 18.02, 18.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:18:18.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:17:55
2025-09-28T13:18:18.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:18:18.875 [DEBUG] [Thread-125593] [transport.py] [_log()] starting thread (client mode): 0x2b95e260
2025-09-28T13:18:18.875 [DEBUG] [Thread-125593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:18.896 [DEBUG] [Thread-125593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:18:18.896 [INFO] [Thread-125593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:18.900 [DEBUG] [Thread-125593] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] Compression: none
2025-09-28T13:18:18.901 [DEBUG] [Thread-125593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:18.918 [DEBUG] [Thread-125593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:18.919 [DEBUG] [Thread-125593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:18.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:18:18.920 [DEBUG] [Thread-125593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:18:18.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:18.922 [DEBUG] [Thread-125593] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:18.922 [DEBUG] [Thread-125593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:18.922 [DEBUG] [Thread-125593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:18.922 [DEBUG] [Thread-125593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:18:18.922 [DEBUG] [Thread-125593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:18.956 [INFO] [Thread-125593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:18.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:19.604 [DEBUG] [Thread-125593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:19.605 [DEBUG] [Thread-125593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:19.605 [DEBUG] [Thread-125593] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:18:19.646 [DEBUG] [Thread-125593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:19.646 [DEBUG] [Thread-125593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:19.649 [DEBUG] [Thread-125593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:19.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:19.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:18:19.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:18:19.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:18:19.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:19.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:18:19.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:19.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.470570 -999.00  +19.30   7.53     35   +3.80 1 1 1 1 1   888    0 15.41 -29.20 ----- 14.2 7.5 222.3 19.3 25.6 -26.3 24.3 -26.0 24.6 -25.0 25.9 -26.2
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.470570
2025-09-28T13:18:19.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:18:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:18:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:18:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:18:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:18:19.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:17:55', tmtdew=17.89, humidity=30.12, cloud=0.0, wind=18.02, temperature=18.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:17:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:18:19.676 [DEBUG] [Thread-125593] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:19.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-28T13:18:19.770 [DEBUG] [Thread-125596] [transport.py] [_log()] starting thread (client mode): 0x2b9af1f0
2025-09-28T13:18:19.770 [DEBUG] [Thread-125596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:19.786 [DEBUG] [Thread-125596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:18:19.786 [INFO] [Thread-125596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:18:19.794 [DEBUG] [Thread-125596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:19.794 [DEBUG] [Thread-125596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:18:19.794 [DEBUG] [Thread-125596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:19.794 [DEBUG] [Thread-125596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] Compression: none
2025-09-28T13:18:19.795 [DEBUG] [Thread-125596] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:19.856 [DEBUG] [Thread-125596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:19.856 [DEBUG] [Thread-125596] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:19.857 [DEBUG] [Thread-125596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:18:19.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:18:19.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:19.912 [DEBUG] [Thread-125596] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:19.912 [DEBUG] [Thread-125596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:19.913 [DEBUG] [Thread-125596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:19.913 [DEBUG] [Thread-125596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:18:19.913 [DEBUG] [Thread-125596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:19.931 [INFO] [Thread-125596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:19.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-28T13:18:19.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:20.858 [DEBUG] [Thread-125596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:20.858 [DEBUG] [Thread-125596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:20.905 [DEBUG] [Thread-125596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:20.905 [DEBUG] [Thread-125596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:20.914 [DEBUG] [Thread-125596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:20.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:20.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-28T13:18:20.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-28T13:18:20.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:20.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:20.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:20.949 [DEBUG] [Thread-125596] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:30.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:18:30.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:18:30.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-28T13:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 18, 27), 17.7, 30.51, 0.0, 17.84, 18.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:18:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:18:27
2025-09-28T13:18:31.620 [DEBUG] [Thread-125598 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:31.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:18:31.779 [DEBUG] [Thread-125599] [transport.py] [_log()] starting thread (client mode): 0x2b9aec80
2025-09-28T13:18:31.779 [DEBUG] [Thread-125599] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:31.799 [DEBUG] [Thread-125599] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:18:31.799 [INFO] [Thread-125599] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:31.802 [DEBUG] [Thread-125599] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:31.803 [DEBUG] [Thread-125599] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:31.803 [DEBUG] [Thread-125599] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:31.803 [DEBUG] [Thread-125599] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:31.803 [DEBUG] [Thread-125599] [transport.py] [_log()] Compression: none
2025-09-28T13:18:31.803 [DEBUG] [Thread-125599] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:31.819 [DEBUG] [Thread-125599] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:31.819 [DEBUG] [Thread-125599] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:31.820 [DEBUG] [Thread-125599] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:18:31.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:18:31.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:31.822 [DEBUG] [Thread-125599] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:31.822 [DEBUG] [Thread-125599] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:31.822 [DEBUG] [Thread-125599] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:31.822 [DEBUG] [Thread-125599] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:18:31.822 [DEBUG] [Thread-125599] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:31.840 [INFO] [Thread-125599] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:31.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:32.660 [DEBUG] [Thread-125599] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:32.661 [DEBUG] [Thread-125599] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:32.661 [DEBUG] [Thread-125599] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:18:32.701 [DEBUG] [Thread-125599] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:32.702 [DEBUG] [Thread-125599] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:32.705 [DEBUG] [Thread-125599] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:32.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:32.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:18:32.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:18:32.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:18:32.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:32.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:18:32.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.470570 -999.00  +19.30   7.53     35   +3.80 1 1 1 1 1   888    0 15.41 -29.20 ----- 14.2 7.5 222.3 19.3 25.6 -26.3 24.3 -26.0 24.6 -25.0 25.9 -26.2
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:18:32.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.470570
2025-09-28T13:18:32.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:18:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:18:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:18:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:18:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:18:32.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:18:27', tmtdew=17.7, humidity=30.51, cloud=0.0, wind=17.84, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:17:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:18:32.733 [DEBUG] [Thread-125599] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:32.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-28T13:18:32.828 [DEBUG] [Thread-125602] [transport.py] [_log()] starting thread (client mode): 0x2b95ed70
2025-09-28T13:18:32.828 [DEBUG] [Thread-125602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:32.843 [DEBUG] [Thread-125602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:18:32.843 [INFO] [Thread-125602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] Compression: none
2025-09-28T13:18:32.851 [DEBUG] [Thread-125602] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:32.908 [DEBUG] [Thread-125602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:32.909 [DEBUG] [Thread-125602] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:32.909 [DEBUG] [Thread-125602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:18:32.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:18:32.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:32.964 [DEBUG] [Thread-125602] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:32.964 [DEBUG] [Thread-125602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:32.964 [DEBUG] [Thread-125602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:32.964 [DEBUG] [Thread-125602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:18:32.964 [DEBUG] [Thread-125602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:32.983 [INFO] [Thread-125602] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18: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-28T13:18:32.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:33.979 [DEBUG] [Thread-125602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:33.980 [DEBUG] [Thread-125602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:34.027 [DEBUG] [Thread-125602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:34.027 [DEBUG] [Thread-125602] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:34.036 [DEBUG] [Thread-125602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:34.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:34.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-28T13:18:34.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-28T13:18:34.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:34.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:34.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:34.076 [DEBUG] [Thread-125602] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:44.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:18:44.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:18:44.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-28T13:18:44.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 18, 27), 17.7, 30.51, 0.0, 17.84, 18.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:18:44.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:18:27
2025-09-28T13:18:44.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:18:44.916 [DEBUG] [Thread-125604] [transport.py] [_log()] starting thread (client mode): 0x2e349b10
2025-09-28T13:18:44.917 [DEBUG] [Thread-125604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:44.937 [DEBUG] [Thread-125604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:18:44.937 [INFO] [Thread-125604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:44.941 [DEBUG] [Thread-125604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] Compression: none
2025-09-28T13:18:44.942 [DEBUG] [Thread-125604] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:44.960 [DEBUG] [Thread-125604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:44.961 [DEBUG] [Thread-125604] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:44.961 [DEBUG] [Thread-125604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:18:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:18:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:44.964 [DEBUG] [Thread-125604] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:44.964 [DEBUG] [Thread-125604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:44.964 [DEBUG] [Thread-125604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:44.964 [DEBUG] [Thread-125604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:18:44.964 [DEBUG] [Thread-125604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:44.987 [INFO] [Thread-125604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:44.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:45.632 [DEBUG] [Thread-125604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:45.632 [DEBUG] [Thread-125604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:45.633 [DEBUG] [Thread-125604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:18:45.674 [DEBUG] [Thread-125604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:45.674 [DEBUG] [Thread-125604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:45.677 [DEBUG] [Thread-125604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:45.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:45.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:18:45.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:18:45.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:18:45.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:45.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:18:45.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471264 -999.00  +19.30  16.24     35   +3.60 1 1 1 1 1   888    0 15.75 -28.61 ----- 14.4 16.2 253.6 24.0 25.6 -25.7 24.3 -25.6 24.8 -23.6 26.0 -25.9
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471264
2025-09-28T13:18:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:18:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:18:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:18:45.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:18:45.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:18:45.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:18:27', tmtdew=17.7, humidity=30.51, cloud=0.0, wind=17.84, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:18:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:18:45.702 [DEBUG] [Thread-125604] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:45.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-28T13:18:45.801 [DEBUG] [Thread-125607] [transport.py] [_log()] starting thread (client mode): 0x2b9aceb0
2025-09-28T13:18:45.801 [DEBUG] [Thread-125607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:45.816 [DEBUG] [Thread-125607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:18:45.816 [INFO] [Thread-125607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:45.824 [DEBUG] [Thread-125607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:45.825 [DEBUG] [Thread-125607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:45.825 [DEBUG] [Thread-125607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:45.825 [DEBUG] [Thread-125607] [transport.py] [_log()] Compression: none
2025-09-28T13:18:45.825 [DEBUG] [Thread-125607] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:45.883 [DEBUG] [Thread-125607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:45.883 [DEBUG] [Thread-125607] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:45.883 [DEBUG] [Thread-125607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:18:45.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:18:45.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:45.940 [DEBUG] [Thread-125607] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:45.940 [DEBUG] [Thread-125607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:45.940 [DEBUG] [Thread-125607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:45.940 [DEBUG] [Thread-125607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:18:45.940 [DEBUG] [Thread-125607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:45.953 [INFO] [Thread-125607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:45.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-28T13:18:45.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:46.661 [DEBUG] [Thread-125609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:46.943 [DEBUG] [Thread-125607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:46.943 [DEBUG] [Thread-125607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:46.991 [DEBUG] [Thread-125607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:46.991 [DEBUG] [Thread-125607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:47.001 [DEBUG] [Thread-125607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:47.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:47.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')
2025-09-28T13:18:47.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-28T13:18:47.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:47.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:47.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:47.037 [DEBUG] [Thread-125607] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:53.418 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:53.419 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:18:57.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:18:57.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:18:57.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-28T13:18:57.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 18, 27), 17.7, 30.51, 0.0, 17.84, 18.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:18:57.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:18:27
2025-09-28T13:18:57.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:18:57.867 [DEBUG] [Thread-125610] [transport.py] [_log()] starting thread (client mode): 0x2b95d4e0
2025-09-28T13:18:57.867 [DEBUG] [Thread-125610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:57.887 [DEBUG] [Thread-125610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:18:57.887 [INFO] [Thread-125610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:57.891 [DEBUG] [Thread-125610] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] Compression: none
2025-09-28T13:18:57.892 [DEBUG] [Thread-125610] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:57.907 [DEBUG] [Thread-125610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:57.907 [DEBUG] [Thread-125610] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:57.907 [DEBUG] [Thread-125610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:18:57.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:18:57.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:57.948 [DEBUG] [Thread-125610] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:57.949 [DEBUG] [Thread-125610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:57.949 [DEBUG] [Thread-125610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:57.949 [DEBUG] [Thread-125610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:18:57.949 [DEBUG] [Thread-125610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:57.970 [INFO] [Thread-125610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:57.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:18:58.749 [DEBUG] [Thread-125610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:18:58.750 [DEBUG] [Thread-125610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:18:58.750 [DEBUG] [Thread-125610] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:18:58.790 [DEBUG] [Thread-125610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:18:58.790 [DEBUG] [Thread-125610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:18:58.793 [DEBUG] [Thread-125610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:18:58.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:18:58.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:18:58.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:18:58.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:18:58.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:18:58.817 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:18:58.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471264 -999.00  +19.30  16.24     35   +3.60 1 1 1 1 1   888    0 15.75 -28.61 ----- 14.4 16.2 253.6 24.0 25.6 -25.7 24.3 -25.6 24.8 -23.6 26.0 -25.9
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:18:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471264
2025-09-28T13:18:58.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:18:58.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:18:58.819 [DEBUG] [Thread-125610] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:18:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:18:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:18:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:18:58.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:18:27', tmtdew=17.7, humidity=30.51, cloud=0.0, wind=17.84, temperature=18.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:18:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:18:58.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:18:58.914 [DEBUG] [Thread-125613] [transport.py] [_log()] starting thread (client mode): 0x2b9c1000
2025-09-28T13:18:58.914 [DEBUG] [Thread-125613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:18:58.929 [DEBUG] [Thread-125613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:18:58.929 [INFO] [Thread-125613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:18:58.936 [DEBUG] [Thread-125613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:18:58.937 [DEBUG] [Thread-125613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] client lang: <none>
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] server lang: <none>
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] kex follows: False
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:18:58.938 [DEBUG] [Thread-125613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:18:58.939 [DEBUG] [Thread-125613] [transport.py] [_log()] Compression: none
2025-09-28T13:18:58.939 [DEBUG] [Thread-125613] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:18:58.995 [DEBUG] [Thread-125613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:18:58.996 [DEBUG] [Thread-125613] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:18:58.996 [DEBUG] [Thread-125613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:18:58.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:18:58.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:18:59.053 [DEBUG] [Thread-125613] [transport.py] [_log()] userauth is OK
2025-09-28T13:18:59.053 [DEBUG] [Thread-125613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:18:59.053 [DEBUG] [Thread-125613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:18:59.053 [DEBUG] [Thread-125613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:18:59.053 [DEBUG] [Thread-125613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:18:59.072 [INFO] [Thread-125613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:18:59.073 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:18:59.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:00.017 [DEBUG] [Thread-125613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:00.017 [DEBUG] [Thread-125613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:00.065 [DEBUG] [Thread-125613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:00.065 [DEBUG] [Thread-125613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:00.073 [DEBUG] [Thread-125613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:00.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19: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')
2025-09-28T13:19:00.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') -> 00000000
2025-09-28T13:19:00.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:00.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:00.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:00.105 [DEBUG] [Thread-125613] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:01.701 [DEBUG] [Thread-125615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:10.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:19:10.108 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:19:10.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-28T13:19:10.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 18, 59), 17.69, 30.55, 0.0, 23.08, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:19:10.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:18:59
2025-09-28T13:19:10.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:19:10.932 [DEBUG] [Thread-125616] [transport.py] [_log()] starting thread (client mode): 0x2b985a20
2025-09-28T13:19:10.932 [DEBUG] [Thread-125616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:10.951 [DEBUG] [Thread-125616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:19:10.951 [INFO] [Thread-125616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:19:10.954 [DEBUG] [Thread-125616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] Compression: none
2025-09-28T13:19:10.955 [DEBUG] [Thread-125616] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:10.972 [DEBUG] [Thread-125616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:10.972 [DEBUG] [Thread-125616] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:10.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:19:10.973 [DEBUG] [Thread-125616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:19:10.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:10.975 [DEBUG] [Thread-125616] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:10.975 [DEBUG] [Thread-125616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:10.975 [DEBUG] [Thread-125616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:10.975 [DEBUG] [Thread-125616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:19:10.975 [DEBUG] [Thread-125616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:10.992 [INFO] [Thread-125616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:10.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:11.694 [DEBUG] [Thread-125618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:11.835 [DEBUG] [Thread-125616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:11.836 [DEBUG] [Thread-125616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:11.836 [DEBUG] [Thread-125616] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:19:11.876 [DEBUG] [Thread-125616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:11.877 [DEBUG] [Thread-125616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:11.879 [DEBUG] [Thread-125616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:11.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:11.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:19:11.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:19:11.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:19:11.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:11.901 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:19:11.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471264 -999.00  +19.30  16.24     35   +3.60 1 1 1 1 1   888    0 15.75 -28.61 ----- 14.4 16.2 253.6 24.0 25.6 -25.7 24.3 -25.6 24.8 -23.6 26.0 -25.9
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:19:11.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471264
2025-09-28T13:19:11.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:19:11.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:19:11.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:19:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:19:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:19:11.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:18:59', tmtdew=17.69, humidity=30.55, cloud=0.0, wind=23.08, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:18:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:19:11.904 [DEBUG] [Thread-125616] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:11.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-28T13:19:12.004 [DEBUG] [Thread-125620] [transport.py] [_log()] starting thread (client mode): 0x2b95cca0
2025-09-28T13:19:12.004 [DEBUG] [Thread-125620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:12.024 [DEBUG] [Thread-125620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:19:12.024 [INFO] [Thread-125620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:19:12.031 [DEBUG] [Thread-125620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:12.032 [DEBUG] [Thread-125620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:19:12.032 [DEBUG] [Thread-125620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:12.032 [DEBUG] [Thread-125620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:12.032 [DEBUG] [Thread-125620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:12.033 [DEBUG] [Thread-125620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:12.034 [DEBUG] [Thread-125620] [transport.py] [_log()] Compression: none
2025-09-28T13:19:12.034 [DEBUG] [Thread-125620] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:12.091 [DEBUG] [Thread-125620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:12.091 [DEBUG] [Thread-125620] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:12.092 [DEBUG] [Thread-125620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:19:12.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:19:12.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:12.151 [DEBUG] [Thread-125620] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:12.151 [DEBUG] [Thread-125620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:12.151 [DEBUG] [Thread-125620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:12.152 [DEBUG] [Thread-125620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:19:12.152 [DEBUG] [Thread-125620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:12.171 [INFO] [Thread-125620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:12.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:19:12.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:13.129 [DEBUG] [Thread-125620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:13.129 [DEBUG] [Thread-125620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:13.177 [DEBUG] [Thread-125620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:13.177 [DEBUG] [Thread-125620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:13.186 [DEBUG] [Thread-125620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:13.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:13.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')
2025-09-28T13:19:13.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-28T13:19:13.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:13.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:13.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:13.222 [DEBUG] [Thread-125620] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:16.732 [DEBUG] [Thread-125622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:23.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:19:23.224 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:19:23.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-28T13:19:23.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 18, 59), 17.69, 30.55, 0.0, 23.08, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:19:23.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:18:59
2025-09-28T13:19:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:19:24.043 [DEBUG] [Thread-125623] [transport.py] [_log()] starting thread (client mode): 0x2e3c3cd0
2025-09-28T13:19:24.043 [DEBUG] [Thread-125623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:24.055 [DEBUG] [Thread-125623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:19:24.055 [INFO] [Thread-125623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:24.057 [DEBUG] [Thread-125623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] Compression: none
2025-09-28T13:19:24.058 [DEBUG] [Thread-125623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:24.075 [DEBUG] [Thread-125623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:24.075 [DEBUG] [Thread-125623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:24.075 [DEBUG] [Thread-125623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:19:24.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:19:24.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:24.077 [DEBUG] [Thread-125623] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:24.077 [DEBUG] [Thread-125623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:24.077 [DEBUG] [Thread-125623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:24.077 [DEBUG] [Thread-125623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:19:24.077 [DEBUG] [Thread-125623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:24.101 [INFO] [Thread-125623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:24.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:24.725 [DEBUG] [Thread-125623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:24.725 [DEBUG] [Thread-125623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:24.725 [DEBUG] [Thread-125623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:19:24.766 [DEBUG] [Thread-125623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:24.766 [DEBUG] [Thread-125623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:24.769 [DEBUG] [Thread-125623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:24.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:24.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:19:24.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:19:24.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:19:24.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:24.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:19:24.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471612 -999.00  +19.70   9.58     34   +3.80 1 1 1 1 1   888    0 15.60 -26.73 ----- 23.7 9.6 240.3 19.3 25.5 -28.1 24.4 -26.0 24.9 -24.6 25.9 -28.6
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:19:24.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471612
2025-09-28T13:19:24.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:19:24.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:19:24.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:19:24.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:19:24.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:19:24.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:18:59', tmtdew=17.69, humidity=30.55, cloud=0.0, wind=23.08, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:19:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:19:24.794 [DEBUG] [Thread-125623] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:24.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:19:24.888 [DEBUG] [Thread-125626] [transport.py] [_log()] starting thread (client mode): 0x2e3f8940
2025-09-28T13:19:24.888 [DEBUG] [Thread-125626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:24.903 [DEBUG] [Thread-125626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:19:24.903 [INFO] [Thread-125626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:24.910 [DEBUG] [Thread-125626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] Compression: none
2025-09-28T13:19:24.911 [DEBUG] [Thread-125626] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:24.966 [DEBUG] [Thread-125626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:24.967 [DEBUG] [Thread-125626] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:24.967 [DEBUG] [Thread-125626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:19:24.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:19:24.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:25.023 [DEBUG] [Thread-125626] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:25.023 [DEBUG] [Thread-125626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:25.023 [DEBUG] [Thread-125626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:25.023 [DEBUG] [Thread-125626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:19:25.023 [DEBUG] [Thread-125626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:25.042 [INFO] [Thread-125626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:25.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:19:25.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:26.039 [DEBUG] [Thread-125626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:26.039 [DEBUG] [Thread-125626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:26.089 [DEBUG] [Thread-125626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:26.089 [DEBUG] [Thread-125626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:26.101 [DEBUG] [Thread-125626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:26.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:26.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')
2025-09-28T13:19:26.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') -> 00000000
2025-09-28T13:19:26.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:26.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:26.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:26.148 [DEBUG] [Thread-125626] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:31.774 [DEBUG] [Thread-125628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:36.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:19:36.148 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:19:36.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-28T13:19:36.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 19, 31), 17.84, 30.26, 0.0, 24.44, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:19:36.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:19:31
2025-09-28T13:19:36.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:19:36.987 [DEBUG] [Thread-125629] [transport.py] [_log()] starting thread (client mode): 0x2b95d6f0
2025-09-28T13:19:36.987 [DEBUG] [Thread-125629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:37.007 [DEBUG] [Thread-125629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:19:37.007 [INFO] [Thread-125629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:19:37.010 [DEBUG] [Thread-125629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:37.010 [DEBUG] [Thread-125629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:19:37.010 [DEBUG] [Thread-125629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:37.010 [DEBUG] [Thread-125629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] Compression: none
2025-09-28T13:19:37.011 [DEBUG] [Thread-125629] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:37.028 [DEBUG] [Thread-125629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:37.029 [DEBUG] [Thread-125629] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:37.029 [DEBUG] [Thread-125629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:19:37.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:19:37.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:37.073 [DEBUG] [Thread-125629] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:37.073 [DEBUG] [Thread-125629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:37.073 [DEBUG] [Thread-125629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:37.073 [DEBUG] [Thread-125629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:19:37.073 [DEBUG] [Thread-125629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:37.094 [INFO] [Thread-125629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:37.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:37.861 [DEBUG] [Thread-125629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:37.862 [DEBUG] [Thread-125629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:37.862 [DEBUG] [Thread-125629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:19:37.902 [DEBUG] [Thread-125629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:37.902 [DEBUG] [Thread-125629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:37.905 [DEBUG] [Thread-125629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:37.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:37.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:19:37.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:19:37.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:19:37.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:37.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:19:37.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:37.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:37.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:19:37.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471612 -999.00  +19.70   9.58     34   +3.80 1 1 1 1 1   888    0 15.60 -26.73 ----- 23.7 9.6 240.3 19.3 25.5 -28.1 24.4 -26.0 24.9 -24.6 25.9 -28.6
2025-09-28T13:19:37.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:19:37.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:19:37.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471612
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:19:37.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:19:31', tmtdew=17.84, humidity=30.26, cloud=0.0, wind=24.44, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:19:07.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:19:37.929 [DEBUG] [Thread-125629] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:38.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-28T13:19:38.027 [DEBUG] [Thread-125632] [transport.py] [_log()] starting thread (client mode): 0x2b95ee90
2025-09-28T13:19:38.027 [DEBUG] [Thread-125632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:38.042 [DEBUG] [Thread-125632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:19:38.042 [INFO] [Thread-125632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:38.051 [DEBUG] [Thread-125632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:38.052 [DEBUG] [Thread-125632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:38.053 [DEBUG] [Thread-125632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:38.053 [DEBUG] [Thread-125632] [transport.py] [_log()] Compression: none
2025-09-28T13:19:38.053 [DEBUG] [Thread-125632] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:38.112 [DEBUG] [Thread-125632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:38.112 [DEBUG] [Thread-125632] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:38.113 [DEBUG] [Thread-125632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:19:38.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:19:38.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:38.171 [DEBUG] [Thread-125632] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:38.172 [DEBUG] [Thread-125632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:38.172 [DEBUG] [Thread-125632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:38.172 [DEBUG] [Thread-125632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:19:38.172 [DEBUG] [Thread-125632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:38.192 [INFO] [Thread-125632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:38.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-28T13:19:38.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:39.122 [DEBUG] [Thread-125632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:39.122 [DEBUG] [Thread-125632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:39.170 [DEBUG] [Thread-125632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:39.170 [DEBUG] [Thread-125632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:39.178 [DEBUG] [Thread-125632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:39.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:39.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-28T13:19:39.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-28T13:19:39.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:39.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:39.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:39.211 [DEBUG] [Thread-125632] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:46.807 [DEBUG] [Thread-125634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:49.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:19:49.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:19:49.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-28T13:19:49.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 19, 31), 17.84, 30.26, 0.0, 24.44, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:19:49.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:19:31
2025-09-28T13:19:49.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:19:50.033 [DEBUG] [Thread-125635] [transport.py] [_log()] starting thread (client mode): 0x2e3c05b0
2025-09-28T13:19:50.033 [DEBUG] [Thread-125635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:50.053 [DEBUG] [Thread-125635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:19:50.053 [INFO] [Thread-125635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:19:50.057 [DEBUG] [Thread-125635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:50.057 [DEBUG] [Thread-125635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:19:50.057 [DEBUG] [Thread-125635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:50.057 [DEBUG] [Thread-125635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:50.057 [DEBUG] [Thread-125635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] Compression: none
2025-09-28T13:19:50.058 [DEBUG] [Thread-125635] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:50.075 [DEBUG] [Thread-125635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:50.076 [DEBUG] [Thread-125635] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:50.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:19:50.077 [DEBUG] [Thread-125635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:19:50.077 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:50.079 [DEBUG] [Thread-125635] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:50.079 [DEBUG] [Thread-125635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:50.080 [DEBUG] [Thread-125635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:50.080 [DEBUG] [Thread-125635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:19:50.080 [DEBUG] [Thread-125635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:50.103 [INFO] [Thread-125635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:50.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:50.719 [DEBUG] [Thread-125635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:50.719 [DEBUG] [Thread-125635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:50.719 [DEBUG] [Thread-125635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:19:50.760 [DEBUG] [Thread-125635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:50.760 [DEBUG] [Thread-125635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:50.763 [DEBUG] [Thread-125635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:50.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:50.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:19:50.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:19:50.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:19:50.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:50.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:19:50.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:50.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:50.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:19:50.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471959 -999.00  +19.10  23.88     34   +3.30 1 1 1 1 1   888    0 15.49 -27.49 ----- 19.4 23.9 254.8 32.3 25.4 -26.3 24.4 -24.9 24.8 -24.5 25.9 -26.8
2025-09-28T13:19:50.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:19:50.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:19:50.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471959
2025-09-28T13:19:50.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:19:50.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:19:50.788 [DEBUG] [Thread-125635] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:50.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:19:50.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:19:50.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:19:50.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:19:31', tmtdew=17.84, humidity=30.26, cloud=0.0, wind=24.44, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:19:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:19:50.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-28T13:19:50.874 [DEBUG] [Thread-125638] [transport.py] [_log()] starting thread (client mode): 0x2b9c2c50
2025-09-28T13:19:50.874 [DEBUG] [Thread-125638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:19:50.889 [DEBUG] [Thread-125638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:19:50.889 [INFO] [Thread-125638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:19:50.897 [DEBUG] [Thread-125638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:19:50.897 [DEBUG] [Thread-125638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:19:50.897 [DEBUG] [Thread-125638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] client lang: <none>
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] server lang: <none>
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] kex follows: False
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] Compression: none
2025-09-28T13:19:50.898 [DEBUG] [Thread-125638] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:19:50.954 [DEBUG] [Thread-125638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:19:50.954 [DEBUG] [Thread-125638] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:19:50.955 [DEBUG] [Thread-125638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:19:50.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:19:50.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:19:51.014 [DEBUG] [Thread-125638] [transport.py] [_log()] userauth is OK
2025-09-28T13:19:51.014 [DEBUG] [Thread-125638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:19:51.015 [DEBUG] [Thread-125638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:19:51.015 [DEBUG] [Thread-125638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:19:51.015 [DEBUG] [Thread-125638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:19:51.033 [INFO] [Thread-125638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:19:51.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-28T13:19:51.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:19:51.986 [DEBUG] [Thread-125638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:19:51.987 [DEBUG] [Thread-125638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:19:52.035 [DEBUG] [Thread-125638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:19:52.035 [DEBUG] [Thread-125638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:19:52.043 [DEBUG] [Thread-125638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:19:52.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:19:52.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:19:52.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-28T13:19:52.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:19:52.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:19:52.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:19:52.076 [DEBUG] [Thread-125638] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:19:53.558 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:19:53.560 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:01.852 [DEBUG] [Thread-125640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:02.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:20:02.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:20:02.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-28T13:20:02.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 19, 31), 17.84, 30.26, 0.0, 24.44, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:20:02.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:19:31
2025-09-28T13:20:02.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:20:02.913 [DEBUG] [Thread-125641] [transport.py] [_log()] starting thread (client mode): 0x2b9afcd0
2025-09-28T13:20:02.914 [DEBUG] [Thread-125641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:02.935 [DEBUG] [Thread-125641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:20:02.935 [INFO] [Thread-125641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:20:02.938 [DEBUG] [Thread-125641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:02.938 [DEBUG] [Thread-125641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:20:02.938 [DEBUG] [Thread-125641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:02.939 [DEBUG] [Thread-125641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:02.940 [DEBUG] [Thread-125641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:02.940 [DEBUG] [Thread-125641] [transport.py] [_log()] Compression: none
2025-09-28T13:20:02.940 [DEBUG] [Thread-125641] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:02.958 [DEBUG] [Thread-125641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:02.959 [DEBUG] [Thread-125641] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:02.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:20:02.960 [DEBUG] [Thread-125641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:20:02.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:02.962 [DEBUG] [Thread-125641] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:02.962 [DEBUG] [Thread-125641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:02.963 [DEBUG] [Thread-125641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:02.963 [DEBUG] [Thread-125641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:20:02.963 [DEBUG] [Thread-125641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:02.985 [INFO] [Thread-125641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:02.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:06.837 [DEBUG] [Thread-125641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:06.838 [DEBUG] [Thread-125641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:06.838 [DEBUG] [Thread-125641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:20:06.878 [DEBUG] [Thread-125641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:06.878 [DEBUG] [Thread-125641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:06.881 [DEBUG] [Thread-125641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:06.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:06.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:20:06.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:20:06.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:20:06.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:06.925 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:20:06.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:06.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:06.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:20:06.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471959 -999.00  +19.10  23.88     34   +3.30 1 1 1 1 1   888    0 15.49 -27.49 ----- 19.4 23.9 254.8 32.3 25.4 -26.3 24.4 -24.9 24.8 -24.5 25.9 -26.8
2025-09-28T13:20:06.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:20:06.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:20:06.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471959
2025-09-28T13:20:06.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:20:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:20:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:20:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:20:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:20:06.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:19:31', tmtdew=17.84, humidity=30.26, cloud=0.0, wind=24.44, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:19:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:20:06.928 [DEBUG] [Thread-125641] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:07.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-28T13:20:07.026 [DEBUG] [Thread-125644] [transport.py] [_log()] starting thread (client mode): 0x2b9c2260
2025-09-28T13:20:07.026 [DEBUG] [Thread-125644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:07.040 [DEBUG] [Thread-125644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:20:07.041 [INFO] [Thread-125644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:20:07.048 [DEBUG] [Thread-125644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:07.048 [DEBUG] [Thread-125644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:07.049 [DEBUG] [Thread-125644] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] Compression: none
2025-09-28T13:20:07.050 [DEBUG] [Thread-125644] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:07.107 [DEBUG] [Thread-125644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:07.107 [DEBUG] [Thread-125644] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:07.108 [DEBUG] [Thread-125644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:20:07.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:20:07.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:07.162 [DEBUG] [Thread-125644] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:07.162 [DEBUG] [Thread-125644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:07.163 [DEBUG] [Thread-125644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:07.163 [DEBUG] [Thread-125644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:20:07.163 [DEBUG] [Thread-125644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:07.182 [INFO] [Thread-125644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:07.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-28T13:20:07.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:08.179 [DEBUG] [Thread-125644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:08.179 [DEBUG] [Thread-125644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:08.227 [DEBUG] [Thread-125644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:08.227 [DEBUG] [Thread-125644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:08.236 [DEBUG] [Thread-125644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:08.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:08.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-28T13:20:08.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-28T13:20:08.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:08.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:08.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:08.271 [DEBUG] [Thread-125644] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:11.741 [DEBUG] [Thread-125646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:16.893 [DEBUG] [Thread-125647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:18.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:20:18.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:20:18.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-28T13:20:18.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 20, 2), 18.05, 29.89, 0.0, 25.11, 19.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:20:18.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:20:02
2025-09-28T13:20:18.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:20:19.128 [DEBUG] [Thread-125648] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c50
2025-09-28T13:20:19.128 [DEBUG] [Thread-125648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:19.148 [DEBUG] [Thread-125648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:20:19.148 [INFO] [Thread-125648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] Compression: none
2025-09-28T13:20:19.151 [DEBUG] [Thread-125648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:19.167 [DEBUG] [Thread-125648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:19.167 [DEBUG] [Thread-125648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:19.167 [DEBUG] [Thread-125648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:20:19.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:20:19.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:19.168 [DEBUG] [Thread-125648] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:19.168 [DEBUG] [Thread-125648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:19.168 [DEBUG] [Thread-125648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:19.168 [DEBUG] [Thread-125648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:20:19.168 [DEBUG] [Thread-125648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:19.177 [INFO] [Thread-125648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:19.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:21.528 [DEBUG] [Thread-125648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:21.528 [DEBUG] [Thread-125648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:21.528 [DEBUG] [Thread-125648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:20:21.569 [DEBUG] [Thread-125648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:21.569 [DEBUG] [Thread-125648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:21.572 [DEBUG] [Thread-125648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:21.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:21.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:20:21.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:20:21.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:20:21.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:21.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:20:21.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:21.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:20:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.471959 -999.00  +19.10  23.88     34   +3.30 1 1 1 1 1   888    0 15.49 -27.49 ----- 19.4 23.9 254.8 32.3 25.4 -26.3 24.4 -24.9 24.8 -24.5 25.9 -26.8
2025-09-28T13:20:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:20:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:20:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.471959
2025-09-28T13:20:21.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:20:21.646 [DEBUG] [Thread-125648] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:20:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:20:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:20:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:20:21.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:20:02', tmtdew=18.05, humidity=29.89, cloud=0.0, wind=25.11, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:19:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:20:21.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-28T13:20:21.750 [DEBUG] [Thread-125651] [transport.py] [_log()] starting thread (client mode): 0x2e3c3f10
2025-09-28T13:20:21.750 [DEBUG] [Thread-125651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:21.764 [DEBUG] [Thread-125651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:20:21.764 [INFO] [Thread-125651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:20:21.772 [DEBUG] [Thread-125651] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:21.772 [DEBUG] [Thread-125651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:20:21.772 [DEBUG] [Thread-125651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:21.772 [DEBUG] [Thread-125651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] Compression: none
2025-09-28T13:20:21.773 [DEBUG] [Thread-125651] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:21.830 [DEBUG] [Thread-125651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:21.830 [DEBUG] [Thread-125651] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:21.831 [DEBUG] [Thread-125651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:20:21.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:20:21.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:21.887 [DEBUG] [Thread-125651] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:21.887 [DEBUG] [Thread-125651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:21.887 [DEBUG] [Thread-125651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:21.887 [DEBUG] [Thread-125651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:20:21.887 [DEBUG] [Thread-125651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:21.906 [INFO] [Thread-125651] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:21.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-28T13:20:21.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:22.875 [DEBUG] [Thread-125651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:22.875 [DEBUG] [Thread-125651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:22.924 [DEBUG] [Thread-125651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:22.924 [DEBUG] [Thread-125651] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:22.933 [DEBUG] [Thread-125651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:22.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:22.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-28T13:20:22.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-28T13:20:22.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:22.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:22.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:22.968 [DEBUG] [Thread-125651] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:31.920 [DEBUG] [Thread-125653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:20:32.971 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:20:32.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-28T13:20:33.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 20, 2), 18.05, 29.89, 0.0, 25.11, 19.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:20:33.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:20:02
2025-09-28T13:20:33.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:20:33.797 [DEBUG] [Thread-125654] [transport.py] [_log()] starting thread (client mode): 0x2e3fa200
2025-09-28T13:20:33.797 [DEBUG] [Thread-125654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:33.819 [DEBUG] [Thread-125654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:20:33.819 [INFO] [Thread-125654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:20:33.823 [DEBUG] [Thread-125654] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:33.823 [DEBUG] [Thread-125654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:20:33.823 [DEBUG] [Thread-125654] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] Compression: none
2025-09-28T13:20:33.824 [DEBUG] [Thread-125654] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:33.841 [DEBUG] [Thread-125654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:33.842 [DEBUG] [Thread-125654] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:33.842 [DEBUG] [Thread-125654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:20:33.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:20:33.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:33.844 [DEBUG] [Thread-125654] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:33.844 [DEBUG] [Thread-125654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:33.844 [DEBUG] [Thread-125654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:33.844 [DEBUG] [Thread-125654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:20:33.844 [DEBUG] [Thread-125654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:33.860 [INFO] [Thread-125654] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:33.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:34.465 [DEBUG] [Thread-125654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:34.466 [DEBUG] [Thread-125654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:34.466 [DEBUG] [Thread-125654] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:20:34.506 [DEBUG] [Thread-125654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:34.506 [DEBUG] [Thread-125654] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:34.509 [DEBUG] [Thread-125654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:34.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:34.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:20:34.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:20:34.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:20:34.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:34.530 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:20:34.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:34.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.472306 -999.00  +19.20   6.13     34   +3.00 1 1 1 1 1   888    0 15.93 -28.83 ----- 11.4 6.1 222.6 24.7 25.4 -26.9 24.4 -25.7 24.7 -25.4 25.9 -26.4
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.472306
2025-09-28T13:20:34.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:20:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:20:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:20:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:20:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:20:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:20:02', tmtdew=18.05, humidity=29.89, cloud=0.0, wind=25.11, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:20:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:20:34.533 [DEBUG] [Thread-125654] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:34.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-28T13:20:34.627 [DEBUG] [Thread-125657] [transport.py] [_log()] starting thread (client mode): 0x2b9c80d0
2025-09-28T13:20:34.627 [DEBUG] [Thread-125657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:34.646 [DEBUG] [Thread-125657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:20:34.646 [INFO] [Thread-125657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:34.654 [DEBUG] [Thread-125657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:34.655 [DEBUG] [Thread-125657] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:34.655 [DEBUG] [Thread-125657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:34.655 [DEBUG] [Thread-125657] [transport.py] [_log()] Compression: none
2025-09-28T13:20:34.655 [DEBUG] [Thread-125657] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:34.713 [DEBUG] [Thread-125657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:34.713 [DEBUG] [Thread-125657] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:34.714 [DEBUG] [Thread-125657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:20:34.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:20:34.715 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:34.774 [DEBUG] [Thread-125657] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:34.774 [DEBUG] [Thread-125657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:34.774 [DEBUG] [Thread-125657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:34.774 [DEBUG] [Thread-125657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:20:34.774 [DEBUG] [Thread-125657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:34.793 [INFO] [Thread-125657] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:34.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-28T13:20:34.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:35.761 [DEBUG] [Thread-125657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:35.761 [DEBUG] [Thread-125657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:35.810 [DEBUG] [Thread-125657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:35.810 [DEBUG] [Thread-125657] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:35.818 [DEBUG] [Thread-125657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:35.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:35.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')
2025-09-28T13:20:35.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-28T13:20:35.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:35.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:35.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:35.851 [DEBUG] [Thread-125657] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:45.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:20:45.848 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:20:45.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:20:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 20, 34), 18.28, 29.41, 0.0, 17.01, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:20:46.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:20:34
2025-09-28T13:20:46.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:20:46.678 [DEBUG] [Thread-125659] [transport.py] [_log()] starting thread (client mode): 0x2b9ca5c0
2025-09-28T13:20:46.678 [DEBUG] [Thread-125659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:46.698 [DEBUG] [Thread-125659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:20:46.698 [INFO] [Thread-125659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:20:46.702 [DEBUG] [Thread-125659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:46.702 [DEBUG] [Thread-125659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:20:46.702 [DEBUG] [Thread-125659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] Compression: none
2025-09-28T13:20:46.703 [DEBUG] [Thread-125659] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:46.721 [DEBUG] [Thread-125659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:46.721 [DEBUG] [Thread-125659] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:46.722 [DEBUG] [Thread-125659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:20:46.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:20:46.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:46.724 [DEBUG] [Thread-125659] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:46.724 [DEBUG] [Thread-125659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:46.724 [DEBUG] [Thread-125659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:46.724 [DEBUG] [Thread-125659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:20:46.724 [DEBUG] [Thread-125659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:46.742 [INFO] [Thread-125659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:46.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:46.968 [DEBUG] [Thread-125661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:48.533 [DEBUG] [Thread-125659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:48.533 [DEBUG] [Thread-125659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:48.533 [DEBUG] [Thread-125659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:20:48.574 [DEBUG] [Thread-125659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:48.574 [DEBUG] [Thread-125659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:48.577 [DEBUG] [Thread-125659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:48.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:48.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:20:48.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:20:48.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:20:48.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:48.598 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:20:48.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:48.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.472306 -999.00  +19.20   6.13     34   +3.00 1 1 1 1 1   888    0 15.93 -28.83 ----- 11.4 6.1 222.6 24.7 25.4 -26.9 24.4 -25.7 24.7 -25.4 25.9 -26.4
2025-09-28T13:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:20:48.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.472306
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:20:48.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:20:34', tmtdew=18.28, humidity=29.41, cloud=0.0, wind=17.01, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:20:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:20:48.601 [DEBUG] [Thread-125659] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:48.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-28T13:20:48.696 [DEBUG] [Thread-125663] [transport.py] [_log()] starting thread (client mode): 0x2b984df0
2025-09-28T13:20:48.696 [DEBUG] [Thread-125663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:20:48.711 [DEBUG] [Thread-125663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:20:48.711 [INFO] [Thread-125663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:20:48.718 [DEBUG] [Thread-125663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] client lang: <none>
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] server lang: <none>
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] kex follows: False
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] Compression: none
2025-09-28T13:20:48.719 [DEBUG] [Thread-125663] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:20:48.776 [DEBUG] [Thread-125663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:20:48.776 [DEBUG] [Thread-125663] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:20:48.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:20:48.776 [DEBUG] [Thread-125663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:20:48.776 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:20:48.834 [DEBUG] [Thread-125663] [transport.py] [_log()] userauth is OK
2025-09-28T13:20:48.834 [DEBUG] [Thread-125663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:20:48.834 [DEBUG] [Thread-125663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:20:48.834 [DEBUG] [Thread-125663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:20:48.834 [DEBUG] [Thread-125663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:20:48.858 [INFO] [Thread-125663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:20:48.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:20:48.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:20:49.859 [DEBUG] [Thread-125663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:20:49.859 [DEBUG] [Thread-125663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:20:49.907 [DEBUG] [Thread-125663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:20:49.907 [DEBUG] [Thread-125663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:20:49.916 [DEBUG] [Thread-125663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:20:49.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:20:49.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-28T13:20:49.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-28T13:20:49.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:20:49.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:20:49.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:20:49.950 [DEBUG] [Thread-125663] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:20:53.701 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:53.701 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:20:59.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:20:59.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:20:59.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-28T13:21:00.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 20, 34), 18.28, 29.41, 0.0, 17.01, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:21:00.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:20:34
2025-09-28T13:21:00.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:21:00.779 [DEBUG] [Thread-125665] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e60
2025-09-28T13:21:00.779 [DEBUG] [Thread-125665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:00.800 [DEBUG] [Thread-125665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:21:00.800 [INFO] [Thread-125665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:21:00.803 [DEBUG] [Thread-125665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:00.803 [DEBUG] [Thread-125665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:21:00.803 [DEBUG] [Thread-125665] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:00.803 [DEBUG] [Thread-125665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:00.803 [DEBUG] [Thread-125665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] Compression: none
2025-09-28T13:21:00.804 [DEBUG] [Thread-125665] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:00.821 [DEBUG] [Thread-125665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:00.821 [DEBUG] [Thread-125665] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:00.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:21:00.822 [DEBUG] [Thread-125665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:21:00.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:00.824 [DEBUG] [Thread-125665] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:00.824 [DEBUG] [Thread-125665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:00.824 [DEBUG] [Thread-125665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:00.825 [DEBUG] [Thread-125665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:21:00.825 [DEBUG] [Thread-125665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:00.848 [INFO] [Thread-125665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:00.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:01.463 [DEBUG] [Thread-125665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:01.464 [DEBUG] [Thread-125665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:01.464 [DEBUG] [Thread-125665] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:21:01.504 [DEBUG] [Thread-125665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:01.504 [DEBUG] [Thread-125665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:01.514 [DEBUG] [Thread-125665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:01.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:01.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:21:01.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:21:01.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:21:01.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:01.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:21:01.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:01.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:21:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.472653 -999.00  +19.10   5.98     34   +3.20 1 1 1 1 1   888    0 15.57 -28.32 ----- 5.8 6.0 208.6 19.3 25.6 -25.8 24.4 -25.0 24.8 -24.2 26.0 -25.7
2025-09-28T13:21:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:21:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:21:01.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.472653
2025-09-28T13:21:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:21:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:21:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:21:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:21:01.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:21:01.537 [DEBUG] [Thread-125665] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:01.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:20:34', tmtdew=18.28, humidity=29.41, cloud=0.0, wind=17.01, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:20:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:21:01.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-28T13:21:01.632 [DEBUG] [Thread-125668] [transport.py] [_log()] starting thread (client mode): 0x2e3fbf70
2025-09-28T13:21:01.632 [DEBUG] [Thread-125668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:01.651 [DEBUG] [Thread-125668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:21:01.651 [INFO] [Thread-125668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:01.662 [DEBUG] [Thread-125668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] Compression: none
2025-09-28T13:21:01.663 [DEBUG] [Thread-125668] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:01.721 [DEBUG] [Thread-125668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:01.722 [DEBUG] [Thread-125668] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:01.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:21:01.722 [DEBUG] [Thread-125668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:21:01.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:01.777 [DEBUG] [Thread-125668] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:01.777 [DEBUG] [Thread-125668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:01.777 [DEBUG] [Thread-125668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:01.777 [DEBUG] [Thread-125668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:21:01.777 [DEBUG] [Thread-125668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:01.795 [INFO] [Thread-125668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:01.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-28T13:21:01.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:02.016 [DEBUG] [Thread-125670 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:02.815 [DEBUG] [Thread-125668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:02.815 [DEBUG] [Thread-125668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:02.863 [DEBUG] [Thread-125668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:02.863 [DEBUG] [Thread-125668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:02.872 [DEBUG] [Thread-125668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:02.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:02.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-28T13:21:02.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-28T13:21:02.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:02.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:02.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:02.908 [DEBUG] [Thread-125668] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:11.792 [DEBUG] [Thread-125671 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:12.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:21:12.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:21:12.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-28T13:21:13.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 21, 6), 18.36, 29.25, 0.0, 15.1, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:21:13.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:21:06
2025-09-28T13:21:13.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:21:13.746 [DEBUG] [Thread-125672] [transport.py] [_log()] starting thread (client mode): 0x2b9883a0
2025-09-28T13:21:13.746 [DEBUG] [Thread-125672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:13.766 [DEBUG] [Thread-125672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:21:13.766 [INFO] [Thread-125672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] Compression: none
2025-09-28T13:21:13.769 [DEBUG] [Thread-125672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:13.785 [DEBUG] [Thread-125672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:13.785 [DEBUG] [Thread-125672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:13.786 [DEBUG] [Thread-125672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:21:13.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:21:13.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:13.788 [DEBUG] [Thread-125672] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:13.788 [DEBUG] [Thread-125672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:13.788 [DEBUG] [Thread-125672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:13.788 [DEBUG] [Thread-125672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:21:13.788 [DEBUG] [Thread-125672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:13.824 [INFO] [Thread-125672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:13.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:14.549 [DEBUG] [Thread-125672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:14.549 [DEBUG] [Thread-125672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:14.549 [DEBUG] [Thread-125672] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:21:14.589 [DEBUG] [Thread-125672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:14.590 [DEBUG] [Thread-125672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:14.593 [DEBUG] [Thread-125672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:14.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:14.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:21:14.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:21:14.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:21:14.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:14.616 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:21:14.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:14.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:14.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:21:14.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.472653 -999.00  +19.10   5.98     34   +3.20 1 1 1 1 1   888    0 15.57 -28.32 ----- 5.8 6.0 208.6 19.3 25.6 -25.8 24.4 -25.0 24.8 -24.2 26.0 -25.7
2025-09-28T13:21:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:21:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:21:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.472653
2025-09-28T13:21:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:21:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:21:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:21:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:21:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:21:14.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:21:06', tmtdew=18.36, humidity=29.25, cloud=0.0, wind=15.1, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:20:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:21:14.620 [DEBUG] [Thread-125672] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:14.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-28T13:21:14.716 [DEBUG] [Thread-125675] [transport.py] [_log()] starting thread (client mode): 0x2e38fc40
2025-09-28T13:21:14.716 [DEBUG] [Thread-125675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:14.731 [DEBUG] [Thread-125675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:21:14.731 [INFO] [Thread-125675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:14.739 [DEBUG] [Thread-125675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:14.740 [DEBUG] [Thread-125675] [transport.py] [_log()] Compression: none
2025-09-28T13:21:14.741 [DEBUG] [Thread-125675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:14.797 [DEBUG] [Thread-125675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:14.797 [DEBUG] [Thread-125675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:14.798 [DEBUG] [Thread-125675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:21:14.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:21:14.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:14.853 [DEBUG] [Thread-125675] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:14.853 [DEBUG] [Thread-125675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:14.854 [DEBUG] [Thread-125675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:14.854 [DEBUG] [Thread-125675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:21:14.854 [DEBUG] [Thread-125675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:14.872 [INFO] [Thread-125675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:14.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-28T13:21:14.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:15.797 [DEBUG] [Thread-125675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:15.797 [DEBUG] [Thread-125675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:15.845 [DEBUG] [Thread-125675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:15.845 [DEBUG] [Thread-125675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:15.854 [DEBUG] [Thread-125675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:15.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:15.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-28T13:21:15.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-28T13:21:15.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:15.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:15.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:15.890 [DEBUG] [Thread-125675] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:17.048 [DEBUG] [Thread-125677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:25.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:21:25.892 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:21:25.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-28T13:21:26.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 21, 6), 18.36, 29.25, 0.0, 15.1, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:21:26.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:21:06
2025-09-28T13:21:26.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:21:26.725 [DEBUG] [Thread-125678] [transport.py] [_log()] starting thread (client mode): 0x2e3f9630
2025-09-28T13:21:26.725 [DEBUG] [Thread-125678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:26.745 [DEBUG] [Thread-125678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:21:26.745 [INFO] [Thread-125678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] Compression: none
2025-09-28T13:21:26.749 [DEBUG] [Thread-125678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:26.765 [DEBUG] [Thread-125678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:26.766 [DEBUG] [Thread-125678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:26.766 [DEBUG] [Thread-125678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:21:26.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:21:26.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:26.768 [DEBUG] [Thread-125678] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:26.768 [DEBUG] [Thread-125678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:26.769 [DEBUG] [Thread-125678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:26.769 [DEBUG] [Thread-125678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:21:26.769 [DEBUG] [Thread-125678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:26.792 [INFO] [Thread-125678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:26.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:27.537 [DEBUG] [Thread-125678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:27.537 [DEBUG] [Thread-125678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:27.537 [DEBUG] [Thread-125678] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:21:27.578 [DEBUG] [Thread-125678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:27.578 [DEBUG] [Thread-125678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:27.580 [DEBUG] [Thread-125678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:27.589 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:27.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:21:27.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:21:27.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:21:27.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:27.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:21:27.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:27.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:27.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:21:27.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.472653 -999.00  +19.10   5.98     34   +3.20 1 1 1 1 1   888    0 15.57 -28.32 ----- 5.8 6.0 208.6 19.3 25.6 -25.8 24.4 -25.0 24.8 -24.2 26.0 -25.7
2025-09-28T13:21:27.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:21:27.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:21:27.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.472653
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:21:27.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:21:06', tmtdew=18.36, humidity=29.25, cloud=0.0, wind=15.1, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:20:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:21:27.602 [DEBUG] [Thread-125678] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:27.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:21:27.695 [DEBUG] [Thread-125681] [transport.py] [_log()] starting thread (client mode): 0x2b985a20
2025-09-28T13:21:27.695 [DEBUG] [Thread-125681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:27.711 [DEBUG] [Thread-125681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:21:27.711 [INFO] [Thread-125681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:27.718 [DEBUG] [Thread-125681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] Compression: none
2025-09-28T13:21:27.719 [DEBUG] [Thread-125681] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:27.780 [DEBUG] [Thread-125681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:27.781 [DEBUG] [Thread-125681] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:27.781 [DEBUG] [Thread-125681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:21:27.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:21:27.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:27.837 [DEBUG] [Thread-125681] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:27.837 [DEBUG] [Thread-125681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:27.838 [DEBUG] [Thread-125681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:27.838 [DEBUG] [Thread-125681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:21:27.838 [DEBUG] [Thread-125681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:27.857 [INFO] [Thread-125681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:27.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-28T13:21:27.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:28.919 [DEBUG] [Thread-125681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:28.919 [DEBUG] [Thread-125681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:28.967 [DEBUG] [Thread-125681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:28.967 [DEBUG] [Thread-125681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:28.976 [DEBUG] [Thread-125681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:28.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:28.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-28T13:21:28.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-28T13:21:29.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:29.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:29.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:29.011 [DEBUG] [Thread-125681] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:32.081 [DEBUG] [Thread-125683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:39.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:21:39.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:21:39.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-28T13:21:39.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 21, 6), 18.36, 29.25, 0.0, 15.1, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:21:39.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:21:06
2025-09-28T13:21:39.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:21:39.889 [DEBUG] [Thread-125684] [transport.py] [_log()] starting thread (client mode): 0x2b92abf0
2025-09-28T13:21:39.889 [DEBUG] [Thread-125684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:39.909 [DEBUG] [Thread-125684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:21:39.909 [INFO] [Thread-125684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] Compression: none
2025-09-28T13:21:39.911 [DEBUG] [Thread-125684] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:39.919 [DEBUG] [Thread-125684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:39.919 [DEBUG] [Thread-125684] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:39.919 [DEBUG] [Thread-125684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:21:39.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:21:39.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:39.920 [DEBUG] [Thread-125684] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:39.920 [DEBUG] [Thread-125684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:39.920 [DEBUG] [Thread-125684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:39.920 [DEBUG] [Thread-125684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:21:39.920 [DEBUG] [Thread-125684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:39.932 [INFO] [Thread-125684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:39.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:40.500 [DEBUG] [Thread-125684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:40.500 [DEBUG] [Thread-125684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:40.500 [DEBUG] [Thread-125684] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:21:40.541 [DEBUG] [Thread-125684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:40.541 [DEBUG] [Thread-125684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:40.544 [DEBUG] [Thread-125684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:40.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:40.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:21:40.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:21:40.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:21:40.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:40.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:21:40.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473000 -999.00  +19.20  13.26     34   +3.20 1 1 1 1 1   888    0 15.49 -28.26 ----- 12.5 13.3 241.0 16.2 25.4 -26.9 24.5 -25.1 24.9 -24.9 26.0 -26.8
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473000
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:21:40.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:21:40.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:21:06', tmtdew=18.36, humidity=29.25, cloud=0.0, wind=15.1, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:21:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:21:40.569 [DEBUG] [Thread-125684] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:40.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:21:40.655 [DEBUG] [Thread-125687] [transport.py] [_log()] starting thread (client mode): 0x2b984be0
2025-09-28T13:21:40.655 [DEBUG] [Thread-125687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:40.670 [DEBUG] [Thread-125687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:21:40.670 [INFO] [Thread-125687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:40.677 [DEBUG] [Thread-125687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] Compression: none
2025-09-28T13:21:40.678 [DEBUG] [Thread-125687] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:40.735 [DEBUG] [Thread-125687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:40.735 [DEBUG] [Thread-125687] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:40.735 [DEBUG] [Thread-125687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:21:40.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:21:40.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:40.792 [DEBUG] [Thread-125687] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:40.792 [DEBUG] [Thread-125687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:40.792 [DEBUG] [Thread-125687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:40.792 [DEBUG] [Thread-125687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:21:40.792 [DEBUG] [Thread-125687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:40.806 [INFO] [Thread-125687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:40.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-28T13:21:40.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:41.760 [DEBUG] [Thread-125687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:41.760 [DEBUG] [Thread-125687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:41.807 [DEBUG] [Thread-125687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:41.807 [DEBUG] [Thread-125687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:41.816 [DEBUG] [Thread-125687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:41.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:41.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-28T13:21:41.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T13:21:41.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:41.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:41.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:41.851 [DEBUG] [Thread-125687] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:47.111 [DEBUG] [Thread-125689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:51.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:21:51.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:21:51.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:21:52.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 21, 38), 18.43, 29.23, 0.0, 12.85, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:21:52.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:21:38
2025-09-28T13:21:52.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:21:52.664 [DEBUG] [Thread-125690] [transport.py] [_log()] starting thread (client mode): 0x2b92a920
2025-09-28T13:21:52.664 [DEBUG] [Thread-125690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:52.683 [DEBUG] [Thread-125690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:21:52.684 [INFO] [Thread-125690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:52.687 [DEBUG] [Thread-125690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] Compression: none
2025-09-28T13:21:52.688 [DEBUG] [Thread-125690] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:52.704 [DEBUG] [Thread-125690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:52.704 [DEBUG] [Thread-125690] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:52.704 [DEBUG] [Thread-125690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:21:52.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:21:52.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:52.706 [DEBUG] [Thread-125690] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:52.706 [DEBUG] [Thread-125690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:52.706 [DEBUG] [Thread-125690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:52.706 [DEBUG] [Thread-125690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:21:52.707 [DEBUG] [Thread-125690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:52.720 [INFO] [Thread-125690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:52.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:53.428 [DEBUG] [Thread-125690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:53.428 [DEBUG] [Thread-125690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:53.428 [DEBUG] [Thread-125690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:21:53.469 [DEBUG] [Thread-125690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:53.469 [DEBUG] [Thread-125690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:53.472 [DEBUG] [Thread-125690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:53.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:53.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:21:53.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:21:53.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:21:53.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:53.494 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:21:53.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:53.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:53.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:21:53.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473000 -999.00  +19.20  13.26     34   +3.20 1 1 1 1 1   888    0 15.49 -28.26 ----- 12.5 13.3 241.0 16.2 25.4 -26.9 24.5 -25.1 24.9 -24.9 26.0 -26.8
2025-09-28T13:21:53.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:21:53.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:21:53.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473000
2025-09-28T13:21:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:21:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:21:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:21:53.496 [DEBUG] [Thread-125690] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:21:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:21:53.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:21:53.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:21:38', tmtdew=18.43, humidity=29.23, cloud=0.0, wind=12.85, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:21:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:21:53.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-28T13:21:53.593 [DEBUG] [Thread-125693] [transport.py] [_log()] starting thread (client mode): 0x2b9c98a0
2025-09-28T13:21:53.594 [DEBUG] [Thread-125693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:21:53.608 [DEBUG] [Thread-125693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:21:53.608 [INFO] [Thread-125693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:21:53.616 [DEBUG] [Thread-125693] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:21:53.616 [DEBUG] [Thread-125693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:21:53.616 [DEBUG] [Thread-125693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] client lang: <none>
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] server lang: <none>
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] kex follows: False
2025-09-28T13:21:53.617 [DEBUG] [Thread-125693] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] Compression: none
2025-09-28T13:21:53.618 [DEBUG] [Thread-125693] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:21:53.677 [DEBUG] [Thread-125693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:21:53.678 [DEBUG] [Thread-125693] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:21:53.678 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:21:53.678 [DEBUG] [Thread-125693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:21:53.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:21:53.738 [DEBUG] [Thread-125693] [transport.py] [_log()] userauth is OK
2025-09-28T13:21:53.738 [DEBUG] [Thread-125693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:21:53.738 [DEBUG] [Thread-125693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:21:53.739 [DEBUG] [Thread-125693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:21:53.739 [DEBUG] [Thread-125693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:21:53.758 [INFO] [Thread-125693] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:21:53.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-28T13:21:53.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:21:53.852 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:53.853 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:21:54.727 [DEBUG] [Thread-125693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:21:54.727 [DEBUG] [Thread-125693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:21:54.779 [DEBUG] [Thread-125693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:21:54.779 [DEBUG] [Thread-125693] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:21:54.790 [DEBUG] [Thread-125693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:21:54.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:21:54.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-28T13:21:54.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-28T13:21:54.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:21:54.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:21:54.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:21:54.824 [DEBUG] [Thread-125693] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:02.154 [DEBUG] [Thread-125695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:04.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:22:04.826 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:22:04.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-28T13:22:05.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 21, 38), 18.43, 29.23, 0.0, 12.85, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:22:05.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:21:38
2025-09-28T13:22:05.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:22:05.645 [DEBUG] [Thread-125696] [transport.py] [_log()] starting thread (client mode): 0x2b95f880
2025-09-28T13:22:05.645 [DEBUG] [Thread-125696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:05.666 [DEBUG] [Thread-125696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:22:05.666 [INFO] [Thread-125696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:05.669 [DEBUG] [Thread-125696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] Compression: none
2025-09-28T13:22:05.670 [DEBUG] [Thread-125696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:05.688 [DEBUG] [Thread-125696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:05.688 [DEBUG] [Thread-125696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:05.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:22:05.689 [DEBUG] [Thread-125696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:22:05.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:05.691 [DEBUG] [Thread-125696] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:05.691 [DEBUG] [Thread-125696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:05.691 [DEBUG] [Thread-125696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:05.691 [DEBUG] [Thread-125696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:22:05.691 [DEBUG] [Thread-125696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:05.715 [INFO] [Thread-125696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:05.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:06.348 [DEBUG] [Thread-125696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:06.348 [DEBUG] [Thread-125696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:06.348 [DEBUG] [Thread-125696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:22:06.389 [DEBUG] [Thread-125696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:06.389 [DEBUG] [Thread-125696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:06.390 [DEBUG] [Thread-125696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:06.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:06.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:22:06.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:22:06.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:22:06.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:06.400 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:22:06.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473348 -999.00  +19.00  10.25     35   +3.30 1 1 1 1 1   888    0 15.37 -31.10 ----- 16.2 10.2 256.7 15.2 25.5 -26.2 24.5 -25.1 24.9 -24.0 26.0 -26.5
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473348
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:22:06.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:21:38', tmtdew=18.43, humidity=29.23, cloud=0.0, wind=12.85, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:21:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:22:06.401 [DEBUG] [Thread-125696] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:06.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-28T13:22:06.485 [DEBUG] [Thread-125699] [transport.py] [_log()] starting thread (client mode): 0x2e38c7f0
2025-09-28T13:22:06.485 [DEBUG] [Thread-125699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:06.499 [DEBUG] [Thread-125699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:22:06.500 [INFO] [Thread-125699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] Compression: none
2025-09-28T13:22:06.507 [DEBUG] [Thread-125699] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:06.562 [DEBUG] [Thread-125699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:06.562 [DEBUG] [Thread-125699] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:06.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:22:06.562 [DEBUG] [Thread-125699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:22:06.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:06.620 [DEBUG] [Thread-125699] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:06.620 [DEBUG] [Thread-125699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:06.620 [DEBUG] [Thread-125699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:06.620 [DEBUG] [Thread-125699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:22:06.620 [DEBUG] [Thread-125699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:06.633 [INFO] [Thread-125699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:06.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-28T13:22:06.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:07.606 [DEBUG] [Thread-125699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:07.606 [DEBUG] [Thread-125699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:07.655 [DEBUG] [Thread-125699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:07.655 [DEBUG] [Thread-125699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:07.663 [DEBUG] [Thread-125699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:07.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:07.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-28T13:22:07.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-28T13:22:07.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:07.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:07.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:07.695 [DEBUG] [Thread-125699] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:11.841 [DEBUG] [Thread-125701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:17.196 [DEBUG] [Thread-125702 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:17.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:22:17.697 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:22:17.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-28T13:22:18.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 22, 10), 18.21, 29.64, 0.0, 14.49, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:22:18.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:22:10
2025-09-28T13:22:18.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:22:18.532 [DEBUG] [Thread-125703] [transport.py] [_log()] starting thread (client mode): 0x2b9dd060
2025-09-28T13:22:18.532 [DEBUG] [Thread-125703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:18.552 [DEBUG] [Thread-125703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:22:18.552 [INFO] [Thread-125703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:18.555 [DEBUG] [Thread-125703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] Compression: none
2025-09-28T13:22:18.556 [DEBUG] [Thread-125703] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:18.572 [DEBUG] [Thread-125703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:18.572 [DEBUG] [Thread-125703] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:18.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:22:18.573 [DEBUG] [Thread-125703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:22:18.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:18.575 [DEBUG] [Thread-125703] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:18.575 [DEBUG] [Thread-125703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:18.575 [DEBUG] [Thread-125703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:18.575 [DEBUG] [Thread-125703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:22:18.575 [DEBUG] [Thread-125703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:18.593 [INFO] [Thread-125703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:18.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:19.385 [DEBUG] [Thread-125703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:19.385 [DEBUG] [Thread-125703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:19.385 [DEBUG] [Thread-125703] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:22:19.427 [DEBUG] [Thread-125703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:19.427 [DEBUG] [Thread-125703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:19.430 [DEBUG] [Thread-125703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:19.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:19.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:22:19.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:22:19.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:22:19.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:19.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:22:19.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:19.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473348 -999.00  +19.00  10.25     35   +3.30 1 1 1 1 1   888    0 15.37 -31.10 ----- 16.2 10.2 256.7 15.2 25.5 -26.2 24.5 -25.1 24.9 -24.0 26.0 -26.5
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473348
2025-09-28T13:22:19.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:22:19.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:22:19.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:22:19.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:22:19.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:22:19.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:22:10', tmtdew=18.21, humidity=29.64, cloud=0.0, wind=14.49, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:21:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:22:19.448 [DEBUG] [Thread-125703] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:19.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-28T13:22:19.539 [DEBUG] [Thread-125706] [transport.py] [_log()] starting thread (client mode): 0x2e3491b0
2025-09-28T13:22:19.539 [DEBUG] [Thread-125706] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:19.553 [DEBUG] [Thread-125706] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:22:19.553 [INFO] [Thread-125706] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:19.561 [DEBUG] [Thread-125706] [transport.py] [_log()] Compression: none
2025-09-28T13:22:19.562 [DEBUG] [Thread-125706] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:19.620 [DEBUG] [Thread-125706] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:19.620 [DEBUG] [Thread-125706] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:19.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:22:19.621 [DEBUG] [Thread-125706] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:22:19.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:19.676 [DEBUG] [Thread-125706] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:19.676 [DEBUG] [Thread-125706] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:19.676 [DEBUG] [Thread-125706] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:19.676 [DEBUG] [Thread-125706] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:22:19.677 [DEBUG] [Thread-125706] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:19.696 [INFO] [Thread-125706] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:19.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-28T13:22:19.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:20.662 [DEBUG] [Thread-125706] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:20.662 [DEBUG] [Thread-125706] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:20.710 [DEBUG] [Thread-125706] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:20.710 [DEBUG] [Thread-125706] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:20.719 [DEBUG] [Thread-125706] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:20.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:20.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-28T13:22:20.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-28T13:22:20.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:20.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:20.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:20.753 [DEBUG] [Thread-125706] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:30.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:22:30.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:22:30.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-28T13:22:31.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 22, 10), 18.21, 29.64, 0.0, 14.49, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:22:31.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:22:10
2025-09-28T13:22:31.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:22:31.574 [DEBUG] [Thread-125708] [transport.py] [_log()] starting thread (client mode): 0x2b9ddff0
2025-09-28T13:22:31.574 [DEBUG] [Thread-125708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:31.595 [DEBUG] [Thread-125708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:22:31.596 [INFO] [Thread-125708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:31.599 [DEBUG] [Thread-125708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] Compression: none
2025-09-28T13:22:31.600 [DEBUG] [Thread-125708] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:31.618 [DEBUG] [Thread-125708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:31.619 [DEBUG] [Thread-125708] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:31.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:22:31.621 [DEBUG] [Thread-125708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:22:31.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:31.623 [DEBUG] [Thread-125708] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:31.623 [DEBUG] [Thread-125708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:31.623 [DEBUG] [Thread-125708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:31.623 [DEBUG] [Thread-125708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:22:31.623 [DEBUG] [Thread-125708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:31.659 [INFO] [Thread-125708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:31.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:32.242 [DEBUG] [Thread-125710 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:32.422 [DEBUG] [Thread-125708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:32.423 [DEBUG] [Thread-125708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:32.423 [DEBUG] [Thread-125708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:22:32.464 [DEBUG] [Thread-125708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:32.464 [DEBUG] [Thread-125708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:32.466 [DEBUG] [Thread-125708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:32.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:32.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:22:32.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:22:32.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:22:32.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:32.487 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:22:32.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:32.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473348 -999.00  +19.00  10.25     35   +3.30 1 1 1 1 1   888    0 15.37 -31.10 ----- 16.2 10.2 256.7 15.2 25.5 -26.2 24.5 -25.1 24.9 -24.0 26.0 -26.5
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473348
2025-09-28T13:22:32.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:22:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:22:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:22:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:22:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:22:32.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:22:10', tmtdew=18.21, humidity=29.64, cloud=0.0, wind=14.49, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:21:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:22:32.489 [DEBUG] [Thread-125708] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:32.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-28T13:22:32.585 [DEBUG] [Thread-125712] [transport.py] [_log()] starting thread (client mode): 0x2b9dd0c0
2025-09-28T13:22:32.585 [DEBUG] [Thread-125712] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:32.599 [DEBUG] [Thread-125712] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:22:32.600 [INFO] [Thread-125712] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:32.607 [DEBUG] [Thread-125712] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:32.608 [DEBUG] [Thread-125712] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:32.608 [DEBUG] [Thread-125712] [transport.py] [_log()] Compression: none
2025-09-28T13:22:32.608 [DEBUG] [Thread-125712] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:32.662 [DEBUG] [Thread-125712] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:32.662 [DEBUG] [Thread-125712] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:32.663 [DEBUG] [Thread-125712] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:22:32.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:22:32.663 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:32.720 [DEBUG] [Thread-125712] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:32.720 [DEBUG] [Thread-125712] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:32.720 [DEBUG] [Thread-125712] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:32.720 [DEBUG] [Thread-125712] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:22:32.720 [DEBUG] [Thread-125712] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:32.739 [INFO] [Thread-125712] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:32.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-28T13:22:32.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:33.682 [DEBUG] [Thread-125712] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:33.682 [DEBUG] [Thread-125712] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:33.730 [DEBUG] [Thread-125712] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:33.730 [DEBUG] [Thread-125712] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:33.739 [DEBUG] [Thread-125712] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:33.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:33.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-28T13:22:33.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') -> 00000000
2025-09-28T13:22:33.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:33.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:33.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:33.775 [DEBUG] [Thread-125712] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:43.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:22:43.777 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:22:43.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:22:44.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 22, 10), 18.21, 29.64, 0.0, 14.49, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:22:44.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:22:10
2025-09-28T13:22:44.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:22:44.674 [DEBUG] [Thread-125714] [transport.py] [_log()] starting thread (client mode): 0x2b929240
2025-09-28T13:22:44.674 [DEBUG] [Thread-125714] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:44.693 [DEBUG] [Thread-125714] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:22:44.694 [INFO] [Thread-125714] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:22:44.696 [DEBUG] [Thread-125714] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] Compression: none
2025-09-28T13:22:44.697 [DEBUG] [Thread-125714] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:44.712 [DEBUG] [Thread-125714] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:44.713 [DEBUG] [Thread-125714] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:44.713 [DEBUG] [Thread-125714] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:22:44.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:22:44.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:44.714 [DEBUG] [Thread-125714] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:44.714 [DEBUG] [Thread-125714] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:44.714 [DEBUG] [Thread-125714] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:44.714 [DEBUG] [Thread-125714] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:22:44.714 [DEBUG] [Thread-125714] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:44.724 [INFO] [Thread-125714] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:44.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:45.375 [DEBUG] [Thread-125714] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:45.375 [DEBUG] [Thread-125714] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:45.376 [DEBUG] [Thread-125714] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:22:45.416 [DEBUG] [Thread-125714] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:45.416 [DEBUG] [Thread-125714] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:45.418 [DEBUG] [Thread-125714] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:45.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:45.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:22:45.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:22:45.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:22:45.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:45.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:22:45.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473695 -999.00  +19.10  17.38     35   +3.40 1 1 1 1 1   888    0 14.96 -35.45 ----- 12.4 17.4 222.1 20.7 25.5 -26.8 24.5 -24.9 24.9 -24.5 26.1 -26.9
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473695
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:22:45.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:22:10', tmtdew=18.21, humidity=29.64, cloud=0.0, wind=14.49, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:22:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:22:45.436 [DEBUG] [Thread-125714] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:45.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-28T13:22:45.530 [DEBUG] [Thread-125717] [transport.py] [_log()] starting thread (client mode): 0x2e3f9630
2025-09-28T13:22:45.530 [DEBUG] [Thread-125717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:45.545 [DEBUG] [Thread-125717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:22:45.545 [INFO] [Thread-125717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] Compression: none
2025-09-28T13:22:45.556 [DEBUG] [Thread-125717] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:45.610 [DEBUG] [Thread-125717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:45.610 [DEBUG] [Thread-125717] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:45.610 [DEBUG] [Thread-125717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:22:45.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:22:45.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:45.668 [DEBUG] [Thread-125717] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:45.668 [DEBUG] [Thread-125717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:45.668 [DEBUG] [Thread-125717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:45.668 [DEBUG] [Thread-125717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:22:45.668 [DEBUG] [Thread-125717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:45.682 [INFO] [Thread-125717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:45.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:22:45.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:46.650 [DEBUG] [Thread-125717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:46.651 [DEBUG] [Thread-125717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:46.699 [DEBUG] [Thread-125717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:46.699 [DEBUG] [Thread-125717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:46.707 [DEBUG] [Thread-125717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:46.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:46.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-28T13:22:46.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-28T13:22:46.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:46.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:46.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:46.739 [DEBUG] [Thread-125717] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:47.286 [DEBUG] [Thread-125719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:53.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:53.995 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:22:56.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:22:56.742 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:22:56.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-28T13:22:57.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 22, 42), 18.43, 29.31, 0.0, 21.83, 19.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:22:57.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:22:42
2025-09-28T13:22:57.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:22:57.566 [DEBUG] [Thread-125720] [transport.py] [_log()] starting thread (client mode): 0x2b92a110
2025-09-28T13:22:57.566 [DEBUG] [Thread-125720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:57.586 [DEBUG] [Thread-125720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:22:57.586 [INFO] [Thread-125720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:57.590 [DEBUG] [Thread-125720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:57.591 [DEBUG] [Thread-125720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:57.591 [DEBUG] [Thread-125720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:57.591 [DEBUG] [Thread-125720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:57.591 [DEBUG] [Thread-125720] [transport.py] [_log()] Compression: none
2025-09-28T13:22:57.591 [DEBUG] [Thread-125720] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:57.609 [DEBUG] [Thread-125720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:57.609 [DEBUG] [Thread-125720] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:57.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:22:57.610 [DEBUG] [Thread-125720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:22:57.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:57.612 [DEBUG] [Thread-125720] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:57.612 [DEBUG] [Thread-125720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:57.612 [DEBUG] [Thread-125720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:57.612 [DEBUG] [Thread-125720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:22:57.613 [DEBUG] [Thread-125720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:57.636 [INFO] [Thread-125720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:57.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:58.358 [DEBUG] [Thread-125720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:58.358 [DEBUG] [Thread-125720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:58.359 [DEBUG] [Thread-125720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:22:58.399 [DEBUG] [Thread-125720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:58.400 [DEBUG] [Thread-125720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:58.402 [DEBUG] [Thread-125720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:58.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:58.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:22:58.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:22:58.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:22:58.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:58.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:22:58.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:58.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:58.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:22:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.473695 -999.00  +19.10  17.38     35   +3.40 1 1 1 1 1   888    0 14.96 -35.45 ----- 12.4 17.4 222.1 20.7 25.5 -26.8 24.5 -24.9 24.9 -24.5 26.1 -26.9
2025-09-28T13:22:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:22:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:22:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.473695
2025-09-28T13:22:58.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:22:58.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:22:58.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:22:58.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:22:58.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:22:58.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:22:42', tmtdew=18.43, humidity=29.31, cloud=0.0, wind=21.83, temperature=19.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:22:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:22:58.427 [DEBUG] [Thread-125720] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:22:58.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-28T13:22:58.528 [DEBUG] [Thread-125723] [transport.py] [_log()] starting thread (client mode): 0x2b929db0
2025-09-28T13:22:58.528 [DEBUG] [Thread-125723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:22:58.542 [DEBUG] [Thread-125723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:22:58.542 [INFO] [Thread-125723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:22:58.549 [DEBUG] [Thread-125723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:22:58.550 [DEBUG] [Thread-125723] [transport.py] [_log()] client lang: <none>
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] server lang: <none>
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] kex follows: False
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] Compression: none
2025-09-28T13:22:58.551 [DEBUG] [Thread-125723] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:22:58.606 [DEBUG] [Thread-125723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:22:58.607 [DEBUG] [Thread-125723] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:22:58.607 [DEBUG] [Thread-125723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:22:58.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:22:58.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:22:58.663 [DEBUG] [Thread-125723] [transport.py] [_log()] userauth is OK
2025-09-28T13:22:58.663 [DEBUG] [Thread-125723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:22:58.663 [DEBUG] [Thread-125723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:22:58.663 [DEBUG] [Thread-125723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:22:58.664 [DEBUG] [Thread-125723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:22:58.682 [INFO] [Thread-125723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:22:58.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-28T13:22:58.683 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:22:59.623 [DEBUG] [Thread-125723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:22:59.623 [DEBUG] [Thread-125723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:22:59.672 [DEBUG] [Thread-125723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:22:59.672 [DEBUG] [Thread-125723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:22:59.681 [DEBUG] [Thread-125723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:22:59.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:22:59.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-28T13:22:59.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-28T13:22:59.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:22:59.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:22:59.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:22:59.714 [DEBUG] [Thread-125723] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:02.318 [DEBUG] [Thread-125725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:09.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:23:09.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:23:09.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-28T13:23:10.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 22, 42), 18.43, 29.31, 0.0, 21.83, 19.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:23:10.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:22:42
2025-09-28T13:23:10.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:23:10.534 [DEBUG] [Thread-125726] [transport.py] [_log()] starting thread (client mode): 0x2b9de020
2025-09-28T13:23:10.534 [DEBUG] [Thread-125726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:10.555 [DEBUG] [Thread-125726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:23:10.555 [INFO] [Thread-125726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:10.558 [DEBUG] [Thread-125726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:10.559 [DEBUG] [Thread-125726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:10.559 [DEBUG] [Thread-125726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:10.559 [DEBUG] [Thread-125726] [transport.py] [_log()] Compression: none
2025-09-28T13:23:10.559 [DEBUG] [Thread-125726] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:10.575 [DEBUG] [Thread-125726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:10.575 [DEBUG] [Thread-125726] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:10.575 [DEBUG] [Thread-125726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:23:10.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:23:10.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:10.576 [DEBUG] [Thread-125726] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:10.576 [DEBUG] [Thread-125726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:10.576 [DEBUG] [Thread-125726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:10.576 [DEBUG] [Thread-125726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:23:10.576 [DEBUG] [Thread-125726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:10.588 [INFO] [Thread-125726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:10.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:11.215 [DEBUG] [Thread-125726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:11.215 [DEBUG] [Thread-125726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:11.215 [DEBUG] [Thread-125726] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:23:11.256 [DEBUG] [Thread-125726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:11.256 [DEBUG] [Thread-125726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:11.259 [DEBUG] [Thread-125726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:11.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:11.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:23:11.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:23:11.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:23:11.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:11.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:23:11.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:11.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:11.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:23:11.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.474042 -999.00  +19.20  22.24     34   +3.20 1 1 1 1 1   888    0 15.00 -39.00 ----- 16.4 22.2 259.8 25.2 25.4 -26.4 24.5 -24.9 24.8 -24.4 26.1 -26.9
2025-09-28T13:23:11.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:23:11.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:23:11.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.474042
2025-09-28T13:23:11.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:23:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:23:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:23:11.282 [DEBUG] [Thread-125726] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:23:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:23:11.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:22:42', tmtdew=18.43, humidity=29.31, cloud=0.0, wind=21.83, temperature=19.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:22:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:23:11.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-28T13:23:11.379 [DEBUG] [Thread-125729] [transport.py] [_log()] starting thread (client mode): 0x2b9de9e0
2025-09-28T13:23:11.379 [DEBUG] [Thread-125729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:11.394 [DEBUG] [Thread-125729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:23:11.394 [INFO] [Thread-125729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:23:11.401 [DEBUG] [Thread-125729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:11.402 [DEBUG] [Thread-125729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:11.403 [DEBUG] [Thread-125729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:11.404 [DEBUG] [Thread-125729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:11.404 [DEBUG] [Thread-125729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:11.404 [DEBUG] [Thread-125729] [transport.py] [_log()] Compression: none
2025-09-28T13:23:11.404 [DEBUG] [Thread-125729] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:11.459 [DEBUG] [Thread-125729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:11.459 [DEBUG] [Thread-125729] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:11.460 [DEBUG] [Thread-125729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:23:11.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:23:11.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:11.515 [DEBUG] [Thread-125729] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:11.515 [DEBUG] [Thread-125729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:11.515 [DEBUG] [Thread-125729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:11.515 [DEBUG] [Thread-125729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:23:11.515 [DEBUG] [Thread-125729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:11.534 [INFO] [Thread-125729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:11.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-28T13:23:11.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:11.884 [DEBUG] [Thread-125731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:12.493 [DEBUG] [Thread-125729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:12.493 [DEBUG] [Thread-125729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:12.541 [DEBUG] [Thread-125729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:12.541 [DEBUG] [Thread-125729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:12.549 [DEBUG] [Thread-125729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:12.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:12.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-28T13:23:12.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T13:23:12.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:12.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:12.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:12.583 [DEBUG] [Thread-125729] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:17.362 [DEBUG] [Thread-125732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:22.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:23:22.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:23:22.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-28T13:23:23.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 23, 14), 18.45, 29.28, 0.0, 26.96, 19.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:23:23.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:23:14
2025-09-28T13:23:23.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:23:23.435 [DEBUG] [Thread-125733] [transport.py] [_log()] starting thread (client mode): 0x2e34b460
2025-09-28T13:23:23.435 [DEBUG] [Thread-125733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:23.455 [DEBUG] [Thread-125733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:23:23.455 [INFO] [Thread-125733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] Compression: none
2025-09-28T13:23:23.458 [DEBUG] [Thread-125733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:23.472 [DEBUG] [Thread-125733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:23.472 [DEBUG] [Thread-125733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:23.472 [DEBUG] [Thread-125733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:23:23.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:23:23.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:23.473 [DEBUG] [Thread-125733] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:23.473 [DEBUG] [Thread-125733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:23.473 [DEBUG] [Thread-125733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:23.473 [DEBUG] [Thread-125733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:23:23.473 [DEBUG] [Thread-125733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:23.483 [INFO] [Thread-125733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:23.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:24.275 [DEBUG] [Thread-125733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:24.275 [DEBUG] [Thread-125733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:24.275 [DEBUG] [Thread-125733] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:23:24.316 [DEBUG] [Thread-125733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:24.317 [DEBUG] [Thread-125733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:24.319 [DEBUG] [Thread-125733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:24.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:24.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:23:24.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:23:24.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:23:24.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:24.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:23:24.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.474042 -999.00  +19.20  22.24     34   +3.20 1 1 1 1 1   888    0 15.00 -39.00 ----- 16.4 22.2 259.8 25.2 25.4 -26.4 24.5 -24.9 24.8 -24.4 26.1 -26.9
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:23:24.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.474042
2025-09-28T13:23:24.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:23:24.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:23:24.344 [DEBUG] [Thread-125733] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:24.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:23:24.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:23:24.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:23:24.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:23:14', tmtdew=18.45, humidity=29.28, cloud=0.0, wind=26.96, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:22:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:23:24.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-28T13:23:24.435 [DEBUG] [Thread-125736] [transport.py] [_log()] starting thread (client mode): 0x2b9c9ba0
2025-09-28T13:23:24.435 [DEBUG] [Thread-125736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:24.450 [DEBUG] [Thread-125736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:23:24.450 [INFO] [Thread-125736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:23:24.458 [DEBUG] [Thread-125736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:24.459 [DEBUG] [Thread-125736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] Compression: none
2025-09-28T13:23:24.460 [DEBUG] [Thread-125736] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:24.522 [DEBUG] [Thread-125736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:24.523 [DEBUG] [Thread-125736] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:24.523 [DEBUG] [Thread-125736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:23:24.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:23:24.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:24.579 [DEBUG] [Thread-125736] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:24.579 [DEBUG] [Thread-125736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:24.579 [DEBUG] [Thread-125736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:24.579 [DEBUG] [Thread-125736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:23:24.579 [DEBUG] [Thread-125736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:24.599 [INFO] [Thread-125736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:24.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-28T13:23:24.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:25.586 [DEBUG] [Thread-125736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:25.586 [DEBUG] [Thread-125736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:25.636 [DEBUG] [Thread-125736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:25.636 [DEBUG] [Thread-125736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:25.645 [DEBUG] [Thread-125736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:25.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:25.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')
2025-09-28T13:23:25.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-28T13:23:25.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:25.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:25.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:25.680 [DEBUG] [Thread-125736] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:32.406 [DEBUG] [Thread-125738 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:35.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:23:35.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:23:35.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-28T13:23:36.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 23, 14), 18.45, 29.28, 0.0, 26.96, 19.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:23:36.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:23:14
2025-09-28T13:23:36.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:23:36.501 [DEBUG] [Thread-125739] [transport.py] [_log()] starting thread (client mode): 0x2e38f160
2025-09-28T13:23:36.501 [DEBUG] [Thread-125739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:36.518 [DEBUG] [Thread-125739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:23:36.518 [INFO] [Thread-125739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:23:36.521 [DEBUG] [Thread-125739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:36.521 [DEBUG] [Thread-125739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:23:36.521 [DEBUG] [Thread-125739] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:36.521 [DEBUG] [Thread-125739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:36.521 [DEBUG] [Thread-125739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] Compression: none
2025-09-28T13:23:36.522 [DEBUG] [Thread-125739] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:36.538 [DEBUG] [Thread-125739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:36.538 [DEBUG] [Thread-125739] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:36.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:23:36.539 [DEBUG] [Thread-125739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:23:36.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:36.541 [DEBUG] [Thread-125739] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:36.541 [DEBUG] [Thread-125739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:36.541 [DEBUG] [Thread-125739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:36.542 [DEBUG] [Thread-125739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:23:36.542 [DEBUG] [Thread-125739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:36.565 [INFO] [Thread-125739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:36.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:37.329 [DEBUG] [Thread-125739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:37.329 [DEBUG] [Thread-125739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:37.329 [DEBUG] [Thread-125739] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:23:37.371 [DEBUG] [Thread-125739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:37.371 [DEBUG] [Thread-125739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:37.374 [DEBUG] [Thread-125739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:37.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:37.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:23:37.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:23:37.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:23:37.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:37.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:23:37.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:37.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:37.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:23:37.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.474042 -999.00  +19.20  22.24     34   +3.20 1 1 1 1 1   888    0 15.00 -39.00 ----- 16.4 22.2 259.8 25.2 25.4 -26.4 24.5 -24.9 24.8 -24.4 26.1 -26.9
2025-09-28T13:23:37.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:23:37.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:23:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.474042
2025-09-28T13:23:37.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:23:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:23:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:23:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:23:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:23:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:23:14', tmtdew=18.45, humidity=29.28, cloud=0.0, wind=26.96, temperature=19.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:22:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:23:37.401 [DEBUG] [Thread-125739] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:37.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-28T13:23:37.502 [DEBUG] [Thread-125742] [transport.py] [_log()] starting thread (client mode): 0x2b9dcee0
2025-09-28T13:23:37.502 [DEBUG] [Thread-125742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:37.517 [DEBUG] [Thread-125742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:23:37.517 [INFO] [Thread-125742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:37.525 [DEBUG] [Thread-125742] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] Compression: none
2025-09-28T13:23:37.526 [DEBUG] [Thread-125742] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:37.582 [DEBUG] [Thread-125742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:37.583 [DEBUG] [Thread-125742] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:37.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:23:37.584 [DEBUG] [Thread-125742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:23:37.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:37.639 [DEBUG] [Thread-125742] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:37.639 [DEBUG] [Thread-125742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:37.639 [DEBUG] [Thread-125742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:37.639 [DEBUG] [Thread-125742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:23:37.639 [DEBUG] [Thread-125742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:37.658 [INFO] [Thread-125742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:37.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-28T13:23:37.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:38.603 [DEBUG] [Thread-125742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:38.603 [DEBUG] [Thread-125742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:38.651 [DEBUG] [Thread-125742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:38.651 [DEBUG] [Thread-125742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:38.660 [DEBUG] [Thread-125742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:38.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:38.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-28T13:23:38.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-28T13:23:38.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:38.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:38.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:38.694 [DEBUG] [Thread-125742] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:47.440 [DEBUG] [Thread-125744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:48.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:23:48.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:23:48.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-28T13:23:49.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 23, 46), 18.63, 28.43, 0.0, 23.06, 19.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:23:49.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:23:46
2025-09-28T13:23:49.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:23:49.537 [DEBUG] [Thread-125745] [transport.py] [_log()] starting thread (client mode): 0x2b9df610
2025-09-28T13:23:49.537 [DEBUG] [Thread-125745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:49.557 [DEBUG] [Thread-125745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:23:49.557 [INFO] [Thread-125745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:49.560 [DEBUG] [Thread-125745] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] Compression: none
2025-09-28T13:23:49.561 [DEBUG] [Thread-125745] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:49.579 [DEBUG] [Thread-125745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:49.580 [DEBUG] [Thread-125745] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:49.580 [DEBUG] [Thread-125745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:23:49.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:23:49.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:49.582 [DEBUG] [Thread-125745] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:49.583 [DEBUG] [Thread-125745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:49.583 [DEBUG] [Thread-125745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:49.583 [DEBUG] [Thread-125745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:23:49.583 [DEBUG] [Thread-125745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:49.607 [INFO] [Thread-125745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:49.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:50.281 [DEBUG] [Thread-125745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:50.281 [DEBUG] [Thread-125745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:50.281 [DEBUG] [Thread-125745] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:23:50.322 [DEBUG] [Thread-125745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:50.322 [DEBUG] [Thread-125745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:50.325 [DEBUG] [Thread-125745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:50.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:50.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:23:50.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:23:50.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:23:50.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:50.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:23:50.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:50.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:50.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:23:50.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.474737 -999.00  +19.00  11.61     35   +3.10 1 1 1 1 1   888    0 14.71 -46.77 ----- 5.3 11.6 246.8 24.4 25.3 -27.6 24.5 -25.0 24.9 -23.8 25.8 -27.6
2025-09-28T13:23:50.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:23:50.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:23:50.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.474737
2025-09-28T13:23:50.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:23:50.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:23:50.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:23:50.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:23:50.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:23:50.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:23:46', tmtdew=18.63, humidity=28.43, cloud=0.0, wind=23.06, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:23:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:23:50.352 [DEBUG] [Thread-125745] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:50.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-28T13:23:50.447 [DEBUG] [Thread-125748] [transport.py] [_log()] starting thread (client mode): 0x2b98b2e0
2025-09-28T13:23:50.447 [DEBUG] [Thread-125748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:23:50.461 [DEBUG] [Thread-125748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:23:50.461 [INFO] [Thread-125748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:23:50.469 [DEBUG] [Thread-125748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:23:50.469 [DEBUG] [Thread-125748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] client lang: <none>
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] server lang: <none>
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] kex follows: False
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] Compression: none
2025-09-28T13:23:50.470 [DEBUG] [Thread-125748] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:23:50.530 [DEBUG] [Thread-125748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:23:50.531 [DEBUG] [Thread-125748] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:23:50.531 [DEBUG] [Thread-125748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:23:50.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:23:50.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:23:50.587 [DEBUG] [Thread-125748] [transport.py] [_log()] userauth is OK
2025-09-28T13:23:50.587 [DEBUG] [Thread-125748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:23:50.587 [DEBUG] [Thread-125748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:23:50.587 [DEBUG] [Thread-125748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:23:50.587 [DEBUG] [Thread-125748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:23:50.606 [INFO] [Thread-125748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:23:50.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-28T13:23:50.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:23:51.560 [DEBUG] [Thread-125748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:23:51.561 [DEBUG] [Thread-125748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:23:51.608 [DEBUG] [Thread-125748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:23:51.608 [DEBUG] [Thread-125748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:23:51.617 [DEBUG] [Thread-125748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:23:51.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:23:51.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-28T13:23:51.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-28T13:23:51.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:23:51.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:23:51.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:23:51.653 [DEBUG] [Thread-125748] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:23:54.135 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:23:54.136 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:24:01.655 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:24:01.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-28T13:24:02.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 23, 46), 18.63, 28.43, 0.0, 23.06, 19.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:24:02.234 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:23:46
2025-09-28T13:24:02.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:24:02.464 [DEBUG] [Thread-125750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:02.494 [DEBUG] [Thread-125751] [transport.py] [_log()] starting thread (client mode): 0x2b9280a0
2025-09-28T13:24:02.494 [DEBUG] [Thread-125751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:02.514 [DEBUG] [Thread-125751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:24:02.514 [INFO] [Thread-125751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:02.517 [DEBUG] [Thread-125751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] Compression: none
2025-09-28T13:24:02.518 [DEBUG] [Thread-125751] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:02.535 [DEBUG] [Thread-125751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:02.536 [DEBUG] [Thread-125751] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:02.536 [DEBUG] [Thread-125751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:24:02.536 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:24:02.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:02.538 [DEBUG] [Thread-125751] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:02.538 [DEBUG] [Thread-125751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:02.538 [DEBUG] [Thread-125751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:02.538 [DEBUG] [Thread-125751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:24:02.538 [DEBUG] [Thread-125751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:02.562 [INFO] [Thread-125751] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:02.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:03.341 [DEBUG] [Thread-125751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:03.341 [DEBUG] [Thread-125751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:03.341 [DEBUG] [Thread-125751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:24:03.382 [DEBUG] [Thread-125751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:03.383 [DEBUG] [Thread-125751] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:03.385 [DEBUG] [Thread-125751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:03.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:03.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:24:03.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:24:03.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:24:03.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:03.408 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:24:03.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:03.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.474737 -999.00  +19.00  11.61     35   +3.10 1 1 1 1 1   888    0 14.71 -46.77 ----- 5.3 11.6 246.8 24.4 25.3 -27.6 24.5 -25.0 24.9 -23.8 25.8 -27.6
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.474737
2025-09-28T13:24:03.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:24:03.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:24:03.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:24:03.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:24:03.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:24:03.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:23:46', tmtdew=18.63, humidity=28.43, cloud=0.0, wind=23.06, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:23:37.277', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:24:03.411 [DEBUG] [Thread-125751] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:03.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:24:03.507 [DEBUG] [Thread-125754] [transport.py] [_log()] starting thread (client mode): 0x2b92ace0
2025-09-28T13:24:03.507 [DEBUG] [Thread-125754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:03.521 [DEBUG] [Thread-125754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:24:03.522 [INFO] [Thread-125754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:24:03.529 [DEBUG] [Thread-125754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:03.529 [DEBUG] [Thread-125754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:03.530 [DEBUG] [Thread-125754] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:03.531 [DEBUG] [Thread-125754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:03.532 [DEBUG] [Thread-125754] [transport.py] [_log()] Compression: none
2025-09-28T13:24:03.532 [DEBUG] [Thread-125754] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:03.587 [DEBUG] [Thread-125754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:03.588 [DEBUG] [Thread-125754] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:03.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:24:03.589 [DEBUG] [Thread-125754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:24:03.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:03.646 [DEBUG] [Thread-125754] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:03.647 [DEBUG] [Thread-125754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:03.647 [DEBUG] [Thread-125754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:03.647 [DEBUG] [Thread-125754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:24:03.647 [DEBUG] [Thread-125754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:03.669 [INFO] [Thread-125754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:03.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-28T13:24:03.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:04.630 [DEBUG] [Thread-125754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:04.631 [DEBUG] [Thread-125754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:04.678 [DEBUG] [Thread-125754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:04.678 [DEBUG] [Thread-125754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:04.687 [DEBUG] [Thread-125754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:04.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:04.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:24:04.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-28T13:24:04.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:04.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:04.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:04.723 [DEBUG] [Thread-125754] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:11.938 [DEBUG] [Thread-125756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:14.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:24:14.725 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:24:14.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-28T13:24:15.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 23, 46), 18.63, 28.43, 0.0, 23.06, 19.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:24:15.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:23:46
2025-09-28T13:24:15.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:24:15.549 [DEBUG] [Thread-125757] [transport.py] [_log()] starting thread (client mode): 0x2b928370
2025-09-28T13:24:15.549 [DEBUG] [Thread-125757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:15.562 [DEBUG] [Thread-125757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:24:15.562 [INFO] [Thread-125757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] Compression: none
2025-09-28T13:24:15.564 [DEBUG] [Thread-125757] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:15.572 [DEBUG] [Thread-125757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:15.572 [DEBUG] [Thread-125757] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:15.572 [DEBUG] [Thread-125757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:24:15.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:24:15.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:15.573 [DEBUG] [Thread-125757] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:15.573 [DEBUG] [Thread-125757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:15.573 [DEBUG] [Thread-125757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:15.573 [DEBUG] [Thread-125757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:24:15.573 [DEBUG] [Thread-125757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:15.585 [INFO] [Thread-125757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:15.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:16.174 [DEBUG] [Thread-125757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:16.174 [DEBUG] [Thread-125757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:16.174 [DEBUG] [Thread-125757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:24:16.215 [DEBUG] [Thread-125757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:16.216 [DEBUG] [Thread-125757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:16.218 [DEBUG] [Thread-125757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:16.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:16.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:24:16.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:24:16.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:24:16.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:16.237 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:24:16.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:16.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:16.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:24:16.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475084 -999.00  +18.90  24.08     34   +2.90 1 1 1 1 1   888    0 15.01 -46.80 ----- 20.1 24.1 251.2 32.5 25.5 -26.5 24.4 -25.2 24.7 -25.9 25.9 -25.9
2025-09-28T13:24:16.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:24:16.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:24:16.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475084
2025-09-28T13:24:16.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:24:16.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:24:16.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:24:16.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:24:16.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:24:16.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:23:46', tmtdew=18.63, humidity=28.43, cloud=0.0, wind=23.06, temperature=19.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:24:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:24:16.240 [DEBUG] [Thread-125757] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:16.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-28T13:24:16.334 [DEBUG] [Thread-125760] [transport.py] [_log()] starting thread (client mode): 0x2b9cbdc0
2025-09-28T13:24:16.335 [DEBUG] [Thread-125760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:16.349 [DEBUG] [Thread-125760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:24:16.350 [INFO] [Thread-125760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:24:16.357 [DEBUG] [Thread-125760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:16.357 [DEBUG] [Thread-125760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:24:16.357 [DEBUG] [Thread-125760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:16.357 [DEBUG] [Thread-125760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:16.358 [DEBUG] [Thread-125760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:16.359 [DEBUG] [Thread-125760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:16.359 [DEBUG] [Thread-125760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:16.359 [DEBUG] [Thread-125760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:16.359 [DEBUG] [Thread-125760] [transport.py] [_log()] Compression: none
2025-09-28T13:24:16.359 [DEBUG] [Thread-125760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:16.414 [DEBUG] [Thread-125760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:16.414 [DEBUG] [Thread-125760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:16.415 [DEBUG] [Thread-125760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:24:16.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:24:16.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:16.469 [DEBUG] [Thread-125760] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:16.469 [DEBUG] [Thread-125760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:16.470 [DEBUG] [Thread-125760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:16.470 [DEBUG] [Thread-125760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:24:16.470 [DEBUG] [Thread-125760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:16.485 [INFO] [Thread-125760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:16.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-28T13:24:16.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:17.457 [DEBUG] [Thread-125760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:17.457 [DEBUG] [Thread-125760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:17.501 [DEBUG] [Thread-125762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:17.505 [DEBUG] [Thread-125760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:17.505 [DEBUG] [Thread-125760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:17.515 [DEBUG] [Thread-125760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:17.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:17.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')
2025-09-28T13:24:17.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-28T13:24:17.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:17.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:17.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:17.549 [DEBUG] [Thread-125760] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:27.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:24:27.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:24:27.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:24:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 24, 18), 18.53, 28.59, 0.0, 23.64, 19.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:24:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:24:18
2025-09-28T13:24:28.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:24:28.379 [DEBUG] [Thread-125763] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T13:24:28.379 [DEBUG] [Thread-125763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:28.399 [DEBUG] [Thread-125763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:24:28.399 [INFO] [Thread-125763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:28.403 [DEBUG] [Thread-125763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] Compression: none
2025-09-28T13:24:28.404 [DEBUG] [Thread-125763] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:28.417 [DEBUG] [Thread-125763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:28.417 [DEBUG] [Thread-125763] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:28.418 [DEBUG] [Thread-125763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:24:28.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:24:28.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:28.420 [DEBUG] [Thread-125763] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:28.420 [DEBUG] [Thread-125763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:28.420 [DEBUG] [Thread-125763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:28.420 [DEBUG] [Thread-125763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:24:28.420 [DEBUG] [Thread-125763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:28.442 [INFO] [Thread-125763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:28.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:29.238 [DEBUG] [Thread-125763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:29.239 [DEBUG] [Thread-125763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:29.239 [DEBUG] [Thread-125763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:24:29.279 [DEBUG] [Thread-125763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:29.279 [DEBUG] [Thread-125763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:29.282 [DEBUG] [Thread-125763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:29.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:29.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:24:29.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:24:29.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:24:29.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:29.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:24:29.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:29.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:29.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:24:29.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475084 -999.00  +18.90  24.08     34   +2.90 1 1 1 1 1   888    0 15.01 -46.80 ----- 20.1 24.1 251.2 32.5 25.5 -26.5 24.4 -25.2 24.7 -25.9 25.9 -25.9
2025-09-28T13:24:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:24:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:24:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475084
2025-09-28T13:24:29.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:24:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:24:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:24:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:24:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:24:29.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:24:18', tmtdew=18.53, humidity=28.59, cloud=0.0, wind=23.64, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:24:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:24:29.313 [DEBUG] [Thread-125763] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:29.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-28T13:24:29.408 [DEBUG] [Thread-125766] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ea0
2025-09-28T13:24:29.409 [DEBUG] [Thread-125766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:29.423 [DEBUG] [Thread-125766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:24:29.423 [INFO] [Thread-125766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:29.431 [DEBUG] [Thread-125766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:29.432 [DEBUG] [Thread-125766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:29.433 [DEBUG] [Thread-125766] [transport.py] [_log()] Compression: none
2025-09-28T13:24:29.433 [DEBUG] [Thread-125766] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:29.493 [DEBUG] [Thread-125766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:29.494 [DEBUG] [Thread-125766] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:29.495 [DEBUG] [Thread-125766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:24:29.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:24:29.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:29.550 [DEBUG] [Thread-125766] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:29.550 [DEBUG] [Thread-125766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:29.550 [DEBUG] [Thread-125766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:29.550 [DEBUG] [Thread-125766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:24:29.550 [DEBUG] [Thread-125766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:29.569 [INFO] [Thread-125766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:29.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:24:29.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:30.508 [DEBUG] [Thread-125766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:30.509 [DEBUG] [Thread-125766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:30.556 [DEBUG] [Thread-125766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:30.556 [DEBUG] [Thread-125766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:30.565 [DEBUG] [Thread-125766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:30.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:30.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-28T13:24:30.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-28T13:24:30.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:30.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:30.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:30.600 [DEBUG] [Thread-125766] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:32.544 [DEBUG] [Thread-125768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:40.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:24:40.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:24:40.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:24:41.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 24, 18), 18.53, 28.59, 0.0, 23.64, 19.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:24:41.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:24:18
2025-09-28T13:24:41.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:24:41.424 [DEBUG] [Thread-125769] [transport.py] [_log()] starting thread (client mode): 0x2b9287c0
2025-09-28T13:24:41.424 [DEBUG] [Thread-125769] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:41.444 [DEBUG] [Thread-125769] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:24:41.444 [INFO] [Thread-125769] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:41.447 [DEBUG] [Thread-125769] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:41.448 [DEBUG] [Thread-125769] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:41.448 [DEBUG] [Thread-125769] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:41.448 [DEBUG] [Thread-125769] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:41.448 [DEBUG] [Thread-125769] [transport.py] [_log()] Compression: none
2025-09-28T13:24:41.448 [DEBUG] [Thread-125769] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:41.464 [DEBUG] [Thread-125769] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:41.464 [DEBUG] [Thread-125769] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:41.465 [DEBUG] [Thread-125769] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:24:41.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:24:41.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:41.467 [DEBUG] [Thread-125769] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:41.467 [DEBUG] [Thread-125769] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:41.467 [DEBUG] [Thread-125769] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:41.467 [DEBUG] [Thread-125769] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:24:41.468 [DEBUG] [Thread-125769] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:41.485 [INFO] [Thread-125769] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:41.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:42.273 [DEBUG] [Thread-125769] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:42.273 [DEBUG] [Thread-125769] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:42.274 [DEBUG] [Thread-125769] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:24:42.315 [DEBUG] [Thread-125769] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:42.315 [DEBUG] [Thread-125769] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:42.318 [DEBUG] [Thread-125769] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:42.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:42.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:24:42.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:24:42.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:24:42.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:42.340 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:24:42.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:42.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:42.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:24:42.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475084 -999.00  +18.90  24.08     34   +2.90 1 1 1 1 1   888    0 15.01 -46.80 ----- 20.1 24.1 251.2 32.5 25.5 -26.5 24.4 -25.2 24.7 -25.9 25.9 -25.9
2025-09-28T13:24:42.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:24:42.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:24:42.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475084
2025-09-28T13:24:42.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:24:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:24:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:24:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:24:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:24:42.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:24:18', tmtdew=18.53, humidity=28.59, cloud=0.0, wind=23.64, temperature=19.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:24:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:24:42.342 [DEBUG] [Thread-125769] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:42.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-28T13:24:42.438 [DEBUG] [Thread-125772] [transport.py] [_log()] starting thread (client mode): 0x2b9895d0
2025-09-28T13:24:42.438 [DEBUG] [Thread-125772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:42.456 [DEBUG] [Thread-125772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:24:42.456 [INFO] [Thread-125772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:42.464 [DEBUG] [Thread-125772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:42.465 [DEBUG] [Thread-125772] [transport.py] [_log()] Compression: none
2025-09-28T13:24:42.465 [DEBUG] [Thread-125772] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:42.521 [DEBUG] [Thread-125772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:42.522 [DEBUG] [Thread-125772] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:42.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:24:42.523 [DEBUG] [Thread-125772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:24:42.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:42.577 [DEBUG] [Thread-125772] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:42.578 [DEBUG] [Thread-125772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:42.578 [DEBUG] [Thread-125772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:42.578 [DEBUG] [Thread-125772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:24:42.578 [DEBUG] [Thread-125772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:42.597 [INFO] [Thread-125772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:42.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-28T13:24:42.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:43.576 [DEBUG] [Thread-125772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:43.577 [DEBUG] [Thread-125772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:43.624 [DEBUG] [Thread-125772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:43.624 [DEBUG] [Thread-125772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:43.633 [DEBUG] [Thread-125772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:43.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:43.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-28T13:24:43.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-28T13:24:43.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:43.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:43.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:43.667 [DEBUG] [Thread-125772] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:47.587 [DEBUG] [Thread-125774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:53.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:24:53.670 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:24:53.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-28T13:24:54.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 24, 50), 18.48, 28.76, 0.0, 22.55, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:24:54.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:24:50
2025-09-28T13:24:54.278 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:54.279 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:24:54.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:24:54.508 [DEBUG] [Thread-125775] [transport.py] [_log()] starting thread (client mode): 0x2e348cd0
2025-09-28T13:24:54.508 [DEBUG] [Thread-125775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:54.532 [DEBUG] [Thread-125775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:24:54.532 [INFO] [Thread-125775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] Compression: none
2025-09-28T13:24:54.536 [DEBUG] [Thread-125775] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:54.552 [DEBUG] [Thread-125775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:54.552 [DEBUG] [Thread-125775] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:54.553 [DEBUG] [Thread-125775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:24:54.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:24:54.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:54.555 [DEBUG] [Thread-125775] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:54.555 [DEBUG] [Thread-125775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:54.556 [DEBUG] [Thread-125775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:54.556 [DEBUG] [Thread-125775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:24:54.556 [DEBUG] [Thread-125775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:54.571 [INFO] [Thread-125775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:54.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:55.209 [DEBUG] [Thread-125775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:55.209 [DEBUG] [Thread-125775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:55.210 [DEBUG] [Thread-125775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:24:55.250 [DEBUG] [Thread-125775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:55.250 [DEBUG] [Thread-125775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:55.254 [DEBUG] [Thread-125775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:55.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:55.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:24:55.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:24:55.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:24:55.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:55.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:24:55.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:55.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:55.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:24:55.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475431 -999.00  +18.90  20.75     35   +3.10 1 1 1 1 1   888    0 14.95 -41.99 ----- 17.8 20.8 270.5 28.3 25.3 -26.4 24.5 -25.6 24.6 -24.1 25.7 -26.1
2025-09-28T13:24:55.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:24:55.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:24:55.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475431
2025-09-28T13:24:55.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:24:55.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:24:55.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:24:55.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:24:55.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:24:55.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:24:50', tmtdew=18.48, humidity=28.76, cloud=0.0, wind=22.55, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:24:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:24:55.278 [DEBUG] [Thread-125775] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:24:55.362 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:24:55.372 [DEBUG] [Thread-125778] [transport.py] [_log()] starting thread (client mode): 0x2b92a110
2025-09-28T13:24:55.372 [DEBUG] [Thread-125778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:24:55.386 [DEBUG] [Thread-125778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:24:55.386 [INFO] [Thread-125778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] client lang: <none>
2025-09-28T13:24:55.394 [DEBUG] [Thread-125778] [transport.py] [_log()] server lang: <none>
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] kex follows: False
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] Compression: none
2025-09-28T13:24:55.395 [DEBUG] [Thread-125778] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:24:55.454 [DEBUG] [Thread-125778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:24:55.455 [DEBUG] [Thread-125778] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:24:55.455 [DEBUG] [Thread-125778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:24:55.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:24:55.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:24:55.513 [DEBUG] [Thread-125778] [transport.py] [_log()] userauth is OK
2025-09-28T13:24:55.514 [DEBUG] [Thread-125778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:24:55.514 [DEBUG] [Thread-125778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:24:55.514 [DEBUG] [Thread-125778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:24:55.514 [DEBUG] [Thread-125778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:24:55.534 [INFO] [Thread-125778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:24:55.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-28T13:24:55.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:24:56.487 [DEBUG] [Thread-125778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:24:56.488 [DEBUG] [Thread-125778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:24:56.535 [DEBUG] [Thread-125778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:24:56.535 [DEBUG] [Thread-125778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:24:56.544 [DEBUG] [Thread-125778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:24:56.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:24:56.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-28T13:24:56.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-28T13:24:56.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:24:56.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:24:56.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:24:56.579 [DEBUG] [Thread-125778] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:02.617 [DEBUG] [Thread-125780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:06.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:25:06.581 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:25:06.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-28T13:25:07.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 24, 50), 18.48, 28.76, 0.0, 22.55, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:25:07.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:24:50
2025-09-28T13:25:07.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:25:07.422 [DEBUG] [Thread-125781] [transport.py] [_log()] starting thread (client mode): 0x2b98a440
2025-09-28T13:25:07.422 [DEBUG] [Thread-125781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:07.444 [DEBUG] [Thread-125781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:25:07.444 [INFO] [Thread-125781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:07.445 [DEBUG] [Thread-125781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:07.446 [DEBUG] [Thread-125781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:07.446 [DEBUG] [Thread-125781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:07.446 [DEBUG] [Thread-125781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:07.446 [DEBUG] [Thread-125781] [transport.py] [_log()] Compression: none
2025-09-28T13:25:07.446 [DEBUG] [Thread-125781] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:07.453 [DEBUG] [Thread-125781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:07.454 [DEBUG] [Thread-125781] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:07.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:25:07.454 [DEBUG] [Thread-125781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:25:07.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:07.455 [DEBUG] [Thread-125781] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:07.455 [DEBUG] [Thread-125781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:07.455 [DEBUG] [Thread-125781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:07.455 [DEBUG] [Thread-125781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:25:07.455 [DEBUG] [Thread-125781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:07.464 [INFO] [Thread-125781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:07.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:11.988 [DEBUG] [Thread-125783 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:16.617 [DEBUG] [Thread-125781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:16.617 [DEBUG] [Thread-125781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:16.618 [DEBUG] [Thread-125781] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:25:16.658 [DEBUG] [Thread-125781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:16.659 [DEBUG] [Thread-125781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:16.662 [DEBUG] [Thread-125781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:16.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:16.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:25:16.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:25:16.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:25:16.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:16.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:25:16.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:16.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475431 -999.00  +18.90  20.75     35   +3.10 1 1 1 1 1   888    0 14.95 -41.99 ----- 17.8 20.8 270.5 28.3 25.3 -26.4 24.5 -25.6 24.6 -24.1 25.7 -26.1
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475431
2025-09-28T13:25:16.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:25:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:25:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:25:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:25:16.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:25:16.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:24:50', tmtdew=18.48, humidity=28.76, cloud=0.0, wind=22.55, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:24:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:25:16.816 [DEBUG] [Thread-125781] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:16.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-28T13:25:16.914 [DEBUG] [Thread-125785] [transport.py] [_log()] starting thread (client mode): 0x2b9dfe80
2025-09-28T13:25:16.914 [DEBUG] [Thread-125785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:16.929 [DEBUG] [Thread-125785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:25:16.929 [INFO] [Thread-125785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:16.937 [DEBUG] [Thread-125785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:16.938 [DEBUG] [Thread-125785] [transport.py] [_log()] Compression: none
2025-09-28T13:25:16.938 [DEBUG] [Thread-125785] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:16.993 [DEBUG] [Thread-125785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:16.994 [DEBUG] [Thread-125785] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:16.994 [DEBUG] [Thread-125785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:25:16.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:25:16.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:17.049 [DEBUG] [Thread-125785] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:17.049 [DEBUG] [Thread-125785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:17.049 [DEBUG] [Thread-125785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:17.049 [DEBUG] [Thread-125785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:25:17.049 [DEBUG] [Thread-125785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:17.069 [INFO] [Thread-125785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:17.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-28T13:25:17.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:17.660 [DEBUG] [Thread-125787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:18.081 [DEBUG] [Thread-125785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:18.081 [DEBUG] [Thread-125785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:18.129 [DEBUG] [Thread-125785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:18.130 [DEBUG] [Thread-125785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:18.138 [DEBUG] [Thread-125785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:18.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:18.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-28T13:25: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') -> 00000000
2025-09-28T13:25:18.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:18.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:18.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:18.173 [DEBUG] [Thread-125785] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:28.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:25:28.176 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:25:28.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-28T13:25:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 25, 22), 18.67, 28.41, 0.0, 27.0, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:25:28.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:25:22
2025-09-28T13:25:28.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:25:29.022 [DEBUG] [Thread-125788] [transport.py] [_log()] starting thread (client mode): 0x2b9dc6a0
2025-09-28T13:25:29.022 [DEBUG] [Thread-125788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:29.042 [DEBUG] [Thread-125788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:25:29.042 [INFO] [Thread-125788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] Compression: none
2025-09-28T13:25:29.045 [DEBUG] [Thread-125788] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:29.063 [DEBUG] [Thread-125788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:29.063 [DEBUG] [Thread-125788] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:29.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:25:29.064 [DEBUG] [Thread-125788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:25:29.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:29.066 [DEBUG] [Thread-125788] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:29.066 [DEBUG] [Thread-125788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:29.066 [DEBUG] [Thread-125788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:29.066 [DEBUG] [Thread-125788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:25:29.066 [DEBUG] [Thread-125788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:29.085 [INFO] [Thread-125788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:29.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:29.649 [DEBUG] [Thread-125788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:29.650 [DEBUG] [Thread-125788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:29.650 [DEBUG] [Thread-125788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:25:29.690 [DEBUG] [Thread-125788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:29.690 [DEBUG] [Thread-125788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:29.693 [DEBUG] [Thread-125788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:29.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:29.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:25:29.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:25:29.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:25:29.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:29.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:25:29.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:29.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475778 -999.00  +18.60  24.11     34   +2.80 1 1 1 1 1   888    0 14.59 -42.66 ----- 25.7 24.1 275.2 28.2 25.4 -26.4 24.3 -26.6 24.2 -33.7 25.8 -25.8
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475778
2025-09-28T13:25:29.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:25:29.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:25:29.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:25:29.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:25:29.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:25:29.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:25:22', tmtdew=18.67, humidity=28.41, cloud=0.0, wind=27.0, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:25:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:25:29.717 [DEBUG] [Thread-125788] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:29.802 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:25:29.811 [DEBUG] [Thread-125791] [transport.py] [_log()] starting thread (client mode): 0x2e3fa890
2025-09-28T13:25:29.811 [DEBUG] [Thread-125791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:29.826 [DEBUG] [Thread-125791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:25:29.826 [INFO] [Thread-125791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:29.834 [DEBUG] [Thread-125791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] Compression: none
2025-09-28T13:25:29.835 [DEBUG] [Thread-125791] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:29.893 [DEBUG] [Thread-125791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:29.894 [DEBUG] [Thread-125791] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:29.894 [DEBUG] [Thread-125791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:25:29.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:25:29.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:29.949 [DEBUG] [Thread-125791] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:29.949 [DEBUG] [Thread-125791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:29.949 [DEBUG] [Thread-125791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:29.949 [DEBUG] [Thread-125791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:25:29.949 [DEBUG] [Thread-125791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:29.968 [INFO] [Thread-125791] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:29.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-28T13:25:29.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:30.937 [DEBUG] [Thread-125791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:30.937 [DEBUG] [Thread-125791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:30.985 [DEBUG] [Thread-125791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:30.985 [DEBUG] [Thread-125791] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:30.994 [DEBUG] [Thread-125791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:31.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:31.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-28T13:25:31.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') -> 00000000
2025-09-28T13:25:31.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:31.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:31.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:31.030 [DEBUG] [Thread-125791] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:32.691 [DEBUG] [Thread-125793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:41.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:25:41.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:25:41.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-28T13:25:41.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 25, 22), 18.67, 28.41, 0.0, 27.0, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:25:41.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:25:22
2025-09-28T13:25:41.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:25:41.877 [DEBUG] [Thread-125794] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-28T13:25:41.877 [DEBUG] [Thread-125794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:41.897 [DEBUG] [Thread-125794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:25:41.898 [INFO] [Thread-125794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] Compression: none
2025-09-28T13:25:41.901 [DEBUG] [Thread-125794] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:41.921 [DEBUG] [Thread-125794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:41.922 [DEBUG] [Thread-125794] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:41.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:25:41.922 [DEBUG] [Thread-125794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:25:41.923 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:41.924 [DEBUG] [Thread-125794] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:41.924 [DEBUG] [Thread-125794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:41.924 [DEBUG] [Thread-125794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:41.924 [DEBUG] [Thread-125794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:25:41.925 [DEBUG] [Thread-125794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:41.958 [INFO] [Thread-125794] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:41.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:42.703 [DEBUG] [Thread-125794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:42.704 [DEBUG] [Thread-125794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:42.704 [DEBUG] [Thread-125794] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:25:42.744 [DEBUG] [Thread-125794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:42.744 [DEBUG] [Thread-125794] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:42.747 [DEBUG] [Thread-125794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:42.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:42.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:25:42.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:25:42.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:25:42.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:42.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:25:42.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:42.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:42.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:25:42.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.475778 -999.00  +18.60  24.11     34   +2.80 1 1 1 1 1   888    0 14.59 -42.66 ----- 25.7 24.1 275.2 28.2 25.4 -26.4 24.3 -26.6 24.2 -33.7 25.8 -25.8
2025-09-28T13:25:42.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:25:42.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:25:42.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.475778
2025-09-28T13:25:42.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:25:42.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:25:42.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:25:42.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:25:42.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:25:42.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:25:22', tmtdew=18.67, humidity=28.41, cloud=0.0, wind=27.0, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:25:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:25:42.773 [DEBUG] [Thread-125794] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:42.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-28T13:25:42.871 [DEBUG] [Thread-125797] [transport.py] [_log()] starting thread (client mode): 0x2b9ac2e0
2025-09-28T13:25:42.871 [DEBUG] [Thread-125797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:42.886 [DEBUG] [Thread-125797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:25:42.886 [INFO] [Thread-125797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:25:42.894 [DEBUG] [Thread-125797] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:42.894 [DEBUG] [Thread-125797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:42.895 [DEBUG] [Thread-125797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:42.896 [DEBUG] [Thread-125797] [transport.py] [_log()] Compression: none
2025-09-28T13:25:42.896 [DEBUG] [Thread-125797] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:42.952 [DEBUG] [Thread-125797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:42.953 [DEBUG] [Thread-125797] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:42.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:25:42.954 [DEBUG] [Thread-125797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:25:42.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:43.009 [DEBUG] [Thread-125797] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:43.009 [DEBUG] [Thread-125797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:43.009 [DEBUG] [Thread-125797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:43.009 [DEBUG] [Thread-125797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:25:43.009 [DEBUG] [Thread-125797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:43.028 [INFO] [Thread-125797] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:43.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-28T13:25:43.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:44.005 [DEBUG] [Thread-125797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:44.005 [DEBUG] [Thread-125797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:44.052 [DEBUG] [Thread-125797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:44.052 [DEBUG] [Thread-125797] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:44.061 [DEBUG] [Thread-125797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:44.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:44.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-28T13:25:44.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-28T13:25:44.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:44.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:44.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:44.096 [DEBUG] [Thread-125797] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:47.734 [DEBUG] [Thread-125799 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:54.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:25:54.098 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:25:54.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-28T13:25:54.419 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:54.420 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:25:54.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 25, 22), 18.67, 28.41, 0.0, 27.0, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:25:54.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:25:22
2025-09-28T13:25:54.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:25:54.918 [DEBUG] [Thread-125800] [transport.py] [_log()] starting thread (client mode): 0x2e3f99f0
2025-09-28T13:25:54.918 [DEBUG] [Thread-125800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:54.938 [DEBUG] [Thread-125800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:25:54.938 [INFO] [Thread-125800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:25:54.939 [DEBUG] [Thread-125800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:54.940 [DEBUG] [Thread-125800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:54.941 [DEBUG] [Thread-125800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:54.941 [DEBUG] [Thread-125800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:54.941 [DEBUG] [Thread-125800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:54.941 [DEBUG] [Thread-125800] [transport.py] [_log()] Compression: none
2025-09-28T13:25:54.941 [DEBUG] [Thread-125800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:54.953 [DEBUG] [Thread-125800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:54.953 [DEBUG] [Thread-125800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:54.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:25:54.954 [DEBUG] [Thread-125800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:25:54.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:54.956 [DEBUG] [Thread-125800] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:54.956 [DEBUG] [Thread-125800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:54.957 [DEBUG] [Thread-125800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:54.957 [DEBUG] [Thread-125800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:25:54.957 [DEBUG] [Thread-125800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:54.975 [INFO] [Thread-125800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:54.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:55.559 [DEBUG] [Thread-125800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:55.560 [DEBUG] [Thread-125800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:55.560 [DEBUG] [Thread-125800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:25:55.600 [DEBUG] [Thread-125800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:55.601 [DEBUG] [Thread-125800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:55.605 [DEBUG] [Thread-125800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:55.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:55.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:25:55.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:25:55.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:25:55.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:55.619 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:25:55.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:55.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:25:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.476125 -999.00  +18.40  18.81     34   +2.60 1 1 1 1 1   888    0 14.90 -43.07 ----- 20.7 18.8 268.8 35.6 25.1 -27.7 24.3 -25.8 24.2 -24.6 25.6 -27.6
2025-09-28T13:25:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:25:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:25:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.476125
2025-09-28T13:25:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:25:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:25:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:25:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:25:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:25:55.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:25:22', tmtdew=18.67, humidity=28.41, cloud=0.0, wind=27.0, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:25:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:25:55.622 [DEBUG] [Thread-125800] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:25:55.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-28T13:25:55.718 [DEBUG] [Thread-125803] [transport.py] [_log()] starting thread (client mode): 0x2b95d510
2025-09-28T13:25:55.718 [DEBUG] [Thread-125803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:25:55.733 [DEBUG] [Thread-125803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:25:55.733 [INFO] [Thread-125803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] client lang: <none>
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] server lang: <none>
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] kex follows: False
2025-09-28T13:25:55.740 [DEBUG] [Thread-125803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] Compression: none
2025-09-28T13:25:55.741 [DEBUG] [Thread-125803] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:25:55.795 [DEBUG] [Thread-125803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:25:55.796 [DEBUG] [Thread-125803] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:25:55.796 [DEBUG] [Thread-125803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:25:55.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:25:55.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:25:55.853 [DEBUG] [Thread-125803] [transport.py] [_log()] userauth is OK
2025-09-28T13:25:55.853 [DEBUG] [Thread-125803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:25:55.853 [DEBUG] [Thread-125803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:25:55.853 [DEBUG] [Thread-125803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:25:55.853 [DEBUG] [Thread-125803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:25:55.868 [INFO] [Thread-125803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:25:55.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-28T13:25:55.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:25:56.832 [DEBUG] [Thread-125803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:25:56.832 [DEBUG] [Thread-125803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:25:56.880 [DEBUG] [Thread-125803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:25:56.880 [DEBUG] [Thread-125803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:25:56.888 [DEBUG] [Thread-125803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:25:56.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:25:56.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-28T13:25: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') -> 00000000
2025-09-28T13:25:56.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:25:56.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:25:56.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:25:56.921 [DEBUG] [Thread-125803] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:26:02.760 [DEBUG] [Thread-125805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:06.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:26:06.924 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:26:06.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-28T13:26:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 25, 54), 18.84, 28.46, 0.0, 21.23, 18.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:26:07.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:25:54
2025-09-28T13:26:07.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:26:07.776 [DEBUG] [Thread-125806] [transport.py] [_log()] starting thread (client mode): 0x2e3c21d0
2025-09-28T13:26:07.776 [DEBUG] [Thread-125806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:26:07.795 [DEBUG] [Thread-125806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:26:07.795 [INFO] [Thread-125806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:26:07.798 [DEBUG] [Thread-125806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:26:07.798 [DEBUG] [Thread-125806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] client lang: <none>
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] server lang: <none>
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] kex follows: False
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] Compression: none
2025-09-28T13:26:07.799 [DEBUG] [Thread-125806] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:26:07.815 [DEBUG] [Thread-125806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:26:07.816 [DEBUG] [Thread-125806] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:26:07.816 [DEBUG] [Thread-125806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:26:07.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:26:07.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:26:07.860 [DEBUG] [Thread-125806] [transport.py] [_log()] userauth is OK
2025-09-28T13:26:07.861 [DEBUG] [Thread-125806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:26:07.861 [DEBUG] [Thread-125806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:26:07.861 [DEBUG] [Thread-125806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:26:07.861 [DEBUG] [Thread-125806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:26:07.880 [INFO] [Thread-125806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:26:07.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:26:08.677 [DEBUG] [Thread-125806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:26:08.677 [DEBUG] [Thread-125806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:26:08.678 [DEBUG] [Thread-125806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:26:08.718 [DEBUG] [Thread-125806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:26:08.719 [DEBUG] [Thread-125806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:26:08.721 [DEBUG] [Thread-125806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:26:08.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:26:08.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:26:08.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:26:08.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:26:08.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:26:08.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:26:08.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:26:08.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:26:08.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:26:08.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.476125 -999.00  +18.40  18.81     34   +2.60 1 1 1 1 1   888    0 14.90 -43.07 ----- 20.7 18.8 268.8 35.6 25.1 -27.7 24.3 -25.8 24.2 -24.6 25.6 -27.6
2025-09-28T13:26:08.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:26:08.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:26:08.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.476125
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:26:08.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:25:54', tmtdew=18.84, humidity=28.46, cloud=0.0, wind=21.23, temperature=18.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:25:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:26:08.747 [DEBUG] [Thread-125806] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:26:08.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-28T13:26:12.041 [DEBUG] [Thread-125809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:17.809 [DEBUG] [Thread-125810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:32.851 [DEBUG] [Thread-125811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:47.882 [DEBUG] [Thread-125812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:54.560 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:26:54.561 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:02.911 [DEBUG] [Thread-125813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:12.094 [DEBUG] [Thread-125814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:17.937 [DEBUG] [Thread-125815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:32.965 [DEBUG] [Thread-125816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:47.992 [DEBUG] [Thread-125817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:54.702 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:27:54.703 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:03.024 [DEBUG] [Thread-125818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:12.143 [DEBUG] [Thread-125819 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:18.053 [DEBUG] [Thread-125820 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:22.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-28T13:28:32.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:28:32.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:28:32.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-28T13:28:32.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 28, 3), 18.68, 28.23, 0.0, 23.29, 18.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:28:32.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:28:03
2025-09-28T13:28:32.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:28:33.067 [DEBUG] [Thread-125821] [transport.py] [_log()] starting thread (client mode): 0x2b98ac50
2025-09-28T13:28:33.067 [DEBUG] [Thread-125821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:33.081 [DEBUG] [Thread-125822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:33.087 [DEBUG] [Thread-125821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:28:33.087 [INFO] [Thread-125821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:33.090 [DEBUG] [Thread-125821] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] Compression: none
2025-09-28T13:28:33.091 [DEBUG] [Thread-125821] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:33.107 [DEBUG] [Thread-125821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:33.108 [DEBUG] [Thread-125821] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:33.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:28:33.109 [DEBUG] [Thread-125821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:28:33.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:33.111 [DEBUG] [Thread-125821] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:33.111 [DEBUG] [Thread-125821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:33.111 [DEBUG] [Thread-125821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:33.111 [DEBUG] [Thread-125821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:28:33.111 [DEBUG] [Thread-125821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:33.129 [INFO] [Thread-125821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:33.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:28:33.765 [DEBUG] [Thread-125821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:28:33.765 [DEBUG] [Thread-125821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:28:33.765 [DEBUG] [Thread-125821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:28:33.806 [DEBUG] [Thread-125821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:28:33.806 [DEBUG] [Thread-125821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:28:33.809 [DEBUG] [Thread-125821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:28:33.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:28:33.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:28:33.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:28:33.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:28:33.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:28:33.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:28:33.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:28:33.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:28:33.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:28:33.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.477514 -999.00  +18.00  12.30     36   +2.90 1 1 1 1 1   888    0 14.44 -58.58 ----- 12.6 12.3 258.7 27.6 24.8 -27.7 24.1 -24.4 23.9 -23.1 25.1 -26.1
2025-09-28T13:28:33.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:28:33.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:28:33.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.477514
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:28:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:28:03', tmtdew=18.68, humidity=28.23, cloud=0.0, wind=23.29, temperature=18.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:27:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:28:33.833 [DEBUG] [Thread-125821] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:28:33.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-28T13:28:33.930 [DEBUG] [Thread-125825] [transport.py] [_log()] starting thread (client mode): 0x2b95f970
2025-09-28T13:28:33.930 [DEBUG] [Thread-125825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:33.946 [DEBUG] [Thread-125825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:28:33.946 [INFO] [Thread-125825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:33.954 [DEBUG] [Thread-125825] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] Compression: none
2025-09-28T13:28:33.955 [DEBUG] [Thread-125825] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:34.010 [DEBUG] [Thread-125825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:34.011 [DEBUG] [Thread-125825] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:34.011 [DEBUG] [Thread-125825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:28:34.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:28:34.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:34.066 [DEBUG] [Thread-125825] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:34.067 [DEBUG] [Thread-125825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:34.067 [DEBUG] [Thread-125825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:34.067 [DEBUG] [Thread-125825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:28:34.067 [DEBUG] [Thread-125825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:34.086 [INFO] [Thread-125825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:34.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-28T13:28:34.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:28:35.072 [DEBUG] [Thread-125825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:28:35.072 [DEBUG] [Thread-125825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:28:35.120 [DEBUG] [Thread-125825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:28:35.120 [DEBUG] [Thread-125825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:28:35.129 [DEBUG] [Thread-125825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:28:35.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:28:35.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-28T13:28:35.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') -> 00000000
2025-09-28T13:28:35.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:28:35.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:28:35.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:28:35.164 [DEBUG] [Thread-125825] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:28:45.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:28:45.167 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:28:45.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-28T13:28:45.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 28, 34), 18.68, 28.63, 0.0, 20.77, 19.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:28:45.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:28:34
2025-09-28T13:28:45.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:28:46.043 [DEBUG] [Thread-125827] [transport.py] [_log()] starting thread (client mode): 0x2b9def50
2025-09-28T13:28:46.043 [DEBUG] [Thread-125827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:46.063 [DEBUG] [Thread-125827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:28:46.063 [INFO] [Thread-125827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:28:46.065 [DEBUG] [Thread-125827] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:46.065 [DEBUG] [Thread-125827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:28:46.065 [DEBUG] [Thread-125827] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:46.065 [DEBUG] [Thread-125827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] Compression: none
2025-09-28T13:28:46.066 [DEBUG] [Thread-125827] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:46.082 [DEBUG] [Thread-125827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:46.083 [DEBUG] [Thread-125827] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:46.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:28:46.084 [DEBUG] [Thread-125827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:28:46.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:46.085 [DEBUG] [Thread-125827] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:46.086 [DEBUG] [Thread-125827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:46.086 [DEBUG] [Thread-125827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:46.086 [DEBUG] [Thread-125827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:28:46.086 [DEBUG] [Thread-125827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:46.110 [INFO] [Thread-125827] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:46.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:28:46.709 [DEBUG] [Thread-125827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:28:46.710 [DEBUG] [Thread-125827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:28:46.710 [DEBUG] [Thread-125827] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:28:46.750 [DEBUG] [Thread-125827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:28:46.751 [DEBUG] [Thread-125827] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:28:46.753 [DEBUG] [Thread-125827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:28:46.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:28:46.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:28:46.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:28:46.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:28:46.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:28:46.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:28:46.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:28:46.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:28:46.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:28:46.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478209 -999.00  +19.10   9.41     34   +3.20 1 1 1 1 1   888    0 14.21 -66.27 ----- 10.0 9.4 256.8 16.9 25.2 -25.2 24.4 -24.3 24.4 -23.5 25.4 -24.9
2025-09-28T13:28:46.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:28:46.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:28:46.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478209
2025-09-28T13:28:46.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:28:46.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:28:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:28:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:28:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:28:46.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:28:34', tmtdew=18.68, humidity=28.63, cloud=0.0, wind=20.77, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:28:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:28:46.779 [DEBUG] [Thread-125827] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:28:46.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-28T13:28:46.876 [DEBUG] [Thread-125830] [transport.py] [_log()] starting thread (client mode): 0x2b989990
2025-09-28T13:28:46.876 [DEBUG] [Thread-125830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:46.891 [DEBUG] [Thread-125830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:28:46.891 [INFO] [Thread-125830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:46.899 [DEBUG] [Thread-125830] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] Compression: none
2025-09-28T13:28:46.900 [DEBUG] [Thread-125830] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:46.958 [DEBUG] [Thread-125830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:46.959 [DEBUG] [Thread-125830] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:46.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:28:46.960 [DEBUG] [Thread-125830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:28:46.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:47.014 [DEBUG] [Thread-125830] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:47.015 [DEBUG] [Thread-125830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:47.015 [DEBUG] [Thread-125830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:47.015 [DEBUG] [Thread-125830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:28:47.015 [DEBUG] [Thread-125830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:47.033 [INFO] [Thread-125830] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:47.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-28T13:28:47.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:28:47.964 [DEBUG] [Thread-125830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:28:47.965 [DEBUG] [Thread-125830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:28:48.012 [DEBUG] [Thread-125830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:28:48.012 [DEBUG] [Thread-125830] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:28:48.021 [DEBUG] [Thread-125830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:28:48.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:28:48.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-28T13:28:48.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-28T13:28:48.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:28:48.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:28:48.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:28:48.056 [DEBUG] [Thread-125830] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:28:48.110 [DEBUG] [Thread-125832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:54.844 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:54.845 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:28:58.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:28:58.058 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:28:58.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-28T13:28:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 28, 34), 18.68, 28.63, 0.0, 20.77, 19.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:28:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:28:34
2025-09-28T13:28:58.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:28:58.937 [DEBUG] [Thread-125833] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d50
2025-09-28T13:28:58.937 [DEBUG] [Thread-125833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:58.960 [DEBUG] [Thread-125833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:28:58.960 [INFO] [Thread-125833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] Compression: none
2025-09-28T13:28:58.965 [DEBUG] [Thread-125833] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:58.979 [DEBUG] [Thread-125833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:58.980 [DEBUG] [Thread-125833] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:58.980 [DEBUG] [Thread-125833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:28:58.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:28:58.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:58.982 [DEBUG] [Thread-125833] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:58.983 [DEBUG] [Thread-125833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:58.983 [DEBUG] [Thread-125833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:58.983 [DEBUG] [Thread-125833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:28:58.983 [DEBUG] [Thread-125833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:59.001 [INFO] [Thread-125833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:59.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:28:59.642 [DEBUG] [Thread-125833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:28:59.643 [DEBUG] [Thread-125833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:28:59.643 [DEBUG] [Thread-125833] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:28:59.683 [DEBUG] [Thread-125833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:28:59.683 [DEBUG] [Thread-125833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:28:59.686 [DEBUG] [Thread-125833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:28:59.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:28:59.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:28:59.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:28:59.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:28:59.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:28:59.709 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:28:59.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:28:59.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478209 -999.00  +19.10   9.41     34   +3.20 1 1 1 1 1   888    0 14.21 -66.27 ----- 10.0 9.4 256.8 16.9 25.2 -25.2 24.4 -24.3 24.4 -23.5 25.4 -24.9
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478209
2025-09-28T13:28:59.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:28:59.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:28:59.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:28:59.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:28:59.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:28:59.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:28:34', tmtdew=18.68, humidity=28.63, cloud=0.0, wind=20.77, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:28:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:28:59.712 [DEBUG] [Thread-125833] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:28:59.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:28:59.810 [DEBUG] [Thread-125836] [transport.py] [_log()] starting thread (client mode): 0x2b95c3a0
2025-09-28T13:28:59.810 [DEBUG] [Thread-125836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:28:59.830 [DEBUG] [Thread-125836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:28:59.830 [INFO] [Thread-125836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] client lang: <none>
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] server lang: <none>
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] kex follows: False
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] Compression: none
2025-09-28T13:28:59.842 [DEBUG] [Thread-125836] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:28:59.898 [DEBUG] [Thread-125836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:28:59.898 [DEBUG] [Thread-125836] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:28:59.899 [DEBUG] [Thread-125836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:28:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:28:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:28:59.958 [DEBUG] [Thread-125836] [transport.py] [_log()] userauth is OK
2025-09-28T13:28:59.958 [DEBUG] [Thread-125836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:28:59.958 [DEBUG] [Thread-125836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:28:59.958 [DEBUG] [Thread-125836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:28:59.958 [DEBUG] [Thread-125836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:28:59.983 [INFO] [Thread-125836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:28:59.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:28:59.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:00.920 [DEBUG] [Thread-125836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:00.920 [DEBUG] [Thread-125836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:00.971 [DEBUG] [Thread-125836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:00.971 [DEBUG] [Thread-125836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:00.983 [DEBUG] [Thread-125836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:00.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:00.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')
2025-09-28T13:29:01.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') -> 00000000
2025-09-28T13:29:01.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:01.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:01.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:01.025 [DEBUG] [Thread-125836] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:03.159 [DEBUG] [Thread-125838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:11.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:29:11.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:29:11.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-28T13:29:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 29, 6), 18.78, 28.48, 0.0, 18.63, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:29:11.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:29:06
2025-09-28T13:29:11.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:29:11.876 [DEBUG] [Thread-125839] [transport.py] [_log()] starting thread (client mode): 0x2b95edd0
2025-09-28T13:29:11.876 [DEBUG] [Thread-125839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:11.895 [DEBUG] [Thread-125839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:29:11.895 [INFO] [Thread-125839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:29:11.898 [DEBUG] [Thread-125839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:11.898 [DEBUG] [Thread-125839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:29:11.898 [DEBUG] [Thread-125839] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:11.899 [DEBUG] [Thread-125839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:11.900 [DEBUG] [Thread-125839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:11.900 [DEBUG] [Thread-125839] [transport.py] [_log()] Compression: none
2025-09-28T13:29:11.900 [DEBUG] [Thread-125839] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:11.915 [DEBUG] [Thread-125839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:11.916 [DEBUG] [Thread-125839] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:11.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:29:11.917 [DEBUG] [Thread-125839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:29:11.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:11.919 [DEBUG] [Thread-125839] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:11.919 [DEBUG] [Thread-125839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:11.919 [DEBUG] [Thread-125839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:11.919 [DEBUG] [Thread-125839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:29:11.919 [DEBUG] [Thread-125839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:11.936 [INFO] [Thread-125839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:11.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:12.207 [DEBUG] [Thread-125841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:12.680 [DEBUG] [Thread-125839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:12.680 [DEBUG] [Thread-125839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:12.681 [DEBUG] [Thread-125839] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:29:12.721 [DEBUG] [Thread-125839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:12.722 [DEBUG] [Thread-125839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:12.723 [DEBUG] [Thread-125839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:12.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:12.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:29:12.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:29:12.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:29:12.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:12.744 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:29:12.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:12.744 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:12.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:29:12.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478556 -999.00  +19.60  11.61     34   +3.40 1 1 1 1 1   888    0 14.11 -67.84 ----- 12.6 11.6 277.3 12.6 25.3 -25.8 24.5 -24.6 24.4 -23.7 25.6 -25.7
2025-09-28T13:29:12.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:29:12.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:29:12.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478556
2025-09-28T13:29:12.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:29:12.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:29:12.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:29:12.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:29:12.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:29:12.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:29:06', tmtdew=18.78, humidity=28.48, cloud=0.0, wind=18.63, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:29:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:29:12.747 [DEBUG] [Thread-125839] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:12.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-28T13:29:12.838 [DEBUG] [Thread-125843] [transport.py] [_log()] starting thread (client mode): 0x2b987eb0
2025-09-28T13:29:12.838 [DEBUG] [Thread-125843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:12.854 [DEBUG] [Thread-125843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:29:12.854 [INFO] [Thread-125843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:29:12.861 [DEBUG] [Thread-125843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:12.862 [DEBUG] [Thread-125843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:12.863 [DEBUG] [Thread-125843] [transport.py] [_log()] Compression: none
2025-09-28T13:29:12.863 [DEBUG] [Thread-125843] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:12.918 [DEBUG] [Thread-125843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:12.918 [DEBUG] [Thread-125843] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:12.919 [DEBUG] [Thread-125843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:29:12.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:29:12.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:12.974 [DEBUG] [Thread-125843] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:12.974 [DEBUG] [Thread-125843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:12.975 [DEBUG] [Thread-125843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:12.975 [DEBUG] [Thread-125843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:29:12.975 [DEBUG] [Thread-125843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:12.995 [INFO] [Thread-125843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:12.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:29:12.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:14.008 [DEBUG] [Thread-125843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:14.008 [DEBUG] [Thread-125843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:14.056 [DEBUG] [Thread-125843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:14.056 [DEBUG] [Thread-125843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:14.065 [DEBUG] [Thread-125843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:14.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:14.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-28T13:29:14.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-28T13:29:14.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:14.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:14.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:14.100 [DEBUG] [Thread-125843] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:18.187 [DEBUG] [Thread-125845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:24.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:29:24.103 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:29:24.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-28T13:29:24.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 29, 6), 18.78, 28.48, 0.0, 18.63, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:29:24.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:29:06
2025-09-28T13:29:24.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:29:24.970 [DEBUG] [Thread-125846] [transport.py] [_log()] starting thread (client mode): 0x2b9875b0
2025-09-28T13:29:24.970 [DEBUG] [Thread-125846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:24.990 [DEBUG] [Thread-125846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:29:24.990 [INFO] [Thread-125846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] Compression: none
2025-09-28T13:29:24.993 [DEBUG] [Thread-125846] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:25.011 [DEBUG] [Thread-125846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:25.011 [DEBUG] [Thread-125846] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:25.011 [DEBUG] [Thread-125846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:29:25.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:29:25.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:25.012 [DEBUG] [Thread-125846] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:25.012 [DEBUG] [Thread-125846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:25.012 [DEBUG] [Thread-125846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:25.012 [DEBUG] [Thread-125846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:29:25.012 [DEBUG] [Thread-125846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:25.021 [INFO] [Thread-125846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:25.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:25.631 [DEBUG] [Thread-125846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:25.631 [DEBUG] [Thread-125846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:25.632 [DEBUG] [Thread-125846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:29:25.672 [DEBUG] [Thread-125846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:25.672 [DEBUG] [Thread-125846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:25.675 [DEBUG] [Thread-125846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:25.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:25.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:29:25.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:29:25.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:29:25.687 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:25.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:29:25.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:25.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478556 -999.00  +19.60  11.61     34   +3.40 1 1 1 1 1   888    0 14.11 -67.84 ----- 12.6 11.6 277.3 12.6 25.3 -25.8 24.5 -24.6 24.4 -23.7 25.6 -25.7
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478556
2025-09-28T13:29:25.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:29:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:29:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:29:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:29:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:29:25.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:29:06', tmtdew=18.78, humidity=28.48, cloud=0.0, wind=18.63, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:29:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:29:25.691 [DEBUG] [Thread-125846] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:25.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-28T13:29:25.787 [DEBUG] [Thread-125849] [transport.py] [_log()] starting thread (client mode): 0x2b9ad600
2025-09-28T13:29:25.787 [DEBUG] [Thread-125849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:25.802 [DEBUG] [Thread-125849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:29:25.802 [INFO] [Thread-125849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:29:25.809 [DEBUG] [Thread-125849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:25.809 [DEBUG] [Thread-125849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] Compression: none
2025-09-28T13:29:25.810 [DEBUG] [Thread-125849] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:25.866 [DEBUG] [Thread-125849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:25.866 [DEBUG] [Thread-125849] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:25.867 [DEBUG] [Thread-125849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:29:25.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:29:25.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:25.922 [DEBUG] [Thread-125849] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:25.922 [DEBUG] [Thread-125849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:25.922 [DEBUG] [Thread-125849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:25.923 [DEBUG] [Thread-125849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:29:25.923 [DEBUG] [Thread-125849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:25.941 [INFO] [Thread-125849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:25.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:29:25.942 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:26.886 [DEBUG] [Thread-125849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:26.886 [DEBUG] [Thread-125849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:26.934 [DEBUG] [Thread-125849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:26.934 [DEBUG] [Thread-125849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:26.942 [DEBUG] [Thread-125849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:26.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:26.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')
2025-09-28T13:29:26.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') -> 00000000
2025-09-28T13:29:26.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:26.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:26.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:26.973 [DEBUG] [Thread-125849] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:33.227 [DEBUG] [Thread-125851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:36.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:29:36.976 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:29:36.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-28T13:29:37.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 29, 6), 18.78, 28.48, 0.0, 18.63, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:29:37.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:29:06
2025-09-28T13:29:37.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:29:37.832 [DEBUG] [Thread-125852] [transport.py] [_log()] starting thread (client mode): 0x2b9ae2c0
2025-09-28T13:29:37.833 [DEBUG] [Thread-125852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:37.853 [DEBUG] [Thread-125852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:29:37.853 [INFO] [Thread-125852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:37.857 [DEBUG] [Thread-125852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] Compression: none
2025-09-28T13:29:37.858 [DEBUG] [Thread-125852] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:37.875 [DEBUG] [Thread-125852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:37.875 [DEBUG] [Thread-125852] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:37.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:29:37.876 [DEBUG] [Thread-125852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:29:37.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:37.878 [DEBUG] [Thread-125852] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:37.878 [DEBUG] [Thread-125852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:37.879 [DEBUG] [Thread-125852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:37.879 [DEBUG] [Thread-125852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:29:37.879 [DEBUG] [Thread-125852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:37.893 [INFO] [Thread-125852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:37.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:38.663 [DEBUG] [Thread-125852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:38.664 [DEBUG] [Thread-125852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:38.664 [DEBUG] [Thread-125852] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:29:38.704 [DEBUG] [Thread-125852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:38.704 [DEBUG] [Thread-125852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:38.708 [DEBUG] [Thread-125852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:38.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:38.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:29:38.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:29:38.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:29:38.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:38.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:29:38.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:38.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478556 -999.00  +19.60  11.61     34   +3.40 1 1 1 1 1   888    0 14.11 -67.84 ----- 12.6 11.6 277.3 12.6 25.3 -25.8 24.5 -24.6 24.4 -23.7 25.6 -25.7
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478556
2025-09-28T13:29:38.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:29:38.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:29:38.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:29:38.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:29:38.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:29:38.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:29:06', tmtdew=18.78, humidity=28.48, cloud=0.0, wind=18.63, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:29:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:29:38.732 [DEBUG] [Thread-125852] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:38.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-28T13:29:38.829 [DEBUG] [Thread-125855] [transport.py] [_log()] starting thread (client mode): 0x2b986530
2025-09-28T13:29:38.829 [DEBUG] [Thread-125855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:38.844 [DEBUG] [Thread-125855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:29:38.844 [INFO] [Thread-125855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:29:38.851 [DEBUG] [Thread-125855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] Compression: none
2025-09-28T13:29:38.852 [DEBUG] [Thread-125855] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:38.910 [DEBUG] [Thread-125855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:38.911 [DEBUG] [Thread-125855] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:38.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:29:38.912 [DEBUG] [Thread-125855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:29:38.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:38.968 [DEBUG] [Thread-125855] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:38.968 [DEBUG] [Thread-125855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:38.968 [DEBUG] [Thread-125855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:38.968 [DEBUG] [Thread-125855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:29:38.968 [DEBUG] [Thread-125855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:38.989 [INFO] [Thread-125855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:38.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-28T13:29:38.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:39.957 [DEBUG] [Thread-125855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:39.957 [DEBUG] [Thread-125855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:40.005 [DEBUG] [Thread-125855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:40.005 [DEBUG] [Thread-125855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:40.014 [DEBUG] [Thread-125855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:40.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:40.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-28T13:29:40.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-28T13:29:40.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:40.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:40.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:40.045 [DEBUG] [Thread-125855] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:48.255 [DEBUG] [Thread-125857 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:50.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:29:50.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:29:50.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-28T13:29:50.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 29, 38), 19.02, 28.08, 0.0, 20.12, 19.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:29:50.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:29:38
2025-09-28T13:29:50.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:29:50.897 [DEBUG] [Thread-125858] [transport.py] [_log()] starting thread (client mode): 0x2b985e70
2025-09-28T13:29:50.898 [DEBUG] [Thread-125858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:50.917 [DEBUG] [Thread-125858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:29:50.917 [INFO] [Thread-125858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:29:50.919 [DEBUG] [Thread-125858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:50.919 [DEBUG] [Thread-125858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:29:50.919 [DEBUG] [Thread-125858] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] Compression: none
2025-09-28T13:29:50.920 [DEBUG] [Thread-125858] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:50.937 [DEBUG] [Thread-125858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:50.938 [DEBUG] [Thread-125858] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:50.938 [DEBUG] [Thread-125858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:29:50.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:29:50.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:50.940 [DEBUG] [Thread-125858] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:50.941 [DEBUG] [Thread-125858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:50.941 [DEBUG] [Thread-125858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:50.941 [DEBUG] [Thread-125858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:29:50.941 [DEBUG] [Thread-125858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:50.965 [INFO] [Thread-125858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:50.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:51.580 [DEBUG] [Thread-125858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:51.580 [DEBUG] [Thread-125858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:51.581 [DEBUG] [Thread-125858] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:29:51.621 [DEBUG] [Thread-125858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:51.621 [DEBUG] [Thread-125858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:51.624 [DEBUG] [Thread-125858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:51.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:51.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:29:51.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:29:51.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:29:51.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:51.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:29:51.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:51.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478903 -999.00  +19.10  15.39     34   +3.00 1 1 1 1 1   888    0 14.06 -69.73 ----- 14.2 15.4 275.4 23.0 25.5 -25.9 24.5 -24.9 24.4 -25.7 25.7 -24.9
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478903
2025-09-28T13:29:51.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:29:51.646 [DEBUG] [Thread-125858] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:51.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:29:51.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:29:51.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:29:51.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:29:51.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:29:38', tmtdew=19.02, humidity=28.08, cloud=0.0, wind=20.12, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:29:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:29:51.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:29:51.752 [DEBUG] [Thread-125861] [transport.py] [_log()] starting thread (client mode): 0x2b9ae890
2025-09-28T13:29:51.752 [DEBUG] [Thread-125861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:29:51.766 [DEBUG] [Thread-125861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:29:51.766 [INFO] [Thread-125861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:29:51.773 [DEBUG] [Thread-125861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:51.774 [DEBUG] [Thread-125861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] client lang: <none>
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] server lang: <none>
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] kex follows: False
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] Compression: none
2025-09-28T13:29:51.775 [DEBUG] [Thread-125861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:29:51.833 [DEBUG] [Thread-125861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:29:51.834 [DEBUG] [Thread-125861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:29:51.834 [DEBUG] [Thread-125861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:29:51.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:29:51.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:29:51.889 [DEBUG] [Thread-125861] [transport.py] [_log()] userauth is OK
2025-09-28T13:29:51.890 [DEBUG] [Thread-125861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:29:51.890 [DEBUG] [Thread-125861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:29:51.890 [DEBUG] [Thread-125861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:29:51.890 [DEBUG] [Thread-125861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:29:51.908 [INFO] [Thread-125861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:29:51.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-28T13:29:51.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:29:52.842 [DEBUG] [Thread-125861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:29:52.842 [DEBUG] [Thread-125861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:29:52.890 [DEBUG] [Thread-125861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:29:52.890 [DEBUG] [Thread-125861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:29:52.899 [DEBUG] [Thread-125861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:29:52.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:29:52.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-28T13:29:52.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-28T13:29:52.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:29:52.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:29:52.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:29:52.933 [DEBUG] [Thread-125861] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:29:54.985 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:29:54.986 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:02.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:30:02.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:30:02.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-28T13:30:03.284 [DEBUG] [Thread-125863 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:03.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 29, 38), 19.02, 28.08, 0.0, 20.12, 19.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:30:03.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:29:38
2025-09-28T13:30:03.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:30:03.822 [DEBUG] [Thread-125864] [transport.py] [_log()] starting thread (client mode): 0x2b95d930
2025-09-28T13:30:03.823 [DEBUG] [Thread-125864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:03.844 [DEBUG] [Thread-125864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:30:03.844 [INFO] [Thread-125864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:30:03.847 [DEBUG] [Thread-125864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] Compression: none
2025-09-28T13:30:03.848 [DEBUG] [Thread-125864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:03.862 [DEBUG] [Thread-125864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:03.862 [DEBUG] [Thread-125864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:03.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:30:03.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:30:03.863 [DEBUG] [Thread-125864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:03.881 [INFO] [Thread-125864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:03.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:11.655 [DEBUG] [Thread-125864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:11.655 [DEBUG] [Thread-125864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:11.655 [DEBUG] [Thread-125864] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:30:11.696 [DEBUG] [Thread-125864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:11.696 [DEBUG] [Thread-125864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:11.698 [DEBUG] [Thread-125864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:11.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:11.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:30:11.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:30:11.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:30:11.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:11.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:30:11.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:11.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:11.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:30:11.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.478903 -999.00  +19.10  15.39     34   +3.00 1 1 1 1 1   888    0 14.06 -69.73 ----- 14.2 15.4 275.4 23.0 25.5 -25.9 24.5 -24.9 24.4 -25.7 25.7 -24.9
2025-09-28T13:30:11.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:30:11.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.478903
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:30:11.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:29:38', tmtdew=19.02, humidity=28.08, cloud=0.0, wind=20.12, temperature=19.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:29:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:30:11.765 [DEBUG] [Thread-125864] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:11.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-28T13:30:11.850 [DEBUG] [Thread-125867] [transport.py] [_log()] starting thread (client mode): 0x2b95e9b0
2025-09-28T13:30:11.850 [DEBUG] [Thread-125867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:11.868 [DEBUG] [Thread-125867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:30:11.868 [INFO] [Thread-125867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] Compression: none
2025-09-28T13:30:11.875 [DEBUG] [Thread-125867] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:11.932 [DEBUG] [Thread-125867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:11.932 [DEBUG] [Thread-125867] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:11.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:30:11.933 [DEBUG] [Thread-125867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:30:11.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:11.989 [DEBUG] [Thread-125867] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:11.989 [DEBUG] [Thread-125867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:11.989 [DEBUG] [Thread-125867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:11.989 [DEBUG] [Thread-125867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:30:11.989 [DEBUG] [Thread-125867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:12.008 [INFO] [Thread-125867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:12.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-28T13:30:12.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:12.260 [DEBUG] [Thread-125869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:13.027 [DEBUG] [Thread-125867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:13.027 [DEBUG] [Thread-125867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:13.075 [DEBUG] [Thread-125867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:13.075 [DEBUG] [Thread-125867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:13.084 [DEBUG] [Thread-125867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:13.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:13.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-28T13:30:13.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-28T13:30:13.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:13.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:13.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:13.119 [DEBUG] [Thread-125867] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:18.320 [DEBUG] [Thread-125870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:23.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:30:23.122 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:30:23.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-28T13:30:23.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 30, 10), 18.84, 28.43, 0.0, 18.95, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:30:23.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:30:10
2025-09-28T13:30:23.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:30:23.970 [DEBUG] [Thread-125871] [transport.py] [_log()] starting thread (client mode): 0x2b95d5a0
2025-09-28T13:30:23.970 [DEBUG] [Thread-125871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:23.991 [DEBUG] [Thread-125871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:30:23.991 [INFO] [Thread-125871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:30:23.994 [DEBUG] [Thread-125871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:23.994 [DEBUG] [Thread-125871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:30:23.994 [DEBUG] [Thread-125871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] Compression: none
2025-09-28T13:30:23.995 [DEBUG] [Thread-125871] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:24.012 [DEBUG] [Thread-125871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:24.012 [DEBUG] [Thread-125871] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:24.013 [DEBUG] [Thread-125871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:30:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:30:24.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:24.015 [DEBUG] [Thread-125871] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:24.015 [DEBUG] [Thread-125871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:24.016 [DEBUG] [Thread-125871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:24.016 [DEBUG] [Thread-125871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:30:24.016 [DEBUG] [Thread-125871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:24.039 [INFO] [Thread-125871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:24.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:24.643 [DEBUG] [Thread-125871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:24.644 [DEBUG] [Thread-125871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:24.644 [DEBUG] [Thread-125871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:30:24.684 [DEBUG] [Thread-125871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:24.685 [DEBUG] [Thread-125871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:24.689 [DEBUG] [Thread-125871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:24.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:24.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:30:24.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:30:24.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:30:24.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:24.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:30:24.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:24.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:30:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479250 -999.00  +18.90  12.07     34   +2.80 1 1 1 1 1   888    0 13.99 -67.42 ----- 21.5 12.1 259.2 19.4 25.5 -27.1 24.5 -25.6 24.6 -24.0 25.8 -26.7
2025-09-28T13:30:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:30:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:30:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479250
2025-09-28T13:30:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:30:24.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:30:24.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:30:24.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:30:24.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:30:24.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:30:10', tmtdew=18.84, humidity=28.43, cloud=0.0, wind=18.95, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:30:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:30:24.708 [DEBUG] [Thread-125871] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:24.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-28T13:30:24.805 [DEBUG] [Thread-125874] [transport.py] [_log()] starting thread (client mode): 0x2e3c0bb0
2025-09-28T13:30:24.805 [DEBUG] [Thread-125874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:24.822 [DEBUG] [Thread-125874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:30:24.822 [INFO] [Thread-125874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:24.829 [DEBUG] [Thread-125874] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] Compression: none
2025-09-28T13:30:24.830 [DEBUG] [Thread-125874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:24.888 [DEBUG] [Thread-125874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:24.889 [DEBUG] [Thread-125874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:24.889 [DEBUG] [Thread-125874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:30:24.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:30:24.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:24.945 [DEBUG] [Thread-125874] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:24.946 [DEBUG] [Thread-125874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:24.946 [DEBUG] [Thread-125874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:24.946 [DEBUG] [Thread-125874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:30:24.946 [DEBUG] [Thread-125874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:24.965 [INFO] [Thread-125874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:24.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:30:24.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:25.926 [DEBUG] [Thread-125874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:25.927 [DEBUG] [Thread-125874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:25.974 [DEBUG] [Thread-125874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:25.974 [DEBUG] [Thread-125874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:25.983 [DEBUG] [Thread-125874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:25.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:25.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-28T13:30:26.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-28T13:30:26.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:26.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:26.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:26.018 [DEBUG] [Thread-125874] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:33.351 [DEBUG] [Thread-125876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:36.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:30:36.021 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:30:36.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-28T13:30:36.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 30, 10), 18.84, 28.43, 0.0, 18.95, 19.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:30:36.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:30:10
2025-09-28T13:30:36.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:30:36.861 [DEBUG] [Thread-125877] [transport.py] [_log()] starting thread (client mode): 0x2b987370
2025-09-28T13:30:36.862 [DEBUG] [Thread-125877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:36.881 [DEBUG] [Thread-125877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:30:36.881 [INFO] [Thread-125877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:30:36.885 [DEBUG] [Thread-125877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:36.885 [DEBUG] [Thread-125877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:30:36.885 [DEBUG] [Thread-125877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:36.885 [DEBUG] [Thread-125877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] Compression: none
2025-09-28T13:30:36.886 [DEBUG] [Thread-125877] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:36.906 [DEBUG] [Thread-125877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:36.907 [DEBUG] [Thread-125877] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:36.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:30:36.908 [DEBUG] [Thread-125877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:30:36.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:36.910 [DEBUG] [Thread-125877] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:36.910 [DEBUG] [Thread-125877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:36.910 [DEBUG] [Thread-125877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:36.910 [DEBUG] [Thread-125877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:30:36.911 [DEBUG] [Thread-125877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:36.934 [INFO] [Thread-125877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:36.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:37.696 [DEBUG] [Thread-125877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:37.696 [DEBUG] [Thread-125877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:37.696 [DEBUG] [Thread-125877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:30:37.737 [DEBUG] [Thread-125877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:37.737 [DEBUG] [Thread-125877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:37.740 [DEBUG] [Thread-125877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:37.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:37.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:30:37.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:30:37.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:30:37.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:37.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:30:37.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:37.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:37.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:30:37.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479250 -999.00  +18.90  12.07     34   +2.80 1 1 1 1 1   888    0 13.99 -67.42 ----- 21.5 12.1 259.2 19.4 25.5 -27.1 24.5 -25.6 24.6 -24.0 25.8 -26.7
2025-09-28T13:30:37.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:30:37.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:30:37.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479250
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:30:37.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:30:10', tmtdew=18.84, humidity=28.43, cloud=0.0, wind=18.95, temperature=19.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:30:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:30:37.761 [DEBUG] [Thread-125877] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:37.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-28T13:30:37.858 [DEBUG] [Thread-125880] [transport.py] [_log()] starting thread (client mode): 0x2b9acb50
2025-09-28T13:30:37.858 [DEBUG] [Thread-125880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:37.873 [DEBUG] [Thread-125880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:30:37.874 [INFO] [Thread-125880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:30:37.881 [DEBUG] [Thread-125880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:37.881 [DEBUG] [Thread-125880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:30:37.881 [DEBUG] [Thread-125880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:37.881 [DEBUG] [Thread-125880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:37.881 [DEBUG] [Thread-125880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] Compression: none
2025-09-28T13:30:37.882 [DEBUG] [Thread-125880] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:37.941 [DEBUG] [Thread-125880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:37.941 [DEBUG] [Thread-125880] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:37.942 [DEBUG] [Thread-125880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:30:37.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:30:37.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:37.997 [DEBUG] [Thread-125880] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:37.997 [DEBUG] [Thread-125880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:37.997 [DEBUG] [Thread-125880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:37.998 [DEBUG] [Thread-125880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:30:37.998 [DEBUG] [Thread-125880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:38.018 [INFO] [Thread-125880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:38.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-28T13:30:38.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:39.069 [DEBUG] [Thread-125880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:39.069 [DEBUG] [Thread-125880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:39.117 [DEBUG] [Thread-125880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:39.118 [DEBUG] [Thread-125880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:39.127 [DEBUG] [Thread-125880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:39.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:39.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-28T13:30:39.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-28T13:30:39.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:39.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:39.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:39.162 [DEBUG] [Thread-125880] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:48.395 [DEBUG] [Thread-125882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:49.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:30:49.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:30:49.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-28T13:30:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 30, 42), 18.92, 27.69, 0.0, 26.04, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:30:49.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:30:42
2025-09-28T13:30:49.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:30:50.002 [DEBUG] [Thread-125883] [transport.py] [_log()] starting thread (client mode): 0x2b9c0490
2025-09-28T13:30:50.002 [DEBUG] [Thread-125883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:50.028 [DEBUG] [Thread-125883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:30:50.028 [INFO] [Thread-125883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:30:50.031 [DEBUG] [Thread-125883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:50.031 [DEBUG] [Thread-125883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:30:50.031 [DEBUG] [Thread-125883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] Compression: none
2025-09-28T13:30:50.032 [DEBUG] [Thread-125883] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:50.048 [DEBUG] [Thread-125883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:50.049 [DEBUG] [Thread-125883] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:50.049 [DEBUG] [Thread-125883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:30:50.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:30:50.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:50.050 [DEBUG] [Thread-125883] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:50.051 [DEBUG] [Thread-125883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:50.051 [DEBUG] [Thread-125883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:50.051 [DEBUG] [Thread-125883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:30:50.051 [DEBUG] [Thread-125883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:50.079 [INFO] [Thread-125883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:50.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:50.815 [DEBUG] [Thread-125883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:50.815 [DEBUG] [Thread-125883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:50.815 [DEBUG] [Thread-125883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:30:50.856 [DEBUG] [Thread-125883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:50.856 [DEBUG] [Thread-125883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:50.859 [DEBUG] [Thread-125883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:50.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:50.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:30:50.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:30:50.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:30:50.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:50.875 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:30:50.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479250 -999.00  +18.90  12.07     34   +2.80 1 1 1 1 1   888    0 13.99 -67.42 ----- 21.5 12.1 259.2 19.4 25.5 -27.1 24.5 -25.6 24.6 -24.0 25.8 -26.7
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:30:50.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479250
2025-09-28T13:30:50.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:30:50.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:30:50.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:30:50.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:30:50.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:30:50.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:30:42', tmtdew=18.92, humidity=27.69, cloud=0.0, wind=26.04, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:30:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:30:50.878 [DEBUG] [Thread-125883] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:50.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-28T13:30:50.972 [DEBUG] [Thread-125886] [transport.py] [_log()] starting thread (client mode): 0x2b95f490
2025-09-28T13:30:50.972 [DEBUG] [Thread-125886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:30:50.986 [DEBUG] [Thread-125886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:30:50.986 [INFO] [Thread-125886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] client lang: <none>
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] server lang: <none>
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] kex follows: False
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] Compression: none
2025-09-28T13:30:50.994 [DEBUG] [Thread-125886] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:30:51.057 [DEBUG] [Thread-125886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:30:51.058 [DEBUG] [Thread-125886] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:30:51.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:30:51.059 [DEBUG] [Thread-125886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:30:51.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:30:51.113 [DEBUG] [Thread-125886] [transport.py] [_log()] userauth is OK
2025-09-28T13:30:51.113 [DEBUG] [Thread-125886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:30:51.113 [DEBUG] [Thread-125886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:30:51.113 [DEBUG] [Thread-125886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:30:51.113 [DEBUG] [Thread-125886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:30:51.131 [INFO] [Thread-125886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:30:51.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-28T13:30:51.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:30:52.088 [DEBUG] [Thread-125886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:30:52.088 [DEBUG] [Thread-125886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:30:52.136 [DEBUG] [Thread-125886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:30:52.136 [DEBUG] [Thread-125886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:30:52.145 [DEBUG] [Thread-125886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:30:52.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:30:52.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-28T13:30:52.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-28T13:30:52.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:30:52.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:30:52.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:30:52.180 [DEBUG] [Thread-125886] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:30:55.128 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:30:55.129 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:02.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:31:02.183 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:31:02.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-28T13:31:02.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 30, 42), 18.92, 27.69, 0.0, 26.04, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:31:02.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:30:42
2025-09-28T13:31:02.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:31:03.038 [DEBUG] [Thread-125888] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c50
2025-09-28T13:31:03.038 [DEBUG] [Thread-125888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:03.057 [DEBUG] [Thread-125888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:31:03.057 [INFO] [Thread-125888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:31:03.058 [DEBUG] [Thread-125888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:03.059 [DEBUG] [Thread-125888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:03.060 [DEBUG] [Thread-125888] [transport.py] [_log()] Compression: none
2025-09-28T13:31:03.060 [DEBUG] [Thread-125888] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:03.069 [DEBUG] [Thread-125888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:03.069 [DEBUG] [Thread-125888] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:03.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:31:03.071 [DEBUG] [Thread-125888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:31:03.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:03.073 [DEBUG] [Thread-125888] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:03.073 [DEBUG] [Thread-125888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:03.073 [DEBUG] [Thread-125888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:03.073 [DEBUG] [Thread-125888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:31:03.073 [DEBUG] [Thread-125888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:03.092 [INFO] [Thread-125888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:03.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:03.429 [DEBUG] [Thread-125890 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:03.699 [DEBUG] [Thread-125888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:03.699 [DEBUG] [Thread-125888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:03.699 [DEBUG] [Thread-125888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:31:03.740 [DEBUG] [Thread-125888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:03.740 [DEBUG] [Thread-125888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:03.743 [DEBUG] [Thread-125888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:03.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:03.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:31:03.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:31:03.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:31:03.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:03.765 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:31:03.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479598 -999.00  +18.60  21.46     33   +2.30 1 1 1 1 1   888    0 14.20 -63.50 ----- 26.7 21.5 261.6 31.4 25.4 -27.3 24.4 -25.7 24.4 -24.6 25.6 -27.4
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:31:03.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479598
2025-09-28T13:31:03.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:31:03.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:31:03.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:31:03.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:31:03.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:31:03.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:30:42', tmtdew=18.92, humidity=27.69, cloud=0.0, wind=26.04, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:30:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:31:03.768 [DEBUG] [Thread-125888] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:03.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-28T13:31:03.862 [DEBUG] [Thread-125892] [transport.py] [_log()] starting thread (client mode): 0x2b988820
2025-09-28T13:31:03.862 [DEBUG] [Thread-125892] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:03.877 [DEBUG] [Thread-125892] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:31:03.877 [INFO] [Thread-125892] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:31:03.884 [DEBUG] [Thread-125892] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:03.885 [DEBUG] [Thread-125892] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:03.886 [DEBUG] [Thread-125892] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:03.887 [DEBUG] [Thread-125892] [transport.py] [_log()] Compression: none
2025-09-28T13:31:03.887 [DEBUG] [Thread-125892] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:03.946 [DEBUG] [Thread-125892] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:03.946 [DEBUG] [Thread-125892] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:03.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:31:03.947 [DEBUG] [Thread-125892] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:31:03.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:04.001 [DEBUG] [Thread-125892] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:04.001 [DEBUG] [Thread-125892] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:04.001 [DEBUG] [Thread-125892] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:04.001 [DEBUG] [Thread-125892] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:31:04.001 [DEBUG] [Thread-125892] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:04.024 [INFO] [Thread-125892] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:04.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-28T13:31:04.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:04.985 [DEBUG] [Thread-125892] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:04.985 [DEBUG] [Thread-125892] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:05.033 [DEBUG] [Thread-125892] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:05.034 [DEBUG] [Thread-125892] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:05.043 [DEBUG] [Thread-125892] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:05.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:05.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-28T13:31:05.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-28T13:31:05.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:05.070 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:05.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:05.078 [DEBUG] [Thread-125892] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:12.312 [DEBUG] [Thread-125894 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:15.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:31:15.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:31:15.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-28T13:31:15.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 30, 42), 18.92, 27.69, 0.0, 26.04, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:31:15.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:30:42
2025-09-28T13:31:15.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:31:15.977 [DEBUG] [Thread-125895] [transport.py] [_log()] starting thread (client mode): 0x2b9c2260
2025-09-28T13:31:15.977 [DEBUG] [Thread-125895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:15.997 [DEBUG] [Thread-125895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:31:15.997 [INFO] [Thread-125895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] Compression: none
2025-09-28T13:31:16.000 [DEBUG] [Thread-125895] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:16.015 [DEBUG] [Thread-125895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:16.016 [DEBUG] [Thread-125895] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:16.016 [DEBUG] [Thread-125895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:31:16.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:31:16.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:16.017 [DEBUG] [Thread-125895] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:16.017 [DEBUG] [Thread-125895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:16.017 [DEBUG] [Thread-125895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:16.017 [DEBUG] [Thread-125895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:31:16.017 [DEBUG] [Thread-125895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:16.033 [INFO] [Thread-125895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:16.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:16.778 [DEBUG] [Thread-125895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:16.778 [DEBUG] [Thread-125895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:16.778 [DEBUG] [Thread-125895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:31:16.819 [DEBUG] [Thread-125895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:16.819 [DEBUG] [Thread-125895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:16.821 [DEBUG] [Thread-125895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:16.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:16.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:31:16.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:31:16.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:31:16.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:16.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:31:16.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479598 -999.00  +18.60  21.46     33   +2.30 1 1 1 1 1   888    0 14.20 -63.50 ----- 26.7 21.5 261.6 31.4 25.4 -27.3 24.4 -25.7 24.4 -24.6 25.6 -27.4
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479598
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:31:16.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:30:42', tmtdew=18.92, humidity=27.69, cloud=0.0, wind=26.04, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:30:37.267', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:31:16.837 [DEBUG] [Thread-125895] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:16.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-28T13:31:16.920 [DEBUG] [Thread-125898] [transport.py] [_log()] starting thread (client mode): 0x2e3c3370
2025-09-28T13:31:16.920 [DEBUG] [Thread-125898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:16.935 [DEBUG] [Thread-125898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:31:16.935 [INFO] [Thread-125898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] Compression: none
2025-09-28T13:31:16.943 [DEBUG] [Thread-125898] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:17.003 [DEBUG] [Thread-125898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:17.003 [DEBUG] [Thread-125898] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:17.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:31:17.004 [DEBUG] [Thread-125898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:31:17.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:17.061 [DEBUG] [Thread-125898] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:17.061 [DEBUG] [Thread-125898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:17.061 [DEBUG] [Thread-125898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:17.061 [DEBUG] [Thread-125898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:31:17.061 [DEBUG] [Thread-125898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:17.076 [INFO] [Thread-125898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:17.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:31:17.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:18.037 [DEBUG] [Thread-125898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:18.037 [DEBUG] [Thread-125898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:18.085 [DEBUG] [Thread-125898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:18.085 [DEBUG] [Thread-125898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:18.093 [DEBUG] [Thread-125898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:18.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:18.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-28T13:31:18.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-28T13:31:18.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:18.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:18.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:18.125 [DEBUG] [Thread-125898] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:18.467 [DEBUG] [Thread-125900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:28.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:31:28.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:31:28.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-28T13:31:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 31, 14), 19.02, 27.49, 0.0, 26.1, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:31:28.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:31:14
2025-09-28T13:31:28.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:31:28.971 [DEBUG] [Thread-125901] [transport.py] [_log()] starting thread (client mode): 0x2b984b80
2025-09-28T13:31:28.971 [DEBUG] [Thread-125901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:28.992 [DEBUG] [Thread-125901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:31:28.992 [INFO] [Thread-125901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:31:28.993 [DEBUG] [Thread-125901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] Compression: none
2025-09-28T13:31:28.994 [DEBUG] [Thread-125901] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:29.011 [DEBUG] [Thread-125901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:29.012 [DEBUG] [Thread-125901] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:29.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:31:29.013 [DEBUG] [Thread-125901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:31:29.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:29.015 [DEBUG] [Thread-125901] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:29.015 [DEBUG] [Thread-125901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:29.015 [DEBUG] [Thread-125901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:29.015 [DEBUG] [Thread-125901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:31:29.015 [DEBUG] [Thread-125901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:29.039 [INFO] [Thread-125901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:29.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:29.631 [DEBUG] [Thread-125901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:29.631 [DEBUG] [Thread-125901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:29.631 [DEBUG] [Thread-125901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:31:29.673 [DEBUG] [Thread-125901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:29.673 [DEBUG] [Thread-125901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:29.676 [DEBUG] [Thread-125901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:29.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:29.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:31:29.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:31:29.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:31:29.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:29.698 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:31:29.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:29.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479945 -999.00  +18.60  21.69     34   +2.60 1 1 1 1 1   888    0 14.26 -56.65 ----- 19.7 21.7 258.2 31.1 25.3 -27.4 24.4 -25.5 24.4 -24.6 25.3 -27.3
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479945
2025-09-28T13:31:29.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:31:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:31:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:31:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:31:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:31:29.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:31:14', tmtdew=19.02, humidity=27.49, cloud=0.0, wind=26.1, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:31:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:31:29.700 [DEBUG] [Thread-125901] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:29.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-28T13:31:29.796 [DEBUG] [Thread-125904] [transport.py] [_log()] starting thread (client mode): 0x2b9ca020
2025-09-28T13:31:29.796 [DEBUG] [Thread-125904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:29.811 [DEBUG] [Thread-125904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:31:29.811 [INFO] [Thread-125904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:29.818 [DEBUG] [Thread-125904] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] Compression: none
2025-09-28T13:31:29.819 [DEBUG] [Thread-125904] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:29.875 [DEBUG] [Thread-125904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:29.875 [DEBUG] [Thread-125904] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:29.876 [DEBUG] [Thread-125904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:31:29.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:31:29.876 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:29.932 [DEBUG] [Thread-125904] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:29.933 [DEBUG] [Thread-125904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:29.933 [DEBUG] [Thread-125904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:29.933 [DEBUG] [Thread-125904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:31:29.933 [DEBUG] [Thread-125904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:29.951 [INFO] [Thread-125904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:29.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-28T13:31:29.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:30.938 [DEBUG] [Thread-125904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:30.938 [DEBUG] [Thread-125904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:30.986 [DEBUG] [Thread-125904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:30.986 [DEBUG] [Thread-125904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:30.995 [DEBUG] [Thread-125904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:31.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:31.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-28T13:31:31.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') -> 00000000
2025-09-28T13:31:31.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:31.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:31.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:31.029 [DEBUG] [Thread-125904] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:33.502 [DEBUG] [Thread-125906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:41.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:31:41.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:31:41.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-28T13:31:41.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 31, 14), 19.02, 27.49, 0.0, 26.1, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:31:41.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:31:14
2025-09-28T13:31:41.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:31:41.855 [DEBUG] [Thread-125907] [transport.py] [_log()] starting thread (client mode): 0x2b95e920
2025-09-28T13:31:41.855 [DEBUG] [Thread-125907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:41.878 [DEBUG] [Thread-125907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:31:41.878 [INFO] [Thread-125907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] Compression: none
2025-09-28T13:31:41.882 [DEBUG] [Thread-125907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:41.899 [DEBUG] [Thread-125907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:41.899 [DEBUG] [Thread-125907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:41.900 [DEBUG] [Thread-125907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:31:41.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:31:41.901 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:41.902 [DEBUG] [Thread-125907] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:41.902 [DEBUG] [Thread-125907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:41.902 [DEBUG] [Thread-125907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:41.902 [DEBUG] [Thread-125907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:31:41.902 [DEBUG] [Thread-125907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:41.926 [INFO] [Thread-125907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:41.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:42.662 [DEBUG] [Thread-125907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:42.662 [DEBUG] [Thread-125907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:42.662 [DEBUG] [Thread-125907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:31:42.703 [DEBUG] [Thread-125907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:42.703 [DEBUG] [Thread-125907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:42.709 [DEBUG] [Thread-125907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:42.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:42.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:31:42.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:31:42.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:31:42.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:42.731 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:31:42.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:42.731 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:42.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:31:42.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479945 -999.00  +18.60  21.69     34   +2.60 1 1 1 1 1   888    0 14.26 -56.65 ----- 19.7 21.7 258.2 31.1 25.3 -27.4 24.4 -25.5 24.4 -24.6 25.3 -27.3
2025-09-28T13:31:42.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:31:42.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:31:42.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479945
2025-09-28T13:31:42.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:31:42.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:31:42.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:31:42.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:31:42.733 [DEBUG] [Thread-125907] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:42.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:31:42.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:31:14', tmtdew=19.02, humidity=27.49, cloud=0.0, wind=26.1, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:31:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:31:42.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-28T13:31:42.831 [DEBUG] [Thread-125910] [transport.py] [_log()] starting thread (client mode): 0x2b9afcd0
2025-09-28T13:31:42.831 [DEBUG] [Thread-125910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:42.851 [DEBUG] [Thread-125910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:31:42.852 [INFO] [Thread-125910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:31:42.859 [DEBUG] [Thread-125910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:42.859 [DEBUG] [Thread-125910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:31:42.859 [DEBUG] [Thread-125910] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:42.859 [DEBUG] [Thread-125910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:42.860 [DEBUG] [Thread-125910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:42.861 [DEBUG] [Thread-125910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:42.861 [DEBUG] [Thread-125910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:42.861 [DEBUG] [Thread-125910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:42.861 [DEBUG] [Thread-125910] [transport.py] [_log()] Compression: none
2025-09-28T13:31:42.861 [DEBUG] [Thread-125910] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:42.917 [DEBUG] [Thread-125910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:42.917 [DEBUG] [Thread-125910] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:42.918 [DEBUG] [Thread-125910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:31:42.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:31:42.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:42.972 [DEBUG] [Thread-125910] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:42.972 [DEBUG] [Thread-125910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:42.973 [DEBUG] [Thread-125910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:42.973 [DEBUG] [Thread-125910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:31:42.973 [DEBUG] [Thread-125910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:42.992 [INFO] [Thread-125910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:42.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-28T13:31:42.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:43.945 [DEBUG] [Thread-125910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:43.946 [DEBUG] [Thread-125910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:43.993 [DEBUG] [Thread-125910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:43.993 [DEBUG] [Thread-125910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:44.003 [DEBUG] [Thread-125910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:44.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:44.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-28T13:31:44.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-28T13:31:44.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:44.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:44.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:44.038 [DEBUG] [Thread-125910] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:48.543 [DEBUG] [Thread-125912 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:54.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:31:54.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:31:54.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-28T13:31:54.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 31, 46), 19.13, 27.42, 0.0, 28.94, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:31:54.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:31:46
2025-09-28T13:31:54.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:31:54.914 [DEBUG] [Thread-125913] [transport.py] [_log()] starting thread (client mode): 0x2b98a020
2025-09-28T13:31:54.914 [DEBUG] [Thread-125913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:54.945 [DEBUG] [Thread-125913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:31:54.945 [INFO] [Thread-125913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:54.949 [DEBUG] [Thread-125913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:54.950 [DEBUG] [Thread-125913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:54.950 [DEBUG] [Thread-125913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:54.950 [DEBUG] [Thread-125913] [transport.py] [_log()] Compression: none
2025-09-28T13:31:54.950 [DEBUG] [Thread-125913] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:54.968 [DEBUG] [Thread-125913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:54.968 [DEBUG] [Thread-125913] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:54.968 [DEBUG] [Thread-125913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:31:54.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:31:54.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:54.969 [DEBUG] [Thread-125913] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:54.969 [DEBUG] [Thread-125913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:54.969 [DEBUG] [Thread-125913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:54.969 [DEBUG] [Thread-125913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:31:54.969 [DEBUG] [Thread-125913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:54.978 [INFO] [Thread-125913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:54.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:55.271 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:55.271 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:31:55.716 [DEBUG] [Thread-125913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:55.716 [DEBUG] [Thread-125913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:55.716 [DEBUG] [Thread-125913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:31:55.757 [DEBUG] [Thread-125913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:55.757 [DEBUG] [Thread-125913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:55.759 [DEBUG] [Thread-125913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:55.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:55.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:31:55.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:31:55.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:31:55.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:55.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:31:55.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.479945 -999.00  +18.60  21.69     34   +2.60 1 1 1 1 1   888    0 14.26 -56.65 ----- 19.7 21.7 258.2 31.1 25.3 -27.4 24.4 -25.5 24.4 -24.6 25.3 -27.3
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.479945
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:31:55.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:31:46', tmtdew=19.13, humidity=27.42, cloud=0.0, wind=28.94, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:31:07.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:31:55.778 [DEBUG] [Thread-125913] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:31:55.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-28T13:31:55.862 [DEBUG] [Thread-125916] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T13:31:55.862 [DEBUG] [Thread-125916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:31:55.877 [DEBUG] [Thread-125916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:31:55.877 [INFO] [Thread-125916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] client lang: <none>
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] server lang: <none>
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] kex follows: False
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:31:55.885 [DEBUG] [Thread-125916] [transport.py] [_log()] Compression: none
2025-09-28T13:31:55.886 [DEBUG] [Thread-125916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:31:55.943 [DEBUG] [Thread-125916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:31:55.944 [DEBUG] [Thread-125916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:31:55.944 [DEBUG] [Thread-125916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:31:55.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:31:55.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:31:56.000 [DEBUG] [Thread-125916] [transport.py] [_log()] userauth is OK
2025-09-28T13:31:56.000 [DEBUG] [Thread-125916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:31:56.000 [DEBUG] [Thread-125916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:31:56.000 [DEBUG] [Thread-125916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:31:56.000 [DEBUG] [Thread-125916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:31:56.014 [INFO] [Thread-125916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:31:56.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-28T13:31:56.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:31:56.967 [DEBUG] [Thread-125916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:31:56.967 [DEBUG] [Thread-125916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:31:57.016 [DEBUG] [Thread-125916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:31:57.016 [DEBUG] [Thread-125916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:31:57.025 [DEBUG] [Thread-125916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:31:57.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:31:57.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-28T13:31: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-28T13:31:57.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:31:57.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:31:57.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:31:57.064 [DEBUG] [Thread-125916] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:03.574 [DEBUG] [Thread-125918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:07.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:32:07.066 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:32:07.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:32:07.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 31, 46), 19.13, 27.42, 0.0, 28.94, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:32:07.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:31:46
2025-09-28T13:32:07.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:32:07.898 [DEBUG] [Thread-125919] [transport.py] [_log()] starting thread (client mode): 0x2b9c99c0
2025-09-28T13:32:07.899 [DEBUG] [Thread-125919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:07.918 [DEBUG] [Thread-125919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:32:07.918 [INFO] [Thread-125919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:07.921 [DEBUG] [Thread-125919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] Compression: none
2025-09-28T13:32:07.922 [DEBUG] [Thread-125919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:07.937 [DEBUG] [Thread-125919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:07.938 [DEBUG] [Thread-125919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:07.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:32:07.939 [DEBUG] [Thread-125919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:32:07.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:07.940 [DEBUG] [Thread-125919] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:07.941 [DEBUG] [Thread-125919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:07.941 [DEBUG] [Thread-125919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:07.941 [DEBUG] [Thread-125919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:32:07.941 [DEBUG] [Thread-125919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:07.965 [INFO] [Thread-125919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:07.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:08.634 [DEBUG] [Thread-125919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:08.634 [DEBUG] [Thread-125919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:08.635 [DEBUG] [Thread-125919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:32:08.676 [DEBUG] [Thread-125919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:08.676 [DEBUG] [Thread-125919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:08.679 [DEBUG] [Thread-125919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:08.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:08.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:32:08.691 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:32:08.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:32:08.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:08.696 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:32:08.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480292 -999.00  +18.70  19.26     34   +2.50 1 1 1 1 1   888    0 14.55 -52.21 ----- 19.4 19.3 268.4 29.4 25.2 -26.7 24.4 -25.3 24.4 -24.2 25.3 -26.3
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480292
2025-09-28T13:32:08.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:32:08.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:32:08.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:32:08.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:32:08.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:32:08.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:31:46', tmtdew=19.13, humidity=27.42, cloud=0.0, wind=28.94, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:31:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:32:08.698 [DEBUG] [Thread-125919] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:08.772 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:32:08.784 [DEBUG] [Thread-125922] [transport.py] [_log()] starting thread (client mode): 0x2b9df3a0
2025-09-28T13:32:08.784 [DEBUG] [Thread-125922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:08.798 [DEBUG] [Thread-125922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:32:08.798 [INFO] [Thread-125922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:08.806 [DEBUG] [Thread-125922] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] Compression: none
2025-09-28T13:32:08.807 [DEBUG] [Thread-125922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:08.864 [DEBUG] [Thread-125922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:08.864 [DEBUG] [Thread-125922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:08.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:32:08.865 [DEBUG] [Thread-125922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:32:08.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:08.920 [DEBUG] [Thread-125922] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:08.920 [DEBUG] [Thread-125922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:08.920 [DEBUG] [Thread-125922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:08.920 [DEBUG] [Thread-125922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:32:08.921 [DEBUG] [Thread-125922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:08.939 [INFO] [Thread-125922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:08.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-28T13:32:08.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:09.925 [DEBUG] [Thread-125922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:09.925 [DEBUG] [Thread-125922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:09.973 [DEBUG] [Thread-125922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:09.973 [DEBUG] [Thread-125922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:09.982 [DEBUG] [Thread-125922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:09.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:09.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-28T13:32: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') -> 00000000
2025-09-28T13:32:10.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:10.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:10.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:10.017 [DEBUG] [Thread-125922] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:12.369 [DEBUG] [Thread-125924 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:18.619 [DEBUG] [Thread-125925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:20.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:32:20.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:32:20.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:32:20.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 31, 46), 19.13, 27.42, 0.0, 28.94, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:32:20.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:31:46
2025-09-28T13:32:20.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:32:20.887 [DEBUG] [Thread-125926] [transport.py] [_log()] starting thread (client mode): 0x2b988d30
2025-09-28T13:32:20.887 [DEBUG] [Thread-125926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:20.908 [DEBUG] [Thread-125926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:32:20.908 [INFO] [Thread-125926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:20.911 [DEBUG] [Thread-125926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] Compression: none
2025-09-28T13:32:20.912 [DEBUG] [Thread-125926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:20.930 [DEBUG] [Thread-125926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:20.930 [DEBUG] [Thread-125926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:20.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:32:20.932 [DEBUG] [Thread-125926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:32:20.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:20.934 [DEBUG] [Thread-125926] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:20.934 [DEBUG] [Thread-125926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:20.935 [DEBUG] [Thread-125926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:20.935 [DEBUG] [Thread-125926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:32:20.935 [DEBUG] [Thread-125926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:20.949 [INFO] [Thread-125926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:20.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:21.737 [DEBUG] [Thread-125926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:21.737 [DEBUG] [Thread-125926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:21.738 [DEBUG] [Thread-125926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:32:21.778 [DEBUG] [Thread-125926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:21.778 [DEBUG] [Thread-125926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:21.781 [DEBUG] [Thread-125926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:21.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:21.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:32:21.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:32:21.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:32:21.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:21.802 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:32:21.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:21.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:21.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:32:21.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480292 -999.00  +18.70  19.26     34   +2.50 1 1 1 1 1   888    0 14.55 -52.21 ----- 19.4 19.3 268.4 29.4 25.2 -26.7 24.4 -25.3 24.4 -24.2 25.3 -26.3
2025-09-28T13:32:21.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:32:21.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:32:21.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480292
2025-09-28T13:32:21.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:32:21.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:32:21.805 [DEBUG] [Thread-125926] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:21.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:31:46', tmtdew=19.13, humidity=27.42, cloud=0.0, wind=28.94, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:31:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:32:21.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-28T13:32:21.900 [DEBUG] [Thread-125929] [transport.py] [_log()] starting thread (client mode): 0x2b98b490
2025-09-28T13:32:21.900 [DEBUG] [Thread-125929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:21.915 [DEBUG] [Thread-125929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:32:21.915 [INFO] [Thread-125929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] Compression: none
2025-09-28T13:32:21.923 [DEBUG] [Thread-125929] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:21.979 [DEBUG] [Thread-125929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:21.980 [DEBUG] [Thread-125929] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:21.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:32:21.981 [DEBUG] [Thread-125929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:32:21.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:22.036 [DEBUG] [Thread-125929] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:22.037 [DEBUG] [Thread-125929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:22.037 [DEBUG] [Thread-125929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:22.037 [DEBUG] [Thread-125929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:32:22.037 [DEBUG] [Thread-125929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:22.056 [INFO] [Thread-125929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:22.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-28T13:32:22.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:23.016 [DEBUG] [Thread-125929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:23.016 [DEBUG] [Thread-125929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:23.064 [DEBUG] [Thread-125929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:23.064 [DEBUG] [Thread-125929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:23.073 [DEBUG] [Thread-125929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:23.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:23.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-28T13:32:23.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-28T13:32:23.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:23.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:23.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:23.108 [DEBUG] [Thread-125929] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:33.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:32:33.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:32:33.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:32:33.665 [DEBUG] [Thread-125931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:33.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 32, 18), 19.2, 27.28, 0.0, 26.66, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:32:33.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:32:18
2025-09-28T13:32:33.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:32:33.974 [DEBUG] [Thread-125932] [transport.py] [_log()] starting thread (client mode): 0x2b98b1f0
2025-09-28T13:32:33.974 [DEBUG] [Thread-125932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:33.992 [DEBUG] [Thread-125932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:32:33.992 [INFO] [Thread-125932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] Compression: none
2025-09-28T13:32:33.994 [DEBUG] [Thread-125932] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:34.004 [DEBUG] [Thread-125932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:34.004 [DEBUG] [Thread-125932] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:34.004 [DEBUG] [Thread-125932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:32:34.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:32:34.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:34.005 [DEBUG] [Thread-125932] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:34.005 [DEBUG] [Thread-125932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:34.005 [DEBUG] [Thread-125932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:34.005 [DEBUG] [Thread-125932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:32:34.005 [DEBUG] [Thread-125932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:34.014 [INFO] [Thread-125932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:34.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:34.659 [DEBUG] [Thread-125932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:34.659 [DEBUG] [Thread-125932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:34.659 [DEBUG] [Thread-125932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:32:34.701 [DEBUG] [Thread-125932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:34.701 [DEBUG] [Thread-125932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:34.703 [DEBUG] [Thread-125932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:34.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:34.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:32:34.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:32:34.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:32:34.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:34.722 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:32:34.722 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480639 -999.00  +18.50  19.57     34   +2.40 1 1 1 1 1   888    0 14.56 -49.66 ----- 13.4 19.6 264.6 23.8 25.2 -27.1 24.4 -25.3 24.2 -26.6 25.3 -26.3
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480639
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:32:34.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:32:18', tmtdew=19.2, humidity=27.28, cloud=0.0, wind=26.66, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:32:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:32:34.723 [DEBUG] [Thread-125932] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:34.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:32:34.809 [DEBUG] [Thread-125935] [transport.py] [_log()] starting thread (client mode): 0x2b98ae90
2025-09-28T13:32:34.809 [DEBUG] [Thread-125935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:34.824 [DEBUG] [Thread-125935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:32:34.824 [INFO] [Thread-125935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] Compression: none
2025-09-28T13:32:34.832 [DEBUG] [Thread-125935] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:34.890 [DEBUG] [Thread-125935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:34.891 [DEBUG] [Thread-125935] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:34.891 [DEBUG] [Thread-125935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:32:34.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:32:34.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:34.947 [DEBUG] [Thread-125935] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:34.948 [DEBUG] [Thread-125935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:34.948 [DEBUG] [Thread-125935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:34.948 [DEBUG] [Thread-125935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:32:34.948 [DEBUG] [Thread-125935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:34.965 [INFO] [Thread-125935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:34.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:32:34.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:35.955 [DEBUG] [Thread-125935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:35.955 [DEBUG] [Thread-125935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:36.003 [DEBUG] [Thread-125935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:36.003 [DEBUG] [Thread-125935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:36.012 [DEBUG] [Thread-125935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:36.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:36.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-28T13:32:36.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-28T13:32:36.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:36.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:36.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:36.047 [DEBUG] [Thread-125935] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:46.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:32:46.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:32:46.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-28T13:32:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 32, 18), 19.2, 27.28, 0.0, 26.66, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:32:46.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:32:18
2025-09-28T13:32:46.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:32:46.884 [DEBUG] [Thread-125937] [transport.py] [_log()] starting thread (client mode): 0x2b9c9270
2025-09-28T13:32:46.885 [DEBUG] [Thread-125937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:46.904 [DEBUG] [Thread-125937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:32:46.905 [INFO] [Thread-125937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:46.908 [DEBUG] [Thread-125937] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] Compression: none
2025-09-28T13:32:46.909 [DEBUG] [Thread-125937] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:46.928 [DEBUG] [Thread-125937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:46.929 [DEBUG] [Thread-125937] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:46.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:32:46.930 [DEBUG] [Thread-125937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:32:46.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:46.932 [DEBUG] [Thread-125937] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:46.932 [DEBUG] [Thread-125937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:46.932 [DEBUG] [Thread-125937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:46.932 [DEBUG] [Thread-125937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:32:46.933 [DEBUG] [Thread-125937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:46.957 [INFO] [Thread-125937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:46.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:47.717 [DEBUG] [Thread-125937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:47.717 [DEBUG] [Thread-125937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:47.717 [DEBUG] [Thread-125937] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:32:47.757 [DEBUG] [Thread-125937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:47.757 [DEBUG] [Thread-125937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:47.760 [DEBUG] [Thread-125937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:47.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32:47.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:32:47.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:32:47.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:32:47.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:47.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:32:47.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:47.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480639 -999.00  +18.50  19.57     34   +2.40 1 1 1 1 1   888    0 14.56 -49.66 ----- 13.4 19.6 264.6 23.8 25.2 -27.1 24.4 -25.3 24.2 -26.6 25.3 -26.3
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480639
2025-09-28T13:32:47.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:32:47.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:32:47.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:32:47.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:32:47.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:32:47.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:32:18', tmtdew=19.2, humidity=27.28, cloud=0.0, wind=26.66, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:32:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:32:47.784 [DEBUG] [Thread-125937] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:47.869 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:32:47.878 [DEBUG] [Thread-125940] [transport.py] [_log()] starting thread (client mode): 0x2b95fa60
2025-09-28T13:32:47.878 [DEBUG] [Thread-125940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:47.893 [DEBUG] [Thread-125940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:32:47.893 [INFO] [Thread-125940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:47.901 [DEBUG] [Thread-125940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:47.902 [DEBUG] [Thread-125940] [transport.py] [_log()] Compression: none
2025-09-28T13:32:47.902 [DEBUG] [Thread-125940] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:47.959 [DEBUG] [Thread-125940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:47.960 [DEBUG] [Thread-125940] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:47.960 [DEBUG] [Thread-125940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:32:47.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:32:47.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:48.019 [DEBUG] [Thread-125940] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:48.020 [DEBUG] [Thread-125940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:48.020 [DEBUG] [Thread-125940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:48.020 [DEBUG] [Thread-125940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:32:48.020 [DEBUG] [Thread-125940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:32:48.039 [INFO] [Thread-125940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:32:48.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-28T13:32:48.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:32:48.691 [DEBUG] [Thread-125942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:49.021 [DEBUG] [Thread-125940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:32:49.022 [DEBUG] [Thread-125940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:32:49.069 [DEBUG] [Thread-125940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:32:49.069 [DEBUG] [Thread-125940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:32:49.078 [DEBUG] [Thread-125940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:32:49.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:32: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')
2025-09-28T13:32:49.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-28T13:32:49.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:32:49.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:32:49.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:32:49.113 [DEBUG] [Thread-125940] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:32:55.411 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:55.412 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:32:59.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:32:59.115 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:32:59.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-28T13:32:59.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 32, 50), 18.73, 28.23, 0.0, 20.45, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:32:59.698 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:32:50
2025-09-28T13:32:59.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:32:59.956 [DEBUG] [Thread-125943] [transport.py] [_log()] starting thread (client mode): 0x2b9875b0
2025-09-28T13:32:59.956 [DEBUG] [Thread-125943] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:32:59.971 [DEBUG] [Thread-125943] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:32:59.971 [INFO] [Thread-125943] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] client lang: <none>
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] server lang: <none>
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] kex follows: False
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] Compression: none
2025-09-28T13:32:59.975 [DEBUG] [Thread-125943] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:32:59.990 [DEBUG] [Thread-125943] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:32:59.991 [DEBUG] [Thread-125943] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:32:59.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:32:59.991 [DEBUG] [Thread-125943] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:32:59.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:32:59.993 [DEBUG] [Thread-125943] [transport.py] [_log()] userauth is OK
2025-09-28T13:32:59.993 [DEBUG] [Thread-125943] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:32:59.994 [DEBUG] [Thread-125943] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:32:59.994 [DEBUG] [Thread-125943] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:32:59.994 [DEBUG] [Thread-125943] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:00.012 [INFO] [Thread-125943] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:00.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:00.829 [DEBUG] [Thread-125943] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:00.829 [DEBUG] [Thread-125943] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:00.829 [DEBUG] [Thread-125943] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:33:00.870 [DEBUG] [Thread-125943] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:00.871 [DEBUG] [Thread-125943] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:00.874 [DEBUG] [Thread-125943] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:00.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:00.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:33:00.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:33:00.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:33:00.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:00.899 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:33:00.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:00.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:33:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480639 -999.00  +18.50  19.57     34   +2.40 1 1 1 1 1   888    0 14.56 -49.66 ----- 13.4 19.6 264.6 23.8 25.2 -27.1 24.4 -25.3 24.2 -26.6 25.3 -26.3
2025-09-28T13:33:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:33:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:33:00.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480639
2025-09-28T13:33:00.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:33:00.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:33:00.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:33:00.902 [DEBUG] [Thread-125943] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:00.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:33:00.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:33:00.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:32:50', tmtdew=18.73, humidity=28.23, cloud=0.0, wind=20.45, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:32:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:33:00.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:33:00.999 [DEBUG] [Thread-125946] [transport.py] [_log()] starting thread (client mode): 0x2b9dca60
2025-09-28T13:33:00.999 [DEBUG] [Thread-125946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:01.013 [DEBUG] [Thread-125946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:33:01.013 [INFO] [Thread-125946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:33:01.020 [DEBUG] [Thread-125946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:01.021 [DEBUG] [Thread-125946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] Compression: none
2025-09-28T13:33:01.022 [DEBUG] [Thread-125946] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:01.080 [DEBUG] [Thread-125946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:01.080 [DEBUG] [Thread-125946] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:01.081 [DEBUG] [Thread-125946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:33:01.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:33:01.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:01.136 [DEBUG] [Thread-125946] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:01.136 [DEBUG] [Thread-125946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:01.136 [DEBUG] [Thread-125946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:01.136 [DEBUG] [Thread-125946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:33:01.136 [DEBUG] [Thread-125946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:01.155 [INFO] [Thread-125946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:01.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-28T13:33:01.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:02.157 [DEBUG] [Thread-125946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:02.157 [DEBUG] [Thread-125946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:02.205 [DEBUG] [Thread-125946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:02.205 [DEBUG] [Thread-125946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:02.213 [DEBUG] [Thread-125946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:02.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:02.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')
2025-09-28T13:33:02.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-28T13:33:02.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:02.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:02.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:02.246 [DEBUG] [Thread-125946] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:03.737 [DEBUG] [Thread-125948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:12.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:33:12.249 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:33:12.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-28T13:33:12.415 [DEBUG] [Thread-125949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 32, 50), 18.73, 28.23, 0.0, 20.45, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:33:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:32:50
2025-09-28T13:33:12.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:33:13.085 [DEBUG] [Thread-125950] [transport.py] [_log()] starting thread (client mode): 0x2b9cb0d0
2025-09-28T13:33:13.086 [DEBUG] [Thread-125950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:13.106 [DEBUG] [Thread-125950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:33:13.106 [INFO] [Thread-125950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:13.110 [DEBUG] [Thread-125950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] Compression: none
2025-09-28T13:33:13.111 [DEBUG] [Thread-125950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:13.128 [DEBUG] [Thread-125950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:13.128 [DEBUG] [Thread-125950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:13.129 [DEBUG] [Thread-125950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:33:13.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:33:13.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:13.131 [DEBUG] [Thread-125950] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:13.131 [DEBUG] [Thread-125950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:13.131 [DEBUG] [Thread-125950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:13.131 [DEBUG] [Thread-125950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:33:13.131 [DEBUG] [Thread-125950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:13.155 [INFO] [Thread-125950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:13.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:13.795 [DEBUG] [Thread-125950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:13.795 [DEBUG] [Thread-125950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:13.796 [DEBUG] [Thread-125950] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:33:13.836 [DEBUG] [Thread-125950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:13.837 [DEBUG] [Thread-125950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:13.839 [DEBUG] [Thread-125950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:13.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:13.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:33:13.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:33:13.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:33:13.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:13.861 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:33:13.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:13.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:33:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480986 -999.00  +18.30  13.87     34   +2.10 1 1 1 1 1   888    0 14.50 -47.15 ----- 13.6 13.9 261.4 26.9 25.2 -27.3 24.4 -25.6 24.3 -23.9 25.3 -26.8
2025-09-28T13:33:13.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:33:13.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:33:13.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480986
2025-09-28T13:33:13.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:33:13.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:33:13.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:33:13.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:33:13.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:33:13.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:32:50', tmtdew=18.73, humidity=28.23, cloud=0.0, wind=20.45, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:32:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:33:13.864 [DEBUG] [Thread-125950] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:13.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-28T13:33:13.959 [DEBUG] [Thread-125953] [transport.py] [_log()] starting thread (client mode): 0x2e38ca30
2025-09-28T13:33:13.959 [DEBUG] [Thread-125953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:13.973 [DEBUG] [Thread-125953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:33:13.973 [INFO] [Thread-125953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:33:13.981 [DEBUG] [Thread-125953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:13.981 [DEBUG] [Thread-125953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:33:13.981 [DEBUG] [Thread-125953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:13.981 [DEBUG] [Thread-125953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:13.982 [DEBUG] [Thread-125953] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] Compression: none
2025-09-28T13:33:13.983 [DEBUG] [Thread-125953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:14.039 [DEBUG] [Thread-125953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:14.040 [DEBUG] [Thread-125953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:14.040 [DEBUG] [Thread-125953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:33:14.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:33:14.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:14.095 [DEBUG] [Thread-125953] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:14.096 [DEBUG] [Thread-125953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:14.096 [DEBUG] [Thread-125953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:14.096 [DEBUG] [Thread-125953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:33:14.096 [DEBUG] [Thread-125953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:14.115 [INFO] [Thread-125953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:14.116 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:33:14.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:15.077 [DEBUG] [Thread-125953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:15.078 [DEBUG] [Thread-125953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:15.125 [DEBUG] [Thread-125953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:15.126 [DEBUG] [Thread-125953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:15.135 [DEBUG] [Thread-125953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:15.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:15.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-28T13:33:15.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-28T13:33:15.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:15.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:15.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:15.169 [DEBUG] [Thread-125953] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:18.791 [DEBUG] [Thread-125955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:25.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:33:25.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:33:25.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:33:25.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 33, 22), 18.63, 28.41, 0.0, 16.68, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:33:25.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:33:22
2025-09-28T13:33:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:33:26.011 [DEBUG] [Thread-125956] [transport.py] [_log()] starting thread (client mode): 0x2b92b6a0
2025-09-28T13:33:26.011 [DEBUG] [Thread-125956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:26.032 [DEBUG] [Thread-125956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:33:26.032 [INFO] [Thread-125956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:33:26.035 [DEBUG] [Thread-125956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:26.035 [DEBUG] [Thread-125956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:33:26.035 [DEBUG] [Thread-125956] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] Compression: none
2025-09-28T13:33:26.036 [DEBUG] [Thread-125956] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:26.054 [DEBUG] [Thread-125956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:26.054 [DEBUG] [Thread-125956] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:26.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:33:26.055 [DEBUG] [Thread-125956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:33:26.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:26.057 [DEBUG] [Thread-125956] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:26.057 [DEBUG] [Thread-125956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:26.058 [DEBUG] [Thread-125956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:26.058 [DEBUG] [Thread-125956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:33:26.058 [DEBUG] [Thread-125956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:26.076 [INFO] [Thread-125956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:26.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:26.874 [DEBUG] [Thread-125956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:26.874 [DEBUG] [Thread-125956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:26.875 [DEBUG] [Thread-125956] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:33:26.915 [DEBUG] [Thread-125956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:26.915 [DEBUG] [Thread-125956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:26.918 [DEBUG] [Thread-125956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:26.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:26.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:33:26.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:33:26.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:33:26.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:26.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:33:26.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:26.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:26.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:33:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.480986 -999.00  +18.30  13.87     34   +2.10 1 1 1 1 1   888    0 14.50 -47.15 ----- 13.6 13.9 261.4 26.9 25.2 -27.3 24.4 -25.6 24.3 -23.9 25.3 -26.8
2025-09-28T13:33:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:33:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:33:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.480986
2025-09-28T13:33:26.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:33:26.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:33:26.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:33:26.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:33:26.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:33:26.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:33:22', tmtdew=18.63, humidity=28.41, cloud=0.0, wind=16.68, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:32:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:33:26.943 [DEBUG] [Thread-125956] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:27.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:33:27.040 [DEBUG] [Thread-125959] [transport.py] [_log()] starting thread (client mode): 0x2b92a320
2025-09-28T13:33:27.040 [DEBUG] [Thread-125959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:27.055 [DEBUG] [Thread-125959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:33:27.055 [INFO] [Thread-125959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:33:27.063 [DEBUG] [Thread-125959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:27.063 [DEBUG] [Thread-125959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:33:27.063 [DEBUG] [Thread-125959] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:27.063 [DEBUG] [Thread-125959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:27.064 [DEBUG] [Thread-125959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:27.065 [DEBUG] [Thread-125959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:27.065 [DEBUG] [Thread-125959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:27.065 [DEBUG] [Thread-125959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:27.065 [DEBUG] [Thread-125959] [transport.py] [_log()] Compression: none
2025-09-28T13:33:27.065 [DEBUG] [Thread-125959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:27.120 [DEBUG] [Thread-125959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:27.120 [DEBUG] [Thread-125959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:27.121 [DEBUG] [Thread-125959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:33:27.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:33:27.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:27.175 [DEBUG] [Thread-125959] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:27.176 [DEBUG] [Thread-125959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:27.176 [DEBUG] [Thread-125959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:27.176 [DEBUG] [Thread-125959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:33:27.176 [DEBUG] [Thread-125959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:27.198 [INFO] [Thread-125959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33: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-28T13:33:27.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:28.216 [DEBUG] [Thread-125959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:28.216 [DEBUG] [Thread-125959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:28.264 [DEBUG] [Thread-125959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:28.264 [DEBUG] [Thread-125959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:28.273 [DEBUG] [Thread-125959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:28.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:28.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')
2025-09-28T13:33:28.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-28T13:33:28.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:28.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:28.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:28.307 [DEBUG] [Thread-125959] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:33.836 [DEBUG] [Thread-125961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:38.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:33:38.310 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:33:38.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-28T13:33:38.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 33, 22), 18.63, 28.41, 0.0, 16.68, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:33:38.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:33:22
2025-09-28T13:33:38.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:33:39.150 [DEBUG] [Thread-125962] [transport.py] [_log()] starting thread (client mode): 0x2e3fb910
2025-09-28T13:33:39.150 [DEBUG] [Thread-125962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:39.170 [DEBUG] [Thread-125962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:33:39.170 [INFO] [Thread-125962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:39.173 [DEBUG] [Thread-125962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] Compression: none
2025-09-28T13:33:39.174 [DEBUG] [Thread-125962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:39.189 [DEBUG] [Thread-125962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:39.189 [DEBUG] [Thread-125962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:39.190 [DEBUG] [Thread-125962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:33:39.190 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:33:39.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:39.193 [DEBUG] [Thread-125962] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:39.193 [DEBUG] [Thread-125962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:39.193 [DEBUG] [Thread-125962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:39.193 [DEBUG] [Thread-125962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:33:39.193 [DEBUG] [Thread-125962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:39.216 [INFO] [Thread-125962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:39.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:39.891 [DEBUG] [Thread-125962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:39.891 [DEBUG] [Thread-125962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:39.891 [DEBUG] [Thread-125962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:33:39.932 [DEBUG] [Thread-125962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:39.932 [DEBUG] [Thread-125962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:39.934 [DEBUG] [Thread-125962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:39.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:39.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:33:39.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:33:39.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:33:39.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:39.947 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:33:39.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:39.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.481334 -999.00  +18.10  19.40     34   +2.30 1 1 1 1 1   888    0 14.69 -43.06 ----- 15.5 19.4 256.4 21.1 25.2 -26.9 24.4 -25.2 24.3 -23.7 25.2 -27.1
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.481334
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:33:39.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:33:22', tmtdew=18.63, humidity=28.41, cloud=0.0, wind=16.68, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:33:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:33:39.949 [DEBUG] [Thread-125962] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:40.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:33:40.033 [DEBUG] [Thread-125965] [transport.py] [_log()] starting thread (client mode): 0x2e38c700
2025-09-28T13:33:40.033 [DEBUG] [Thread-125965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:40.049 [DEBUG] [Thread-125965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:33:40.049 [INFO] [Thread-125965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:40.056 [DEBUG] [Thread-125965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] Compression: none
2025-09-28T13:33:40.057 [DEBUG] [Thread-125965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:40.114 [DEBUG] [Thread-125965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:40.115 [DEBUG] [Thread-125965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:40.115 [DEBUG] [Thread-125965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:33:40.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:33:40.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:40.171 [DEBUG] [Thread-125965] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:40.171 [DEBUG] [Thread-125965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:40.171 [DEBUG] [Thread-125965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:40.172 [DEBUG] [Thread-125965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:33:40.172 [DEBUG] [Thread-125965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:40.190 [INFO] [Thread-125965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:40.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-28T13:33:40.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:41.147 [DEBUG] [Thread-125965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:41.148 [DEBUG] [Thread-125965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:41.195 [DEBUG] [Thread-125965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:41.195 [DEBUG] [Thread-125965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:41.204 [DEBUG] [Thread-125965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:41.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:41.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-28T13:33:41.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-28T13:33:41.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:41.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:41.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:41.238 [DEBUG] [Thread-125965] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:48.880 [DEBUG] [Thread-125967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:51.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:33:51.241 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:33:51.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-28T13:33:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 33, 22), 18.63, 28.41, 0.0, 16.68, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:33:51.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:33:22
2025-09-28T13:33:51.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:33:52.067 [DEBUG] [Thread-125968] [transport.py] [_log()] starting thread (client mode): 0x28707280
2025-09-28T13:33:52.067 [DEBUG] [Thread-125968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:52.084 [DEBUG] [Thread-125968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:33:52.085 [INFO] [Thread-125968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:52.088 [DEBUG] [Thread-125968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:52.089 [DEBUG] [Thread-125968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:52.089 [DEBUG] [Thread-125968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:52.089 [DEBUG] [Thread-125968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:52.089 [DEBUG] [Thread-125968] [transport.py] [_log()] Compression: none
2025-09-28T13:33:52.089 [DEBUG] [Thread-125968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:52.107 [DEBUG] [Thread-125968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:52.108 [DEBUG] [Thread-125968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:52.109 [DEBUG] [Thread-125968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:33:52.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:33:52.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:52.110 [DEBUG] [Thread-125968] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:52.111 [DEBUG] [Thread-125968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:52.111 [DEBUG] [Thread-125968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:52.111 [DEBUG] [Thread-125968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:33:52.111 [DEBUG] [Thread-125968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:52.127 [INFO] [Thread-125968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:52.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:52.913 [DEBUG] [Thread-125968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:52.913 [DEBUG] [Thread-125968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:52.913 [DEBUG] [Thread-125968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:33:52.954 [DEBUG] [Thread-125968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:52.954 [DEBUG] [Thread-125968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:52.957 [DEBUG] [Thread-125968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:52.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:52.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:33:52.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:33:52.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:33:52.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:52.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:33:52.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.481334 -999.00  +18.10  19.40     34   +2.30 1 1 1 1 1   888    0 14.69 -43.06 ----- 15.5 19.4 256.4 21.1 25.2 -26.9 24.4 -25.2 24.3 -23.7 25.2 -27.1
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:33:52.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.481334
2025-09-28T13:33:52.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:33:52.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:33:52.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:33:52.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:33:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:33:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:33:22', tmtdew=18.63, humidity=28.41, cloud=0.0, wind=16.68, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:33:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:33:52.984 [DEBUG] [Thread-125968] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:53.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-28T13:33:53.079 [DEBUG] [Thread-125971] [transport.py] [_log()] starting thread (client mode): 0x28707fa0
2025-09-28T13:33:53.079 [DEBUG] [Thread-125971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:33:53.093 [DEBUG] [Thread-125971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:33:53.093 [INFO] [Thread-125971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] client lang: <none>
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] server lang: <none>
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] kex follows: False
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:33:53.101 [DEBUG] [Thread-125971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:33:53.102 [DEBUG] [Thread-125971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:33:53.102 [DEBUG] [Thread-125971] [transport.py] [_log()] Compression: none
2025-09-28T13:33:53.102 [DEBUG] [Thread-125971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:33:53.159 [DEBUG] [Thread-125971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:33:53.159 [DEBUG] [Thread-125971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:33:53.160 [DEBUG] [Thread-125971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:33:53.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:33:53.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:33:53.215 [DEBUG] [Thread-125971] [transport.py] [_log()] userauth is OK
2025-09-28T13:33:53.215 [DEBUG] [Thread-125971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:33:53.216 [DEBUG] [Thread-125971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:33:53.216 [DEBUG] [Thread-125971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:33:53.216 [DEBUG] [Thread-125971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:33:53.234 [INFO] [Thread-125971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:33:53.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-28T13:33:53.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:33:54.185 [DEBUG] [Thread-125971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:33:54.185 [DEBUG] [Thread-125971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:33:54.233 [DEBUG] [Thread-125971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:33:54.233 [DEBUG] [Thread-125971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:33:54.242 [DEBUG] [Thread-125971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:33:54.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:33:54.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-28T13:33:54.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-28T13:33:54.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:33:54.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:33:54.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:33:54.277 [DEBUG] [Thread-125971] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:33:55.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:33:55.552 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:03.922 [DEBUG] [Thread-125973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:04.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:34:04.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:34:04.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:34:04.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 33, 54), 18.8, 28.33, 0.0, 19.36, 18.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:34:04.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:33:54
2025-09-28T13:34:04.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:34:05.116 [DEBUG] [Thread-125974] [transport.py] [_log()] starting thread (client mode): 0x28706b90
2025-09-28T13:34:05.116 [DEBUG] [Thread-125974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:05.135 [DEBUG] [Thread-125974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:34:05.136 [INFO] [Thread-125974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] Compression: none
2025-09-28T13:34:05.139 [DEBUG] [Thread-125974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:05.155 [DEBUG] [Thread-125974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:05.156 [DEBUG] [Thread-125974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:05.156 [DEBUG] [Thread-125974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:34:05.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:34:05.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:05.158 [DEBUG] [Thread-125974] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:05.158 [DEBUG] [Thread-125974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:05.158 [DEBUG] [Thread-125974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:05.159 [DEBUG] [Thread-125974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:34:05.159 [DEBUG] [Thread-125974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:05.184 [INFO] [Thread-125974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:05.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:05.965 [DEBUG] [Thread-125974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:05.965 [DEBUG] [Thread-125974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:05.965 [DEBUG] [Thread-125974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:34:06.006 [DEBUG] [Thread-125974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:06.007 [DEBUG] [Thread-125974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:06.009 [DEBUG] [Thread-125974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:06.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:06.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:34:06.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:34:06.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:34:06.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:06.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:34:06.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:06.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:06.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:34:06.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.481334 -999.00  +18.10  19.40     34   +2.30 1 1 1 1 1   888    0 14.69 -43.06 ----- 15.5 19.4 256.4 21.1 25.2 -26.9 24.4 -25.2 24.3 -23.7 25.2 -27.1
2025-09-28T13:34:06.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:34:06.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:34:06.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.481334
2025-09-28T13:34:06.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:34:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:34:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:34:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:34:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:34:06.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:33:54', tmtdew=18.8, humidity=28.33, cloud=0.0, wind=19.36, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:33:07.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:34:06.034 [DEBUG] [Thread-125974] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:06.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-28T13:34:06.130 [DEBUG] [Thread-125977] [transport.py] [_log()] starting thread (client mode): 0x28707df0
2025-09-28T13:34:06.130 [DEBUG] [Thread-125977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:06.145 [DEBUG] [Thread-125977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:34:06.145 [INFO] [Thread-125977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:06.153 [DEBUG] [Thread-125977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:06.154 [DEBUG] [Thread-125977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:06.155 [DEBUG] [Thread-125977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:06.155 [DEBUG] [Thread-125977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:06.155 [DEBUG] [Thread-125977] [transport.py] [_log()] Compression: none
2025-09-28T13:34:06.155 [DEBUG] [Thread-125977] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:06.210 [DEBUG] [Thread-125977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:06.211 [DEBUG] [Thread-125977] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:06.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:34:06.212 [DEBUG] [Thread-125977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:34:06.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:06.267 [DEBUG] [Thread-125977] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:06.268 [DEBUG] [Thread-125977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:06.268 [DEBUG] [Thread-125977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:06.268 [DEBUG] [Thread-125977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:34:06.268 [DEBUG] [Thread-125977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:06.287 [INFO] [Thread-125977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:06.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-28T13:34:06.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:07.293 [DEBUG] [Thread-125977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:07.294 [DEBUG] [Thread-125977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:07.341 [DEBUG] [Thread-125977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:07.341 [DEBUG] [Thread-125977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:07.351 [DEBUG] [Thread-125977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:07.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:07.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-28T13:34:07.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-28T13:34:07.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:07.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:07.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:07.386 [DEBUG] [Thread-125977] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:12.475 [DEBUG] [Thread-125979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:17.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:34:17.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:34:17.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:34:17.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 33, 54), 18.8, 28.33, 0.0, 19.36, 18.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:34:17.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:33:54
2025-09-28T13:34:18.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:34:18.224 [DEBUG] [Thread-125980] [transport.py] [_log()] starting thread (client mode): 0x28704910
2025-09-28T13:34:18.224 [DEBUG] [Thread-125980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:18.244 [DEBUG] [Thread-125980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:34:18.244 [INFO] [Thread-125980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:18.248 [DEBUG] [Thread-125980] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] Compression: none
2025-09-28T13:34:18.249 [DEBUG] [Thread-125980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:18.257 [DEBUG] [Thread-125980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:18.258 [DEBUG] [Thread-125980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:18.258 [DEBUG] [Thread-125980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:34:18.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:34:18.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:18.260 [DEBUG] [Thread-125980] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:18.260 [DEBUG] [Thread-125980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:18.260 [DEBUG] [Thread-125980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:18.260 [DEBUG] [Thread-125980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:34:18.260 [DEBUG] [Thread-125980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:18.295 [INFO] [Thread-125980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:18.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:18.913 [DEBUG] [Thread-125980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:18.913 [DEBUG] [Thread-125980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:18.914 [DEBUG] [Thread-125980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:34:18.954 [DEBUG] [Thread-125980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:18.954 [DEBUG] [Thread-125980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:18.957 [DEBUG] [Thread-125982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:18.958 [DEBUG] [Thread-125980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:18.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:18.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:34:18.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:34:18.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:34:18.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:18.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:34:18.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.482028 -999.00  +18.60  22.39     34   +2.70 1 1 1 1 1   888    0 14.92 -33.45 ----- 22.3 22.4 279.2 28.8 25.3 -25.9 24.4 -24.7 24.2 -26.3 25.5 -24.2
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:34:18.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.482028
2025-09-28T13:34:18.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:34:18.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:34:18.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:34:18.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:34:18.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:34:18.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:33:54', tmtdew=18.8, humidity=28.33, cloud=0.0, wind=19.36, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:34:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:34:18.981 [DEBUG] [Thread-125980] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:19.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-28T13:34:19.075 [DEBUG] [Thread-125984] [transport.py] [_log()] starting thread (client mode): 0x28704850
2025-09-28T13:34:19.075 [DEBUG] [Thread-125984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:19.090 [DEBUG] [Thread-125984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:34:19.090 [INFO] [Thread-125984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:34:19.097 [DEBUG] [Thread-125984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:19.098 [DEBUG] [Thread-125984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:19.099 [DEBUG] [Thread-125984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:19.099 [DEBUG] [Thread-125984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:19.099 [DEBUG] [Thread-125984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:19.099 [DEBUG] [Thread-125984] [transport.py] [_log()] Compression: none
2025-09-28T13:34:19.099 [DEBUG] [Thread-125984] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:19.156 [DEBUG] [Thread-125984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:19.156 [DEBUG] [Thread-125984] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:19.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:34:19.157 [DEBUG] [Thread-125984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:34:19.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:19.214 [DEBUG] [Thread-125984] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:19.215 [DEBUG] [Thread-125984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:19.215 [DEBUG] [Thread-125984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:19.215 [DEBUG] [Thread-125984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:34:19.215 [DEBUG] [Thread-125984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:19.235 [INFO] [Thread-125984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:19.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-28T13:34:19.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:20.275 [DEBUG] [Thread-125984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:20.275 [DEBUG] [Thread-125984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:20.323 [DEBUG] [Thread-125984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:20.323 [DEBUG] [Thread-125984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:20.332 [DEBUG] [Thread-125984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:20.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:20.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')
2025-09-28T13:34:20.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') -> 00000000
2025-09-28T13:34:20.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:20.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:20.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:20.587 [DEBUG] [Thread-125984] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:30.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:34:30.590 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:34:30.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-28T13:34:31.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 34, 26), 18.97, 28.03, 0.0, 16.69, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:34:31.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:34:26
2025-09-28T13:34:31.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:34:31.421 [DEBUG] [Thread-125986] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T13:34:31.422 [DEBUG] [Thread-125986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:31.442 [DEBUG] [Thread-125986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:34:31.442 [INFO] [Thread-125986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:31.445 [DEBUG] [Thread-125986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] Compression: none
2025-09-28T13:34:31.446 [DEBUG] [Thread-125986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:31.465 [DEBUG] [Thread-125986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:31.465 [DEBUG] [Thread-125986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:31.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:34:31.466 [DEBUG] [Thread-125986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:34:31.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:31.468 [DEBUG] [Thread-125986] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:31.469 [DEBUG] [Thread-125986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:31.469 [DEBUG] [Thread-125986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:31.469 [DEBUG] [Thread-125986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:34:31.469 [DEBUG] [Thread-125986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:31.493 [INFO] [Thread-125986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:31.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:32.241 [DEBUG] [Thread-125986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:32.241 [DEBUG] [Thread-125986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:32.242 [DEBUG] [Thread-125986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:34:32.282 [DEBUG] [Thread-125986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:32.283 [DEBUG] [Thread-125986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:32.285 [DEBUG] [Thread-125986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:32.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:32.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:34:32.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:34:32.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:34:32.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:32.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:34:32.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:32.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:32.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:34:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.482028 -999.00  +18.60  22.39     34   +2.70 1 1 1 1 1   888    0 14.92 -33.45 ----- 22.3 22.4 279.2 28.8 25.3 -25.9 24.4 -24.7 24.2 -26.3 25.5 -24.2
2025-09-28T13:34:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:34:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:34:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.482028
2025-09-28T13:34:32.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:34:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:34:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:34:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:34:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:34:32.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:34:26', tmtdew=18.97, humidity=28.03, cloud=0.0, wind=16.69, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:34:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:34:32.310 [DEBUG] [Thread-125986] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:32.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-28T13:34:32.398 [DEBUG] [Thread-125989] [transport.py] [_log()] starting thread (client mode): 0x28706cb0
2025-09-28T13:34:32.398 [DEBUG] [Thread-125989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:32.413 [DEBUG] [Thread-125989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:34:32.413 [INFO] [Thread-125989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:34:32.420 [DEBUG] [Thread-125989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:32.420 [DEBUG] [Thread-125989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:34:32.420 [DEBUG] [Thread-125989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:32.420 [DEBUG] [Thread-125989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] Compression: none
2025-09-28T13:34:32.421 [DEBUG] [Thread-125989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:32.478 [DEBUG] [Thread-125989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:32.478 [DEBUG] [Thread-125989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:32.479 [DEBUG] [Thread-125989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:34:32.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:34:32.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:32.539 [DEBUG] [Thread-125989] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:32.539 [DEBUG] [Thread-125989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:32.539 [DEBUG] [Thread-125989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:32.539 [DEBUG] [Thread-125989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:34:32.539 [DEBUG] [Thread-125989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:32.559 [INFO] [Thread-125989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:32.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-28T13:34:32.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:33.534 [DEBUG] [Thread-125989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:33.535 [DEBUG] [Thread-125989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:33.582 [DEBUG] [Thread-125989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:33.582 [DEBUG] [Thread-125989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:33.592 [DEBUG] [Thread-125989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:33.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:33.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-28T13:34:33.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-28T13:34:33.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:33.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:33.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:33.626 [DEBUG] [Thread-125989] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:34.002 [DEBUG] [Thread-125991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:43.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:34:43.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:34:43.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-28T13:34:44.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 34, 26), 18.97, 28.03, 0.0, 16.69, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:34:44.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:34:26
2025-09-28T13:34:44.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:34:44.476 [DEBUG] [Thread-125992] [transport.py] [_log()] starting thread (client mode): 0x28706b90
2025-09-28T13:34:44.476 [DEBUG] [Thread-125992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:44.493 [DEBUG] [Thread-125992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:34:44.493 [INFO] [Thread-125992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:34:44.496 [DEBUG] [Thread-125992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:44.496 [DEBUG] [Thread-125992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:34:44.496 [DEBUG] [Thread-125992] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] Compression: none
2025-09-28T13:34:44.497 [DEBUG] [Thread-125992] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:44.505 [DEBUG] [Thread-125992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:44.505 [DEBUG] [Thread-125992] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:44.506 [DEBUG] [Thread-125992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:34:44.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:34:44.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:44.507 [DEBUG] [Thread-125992] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:44.507 [DEBUG] [Thread-125992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:44.507 [DEBUG] [Thread-125992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:44.507 [DEBUG] [Thread-125992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:34:44.507 [DEBUG] [Thread-125992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:44.519 [INFO] [Thread-125992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:44.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:45.153 [DEBUG] [Thread-125992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:45.153 [DEBUG] [Thread-125992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:45.153 [DEBUG] [Thread-125992] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:34:45.194 [DEBUG] [Thread-125992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:45.194 [DEBUG] [Thread-125992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:45.197 [DEBUG] [Thread-125992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:45.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:45.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:34:45.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:34:45.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:34:45.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:45.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:34:45.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:45.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.482375 -999.00  +18.60  32.39     34   +2.80 1 1 2 1 1   888    0 15.10 -26.09 ----- 30.7 32.4 257.2 36.2 25.2 -26.9 24.3 -25.5 24.2 -24.8 25.4 -25.2
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.482375
2025-09-28T13:34:45.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:34:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:34:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:34:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:34:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:34:45.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:34:26', tmtdew=18.97, humidity=28.03, cloud=0.0, wind=16.69, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:34:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:34:45.220 [DEBUG] [Thread-125992] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:45.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:34:45.316 [DEBUG] [Thread-125995] [transport.py] [_log()] starting thread (client mode): 0x28704520
2025-09-28T13:34:45.316 [DEBUG] [Thread-125995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:45.331 [DEBUG] [Thread-125995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:34:45.331 [INFO] [Thread-125995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:34:45.338 [DEBUG] [Thread-125995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:45.338 [DEBUG] [Thread-125995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:34:45.338 [DEBUG] [Thread-125995] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] Compression: none
2025-09-28T13:34:45.339 [DEBUG] [Thread-125995] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:45.398 [DEBUG] [Thread-125995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:45.399 [DEBUG] [Thread-125995] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:45.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:34:45.400 [DEBUG] [Thread-125995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:34:45.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:45.454 [DEBUG] [Thread-125995] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:45.455 [DEBUG] [Thread-125995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:45.455 [DEBUG] [Thread-125995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:45.455 [DEBUG] [Thread-125995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:34:45.455 [DEBUG] [Thread-125995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:45.473 [INFO] [Thread-125995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:45.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-28T13:34:45.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:46.423 [DEBUG] [Thread-125995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:46.423 [DEBUG] [Thread-125995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:46.471 [DEBUG] [Thread-125995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:46.471 [DEBUG] [Thread-125995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:46.480 [DEBUG] [Thread-125995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:46.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:46.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-28T13:34:46.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-28T13:34:46.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:46.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:46.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:46.516 [DEBUG] [Thread-125995] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:49.057 [DEBUG] [Thread-125997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:55.694 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:55.696 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:34:56.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:34:56.518 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:34:56.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-28T13:34:57.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 34, 26), 18.97, 28.03, 0.0, 16.69, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:34:57.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:34:26
2025-09-28T13:34:57.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:34:57.384 [DEBUG] [Thread-125998] [transport.py] [_log()] starting thread (client mode): 0x28705660
2025-09-28T13:34:57.384 [DEBUG] [Thread-125998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:34:57.404 [DEBUG] [Thread-125998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:34:57.404 [INFO] [Thread-125998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:34:57.407 [DEBUG] [Thread-125998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] client lang: <none>
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] server lang: <none>
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] kex follows: False
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] Compression: none
2025-09-28T13:34:57.408 [DEBUG] [Thread-125998] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:34:57.423 [DEBUG] [Thread-125998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:34:57.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:34:57.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] userauth is OK
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:34:57.424 [DEBUG] [Thread-125998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:34:57.433 [INFO] [Thread-125998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:34:57.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:34:58.186 [DEBUG] [Thread-125998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:34:58.187 [DEBUG] [Thread-125998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:34:58.187 [DEBUG] [Thread-125998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:34:58.228 [DEBUG] [Thread-125998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:34:58.228 [DEBUG] [Thread-125998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:34:58.229 [DEBUG] [Thread-125998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:34:58.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:34:58.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:34:58.244 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:34:58.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:34:58.247 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:34:58.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.482375 -999.00  +18.60  32.39     34   +2.80 1 1 2 1 1   888    0 15.10 -26.09 ----- 30.7 32.4 257.2 36.2 25.2 -26.9 24.3 -25.5 24.2 -24.8 25.4 -25.2
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:34:58.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.482375
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:34:58.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:34:26', tmtdew=18.97, humidity=28.03, cloud=0.0, wind=16.69, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:34:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:34:58.248 [DEBUG] [Thread-125998] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:34:58.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-28T13:35:04.100 [DEBUG] [Thread-126001 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:12.528 [DEBUG] [Thread-126002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:19.132 [DEBUG] [Thread-126003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:34.162 [DEBUG] [Thread-126004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:49.190 [DEBUG] [Thread-126005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:55.836 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:35:55.838 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:04.218 [DEBUG] [Thread-126006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:12.573 [DEBUG] [Thread-126007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:19.244 [DEBUG] [Thread-126008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:34.275 [DEBUG] [Thread-126009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:49.306 [DEBUG] [Thread-126010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:55.996 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:36:55.997 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:04.332 [DEBUG] [Thread-126011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:10.586 [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-28T13:37:12.624 [DEBUG] [Thread-126012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:19.362 [DEBUG] [Thread-126013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:20.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:37:20.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:37:20.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-28T13:37:21.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 37, 6), 18.43, 29.09, 0.0, 19.27, 18.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:37:21.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:37:06
2025-09-28T13:37:21.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:37:21.479 [DEBUG] [Thread-126014] [transport.py] [_log()] starting thread (client mode): 0x28707e20
2025-09-28T13:37:21.479 [DEBUG] [Thread-126014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:21.501 [DEBUG] [Thread-126014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:37:21.501 [INFO] [Thread-126014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:37:21.504 [DEBUG] [Thread-126014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] Compression: none
2025-09-28T13:37:21.505 [DEBUG] [Thread-126014] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:21.522 [DEBUG] [Thread-126014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:21.523 [DEBUG] [Thread-126014] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:21.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:37:21.524 [DEBUG] [Thread-126014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:37:21.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:21.526 [DEBUG] [Thread-126014] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:21.526 [DEBUG] [Thread-126014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:21.526 [DEBUG] [Thread-126014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:21.526 [DEBUG] [Thread-126014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:37:21.526 [DEBUG] [Thread-126014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:21.550 [INFO] [Thread-126014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:21.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:22.184 [DEBUG] [Thread-126014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:22.184 [DEBUG] [Thread-126014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:22.185 [DEBUG] [Thread-126014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:37:22.225 [DEBUG] [Thread-126014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:22.226 [DEBUG] [Thread-126014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:22.229 [DEBUG] [Thread-126014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:22.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:22.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:37:22.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:37:22.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:37:22.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:22.254 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:37:22.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:22.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:37:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.483764 -999.00  +18.20  13.00     35   +2.70 1 1 1 1 1   888    0 15.21 -21.60 ----- 17.0 13.0 267.2 20.3 25.1 -26.4 24.2 -24.8 24.1 -23.7 25.1 -25.7
2025-09-28T13:37:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:37:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:37:22.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.483764
2025-09-28T13:37:22.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:37:22.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:37:22.257 [DEBUG] [Thread-126014] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:22.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:37:22.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:37:22.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:37:22.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:37:06', tmtdew=18.43, humidity=29.09, cloud=0.0, wind=19.27, temperature=18.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:36:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:37:22.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-28T13:37:22.352 [DEBUG] [Thread-126017] [transport.py] [_log()] starting thread (client mode): 0x287056c0
2025-09-28T13:37:22.352 [DEBUG] [Thread-126017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:22.366 [DEBUG] [Thread-126017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:37:22.367 [INFO] [Thread-126017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:37:22.374 [DEBUG] [Thread-126017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] Compression: none
2025-09-28T13:37:22.375 [DEBUG] [Thread-126017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:22.432 [DEBUG] [Thread-126017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:22.432 [DEBUG] [Thread-126017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:22.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:37:22.433 [DEBUG] [Thread-126017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:37:22.434 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:22.488 [DEBUG] [Thread-126017] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:22.488 [DEBUG] [Thread-126017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:22.488 [DEBUG] [Thread-126017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:22.488 [DEBUG] [Thread-126017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:37:22.488 [DEBUG] [Thread-126017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:22.507 [INFO] [Thread-126017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:22.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-28T13:37:22.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:23.470 [DEBUG] [Thread-126017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:23.470 [DEBUG] [Thread-126017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:23.519 [DEBUG] [Thread-126017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:23.519 [DEBUG] [Thread-126017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:23.527 [DEBUG] [Thread-126017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:23.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:23.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-28T13:37:23.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-28T13:37:23.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:23.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:23.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:23.561 [DEBUG] [Thread-126017] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:33.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:37:33.562 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:37:33.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-28T13:37:34.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 37, 6), 18.43, 29.09, 0.0, 19.27, 18.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:37:34.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:37:06
2025-09-28T13:37:34.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:37:34.386 [DEBUG] [Thread-126019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:34.420 [DEBUG] [Thread-126020] [transport.py] [_log()] starting thread (client mode): 0x28704be0
2025-09-28T13:37:34.420 [DEBUG] [Thread-126020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:34.440 [DEBUG] [Thread-126020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:37:34.440 [INFO] [Thread-126020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:37:34.441 [DEBUG] [Thread-126020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] Compression: none
2025-09-28T13:37:34.442 [DEBUG] [Thread-126020] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:34.460 [DEBUG] [Thread-126020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:34.461 [DEBUG] [Thread-126020] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:34.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:37:34.462 [DEBUG] [Thread-126020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:37:34.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:34.463 [DEBUG] [Thread-126020] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:34.463 [DEBUG] [Thread-126020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:34.463 [DEBUG] [Thread-126020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:34.463 [DEBUG] [Thread-126020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:37:34.463 [DEBUG] [Thread-126020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:34.484 [INFO] [Thread-126020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:34.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:35.080 [DEBUG] [Thread-126020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:35.080 [DEBUG] [Thread-126020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:35.080 [DEBUG] [Thread-126020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:37:35.121 [DEBUG] [Thread-126020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:35.121 [DEBUG] [Thread-126020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:35.126 [DEBUG] [Thread-126020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:35.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:35.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:37:35.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:37:35.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:37:35.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:35.146 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:37:35.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:35.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:37:35.146 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.484111 -999.00  +18.40  15.80     34   +2.60 1 1 1 1 1   888    0 15.25 -21.20 ----- 14.6 15.8 268.0 22.0 25.2 -25.9 24.2 -25.4 24.2 -24.2 25.1 -25.0
2025-09-28T13:37:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:37:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:37:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.484111
2025-09-28T13:37:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:37:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:37:35.148 [DEBUG] [Thread-126020] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:37:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:37:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:37:35.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:37:06', tmtdew=18.43, humidity=29.09, cloud=0.0, wind=19.27, temperature=18.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:37:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:37:35.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-28T13:37:35.238 [DEBUG] [Thread-126023] [transport.py] [_log()] starting thread (client mode): 0x28706ce0
2025-09-28T13:37:35.239 [DEBUG] [Thread-126023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:35.253 [DEBUG] [Thread-126023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:37:35.253 [INFO] [Thread-126023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:37:35.261 [DEBUG] [Thread-126023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:35.261 [DEBUG] [Thread-126023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:35.262 [DEBUG] [Thread-126023] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] Compression: none
2025-09-28T13:37:35.263 [DEBUG] [Thread-126023] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:35.320 [DEBUG] [Thread-126023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:35.320 [DEBUG] [Thread-126023] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:35.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:37:35.321 [DEBUG] [Thread-126023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:37:35.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:35.376 [DEBUG] [Thread-126023] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:35.376 [DEBUG] [Thread-126023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:35.377 [DEBUG] [Thread-126023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:35.377 [DEBUG] [Thread-126023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:37:35.377 [DEBUG] [Thread-126023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:35.397 [INFO] [Thread-126023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:35.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-28T13:37:35.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:36.388 [DEBUG] [Thread-126023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:36.388 [DEBUG] [Thread-126023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:36.436 [DEBUG] [Thread-126023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:36.436 [DEBUG] [Thread-126023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:36.445 [DEBUG] [Thread-126023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:36.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:36.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')
2025-09-28T13:37:36.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-28T13:37:36.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:36.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:36.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:36.480 [DEBUG] [Thread-126023] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:46.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:37:46.483 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:37:46.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-28T13:37:47.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 37, 38), 18.41, 28.81, 0.0, 18.17, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:37:47.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:37:38
2025-09-28T13:37:47.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:37:47.347 [DEBUG] [Thread-126025] [transport.py] [_log()] starting thread (client mode): 0x28704a30
2025-09-28T13:37:47.347 [DEBUG] [Thread-126025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:47.366 [DEBUG] [Thread-126025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:37:47.366 [INFO] [Thread-126025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:47.370 [DEBUG] [Thread-126025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] Compression: none
2025-09-28T13:37:47.371 [DEBUG] [Thread-126025] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:47.388 [DEBUG] [Thread-126025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:47.388 [DEBUG] [Thread-126025] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:47.389 [DEBUG] [Thread-126025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:37:47.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:37:47.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:47.390 [DEBUG] [Thread-126025] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:47.391 [DEBUG] [Thread-126025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:47.391 [DEBUG] [Thread-126025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:47.391 [DEBUG] [Thread-126025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:37:47.391 [DEBUG] [Thread-126025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:47.416 [INFO] [Thread-126025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:47.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:48.033 [DEBUG] [Thread-126025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:48.033 [DEBUG] [Thread-126025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:48.033 [DEBUG] [Thread-126025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:37:48.074 [DEBUG] [Thread-126025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:48.074 [DEBUG] [Thread-126025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:48.077 [DEBUG] [Thread-126025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:48.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:48.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:37:48.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:37:48.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:37:48.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:48.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:37:48.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:48.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:37:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.484111 -999.00  +18.40  15.80     34   +2.60 1 1 1 1 1   888    0 15.25 -21.20 ----- 14.6 15.8 268.0 22.0 25.2 -25.9 24.2 -25.4 24.2 -24.2 25.1 -25.0
2025-09-28T13:37:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:37:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:37:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.484111
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:37:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:37:38', tmtdew=18.41, humidity=28.81, cloud=0.0, wind=18.17, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:37:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:37:48.103 [DEBUG] [Thread-126025] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:48.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-28T13:37:48.198 [DEBUG] [Thread-126028] [transport.py] [_log()] starting thread (client mode): 0x28705ab0
2025-09-28T13:37:48.198 [DEBUG] [Thread-126028] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:37:48.214 [DEBUG] [Thread-126028] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:37:48.214 [INFO] [Thread-126028] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:37:48.221 [DEBUG] [Thread-126028] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:37:48.221 [DEBUG] [Thread-126028] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] client lang: <none>
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] server lang: <none>
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] kex follows: False
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] Compression: none
2025-09-28T13:37:48.222 [DEBUG] [Thread-126028] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:37:48.280 [DEBUG] [Thread-126028] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:37:48.281 [DEBUG] [Thread-126028] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:37:48.281 [DEBUG] [Thread-126028] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:37:48.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:37:48.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:37:48.337 [DEBUG] [Thread-126028] [transport.py] [_log()] userauth is OK
2025-09-28T13:37:48.337 [DEBUG] [Thread-126028] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:37:48.337 [DEBUG] [Thread-126028] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:37:48.337 [DEBUG] [Thread-126028] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:37:48.337 [DEBUG] [Thread-126028] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:37:48.356 [INFO] [Thread-126028] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:37:48.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-28T13:37:48.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:37:49.401 [DEBUG] [Thread-126028] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:37:49.402 [DEBUG] [Thread-126028] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:37:49.422 [DEBUG] [Thread-126030 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:49.449 [DEBUG] [Thread-126028] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:37:49.449 [DEBUG] [Thread-126028] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:37:49.458 [DEBUG] [Thread-126028] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:37:49.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:37:49.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-28T13:37:49.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-28T13:37:49.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:37:49.485 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:37:49.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:37:49.493 [DEBUG] [Thread-126028] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:37:56.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:56.139 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:37:59.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:37:59.496 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:37:59.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:38:00.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 37, 38), 18.41, 28.81, 0.0, 18.17, 18.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:38:00.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:37:38
2025-09-28T13:38:00.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:38:00.367 [DEBUG] [Thread-126031] [transport.py] [_log()] starting thread (client mode): 0x287050f0
2025-09-28T13:38:00.367 [DEBUG] [Thread-126031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:00.388 [DEBUG] [Thread-126031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:38:00.388 [INFO] [Thread-126031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] Compression: none
2025-09-28T13:38:00.390 [DEBUG] [Thread-126031] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:00.402 [DEBUG] [Thread-126031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:00.403 [DEBUG] [Thread-126031] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:00.403 [DEBUG] [Thread-126031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:38:00.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:38:00.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:00.405 [DEBUG] [Thread-126031] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:00.405 [DEBUG] [Thread-126031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:00.406 [DEBUG] [Thread-126031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:00.406 [DEBUG] [Thread-126031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:38:00.406 [DEBUG] [Thread-126031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:00.441 [INFO] [Thread-126031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:00.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:01.062 [DEBUG] [Thread-126031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:01.062 [DEBUG] [Thread-126031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:01.062 [DEBUG] [Thread-126031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:38:01.103 [DEBUG] [Thread-126031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:01.103 [DEBUG] [Thread-126031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:01.105 [DEBUG] [Thread-126031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:01.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:01.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:38:01.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:38:01.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:38:01.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:01.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:38:01.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:01.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:01.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:38:01.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.484111 -999.00  +18.40  15.80     34   +2.60 1 1 1 1 1   888    0 15.25 -21.20 ----- 14.6 15.8 268.0 22.0 25.2 -25.9 24.2 -25.4 24.2 -24.2 25.1 -25.0
2025-09-28T13:38:01.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.484111
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:38:01.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:37:38', tmtdew=18.41, humidity=28.81, cloud=0.0, wind=18.17, temperature=18.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:37:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:38:01.123 [DEBUG] [Thread-126031] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:01.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:38:01.208 [DEBUG] [Thread-126034] [transport.py] [_log()] starting thread (client mode): 0x28705d20
2025-09-28T13:38:01.208 [DEBUG] [Thread-126034] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:01.222 [DEBUG] [Thread-126034] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:38:01.222 [INFO] [Thread-126034] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] Compression: none
2025-09-28T13:38:01.230 [DEBUG] [Thread-126034] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:01.287 [DEBUG] [Thread-126034] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:01.287 [DEBUG] [Thread-126034] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:01.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:38:01.288 [DEBUG] [Thread-126034] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:38:01.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:01.344 [DEBUG] [Thread-126034] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:01.345 [DEBUG] [Thread-126034] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:01.345 [DEBUG] [Thread-126034] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:01.345 [DEBUG] [Thread-126034] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:38:01.345 [DEBUG] [Thread-126034] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:01.360 [INFO] [Thread-126034] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:01.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:38:01.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:02.352 [DEBUG] [Thread-126034] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:02.353 [DEBUG] [Thread-126034] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:02.401 [DEBUG] [Thread-126034] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:02.401 [DEBUG] [Thread-126034] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:02.409 [DEBUG] [Thread-126034] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:02.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:02.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-28T13:38:02.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-28T13:38:02.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:02.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:02.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:02.440 [DEBUG] [Thread-126034] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:04.470 [DEBUG] [Thread-126036 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:12.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:38:12.443 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:38:12.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-28T13:38:12.668 [DEBUG] [Thread-126037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 38, 10), 18.38, 28.89, 0.0, 14.95, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:38:13.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:38:10
2025-09-28T13:38:13.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:38:13.321 [DEBUG] [Thread-126038] [transport.py] [_log()] starting thread (client mode): 0x28707430
2025-09-28T13:38:13.321 [DEBUG] [Thread-126038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:13.342 [DEBUG] [Thread-126038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:38:13.342 [INFO] [Thread-126038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:13.345 [DEBUG] [Thread-126038] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] Compression: none
2025-09-28T13:38:13.346 [DEBUG] [Thread-126038] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:13.365 [DEBUG] [Thread-126038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:13.365 [DEBUG] [Thread-126038] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:13.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:38:13.367 [DEBUG] [Thread-126038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:38:13.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:13.369 [DEBUG] [Thread-126038] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:13.369 [DEBUG] [Thread-126038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:13.370 [DEBUG] [Thread-126038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:13.370 [DEBUG] [Thread-126038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:38:13.370 [DEBUG] [Thread-126038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:13.392 [INFO] [Thread-126038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:13.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:14.036 [DEBUG] [Thread-126038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:14.036 [DEBUG] [Thread-126038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:14.036 [DEBUG] [Thread-126038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:38:14.077 [DEBUG] [Thread-126038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:14.077 [DEBUG] [Thread-126038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:14.080 [DEBUG] [Thread-126038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:14.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:14.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:38:14.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:38:14.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:38:14.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:14.104 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:38:14.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:14.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.484459 -999.00  +18.10  12.74     34   +2.30 1 1 1 1 1   888    0 15.28 -20.56 ----- 16.4 12.7 253.8 19.9 25.2 -27.4 24.2 -25.5 24.3 -24.3 25.1 -26.8
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.484459
2025-09-28T13:38:14.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:38:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:38:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:38:14.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:38:14.106 [DEBUG] [Thread-126038] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:14.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:38:14.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:38:10', tmtdew=18.38, humidity=28.89, cloud=0.0, wind=14.95, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:37:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:38:14.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-28T13:38:14.202 [DEBUG] [Thread-126041] [transport.py] [_log()] starting thread (client mode): 0x28704430
2025-09-28T13:38:14.202 [DEBUG] [Thread-126041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:14.216 [DEBUG] [Thread-126041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:38:14.216 [INFO] [Thread-126041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:14.225 [DEBUG] [Thread-126041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] Compression: none
2025-09-28T13:38:14.226 [DEBUG] [Thread-126041] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:14.281 [DEBUG] [Thread-126041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:14.281 [DEBUG] [Thread-126041] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:14.281 [DEBUG] [Thread-126041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:38:14.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:38:14.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:14.337 [DEBUG] [Thread-126041] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:14.337 [DEBUG] [Thread-126041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:14.337 [DEBUG] [Thread-126041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:14.337 [DEBUG] [Thread-126041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:38:14.338 [DEBUG] [Thread-126041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:14.356 [INFO] [Thread-126041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:14.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-28T13:38:14.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:15.321 [DEBUG] [Thread-126041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:15.322 [DEBUG] [Thread-126041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:15.369 [DEBUG] [Thread-126041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:15.369 [DEBUG] [Thread-126041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:15.378 [DEBUG] [Thread-126041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:15.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:15.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-28T13:38:15.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-28T13:38:15.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:15.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:15.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:15.414 [DEBUG] [Thread-126041] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:19.498 [DEBUG] [Thread-126043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:38:25.417 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:38:25.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:38:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 38, 10), 18.38, 28.89, 0.0, 14.95, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:38:26.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:38:10
2025-09-28T13:38:26.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:38:26.285 [DEBUG] [Thread-126044] [transport.py] [_log()] starting thread (client mode): 0x2e376710
2025-09-28T13:38:26.285 [DEBUG] [Thread-126044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:26.305 [DEBUG] [Thread-126044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:38:26.305 [INFO] [Thread-126044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:38:26.308 [DEBUG] [Thread-126044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:26.308 [DEBUG] [Thread-126044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] Compression: none
2025-09-28T13:38:26.309 [DEBUG] [Thread-126044] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:26.326 [DEBUG] [Thread-126044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:26.327 [DEBUG] [Thread-126044] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:26.327 [DEBUG] [Thread-126044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:38:26.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:38:26.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:26.329 [DEBUG] [Thread-126044] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:26.329 [DEBUG] [Thread-126044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:26.330 [DEBUG] [Thread-126044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:26.330 [DEBUG] [Thread-126044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:38:26.330 [DEBUG] [Thread-126044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:26.350 [INFO] [Thread-126044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:26.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:26.988 [DEBUG] [Thread-126044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:26.988 [DEBUG] [Thread-126044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:26.988 [DEBUG] [Thread-126044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:38:27.028 [DEBUG] [Thread-126044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:27.029 [DEBUG] [Thread-126044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:27.032 [DEBUG] [Thread-126044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:27.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:27.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:38:27.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:38:27.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:38:27.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:27.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:38:27.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:27.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:38:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.484459 -999.00  +18.10  12.74     34   +2.30 1 1 1 1 1   888    0 15.28 -20.56 ----- 16.4 12.7 253.8 19.9 25.2 -27.4 24.2 -25.5 24.3 -24.3 25.1 -26.8
2025-09-28T13:38:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:38:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:38:27.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.484459
2025-09-28T13:38:27.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:38:27.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:38:27.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:38:27.058 [DEBUG] [Thread-126044] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:27.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:38:27.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:38:27.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:38:10', tmtdew=18.38, humidity=28.89, cloud=0.0, wind=14.95, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:37:37.258', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:38:27.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-28T13:38:27.156 [DEBUG] [Thread-126047] [transport.py] [_log()] starting thread (client mode): 0x2e376a70
2025-09-28T13:38:27.156 [DEBUG] [Thread-126047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:27.171 [DEBUG] [Thread-126047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:38:27.171 [INFO] [Thread-126047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:38:27.178 [DEBUG] [Thread-126047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:27.179 [DEBUG] [Thread-126047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:38:27.179 [DEBUG] [Thread-126047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:27.179 [DEBUG] [Thread-126047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:27.179 [DEBUG] [Thread-126047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:27.179 [DEBUG] [Thread-126047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] Compression: none
2025-09-28T13:38:27.180 [DEBUG] [Thread-126047] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:27.238 [DEBUG] [Thread-126047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:27.238 [DEBUG] [Thread-126047] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:27.239 [DEBUG] [Thread-126047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:38:27.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:38:27.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:27.296 [DEBUG] [Thread-126047] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:27.296 [DEBUG] [Thread-126047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:27.296 [DEBUG] [Thread-126047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:27.296 [DEBUG] [Thread-126047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:38:27.296 [DEBUG] [Thread-126047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:27.320 [INFO] [Thread-126047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:27.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-28T13:38:27.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:28.287 [DEBUG] [Thread-126047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:28.287 [DEBUG] [Thread-126047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:28.335 [DEBUG] [Thread-126047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:28.335 [DEBUG] [Thread-126047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:28.344 [DEBUG] [Thread-126047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:28.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:28.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-28T13:38:28.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-28T13:38:28.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:28.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:28.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:28.380 [DEBUG] [Thread-126047] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:34.545 [DEBUG] [Thread-126049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:38.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:38:38.382 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:38:38.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-28T13:38:39.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 38, 10), 18.38, 28.89, 0.0, 14.95, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:38:39.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:38:10
2025-09-28T13:38:39.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:38:39.296 [DEBUG] [Thread-126050] [transport.py] [_log()] starting thread (client mode): 0x2e375cf0
2025-09-28T13:38:39.296 [DEBUG] [Thread-126050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:39.315 [DEBUG] [Thread-126050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:38:39.315 [INFO] [Thread-126050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:39.318 [DEBUG] [Thread-126050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] Compression: none
2025-09-28T13:38:39.319 [DEBUG] [Thread-126050] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:39.328 [DEBUG] [Thread-126050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:39.328 [DEBUG] [Thread-126050] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:39.329 [DEBUG] [Thread-126050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:38:39.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:38:39.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:39.329 [DEBUG] [Thread-126050] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:39.329 [DEBUG] [Thread-126050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:39.329 [DEBUG] [Thread-126050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:39.329 [DEBUG] [Thread-126050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:38:39.330 [DEBUG] [Thread-126050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:39.340 [INFO] [Thread-126050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:39.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:39.969 [DEBUG] [Thread-126050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:39.970 [DEBUG] [Thread-126050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:39.970 [DEBUG] [Thread-126050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:38:40.011 [DEBUG] [Thread-126050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:40.011 [DEBUG] [Thread-126050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:40.012 [DEBUG] [Thread-126050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:40.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:40.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:38:40.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:38:40.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:38:40.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:40.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:38:40.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:40.028 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485153 -999.00  +18.80   8.19     34   +2.80 1 1 1 1 1   888    0 15.07 -19.81 ----- 16.8 8.2 253.4 18.8 25.2 -25.1 24.2 -24.6 24.5 -24.1 25.3 -24.8
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485153
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:38:40.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:38:10', tmtdew=18.38, humidity=28.89, cloud=0.0, wind=14.95, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:38:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:38:40.030 [DEBUG] [Thread-126050] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:40.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-28T13:38:40.117 [DEBUG] [Thread-126053] [transport.py] [_log()] starting thread (client mode): 0x2e3743a0
2025-09-28T13:38:40.117 [DEBUG] [Thread-126053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:40.132 [DEBUG] [Thread-126053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:38:40.132 [INFO] [Thread-126053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] Compression: none
2025-09-28T13:38:40.140 [DEBUG] [Thread-126053] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:40.196 [DEBUG] [Thread-126053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:40.196 [DEBUG] [Thread-126053] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:40.196 [DEBUG] [Thread-126053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:38:40.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:38:40.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:40.253 [DEBUG] [Thread-126053] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:40.253 [DEBUG] [Thread-126053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:40.253 [DEBUG] [Thread-126053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:40.253 [DEBUG] [Thread-126053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:38:40.253 [DEBUG] [Thread-126053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:40.268 [INFO] [Thread-126053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:40.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:38:40.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:41.246 [DEBUG] [Thread-126053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:41.246 [DEBUG] [Thread-126053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:41.294 [DEBUG] [Thread-126053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:41.294 [DEBUG] [Thread-126053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:41.302 [DEBUG] [Thread-126053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:41.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:41.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-28T13:38:41.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-28T13:38:41.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:41.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:41.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:41.334 [DEBUG] [Thread-126053] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:49.574 [DEBUG] [Thread-126055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:51.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:38:51.337 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:38:51.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-28T13:38:51.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 38, 42), 18.87, 27.85, 0.0, 19.69, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:38:51.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:38:42
2025-09-28T13:38:52.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:38:52.214 [DEBUG] [Thread-126056] [transport.py] [_log()] starting thread (client mode): 0x28704880
2025-09-28T13:38:52.214 [DEBUG] [Thread-126056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:52.234 [DEBUG] [Thread-126056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:38:52.235 [INFO] [Thread-126056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:38:52.238 [DEBUG] [Thread-126056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:52.238 [DEBUG] [Thread-126056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:38:52.238 [DEBUG] [Thread-126056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:52.238 [DEBUG] [Thread-126056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:52.238 [DEBUG] [Thread-126056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] Compression: none
2025-09-28T13:38:52.239 [DEBUG] [Thread-126056] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:52.257 [DEBUG] [Thread-126056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:52.257 [DEBUG] [Thread-126056] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:52.258 [DEBUG] [Thread-126056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:38:52.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:38:52.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:52.260 [DEBUG] [Thread-126056] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:52.260 [DEBUG] [Thread-126056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:52.260 [DEBUG] [Thread-126056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:52.260 [DEBUG] [Thread-126056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:38:52.260 [DEBUG] [Thread-126056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:52.296 [INFO] [Thread-126056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:52.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:52.951 [DEBUG] [Thread-126056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:52.952 [DEBUG] [Thread-126056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:52.952 [DEBUG] [Thread-126056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:38:52.992 [DEBUG] [Thread-126056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:52.992 [DEBUG] [Thread-126056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:52.995 [DEBUG] [Thread-126056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:53.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:53.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:38:53.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:38:53.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:38:53.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:53.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:38:53.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:53.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:53.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:38:53.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485153 -999.00  +18.80   8.19     34   +2.80 1 1 1 1 1   888    0 15.07 -19.81 ----- 16.8 8.2 253.4 18.8 25.2 -25.1 24.2 -24.6 24.5 -24.1 25.3 -24.8
2025-09-28T13:38:53.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:38:53.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:38:53.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485153
2025-09-28T13:38:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:38:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:38:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:38:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:38:53.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:38:53.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:38:42', tmtdew=18.87, humidity=27.85, cloud=0.0, wind=19.69, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:38:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:38:53.021 [DEBUG] [Thread-126056] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:53.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-28T13:38:53.116 [DEBUG] [Thread-126059] [transport.py] [_log()] starting thread (client mode): 0x28704700
2025-09-28T13:38:53.116 [DEBUG] [Thread-126059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:38:53.130 [DEBUG] [Thread-126059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:38:53.130 [INFO] [Thread-126059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:38:53.141 [DEBUG] [Thread-126059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:38:53.142 [DEBUG] [Thread-126059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] client lang: <none>
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] server lang: <none>
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] kex follows: False
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:38:53.143 [DEBUG] [Thread-126059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:38:53.144 [DEBUG] [Thread-126059] [transport.py] [_log()] Compression: none
2025-09-28T13:38:53.144 [DEBUG] [Thread-126059] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:38:53.202 [DEBUG] [Thread-126059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:38:53.203 [DEBUG] [Thread-126059] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:38:53.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:38:53.204 [DEBUG] [Thread-126059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:38:53.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:38:53.258 [DEBUG] [Thread-126059] [transport.py] [_log()] userauth is OK
2025-09-28T13:38:53.258 [DEBUG] [Thread-126059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:38:53.258 [DEBUG] [Thread-126059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:38:53.259 [DEBUG] [Thread-126059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:38:53.259 [DEBUG] [Thread-126059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:38:53.278 [INFO] [Thread-126059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:38:53.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-28T13:38:53.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:38:54.269 [DEBUG] [Thread-126059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:38:54.269 [DEBUG] [Thread-126059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:38:54.317 [DEBUG] [Thread-126059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:38:54.318 [DEBUG] [Thread-126059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:38:54.326 [DEBUG] [Thread-126059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:38:54.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:38:54.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')
2025-09-28T13:38:54.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') -> 00000000
2025-09-28T13:38:54.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:38:54.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:38:54.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:38:54.362 [DEBUG] [Thread-126059] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:38:56.279 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:38:56.280 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:39:04.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:39:04.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-28T13:39:04.616 [DEBUG] [Thread-126061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:04.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 38, 42), 18.87, 27.85, 0.0, 19.69, 18.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:39:04.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:38:42
2025-09-28T13:39:05.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:39:05.231 [DEBUG] [Thread-126062] [transport.py] [_log()] starting thread (client mode): 0x2e3752d0
2025-09-28T13:39:05.232 [DEBUG] [Thread-126062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:05.252 [DEBUG] [Thread-126062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:39:05.252 [INFO] [Thread-126062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] Compression: none
2025-09-28T13:39:05.256 [DEBUG] [Thread-126062] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:05.275 [DEBUG] [Thread-126062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:05.276 [DEBUG] [Thread-126062] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:05.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:39:05.277 [DEBUG] [Thread-126062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:39:05.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:05.278 [DEBUG] [Thread-126062] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:05.279 [DEBUG] [Thread-126062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:05.279 [DEBUG] [Thread-126062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:05.279 [DEBUG] [Thread-126062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:39:05.279 [DEBUG] [Thread-126062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:05.313 [INFO] [Thread-126062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:05.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:05.954 [DEBUG] [Thread-126062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:05.954 [DEBUG] [Thread-126062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:05.954 [DEBUG] [Thread-126062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:39:05.995 [DEBUG] [Thread-126062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:05.995 [DEBUG] [Thread-126062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:05.998 [DEBUG] [Thread-126062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:06.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:06.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:39:06.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:39:06.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:39:06.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:06.020 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:39:06.020 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:06.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485153 -999.00  +18.80   8.19     34   +2.80 1 1 1 1 1   888    0 15.07 -19.81 ----- 16.8 8.2 253.4 18.8 25.2 -25.1 24.2 -24.6 24.5 -24.1 25.3 -24.8
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485153
2025-09-28T13:39:06.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:39:06.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:39:06.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:39:06.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:39:06.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:39:06.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:38:42', tmtdew=18.87, humidity=27.85, cloud=0.0, wind=19.69, temperature=18.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:38:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:39:06.022 [DEBUG] [Thread-126062] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:06.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-28T13:39:06.119 [DEBUG] [Thread-126065] [transport.py] [_log()] starting thread (client mode): 0x2e3776d0
2025-09-28T13:39:06.119 [DEBUG] [Thread-126065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:06.134 [DEBUG] [Thread-126065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:39:06.134 [INFO] [Thread-126065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:06.142 [DEBUG] [Thread-126065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:06.143 [DEBUG] [Thread-126065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:06.143 [DEBUG] [Thread-126065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:06.143 [DEBUG] [Thread-126065] [transport.py] [_log()] Compression: none
2025-09-28T13:39:06.143 [DEBUG] [Thread-126065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:06.202 [DEBUG] [Thread-126065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:06.202 [DEBUG] [Thread-126065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:06.203 [DEBUG] [Thread-126065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:39:06.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:39:06.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:06.258 [DEBUG] [Thread-126065] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:06.259 [DEBUG] [Thread-126065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:06.259 [DEBUG] [Thread-126065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:06.259 [DEBUG] [Thread-126065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:39:06.259 [DEBUG] [Thread-126065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:06.278 [INFO] [Thread-126065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:06.278 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:39:06.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:07.259 [DEBUG] [Thread-126065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:07.260 [DEBUG] [Thread-126065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:07.307 [DEBUG] [Thread-126065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:07.307 [DEBUG] [Thread-126065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:07.316 [DEBUG] [Thread-126065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:07.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:07.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-28T13:39:07.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-28T13:39:07.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:07.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:07.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:07.348 [DEBUG] [Thread-126065] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:12.732 [DEBUG] [Thread-126067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:17.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:39:17.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:39:17.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-28T13:39:17.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 39, 14), 18.78, 28.03, 0.0, 22.59, 18.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:39:17.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:39:14
2025-09-28T13:39:18.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:39:18.243 [DEBUG] [Thread-126068] [transport.py] [_log()] starting thread (client mode): 0x2e376710
2025-09-28T13:39:18.244 [DEBUG] [Thread-126068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:18.263 [DEBUG] [Thread-126068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:39:18.263 [INFO] [Thread-126068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:39:18.266 [DEBUG] [Thread-126068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:18.266 [DEBUG] [Thread-126068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] Compression: none
2025-09-28T13:39:18.267 [DEBUG] [Thread-126068] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:18.274 [DEBUG] [Thread-126068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:18.274 [DEBUG] [Thread-126068] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:18.274 [DEBUG] [Thread-126068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:39:18.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:39:18.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:18.275 [DEBUG] [Thread-126068] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:18.275 [DEBUG] [Thread-126068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:18.275 [DEBUG] [Thread-126068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:18.275 [DEBUG] [Thread-126068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:39:18.275 [DEBUG] [Thread-126068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:18.284 [INFO] [Thread-126068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:18.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:18.903 [DEBUG] [Thread-126068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:18.903 [DEBUG] [Thread-126068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:18.903 [DEBUG] [Thread-126068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:39:18.944 [DEBUG] [Thread-126068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:18.944 [DEBUG] [Thread-126068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:18.946 [DEBUG] [Thread-126068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:18.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:18.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:39:18.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:39:18.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:39:18.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:18.967 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:39:18.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485500 -999.00  +18.90  12.81     34   +2.70 1 1 1 1 1   888    0 15.37 -16.87 ----- 9.6 12.8 232.7 22.8 25.2 -26.8 24.3 -25.1 24.5 -24.4 25.4 -26.4
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485500
2025-09-28T13:39:18.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:39:18.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:39:18.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:39:18.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:39:18.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:39:18.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:39:14', tmtdew=18.78, humidity=28.03, cloud=0.0, wind=22.59, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:39:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:39:18.968 [DEBUG] [Thread-126068] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:19.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-28T13:39:19.052 [DEBUG] [Thread-126071] [transport.py] [_log()] starting thread (client mode): 0x2e377a90
2025-09-28T13:39:19.052 [DEBUG] [Thread-126071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:19.067 [DEBUG] [Thread-126071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:39:19.067 [INFO] [Thread-126071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:19.074 [DEBUG] [Thread-126071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] Compression: none
2025-09-28T13:39:19.075 [DEBUG] [Thread-126071] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:19.130 [DEBUG] [Thread-126071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:19.130 [DEBUG] [Thread-126071] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:19.130 [DEBUG] [Thread-126071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:39:19.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:39:19.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:19.187 [DEBUG] [Thread-126071] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:19.187 [DEBUG] [Thread-126071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:19.187 [DEBUG] [Thread-126071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:19.187 [DEBUG] [Thread-126071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:39:19.187 [DEBUG] [Thread-126071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:19.204 [INFO] [Thread-126071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:19.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-28T13:39:19.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:19.651 [DEBUG] [Thread-126073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:20.191 [DEBUG] [Thread-126071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:20.191 [DEBUG] [Thread-126071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:20.239 [DEBUG] [Thread-126071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:20.239 [DEBUG] [Thread-126071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:20.247 [DEBUG] [Thread-126071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:20.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:20.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-28T13:39:20.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-28T13:39:20.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:20.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:20.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:20.281 [DEBUG] [Thread-126071] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:30.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:39:30.284 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:39:30.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-28T13:39:30.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 39, 14), 18.78, 28.03, 0.0, 22.59, 18.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:39:30.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:39:14
2025-09-28T13:39:30.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:39:31.139 [DEBUG] [Thread-126074] [transport.py] [_log()] starting thread (client mode): 0x2e374550
2025-09-28T13:39:31.140 [DEBUG] [Thread-126074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:31.160 [DEBUG] [Thread-126074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:39:31.160 [INFO] [Thread-126074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:31.163 [DEBUG] [Thread-126074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] Compression: none
2025-09-28T13:39:31.164 [DEBUG] [Thread-126074] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:31.180 [DEBUG] [Thread-126074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:31.181 [DEBUG] [Thread-126074] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:31.181 [DEBUG] [Thread-126074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:39:31.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:39:31.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:31.183 [DEBUG] [Thread-126074] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:31.184 [DEBUG] [Thread-126074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:31.184 [DEBUG] [Thread-126074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:31.184 [DEBUG] [Thread-126074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:39:31.184 [DEBUG] [Thread-126074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:31.200 [INFO] [Thread-126074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:31.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:31.846 [DEBUG] [Thread-126074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:31.847 [DEBUG] [Thread-126074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:31.847 [DEBUG] [Thread-126074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:39:31.887 [DEBUG] [Thread-126074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:31.887 [DEBUG] [Thread-126074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:31.890 [DEBUG] [Thread-126074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:31.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:31.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:39:31.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:39:31.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:39:31.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:31.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:39:31.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:31.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:31.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:39:31.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485500 -999.00  +18.90  12.81     34   +2.70 1 1 1 1 1   888    0 15.37 -16.87 ----- 9.6 12.8 232.7 22.8 25.2 -26.8 24.3 -25.1 24.5 -24.4 25.4 -26.4
2025-09-28T13:39:31.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:39:31.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:39:31.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485500
2025-09-28T13:39:31.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:39:31.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:39:31.917 [DEBUG] [Thread-126074] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:31.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:39:31.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:39:31.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:39:31.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:39:14', tmtdew=18.78, humidity=28.03, cloud=0.0, wind=22.59, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:39:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:39:32.003 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:39:32.014 [DEBUG] [Thread-126077] [transport.py] [_log()] starting thread (client mode): 0x30ddeb90
2025-09-28T13:39:32.014 [DEBUG] [Thread-126077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:32.029 [DEBUG] [Thread-126077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:39:32.029 [INFO] [Thread-126077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:39:32.037 [DEBUG] [Thread-126077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:32.037 [DEBUG] [Thread-126077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:39:32.037 [DEBUG] [Thread-126077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] Compression: none
2025-09-28T13:39:32.038 [DEBUG] [Thread-126077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:32.095 [DEBUG] [Thread-126077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:32.095 [DEBUG] [Thread-126077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:32.096 [DEBUG] [Thread-126077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:39:32.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:39:32.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:32.151 [DEBUG] [Thread-126077] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:32.151 [DEBUG] [Thread-126077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:32.151 [DEBUG] [Thread-126077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:32.151 [DEBUG] [Thread-126077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:39:32.151 [DEBUG] [Thread-126077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:32.170 [INFO] [Thread-126077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:32.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:39:32.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:33.168 [DEBUG] [Thread-126077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:33.168 [DEBUG] [Thread-126077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:33.216 [DEBUG] [Thread-126077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:33.216 [DEBUG] [Thread-126077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:33.225 [DEBUG] [Thread-126077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:33.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:33.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-28T13:39: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') -> 00000000
2025-09-28T13:39:33.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:33.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:33.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:33.260 [DEBUG] [Thread-126077] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:34.690 [DEBUG] [Thread-126079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:43.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:39:43.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:39:43.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-28T13:39:43.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 39, 14), 18.78, 28.03, 0.0, 22.59, 18.86, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:39:43.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:39:14
2025-09-28T13:39:43.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:39:44.128 [DEBUG] [Thread-126080] [transport.py] [_log()] starting thread (client mode): 0x287050c0
2025-09-28T13:39:44.128 [DEBUG] [Thread-126080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:44.147 [DEBUG] [Thread-126080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:39:44.147 [INFO] [Thread-126080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:39:44.150 [DEBUG] [Thread-126080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:44.150 [DEBUG] [Thread-126080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] Compression: none
2025-09-28T13:39:44.151 [DEBUG] [Thread-126080] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:44.167 [DEBUG] [Thread-126080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:44.168 [DEBUG] [Thread-126080] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:44.168 [DEBUG] [Thread-126080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:39:44.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:39:44.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:44.170 [DEBUG] [Thread-126080] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:44.170 [DEBUG] [Thread-126080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:44.171 [DEBUG] [Thread-126080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:44.171 [DEBUG] [Thread-126080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:39:44.171 [DEBUG] [Thread-126080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:44.188 [INFO] [Thread-126080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:44.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:44.816 [DEBUG] [Thread-126080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:44.817 [DEBUG] [Thread-126080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:44.817 [DEBUG] [Thread-126080] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:39:44.857 [DEBUG] [Thread-126080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:44.857 [DEBUG] [Thread-126080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:44.860 [DEBUG] [Thread-126080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:44.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:44.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:39:44.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:39:44.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:39:44.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:44.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:39:44.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:44.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485500 -999.00  +18.90  12.81     34   +2.70 1 1 1 1 1   888    0 15.37 -16.87 ----- 9.6 12.8 232.7 22.8 25.2 -26.8 24.3 -25.1 24.5 -24.4 25.4 -26.4
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485500
2025-09-28T13:39:44.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:39:44.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:39:44.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:39:44.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:39:44.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:39:44.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:39:14', tmtdew=18.78, humidity=28.03, cloud=0.0, wind=22.59, temperature=18.86, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:39:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:39:44.888 [DEBUG] [Thread-126080] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:44.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-28T13:39:44.986 [DEBUG] [Thread-126083] [transport.py] [_log()] starting thread (client mode): 0x30ddfee0
2025-09-28T13:39:44.986 [DEBUG] [Thread-126083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:45.001 [DEBUG] [Thread-126083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:39:45.001 [INFO] [Thread-126083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:39:45.009 [DEBUG] [Thread-126083] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:45.010 [DEBUG] [Thread-126083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:45.011 [DEBUG] [Thread-126083] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:45.011 [DEBUG] [Thread-126083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:45.011 [DEBUG] [Thread-126083] [transport.py] [_log()] Compression: none
2025-09-28T13:39:45.011 [DEBUG] [Thread-126083] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:45.068 [DEBUG] [Thread-126083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:45.069 [DEBUG] [Thread-126083] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:45.069 [DEBUG] [Thread-126083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:39:45.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:39:45.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:45.127 [DEBUG] [Thread-126083] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:45.127 [DEBUG] [Thread-126083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:45.127 [DEBUG] [Thread-126083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:45.127 [DEBUG] [Thread-126083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:39:45.127 [DEBUG] [Thread-126083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:45.142 [INFO] [Thread-126083] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:45.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:39:45.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:46.150 [DEBUG] [Thread-126083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:46.150 [DEBUG] [Thread-126083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:46.197 [DEBUG] [Thread-126083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:46.197 [DEBUG] [Thread-126083] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:46.206 [DEBUG] [Thread-126083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:46.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:46.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')
2025-09-28T13:39:46.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-28T13:39:46.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:46.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:46.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:46.240 [DEBUG] [Thread-126083] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:49.722 [DEBUG] [Thread-126085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:56.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:39:56.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:39:56.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-28T13:39:56.422 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:56.422 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:39:56.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 39, 45), 19.43, 27.03, 0.0, 16.43, 19.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:39:56.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:39:45
2025-09-28T13:39:56.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:39:57.118 [DEBUG] [Thread-126086] [transport.py] [_log()] starting thread (client mode): 0x30ddfd60
2025-09-28T13:39:57.118 [DEBUG] [Thread-126086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:57.139 [DEBUG] [Thread-126086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:39:57.139 [INFO] [Thread-126086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:39:57.142 [DEBUG] [Thread-126086] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:57.143 [DEBUG] [Thread-126086] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] Compression: none
2025-09-28T13:39:57.144 [DEBUG] [Thread-126086] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:57.162 [DEBUG] [Thread-126086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:57.162 [DEBUG] [Thread-126086] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:57.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:39:57.163 [DEBUG] [Thread-126086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:39:57.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:57.166 [DEBUG] [Thread-126086] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:57.166 [DEBUG] [Thread-126086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:57.166 [DEBUG] [Thread-126086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:57.166 [DEBUG] [Thread-126086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:39:57.166 [DEBUG] [Thread-126086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:57.190 [INFO] [Thread-126086] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:57.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:57.836 [DEBUG] [Thread-126086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:57.836 [DEBUG] [Thread-126086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:57.836 [DEBUG] [Thread-126086] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:39:57.877 [DEBUG] [Thread-126086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:57.877 [DEBUG] [Thread-126086] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:57.880 [DEBUG] [Thread-126086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:57.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:57.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:39:57.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:39:57.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:39:57.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:57.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:39:57.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485847 -999.00  +19.40  11.40     33   +2.90 1 1 1 1 1   888    0 15.64 -12.76 ----- 11.8 11.4 194.4 20.8 25.3 -25.0 24.3 -24.5 24.6 -23.7 25.6 -24.6
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:39:57.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485847
2025-09-28T13:39:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:39:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:39:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:39:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:39:57.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:39:57.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:39:45', tmtdew=19.43, humidity=27.03, cloud=0.0, wind=16.43, temperature=19.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:39:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:39:57.903 [DEBUG] [Thread-126086] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:39:57.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-28T13:39:57.998 [DEBUG] [Thread-126089] [transport.py] [_log()] starting thread (client mode): 0x28706ce0
2025-09-28T13:39:57.999 [DEBUG] [Thread-126089] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:39:58.012 [DEBUG] [Thread-126089] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:39:58.013 [INFO] [Thread-126089] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:58.020 [DEBUG] [Thread-126089] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] client lang: <none>
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] server lang: <none>
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] kex follows: False
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:39:58.021 [DEBUG] [Thread-126089] [transport.py] [_log()] Compression: none
2025-09-28T13:39:58.022 [DEBUG] [Thread-126089] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:39:58.078 [DEBUG] [Thread-126089] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:39:58.079 [DEBUG] [Thread-126089] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:39:58.079 [DEBUG] [Thread-126089] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:39:58.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:39:58.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:39:58.139 [DEBUG] [Thread-126089] [transport.py] [_log()] userauth is OK
2025-09-28T13:39:58.139 [DEBUG] [Thread-126089] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:39:58.139 [DEBUG] [Thread-126089] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:39:58.139 [DEBUG] [Thread-126089] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:39:58.139 [DEBUG] [Thread-126089] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:39:58.158 [INFO] [Thread-126089] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:39:58.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-28T13:39:58.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:39:59.143 [DEBUG] [Thread-126089] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:39:59.143 [DEBUG] [Thread-126089] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:39:59.191 [DEBUG] [Thread-126089] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:39:59.191 [DEBUG] [Thread-126089] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:39:59.200 [DEBUG] [Thread-126089] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:39:59.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:39:59.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-28T13:39:59.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-28T13:39:59.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:39:59.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:39:59.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:39:59.234 [DEBUG] [Thread-126089] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:04.749 [DEBUG] [Thread-126091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:09.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:40:09.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:40:09.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-28T13:40:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 39, 45), 19.43, 27.03, 0.0, 16.43, 19.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:40:09.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:39:45
2025-09-28T13:40:09.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:40:10.106 [DEBUG] [Thread-126092] [transport.py] [_log()] starting thread (client mode): 0x30ddd780
2025-09-28T13:40:10.106 [DEBUG] [Thread-126092] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:40:10.126 [DEBUG] [Thread-126092] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:40:10.126 [INFO] [Thread-126092] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:40:10.129 [DEBUG] [Thread-126092] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:40:10.129 [DEBUG] [Thread-126092] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:40:10.129 [DEBUG] [Thread-126092] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] client lang: <none>
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] server lang: <none>
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] kex follows: False
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] Compression: none
2025-09-28T13:40:10.130 [DEBUG] [Thread-126092] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:40:10.144 [DEBUG] [Thread-126092] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:40:10.145 [DEBUG] [Thread-126092] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:40:10.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:40:10.146 [DEBUG] [Thread-126092] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:40:10.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:40:10.147 [DEBUG] [Thread-126092] [transport.py] [_log()] userauth is OK
2025-09-28T13:40:10.148 [DEBUG] [Thread-126092] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:40:10.148 [DEBUG] [Thread-126092] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:40:10.148 [DEBUG] [Thread-126092] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:40:10.148 [DEBUG] [Thread-126092] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:40:10.172 [INFO] [Thread-126092] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:40:10.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:40:12.782 [DEBUG] [Thread-126094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:15.087 [DEBUG] [Thread-126092] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:40:15.087 [DEBUG] [Thread-126092] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:40:15.088 [DEBUG] [Thread-126092] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:40:15.128 [DEBUG] [Thread-126092] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:40:15.128 [DEBUG] [Thread-126092] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:40:15.131 [DEBUG] [Thread-126092] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:40:15.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:40:15.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:40:15.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:40:15.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:40:15.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:40:15.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:40:15.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:40:15.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.485847 -999.00  +19.40  11.40     33   +2.90 1 1 1 1 1   888    0 15.64 -12.76 ----- 11.8 11.4 194.4 20.8 25.3 -25.0 24.3 -24.5 24.6 -23.7 25.6 -24.6
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.485847
2025-09-28T13:40:15.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:40:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:40:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:40:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:40:15.227 [DEBUG] [Thread-126092] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:15.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:40:15.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:39:45', tmtdew=19.43, humidity=27.03, cloud=0.0, wind=16.43, temperature=19.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:39:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:40:15.306 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:40:15.318 [DEBUG] [Thread-126096] [transport.py] [_log()] starting thread (client mode): 0x30ddd360
2025-09-28T13:40:15.318 [DEBUG] [Thread-126096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:40:15.333 [DEBUG] [Thread-126096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:40:15.333 [INFO] [Thread-126096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:15.341 [DEBUG] [Thread-126096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] client lang: <none>
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] server lang: <none>
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] kex follows: False
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:40:15.342 [DEBUG] [Thread-126096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:40:15.343 [DEBUG] [Thread-126096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:40:15.343 [DEBUG] [Thread-126096] [transport.py] [_log()] Compression: none
2025-09-28T13:40:15.343 [DEBUG] [Thread-126096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:40:15.400 [DEBUG] [Thread-126096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:40:15.400 [DEBUG] [Thread-126096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:40:15.401 [DEBUG] [Thread-126096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:40:15.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:40:15.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:40:15.455 [DEBUG] [Thread-126096] [transport.py] [_log()] userauth is OK
2025-09-28T13:40:15.455 [DEBUG] [Thread-126096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:40:15.456 [DEBUG] [Thread-126096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:40:15.456 [DEBUG] [Thread-126096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:40:15.456 [DEBUG] [Thread-126096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:40:15.474 [INFO] [Thread-126096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:40:15.474 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:40:15.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:40:16.474 [DEBUG] [Thread-126096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:40:16.474 [DEBUG] [Thread-126096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:40:16.522 [DEBUG] [Thread-126096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:40:16.523 [DEBUG] [Thread-126096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:40:16.533 [DEBUG] [Thread-126096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:40:16.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:40:16.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-28T13:40:16.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-28T13:40:16.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:40:16.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:40:16.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:40:16.568 [DEBUG] [Thread-126096] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:19.792 [DEBUG] [Thread-126098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:40:26.571 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:40:26.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-28T13:40:27.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 40, 17), 19.62, 26.7, 0.0, 18.19, 19.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:40:27.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:40:17
2025-09-28T13:40:27.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:40:27.432 [DEBUG] [Thread-126099] [transport.py] [_log()] starting thread (client mode): 0x2b96c580
2025-09-28T13:40:27.432 [DEBUG] [Thread-126099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:40:27.452 [DEBUG] [Thread-126099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:40:27.452 [INFO] [Thread-126099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:40:27.454 [DEBUG] [Thread-126099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:40:27.454 [DEBUG] [Thread-126099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] client lang: <none>
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] server lang: <none>
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] kex follows: False
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:40:27.455 [DEBUG] [Thread-126099] [transport.py] [_log()] Compression: none
2025-09-28T13:40:27.456 [DEBUG] [Thread-126099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:40:27.472 [DEBUG] [Thread-126099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:40:27.473 [DEBUG] [Thread-126099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:40:27.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:40:27.473 [DEBUG] [Thread-126099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:40:27.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:40:27.476 [DEBUG] [Thread-126099] [transport.py] [_log()] userauth is OK
2025-09-28T13:40:27.476 [DEBUG] [Thread-126099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:40:27.476 [DEBUG] [Thread-126099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:40:27.476 [DEBUG] [Thread-126099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:40:27.476 [DEBUG] [Thread-126099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:40:27.494 [INFO] [Thread-126099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:40:27.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:40:28.057 [DEBUG] [Thread-126099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:40:28.057 [DEBUG] [Thread-126099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:40:28.057 [DEBUG] [Thread-126099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:40:28.098 [DEBUG] [Thread-126099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:40:28.099 [DEBUG] [Thread-126099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:40:28.101 [DEBUG] [Thread-126099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:40:28.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:40:28.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:40:28.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:40:28.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:40:28.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:40:28.119 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:40:28.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:40:28.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.486194 -999.00  +19.60  18.06     33   +3.10 1 1 1 1 1   888    0 15.33 -9.86 ----- 12.1 18.1 255.8 22.7 25.4 -27.4 24.3 -25.0 24.7 -24.2 25.7 -27.1
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.486194
2025-09-28T13:40:28.120 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:40:28.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:40:28.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:40:28.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:40:28.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:40:28.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:40:17', tmtdew=19.62, humidity=26.7, cloud=0.0, wind=18.19, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:40:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:40:28.122 [DEBUG] [Thread-126099] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:28.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-28T13:40:28.219 [DEBUG] [Thread-126102] [transport.py] [_log()] starting thread (client mode): 0x2b96ecb0
2025-09-28T13:40:28.219 [DEBUG] [Thread-126102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:40:28.235 [DEBUG] [Thread-126102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:40:28.235 [INFO] [Thread-126102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] client lang: <none>
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] server lang: <none>
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] kex follows: False
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] Compression: none
2025-09-28T13:40:28.243 [DEBUG] [Thread-126102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:40:28.303 [DEBUG] [Thread-126102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:40:28.303 [DEBUG] [Thread-126102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:40:28.303 [DEBUG] [Thread-126102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:40:28.303 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:40:28.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:40:28.359 [DEBUG] [Thread-126102] [transport.py] [_log()] userauth is OK
2025-09-28T13:40:28.359 [DEBUG] [Thread-126102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:40:28.359 [DEBUG] [Thread-126102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:40:28.359 [DEBUG] [Thread-126102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:40:28.359 [DEBUG] [Thread-126102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:40:28.380 [INFO] [Thread-126102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:40:28.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:40:28.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:40:29.385 [DEBUG] [Thread-126102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:40:29.385 [DEBUG] [Thread-126102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:40:29.433 [DEBUG] [Thread-126102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:40:29.433 [DEBUG] [Thread-126102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:40:29.441 [DEBUG] [Thread-126102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:40:29.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:40:29.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-28T13:40:29.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-28T13:40:29.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:40:29.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:40:29.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:40:29.474 [DEBUG] [Thread-126102] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:34.817 [DEBUG] [Thread-126104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:39.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:40:39.477 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:40:39.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-28T13:40:40.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 40, 17), 19.62, 26.7, 0.0, 18.19, 19.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:40:40.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:40:17
2025-09-28T13:40:40.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:40:40.331 [DEBUG] [Thread-126105] [transport.py] [_log()] starting thread (client mode): 0x2b96f490
2025-09-28T13:40:40.331 [DEBUG] [Thread-126105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:40:40.355 [DEBUG] [Thread-126105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:40:40.355 [INFO] [Thread-126105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:40:40.359 [DEBUG] [Thread-126105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] client lang: <none>
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] server lang: <none>
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] kex follows: False
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] Compression: none
2025-09-28T13:40:40.360 [DEBUG] [Thread-126105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:40:40.376 [DEBUG] [Thread-126105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:40:40.377 [DEBUG] [Thread-126105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:40:40.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:40:40.378 [DEBUG] [Thread-126105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:40:40.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:40:40.420 [DEBUG] [Thread-126105] [transport.py] [_log()] userauth is OK
2025-09-28T13:40:40.421 [DEBUG] [Thread-126105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:40:40.421 [DEBUG] [Thread-126105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:40:40.421 [DEBUG] [Thread-126105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:40:40.421 [DEBUG] [Thread-126105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:40:40.454 [INFO] [Thread-126105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:40:40.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:40:42.207 [DEBUG] [Thread-126105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:40:42.208 [DEBUG] [Thread-126105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:40:42.208 [DEBUG] [Thread-126105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:40:42.248 [DEBUG] [Thread-126105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:40:42.248 [DEBUG] [Thread-126105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:40:42.251 [DEBUG] [Thread-126105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:40:42.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:40:42.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:40:42.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:40:42.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:40:42.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:40:42.274 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:40:42.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:40:42.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:40:42.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:40:42.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.486194 -999.00  +19.60  18.06     33   +3.10 1 1 1 1 1   888    0 15.33 -9.86 ----- 12.1 18.1 255.8 22.7 25.4 -27.4 24.3 -25.0 24.7 -24.2 25.7 -27.1
2025-09-28T13:40:42.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:40:42.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:40:42.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.486194
2025-09-28T13:40:42.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:40:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:40:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:40:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:40:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:40:42.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:40:17', tmtdew=19.62, humidity=26.7, cloud=0.0, wind=18.19, temperature=19.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:40:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:40:42.277 [DEBUG] [Thread-126105] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:40:42.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-28T13:40:49.869 [DEBUG] [Thread-126108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:56.563 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:40:56.565 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:04.899 [DEBUG] [Thread-126109 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:12.835 [DEBUG] [Thread-126110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:19.928 [DEBUG] [Thread-126111 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:34.960 [DEBUG] [Thread-126112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:49.993 [DEBUG] [Thread-126113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:56.708 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:41:56.709 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:05.027 [DEBUG] [Thread-126114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:12.898 [DEBUG] [Thread-126115 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:20.061 [DEBUG] [Thread-126116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:35.088 [DEBUG] [Thread-126117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:50.122 [DEBUG] [Thread-126118 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:54.651 [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-28T13:42:56.852 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:42:56.853 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:04.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:43:04.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:43:04.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-28T13:43:05.149 [DEBUG] [Thread-126119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:05.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 42, 57), 18.11, 29.71, 0.0, 25.74, 19.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:43:05.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:42:57
2025-09-28T13:43:05.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:43:05.540 [DEBUG] [Thread-126120] [transport.py] [_log()] starting thread (client mode): 0x2b96fc70
2025-09-28T13:43:05.540 [DEBUG] [Thread-126120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:43:05.551 [DEBUG] [Thread-126120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:43:05.551 [INFO] [Thread-126120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] client lang: <none>
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] server lang: <none>
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] kex follows: False
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] Compression: none
2025-09-28T13:43:05.554 [DEBUG] [Thread-126120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:43:05.571 [DEBUG] [Thread-126120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:43:05.572 [DEBUG] [Thread-126120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:43:05.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:43:05.572 [DEBUG] [Thread-126120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:43:05.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:43:05.574 [DEBUG] [Thread-126120] [transport.py] [_log()] userauth is OK
2025-09-28T13:43:05.574 [DEBUG] [Thread-126120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:43:05.574 [DEBUG] [Thread-126120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:43:05.574 [DEBUG] [Thread-126120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:43:05.574 [DEBUG] [Thread-126120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:43:05.592 [INFO] [Thread-126120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:43:05.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:43:06.231 [DEBUG] [Thread-126120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:43:06.231 [DEBUG] [Thread-126120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:43:06.232 [DEBUG] [Thread-126120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:43:06.272 [DEBUG] [Thread-126120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:43:06.273 [DEBUG] [Thread-126120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:43:06.275 [DEBUG] [Thread-126120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:43:06.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:43:06.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:43:06.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:43:06.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:43:06.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:43:06.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:43:06.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:43:06.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.487931 -999.00  +19.00  17.98     35   +3.50 1 1 1 1 1   888    0 15.44 -8.62 ----- 19.8 18.0 241.8 32.9 25.1 -26.7 24.1 -25.2 24.5 -24.3 25.6 -27.0
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.487931
2025-09-28T13:43:06.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:43:06.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:43:06.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:43:06.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:43:06.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:43:06.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:42:57', tmtdew=18.11, humidity=29.71, cloud=0.0, wind=25.74, temperature=19.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:42:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:43:06.301 [DEBUG] [Thread-126120] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:43:06.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:43:12.950 [DEBUG] [Thread-126123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:20.179 [DEBUG] [Thread-126124 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:35.224 [DEBUG] [Thread-126125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:50.252 [DEBUG] [Thread-126126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:56.993 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:43:56.994 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:05.283 [DEBUG] [Thread-126127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:12.996 [DEBUG] [Thread-126128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:20.313 [DEBUG] [Thread-126129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:35.344 [DEBUG] [Thread-126130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:50.372 [DEBUG] [Thread-126131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:57.137 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:44:57.138 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:05.397 [DEBUG] [Thread-126132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:13.047 [DEBUG] [Thread-126133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:18.011 [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-28T13:45:20.424 [DEBUG] [Thread-126134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:28.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:45:28.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:45:28.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-28T13:45:28.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 45, 5), 18.96, 27.86, 0.0, 26.03, 19.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:45:28.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:45:05
2025-09-28T13:45:28.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:45:28.891 [DEBUG] [Thread-126135] [transport.py] [_log()] starting thread (client mode): 0x2b96dcf0
2025-09-28T13:45:28.891 [DEBUG] [Thread-126135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:28.911 [DEBUG] [Thread-126135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:45:28.911 [INFO] [Thread-126135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:28.914 [DEBUG] [Thread-126135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] Compression: none
2025-09-28T13:45:28.915 [DEBUG] [Thread-126135] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:28.934 [DEBUG] [Thread-126135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:28.934 [DEBUG] [Thread-126135] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:28.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:45:28.935 [DEBUG] [Thread-126135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:45:28.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:28.937 [DEBUG] [Thread-126135] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:28.938 [DEBUG] [Thread-126135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:28.938 [DEBUG] [Thread-126135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:28.938 [DEBUG] [Thread-126135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:45:28.938 [DEBUG] [Thread-126135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:28.960 [INFO] [Thread-126135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:28.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:29.603 [DEBUG] [Thread-126135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:29.603 [DEBUG] [Thread-126135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:29.604 [DEBUG] [Thread-126135] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:45:29.644 [DEBUG] [Thread-126135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:29.644 [DEBUG] [Thread-126135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:29.647 [DEBUG] [Thread-126135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:29.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:29.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:45:29.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:45:29.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:45:29.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:29.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:45:29.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.489666 -999.00  +18.50  16.03     36   +3.30 1 1 1 1 1   888    0 15.60 -5.23 ----- 25.2 16.0 263.8 20.8 25.0 -26.1 24.1 -25.2 24.3 -24.2 25.4 -26.1
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:45:29.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.489666
2025-09-28T13:45:29.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:45:29.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:45:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:45:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:45:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:45:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:45:05', tmtdew=18.96, humidity=27.86, cloud=0.0, wind=26.03, temperature=19.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:45:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:45:29.672 [DEBUG] [Thread-126135] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:29.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:45:29.769 [DEBUG] [Thread-126138] [transport.py] [_log()] starting thread (client mode): 0x2b96f520
2025-09-28T13:45:29.769 [DEBUG] [Thread-126138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:29.784 [DEBUG] [Thread-126138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:45:29.785 [INFO] [Thread-126138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:45:29.792 [DEBUG] [Thread-126138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:29.792 [DEBUG] [Thread-126138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:29.793 [DEBUG] [Thread-126138] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] Compression: none
2025-09-28T13:45:29.794 [DEBUG] [Thread-126138] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:29.851 [DEBUG] [Thread-126138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:29.851 [DEBUG] [Thread-126138] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:29.852 [DEBUG] [Thread-126138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:45:29.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:45:29.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:29.909 [DEBUG] [Thread-126138] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:29.909 [DEBUG] [Thread-126138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:29.909 [DEBUG] [Thread-126138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:29.909 [DEBUG] [Thread-126138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:45:29.909 [DEBUG] [Thread-126138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:29.926 [INFO] [Thread-126138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:29.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-28T13:45:29.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:30.913 [DEBUG] [Thread-126138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:30.913 [DEBUG] [Thread-126138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:30.961 [DEBUG] [Thread-126138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:30.961 [DEBUG] [Thread-126138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:30.970 [DEBUG] [Thread-126138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:30.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:30.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-28T13:45:30.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-28T13:45:30.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:30.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:30.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:31.004 [DEBUG] [Thread-126138] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:35.456 [DEBUG] [Thread-126140 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:41.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:45:41.007 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:45:41.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-28T13:45:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 45, 36), 18.5, 29.09, 0.0, 22.02, 19.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:45:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:45:36
2025-09-28T13:45:41.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:45:41.867 [DEBUG] [Thread-126141] [transport.py] [_log()] starting thread (client mode): 0x2b96ff70
2025-09-28T13:45:41.867 [DEBUG] [Thread-126141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:41.888 [DEBUG] [Thread-126141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:45:41.888 [INFO] [Thread-126141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:45:41.891 [DEBUG] [Thread-126141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:41.891 [DEBUG] [Thread-126141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:45:41.891 [DEBUG] [Thread-126141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:41.891 [DEBUG] [Thread-126141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:41.891 [DEBUG] [Thread-126141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] Compression: none
2025-09-28T13:45:41.892 [DEBUG] [Thread-126141] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:41.909 [DEBUG] [Thread-126141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:41.909 [DEBUG] [Thread-126141] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:41.910 [DEBUG] [Thread-126141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:45:41.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:45:41.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:41.912 [DEBUG] [Thread-126141] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:41.912 [DEBUG] [Thread-126141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:41.913 [DEBUG] [Thread-126141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:41.913 [DEBUG] [Thread-126141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:45:41.913 [DEBUG] [Thread-126141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:41.930 [INFO] [Thread-126141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:41.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:42.561 [DEBUG] [Thread-126141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:42.561 [DEBUG] [Thread-126141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:42.562 [DEBUG] [Thread-126141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:45:42.602 [DEBUG] [Thread-126141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:42.603 [DEBUG] [Thread-126141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:42.605 [DEBUG] [Thread-126141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:42.617 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:42.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:45:42.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:45:42.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:45:42.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:42.628 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:45:42.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.489666 -999.00  +18.50  16.03     36   +3.30 1 1 1 1 1   888    0 15.60 -5.23 ----- 25.2 16.0 263.8 20.8 25.0 -26.1 24.1 -25.2 24.3 -24.2 25.4 -26.1
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:45:42.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.489666
2025-09-28T13:45:42.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:45:42.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:45:42.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:45:42.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:45:42.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:45:42.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:45:36', tmtdew=18.5, humidity=29.09, cloud=0.0, wind=22.02, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:45:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:45:42.631 [DEBUG] [Thread-126141] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:42.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-28T13:45:42.728 [DEBUG] [Thread-126144] [transport.py] [_log()] starting thread (client mode): 0x2b96e3b0
2025-09-28T13:45:42.728 [DEBUG] [Thread-126144] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:42.743 [DEBUG] [Thread-126144] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:45:42.743 [INFO] [Thread-126144] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:45:42.750 [DEBUG] [Thread-126144] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] Compression: none
2025-09-28T13:45:42.751 [DEBUG] [Thread-126144] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:42.811 [DEBUG] [Thread-126144] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:42.811 [DEBUG] [Thread-126144] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:42.811 [DEBUG] [Thread-126144] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:45:42.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:45:42.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:42.867 [DEBUG] [Thread-126144] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:42.867 [DEBUG] [Thread-126144] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:42.868 [DEBUG] [Thread-126144] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:42.868 [DEBUG] [Thread-126144] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:45:42.868 [DEBUG] [Thread-126144] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:42.887 [INFO] [Thread-126144] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:42.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-28T13:45:42.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:43.870 [DEBUG] [Thread-126144] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:43.870 [DEBUG] [Thread-126144] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:43.918 [DEBUG] [Thread-126144] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:43.918 [DEBUG] [Thread-126144] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:43.927 [DEBUG] [Thread-126144] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:43.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:43.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')
2025-09-28T13:45:43.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-28T13:45:43.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:43.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:43.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:43.962 [DEBUG] [Thread-126144] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:50.502 [DEBUG] [Thread-126146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:53.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:45:53.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:45:53.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-28T13:45:54.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 45, 36), 18.5, 29.09, 0.0, 22.02, 19.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:45:54.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:45:36
2025-09-28T13:45:54.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:45:54.828 [DEBUG] [Thread-126147] [transport.py] [_log()] starting thread (client mode): 0x2b96ed10
2025-09-28T13:45:54.828 [DEBUG] [Thread-126147] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:54.849 [DEBUG] [Thread-126147] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:45:54.849 [INFO] [Thread-126147] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:45:54.852 [DEBUG] [Thread-126147] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:54.852 [DEBUG] [Thread-126147] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:45:54.852 [DEBUG] [Thread-126147] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] Compression: none
2025-09-28T13:45:54.853 [DEBUG] [Thread-126147] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:54.870 [DEBUG] [Thread-126147] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:54.871 [DEBUG] [Thread-126147] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:54.871 [DEBUG] [Thread-126147] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:45:54.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:45:54.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:54.873 [DEBUG] [Thread-126147] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:54.873 [DEBUG] [Thread-126147] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:54.873 [DEBUG] [Thread-126147] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:54.873 [DEBUG] [Thread-126147] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:45:54.873 [DEBUG] [Thread-126147] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:54.909 [INFO] [Thread-126147] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:54.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:55.551 [DEBUG] [Thread-126147] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:55.551 [DEBUG] [Thread-126147] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:55.551 [DEBUG] [Thread-126147] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:45:55.592 [DEBUG] [Thread-126147] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:55.592 [DEBUG] [Thread-126147] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:55.595 [DEBUG] [Thread-126147] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:55.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:55.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:45:55.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:45:55.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:45:55.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:55.619 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:45:55.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490014 -999.00  +18.60  23.27     36   +3.30 1 1 1 1 1   888    0 15.67 -5.18 ----- 28.0 23.3 266.6 33.8 24.9 -27.4 24.2 -25.7 24.1 -25.2 25.2 -26.8
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:45:55.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490014
2025-09-28T13:45:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:45:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:45:55.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:45:55.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:45:55.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:45:55.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:45:36', tmtdew=18.5, humidity=29.09, cloud=0.0, wind=22.02, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:45:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:45:55.622 [DEBUG] [Thread-126147] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:55.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-28T13:45:55.717 [DEBUG] [Thread-126150] [transport.py] [_log()] starting thread (client mode): 0x2b96f8e0
2025-09-28T13:45:55.717 [DEBUG] [Thread-126150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:45:55.731 [DEBUG] [Thread-126150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:45:55.732 [INFO] [Thread-126150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] client lang: <none>
2025-09-28T13:45:55.739 [DEBUG] [Thread-126150] [transport.py] [_log()] server lang: <none>
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] kex follows: False
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] Compression: none
2025-09-28T13:45:55.740 [DEBUG] [Thread-126150] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:45:55.798 [DEBUG] [Thread-126150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:45:55.799 [DEBUG] [Thread-126150] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:45:55.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:45:55.800 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:45:55.800 [DEBUG] [Thread-126150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:45:55.855 [DEBUG] [Thread-126150] [transport.py] [_log()] userauth is OK
2025-09-28T13:45:55.855 [DEBUG] [Thread-126150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:45:55.855 [DEBUG] [Thread-126150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:45:55.855 [DEBUG] [Thread-126150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:45:55.855 [DEBUG] [Thread-126150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:45:55.874 [INFO] [Thread-126150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:45:55.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-28T13:45:55.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:45:56.822 [DEBUG] [Thread-126150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:45:56.822 [DEBUG] [Thread-126150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:45:56.870 [DEBUG] [Thread-126150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:45:56.870 [DEBUG] [Thread-126150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:45:56.879 [DEBUG] [Thread-126150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:45:56.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:45:56.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-28T13:45:56.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-28T13:45:56.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:45:56.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:45:56.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:45:56.916 [DEBUG] [Thread-126150] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:45:57.279 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:45:57.280 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:05.546 [DEBUG] [Thread-126152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:06.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:46:06.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:46:06.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:46:07.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 45, 36), 18.5, 29.09, 0.0, 22.02, 19.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:46:07.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:45:36
2025-09-28T13:46:07.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:46:07.783 [DEBUG] [Thread-126153] [transport.py] [_log()] starting thread (client mode): 0x30ddd690
2025-09-28T13:46:07.783 [DEBUG] [Thread-126153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:07.803 [DEBUG] [Thread-126153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:46:07.803 [INFO] [Thread-126153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:07.806 [DEBUG] [Thread-126153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] Compression: none
2025-09-28T13:46:07.807 [DEBUG] [Thread-126153] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:07.825 [DEBUG] [Thread-126153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:07.825 [DEBUG] [Thread-126153] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:07.826 [DEBUG] [Thread-126153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:46:07.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:46:07.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:07.869 [DEBUG] [Thread-126153] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:07.869 [DEBUG] [Thread-126153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:07.869 [DEBUG] [Thread-126153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:07.869 [DEBUG] [Thread-126153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:46:07.869 [DEBUG] [Thread-126153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:07.903 [INFO] [Thread-126153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:07.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:08.564 [DEBUG] [Thread-126153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:08.565 [DEBUG] [Thread-126153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:08.565 [DEBUG] [Thread-126153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:46:08.605 [DEBUG] [Thread-126153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:08.606 [DEBUG] [Thread-126153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:08.609 [DEBUG] [Thread-126153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:08.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:08.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:46:08.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:46:08.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:46:08.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:08.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:46:08.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:08.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:08.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:46:08.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490014 -999.00  +18.60  23.27     36   +3.30 1 1 1 1 1   888    0 15.67 -5.18 ----- 28.0 23.3 266.6 33.8 24.9 -27.4 24.2 -25.7 24.1 -25.2 25.2 -26.8
2025-09-28T13:46:08.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:46:08.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:46:08.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490014
2025-09-28T13:46:08.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:46:08.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:46:08.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:46:08.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:46:08.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:46:08.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:45:36', tmtdew=18.5, humidity=29.09, cloud=0.0, wind=22.02, temperature=19.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:45:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:46:08.635 [DEBUG] [Thread-126153] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:08.720 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:46:08.735 [DEBUG] [Thread-126156] [transport.py] [_log()] starting thread (client mode): 0x30ddf700
2025-09-28T13:46:08.735 [DEBUG] [Thread-126156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:08.753 [DEBUG] [Thread-126156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:46:08.754 [INFO] [Thread-126156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:46:08.761 [DEBUG] [Thread-126156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:08.761 [DEBUG] [Thread-126156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:08.762 [DEBUG] [Thread-126156] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:08.763 [DEBUG] [Thread-126156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:08.764 [DEBUG] [Thread-126156] [transport.py] [_log()] Compression: none
2025-09-28T13:46:08.764 [DEBUG] [Thread-126156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:08.819 [DEBUG] [Thread-126156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:08.819 [DEBUG] [Thread-126156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:08.820 [DEBUG] [Thread-126156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:46:08.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:46:08.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:08.875 [DEBUG] [Thread-126156] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:08.875 [DEBUG] [Thread-126156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:08.875 [DEBUG] [Thread-126156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:08.875 [DEBUG] [Thread-126156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:46:08.875 [DEBUG] [Thread-126156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:08.894 [INFO] [Thread-126156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:08.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-28T13:46:08.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:09.850 [DEBUG] [Thread-126156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:09.850 [DEBUG] [Thread-126156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:09.899 [DEBUG] [Thread-126156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:09.899 [DEBUG] [Thread-126156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:09.907 [DEBUG] [Thread-126156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:09.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:09.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-28T13:46:09.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-28T13:46:09.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:09.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:09.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:09.945 [DEBUG] [Thread-126156] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:13.084 [DEBUG] [Thread-126158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:19.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:46:19.939 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:46:19.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-28T13:46:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 46, 8), 18.6, 28.93, 0.0, 29.89, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:46:20.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:46:08
2025-09-28T13:46:20.597 [DEBUG] [Thread-126159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:20.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:46:20.805 [DEBUG] [Thread-126160] [transport.py] [_log()] starting thread (client mode): 0x30ddd3c0
2025-09-28T13:46:20.806 [DEBUG] [Thread-126160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:20.826 [DEBUG] [Thread-126160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:46:20.826 [INFO] [Thread-126160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:46:20.829 [DEBUG] [Thread-126160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:20.829 [DEBUG] [Thread-126160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:46:20.829 [DEBUG] [Thread-126160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] Compression: none
2025-09-28T13:46:20.830 [DEBUG] [Thread-126160] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:20.847 [DEBUG] [Thread-126160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:20.847 [DEBUG] [Thread-126160] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:20.848 [DEBUG] [Thread-126160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:46:20.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:46:20.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:20.850 [DEBUG] [Thread-126160] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:20.850 [DEBUG] [Thread-126160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:20.851 [DEBUG] [Thread-126160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:20.851 [DEBUG] [Thread-126160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:46:20.851 [DEBUG] [Thread-126160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:20.887 [INFO] [Thread-126160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:20.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:21.489 [DEBUG] [Thread-126160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:21.489 [DEBUG] [Thread-126160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:21.489 [DEBUG] [Thread-126160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:46:21.530 [DEBUG] [Thread-126160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:21.530 [DEBUG] [Thread-126160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:21.533 [DEBUG] [Thread-126160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:21.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:21.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:46:21.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:46:21.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:46:21.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:21.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:46:21.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:21.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:21.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:46:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490014 -999.00  +18.60  23.27     36   +3.30 1 1 1 1 1   888    0 15.67 -5.18 ----- 28.0 23.3 266.6 33.8 24.9 -27.4 24.2 -25.7 24.1 -25.2 25.2 -26.8
2025-09-28T13:46:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:46:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:46:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490014
2025-09-28T13:46:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:46:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:46:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:46:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:46:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:46:21.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:46:08', tmtdew=18.6, humidity=28.93, cloud=0.0, wind=29.89, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:45:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:46:21.558 [DEBUG] [Thread-126160] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:21.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:46:21.652 [DEBUG] [Thread-126163] [transport.py] [_log()] starting thread (client mode): 0x2b96d7b0
2025-09-28T13:46:21.652 [DEBUG] [Thread-126163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:21.667 [DEBUG] [Thread-126163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:46:21.667 [INFO] [Thread-126163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:46:21.674 [DEBUG] [Thread-126163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] Compression: none
2025-09-28T13:46:21.675 [DEBUG] [Thread-126163] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:21.730 [DEBUG] [Thread-126163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:21.731 [DEBUG] [Thread-126163] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:21.731 [DEBUG] [Thread-126163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:46:21.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:46:21.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:21.791 [DEBUG] [Thread-126163] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:21.791 [DEBUG] [Thread-126163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:21.791 [DEBUG] [Thread-126163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:21.791 [DEBUG] [Thread-126163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:46:21.791 [DEBUG] [Thread-126163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:21.804 [INFO] [Thread-126163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:21.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-28T13:46:21.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:22.766 [DEBUG] [Thread-126163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:22.766 [DEBUG] [Thread-126163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:22.814 [DEBUG] [Thread-126163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:22.814 [DEBUG] [Thread-126163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:22.823 [DEBUG] [Thread-126163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:22.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:22.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-28T13:46:22.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-28T13:46:22.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:22.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:22.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:22.856 [DEBUG] [Thread-126163] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:32.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:46:32.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:46:32.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-28T13:46:33.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 46, 8), 18.6, 28.93, 0.0, 29.89, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:46:33.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:46:08
2025-09-28T13:46:33.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:46:33.712 [DEBUG] [Thread-126165] [transport.py] [_log()] starting thread (client mode): 0x30ddfd90
2025-09-28T13:46:33.712 [DEBUG] [Thread-126165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:33.732 [DEBUG] [Thread-126165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:46:33.732 [INFO] [Thread-126165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:46:33.735 [DEBUG] [Thread-126165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:33.735 [DEBUG] [Thread-126165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:46:33.735 [DEBUG] [Thread-126165] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:33.735 [DEBUG] [Thread-126165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] Compression: none
2025-09-28T13:46:33.736 [DEBUG] [Thread-126165] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:33.753 [DEBUG] [Thread-126165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:33.753 [DEBUG] [Thread-126165] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:33.754 [DEBUG] [Thread-126165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:46:33.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:46:33.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:33.756 [DEBUG] [Thread-126165] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:33.756 [DEBUG] [Thread-126165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:33.756 [DEBUG] [Thread-126165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:33.756 [DEBUG] [Thread-126165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:46:33.756 [DEBUG] [Thread-126165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:33.773 [INFO] [Thread-126165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:33.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:34.422 [DEBUG] [Thread-126165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:34.422 [DEBUG] [Thread-126165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:34.422 [DEBUG] [Thread-126165] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:46:34.463 [DEBUG] [Thread-126165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:34.463 [DEBUG] [Thread-126165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:34.465 [DEBUG] [Thread-126165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:34.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:34.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:46:34.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:46:34.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:46:34.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:34.480 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:46:34.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490361 -999.00  +18.60  18.55     35   +3.10 1 1 1 1 1   888    0 15.76 -6.09 ----- 22.4 18.6 279.9 28.5 24.9 -26.8 24.1 -25.4 24.1 -24.6 25.2 -25.7
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490361
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:46:34.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:46:08', tmtdew=18.6, humidity=28.93, cloud=0.0, wind=29.89, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:46:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:46:34.481 [DEBUG] [Thread-126165] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:34.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-28T13:46:34.567 [DEBUG] [Thread-126168] [transport.py] [_log()] starting thread (client mode): 0x30ddf8e0
2025-09-28T13:46:34.567 [DEBUG] [Thread-126168] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:34.581 [DEBUG] [Thread-126168] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:46:34.581 [INFO] [Thread-126168] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:46:34.589 [DEBUG] [Thread-126168] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:34.590 [DEBUG] [Thread-126168] [transport.py] [_log()] Compression: none
2025-09-28T13:46:34.591 [DEBUG] [Thread-126168] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:34.646 [DEBUG] [Thread-126168] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:34.647 [DEBUG] [Thread-126168] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:34.647 [DEBUG] [Thread-126168] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:46:34.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:46:34.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:34.704 [DEBUG] [Thread-126168] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:34.704 [DEBUG] [Thread-126168] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:34.704 [DEBUG] [Thread-126168] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:34.704 [DEBUG] [Thread-126168] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:46:34.704 [DEBUG] [Thread-126168] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:34.727 [INFO] [Thread-126168] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:34.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-28T13:46:34.728 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:35.629 [DEBUG] [Thread-126170 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:35.711 [DEBUG] [Thread-126168] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:35.711 [DEBUG] [Thread-126168] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:35.759 [DEBUG] [Thread-126168] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:35.759 [DEBUG] [Thread-126168] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:35.768 [DEBUG] [Thread-126168] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:35.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46: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-28T13:46:35.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T13:46:35.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:35.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:35.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:35.802 [DEBUG] [Thread-126168] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:45.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:46:45.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:46:45.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-28T13:46:46.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 46, 40), 18.55, 28.93, 0.0, 24.31, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:46:46.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:46:40
2025-09-28T13:46:46.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:46:46.663 [DEBUG] [Thread-126171] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-28T13:46:46.664 [DEBUG] [Thread-126171] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:46.684 [DEBUG] [Thread-126171] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:46:46.685 [INFO] [Thread-126171] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:46.688 [DEBUG] [Thread-126171] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] Compression: none
2025-09-28T13:46:46.689 [DEBUG] [Thread-126171] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:46.707 [DEBUG] [Thread-126171] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:46.707 [DEBUG] [Thread-126171] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:46.708 [DEBUG] [Thread-126171] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:46:46.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:46:46.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:46.709 [DEBUG] [Thread-126171] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:46.710 [DEBUG] [Thread-126171] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:46.710 [DEBUG] [Thread-126171] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:46.710 [DEBUG] [Thread-126171] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:46:46.710 [DEBUG] [Thread-126171] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:46.728 [INFO] [Thread-126171] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:46.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:47.368 [DEBUG] [Thread-126171] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:47.368 [DEBUG] [Thread-126171] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:47.369 [DEBUG] [Thread-126171] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:46:47.409 [DEBUG] [Thread-126171] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:47.410 [DEBUG] [Thread-126171] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:47.413 [DEBUG] [Thread-126171] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:47.424 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:47.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:46:47.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:46:47.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:46:47.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:47.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:46:47.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:47.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:46:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490361 -999.00  +18.60  18.55     35   +3.10 1 1 1 1 1   888    0 15.76 -6.09 ----- 22.4 18.6 279.9 28.5 24.9 -26.8 24.1 -25.4 24.1 -24.6 25.2 -25.7
2025-09-28T13:46:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:46:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:46:47.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490361
2025-09-28T13:46:47.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:46:47.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:46:47.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:46:47.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:46:47.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:46:47.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:46:40', tmtdew=18.55, humidity=28.93, cloud=0.0, wind=24.31, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:46:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:46:47.438 [DEBUG] [Thread-126171] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:47.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-28T13:46:47.534 [DEBUG] [Thread-126174] [transport.py] [_log()] starting thread (client mode): 0x30ddedd0
2025-09-28T13:46:47.534 [DEBUG] [Thread-126174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:47.550 [DEBUG] [Thread-126174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:46:47.550 [INFO] [Thread-126174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:47.558 [DEBUG] [Thread-126174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:47.559 [DEBUG] [Thread-126174] [transport.py] [_log()] Compression: none
2025-09-28T13:46:47.559 [DEBUG] [Thread-126174] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:47.616 [DEBUG] [Thread-126174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:47.617 [DEBUG] [Thread-126174] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:47.618 [DEBUG] [Thread-126174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:46:47.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:46:47.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:47.675 [DEBUG] [Thread-126174] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:47.676 [DEBUG] [Thread-126174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:47.676 [DEBUG] [Thread-126174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:47.676 [DEBUG] [Thread-126174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:46:47.676 [DEBUG] [Thread-126174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:47.696 [INFO] [Thread-126174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:47.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-28T13:46:47.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:46:48.684 [DEBUG] [Thread-126174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:46:48.684 [DEBUG] [Thread-126174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:46:48.732 [DEBUG] [Thread-126174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:46:48.732 [DEBUG] [Thread-126174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:46:48.741 [DEBUG] [Thread-126174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:46:48.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:46:48.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-28T13:46:48.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-28T13:46:48.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:46:48.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:46:48.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:46:48.782 [DEBUG] [Thread-126174] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:46:50.668 [DEBUG] [Thread-126176 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:57.421 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:57.422 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:46:58.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:46:58.784 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:46:58.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:46:59.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 46, 40), 18.55, 28.93, 0.0, 24.31, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:46:59.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:46:40
2025-09-28T13:46:59.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:46:59.638 [DEBUG] [Thread-126177] [transport.py] [_log()] starting thread (client mode): 0x2b96f580
2025-09-28T13:46:59.638 [DEBUG] [Thread-126177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:46:59.657 [DEBUG] [Thread-126177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:46:59.657 [INFO] [Thread-126177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] client lang: <none>
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] server lang: <none>
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] kex follows: False
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:46:59.660 [DEBUG] [Thread-126177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:46:59.661 [DEBUG] [Thread-126177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:46:59.661 [DEBUG] [Thread-126177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:46:59.661 [DEBUG] [Thread-126177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:46:59.661 [DEBUG] [Thread-126177] [transport.py] [_log()] Compression: none
2025-09-28T13:46:59.661 [DEBUG] [Thread-126177] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:46:59.676 [DEBUG] [Thread-126177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:46:59.676 [DEBUG] [Thread-126177] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:46:59.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:46:59.676 [DEBUG] [Thread-126177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:46:59.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:46:59.677 [DEBUG] [Thread-126177] [transport.py] [_log()] userauth is OK
2025-09-28T13:46:59.677 [DEBUG] [Thread-126177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:46:59.677 [DEBUG] [Thread-126177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:46:59.677 [DEBUG] [Thread-126177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:46:59.677 [DEBUG] [Thread-126177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:46:59.693 [INFO] [Thread-126177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:46:59.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:00.332 [DEBUG] [Thread-126177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:00.332 [DEBUG] [Thread-126177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:00.333 [DEBUG] [Thread-126177] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:47:00.373 [DEBUG] [Thread-126177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:00.374 [DEBUG] [Thread-126177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:00.376 [DEBUG] [Thread-126177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:00.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:00.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:47:00.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:47:00.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:47:00.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:00.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:47:00.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:00.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:47:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490708 -999.00  +18.30  25.59     36   +3.00 1 1 1 1 1   888    0 15.63 -7.98 ----- 22.7 25.6 273.0 32.0 24.8 -29.4 24.1 -25.8 23.9 -26.4 25.0 -28.7
2025-09-28T13:47:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:47:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:47:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490708
2025-09-28T13:47:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:47:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:47:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:47:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:47:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:47:00.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:46:40', tmtdew=18.55, humidity=28.93, cloud=0.0, wind=24.31, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:46:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:47:00.401 [DEBUG] [Thread-126177] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:00.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-28T13:47:00.495 [DEBUG] [Thread-126180] [transport.py] [_log()] starting thread (client mode): 0x2b96ca90
2025-09-28T13:47:00.495 [DEBUG] [Thread-126180] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:00.509 [DEBUG] [Thread-126180] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:47:00.509 [INFO] [Thread-126180] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:47:00.517 [DEBUG] [Thread-126180] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:00.517 [DEBUG] [Thread-126180] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:47:00.517 [DEBUG] [Thread-126180] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:00.517 [DEBUG] [Thread-126180] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] Compression: none
2025-09-28T13:47:00.518 [DEBUG] [Thread-126180] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:00.575 [DEBUG] [Thread-126180] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:00.575 [DEBUG] [Thread-126180] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:00.576 [DEBUG] [Thread-126180] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:47:00.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:47:00.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:00.631 [DEBUG] [Thread-126180] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:00.632 [DEBUG] [Thread-126180] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:00.632 [DEBUG] [Thread-126180] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:00.632 [DEBUG] [Thread-126180] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:47:00.632 [DEBUG] [Thread-126180] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:00.651 [INFO] [Thread-126180] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:00.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-28T13:47:00.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:01.603 [DEBUG] [Thread-126180] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:01.603 [DEBUG] [Thread-126180] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:01.650 [DEBUG] [Thread-126180] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:01.651 [DEBUG] [Thread-126180] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:01.660 [DEBUG] [Thread-126180] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:01.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:01.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-28T13:47:01.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-28T13:47:01.686 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:01.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:01.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:01.694 [DEBUG] [Thread-126180] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:05.711 [DEBUG] [Thread-126182 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:11.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:47:11.693 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:47:11.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-28T13:47:12.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 46, 40), 18.55, 28.93, 0.0, 24.31, 19.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:47:12.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:46:40
2025-09-28T13:47:12.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:47:12.555 [DEBUG] [Thread-126183] [transport.py] [_log()] starting thread (client mode): 0x2e374700
2025-09-28T13:47:12.555 [DEBUG] [Thread-126183] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:12.575 [DEBUG] [Thread-126183] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:47:12.575 [INFO] [Thread-126183] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] Compression: none
2025-09-28T13:47:12.578 [DEBUG] [Thread-126183] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:12.596 [DEBUG] [Thread-126183] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:12.597 [DEBUG] [Thread-126183] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:12.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:47:12.597 [DEBUG] [Thread-126183] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:47:12.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:12.599 [DEBUG] [Thread-126183] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:12.600 [DEBUG] [Thread-126183] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:12.600 [DEBUG] [Thread-126183] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:12.600 [DEBUG] [Thread-126183] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:47:12.600 [DEBUG] [Thread-126183] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:12.623 [INFO] [Thread-126183] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:12.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:13.129 [DEBUG] [Thread-126185 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:13.258 [DEBUG] [Thread-126183] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:13.258 [DEBUG] [Thread-126183] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:13.258 [DEBUG] [Thread-126183] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:47:13.299 [DEBUG] [Thread-126183] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:13.299 [DEBUG] [Thread-126183] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:13.302 [DEBUG] [Thread-126183] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:13.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:13.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:47:13.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:47:13.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:47:13.318 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:13.318 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:47:13.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:13.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490708 -999.00  +18.30  25.59     36   +3.00 1 1 1 1 1   888    0 15.63 -7.98 ----- 22.7 25.6 273.0 32.0 24.8 -29.4 24.1 -25.8 23.9 -26.4 25.0 -28.7
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490708
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:47:13.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:46:40', tmtdew=18.55, humidity=28.93, cloud=0.0, wind=24.31, temperature=19.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:46:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:47:13.320 [DEBUG] [Thread-126183] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:13.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-28T13:47:13.407 [DEBUG] [Thread-126187] [transport.py] [_log()] starting thread (client mode): 0x2e375e40
2025-09-28T13:47:13.407 [DEBUG] [Thread-126187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:13.422 [DEBUG] [Thread-126187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:47:13.422 [INFO] [Thread-126187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:47:13.429 [DEBUG] [Thread-126187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:13.429 [DEBUG] [Thread-126187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:47:13.429 [DEBUG] [Thread-126187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:13.429 [DEBUG] [Thread-126187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] Compression: none
2025-09-28T13:47:13.430 [DEBUG] [Thread-126187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:13.486 [DEBUG] [Thread-126187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:13.486 [DEBUG] [Thread-126187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:13.486 [DEBUG] [Thread-126187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:47:13.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:47:13.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:13.543 [DEBUG] [Thread-126187] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:13.543 [DEBUG] [Thread-126187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:13.543 [DEBUG] [Thread-126187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:13.543 [DEBUG] [Thread-126187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:47:13.543 [DEBUG] [Thread-126187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:13.557 [INFO] [Thread-126187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47: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-28T13:47:13.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:14.516 [DEBUG] [Thread-126187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:14.516 [DEBUG] [Thread-126187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:14.564 [DEBUG] [Thread-126187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:14.564 [DEBUG] [Thread-126187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:14.572 [DEBUG] [Thread-126187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:14.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:14.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-28T13:47:14.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') -> 00000000
2025-09-28T13:47:14.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:14.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:14.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:14.605 [DEBUG] [Thread-126187] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:20.751 [DEBUG] [Thread-126189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:24.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:47:24.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:47:24.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-28T13:47:25.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 47, 12), 18.47, 29.03, 0.0, 25.07, 19.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:47:25.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:47:12
2025-09-28T13:47:25.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:47:25.470 [DEBUG] [Thread-126190] [transport.py] [_log()] starting thread (client mode): 0x2e376d10
2025-09-28T13:47:25.470 [DEBUG] [Thread-126190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:25.490 [DEBUG] [Thread-126190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:47:25.490 [INFO] [Thread-126190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] Compression: none
2025-09-28T13:47:25.493 [DEBUG] [Thread-126190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:25.511 [DEBUG] [Thread-126190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:25.511 [DEBUG] [Thread-126190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:25.512 [DEBUG] [Thread-126190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:47:25.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:47:25.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:25.514 [DEBUG] [Thread-126190] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:25.514 [DEBUG] [Thread-126190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:25.514 [DEBUG] [Thread-126190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:25.514 [DEBUG] [Thread-126190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:47:25.514 [DEBUG] [Thread-126190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:25.546 [INFO] [Thread-126190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:25.547 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:26.127 [DEBUG] [Thread-126190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:26.128 [DEBUG] [Thread-126190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:26.128 [DEBUG] [Thread-126190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:47:26.168 [DEBUG] [Thread-126190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:26.168 [DEBUG] [Thread-126190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:26.171 [DEBUG] [Thread-126190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:26.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:26.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:47:26.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:47:26.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:47:26.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:26.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:47:26.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:26.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.490708 -999.00  +18.30  25.59     36   +3.00 1 1 1 1 1   888    0 15.63 -7.98 ----- 22.7 25.6 273.0 32.0 24.8 -29.4 24.1 -25.8 23.9 -26.4 25.0 -28.7
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.490708
2025-09-28T13:47:26.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:47:26.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:47:26.197 [DEBUG] [Thread-126190] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:47:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:47:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:47:26.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:47:12', tmtdew=18.47, humidity=29.03, cloud=0.0, wind=25.07, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:46:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:47:26.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-28T13:47:26.294 [DEBUG] [Thread-126193] [transport.py] [_log()] starting thread (client mode): 0x2b96f1f0
2025-09-28T13:47:26.295 [DEBUG] [Thread-126193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:26.309 [DEBUG] [Thread-126193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:47:26.309 [INFO] [Thread-126193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:47:26.317 [DEBUG] [Thread-126193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:26.317 [DEBUG] [Thread-126193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:47:26.317 [DEBUG] [Thread-126193] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:26.317 [DEBUG] [Thread-126193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:26.318 [DEBUG] [Thread-126193] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] Compression: none
2025-09-28T13:47:26.319 [DEBUG] [Thread-126193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:26.375 [DEBUG] [Thread-126193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:26.376 [DEBUG] [Thread-126193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:26.376 [DEBUG] [Thread-126193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:47:26.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:47:26.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:26.432 [DEBUG] [Thread-126193] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:26.432 [DEBUG] [Thread-126193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:26.433 [DEBUG] [Thread-126193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:26.433 [DEBUG] [Thread-126193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:47:26.433 [DEBUG] [Thread-126193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:26.452 [INFO] [Thread-126193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:26.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-28T13:47:26.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:27.477 [DEBUG] [Thread-126193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:27.477 [DEBUG] [Thread-126193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:27.525 [DEBUG] [Thread-126193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:27.525 [DEBUG] [Thread-126193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:27.534 [DEBUG] [Thread-126193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:27.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:27.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-28T13:47:27.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-28T13:47:27.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:27.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:27.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:27.570 [DEBUG] [Thread-126193] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:35.784 [DEBUG] [Thread-126195 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:37.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:47:37.570 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:47:37.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-28T13:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 47, 12), 18.47, 29.03, 0.0, 25.07, 19.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:47:38.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:47:12
2025-09-28T13:47:38.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:47:38.427 [DEBUG] [Thread-126196] [transport.py] [_log()] starting thread (client mode): 0x2b96d4e0
2025-09-28T13:47:38.427 [DEBUG] [Thread-126196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:38.446 [DEBUG] [Thread-126196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:47:38.446 [INFO] [Thread-126196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:47:38.447 [DEBUG] [Thread-126196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:38.447 [DEBUG] [Thread-126196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:38.448 [DEBUG] [Thread-126196] [transport.py] [_log()] Compression: none
2025-09-28T13:47:38.449 [DEBUG] [Thread-126196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:38.458 [DEBUG] [Thread-126196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:38.459 [DEBUG] [Thread-126196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:38.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:47:38.460 [DEBUG] [Thread-126196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:47:38.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:38.462 [DEBUG] [Thread-126196] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:38.462 [DEBUG] [Thread-126196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:38.463 [DEBUG] [Thread-126196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:38.463 [DEBUG] [Thread-126196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:47:38.463 [DEBUG] [Thread-126196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:38.494 [INFO] [Thread-126196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:38.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:39.116 [DEBUG] [Thread-126196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:39.116 [DEBUG] [Thread-126196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:39.117 [DEBUG] [Thread-126196] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:47:39.157 [DEBUG] [Thread-126196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:39.158 [DEBUG] [Thread-126196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:39.161 [DEBUG] [Thread-126196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:39.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:39.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:47:39.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:47:39.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:47:39.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:39.182 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:47:39.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491056 -999.00  +18.30  21.69     36   +3.10 1 1 1 1 1   888    0 15.61 -11.03 ----- 19.6 21.7 276.2 26.3 24.8 -26.6 24.0 -25.3 23.8 -24.7 25.1 -25.4
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:47:39.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491056
2025-09-28T13:47:39.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:47:39.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:47:39.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:47:39.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:47:39.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:47:39.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:47:12', tmtdew=18.47, humidity=29.03, cloud=0.0, wind=25.07, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:47:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:47:39.185 [DEBUG] [Thread-126196] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:39.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-28T13:47:39.293 [DEBUG] [Thread-126199] [transport.py] [_log()] starting thread (client mode): 0x2b96dc90
2025-09-28T13:47:39.294 [DEBUG] [Thread-126199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:39.307 [DEBUG] [Thread-126199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:47:39.307 [INFO] [Thread-126199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:47:39.315 [DEBUG] [Thread-126199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:39.315 [DEBUG] [Thread-126199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:47:39.315 [DEBUG] [Thread-126199] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:39.315 [DEBUG] [Thread-126199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:39.316 [DEBUG] [Thread-126199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] Compression: none
2025-09-28T13:47:39.317 [DEBUG] [Thread-126199] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:39.372 [DEBUG] [Thread-126199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:39.373 [DEBUG] [Thread-126199] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:39.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:47:39.374 [DEBUG] [Thread-126199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:47:39.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:39.428 [DEBUG] [Thread-126199] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:39.428 [DEBUG] [Thread-126199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:39.428 [DEBUG] [Thread-126199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:39.428 [DEBUG] [Thread-126199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:47:39.428 [DEBUG] [Thread-126199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:39.447 [INFO] [Thread-126199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47: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-28T13:47:39.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:40.432 [DEBUG] [Thread-126199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:40.432 [DEBUG] [Thread-126199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:40.480 [DEBUG] [Thread-126199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:40.480 [DEBUG] [Thread-126199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:40.489 [DEBUG] [Thread-126199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:40.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:40.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-28T13:47:40.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-28T13:47:40.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:40.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:40.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:40.524 [DEBUG] [Thread-126199] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:50.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:47:50.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:47:50.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-28T13:47:50.829 [DEBUG] [Thread-126201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:51.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 47, 44), 18.18, 29.78, 0.0, 24.26, 18.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:47:51.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:47:44
2025-09-28T13:47:51.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:47:51.425 [DEBUG] [Thread-126202] [transport.py] [_log()] starting thread (client mode): 0x2b96f2e0
2025-09-28T13:47:51.425 [DEBUG] [Thread-126202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:51.444 [DEBUG] [Thread-126202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:47:51.444 [INFO] [Thread-126202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] Compression: none
2025-09-28T13:47:51.448 [DEBUG] [Thread-126202] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:51.462 [DEBUG] [Thread-126202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:51.462 [DEBUG] [Thread-126202] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:51.462 [DEBUG] [Thread-126202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:47:51.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:47:51.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:51.463 [DEBUG] [Thread-126202] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:51.463 [DEBUG] [Thread-126202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:51.463 [DEBUG] [Thread-126202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:51.463 [DEBUG] [Thread-126202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:47:51.463 [DEBUG] [Thread-126202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:51.480 [INFO] [Thread-126202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:51.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:52.122 [DEBUG] [Thread-126202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:52.122 [DEBUG] [Thread-126202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:52.122 [DEBUG] [Thread-126202] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:47:52.163 [DEBUG] [Thread-126202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:52.163 [DEBUG] [Thread-126202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:52.166 [DEBUG] [Thread-126202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:52.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47:52.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:47:52.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:47:52.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:47:52.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:52.183 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:47:52.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491056 -999.00  +18.30  21.69     36   +3.10 1 1 1 1 1   888    0 15.61 -11.03 ----- 19.6 21.7 276.2 26.3 24.8 -26.6 24.0 -25.3 23.8 -24.7 25.1 -25.4
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491056
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:47:52.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:47:44', tmtdew=18.18, humidity=29.78, cloud=0.0, wind=24.26, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:47:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:47:52.184 [DEBUG] [Thread-126202] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:52.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-28T13:47:52.267 [DEBUG] [Thread-126205] [transport.py] [_log()] starting thread (client mode): 0x30ddedd0
2025-09-28T13:47:52.267 [DEBUG] [Thread-126205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:47:52.283 [DEBUG] [Thread-126205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:47:52.283 [INFO] [Thread-126205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] client lang: <none>
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] server lang: <none>
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] kex follows: False
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:47:52.290 [DEBUG] [Thread-126205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:47:52.291 [DEBUG] [Thread-126205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:47:52.291 [DEBUG] [Thread-126205] [transport.py] [_log()] Compression: none
2025-09-28T13:47:52.291 [DEBUG] [Thread-126205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:47:52.346 [DEBUG] [Thread-126205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:47:52.346 [DEBUG] [Thread-126205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:47:52.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:47:52.347 [DEBUG] [Thread-126205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:47:52.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:47:52.403 [DEBUG] [Thread-126205] [transport.py] [_log()] userauth is OK
2025-09-28T13:47:52.403 [DEBUG] [Thread-126205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:47:52.403 [DEBUG] [Thread-126205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:47:52.403 [DEBUG] [Thread-126205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:47:52.404 [DEBUG] [Thread-126205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:47:52.418 [INFO] [Thread-126205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:47:52.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-28T13:47:52.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:47:53.389 [DEBUG] [Thread-126205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:47:53.389 [DEBUG] [Thread-126205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:47:53.437 [DEBUG] [Thread-126205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:47:53.437 [DEBUG] [Thread-126205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:47:53.445 [DEBUG] [Thread-126205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:47:53.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:47: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-28T13:47:53.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-28T13:47:53.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:47:53.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:47:53.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:47:53.478 [DEBUG] [Thread-126205] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:47:57.564 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:47:57.566 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:03.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:48:03.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:48:03.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-28T13:48:04.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 47, 44), 18.18, 29.78, 0.0, 24.26, 18.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:48:04.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:47:44
2025-09-28T13:48:04.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:48:04.329 [DEBUG] [Thread-126207] [transport.py] [_log()] starting thread (client mode): 0x2e377d90
2025-09-28T13:48:04.329 [DEBUG] [Thread-126207] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:04.348 [DEBUG] [Thread-126207] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:48:04.349 [INFO] [Thread-126207] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:04.352 [DEBUG] [Thread-126207] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] Compression: none
2025-09-28T13:48:04.353 [DEBUG] [Thread-126207] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:04.368 [DEBUG] [Thread-126207] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:04.368 [DEBUG] [Thread-126207] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:04.369 [DEBUG] [Thread-126207] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:48:04.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:48:04.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:04.371 [DEBUG] [Thread-126207] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:04.371 [DEBUG] [Thread-126207] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:04.371 [DEBUG] [Thread-126207] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:04.371 [DEBUG] [Thread-126207] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:48:04.371 [DEBUG] [Thread-126207] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:04.396 [INFO] [Thread-126207] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:04.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:05.036 [DEBUG] [Thread-126207] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:05.036 [DEBUG] [Thread-126207] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:05.036 [DEBUG] [Thread-126207] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:48:05.077 [DEBUG] [Thread-126207] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:05.077 [DEBUG] [Thread-126207] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:05.080 [DEBUG] [Thread-126207] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:05.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:05.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:48:05.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:48:05.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:48:05.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:05.102 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:48:05.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:05.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:05.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:48:05.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491403 -999.00  +18.20  11.71     36   +3.20 1 1 1 1 1   888    0 15.25 -13.99 ----- 15.0 11.7 245.2 24.4 24.8 -27.1 24.0 -24.9 24.1 -23.7 25.0 -26.3
2025-09-28T13:48:05.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:48:05.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:48:05.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491403
2025-09-28T13:48:05.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:48:05.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:48:05.104 [DEBUG] [Thread-126207] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:05.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:48:05.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:48:05.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:48:05.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:47:44', tmtdew=18.18, humidity=29.78, cloud=0.0, wind=24.26, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:47:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:48:05.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-28T13:48:05.200 [DEBUG] [Thread-126210] [transport.py] [_log()] starting thread (client mode): 0x2e376a40
2025-09-28T13:48:05.200 [DEBUG] [Thread-126210] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:05.215 [DEBUG] [Thread-126210] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:48:05.215 [INFO] [Thread-126210] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] Compression: none
2025-09-28T13:48:05.223 [DEBUG] [Thread-126210] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:05.279 [DEBUG] [Thread-126210] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:05.279 [DEBUG] [Thread-126210] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:05.280 [DEBUG] [Thread-126210] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:48:05.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:48:05.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:05.335 [DEBUG] [Thread-126210] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:05.336 [DEBUG] [Thread-126210] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:05.336 [DEBUG] [Thread-126210] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:05.336 [DEBUG] [Thread-126210] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:48:05.336 [DEBUG] [Thread-126210] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:05.359 [INFO] [Thread-126210] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:05.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-28T13:48:05.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:05.872 [DEBUG] [Thread-126212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:06.346 [DEBUG] [Thread-126210] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:06.346 [DEBUG] [Thread-126210] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:06.394 [DEBUG] [Thread-126210] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:06.394 [DEBUG] [Thread-126210] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:06.403 [DEBUG] [Thread-126210] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:06.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:06.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-28T13:48:06.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-28T13:48:06.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:06.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:06.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:06.443 [DEBUG] [Thread-126210] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:13.184 [DEBUG] [Thread-126213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:48:16.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:48:16.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-28T13:48:17.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 47, 44), 18.18, 29.78, 0.0, 24.26, 18.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:48:17.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:47:44
2025-09-28T13:48:17.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:48:17.330 [DEBUG] [Thread-126214] [transport.py] [_log()] starting thread (client mode): 0x2e376e00
2025-09-28T13:48:17.331 [DEBUG] [Thread-126214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:17.350 [DEBUG] [Thread-126214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:48:17.350 [INFO] [Thread-126214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:17.353 [DEBUG] [Thread-126214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:17.354 [DEBUG] [Thread-126214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:17.354 [DEBUG] [Thread-126214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:17.354 [DEBUG] [Thread-126214] [transport.py] [_log()] Compression: none
2025-09-28T13:48:17.354 [DEBUG] [Thread-126214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:17.369 [DEBUG] [Thread-126214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:17.369 [DEBUG] [Thread-126214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:17.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:48:17.370 [DEBUG] [Thread-126214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:48:17.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:17.370 [DEBUG] [Thread-126214] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:17.370 [DEBUG] [Thread-126214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:17.371 [DEBUG] [Thread-126214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:17.371 [DEBUG] [Thread-126214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:48:17.371 [DEBUG] [Thread-126214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:17.382 [INFO] [Thread-126214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:17.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:18.022 [DEBUG] [Thread-126214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:18.022 [DEBUG] [Thread-126214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:18.022 [DEBUG] [Thread-126214] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:48:18.063 [DEBUG] [Thread-126214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:18.063 [DEBUG] [Thread-126214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:18.065 [DEBUG] [Thread-126214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:18.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:18.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:48:18.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:48:18.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:48:18.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:18.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:48:18.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491403 -999.00  +18.20  11.71     36   +3.20 1 1 1 1 1   888    0 15.25 -13.99 ----- 15.0 11.7 245.2 24.4 24.8 -27.1 24.0 -24.9 24.1 -23.7 25.0 -26.3
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:48:18.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491403
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:48:18.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:47:44', tmtdew=18.18, humidity=29.78, cloud=0.0, wind=24.26, temperature=18.75, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:47:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:48:18.086 [DEBUG] [Thread-126214] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:18.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-28T13:48:18.170 [DEBUG] [Thread-126217] [transport.py] [_log()] starting thread (client mode): 0x2e3765f0
2025-09-28T13:48:18.170 [DEBUG] [Thread-126217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:18.185 [DEBUG] [Thread-126217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:48:18.185 [INFO] [Thread-126217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] Compression: none
2025-09-28T13:48:18.193 [DEBUG] [Thread-126217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:18.250 [DEBUG] [Thread-126217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:18.250 [DEBUG] [Thread-126217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:18.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:48:18.250 [DEBUG] [Thread-126217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:48:18.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:18.307 [DEBUG] [Thread-126217] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:18.307 [DEBUG] [Thread-126217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:18.307 [DEBUG] [Thread-126217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:18.307 [DEBUG] [Thread-126217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:48:18.307 [DEBUG] [Thread-126217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:18.321 [INFO] [Thread-126217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:18.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-28T13:48:18.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:19.266 [DEBUG] [Thread-126217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:19.267 [DEBUG] [Thread-126217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:19.314 [DEBUG] [Thread-126217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:19.314 [DEBUG] [Thread-126217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:19.323 [DEBUG] [Thread-126217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:19.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:19.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-28T13:48:19.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-28T13:48:19.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:19.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:19.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:19.359 [DEBUG] [Thread-126217] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:20.913 [DEBUG] [Thread-126219 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:29.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:48:29.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:48:29.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-28T13:48:30.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 48, 16), 18.1, 29.89, 0.0, 22.02, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:48:30.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:48:16
2025-09-28T13:48:30.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:48:30.270 [DEBUG] [Thread-126220] [transport.py] [_log()] starting thread (client mode): 0x2b96c100
2025-09-28T13:48:30.270 [DEBUG] [Thread-126220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:30.289 [DEBUG] [Thread-126220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:48:30.289 [INFO] [Thread-126220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:48:30.290 [DEBUG] [Thread-126220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:30.290 [DEBUG] [Thread-126220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:48:30.290 [DEBUG] [Thread-126220] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:30.290 [DEBUG] [Thread-126220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] Compression: none
2025-09-28T13:48:30.291 [DEBUG] [Thread-126220] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:30.298 [DEBUG] [Thread-126220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:30.298 [DEBUG] [Thread-126220] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:30.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:48:30.299 [DEBUG] [Thread-126220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:48:30.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:30.299 [DEBUG] [Thread-126220] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:30.299 [DEBUG] [Thread-126220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:30.299 [DEBUG] [Thread-126220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:30.300 [DEBUG] [Thread-126220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:48:30.300 [DEBUG] [Thread-126220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:30.310 [INFO] [Thread-126220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:30.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:30.947 [DEBUG] [Thread-126220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:30.947 [DEBUG] [Thread-126220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:30.947 [DEBUG] [Thread-126220] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:48:30.988 [DEBUG] [Thread-126220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:30.988 [DEBUG] [Thread-126220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:30.990 [DEBUG] [Thread-126220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:31.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:31.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:48:31.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:48:31.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:48:31.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:31.008 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:48:31.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491403 -999.00  +18.20  11.71     36   +3.20 1 1 1 1 1   888    0 15.25 -13.99 ----- 15.0 11.7 245.2 24.4 24.8 -27.1 24.0 -24.9 24.1 -23.7 25.0 -26.3
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491403
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:48:31.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:48:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:48:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:48:31.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:48:16', tmtdew=18.1, humidity=29.89, cloud=0.0, wind=22.02, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:47:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:48:31.009 [DEBUG] [Thread-126220] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:31.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-28T13:48:31.094 [DEBUG] [Thread-126223] [transport.py] [_log()] starting thread (client mode): 0x30dddbd0
2025-09-28T13:48:31.094 [DEBUG] [Thread-126223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:31.109 [DEBUG] [Thread-126223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:48:31.109 [INFO] [Thread-126223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:31.117 [DEBUG] [Thread-126223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:31.118 [DEBUG] [Thread-126223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:31.118 [DEBUG] [Thread-126223] [transport.py] [_log()] Compression: none
2025-09-28T13:48:31.118 [DEBUG] [Thread-126223] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:31.174 [DEBUG] [Thread-126223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:31.175 [DEBUG] [Thread-126223] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:31.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:48:31.175 [DEBUG] [Thread-126223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:48:31.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:31.231 [DEBUG] [Thread-126223] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:31.231 [DEBUG] [Thread-126223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:31.231 [DEBUG] [Thread-126223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:31.231 [DEBUG] [Thread-126223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:48:31.231 [DEBUG] [Thread-126223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:31.246 [INFO] [Thread-126223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:31.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-28T13:48:31.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:32.326 [DEBUG] [Thread-126223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:32.326 [DEBUG] [Thread-126223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:32.374 [DEBUG] [Thread-126223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:32.374 [DEBUG] [Thread-126223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:32.383 [DEBUG] [Thread-126223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:32.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:32.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-28T13:48:32.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-28T13:48:32.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:32.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:32.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:32.417 [DEBUG] [Thread-126223] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:35.943 [DEBUG] [Thread-126225 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:42.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:48:42.420 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:48:42.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-28T13:48:43.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 48, 16), 18.1, 29.89, 0.0, 22.02, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:48:43.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:48:16
2025-09-28T13:48:43.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:48:43.290 [DEBUG] [Thread-126226] [transport.py] [_log()] starting thread (client mode): 0x2e375420
2025-09-28T13:48:43.291 [DEBUG] [Thread-126226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:43.310 [DEBUG] [Thread-126226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:48:43.310 [INFO] [Thread-126226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:43.313 [DEBUG] [Thread-126226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] Compression: none
2025-09-28T13:48:43.314 [DEBUG] [Thread-126226] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:43.327 [DEBUG] [Thread-126226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:43.327 [DEBUG] [Thread-126226] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:43.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:48:43.328 [DEBUG] [Thread-126226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:48:43.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:43.330 [DEBUG] [Thread-126226] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:43.330 [DEBUG] [Thread-126226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:43.331 [DEBUG] [Thread-126226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:43.331 [DEBUG] [Thread-126226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:48:43.331 [DEBUG] [Thread-126226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:43.348 [INFO] [Thread-126226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:43.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:43.989 [DEBUG] [Thread-126226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:43.989 [DEBUG] [Thread-126226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:43.990 [DEBUG] [Thread-126226] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:48:44.030 [DEBUG] [Thread-126226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:44.030 [DEBUG] [Thread-126226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:44.033 [DEBUG] [Thread-126226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:44.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:44.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:48:44.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:48:44.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:48:44.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:44.059 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:48:44.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:44.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:44.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:48:44.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491750 -999.00  +18.60  22.68     35   +3.10 1 1 1 1 1   888    0 15.21 -16.75 ----- 23.2 22.7 251.8 26.0 24.9 -26.4 24.1 -24.6 24.1 -24.0 25.1 -25.7
2025-09-28T13:48:44.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:48:44.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:48:44.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491750
2025-09-28T13:48:44.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:48:44.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:48:44.062 [DEBUG] [Thread-126226] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:44.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:48:44.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:48:44.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:48:44.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:48:16', tmtdew=18.1, humidity=29.89, cloud=0.0, wind=22.02, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:48:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:48:44.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-28T13:48:44.171 [DEBUG] [Thread-126229] [transport.py] [_log()] starting thread (client mode): 0x2e375b70
2025-09-28T13:48:44.171 [DEBUG] [Thread-126229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:44.186 [DEBUG] [Thread-126229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:48:44.186 [INFO] [Thread-126229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:48:44.193 [DEBUG] [Thread-126229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:44.194 [DEBUG] [Thread-126229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:44.195 [DEBUG] [Thread-126229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:44.196 [DEBUG] [Thread-126229] [transport.py] [_log()] Compression: none
2025-09-28T13:48:44.196 [DEBUG] [Thread-126229] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:44.252 [DEBUG] [Thread-126229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:44.253 [DEBUG] [Thread-126229] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:44.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:48:44.254 [DEBUG] [Thread-126229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:48:44.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:44.308 [DEBUG] [Thread-126229] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:44.308 [DEBUG] [Thread-126229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:44.308 [DEBUG] [Thread-126229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:44.308 [DEBUG] [Thread-126229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:48:44.308 [DEBUG] [Thread-126229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:44.328 [INFO] [Thread-126229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:44.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-28T13:48:44.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:45.312 [DEBUG] [Thread-126229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:45.313 [DEBUG] [Thread-126229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:45.361 [DEBUG] [Thread-126229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:45.361 [DEBUG] [Thread-126229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:45.379 [DEBUG] [Thread-126229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:45.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48: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-28T13:48:45.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-28T13:48:45.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:45.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:45.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:45.413 [DEBUG] [Thread-126229] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:50.988 [DEBUG] [Thread-126231 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:55.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:48:55.416 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:48:55.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-28T13:48:56.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 48, 48), 18.09, 29.29, 0.0, 21.67, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:48:56.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:48:48
2025-09-28T13:48:56.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:48:56.280 [DEBUG] [Thread-126232] [transport.py] [_log()] starting thread (client mode): 0x28705c60
2025-09-28T13:48:56.280 [DEBUG] [Thread-126232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:56.300 [DEBUG] [Thread-126232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:48:56.300 [INFO] [Thread-126232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:56.302 [DEBUG] [Thread-126232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:56.303 [DEBUG] [Thread-126232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:56.303 [DEBUG] [Thread-126232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:56.303 [DEBUG] [Thread-126232] [transport.py] [_log()] Compression: none
2025-09-28T13:48:56.303 [DEBUG] [Thread-126232] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:56.324 [DEBUG] [Thread-126232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:56.325 [DEBUG] [Thread-126232] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:56.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:48:56.326 [DEBUG] [Thread-126232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:48:56.327 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:56.328 [DEBUG] [Thread-126232] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:56.328 [DEBUG] [Thread-126232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:56.328 [DEBUG] [Thread-126232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:56.328 [DEBUG] [Thread-126232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:48:56.328 [DEBUG] [Thread-126232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:56.344 [INFO] [Thread-126232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:56.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:56.947 [DEBUG] [Thread-126232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:56.947 [DEBUG] [Thread-126232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:56.947 [DEBUG] [Thread-126232] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:48:56.988 [DEBUG] [Thread-126232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:56.988 [DEBUG] [Thread-126232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:56.991 [DEBUG] [Thread-126232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:57.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:57.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:48:57.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:48:57.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:48:57.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:57.014 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:48:57.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:57.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:57.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:48:57.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.491750 -999.00  +18.60  22.68     35   +3.10 1 1 1 1 1   888    0 15.21 -16.75 ----- 23.2 22.7 251.8 26.0 24.9 -26.4 24.1 -24.6 24.1 -24.0 25.1 -25.7
2025-09-28T13:48:57.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:48:57.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:48:57.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.491750
2025-09-28T13:48:57.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:48:57.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:48:57.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:48:57.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:48:57.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:48:57.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:48:48', tmtdew=18.09, humidity=29.29, cloud=0.0, wind=21.67, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:48:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:48:57.017 [DEBUG] [Thread-126232] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:48:57.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-28T13:48:57.117 [DEBUG] [Thread-126235] [transport.py] [_log()] starting thread (client mode): 0x28704490
2025-09-28T13:48:57.117 [DEBUG] [Thread-126235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:48:57.135 [DEBUG] [Thread-126235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:48:57.136 [INFO] [Thread-126235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:48:57.145 [DEBUG] [Thread-126235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:48:57.145 [DEBUG] [Thread-126235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:48:57.145 [DEBUG] [Thread-126235] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] client lang: <none>
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] server lang: <none>
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] kex follows: False
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] Compression: none
2025-09-28T13:48:57.146 [DEBUG] [Thread-126235] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:48:57.204 [DEBUG] [Thread-126235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:48:57.205 [DEBUG] [Thread-126235] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:48:57.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:48:57.206 [DEBUG] [Thread-126235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:48:57.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:48:57.272 [DEBUG] [Thread-126235] [transport.py] [_log()] userauth is OK
2025-09-28T13:48:57.273 [DEBUG] [Thread-126235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:48:57.273 [DEBUG] [Thread-126235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:48:57.273 [DEBUG] [Thread-126235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:48:57.273 [DEBUG] [Thread-126235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:48:57.293 [INFO] [Thread-126235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:48:57.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-28T13:48:57.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:48:57.717 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:57.718 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:48:58.267 [DEBUG] [Thread-126235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:48:58.267 [DEBUG] [Thread-126235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:48:58.315 [DEBUG] [Thread-126235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:48:58.315 [DEBUG] [Thread-126235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:48:58.324 [DEBUG] [Thread-126235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:48:58.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:48:58.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')
2025-09-28T13:48:58.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') -> 00000000
2025-09-28T13:48:58.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:48:58.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:48:58.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:48:58.362 [DEBUG] [Thread-126235] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:06.034 [DEBUG] [Thread-126237 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:08.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:49:08.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:49:08.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-28T13:49:08.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 48, 48), 18.09, 29.29, 0.0, 21.67, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:49:08.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:48:48
2025-09-28T13:49:09.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:49:09.217 [DEBUG] [Thread-126238] [transport.py] [_log()] starting thread (client mode): 0x28705120
2025-09-28T13:49:09.217 [DEBUG] [Thread-126238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:09.227 [DEBUG] [Thread-126238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:49:09.227 [INFO] [Thread-126238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] Compression: none
2025-09-28T13:49:09.229 [DEBUG] [Thread-126238] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:09.241 [DEBUG] [Thread-126238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:09.241 [DEBUG] [Thread-126238] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:09.241 [DEBUG] [Thread-126238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:49:09.241 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:49:09.242 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:09.242 [DEBUG] [Thread-126238] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:09.242 [DEBUG] [Thread-126238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:09.242 [DEBUG] [Thread-126238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:09.242 [DEBUG] [Thread-126238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:49:09.243 [DEBUG] [Thread-126238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:09.256 [INFO] [Thread-126238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:09.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:09.900 [DEBUG] [Thread-126238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:09.900 [DEBUG] [Thread-126238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:09.900 [DEBUG] [Thread-126238] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:49:09.941 [DEBUG] [Thread-126238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:09.941 [DEBUG] [Thread-126238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:09.944 [DEBUG] [Thread-126238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:09.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:09.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:49:09.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:49:09.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:49:09.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:09.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:49:09.967 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:09.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:09.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:49:09.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492097 -999.00  +17.90  19.54     36   +2.70 1 1 1 1 1   888    0 15.20 -20.91 ----- 18.4 19.5 273.0 26.1 24.9 -26.9 24.0 -25.2 24.0 -23.9 25.0 -27.4
2025-09-28T13:49:09.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:49:09.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:49:09.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492097
2025-09-28T13:49:09.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:49:09.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:49:09.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:49:09.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:49:09.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:49:09.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:48:48', tmtdew=18.09, humidity=29.29, cloud=0.0, wind=21.67, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:48:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:49:09.969 [DEBUG] [Thread-126238] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:10.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-28T13:49:10.066 [DEBUG] [Thread-126241] [transport.py] [_log()] starting thread (client mode): 0x2e3767a0
2025-09-28T13:49:10.066 [DEBUG] [Thread-126241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:10.081 [DEBUG] [Thread-126241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:49:10.082 [INFO] [Thread-126241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:49:10.089 [DEBUG] [Thread-126241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:10.089 [DEBUG] [Thread-126241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:49:10.089 [DEBUG] [Thread-126241] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:10.090 [DEBUG] [Thread-126241] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] Compression: none
2025-09-28T13:49:10.091 [DEBUG] [Thread-126241] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:10.148 [DEBUG] [Thread-126241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:10.148 [DEBUG] [Thread-126241] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:10.149 [DEBUG] [Thread-126241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:49:10.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:49:10.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:10.204 [DEBUG] [Thread-126241] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:10.204 [DEBUG] [Thread-126241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:10.205 [DEBUG] [Thread-126241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:10.205 [DEBUG] [Thread-126241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:49:10.205 [DEBUG] [Thread-126241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:10.224 [INFO] [Thread-126241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:10.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-28T13:49:10.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:11.191 [DEBUG] [Thread-126241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:11.191 [DEBUG] [Thread-126241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:11.239 [DEBUG] [Thread-126241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:11.239 [DEBUG] [Thread-126241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:11.249 [DEBUG] [Thread-126241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:11.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:11.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-28T13:49:11.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-28T13:49:11.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:11.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:11.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:11.283 [DEBUG] [Thread-126241] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:13.241 [DEBUG] [Thread-126243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:21.070 [DEBUG] [Thread-126244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:21.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:49:21.286 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:49:21.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-28T13:49:21.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 48, 48), 18.09, 29.29, 0.0, 21.67, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:49:21.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:48:48
2025-09-28T13:49:22.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:49:22.187 [DEBUG] [Thread-126245] [transport.py] [_log()] starting thread (client mode): 0x28707f10
2025-09-28T13:49:22.187 [DEBUG] [Thread-126245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:22.207 [DEBUG] [Thread-126245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:49:22.207 [INFO] [Thread-126245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] Compression: none
2025-09-28T13:49:22.210 [DEBUG] [Thread-126245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:22.224 [DEBUG] [Thread-126245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:22.225 [DEBUG] [Thread-126245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:22.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:49:22.225 [DEBUG] [Thread-126245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:49:22.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:22.229 [DEBUG] [Thread-126245] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:22.229 [DEBUG] [Thread-126245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:22.229 [DEBUG] [Thread-126245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:22.229 [DEBUG] [Thread-126245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:49:22.229 [DEBUG] [Thread-126245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:22.242 [INFO] [Thread-126245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:22.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:22.896 [DEBUG] [Thread-126245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:22.897 [DEBUG] [Thread-126245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:22.897 [DEBUG] [Thread-126245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:49:22.937 [DEBUG] [Thread-126245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:22.938 [DEBUG] [Thread-126245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:22.941 [DEBUG] [Thread-126245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:22.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:22.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:49:22.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:49:22.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:49:22.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:22.965 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:49:22.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:22.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:49:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492097 -999.00  +17.90  19.54     36   +2.70 1 1 1 1 1   888    0 15.20 -20.91 ----- 18.4 19.5 273.0 26.1 24.9 -26.9 24.0 -25.2 24.0 -23.9 25.0 -27.4
2025-09-28T13:49:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:49:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:49:22.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492097
2025-09-28T13:49:22.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:49:22.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:49:22.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:49:22.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:49:22.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:49:22.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:48:48', tmtdew=18.09, humidity=29.29, cloud=0.0, wind=21.67, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:48:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:49:22.968 [DEBUG] [Thread-126245] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:23.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-28T13:49:23.063 [DEBUG] [Thread-126248] [transport.py] [_log()] starting thread (client mode): 0x28707bb0
2025-09-28T13:49:23.063 [DEBUG] [Thread-126248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:23.077 [DEBUG] [Thread-126248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:49:23.077 [INFO] [Thread-126248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:49:23.084 [DEBUG] [Thread-126248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:23.084 [DEBUG] [Thread-126248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] Compression: none
2025-09-28T13:49:23.085 [DEBUG] [Thread-126248] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:23.143 [DEBUG] [Thread-126248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:23.144 [DEBUG] [Thread-126248] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:23.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:49:23.145 [DEBUG] [Thread-126248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:49:23.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:23.200 [DEBUG] [Thread-126248] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:23.200 [DEBUG] [Thread-126248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:23.200 [DEBUG] [Thread-126248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:23.201 [DEBUG] [Thread-126248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:49:23.201 [DEBUG] [Thread-126248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:23.220 [INFO] [Thread-126248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:23.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-28T13:49:23.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:24.221 [DEBUG] [Thread-126248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:24.221 [DEBUG] [Thread-126248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:24.269 [DEBUG] [Thread-126248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:24.269 [DEBUG] [Thread-126248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:24.278 [DEBUG] [Thread-126248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:24.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:24.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-28T13:49:24.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-28T13:49:24.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:24.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:24.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:24.314 [DEBUG] [Thread-126248] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:34.315 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:49:34.316 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:49:34.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-28T13:49:34.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 49, 20), 18.15, 29.17, 0.0, 17.91, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:49:34.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:49:20
2025-09-28T13:49:35.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:49:35.185 [DEBUG] [Thread-126250] [transport.py] [_log()] starting thread (client mode): 0x28704550
2025-09-28T13:49:35.185 [DEBUG] [Thread-126250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:35.204 [DEBUG] [Thread-126250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:49:35.204 [INFO] [Thread-126250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:49:35.207 [DEBUG] [Thread-126250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:35.207 [DEBUG] [Thread-126250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:49:35.207 [DEBUG] [Thread-126250] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] Compression: none
2025-09-28T13:49:35.208 [DEBUG] [Thread-126250] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:35.225 [DEBUG] [Thread-126250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:35.225 [DEBUG] [Thread-126250] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:35.226 [DEBUG] [Thread-126250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:49:35.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:49:35.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:35.228 [DEBUG] [Thread-126250] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:35.228 [DEBUG] [Thread-126250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:35.228 [DEBUG] [Thread-126250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:35.228 [DEBUG] [Thread-126250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:49:35.228 [DEBUG] [Thread-126250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:35.252 [INFO] [Thread-126250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:35.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:35.976 [DEBUG] [Thread-126250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:35.976 [DEBUG] [Thread-126250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:35.976 [DEBUG] [Thread-126250] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:49:36.017 [DEBUG] [Thread-126250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:36.017 [DEBUG] [Thread-126250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:36.020 [DEBUG] [Thread-126250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:36.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:36.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:49:36.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:49:36.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:49:36.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:36.044 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:49:36.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:36.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:36.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:49:36.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492097 -999.00  +17.90  19.54     36   +2.70 1 1 1 1 1   888    0 15.20 -20.91 ----- 18.4 19.5 273.0 26.1 24.9 -26.9 24.0 -25.2 24.0 -23.9 25.0 -27.4
2025-09-28T13:49:36.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:49:36.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:49:36.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492097
2025-09-28T13:49:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:49:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:49:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:49:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:49:36.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:49:36.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:49:20', tmtdew=18.15, humidity=29.17, cloud=0.0, wind=17.91, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:48:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:49:36.047 [DEBUG] [Thread-126250] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:36.102 [DEBUG] [Thread-126253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:36.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-28T13:49:36.142 [DEBUG] [Thread-126254] [transport.py] [_log()] starting thread (client mode): 0x287077c0
2025-09-28T13:49:36.142 [DEBUG] [Thread-126254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:36.157 [DEBUG] [Thread-126254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:49:36.157 [INFO] [Thread-126254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:49:36.164 [DEBUG] [Thread-126254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:36.164 [DEBUG] [Thread-126254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] Compression: none
2025-09-28T13:49:36.165 [DEBUG] [Thread-126254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:36.224 [DEBUG] [Thread-126254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:36.225 [DEBUG] [Thread-126254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:36.225 [DEBUG] [Thread-126254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:49:36.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:49:36.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:36.280 [DEBUG] [Thread-126254] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:36.280 [DEBUG] [Thread-126254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:36.280 [DEBUG] [Thread-126254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:36.281 [DEBUG] [Thread-126254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:49:36.281 [DEBUG] [Thread-126254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:36.299 [INFO] [Thread-126254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:36.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-28T13:49:36.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:37.271 [DEBUG] [Thread-126254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:37.271 [DEBUG] [Thread-126254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:37.319 [DEBUG] [Thread-126254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:37.319 [DEBUG] [Thread-126254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:37.328 [DEBUG] [Thread-126254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:37.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:37.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-28T13:49:37.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-28T13:49:37.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:37.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:37.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:37.362 [DEBUG] [Thread-126254] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:47.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:49:47.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:49:47.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-28T13:49:47.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 49, 20), 18.15, 29.17, 0.0, 17.91, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:49:47.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:49:20
2025-09-28T13:49:48.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:49:48.229 [DEBUG] [Thread-126256] [transport.py] [_log()] starting thread (client mode): 0x287051b0
2025-09-28T13:49:48.229 [DEBUG] [Thread-126256] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:48.250 [DEBUG] [Thread-126256] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:49:48.250 [INFO] [Thread-126256] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:48.253 [DEBUG] [Thread-126256] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:48.254 [DEBUG] [Thread-126256] [transport.py] [_log()] Compression: none
2025-09-28T13:49:48.254 [DEBUG] [Thread-126256] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:48.271 [DEBUG] [Thread-126256] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:48.271 [DEBUG] [Thread-126256] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:48.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:49:48.272 [DEBUG] [Thread-126256] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:49:48.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:48.275 [DEBUG] [Thread-126256] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:48.275 [DEBUG] [Thread-126256] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:48.275 [DEBUG] [Thread-126256] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:48.275 [DEBUG] [Thread-126256] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:49:48.275 [DEBUG] [Thread-126256] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:48.293 [INFO] [Thread-126256] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:48.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:48.881 [DEBUG] [Thread-126256] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:48.881 [DEBUG] [Thread-126256] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:48.881 [DEBUG] [Thread-126256] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:49:48.921 [DEBUG] [Thread-126256] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:48.922 [DEBUG] [Thread-126256] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:48.924 [DEBUG] [Thread-126256] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:48.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:48.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:49:48.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:49:48.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:49:48.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:48.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:49:48.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:48.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492792 -999.00  +18.20  10.82     36   +3.10 1 1 1 1 1   888    0 14.96 -26.40 ----- 10.8 10.8 251.9 21.6 24.9 -25.2 23.9 -24.6 24.0 -23.4 25.0 -24.7
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492792
2025-09-28T13:49:48.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:49:48.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:49:48.952 [DEBUG] [Thread-126256] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:48.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:49:48.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:49:48.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:49:48.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:49:20', tmtdew=18.15, humidity=29.17, cloud=0.0, wind=17.91, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:49:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:49:49.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-28T13:49:49.050 [DEBUG] [Thread-126259] [transport.py] [_log()] starting thread (client mode): 0x28707010
2025-09-28T13:49:49.050 [DEBUG] [Thread-126259] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:49:49.065 [DEBUG] [Thread-126259] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:49:49.065 [INFO] [Thread-126259] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:49:49.073 [DEBUG] [Thread-126259] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] client lang: <none>
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] server lang: <none>
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] kex follows: False
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:49:49.074 [DEBUG] [Thread-126259] [transport.py] [_log()] Compression: none
2025-09-28T13:49:49.075 [DEBUG] [Thread-126259] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:49:49.132 [DEBUG] [Thread-126259] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:49:49.133 [DEBUG] [Thread-126259] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:49:49.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:49:49.134 [DEBUG] [Thread-126259] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:49:49.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:49:49.188 [DEBUG] [Thread-126259] [transport.py] [_log()] userauth is OK
2025-09-28T13:49:49.189 [DEBUG] [Thread-126259] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:49:49.189 [DEBUG] [Thread-126259] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:49:49.189 [DEBUG] [Thread-126259] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:49:49.189 [DEBUG] [Thread-126259] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:49:49.208 [INFO] [Thread-126259] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:49:49.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-28T13:49:49.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:49:50.198 [DEBUG] [Thread-126259] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:49:50.198 [DEBUG] [Thread-126259] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:49:50.246 [DEBUG] [Thread-126259] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:49:50.246 [DEBUG] [Thread-126259] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:49:50.255 [DEBUG] [Thread-126259] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:49:50.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:49:50.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-28T13:49:50.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-28T13:49:50.282 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:49:50.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:49:50.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:49:50.291 [DEBUG] [Thread-126259] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:49:51.135 [DEBUG] [Thread-126261 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:57.860 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:49:57.861 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:00.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:50:00.294 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:50:00.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-28T13:50:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 49, 52), 18.14, 29.59, 0.0, 21.54, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:50:00.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:49:52
2025-09-28T13:50:00.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:50:01.145 [DEBUG] [Thread-126262] [transport.py] [_log()] starting thread (client mode): 0x287071c0
2025-09-28T13:50:01.145 [DEBUG] [Thread-126262] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:01.164 [DEBUG] [Thread-126262] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:50:01.164 [INFO] [Thread-126262] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] Compression: none
2025-09-28T13:50:01.167 [DEBUG] [Thread-126262] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:01.185 [DEBUG] [Thread-126262] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:01.185 [DEBUG] [Thread-126262] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:01.186 [DEBUG] [Thread-126262] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:50:01.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:50:01.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:01.188 [DEBUG] [Thread-126262] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:01.188 [DEBUG] [Thread-126262] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:01.188 [DEBUG] [Thread-126262] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:01.188 [DEBUG] [Thread-126262] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:50:01.188 [DEBUG] [Thread-126262] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:01.206 [INFO] [Thread-126262] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:01.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:02.076 [DEBUG] [Thread-126262] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:02.076 [DEBUG] [Thread-126262] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:02.076 [DEBUG] [Thread-126262] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:50:02.117 [DEBUG] [Thread-126262] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:02.117 [DEBUG] [Thread-126262] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:02.119 [DEBUG] [Thread-126262] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:02.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:02.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:50:02.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:50:02.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:50:02.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:02.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:50:02.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:02.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:02.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492792 -999.00  +18.20  10.82     36   +3.10 1 1 1 1 1   888    0 14.96 -26.40 ----- 10.8 10.8 251.9 21.6 24.9 -25.2 23.9 -24.6 24.0 -23.4 25.0 -24.7
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492792
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:50:02.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:49:52', tmtdew=18.14, humidity=29.59, cloud=0.0, wind=21.54, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:49:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:50:02.134 [DEBUG] [Thread-126262] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:02.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-28T13:50:02.218 [DEBUG] [Thread-126265] [transport.py] [_log()] starting thread (client mode): 0x28705960
2025-09-28T13:50:02.218 [DEBUG] [Thread-126265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:02.232 [DEBUG] [Thread-126265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:50:02.232 [INFO] [Thread-126265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:50:02.239 [DEBUG] [Thread-126265] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] Compression: none
2025-09-28T13:50:02.240 [DEBUG] [Thread-126265] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:02.299 [DEBUG] [Thread-126265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:02.299 [DEBUG] [Thread-126265] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:02.299 [DEBUG] [Thread-126265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:50:02.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:50:02.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:02.356 [DEBUG] [Thread-126265] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:02.356 [DEBUG] [Thread-126265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:02.356 [DEBUG] [Thread-126265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:02.356 [DEBUG] [Thread-126265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:50:02.357 [DEBUG] [Thread-126265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:02.379 [INFO] [Thread-126265] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:02.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-28T13:50:02.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:03.367 [DEBUG] [Thread-126265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:03.367 [DEBUG] [Thread-126265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:03.415 [DEBUG] [Thread-126265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:03.415 [DEBUG] [Thread-126265] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:03.424 [DEBUG] [Thread-126265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:03.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:03.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-28T13:50:03.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-28T13:50:03.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:03.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:03.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:03.459 [DEBUG] [Thread-126265] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:06.181 [DEBUG] [Thread-126267 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:13.289 [DEBUG] [Thread-126268 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:13.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:50:13.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:50:13.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-28T13:50:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 49, 52), 18.14, 29.59, 0.0, 21.54, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:50:14.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:49:52
2025-09-28T13:50:14.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:50:14.310 [DEBUG] [Thread-126269] [transport.py] [_log()] starting thread (client mode): 0x28704c10
2025-09-28T13:50:14.310 [DEBUG] [Thread-126269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:14.328 [DEBUG] [Thread-126269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:50:14.328 [INFO] [Thread-126269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:14.332 [DEBUG] [Thread-126269] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] Compression: none
2025-09-28T13:50:14.333 [DEBUG] [Thread-126269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:14.349 [DEBUG] [Thread-126269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:14.350 [DEBUG] [Thread-126269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:14.350 [DEBUG] [Thread-126269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:50:14.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:50:14.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:14.352 [DEBUG] [Thread-126269] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:14.352 [DEBUG] [Thread-126269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:14.353 [DEBUG] [Thread-126269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:14.353 [DEBUG] [Thread-126269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:50:14.353 [DEBUG] [Thread-126269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:14.376 [INFO] [Thread-126269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:14.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:20.657 [DEBUG] [Thread-126269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:20.657 [DEBUG] [Thread-126269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:20.657 [DEBUG] [Thread-126269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:50:20.698 [DEBUG] [Thread-126269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:20.698 [DEBUG] [Thread-126269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:20.700 [DEBUG] [Thread-126269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:20.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:20.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:50:20.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:50:20.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:50:20.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:20.742 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:50:20.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.492792 -999.00  +18.20  10.82     36   +3.10 1 1 1 1 1   888    0 14.96 -26.40 ----- 10.8 10.8 251.9 21.6 24.9 -25.2 23.9 -24.6 24.0 -23.4 25.0 -24.7
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.492792
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:50:20.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:50:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:50:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:50:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:50:20.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:49:52', tmtdew=18.14, humidity=29.59, cloud=0.0, wind=21.54, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:49:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:50:20.744 [DEBUG] [Thread-126269] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:20.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-28T13:50:20.829 [DEBUG] [Thread-126272] [transport.py] [_log()] starting thread (client mode): 0x28704ac0
2025-09-28T13:50:20.829 [DEBUG] [Thread-126272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:20.844 [DEBUG] [Thread-126272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:50:20.844 [INFO] [Thread-126272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:50:20.851 [DEBUG] [Thread-126272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:20.851 [DEBUG] [Thread-126272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:50:20.851 [DEBUG] [Thread-126272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] Compression: none
2025-09-28T13:50:20.852 [DEBUG] [Thread-126272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:20.907 [DEBUG] [Thread-126272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:20.907 [DEBUG] [Thread-126272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:20.907 [DEBUG] [Thread-126272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:50:20.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:50:20.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:20.964 [DEBUG] [Thread-126272] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:20.964 [DEBUG] [Thread-126272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:20.964 [DEBUG] [Thread-126272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:20.964 [DEBUG] [Thread-126272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:50:20.964 [DEBUG] [Thread-126272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:20.978 [INFO] [Thread-126272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:20.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-28T13:50:20.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:21.229 [DEBUG] [Thread-126274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:21.957 [DEBUG] [Thread-126272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:21.957 [DEBUG] [Thread-126272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:22.005 [DEBUG] [Thread-126272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:22.005 [DEBUG] [Thread-126272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:22.014 [DEBUG] [Thread-126272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:22.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:22.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-28T13:50:22.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-28T13:50:22.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:22.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:22.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:22.049 [DEBUG] [Thread-126272] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:32.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:50:32.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:50:32.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-28T13:50:32.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 50, 24), 18.17, 29.52, 0.0, 18.55, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:50:32.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:50:24
2025-09-28T13:50:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:50:32.910 [DEBUG] [Thread-126275] [transport.py] [_log()] starting thread (client mode): 0x2e375c30
2025-09-28T13:50:32.910 [DEBUG] [Thread-126275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:32.929 [DEBUG] [Thread-126275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:50:32.929 [INFO] [Thread-126275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:50:32.932 [DEBUG] [Thread-126275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:32.932 [DEBUG] [Thread-126275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:50:32.932 [DEBUG] [Thread-126275] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] Compression: none
2025-09-28T13:50:32.933 [DEBUG] [Thread-126275] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:32.950 [DEBUG] [Thread-126275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:32.950 [DEBUG] [Thread-126275] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:32.951 [DEBUG] [Thread-126275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:50:32.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:50:32.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:32.954 [DEBUG] [Thread-126275] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:32.954 [DEBUG] [Thread-126275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:32.954 [DEBUG] [Thread-126275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:32.954 [DEBUG] [Thread-126275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:50:32.954 [DEBUG] [Thread-126275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:32.979 [INFO] [Thread-126275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:32.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:33.586 [DEBUG] [Thread-126275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:33.586 [DEBUG] [Thread-126275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:33.587 [DEBUG] [Thread-126275] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:50:33.627 [DEBUG] [Thread-126275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:33.627 [DEBUG] [Thread-126275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:33.629 [DEBUG] [Thread-126275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:33.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:33.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:50:33.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:50:33.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:50:33.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:33.639 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:50:33.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493139 -999.00  +18.60  14.72     36   +3.30 1 1 1 1 1   888    0 14.84 -27.19 ----- 15.3 14.7 260.6 20.7 24.9 -25.9 24.1 -24.8 24.3 -23.1 25.1 -25.3
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493139
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:50:33.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:50:24', tmtdew=18.17, humidity=29.52, cloud=0.0, wind=18.55, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:50:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:50:33.641 [DEBUG] [Thread-126275] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:33.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-28T13:50:33.722 [DEBUG] [Thread-126278] [transport.py] [_log()] starting thread (client mode): 0x2e377ca0
2025-09-28T13:50:33.722 [DEBUG] [Thread-126278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:33.737 [DEBUG] [Thread-126278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:50:33.737 [INFO] [Thread-126278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:33.745 [DEBUG] [Thread-126278] [transport.py] [_log()] Compression: none
2025-09-28T13:50:33.746 [DEBUG] [Thread-126278] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:33.804 [DEBUG] [Thread-126278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:33.804 [DEBUG] [Thread-126278] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:33.804 [DEBUG] [Thread-126278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:50:33.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:50:33.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:33.862 [DEBUG] [Thread-126278] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:33.862 [DEBUG] [Thread-126278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:33.862 [DEBUG] [Thread-126278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:33.862 [DEBUG] [Thread-126278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:50:33.862 [DEBUG] [Thread-126278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:33.883 [INFO] [Thread-126278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:33.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-28T13:50:33.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:34.843 [DEBUG] [Thread-126278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:34.843 [DEBUG] [Thread-126278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:34.891 [DEBUG] [Thread-126278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:34.891 [DEBUG] [Thread-126278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:34.903 [DEBUG] [Thread-126278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:34.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:34.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')
2025-09-28T13:50:34.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-28T13:50:34.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:34.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:34.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:34.939 [DEBUG] [Thread-126278] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:36.258 [DEBUG] [Thread-126280 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:44.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:50:44.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:50:44.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-28T13:50:45.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 50, 24), 18.17, 29.52, 0.0, 18.55, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:50:45.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:50:24
2025-09-28T13:50:45.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:50:45.790 [DEBUG] [Thread-126281] [transport.py] [_log()] starting thread (client mode): 0x287050c0
2025-09-28T13:50:45.790 [DEBUG] [Thread-126281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:45.810 [DEBUG] [Thread-126281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:50:45.810 [INFO] [Thread-126281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:50:45.813 [DEBUG] [Thread-126281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:45.814 [DEBUG] [Thread-126281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] Compression: none
2025-09-28T13:50:45.815 [DEBUG] [Thread-126281] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:45.833 [DEBUG] [Thread-126281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:45.834 [DEBUG] [Thread-126281] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:45.834 [DEBUG] [Thread-126281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:50:45.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:50:45.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:45.836 [DEBUG] [Thread-126281] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:45.837 [DEBUG] [Thread-126281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:45.837 [DEBUG] [Thread-126281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:45.837 [DEBUG] [Thread-126281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:50:45.837 [DEBUG] [Thread-126281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:45.854 [INFO] [Thread-126281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:45.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:46.659 [DEBUG] [Thread-126281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:46.659 [DEBUG] [Thread-126281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:46.660 [DEBUG] [Thread-126281] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:50:46.700 [DEBUG] [Thread-126281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:46.701 [DEBUG] [Thread-126281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:46.703 [DEBUG] [Thread-126281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:46.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:46.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:50:46.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:50:46.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:50:46.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:46.720 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:50:46.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493139 -999.00  +18.60  14.72     36   +3.30 1 1 1 1 1   888    0 14.84 -27.19 ----- 15.3 14.7 260.6 20.7 24.9 -25.9 24.1 -24.8 24.3 -23.1 25.1 -25.3
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:50:46.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493139
2025-09-28T13:50:46.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:50:46.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:50:46.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:50:46.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:50:46.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:50:46.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:50:24', tmtdew=18.17, humidity=29.52, cloud=0.0, wind=18.55, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:50:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:50:46.723 [DEBUG] [Thread-126281] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:46.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-28T13:50:46.823 [DEBUG] [Thread-126284] [transport.py] [_log()] starting thread (client mode): 0x287079a0
2025-09-28T13:50:46.823 [DEBUG] [Thread-126284] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:46.838 [DEBUG] [Thread-126284] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:50:46.838 [INFO] [Thread-126284] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:50:46.845 [DEBUG] [Thread-126284] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:46.845 [DEBUG] [Thread-126284] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:50:46.845 [DEBUG] [Thread-126284] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:46.845 [DEBUG] [Thread-126284] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:46.845 [DEBUG] [Thread-126284] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] Compression: none
2025-09-28T13:50:46.846 [DEBUG] [Thread-126284] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:46.904 [DEBUG] [Thread-126284] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:46.904 [DEBUG] [Thread-126284] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:46.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:50:46.905 [DEBUG] [Thread-126284] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:50:46.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:46.960 [DEBUG] [Thread-126284] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:46.961 [DEBUG] [Thread-126284] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:46.961 [DEBUG] [Thread-126284] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:46.961 [DEBUG] [Thread-126284] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:50:46.961 [DEBUG] [Thread-126284] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:46.980 [INFO] [Thread-126284] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:46.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-28T13:50:46.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:47.985 [DEBUG] [Thread-126284] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:47.985 [DEBUG] [Thread-126284] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:48.033 [DEBUG] [Thread-126284] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:48.033 [DEBUG] [Thread-126284] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:48.042 [DEBUG] [Thread-126284] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:48.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:48.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-28T13:50:48.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-28T13:50:48.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:48.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:48.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:48.077 [DEBUG] [Thread-126284] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:51.308 [DEBUG] [Thread-126286 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:58.002 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:58.003 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:50:58.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:50:58.079 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:50:58.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-28T13:50:58.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 50, 55), 18.15, 29.61, 0.0, 24.05, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:50:58.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:50:55
2025-09-28T13:50:58.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:50:58.949 [DEBUG] [Thread-126287] [transport.py] [_log()] starting thread (client mode): 0x2e375090
2025-09-28T13:50:58.949 [DEBUG] [Thread-126287] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:58.970 [DEBUG] [Thread-126287] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:50:58.970 [INFO] [Thread-126287] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:50:58.973 [DEBUG] [Thread-126287] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:58.973 [DEBUG] [Thread-126287] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] Compression: none
2025-09-28T13:50:58.974 [DEBUG] [Thread-126287] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:58.988 [DEBUG] [Thread-126287] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:58.989 [DEBUG] [Thread-126287] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:58.989 [DEBUG] [Thread-126287] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:50:58.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:50:58.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:58.990 [DEBUG] [Thread-126287] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:58.990 [DEBUG] [Thread-126287] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:58.990 [DEBUG] [Thread-126287] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:58.990 [DEBUG] [Thread-126287] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:50:58.990 [DEBUG] [Thread-126287] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:59.004 [INFO] [Thread-126287] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:59.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:50:59.602 [DEBUG] [Thread-126287] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:50:59.603 [DEBUG] [Thread-126287] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:50:59.603 [DEBUG] [Thread-126287] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:50:59.643 [DEBUG] [Thread-126287] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:50:59.644 [DEBUG] [Thread-126287] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:50:59.646 [DEBUG] [Thread-126287] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:50:59.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:50:59.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:50:59.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:50:59.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:50:59.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:50:59.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:50:59.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:50:59.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493486 -999.00  +18.90  18.89     35   +3.30 1 1 1 1 1   888    0 14.82 -26.58 ----- 22.9 18.9 266.4 25.7 25.1 -25.3 24.1 -24.7 24.2 -25.6 25.4 -24.7
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493486
2025-09-28T13:50:59.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:50:59.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:50:59.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:50:59.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:50:59.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:50:59.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:50:55', tmtdew=18.15, humidity=29.61, cloud=0.0, wind=24.05, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:50:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:50:59.666 [DEBUG] [Thread-126287] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:50:59.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-28T13:50:59.760 [DEBUG] [Thread-126290] [transport.py] [_log()] starting thread (client mode): 0x2e375240
2025-09-28T13:50:59.760 [DEBUG] [Thread-126290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:50:59.775 [DEBUG] [Thread-126290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:50:59.775 [INFO] [Thread-126290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:50:59.783 [DEBUG] [Thread-126290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:59.784 [DEBUG] [Thread-126290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] client lang: <none>
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] server lang: <none>
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] kex follows: False
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] Compression: none
2025-09-28T13:50:59.785 [DEBUG] [Thread-126290] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:50:59.839 [DEBUG] [Thread-126290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:50:59.840 [DEBUG] [Thread-126290] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:50:59.840 [DEBUG] [Thread-126290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:50:59.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:50:59.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:50:59.896 [DEBUG] [Thread-126290] [transport.py] [_log()] userauth is OK
2025-09-28T13:50:59.896 [DEBUG] [Thread-126290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:50:59.897 [DEBUG] [Thread-126290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:50:59.897 [DEBUG] [Thread-126290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:50:59.897 [DEBUG] [Thread-126290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:50:59.916 [INFO] [Thread-126290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:50:59.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:50:59.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:00.915 [DEBUG] [Thread-126290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:00.915 [DEBUG] [Thread-126290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:00.963 [DEBUG] [Thread-126290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:00.964 [DEBUG] [Thread-126290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:00.973 [DEBUG] [Thread-126290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:00.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:00.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-28T13:51:00.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T13:51:00.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:00.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:01.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:01.007 [DEBUG] [Thread-126290] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:06.336 [DEBUG] [Thread-126292 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:11.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:51:11.010 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:51:11.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-28T13:51:11.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 50, 55), 18.15, 29.61, 0.0, 24.05, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:51:11.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:50:55
2025-09-28T13:51:11.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:51:11.865 [DEBUG] [Thread-126293] [transport.py] [_log()] starting thread (client mode): 0x2e374460
2025-09-28T13:51:11.865 [DEBUG] [Thread-126293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:11.884 [DEBUG] [Thread-126293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:51:11.884 [INFO] [Thread-126293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:11.887 [DEBUG] [Thread-126293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:11.888 [DEBUG] [Thread-126293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:11.888 [DEBUG] [Thread-126293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:11.888 [DEBUG] [Thread-126293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:11.888 [DEBUG] [Thread-126293] [transport.py] [_log()] Compression: none
2025-09-28T13:51:11.888 [DEBUG] [Thread-126293] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:11.907 [DEBUG] [Thread-126293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:11.907 [DEBUG] [Thread-126293] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:11.908 [DEBUG] [Thread-126293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:51:11.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:51:11.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:11.909 [DEBUG] [Thread-126293] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:11.910 [DEBUG] [Thread-126293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:11.910 [DEBUG] [Thread-126293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:11.910 [DEBUG] [Thread-126293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:51:11.910 [DEBUG] [Thread-126293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:11.927 [INFO] [Thread-126293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:11.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:12.759 [DEBUG] [Thread-126293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:12.759 [DEBUG] [Thread-126293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:12.760 [DEBUG] [Thread-126293] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:51:12.800 [DEBUG] [Thread-126293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:12.801 [DEBUG] [Thread-126293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:12.803 [DEBUG] [Thread-126293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:12.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:12.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:51:12.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:51:12.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:51:12.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:12.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:51:12.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:12.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:51:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493486 -999.00  +18.90  18.89     35   +3.30 1 1 1 1 1   888    0 14.82 -26.58 ----- 22.9 18.9 266.4 25.7 25.1 -25.3 24.1 -24.7 24.2 -25.6 25.4 -24.7
2025-09-28T13:51:12.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:51:12.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:51:12.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493486
2025-09-28T13:51:12.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:51:12.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:51:12.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:51:12.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:51:12.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:51:12.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:50:55', tmtdew=18.15, humidity=29.61, cloud=0.0, wind=24.05, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:50:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:51:12.830 [DEBUG] [Thread-126293] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:12.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-28T13:51:12.926 [DEBUG] [Thread-126296] [transport.py] [_log()] starting thread (client mode): 0x28705d50
2025-09-28T13:51:12.927 [DEBUG] [Thread-126296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:12.946 [DEBUG] [Thread-126296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:51:12.946 [INFO] [Thread-126296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:51:12.953 [DEBUG] [Thread-126296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:12.954 [DEBUG] [Thread-126296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:12.955 [DEBUG] [Thread-126296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:12.956 [DEBUG] [Thread-126296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:12.956 [DEBUG] [Thread-126296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:12.956 [DEBUG] [Thread-126296] [transport.py] [_log()] Compression: none
2025-09-28T13:51:12.956 [DEBUG] [Thread-126296] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:13.013 [DEBUG] [Thread-126296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:13.014 [DEBUG] [Thread-126296] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:13.015 [DEBUG] [Thread-126296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:51:13.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:51:13.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:13.068 [DEBUG] [Thread-126296] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:13.068 [DEBUG] [Thread-126296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:13.068 [DEBUG] [Thread-126296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:13.069 [DEBUG] [Thread-126296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:51:13.069 [DEBUG] [Thread-126296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:13.087 [INFO] [Thread-126296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:13.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-28T13:51:13.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:13.353 [DEBUG] [Thread-126298 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:14.034 [DEBUG] [Thread-126296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:14.034 [DEBUG] [Thread-126296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:14.084 [DEBUG] [Thread-126296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:14.084 [DEBUG] [Thread-126296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:14.096 [DEBUG] [Thread-126296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:14.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:14.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-28T13:51:14.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-28T13:51:14.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:14.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:14.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:14.141 [DEBUG] [Thread-126296] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:21.392 [DEBUG] [Thread-126299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:51:24.139 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:51:24.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-28T13:51:24.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 50, 55), 18.15, 29.61, 0.0, 24.05, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:51:24.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:50:55
2025-09-28T13:51:24.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:51:24.976 [DEBUG] [Thread-126300] [transport.py] [_log()] starting thread (client mode): 0x2e377430
2025-09-28T13:51:24.976 [DEBUG] [Thread-126300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:24.991 [DEBUG] [Thread-126300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:51:24.991 [INFO] [Thread-126300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] Compression: none
2025-09-28T13:51:24.995 [DEBUG] [Thread-126300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:25.014 [DEBUG] [Thread-126300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:25.014 [DEBUG] [Thread-126300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:25.015 [DEBUG] [Thread-126300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:51:25.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:51:25.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:25.017 [DEBUG] [Thread-126300] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:25.017 [DEBUG] [Thread-126300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:25.017 [DEBUG] [Thread-126300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:25.017 [DEBUG] [Thread-126300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:51:25.017 [DEBUG] [Thread-126300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:25.035 [INFO] [Thread-126300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:25.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:25.762 [DEBUG] [Thread-126300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:25.762 [DEBUG] [Thread-126300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:25.763 [DEBUG] [Thread-126300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:51:25.803 [DEBUG] [Thread-126300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:25.804 [DEBUG] [Thread-126300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:25.807 [DEBUG] [Thread-126300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:25.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:25.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:51:25.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:51:25.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:51:25.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:25.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:51:25.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:25.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:25.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:51:25.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493486 -999.00  +18.90  18.89     35   +3.30 1 1 1 1 1   888    0 14.82 -26.58 ----- 22.9 18.9 266.4 25.7 25.1 -25.3 24.1 -24.7 24.2 -25.6 25.4 -24.7
2025-09-28T13:51:25.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:51:25.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:51:25.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493486
2025-09-28T13:51:25.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:51:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:51:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:51:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:51:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:51:25.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:50:55', tmtdew=18.15, humidity=29.61, cloud=0.0, wind=24.05, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:50:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:51:25.834 [DEBUG] [Thread-126300] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:25.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-28T13:51:25.919 [DEBUG] [Thread-126303] [transport.py] [_log()] starting thread (client mode): 0x2b96d8a0
2025-09-28T13:51:25.919 [DEBUG] [Thread-126303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:25.934 [DEBUG] [Thread-126303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:51:25.934 [INFO] [Thread-126303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:51:25.942 [DEBUG] [Thread-126303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:25.942 [DEBUG] [Thread-126303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] Compression: none
2025-09-28T13:51:25.943 [DEBUG] [Thread-126303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:26.001 [DEBUG] [Thread-126303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:26.001 [DEBUG] [Thread-126303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:26.002 [DEBUG] [Thread-126303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:51:26.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:51:26.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:26.056 [DEBUG] [Thread-126303] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:26.057 [DEBUG] [Thread-126303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:26.057 [DEBUG] [Thread-126303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:26.057 [DEBUG] [Thread-126303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:51:26.057 [DEBUG] [Thread-126303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:26.075 [INFO] [Thread-126303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:26.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:51:26.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:27.146 [DEBUG] [Thread-126303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:27.146 [DEBUG] [Thread-126303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:27.199 [DEBUG] [Thread-126303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:27.199 [DEBUG] [Thread-126303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:27.207 [DEBUG] [Thread-126303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:27.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:27.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-28T13:51:27.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-28T13:51:27.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:27.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:27.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:27.239 [DEBUG] [Thread-126303] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:36.423 [DEBUG] [Thread-126305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:37.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:51:37.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:51:37.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:51:37.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 51, 28), 18.22, 29.47, 0.0, 22.74, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:51:37.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:51:28
2025-09-28T13:51:37.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:51:38.069 [DEBUG] [Thread-126306] [transport.py] [_log()] starting thread (client mode): 0x28706e00
2025-09-28T13:51:38.069 [DEBUG] [Thread-126306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:38.088 [DEBUG] [Thread-126306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:51:38.089 [INFO] [Thread-126306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] Compression: none
2025-09-28T13:51:38.092 [DEBUG] [Thread-126306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:38.109 [DEBUG] [Thread-126306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:38.109 [DEBUG] [Thread-126306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:38.110 [DEBUG] [Thread-126306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:51:38.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:51:38.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:38.112 [DEBUG] [Thread-126306] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:38.112 [DEBUG] [Thread-126306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:38.112 [DEBUG] [Thread-126306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:38.112 [DEBUG] [Thread-126306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:51:38.112 [DEBUG] [Thread-126306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:38.134 [INFO] [Thread-126306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:38.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:38.749 [DEBUG] [Thread-126306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:38.749 [DEBUG] [Thread-126306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:38.749 [DEBUG] [Thread-126306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:51:38.790 [DEBUG] [Thread-126306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:38.790 [DEBUG] [Thread-126306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:38.793 [DEBUG] [Thread-126306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:38.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:51:38.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:51:38.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:51:38.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:38.814 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:51:38.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:38.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493833 -999.00  +18.50  20.05     36   +3.10 1 1 1 1 1   888    0 15.02 -28.04 ----- 20.9 20.1 267.2 23.3 25.0 -26.7 24.1 -25.5 24.2 -27.8 25.2 -26.3
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493833
2025-09-28T13:51:38.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:51:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:51:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:51:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:51:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:51:38.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:51:28', tmtdew=18.22, humidity=29.47, cloud=0.0, wind=22.74, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:51:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:51:38.816 [DEBUG] [Thread-126306] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:38.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-28T13:51:38.926 [DEBUG] [Thread-126309] [transport.py] [_log()] starting thread (client mode): 0x287048e0
2025-09-28T13:51:38.926 [DEBUG] [Thread-126309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:38.941 [DEBUG] [Thread-126309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:51:38.941 [INFO] [Thread-126309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:38.952 [DEBUG] [Thread-126309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:38.953 [DEBUG] [Thread-126309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:38.954 [DEBUG] [Thread-126309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:38.954 [DEBUG] [Thread-126309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:38.954 [DEBUG] [Thread-126309] [transport.py] [_log()] Compression: none
2025-09-28T13:51:38.954 [DEBUG] [Thread-126309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:39.008 [DEBUG] [Thread-126309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:39.008 [DEBUG] [Thread-126309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:39.009 [DEBUG] [Thread-126309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:51:39.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:51:39.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:39.066 [DEBUG] [Thread-126309] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:39.067 [DEBUG] [Thread-126309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:39.067 [DEBUG] [Thread-126309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:39.067 [DEBUG] [Thread-126309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:51:39.067 [DEBUG] [Thread-126309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:39.086 [INFO] [Thread-126309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:39.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-28T13:51:39.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:40.057 [DEBUG] [Thread-126309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:40.057 [DEBUG] [Thread-126309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:40.105 [DEBUG] [Thread-126309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:40.106 [DEBUG] [Thread-126309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:40.115 [DEBUG] [Thread-126309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:40.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:40.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-28T13:51:40.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-28T13:51:40.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:40.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:40.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:40.150 [DEBUG] [Thread-126309] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:50.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:51:50.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:51:50.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-28T13:51:50.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 51, 28), 18.22, 29.47, 0.0, 22.74, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:51:50.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:51:28
2025-09-28T13:51:50.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:51:50.989 [DEBUG] [Thread-126311] [transport.py] [_log()] starting thread (client mode): 0x2b96ebf0
2025-09-28T13:51:50.989 [DEBUG] [Thread-126311] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:51.009 [DEBUG] [Thread-126311] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:51:51.009 [INFO] [Thread-126311] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:51.012 [DEBUG] [Thread-126311] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:51.013 [DEBUG] [Thread-126311] [transport.py] [_log()] Compression: none
2025-09-28T13:51:51.013 [DEBUG] [Thread-126311] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:51.029 [DEBUG] [Thread-126311] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:51.029 [DEBUG] [Thread-126311] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:51.029 [DEBUG] [Thread-126311] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:51:51.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:51:51.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:51.031 [DEBUG] [Thread-126311] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:51.032 [DEBUG] [Thread-126311] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:51.032 [DEBUG] [Thread-126311] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:51.032 [DEBUG] [Thread-126311] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:51:51.032 [DEBUG] [Thread-126311] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:51.068 [INFO] [Thread-126311] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:51.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:51.454 [DEBUG] [Thread-126313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:51.879 [DEBUG] [Thread-126311] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:51.879 [DEBUG] [Thread-126311] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:51.880 [DEBUG] [Thread-126311] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:51:51.920 [DEBUG] [Thread-126311] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:51.920 [DEBUG] [Thread-126311] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:51.924 [DEBUG] [Thread-126311] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:51.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:51.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:51:51.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:51:51.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:51:51.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:51.943 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:51:51.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:51.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.493833 -999.00  +18.50  20.05     36   +3.10 1 1 1 1 1   888    0 15.02 -28.04 ----- 20.9 20.1 267.2 23.3 25.0 -26.7 24.1 -25.5 24.2 -27.8 25.2 -26.3
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.493833
2025-09-28T13:51:51.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:51:51.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:51:51.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:51:51.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:51:51.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:51:51.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:51:28', tmtdew=18.22, humidity=29.47, cloud=0.0, wind=22.74, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:51:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:51:51.945 [DEBUG] [Thread-126311] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:52.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-28T13:51:52.039 [DEBUG] [Thread-126315] [transport.py] [_log()] starting thread (client mode): 0x287051e0
2025-09-28T13:51:52.039 [DEBUG] [Thread-126315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:51:52.056 [DEBUG] [Thread-126315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:51:52.056 [INFO] [Thread-126315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:51:52.064 [DEBUG] [Thread-126315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:51:52.064 [DEBUG] [Thread-126315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:51:52.064 [DEBUG] [Thread-126315] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:51:52.064 [DEBUG] [Thread-126315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:52.064 [DEBUG] [Thread-126315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] client lang: <none>
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] server lang: <none>
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] kex follows: False
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:51:52.065 [DEBUG] [Thread-126315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:51:52.066 [DEBUG] [Thread-126315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:51:52.066 [DEBUG] [Thread-126315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:51:52.066 [DEBUG] [Thread-126315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:51:52.066 [DEBUG] [Thread-126315] [transport.py] [_log()] Compression: none
2025-09-28T13:51:52.066 [DEBUG] [Thread-126315] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:51:52.128 [DEBUG] [Thread-126315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:51:52.129 [DEBUG] [Thread-126315] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:51:52.130 [DEBUG] [Thread-126315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:51:52.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:51:52.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:51:52.184 [DEBUG] [Thread-126315] [transport.py] [_log()] userauth is OK
2025-09-28T13:51:52.184 [DEBUG] [Thread-126315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:51:52.185 [DEBUG] [Thread-126315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:51:52.185 [DEBUG] [Thread-126315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:51:52.185 [DEBUG] [Thread-126315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:51:52.203 [INFO] [Thread-126315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:51:52.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-28T13:51:52.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:51:53.180 [DEBUG] [Thread-126315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:51:53.180 [DEBUG] [Thread-126315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:51:53.228 [DEBUG] [Thread-126315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:51:53.229 [DEBUG] [Thread-126315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:51:53.238 [DEBUG] [Thread-126315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:51:53.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:51:53.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-28T13:51:53.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-28T13:51:53.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:51:53.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:51:53.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:51:53.273 [DEBUG] [Thread-126315] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:51:58.142 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:51:58.143 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:03.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:52:03.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:52:03.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-28T13:52:03.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 52), 18.34, 29.09, 0.0, 21.93, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:52:03.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:52:00
2025-09-28T13:52:03.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:52:04.105 [DEBUG] [Thread-126317] [transport.py] [_log()] starting thread (client mode): 0x2b96e7a0
2025-09-28T13:52:04.105 [DEBUG] [Thread-126317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:52:04.125 [DEBUG] [Thread-126317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:52:04.125 [INFO] [Thread-126317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] client lang: <none>
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] server lang: <none>
2025-09-28T13:52:04.128 [DEBUG] [Thread-126317] [transport.py] [_log()] kex follows: False
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] Compression: none
2025-09-28T13:52:04.129 [DEBUG] [Thread-126317] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:52:04.145 [DEBUG] [Thread-126317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:52:04.146 [DEBUG] [Thread-126317] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:52:04.146 [DEBUG] [Thread-126317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:52:04.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:52:04.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:52:04.148 [DEBUG] [Thread-126317] [transport.py] [_log()] userauth is OK
2025-09-28T13:52:04.148 [DEBUG] [Thread-126317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:52:04.148 [DEBUG] [Thread-126317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:52:04.148 [DEBUG] [Thread-126317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:52:04.149 [DEBUG] [Thread-126317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:52:04.172 [INFO] [Thread-126317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:52:04.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:52:04.748 [DEBUG] [Thread-126317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:52:04.748 [DEBUG] [Thread-126317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:52:04.748 [DEBUG] [Thread-126317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:52:04.789 [DEBUG] [Thread-126317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:52:04.789 [DEBUG] [Thread-126317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:52:04.793 [DEBUG] [Thread-126317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:52:04.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:52:04.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:52:04.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:52:04.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:52:04.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:52:04.816 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:52:04.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:52:04.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:52:04.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:52:04.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.494181 -999.00  +18.50  13.13     36   +3.20 1 1 1 1 1   888    0 14.82 -34.31 ----- 21.5 13.1 262.0 27.1 24.9 -26.7 24.1 -25.3 24.2 -24.4 25.2 -24.6
2025-09-28T13:52:04.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:52:04.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:52:04.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.494181
2025-09-28T13:52:04.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:52:04.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:52:04.818 [DEBUG] [Thread-126317] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:52:04.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:52:04.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:52:04.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:52:04.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:52:00', tmtdew=18.34, humidity=29.09, cloud=0.0, wind=21.93, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:51:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:52:04.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-28T13:52:06.497 [DEBUG] [Thread-126320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:13.404 [DEBUG] [Thread-126321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:21.549 [DEBUG] [Thread-126322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:36.585 [DEBUG] [Thread-126323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:51.611 [DEBUG] [Thread-126324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:58.285 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:52:58.286 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:06.638 [DEBUG] [Thread-126325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:13.455 [DEBUG] [Thread-126326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:21.664 [DEBUG] [Thread-126327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:36.692 [DEBUG] [Thread-126328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:51.722 [DEBUG] [Thread-126329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:58.428 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:53:58.429 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:06.751 [DEBUG] [Thread-126330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:13.508 [DEBUG] [Thread-126331 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:18.683 [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-28T13:54:21.784 [DEBUG] [Thread-126332 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:54:28.684 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:54:28.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-28T13:54:29.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 54, 9), 18.2, 29.61, 0.0, 21.28, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:54:29.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:54:09
2025-09-28T13:54:29.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:54:29.552 [DEBUG] [Thread-126333] [transport.py] [_log()] starting thread (client mode): 0x2b96f3a0
2025-09-28T13:54:29.552 [DEBUG] [Thread-126333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:29.562 [DEBUG] [Thread-126333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:54:29.562 [INFO] [Thread-126333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:29.563 [DEBUG] [Thread-126333] [transport.py] [_log()] Compression: none
2025-09-28T13:54:29.564 [DEBUG] [Thread-126333] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:29.572 [DEBUG] [Thread-126333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:29.572 [DEBUG] [Thread-126333] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:29.572 [DEBUG] [Thread-126333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:54:29.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:54:29.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:29.573 [DEBUG] [Thread-126333] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:29.573 [DEBUG] [Thread-126333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:29.573 [DEBUG] [Thread-126333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:29.573 [DEBUG] [Thread-126333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:54:29.573 [DEBUG] [Thread-126333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:29.585 [INFO] [Thread-126333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54:29.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:30.840 [DEBUG] [Thread-126333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:30.841 [DEBUG] [Thread-126333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:30.841 [DEBUG] [Thread-126333] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:54:30.882 [DEBUG] [Thread-126333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:30.882 [DEBUG] [Thread-126333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:30.885 [DEBUG] [Thread-126333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:30.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:30.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:54:30.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:54:30.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:54:30.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:30.908 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:54:30.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:30.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:54:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.495917 -999.00  +19.00  24.19     35   +3.10 1 1 1 1 1   888    0 14.62 -43.10 ----- 17.4 24.2 256.6 32.0 25.1 -26.8 24.1 -25.1 24.5 -24.1 25.4 -26.5
2025-09-28T13:54:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:54:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:54:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.495917
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:54:30.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:54:09', tmtdew=18.2, humidity=29.61, cloud=0.0, wind=21.28, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:54:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:54:30.911 [DEBUG] [Thread-126333] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:30.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-28T13:54:31.008 [DEBUG] [Thread-126336] [transport.py] [_log()] starting thread (client mode): 0x2b96ecb0
2025-09-28T13:54:31.008 [DEBUG] [Thread-126336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:31.023 [DEBUG] [Thread-126336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:54:31.023 [INFO] [Thread-126336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:31.031 [DEBUG] [Thread-126336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:31.032 [DEBUG] [Thread-126336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:31.032 [DEBUG] [Thread-126336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:31.032 [DEBUG] [Thread-126336] [transport.py] [_log()] Compression: none
2025-09-28T13:54:31.032 [DEBUG] [Thread-126336] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:31.088 [DEBUG] [Thread-126336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:31.088 [DEBUG] [Thread-126336] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:31.089 [DEBUG] [Thread-126336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:54:31.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:54:31.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:31.144 [DEBUG] [Thread-126336] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:31.144 [DEBUG] [Thread-126336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:31.144 [DEBUG] [Thread-126336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:31.144 [DEBUG] [Thread-126336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:54:31.145 [DEBUG] [Thread-126336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:31.163 [INFO] [Thread-126336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54:31.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:54:31.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:32.119 [DEBUG] [Thread-126336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:32.119 [DEBUG] [Thread-126336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:32.167 [DEBUG] [Thread-126336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:32.167 [DEBUG] [Thread-126336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:32.176 [DEBUG] [Thread-126336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:32.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:32.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-28T13:54:32.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-28T13:54:32.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:32.204 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:32.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:32.212 [DEBUG] [Thread-126336] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:36.813 [DEBUG] [Thread-126338 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:42.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:54:42.215 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:54:42.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-28T13:54:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 54, 9), 18.2, 29.61, 0.0, 21.28, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:54:42.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:54:09
2025-09-28T13:54:42.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:54:43.136 [DEBUG] [Thread-126339] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-28T13:54:43.136 [DEBUG] [Thread-126339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:43.156 [DEBUG] [Thread-126339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:54:43.156 [INFO] [Thread-126339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:43.159 [DEBUG] [Thread-126339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] Compression: none
2025-09-28T13:54:43.160 [DEBUG] [Thread-126339] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:43.176 [DEBUG] [Thread-126339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:43.176 [DEBUG] [Thread-126339] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:43.176 [DEBUG] [Thread-126339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:54:43.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:54:43.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:43.177 [DEBUG] [Thread-126339] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:43.177 [DEBUG] [Thread-126339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:43.177 [DEBUG] [Thread-126339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:43.177 [DEBUG] [Thread-126339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:54:43.177 [DEBUG] [Thread-126339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:43.188 [INFO] [Thread-126339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54:43.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:43.902 [DEBUG] [Thread-126339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:43.902 [DEBUG] [Thread-126339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:43.902 [DEBUG] [Thread-126339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:54:43.943 [DEBUG] [Thread-126339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:43.944 [DEBUG] [Thread-126339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:43.946 [DEBUG] [Thread-126339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:43.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:43.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:54:43.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:54:43.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:54:43.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:43.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:54:43.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:43.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:54:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.495917 -999.00  +19.00  24.19     35   +3.10 1 1 1 1 1   888    0 14.62 -43.10 ----- 17.4 24.2 256.6 32.0 25.1 -26.8 24.1 -25.1 24.5 -24.1 25.4 -26.5
2025-09-28T13:54:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:54:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:54:43.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.495917
2025-09-28T13:54:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:54:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:54:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:54:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:54:43.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:54:43.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:54:09', tmtdew=18.2, humidity=29.61, cloud=0.0, wind=21.28, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:54:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:54:43.973 [DEBUG] [Thread-126339] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:44.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:54:44.060 [DEBUG] [Thread-126342] [transport.py] [_log()] starting thread (client mode): 0x2b96ffd0
2025-09-28T13:54:44.060 [DEBUG] [Thread-126342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:44.075 [DEBUG] [Thread-126342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:54:44.075 [INFO] [Thread-126342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:54:44.083 [DEBUG] [Thread-126342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:44.083 [DEBUG] [Thread-126342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:54:44.083 [DEBUG] [Thread-126342] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] Compression: none
2025-09-28T13:54:44.084 [DEBUG] [Thread-126342] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:44.140 [DEBUG] [Thread-126342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:44.140 [DEBUG] [Thread-126342] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:44.140 [DEBUG] [Thread-126342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:54:44.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:54:44.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:44.196 [DEBUG] [Thread-126342] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:44.197 [DEBUG] [Thread-126342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:44.197 [DEBUG] [Thread-126342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:44.197 [DEBUG] [Thread-126342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:54:44.197 [DEBUG] [Thread-126342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:44.215 [INFO] [Thread-126342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54:44.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-28T13:54:44.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:45.191 [DEBUG] [Thread-126342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:45.191 [DEBUG] [Thread-126342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:45.240 [DEBUG] [Thread-126342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:45.241 [DEBUG] [Thread-126342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:45.249 [DEBUG] [Thread-126342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:45.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:45.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-28T13:54:45.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-28T13:54:45.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:45.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:45.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:45.284 [DEBUG] [Thread-126342] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:51.858 [DEBUG] [Thread-126344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:55.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:54:55.286 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:54:55.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-28T13:54:55.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 54, 41), 18.18, 29.51, 0.0, 22.34, 18.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:54:55.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:54:41
2025-09-28T13:54:56.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:54:56.151 [DEBUG] [Thread-126345] [transport.py] [_log()] starting thread (client mode): 0x2b96c700
2025-09-28T13:54:56.151 [DEBUG] [Thread-126345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:56.172 [DEBUG] [Thread-126345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:54:56.172 [INFO] [Thread-126345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:56.173 [DEBUG] [Thread-126345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:56.174 [DEBUG] [Thread-126345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:56.175 [DEBUG] [Thread-126345] [transport.py] [_log()] Compression: none
2025-09-28T13:54:56.175 [DEBUG] [Thread-126345] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:56.192 [DEBUG] [Thread-126345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:56.192 [DEBUG] [Thread-126345] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:56.193 [DEBUG] [Thread-126345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:54:56.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:54:56.194 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:56.195 [DEBUG] [Thread-126345] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:56.195 [DEBUG] [Thread-126345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:56.195 [DEBUG] [Thread-126345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:56.196 [DEBUG] [Thread-126345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:54:56.196 [DEBUG] [Thread-126345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:56.209 [INFO] [Thread-126345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54:56.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:56.808 [DEBUG] [Thread-126345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:56.808 [DEBUG] [Thread-126345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:56.808 [DEBUG] [Thread-126345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:54:56.849 [DEBUG] [Thread-126345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:56.849 [DEBUG] [Thread-126345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:56.853 [DEBUG] [Thread-126345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:56.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:56.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:54:56.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:54:56.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:54:56.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:56.871 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:54:56.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496264 -999.00  +19.20  12.09     35   +3.40 1 1 1 1 1   888    0 14.65 -40.36 ----- 9.2 12.1 222.8 18.0 25.1 -25.4 24.1 -24.9 24.5 -24.0 25.6 -25.0
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:54:56.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496264
2025-09-28T13:54:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:54:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:54:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:54:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:54:56.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:54:56.874 [DEBUG] [Thread-126345] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:56.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:54:41', tmtdew=18.18, humidity=29.51, cloud=0.0, wind=22.34, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:54:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:54: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-28T13:54:56.967 [DEBUG] [Thread-126348] [transport.py] [_log()] starting thread (client mode): 0x2b96e290
2025-09-28T13:54:56.967 [DEBUG] [Thread-126348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:54:56.982 [DEBUG] [Thread-126348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:54:56.982 [INFO] [Thread-126348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:54:56.990 [DEBUG] [Thread-126348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:54:56.990 [DEBUG] [Thread-126348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:54:56.990 [DEBUG] [Thread-126348] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] client lang: <none>
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] server lang: <none>
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] kex follows: False
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] Compression: none
2025-09-28T13:54:56.991 [DEBUG] [Thread-126348] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:54:57.047 [DEBUG] [Thread-126348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:54:57.047 [DEBUG] [Thread-126348] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:54:57.048 [DEBUG] [Thread-126348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:54:57.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:54:57.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:54:57.104 [DEBUG] [Thread-126348] [transport.py] [_log()] userauth is OK
2025-09-28T13:54:57.104 [DEBUG] [Thread-126348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:54:57.104 [DEBUG] [Thread-126348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:54:57.104 [DEBUG] [Thread-126348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:54:57.104 [DEBUG] [Thread-126348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:54:57.126 [INFO] [Thread-126348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:54: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-28T13:54:57.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:54:58.062 [DEBUG] [Thread-126348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:54:58.062 [DEBUG] [Thread-126348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:54:58.111 [DEBUG] [Thread-126348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:54:58.111 [DEBUG] [Thread-126348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:54:58.119 [DEBUG] [Thread-126348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:54:58.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:54:58.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-28T13:54:58.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-28T13:54:58.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:54:58.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:54:58.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:54:58.151 [DEBUG] [Thread-126348] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:54:58.570 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:54:58.572 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:06.884 [DEBUG] [Thread-126350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:08.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:55:08.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:55:08.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-28T13:55:08.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 54, 41), 18.18, 29.51, 0.0, 22.34, 18.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:55:08.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:54:41
2025-09-28T13:55:08.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:55:09.015 [DEBUG] [Thread-126351] [transport.py] [_log()] starting thread (client mode): 0x2b96fca0
2025-09-28T13:55:09.015 [DEBUG] [Thread-126351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:09.036 [DEBUG] [Thread-126351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:55:09.036 [INFO] [Thread-126351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:55:09.037 [DEBUG] [Thread-126351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:09.037 [DEBUG] [Thread-126351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:55:09.037 [DEBUG] [Thread-126351] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:09.037 [DEBUG] [Thread-126351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] Compression: none
2025-09-28T13:55:09.038 [DEBUG] [Thread-126351] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:09.051 [DEBUG] [Thread-126351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:09.051 [DEBUG] [Thread-126351] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:09.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:55:09.052 [DEBUG] [Thread-126351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:55:09.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:09.054 [DEBUG] [Thread-126351] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:09.054 [DEBUG] [Thread-126351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:09.054 [DEBUG] [Thread-126351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:09.054 [DEBUG] [Thread-126351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:55:09.054 [DEBUG] [Thread-126351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:09.072 [INFO] [Thread-126351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:09.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:13.553 [DEBUG] [Thread-126353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:17.625 [DEBUG] [Thread-126351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:17.625 [DEBUG] [Thread-126351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:17.626 [DEBUG] [Thread-126351] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:55:17.666 [DEBUG] [Thread-126351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:17.666 [DEBUG] [Thread-126351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:17.668 [DEBUG] [Thread-126351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:17.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:17.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:55:17.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:55:17.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:55:17.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:17.777 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:55:17.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:17.777 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496264 -999.00  +19.20  12.09     35   +3.40 1 1 1 1 1   888    0 14.65 -40.36 ----- 9.2 12.1 222.8 18.0 25.1 -25.4 24.1 -24.9 24.5 -24.0 25.6 -25.0
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496264
2025-09-28T13:55:17.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:55:17.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:55:17.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:55:17.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:55:17.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:55:17.779 [DEBUG] [Thread-126351] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:17.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:54:41', tmtdew=18.18, humidity=29.51, cloud=0.0, wind=22.34, temperature=18.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:54:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:55:17.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-28T13:55:17.876 [DEBUG] [Thread-126355] [transport.py] [_log()] starting thread (client mode): 0x30ddf3d0
2025-09-28T13:55:17.876 [DEBUG] [Thread-126355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:17.891 [DEBUG] [Thread-126355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:55:17.892 [INFO] [Thread-126355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:55:17.899 [DEBUG] [Thread-126355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] Compression: none
2025-09-28T13:55:17.900 [DEBUG] [Thread-126355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:17.956 [DEBUG] [Thread-126355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:17.956 [DEBUG] [Thread-126355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:17.956 [DEBUG] [Thread-126355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:55:17.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:55:17.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:18.012 [DEBUG] [Thread-126355] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:18.012 [DEBUG] [Thread-126355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:18.012 [DEBUG] [Thread-126355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:18.012 [DEBUG] [Thread-126355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:55:18.012 [DEBUG] [Thread-126355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:18.032 [INFO] [Thread-126355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:18.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-28T13:55:18.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:18.959 [DEBUG] [Thread-126355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:18.960 [DEBUG] [Thread-126355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:19.007 [DEBUG] [Thread-126355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:19.007 [DEBUG] [Thread-126355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:19.016 [DEBUG] [Thread-126355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:19.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:19.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-28T13:55:19.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-28T13:55:19.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:19.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:19.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:19.051 [DEBUG] [Thread-126355] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:21.931 [DEBUG] [Thread-126357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:29.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:55:29.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:55:29.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:55:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 55, 13), 18.35, 29.23, 0.0, 24.03, 19.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:55:29.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:55:13
2025-09-28T13:55:29.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:55:29.919 [DEBUG] [Thread-126358] [transport.py] [_log()] starting thread (client mode): 0x2e377e50
2025-09-28T13:55:29.920 [DEBUG] [Thread-126358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:29.940 [DEBUG] [Thread-126358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:55:29.941 [INFO] [Thread-126358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:55:29.942 [DEBUG] [Thread-126358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:29.942 [DEBUG] [Thread-126358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] Compression: none
2025-09-28T13:55:29.943 [DEBUG] [Thread-126358] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:29.955 [DEBUG] [Thread-126358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:29.955 [DEBUG] [Thread-126358] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:29.956 [DEBUG] [Thread-126358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:55:29.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:55:29.957 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:29.958 [DEBUG] [Thread-126358] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:29.958 [DEBUG] [Thread-126358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:29.958 [DEBUG] [Thread-126358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:29.958 [DEBUG] [Thread-126358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:55:29.958 [DEBUG] [Thread-126358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:29.978 [INFO] [Thread-126358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:29.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:30.586 [DEBUG] [Thread-126358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:30.586 [DEBUG] [Thread-126358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:30.586 [DEBUG] [Thread-126358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:55:30.627 [DEBUG] [Thread-126358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:30.628 [DEBUG] [Thread-126358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:30.631 [DEBUG] [Thread-126358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:30.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:30.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:55:30.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:55:30.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:55:30.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:30.646 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:55:30.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:30.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:30.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:55:30.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496611 -999.00  +19.50  22.57     34   +3.30 1 1 1 1 1   888    0 14.68 -34.95 ----- 18.2 22.6 217.6 31.7 25.1 -26.0 24.1 -25.4 24.5 -24.7 25.7 -25.7
2025-09-28T13:55:30.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:55:30.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:55:30.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496611
2025-09-28T13:55:30.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:55:30.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:55:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:55:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:55:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:55:30.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:55:13', tmtdew=18.35, humidity=29.23, cloud=0.0, wind=24.03, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:55:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:55:30.649 [DEBUG] [Thread-126358] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:30.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-28T13:55:30.743 [DEBUG] [Thread-126361] [transport.py] [_log()] starting thread (client mode): 0x2e376d40
2025-09-28T13:55:30.743 [DEBUG] [Thread-126361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:30.758 [DEBUG] [Thread-126361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:55:30.758 [INFO] [Thread-126361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:55:30.765 [DEBUG] [Thread-126361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] Compression: none
2025-09-28T13:55:30.766 [DEBUG] [Thread-126361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:30.829 [DEBUG] [Thread-126361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:30.829 [DEBUG] [Thread-126361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:30.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:55:30.830 [DEBUG] [Thread-126361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:55:30.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:30.884 [DEBUG] [Thread-126361] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:30.884 [DEBUG] [Thread-126361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:30.884 [DEBUG] [Thread-126361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:30.884 [DEBUG] [Thread-126361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:55:30.884 [DEBUG] [Thread-126361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:30.904 [INFO] [Thread-126361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:30.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-28T13:55:30.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:31.896 [DEBUG] [Thread-126361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:31.896 [DEBUG] [Thread-126361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:31.944 [DEBUG] [Thread-126361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:31.945 [DEBUG] [Thread-126361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:31.954 [DEBUG] [Thread-126361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:31.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:31.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')
2025-09-28T13:55:31.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-28T13:55:31.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:31.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:31.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:31.988 [DEBUG] [Thread-126361] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:36.959 [DEBUG] [Thread-126363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:41.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:55:41.991 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:55:41.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-28T13:55:42.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 55, 13), 18.35, 29.23, 0.0, 24.03, 19.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:55:42.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:55:13
2025-09-28T13:55:42.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:55:42.844 [DEBUG] [Thread-126364] [transport.py] [_log()] starting thread (client mode): 0x2e377fa0
2025-09-28T13:55:42.844 [DEBUG] [Thread-126364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:42.863 [DEBUG] [Thread-126364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:55:42.863 [INFO] [Thread-126364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:42.866 [DEBUG] [Thread-126364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] Compression: none
2025-09-28T13:55:42.867 [DEBUG] [Thread-126364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:42.882 [DEBUG] [Thread-126364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:42.883 [DEBUG] [Thread-126364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:42.883 [DEBUG] [Thread-126364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:55:42.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:55:42.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:42.885 [DEBUG] [Thread-126364] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:42.885 [DEBUG] [Thread-126364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:42.885 [DEBUG] [Thread-126364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:42.885 [DEBUG] [Thread-126364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:55:42.885 [DEBUG] [Thread-126364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:42.904 [INFO] [Thread-126364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:42.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:43.666 [DEBUG] [Thread-126364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:43.666 [DEBUG] [Thread-126364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:43.667 [DEBUG] [Thread-126364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:55:43.707 [DEBUG] [Thread-126364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:43.707 [DEBUG] [Thread-126364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:43.710 [DEBUG] [Thread-126364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:43.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:43.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:55:43.721 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:55:43.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:55:43.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:43.729 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:55:43.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:43.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496611 -999.00  +19.50  22.57     34   +3.30 1 1 1 1 1   888    0 14.68 -34.95 ----- 18.2 22.6 217.6 31.7 25.1 -26.0 24.1 -25.4 24.5 -24.7 25.7 -25.7
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496611
2025-09-28T13:55:43.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:55:43.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:55:43.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:55:43.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:55:43.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:55:43.731 [DEBUG] [Thread-126364] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:43.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:55:13', tmtdew=18.35, humidity=29.23, cloud=0.0, wind=24.03, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:55:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:55:43.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-28T13:55:43.829 [DEBUG] [Thread-126367] [transport.py] [_log()] starting thread (client mode): 0x30ddd2d0
2025-09-28T13:55:43.830 [DEBUG] [Thread-126367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:43.844 [DEBUG] [Thread-126367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:55:43.844 [INFO] [Thread-126367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:43.852 [DEBUG] [Thread-126367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:43.853 [DEBUG] [Thread-126367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:43.853 [DEBUG] [Thread-126367] [transport.py] [_log()] Compression: none
2025-09-28T13:55:43.853 [DEBUG] [Thread-126367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:43.912 [DEBUG] [Thread-126367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:43.912 [DEBUG] [Thread-126367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:43.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:55:43.913 [DEBUG] [Thread-126367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:55:43.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:43.968 [DEBUG] [Thread-126367] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:43.968 [DEBUG] [Thread-126367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:43.969 [DEBUG] [Thread-126367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:43.969 [DEBUG] [Thread-126367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:55:43.969 [DEBUG] [Thread-126367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:43.988 [INFO] [Thread-126367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:43.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-28T13:55:43.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:44.953 [DEBUG] [Thread-126367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:44.954 [DEBUG] [Thread-126367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:45.003 [DEBUG] [Thread-126367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:45.003 [DEBUG] [Thread-126367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:45.012 [DEBUG] [Thread-126367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:45.021 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55: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-28T13:55:45.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-28T13:55:45.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:45.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:45.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:45.048 [DEBUG] [Thread-126367] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:52.000 [DEBUG] [Thread-126369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:55:55.050 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:55:55.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-28T13:55:55.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 55, 45), 18.81, 28.42, 0.0, 25.64, 19.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:55:55.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:55:45
2025-09-28T13:55:55.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:55:55.895 [DEBUG] [Thread-126370] [transport.py] [_log()] starting thread (client mode): 0x30ddecb0
2025-09-28T13:55:55.895 [DEBUG] [Thread-126370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:55.908 [DEBUG] [Thread-126370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:55:55.908 [INFO] [Thread-126370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:55.910 [DEBUG] [Thread-126370] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] Compression: none
2025-09-28T13:55:55.911 [DEBUG] [Thread-126370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:55.924 [DEBUG] [Thread-126370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:55.924 [DEBUG] [Thread-126370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:55.925 [DEBUG] [Thread-126370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:55:55.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:55:55.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:55.926 [DEBUG] [Thread-126370] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:55.926 [DEBUG] [Thread-126370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:55.926 [DEBUG] [Thread-126370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:55.926 [DEBUG] [Thread-126370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:55:55.926 [DEBUG] [Thread-126370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:55.938 [INFO] [Thread-126370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:55.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:56.491 [DEBUG] [Thread-126370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:56.491 [DEBUG] [Thread-126370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:56.492 [DEBUG] [Thread-126370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:55:56.532 [DEBUG] [Thread-126370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:56.532 [DEBUG] [Thread-126370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:56.535 [DEBUG] [Thread-126370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:56.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55:56.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:55:56.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:55:56.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:55:56.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:56.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:55:56.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:56.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:56.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:55:56.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496958 -999.00  +19.00  17.87     34   +2.90 1 1 1 1 1   888    0 14.67 -29.45 ----- 9.2 17.9 219.8 24.4 25.0 -27.2 24.0 -25.6 24.5 -25.2 25.7 -27.0
2025-09-28T13:55:56.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:55:56.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:55:56.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496958
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:55:56.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:55:45', tmtdew=18.81, humidity=28.42, cloud=0.0, wind=25.64, temperature=19.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:55:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:55:56.561 [DEBUG] [Thread-126370] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:56.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:55:56.654 [DEBUG] [Thread-126373] [transport.py] [_log()] starting thread (client mode): 0x30dde8f0
2025-09-28T13:55:56.654 [DEBUG] [Thread-126373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:55:56.669 [DEBUG] [Thread-126373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:55:56.669 [INFO] [Thread-126373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] client lang: <none>
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] server lang: <none>
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] kex follows: False
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] Compression: none
2025-09-28T13:55:56.677 [DEBUG] [Thread-126373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:55:56.734 [DEBUG] [Thread-126373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:55:56.734 [DEBUG] [Thread-126373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:55:56.735 [DEBUG] [Thread-126373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:55:56.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:55:56.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:55:56.792 [DEBUG] [Thread-126373] [transport.py] [_log()] userauth is OK
2025-09-28T13:55:56.792 [DEBUG] [Thread-126373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:55:56.793 [DEBUG] [Thread-126373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:55:56.793 [DEBUG] [Thread-126373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:55:56.793 [DEBUG] [Thread-126373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:55:56.812 [INFO] [Thread-126373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:55:56.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T13:55:56.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:55:57.754 [DEBUG] [Thread-126373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:55:57.754 [DEBUG] [Thread-126373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:55:57.802 [DEBUG] [Thread-126373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:55:57.802 [DEBUG] [Thread-126373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:55:57.812 [DEBUG] [Thread-126373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:55:57.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:55: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')
2025-09-28T13:55:57.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-28T13:55:57.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:55:57.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:55:57.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:55:57.848 [DEBUG] [Thread-126373] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:55:58.714 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:55:58.716 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:07.028 [DEBUG] [Thread-126375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:07.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:56:07.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:56:07.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:56:08.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 55, 45), 18.81, 28.42, 0.0, 25.64, 19.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:56:08.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:55:45
2025-09-28T13:56:08.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:56:08.695 [DEBUG] [Thread-126376] [transport.py] [_log()] starting thread (client mode): 0x287063b0
2025-09-28T13:56:08.695 [DEBUG] [Thread-126376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:08.716 [DEBUG] [Thread-126376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:56:08.716 [INFO] [Thread-126376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] Compression: none
2025-09-28T13:56:08.719 [DEBUG] [Thread-126376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:08.735 [DEBUG] [Thread-126376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:08.736 [DEBUG] [Thread-126376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:08.736 [DEBUG] [Thread-126376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:56:08.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:56:08.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:08.738 [DEBUG] [Thread-126376] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:08.738 [DEBUG] [Thread-126376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:08.738 [DEBUG] [Thread-126376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:08.738 [DEBUG] [Thread-126376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:56:08.739 [DEBUG] [Thread-126376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:08.762 [INFO] [Thread-126376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:08.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:09.523 [DEBUG] [Thread-126376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:09.523 [DEBUG] [Thread-126376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:09.524 [DEBUG] [Thread-126376] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:56:09.564 [DEBUG] [Thread-126376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:09.564 [DEBUG] [Thread-126376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:09.567 [DEBUG] [Thread-126376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:09.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:09.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:56:09.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:56:09.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:56:09.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:09.590 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:56:09.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:09.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:56:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496958 -999.00  +19.00  17.87     34   +2.90 1 1 1 1 1   888    0 14.67 -29.45 ----- 9.2 17.9 219.8 24.4 25.0 -27.2 24.0 -25.6 24.5 -25.2 25.7 -27.0
2025-09-28T13:56:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:56:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:56:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496958
2025-09-28T13:56:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:56:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:56:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:56:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:56:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:56:09.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:55:45', tmtdew=18.81, humidity=28.42, cloud=0.0, wind=25.64, temperature=19.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:55:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:56:09.593 [DEBUG] [Thread-126376] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:09.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:56:09.689 [DEBUG] [Thread-126379] [transport.py] [_log()] starting thread (client mode): 0x30dde0e0
2025-09-28T13:56:09.690 [DEBUG] [Thread-126379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:09.705 [DEBUG] [Thread-126379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:56:09.705 [INFO] [Thread-126379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:56:09.713 [DEBUG] [Thread-126379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:09.713 [DEBUG] [Thread-126379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:56:09.713 [DEBUG] [Thread-126379] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:09.713 [DEBUG] [Thread-126379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] Compression: none
2025-09-28T13:56:09.714 [DEBUG] [Thread-126379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:09.771 [DEBUG] [Thread-126379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:09.772 [DEBUG] [Thread-126379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:09.772 [DEBUG] [Thread-126379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:56:09.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:56:09.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:09.830 [DEBUG] [Thread-126379] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:09.830 [DEBUG] [Thread-126379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:09.830 [DEBUG] [Thread-126379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:09.831 [DEBUG] [Thread-126379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:56:09.831 [DEBUG] [Thread-126379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:09.851 [INFO] [Thread-126379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:09.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-28T13:56:09.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:10.793 [DEBUG] [Thread-126379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:10.793 [DEBUG] [Thread-126379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:10.843 [DEBUG] [Thread-126379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:10.843 [DEBUG] [Thread-126379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:10.854 [DEBUG] [Thread-126379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:10.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:10.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-28T13:56:10.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-28T13:56:10.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:10.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:10.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:10.893 [DEBUG] [Thread-126379] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:13.603 [DEBUG] [Thread-126381 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:20.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:56:20.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:56:20.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-28T13:56:21.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 56, 17), 18.86, 28.3, 0.0, 22.99, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:56:21.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:56:17
2025-09-28T13:56:21.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:56:21.747 [DEBUG] [Thread-126382] [transport.py] [_log()] starting thread (client mode): 0x30ddef20
2025-09-28T13:56:21.747 [DEBUG] [Thread-126382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:21.767 [DEBUG] [Thread-126382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:56:21.767 [INFO] [Thread-126382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:21.769 [DEBUG] [Thread-126382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] Compression: none
2025-09-28T13:56:21.770 [DEBUG] [Thread-126382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:21.782 [DEBUG] [Thread-126382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:21.783 [DEBUG] [Thread-126382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:21.783 [DEBUG] [Thread-126382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:56:21.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:56:21.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:21.785 [DEBUG] [Thread-126382] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:21.786 [DEBUG] [Thread-126382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:21.786 [DEBUG] [Thread-126382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:21.786 [DEBUG] [Thread-126382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:56:21.786 [DEBUG] [Thread-126382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:21.801 [INFO] [Thread-126382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:21.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:22.074 [DEBUG] [Thread-126384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:22.526 [DEBUG] [Thread-126382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:22.527 [DEBUG] [Thread-126382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:22.527 [DEBUG] [Thread-126382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:56:22.567 [DEBUG] [Thread-126382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:22.567 [DEBUG] [Thread-126382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:22.570 [DEBUG] [Thread-126382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:22.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:22.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:56:22.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:56:22.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:56:22.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:22.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:56:22.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:22.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.496958 -999.00  +19.00  17.87     34   +2.90 1 1 1 1 1   888    0 14.67 -29.45 ----- 9.2 17.9 219.8 24.4 25.0 -27.2 24.0 -25.6 24.5 -25.2 25.7 -27.0
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.496958
2025-09-28T13:56:22.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:56:22.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:56:22.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:56:22.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:56:22.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:56:22.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:56:17', tmtdew=18.86, humidity=28.3, cloud=0.0, wind=22.99, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:55:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:56:22.598 [DEBUG] [Thread-126382] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:22.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-28T13:56:22.692 [DEBUG] [Thread-126386] [transport.py] [_log()] starting thread (client mode): 0x30ddfaf0
2025-09-28T13:56:22.692 [DEBUG] [Thread-126386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:22.708 [DEBUG] [Thread-126386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:56:22.708 [INFO] [Thread-126386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:56:22.716 [DEBUG] [Thread-126386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] Compression: none
2025-09-28T13:56:22.717 [DEBUG] [Thread-126386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:22.776 [DEBUG] [Thread-126386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:22.776 [DEBUG] [Thread-126386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:22.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:56:22.777 [DEBUG] [Thread-126386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:56:22.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:22.832 [DEBUG] [Thread-126386] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:22.832 [DEBUG] [Thread-126386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:22.833 [DEBUG] [Thread-126386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:22.833 [DEBUG] [Thread-126386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:56:22.833 [DEBUG] [Thread-126386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:22.853 [INFO] [Thread-126386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:22.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-28T13:56:22.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:23.811 [DEBUG] [Thread-126386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:23.811 [DEBUG] [Thread-126386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:23.863 [DEBUG] [Thread-126386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:23.863 [DEBUG] [Thread-126386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:23.874 [DEBUG] [Thread-126386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:23.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:23.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')
2025-09-28T13:56:23.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-28T13:56:23.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:23.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:23.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:23.911 [DEBUG] [Thread-126386] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:33.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:56:33.913 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:56:33.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-28T13:56:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 56, 17), 18.86, 28.3, 0.0, 22.99, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:56:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:56:17
2025-09-28T13:56:34.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:56:34.758 [DEBUG] [Thread-126388] [transport.py] [_log()] starting thread (client mode): 0x2b96f040
2025-09-28T13:56:34.758 [DEBUG] [Thread-126388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:34.778 [DEBUG] [Thread-126388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:56:34.779 [INFO] [Thread-126388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:34.782 [DEBUG] [Thread-126388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] Compression: none
2025-09-28T13:56:34.783 [DEBUG] [Thread-126388] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:34.801 [DEBUG] [Thread-126388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:34.801 [DEBUG] [Thread-126388] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:34.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:56:34.802 [DEBUG] [Thread-126388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:56:34.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:34.804 [DEBUG] [Thread-126388] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:34.804 [DEBUG] [Thread-126388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:34.804 [DEBUG] [Thread-126388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:34.804 [DEBUG] [Thread-126388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:56:34.804 [DEBUG] [Thread-126388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:34.827 [INFO] [Thread-126388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:34.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:35.444 [DEBUG] [Thread-126388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:35.444 [DEBUG] [Thread-126388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:35.445 [DEBUG] [Thread-126388] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:56:35.485 [DEBUG] [Thread-126388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:35.485 [DEBUG] [Thread-126388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:35.488 [DEBUG] [Thread-126388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:35.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:35.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:56:35.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:56:35.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:56:35.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:35.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:56:35.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:35.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:35.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:56:35.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.497306 -999.00  +19.00  11.02     34   +3.00 1 1 1 1 1   888    0 14.89 -28.02 ----- 12.1 11.0 188.2 19.8 25.0 -26.0 23.9 -25.6 24.5 -25.9 25.8 -26.0
2025-09-28T13:56:35.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:56:35.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:56:35.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.497306
2025-09-28T13:56:35.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:56:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:56:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:56:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:56:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:56:35.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:56:17', tmtdew=18.86, humidity=28.3, cloud=0.0, wind=22.99, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:56:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:56:35.511 [DEBUG] [Thread-126388] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:35.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-28T13:56:35.608 [DEBUG] [Thread-126391] [transport.py] [_log()] starting thread (client mode): 0x2b96db70
2025-09-28T13:56:35.608 [DEBUG] [Thread-126391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:35.622 [DEBUG] [Thread-126391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:56:35.622 [INFO] [Thread-126391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:35.629 [DEBUG] [Thread-126391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:35.630 [DEBUG] [Thread-126391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:35.630 [DEBUG] [Thread-126391] [transport.py] [_log()] Compression: none
2025-09-28T13:56:35.630 [DEBUG] [Thread-126391] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:35.686 [DEBUG] [Thread-126391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:35.687 [DEBUG] [Thread-126391] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:35.687 [DEBUG] [Thread-126391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:56:35.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:56:35.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:35.745 [DEBUG] [Thread-126391] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:35.745 [DEBUG] [Thread-126391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:35.745 [DEBUG] [Thread-126391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:35.745 [DEBUG] [Thread-126391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:56:35.745 [DEBUG] [Thread-126391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:35.760 [INFO] [Thread-126391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:35.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-28T13:56:35.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:36.706 [DEBUG] [Thread-126391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:36.706 [DEBUG] [Thread-126391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:36.754 [DEBUG] [Thread-126391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:36.754 [DEBUG] [Thread-126391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:36.764 [DEBUG] [Thread-126391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:36.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:36.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-28T13:56:36.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-28T13:56:36.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:36.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:36.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:36.798 [DEBUG] [Thread-126391] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:37.103 [DEBUG] [Thread-126393 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:46.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:56:46.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:56:46.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-28T13:56:47.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 56, 17), 18.86, 28.3, 0.0, 22.99, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:56:47.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:56:17
2025-09-28T13:56:47.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:56:47.642 [DEBUG] [Thread-126394] [transport.py] [_log()] starting thread (client mode): 0x2b96dab0
2025-09-28T13:56:47.642 [DEBUG] [Thread-126394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:47.658 [DEBUG] [Thread-126394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:56:47.658 [INFO] [Thread-126394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:47.661 [DEBUG] [Thread-126394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] Compression: none
2025-09-28T13:56:47.662 [DEBUG] [Thread-126394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:47.678 [DEBUG] [Thread-126394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:47.678 [DEBUG] [Thread-126394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:47.679 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:56:47.679 [DEBUG] [Thread-126394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:56:47.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:47.681 [DEBUG] [Thread-126394] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:47.681 [DEBUG] [Thread-126394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:47.681 [DEBUG] [Thread-126394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:47.681 [DEBUG] [Thread-126394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:56:47.681 [DEBUG] [Thread-126394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:47.700 [INFO] [Thread-126394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:47.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:48.482 [DEBUG] [Thread-126394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:48.482 [DEBUG] [Thread-126394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:48.482 [DEBUG] [Thread-126394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:56:48.523 [DEBUG] [Thread-126394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:48.523 [DEBUG] [Thread-126394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:48.525 [DEBUG] [Thread-126394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:48.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:48.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:56:48.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:56:48.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:56:48.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:48.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:56:48.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.497306 -999.00  +19.00  11.02     34   +3.00 1 1 1 1 1   888    0 14.89 -28.02 ----- 12.1 11.0 188.2 19.8 25.0 -26.0 23.9 -25.6 24.5 -25.9 25.8 -26.0
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:56:48.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.497306
2025-09-28T13:56:48.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:56:48.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:56:48.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:56:48.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:56:48.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:56:48.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:56:17', tmtdew=18.86, humidity=28.3, cloud=0.0, wind=22.99, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:56:07.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:56:48.545 [DEBUG] [Thread-126394] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:48.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:56:48.638 [DEBUG] [Thread-126397] [transport.py] [_log()] starting thread (client mode): 0x30dde9b0
2025-09-28T13:56:48.639 [DEBUG] [Thread-126397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:56:48.653 [DEBUG] [Thread-126397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:56:48.654 [INFO] [Thread-126397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:56:48.661 [DEBUG] [Thread-126397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:56:48.661 [DEBUG] [Thread-126397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] client lang: <none>
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] server lang: <none>
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] kex follows: False
2025-09-28T13:56:48.662 [DEBUG] [Thread-126397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] Compression: none
2025-09-28T13:56:48.663 [DEBUG] [Thread-126397] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:56:48.720 [DEBUG] [Thread-126397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:56:48.721 [DEBUG] [Thread-126397] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:56:48.721 [DEBUG] [Thread-126397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:56:48.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:56:48.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:56:48.776 [DEBUG] [Thread-126397] [transport.py] [_log()] userauth is OK
2025-09-28T13:56:48.776 [DEBUG] [Thread-126397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:56:48.776 [DEBUG] [Thread-126397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:56:48.776 [DEBUG] [Thread-126397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:56:48.776 [DEBUG] [Thread-126397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:56:48.796 [INFO] [Thread-126397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:56:48.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-28T13:56:48.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:56:49.779 [DEBUG] [Thread-126397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:56:49.779 [DEBUG] [Thread-126397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:56:49.828 [DEBUG] [Thread-126397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:56:49.828 [DEBUG] [Thread-126397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:56:49.836 [DEBUG] [Thread-126397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:56:49.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:56:49.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-28T13:56:49.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-28T13:56:49.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:56:49.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:56:49.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:56:49.867 [DEBUG] [Thread-126397] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:56:52.146 [DEBUG] [Thread-126399 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:58.857 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:58.859 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:56:59.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:56:59.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:56:59.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:57:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 56, 49), 18.34, 29.2, 0.0, 17.38, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:57:00.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:56:49
2025-09-28T13:57:00.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:57:00.730 [DEBUG] [Thread-126400] [transport.py] [_log()] starting thread (client mode): 0x2b96fdc0
2025-09-28T13:57:00.730 [DEBUG] [Thread-126400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:00.749 [DEBUG] [Thread-126400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:57:00.750 [INFO] [Thread-126400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:57:00.752 [DEBUG] [Thread-126400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:00.753 [DEBUG] [Thread-126400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:00.754 [DEBUG] [Thread-126400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:00.754 [DEBUG] [Thread-126400] [transport.py] [_log()] Compression: none
2025-09-28T13:57:00.754 [DEBUG] [Thread-126400] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:00.762 [DEBUG] [Thread-126400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:00.762 [DEBUG] [Thread-126400] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:00.763 [DEBUG] [Thread-126400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:57:00.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:57:00.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:00.764 [DEBUG] [Thread-126400] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:00.764 [DEBUG] [Thread-126400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:00.764 [DEBUG] [Thread-126400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:00.765 [DEBUG] [Thread-126400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:57:00.765 [DEBUG] [Thread-126400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:00.782 [INFO] [Thread-126400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:00.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:01.338 [DEBUG] [Thread-126400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:01.338 [DEBUG] [Thread-126400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:01.338 [DEBUG] [Thread-126400] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:57:01.379 [DEBUG] [Thread-126400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:01.379 [DEBUG] [Thread-126400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:01.381 [DEBUG] [Thread-126400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:01.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:01.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:57:01.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:57:01.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:57:01.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:01.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:57:01.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.497653 -999.00  +19.00   9.22     34   +3.00 1 1 1 1 1   888    0 15.04 -24.33 ----- 12.1 9.2 176.6 13.0 25.1 -26.2 23.9 -27.4 24.7 -24.6 25.9 -26.0
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.497653
2025-09-28T13:57:01.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:57:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:57:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:57:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:57:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:57:01.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:56:49', tmtdew=18.34, humidity=29.2, cloud=0.0, wind=17.38, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:56:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:57:01.399 [DEBUG] [Thread-126400] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:01.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-28T13:57:01.485 [DEBUG] [Thread-126403] [transport.py] [_log()] starting thread (client mode): 0x2b96fb80
2025-09-28T13:57:01.485 [DEBUG] [Thread-126403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:01.500 [DEBUG] [Thread-126403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:57:01.500 [INFO] [Thread-126403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] Compression: none
2025-09-28T13:57:01.508 [DEBUG] [Thread-126403] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:01.562 [DEBUG] [Thread-126403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:01.562 [DEBUG] [Thread-126403] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:01.563 [DEBUG] [Thread-126403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:57:01.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:57:01.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:01.619 [DEBUG] [Thread-126403] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:01.619 [DEBUG] [Thread-126403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:01.619 [DEBUG] [Thread-126403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:01.619 [DEBUG] [Thread-126403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:57:01.619 [DEBUG] [Thread-126403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:01.633 [INFO] [Thread-126403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:01.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-28T13:57:01.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:02.644 [DEBUG] [Thread-126403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:02.645 [DEBUG] [Thread-126403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:02.693 [DEBUG] [Thread-126403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:02.693 [DEBUG] [Thread-126403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:02.701 [DEBUG] [Thread-126403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:02.709 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:02.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-28T13:57:02.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-28T13:57:02.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:02.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:02.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:02.732 [DEBUG] [Thread-126403] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:07.177 [DEBUG] [Thread-126405 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:12.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:57:12.735 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:57:12.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-28T13:57:13.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 56, 49), 18.34, 29.2, 0.0, 17.38, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:57:13.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:56:49
2025-09-28T13:57:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:57:13.579 [DEBUG] [Thread-126406] [transport.py] [_log()] starting thread (client mode): 0x2b96c040
2025-09-28T13:57:13.580 [DEBUG] [Thread-126406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:13.599 [DEBUG] [Thread-126406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:57:13.599 [INFO] [Thread-126406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] Compression: none
2025-09-28T13:57:13.602 [DEBUG] [Thread-126406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:13.618 [DEBUG] [Thread-126406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:13.618 [DEBUG] [Thread-126406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:13.618 [DEBUG] [Thread-126406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:57:13.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:57:13.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:13.619 [DEBUG] [Thread-126406] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:13.619 [DEBUG] [Thread-126406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:13.619 [DEBUG] [Thread-126406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:13.619 [DEBUG] [Thread-126406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:57:13.619 [DEBUG] [Thread-126406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:13.628 [INFO] [Thread-126406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:13.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:13.648 [DEBUG] [Thread-126408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:14.393 [DEBUG] [Thread-126406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:14.394 [DEBUG] [Thread-126406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:14.394 [DEBUG] [Thread-126406] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:57:14.434 [DEBUG] [Thread-126406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:14.434 [DEBUG] [Thread-126406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:14.437 [DEBUG] [Thread-126406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:14.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:14.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:57:14.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:57:14.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:57:14.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:14.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:57:14.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:14.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:57:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.497653 -999.00  +19.00   9.22     34   +3.00 1 1 1 1 1   888    0 15.04 -24.33 ----- 12.1 9.2 176.6 13.0 25.1 -26.2 23.9 -27.4 24.7 -24.6 25.9 -26.0
2025-09-28T13:57:14.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:57:14.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:57:14.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.497653
2025-09-28T13:57:14.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:57:14.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:57:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:57:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:57:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:57:14.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:56:49', tmtdew=18.34, humidity=29.2, cloud=0.0, wind=17.38, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:56:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:57:14.462 [DEBUG] [Thread-126406] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:14.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-28T13:57:14.567 [DEBUG] [Thread-126410] [transport.py] [_log()] starting thread (client mode): 0x30dde350
2025-09-28T13:57:14.567 [DEBUG] [Thread-126410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:14.582 [DEBUG] [Thread-126410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:57:14.583 [INFO] [Thread-126410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:57:14.590 [DEBUG] [Thread-126410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] Compression: none
2025-09-28T13:57:14.591 [DEBUG] [Thread-126410] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:14.648 [DEBUG] [Thread-126410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:14.649 [DEBUG] [Thread-126410] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:14.649 [DEBUG] [Thread-126410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:57:14.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:57:14.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:14.711 [DEBUG] [Thread-126410] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:14.711 [DEBUG] [Thread-126410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:14.711 [DEBUG] [Thread-126410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:14.711 [DEBUG] [Thread-126410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:57:14.711 [DEBUG] [Thread-126410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:14.733 [INFO] [Thread-126410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:14.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-28T13:57:14.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:15.714 [DEBUG] [Thread-126410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:15.714 [DEBUG] [Thread-126410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:15.762 [DEBUG] [Thread-126410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:15.762 [DEBUG] [Thread-126410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:15.772 [DEBUG] [Thread-126410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:15.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:15.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')
2025-09-28T13:57:15.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T13:57:15.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:15.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:15.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:15.807 [DEBUG] [Thread-126410] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:22.218 [DEBUG] [Thread-126412 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:25.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:57:25.809 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:57:25.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T13:57:26.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 57, 21), 17.98, 29.78, 0.0, 13.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:57:26.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:57:21
2025-09-28T13:57:26.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:57:26.635 [DEBUG] [Thread-126413] [transport.py] [_log()] starting thread (client mode): 0x2b96ead0
2025-09-28T13:57:26.635 [DEBUG] [Thread-126413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:26.655 [DEBUG] [Thread-126413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:57:26.655 [INFO] [Thread-126413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:26.658 [DEBUG] [Thread-126413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] Compression: none
2025-09-28T13:57:26.659 [DEBUG] [Thread-126413] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:26.675 [DEBUG] [Thread-126413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:26.676 [DEBUG] [Thread-126413] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:26.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:57:26.677 [DEBUG] [Thread-126413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:57:26.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:26.678 [DEBUG] [Thread-126413] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:26.678 [DEBUG] [Thread-126413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:26.678 [DEBUG] [Thread-126413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:26.678 [DEBUG] [Thread-126413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:57:26.678 [DEBUG] [Thread-126413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:26.702 [INFO] [Thread-126413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:26.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:27.517 [DEBUG] [Thread-126413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:27.517 [DEBUG] [Thread-126413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:27.518 [DEBUG] [Thread-126413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:57:27.558 [DEBUG] [Thread-126413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:27.558 [DEBUG] [Thread-126413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:27.561 [DEBUG] [Thread-126413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:27.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:27.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:57:27.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:57:27.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:57:27.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:27.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:57:27.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:27.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.497653 -999.00  +19.00   9.22     34   +3.00 1 1 1 1 1   888    0 15.04 -24.33 ----- 12.1 9.2 176.6 13.0 25.1 -26.2 23.9 -27.4 24.7 -24.6 25.9 -26.0
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.497653
2025-09-28T13:57:27.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:57:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:57:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:57:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:57:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:57:27.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:57:21', tmtdew=17.98, humidity=29.78, cloud=0.0, wind=13.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:56:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:57:27.586 [DEBUG] [Thread-126413] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:27.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-28T13:57:27.682 [DEBUG] [Thread-126416] [transport.py] [_log()] starting thread (client mode): 0x2b96e740
2025-09-28T13:57:27.682 [DEBUG] [Thread-126416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:27.698 [DEBUG] [Thread-126416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:57:27.698 [INFO] [Thread-126416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:57:27.705 [DEBUG] [Thread-126416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:27.706 [DEBUG] [Thread-126416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:27.707 [DEBUG] [Thread-126416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:27.708 [DEBUG] [Thread-126416] [transport.py] [_log()] Compression: none
2025-09-28T13:57:27.708 [DEBUG] [Thread-126416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:27.764 [DEBUG] [Thread-126416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:27.764 [DEBUG] [Thread-126416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:27.765 [DEBUG] [Thread-126416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:57:27.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:57:27.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:27.820 [DEBUG] [Thread-126416] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:27.820 [DEBUG] [Thread-126416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:27.820 [DEBUG] [Thread-126416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:27.821 [DEBUG] [Thread-126416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:57:27.821 [DEBUG] [Thread-126416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:27.840 [INFO] [Thread-126416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:27.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-28T13:57:27.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:28.871 [DEBUG] [Thread-126416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:28.871 [DEBUG] [Thread-126416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:28.919 [DEBUG] [Thread-126416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:28.919 [DEBUG] [Thread-126416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:28.928 [DEBUG] [Thread-126416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:28.937 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:28.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-28T13:57:28.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-28T13:57:28.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:28.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:28.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:28.962 [DEBUG] [Thread-126416] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:37.243 [DEBUG] [Thread-126418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:38.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:57:38.965 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:57:38.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-28T13:57:39.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 57, 21), 17.98, 29.78, 0.0, 13.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:57:39.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:57:21
2025-09-28T13:57:39.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:57:39.831 [DEBUG] [Thread-126419] [transport.py] [_log()] starting thread (client mode): 0x30ddd6f0
2025-09-28T13:57:39.831 [DEBUG] [Thread-126419] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:39.851 [DEBUG] [Thread-126419] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:57:39.852 [INFO] [Thread-126419] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] Compression: none
2025-09-28T13:57:39.855 [DEBUG] [Thread-126419] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:39.871 [DEBUG] [Thread-126419] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:39.871 [DEBUG] [Thread-126419] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:39.871 [DEBUG] [Thread-126419] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:57:39.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:57:39.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:39.916 [DEBUG] [Thread-126419] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:39.916 [DEBUG] [Thread-126419] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:39.916 [DEBUG] [Thread-126419] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:39.916 [DEBUG] [Thread-126419] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:57:39.916 [DEBUG] [Thread-126419] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:39.931 [INFO] [Thread-126419] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:39.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:40.583 [DEBUG] [Thread-126419] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:40.583 [DEBUG] [Thread-126419] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:40.583 [DEBUG] [Thread-126419] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:57:40.624 [DEBUG] [Thread-126419] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:40.624 [DEBUG] [Thread-126419] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:40.626 [DEBUG] [Thread-126419] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:40.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:40.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:57:40.638 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:57:40.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:40.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:57:40.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498000 -999.00  +19.00   9.43     34   +3.00 1 1 1 1 1   888    0 15.15 -22.40 ----- 6.8 9.4 231.8 16.3 25.2 -26.0 23.9 -25.2 24.8 -24.5 26.1 -25.6
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:57:40.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498000
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:57:40.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:57:21', tmtdew=17.98, humidity=29.78, cloud=0.0, wind=13.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:57:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:57:40.643 [DEBUG] [Thread-126419] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:40.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-28T13:57:40.728 [DEBUG] [Thread-126422] [transport.py] [_log()] starting thread (client mode): 0x2e377250
2025-09-28T13:57:40.729 [DEBUG] [Thread-126422] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:40.743 [DEBUG] [Thread-126422] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:57:40.743 [INFO] [Thread-126422] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:40.751 [DEBUG] [Thread-126422] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] Compression: none
2025-09-28T13:57:40.752 [DEBUG] [Thread-126422] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:40.806 [DEBUG] [Thread-126422] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:40.806 [DEBUG] [Thread-126422] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:40.806 [DEBUG] [Thread-126422] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:57:40.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:57:40.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:40.863 [DEBUG] [Thread-126422] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:40.863 [DEBUG] [Thread-126422] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:40.863 [DEBUG] [Thread-126422] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:40.863 [DEBUG] [Thread-126422] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:57:40.863 [DEBUG] [Thread-126422] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:40.877 [INFO] [Thread-126422] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57: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-28T13:57:40.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:41.842 [DEBUG] [Thread-126422] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:41.842 [DEBUG] [Thread-126422] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:41.891 [DEBUG] [Thread-126422] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:41.891 [DEBUG] [Thread-126422] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:41.899 [DEBUG] [Thread-126422] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:41.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:41.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-28T13:57:41.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-28T13:57:41.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:41.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:41.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:41.932 [DEBUG] [Thread-126422] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:51.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:57:51.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:57:51.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-28T13:57:52.290 [DEBUG] [Thread-126424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:52.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 57, 21), 17.98, 29.78, 0.0, 13.6, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:57:52.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:57:21
2025-09-28T13:57:52.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:57:52.778 [DEBUG] [Thread-126425] [transport.py] [_log()] starting thread (client mode): 0x2e375480
2025-09-28T13:57:52.778 [DEBUG] [Thread-126425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:52.798 [DEBUG] [Thread-126425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:57:52.798 [INFO] [Thread-126425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:52.802 [DEBUG] [Thread-126425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] Compression: none
2025-09-28T13:57:52.803 [DEBUG] [Thread-126425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:52.825 [DEBUG] [Thread-126425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:52.826 [DEBUG] [Thread-126425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:52.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:57:52.827 [DEBUG] [Thread-126425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:57:52.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:52.829 [DEBUG] [Thread-126425] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:52.829 [DEBUG] [Thread-126425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:52.829 [DEBUG] [Thread-126425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:52.830 [DEBUG] [Thread-126425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:57:52.830 [DEBUG] [Thread-126425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:52.853 [INFO] [Thread-126425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:52.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:53.658 [DEBUG] [Thread-126425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:53.658 [DEBUG] [Thread-126425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:53.658 [DEBUG] [Thread-126425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:57:53.700 [DEBUG] [Thread-126425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:53.700 [DEBUG] [Thread-126425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:53.702 [DEBUG] [Thread-126425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:53.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:53.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:57:53.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:57:53.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:57:53.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:53.721 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:57:53.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498000 -999.00  +19.00   9.43     34   +3.00 1 1 1 1 1   888    0 15.15 -22.40 ----- 6.8 9.4 231.8 16.3 25.2 -26.0 23.9 -25.2 24.8 -24.5 26.1 -25.6
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498000
2025-09-28T13:57:53.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:57:53.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:57:53.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:57:53.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:57:53.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:57:53.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:57:21', tmtdew=17.98, humidity=29.78, cloud=0.0, wind=13.6, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:57:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:57:53.722 [DEBUG] [Thread-126425] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:53.797 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:57:53.806 [DEBUG] [Thread-126428] [transport.py] [_log()] starting thread (client mode): 0x2b96ca60
2025-09-28T13:57:53.806 [DEBUG] [Thread-126428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:57:53.821 [DEBUG] [Thread-126428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:57:53.821 [INFO] [Thread-126428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:57:53.828 [DEBUG] [Thread-126428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] client lang: <none>
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] server lang: <none>
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] kex follows: False
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] Compression: none
2025-09-28T13:57:53.829 [DEBUG] [Thread-126428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:57:53.887 [DEBUG] [Thread-126428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:57:53.887 [DEBUG] [Thread-126428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:57:53.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:57:53.887 [DEBUG] [Thread-126428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:57:53.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:57:53.943 [DEBUG] [Thread-126428] [transport.py] [_log()] userauth is OK
2025-09-28T13:57:53.944 [DEBUG] [Thread-126428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:57:53.944 [DEBUG] [Thread-126428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:57:53.944 [DEBUG] [Thread-126428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:57:53.944 [DEBUG] [Thread-126428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:57:53.958 [INFO] [Thread-126428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:57:53.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-28T13:57:53.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:57:54.921 [DEBUG] [Thread-126428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:57:54.921 [DEBUG] [Thread-126428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:57:54.969 [DEBUG] [Thread-126428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:57:54.969 [DEBUG] [Thread-126428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:57:54.977 [DEBUG] [Thread-126428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:57:54.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:57:54.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-28T13:57:54.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-28T13:57:55.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:57:55.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:57:55.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:57:55.009 [DEBUG] [Thread-126428] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:57:59.007 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:57:59.009 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:05.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:58:05.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:58:05.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-28T13:58:05.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 57, 52), 18.03, 29.74, 0.0, 11.7, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:58:05.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:57:52
2025-09-28T13:58:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:58:05.832 [DEBUG] [Thread-126430] [transport.py] [_log()] starting thread (client mode): 0x2b96f790
2025-09-28T13:58:05.833 [DEBUG] [Thread-126430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:05.858 [DEBUG] [Thread-126430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:58:05.858 [INFO] [Thread-126430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] Compression: none
2025-09-28T13:58:05.860 [DEBUG] [Thread-126430] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:05.872 [DEBUG] [Thread-126430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:05.872 [DEBUG] [Thread-126430] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:05.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:58:05.873 [DEBUG] [Thread-126430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:58:05.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:05.875 [DEBUG] [Thread-126430] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:05.875 [DEBUG] [Thread-126430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:05.875 [DEBUG] [Thread-126430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:05.875 [DEBUG] [Thread-126430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:58:05.876 [DEBUG] [Thread-126430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:05.898 [INFO] [Thread-126430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:05.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:06.474 [DEBUG] [Thread-126430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:06.474 [DEBUG] [Thread-126430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:06.475 [DEBUG] [Thread-126430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:58:06.515 [DEBUG] [Thread-126430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:06.515 [DEBUG] [Thread-126430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:06.518 [DEBUG] [Thread-126430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:06.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:06.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:58:06.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:58:06.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:58:06.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:06.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:58:06.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498347 -999.00  +19.10   8.96     34   +3.00 1 1 1 1 1   888    0 14.65 -24.14 ----- 7.1 9.0 203.2 14.3 25.2 -26.3 24.0 -25.0 24.9 -24.1 26.2 -26.2
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:58:06.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498347
2025-09-28T13:58:06.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:58:06.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:58:06.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:58:06.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:58:06.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:58:06.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:57:52', tmtdew=18.03, humidity=29.74, cloud=0.0, wind=11.7, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:57:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:58:06.536 [DEBUG] [Thread-126430] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:06.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-28T13:58:06.631 [DEBUG] [Thread-126433] [transport.py] [_log()] starting thread (client mode): 0x2b96fc70
2025-09-28T13:58:06.631 [DEBUG] [Thread-126433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:06.646 [DEBUG] [Thread-126433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:58:06.646 [INFO] [Thread-126433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:06.654 [DEBUG] [Thread-126433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:06.655 [DEBUG] [Thread-126433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:06.655 [DEBUG] [Thread-126433] [transport.py] [_log()] Compression: none
2025-09-28T13:58:06.655 [DEBUG] [Thread-126433] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:06.711 [DEBUG] [Thread-126433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:06.712 [DEBUG] [Thread-126433] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:06.712 [DEBUG] [Thread-126433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:58:06.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:58:06.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:06.768 [DEBUG] [Thread-126433] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:06.768 [DEBUG] [Thread-126433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:06.769 [DEBUG] [Thread-126433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:06.769 [DEBUG] [Thread-126433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:58:06.769 [DEBUG] [Thread-126433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:06.788 [INFO] [Thread-126433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:06.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-28T13:58:06.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:07.327 [DEBUG] [Thread-126435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:07.772 [DEBUG] [Thread-126433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:07.772 [DEBUG] [Thread-126433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:07.820 [DEBUG] [Thread-126433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:07.820 [DEBUG] [Thread-126433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:07.829 [DEBUG] [Thread-126433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:07.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:07.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-28T13:58:07.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') -> 00000000
2025-09-28T13:58:07.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:07.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:07.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:07.864 [DEBUG] [Thread-126433] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:13.699 [DEBUG] [Thread-126436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:17.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:58:17.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:58:17.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-28T13:58:18.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 57, 52), 18.03, 29.74, 0.0, 11.7, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:58:18.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:57:52
2025-09-28T13:58:18.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:58:18.716 [DEBUG] [Thread-126437] [transport.py] [_log()] starting thread (client mode): 0x2b96dbd0
2025-09-28T13:58:18.716 [DEBUG] [Thread-126437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:18.735 [DEBUG] [Thread-126437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:58:18.735 [INFO] [Thread-126437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] Compression: none
2025-09-28T13:58:18.738 [DEBUG] [Thread-126437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:18.755 [DEBUG] [Thread-126437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:18.755 [DEBUG] [Thread-126437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:18.755 [DEBUG] [Thread-126437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:58:18.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:58:18.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:18.756 [DEBUG] [Thread-126437] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:18.756 [DEBUG] [Thread-126437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:18.756 [DEBUG] [Thread-126437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:18.756 [DEBUG] [Thread-126437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:58:18.756 [DEBUG] [Thread-126437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:18.769 [INFO] [Thread-126437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:18.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:19.560 [DEBUG] [Thread-126437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:19.560 [DEBUG] [Thread-126437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:19.560 [DEBUG] [Thread-126437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:58:19.601 [DEBUG] [Thread-126437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:19.601 [DEBUG] [Thread-126437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:19.603 [DEBUG] [Thread-126437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:19.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:19.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:58:19.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:58:19.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:58:19.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:19.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:58:19.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498347 -999.00  +19.10   8.96     34   +3.00 1 1 1 1 1   888    0 14.65 -24.14 ----- 7.1 9.0 203.2 14.3 25.2 -26.3 24.0 -25.0 24.9 -24.1 26.2 -26.2
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498347
2025-09-28T13:58:19.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:58:19.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:58:19.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:58:19.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:58:19.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:58:19.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:57:52', tmtdew=18.03, humidity=29.74, cloud=0.0, wind=11.7, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:57:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:58:19.621 [DEBUG] [Thread-126437] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:19.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-28T13:58:19.705 [DEBUG] [Thread-126440] [transport.py] [_log()] starting thread (client mode): 0x2b96cd30
2025-09-28T13:58:19.705 [DEBUG] [Thread-126440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:19.720 [DEBUG] [Thread-126440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:58:19.720 [INFO] [Thread-126440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:19.727 [DEBUG] [Thread-126440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] Compression: none
2025-09-28T13:58:19.728 [DEBUG] [Thread-126440] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:19.782 [DEBUG] [Thread-126440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:19.782 [DEBUG] [Thread-126440] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:19.782 [DEBUG] [Thread-126440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:58:19.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:58:19.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:19.839 [DEBUG] [Thread-126440] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:19.839 [DEBUG] [Thread-126440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:19.840 [DEBUG] [Thread-126440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:19.840 [DEBUG] [Thread-126440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:58:19.840 [DEBUG] [Thread-126440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:19.853 [INFO] [Thread-126440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:19.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-28T13:58:19.854 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:20.821 [DEBUG] [Thread-126440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:20.821 [DEBUG] [Thread-126440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:20.869 [DEBUG] [Thread-126440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:20.869 [DEBUG] [Thread-126440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:20.878 [DEBUG] [Thread-126440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:20.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:20.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')
2025-09-28T13:58:20.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-28T13:58:20.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:20.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:20.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:20.912 [DEBUG] [Thread-126440] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:22.382 [DEBUG] [Thread-126442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:30.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:58:30.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:58:30.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-28T13:58:31.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 58, 24), 17.84, 30.1, 0.0, 12.49, 18.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:58:31.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:58:24
2025-09-28T13:58:31.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:58:31.738 [DEBUG] [Thread-126443] [transport.py] [_log()] starting thread (client mode): 0x2e374cd0
2025-09-28T13:58:31.739 [DEBUG] [Thread-126443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:31.758 [DEBUG] [Thread-126443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:58:31.758 [INFO] [Thread-126443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:31.761 [DEBUG] [Thread-126443] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] Compression: none
2025-09-28T13:58:31.762 [DEBUG] [Thread-126443] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:31.777 [DEBUG] [Thread-126443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:31.777 [DEBUG] [Thread-126443] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:31.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:58:31.778 [DEBUG] [Thread-126443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:58:31.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:31.781 [DEBUG] [Thread-126443] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:31.781 [DEBUG] [Thread-126443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:31.781 [DEBUG] [Thread-126443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:31.781 [DEBUG] [Thread-126443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:58:31.781 [DEBUG] [Thread-126443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:31.800 [INFO] [Thread-126443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:31.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:32.585 [DEBUG] [Thread-126443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:32.585 [DEBUG] [Thread-126443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:32.585 [DEBUG] [Thread-126443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:58:32.626 [DEBUG] [Thread-126443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:32.626 [DEBUG] [Thread-126443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:32.629 [DEBUG] [Thread-126443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:32.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:32.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:58:32.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:58:32.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:58:32.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:32.651 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:58:32.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:32.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498347 -999.00  +19.10   8.96     34   +3.00 1 1 1 1 1   888    0 14.65 -24.14 ----- 7.1 9.0 203.2 14.3 25.2 -26.3 24.0 -25.0 24.9 -24.1 26.2 -26.2
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498347
2025-09-28T13:58:32.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:58:32.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:58:32.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:58:32.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:58:32.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:58:32.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:58:24', tmtdew=17.84, humidity=30.1, cloud=0.0, wind=12.49, temperature=18.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:57:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:58:32.653 [DEBUG] [Thread-126443] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:32.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:58:32.747 [DEBUG] [Thread-126446] [transport.py] [_log()] starting thread (client mode): 0x2e375900
2025-09-28T13:58:32.747 [DEBUG] [Thread-126446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:32.762 [DEBUG] [Thread-126446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:58:32.762 [INFO] [Thread-126446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:32.770 [DEBUG] [Thread-126446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] Compression: none
2025-09-28T13:58:32.771 [DEBUG] [Thread-126446] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:32.827 [DEBUG] [Thread-126446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:32.827 [DEBUG] [Thread-126446] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:32.828 [DEBUG] [Thread-126446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:58:32.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:58:32.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:32.886 [DEBUG] [Thread-126446] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:32.886 [DEBUG] [Thread-126446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:32.886 [DEBUG] [Thread-126446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:32.886 [DEBUG] [Thread-126446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:58:32.886 [DEBUG] [Thread-126446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:32.905 [INFO] [Thread-126446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:32.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-28T13:58:32.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:33.838 [DEBUG] [Thread-126446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:33.839 [DEBUG] [Thread-126446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:33.886 [DEBUG] [Thread-126446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:33.886 [DEBUG] [Thread-126446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:33.896 [DEBUG] [Thread-126446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:33.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:33.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-28T13:58: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') -> 00000000
2025-09-28T13:58:33.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:33.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:33.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:33.931 [DEBUG] [Thread-126446] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:37.416 [DEBUG] [Thread-126448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:43.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:58:43.934 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:58:43.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-28T13:58:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 58, 24), 17.84, 30.1, 0.0, 12.49, 18.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:58:44.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:58:24
2025-09-28T13:58:44.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:58:44.764 [DEBUG] [Thread-126449] [transport.py] [_log()] starting thread (client mode): 0x28704250
2025-09-28T13:58:44.764 [DEBUG] [Thread-126449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:44.782 [DEBUG] [Thread-126449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:58:44.783 [INFO] [Thread-126449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:44.786 [DEBUG] [Thread-126449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] Compression: none
2025-09-28T13:58:44.787 [DEBUG] [Thread-126449] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:44.803 [DEBUG] [Thread-126449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:44.803 [DEBUG] [Thread-126449] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:44.804 [DEBUG] [Thread-126449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:58:44.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:58:44.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:44.806 [DEBUG] [Thread-126449] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:44.806 [DEBUG] [Thread-126449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:44.806 [DEBUG] [Thread-126449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:44.806 [DEBUG] [Thread-126449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:58:44.806 [DEBUG] [Thread-126449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:44.830 [INFO] [Thread-126449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:44.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:45.493 [DEBUG] [Thread-126449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:45.493 [DEBUG] [Thread-126449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:45.493 [DEBUG] [Thread-126449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:58:45.534 [DEBUG] [Thread-126449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:45.534 [DEBUG] [Thread-126449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:45.537 [DEBUG] [Thread-126449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:45.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:45.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:58:45.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:58:45.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:58:45.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:45.560 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:58:45.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498694 -999.00  +19.20   8.91     34   +3.10 1 1 1 1 1   888    0 15.11 -22.40 ----- 8.4 8.9 185.8 15.5 25.4 -25.9 24.1 -26.3 25.0 -24.6 26.4 -26.1
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:58:45.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498694
2025-09-28T13:58:45.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:58:45.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:58:45.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:58:45.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:58:45.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:58:45.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:58:24', tmtdew=17.84, humidity=30.1, cloud=0.0, wind=12.49, temperature=18.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:58:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:58:45.563 [DEBUG] [Thread-126449] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:45.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-28T13:58:45.659 [DEBUG] [Thread-126452] [transport.py] [_log()] starting thread (client mode): 0x28706e00
2025-09-28T13:58:45.659 [DEBUG] [Thread-126452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:45.675 [DEBUG] [Thread-126452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:58:45.675 [INFO] [Thread-126452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:58:45.682 [DEBUG] [Thread-126452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:45.683 [DEBUG] [Thread-126452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:45.684 [DEBUG] [Thread-126452] [transport.py] [_log()] Compression: none
2025-09-28T13:58:45.684 [DEBUG] [Thread-126452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:45.739 [DEBUG] [Thread-126452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:45.740 [DEBUG] [Thread-126452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:45.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:58:45.741 [DEBUG] [Thread-126452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:58:45.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:45.796 [DEBUG] [Thread-126452] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:45.796 [DEBUG] [Thread-126452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:45.796 [DEBUG] [Thread-126452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:45.796 [DEBUG] [Thread-126452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:58:45.796 [DEBUG] [Thread-126452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:45.817 [INFO] [Thread-126452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:45.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-28T13:58:45.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:46.768 [DEBUG] [Thread-126452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:46.768 [DEBUG] [Thread-126452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:46.816 [DEBUG] [Thread-126452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:46.816 [DEBUG] [Thread-126452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:46.826 [DEBUG] [Thread-126452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:46.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:46.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:58:46.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') -> 00000000
2025-09-28T13:58:46.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:46.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:46.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:46.860 [DEBUG] [Thread-126452] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:52.458 [DEBUG] [Thread-126454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:56.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:58:56.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:58:56.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-28T13:58:57.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 58, 24), 17.84, 30.1, 0.0, 12.49, 18.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:58:57.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:58:24
2025-09-28T13:58:57.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:58:57.732 [DEBUG] [Thread-126455] [transport.py] [_log()] starting thread (client mode): 0x2e375c00
2025-09-28T13:58:57.732 [DEBUG] [Thread-126455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:57.751 [DEBUG] [Thread-126455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:58:57.751 [INFO] [Thread-126455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:57.754 [DEBUG] [Thread-126455] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] Compression: none
2025-09-28T13:58:57.755 [DEBUG] [Thread-126455] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:57.771 [DEBUG] [Thread-126455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:57.771 [DEBUG] [Thread-126455] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:57.771 [DEBUG] [Thread-126455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:58:57.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:58:57.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:57.772 [DEBUG] [Thread-126455] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:57.772 [DEBUG] [Thread-126455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:57.772 [DEBUG] [Thread-126455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:57.772 [DEBUG] [Thread-126455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:58:57.773 [DEBUG] [Thread-126455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:57.783 [INFO] [Thread-126455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:57.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:58.610 [DEBUG] [Thread-126455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:58.610 [DEBUG] [Thread-126455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:58.610 [DEBUG] [Thread-126455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:58:58.651 [DEBUG] [Thread-126455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:58.651 [DEBUG] [Thread-126455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:58.653 [DEBUG] [Thread-126455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:58.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:58.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:58:58.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:58:58.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:58:58.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:58.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:58:58.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498694 -999.00  +19.20   8.91     34   +3.10 1 1 1 1 1   888    0 15.11 -22.40 ----- 8.4 8.9 185.8 15.5 25.4 -25.9 24.1 -26.3 25.0 -24.6 26.4 -26.1
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498694
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:58:58.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:58:24', tmtdew=17.84, humidity=30.1, cloud=0.0, wind=12.49, temperature=18.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:58:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:58:58.672 [DEBUG] [Thread-126455] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:58:58.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-28T13:58:58.761 [DEBUG] [Thread-126458] [transport.py] [_log()] starting thread (client mode): 0x28705540
2025-09-28T13:58:58.761 [DEBUG] [Thread-126458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:58:58.778 [DEBUG] [Thread-126458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:58:58.778 [INFO] [Thread-126458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] client lang: <none>
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] server lang: <none>
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] kex follows: False
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] Compression: none
2025-09-28T13:58:58.790 [DEBUG] [Thread-126458] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:58:58.854 [DEBUG] [Thread-126458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:58:58.854 [DEBUG] [Thread-126458] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:58:58.854 [DEBUG] [Thread-126458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:58:58.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:58:58.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:58:58.912 [DEBUG] [Thread-126458] [transport.py] [_log()] userauth is OK
2025-09-28T13:58:58.912 [DEBUG] [Thread-126458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:58:58.912 [DEBUG] [Thread-126458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:58:58.912 [DEBUG] [Thread-126458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:58:58.912 [DEBUG] [Thread-126458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:58:58.926 [INFO] [Thread-126458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:58:58.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-28T13:58:58.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:58:59.150 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:59.150 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:58:59.880 [DEBUG] [Thread-126458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:58:59.881 [DEBUG] [Thread-126458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:58:59.928 [DEBUG] [Thread-126458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:58:59.928 [DEBUG] [Thread-126458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:58:59.938 [DEBUG] [Thread-126458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:58:59.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:58:59.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-28T13:58:59.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-28T13:58:59.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:58:59.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:58:59.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:58:59.973 [DEBUG] [Thread-126458] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:07.493 [DEBUG] [Thread-126460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:09.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:59:09.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:59:09.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-28T13:59:10.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 58, 56), 17.89, 29.7, 0.0, 14.79, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:59:10.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:58:56
2025-09-28T13:59:10.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:59:10.823 [DEBUG] [Thread-126461] [transport.py] [_log()] starting thread (client mode): 0x28707340
2025-09-28T13:59:10.823 [DEBUG] [Thread-126461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:10.843 [DEBUG] [Thread-126461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:59:10.843 [INFO] [Thread-126461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:10.845 [DEBUG] [Thread-126461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] Compression: none
2025-09-28T13:59:10.846 [DEBUG] [Thread-126461] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:10.858 [DEBUG] [Thread-126461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:10.858 [DEBUG] [Thread-126461] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:10.859 [DEBUG] [Thread-126461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:59:10.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:59:10.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:10.861 [DEBUG] [Thread-126461] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:10.861 [DEBUG] [Thread-126461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:10.862 [DEBUG] [Thread-126461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:10.862 [DEBUG] [Thread-126461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:59:10.862 [DEBUG] [Thread-126461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:10.876 [INFO] [Thread-126461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:10.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:11.649 [DEBUG] [Thread-126461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:11.649 [DEBUG] [Thread-126461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:11.649 [DEBUG] [Thread-126461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:59:11.690 [DEBUG] [Thread-126461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:11.690 [DEBUG] [Thread-126461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:11.693 [DEBUG] [Thread-126461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:11.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:11.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:59:11.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:59:11.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:59:11.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:11.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:59:11.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:11.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.498694 -999.00  +19.20   8.91     34   +3.10 1 1 1 1 1   888    0 15.11 -22.40 ----- 8.4 8.9 185.8 15.5 25.4 -25.9 24.1 -26.3 25.0 -24.6 26.4 -26.1
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.498694
2025-09-28T13:59:11.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:59:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:59:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:59:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:59:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:59:11.708 [DEBUG] [Thread-126461] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:11.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:58:56', tmtdew=17.89, humidity=29.7, cloud=0.0, wind=14.79, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:58:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:59:11.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-28T13:59:11.803 [DEBUG] [Thread-126464] [transport.py] [_log()] starting thread (client mode): 0x287059f0
2025-09-28T13:59:11.803 [DEBUG] [Thread-126464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:11.818 [DEBUG] [Thread-126464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:59:11.818 [INFO] [Thread-126464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] Compression: none
2025-09-28T13:59:11.826 [DEBUG] [Thread-126464] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:11.883 [DEBUG] [Thread-126464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:11.883 [DEBUG] [Thread-126464] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:11.884 [DEBUG] [Thread-126464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:59:11.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:59:11.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:11.939 [DEBUG] [Thread-126464] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:11.940 [DEBUG] [Thread-126464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:11.940 [DEBUG] [Thread-126464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:11.940 [DEBUG] [Thread-126464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:59:11.940 [DEBUG] [Thread-126464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:11.962 [INFO] [Thread-126464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:11.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-28T13:59:11.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:12.943 [DEBUG] [Thread-126464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:12.943 [DEBUG] [Thread-126464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:12.991 [DEBUG] [Thread-126464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:12.991 [DEBUG] [Thread-126464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:13.000 [DEBUG] [Thread-126464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:13.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:13.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-28T13:59:13.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-28T13:59:13.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:13.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:13.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:13.035 [DEBUG] [Thread-126464] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:13.733 [DEBUG] [Thread-126466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:22.524 [DEBUG] [Thread-126467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:23.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:59:23.035 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:59:23.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-28T13:59:23.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 58, 56), 17.89, 29.7, 0.0, 14.79, 18.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:59:23.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:58:56
2025-09-28T13:59:23.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:59:23.860 [DEBUG] [Thread-126468] [transport.py] [_log()] starting thread (client mode): 0x287068c0
2025-09-28T13:59:23.860 [DEBUG] [Thread-126468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:23.882 [DEBUG] [Thread-126468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:59:23.882 [INFO] [Thread-126468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:23.885 [DEBUG] [Thread-126468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:23.886 [DEBUG] [Thread-126468] [transport.py] [_log()] Compression: none
2025-09-28T13:59:23.887 [DEBUG] [Thread-126468] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:23.904 [DEBUG] [Thread-126468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:23.904 [DEBUG] [Thread-126468] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:23.905 [DEBUG] [Thread-126468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:59:23.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:59:23.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:23.907 [DEBUG] [Thread-126468] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:23.907 [DEBUG] [Thread-126468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:23.907 [DEBUG] [Thread-126468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:23.907 [DEBUG] [Thread-126468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:59:23.908 [DEBUG] [Thread-126468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:23.930 [INFO] [Thread-126468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:23.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:24.560 [DEBUG] [Thread-126468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:24.561 [DEBUG] [Thread-126468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:24.561 [DEBUG] [Thread-126468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:59:24.601 [DEBUG] [Thread-126468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:24.601 [DEBUG] [Thread-126468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:24.604 [DEBUG] [Thread-126468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:24.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:24.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:59:24.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:59:24.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:59:24.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:24.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:59:24.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:24.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:24.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:59:24.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.499389 -999.00  +19.60  12.15     33   +3.00 1 1 1 1 1   888    0 15.26 -13.99 ----- 5.7 12.2 203.6 24.3 25.4 -27.1 24.3 -26.1 25.2 -25.5 26.5 -27.6
2025-09-28T13:59:24.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:59:24.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:59:24.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.499389
2025-09-28T13:59:24.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:59:24.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:59:24.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:59:24.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:59:24.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:59:24.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:58:56', tmtdew=17.89, humidity=29.7, cloud=0.0, wind=14.79, temperature=18.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:59:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:59:24.629 [DEBUG] [Thread-126468] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:24.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-28T13:59:24.723 [DEBUG] [Thread-126471] [transport.py] [_log()] starting thread (client mode): 0x28704820
2025-09-28T13:59:24.724 [DEBUG] [Thread-126471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:24.740 [DEBUG] [Thread-126471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:59:24.740 [INFO] [Thread-126471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:24.748 [DEBUG] [Thread-126471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:24.749 [DEBUG] [Thread-126471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:24.750 [DEBUG] [Thread-126471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:24.750 [DEBUG] [Thread-126471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:24.750 [DEBUG] [Thread-126471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:24.750 [DEBUG] [Thread-126471] [transport.py] [_log()] Compression: none
2025-09-28T13:59:24.750 [DEBUG] [Thread-126471] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:24.808 [DEBUG] [Thread-126471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:24.808 [DEBUG] [Thread-126471] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:24.809 [DEBUG] [Thread-126471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:59:24.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:59:24.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:24.864 [DEBUG] [Thread-126471] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:24.864 [DEBUG] [Thread-126471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:24.864 [DEBUG] [Thread-126471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:24.864 [DEBUG] [Thread-126471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:59:24.864 [DEBUG] [Thread-126471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:24.883 [INFO] [Thread-126471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:24.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-28T13:59:24.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:25.861 [DEBUG] [Thread-126471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:25.861 [DEBUG] [Thread-126471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:25.909 [DEBUG] [Thread-126471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:25.909 [DEBUG] [Thread-126471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:25.918 [DEBUG] [Thread-126471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:25.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59: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')
2025-09-28T13:59:25.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-28T13:59:25.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:25.943 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:25.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:25.952 [DEBUG] [Thread-126471] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:35.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:59:35.948 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:59:35.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-28T13:59:36.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 59, 28), 17.99, 29.52, 0.0, 19.74, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:59:36.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:59:28
2025-09-28T13:59:36.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:59:36.770 [DEBUG] [Thread-126473] [transport.py] [_log()] starting thread (client mode): 0x287056f0
2025-09-28T13:59:36.770 [DEBUG] [Thread-126473] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:36.787 [DEBUG] [Thread-126473] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:59:36.788 [INFO] [Thread-126473] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:59:36.790 [DEBUG] [Thread-126473] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] Compression: none
2025-09-28T13:59:36.791 [DEBUG] [Thread-126473] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:36.807 [DEBUG] [Thread-126473] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:36.808 [DEBUG] [Thread-126473] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:36.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:59:36.809 [DEBUG] [Thread-126473] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:59:36.809 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:36.810 [DEBUG] [Thread-126473] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:36.811 [DEBUG] [Thread-126473] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:36.811 [DEBUG] [Thread-126473] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:36.811 [DEBUG] [Thread-126473] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:59:36.811 [DEBUG] [Thread-126473] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:36.829 [INFO] [Thread-126473] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:36.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:37.573 [DEBUG] [Thread-126475 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:37.621 [DEBUG] [Thread-126473] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:37.621 [DEBUG] [Thread-126473] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:37.622 [DEBUG] [Thread-126473] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:59:37.663 [DEBUG] [Thread-126473] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:37.663 [DEBUG] [Thread-126473] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:37.666 [DEBUG] [Thread-126473] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:37.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:37.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:59:37.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:59:37.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:59:37.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:37.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:59:37.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:37.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:37.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:59:37.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.499389 -999.00  +19.60  12.15     33   +3.00 1 1 1 1 1   888    0 15.26 -13.99 ----- 5.7 12.2 203.6 24.3 25.4 -27.1 24.3 -26.1 25.2 -25.5 26.5 -27.6
2025-09-28T13:59:37.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:59:37.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:59:37.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.499389
2025-09-28T13:59:37.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:59:37.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:59:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:59:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:59:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:59:37.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:59:28', tmtdew=17.99, humidity=29.52, cloud=0.0, wind=19.74, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:59:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:59:37.690 [DEBUG] [Thread-126473] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:37.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T13:59:37.791 [DEBUG] [Thread-126477] [transport.py] [_log()] starting thread (client mode): 0x28707880
2025-09-28T13:59:37.791 [DEBUG] [Thread-126477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:37.807 [DEBUG] [Thread-126477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:59:37.807 [INFO] [Thread-126477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:59:37.817 [DEBUG] [Thread-126477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:37.818 [DEBUG] [Thread-126477] [transport.py] [_log()] Compression: none
2025-09-28T13:59:37.819 [DEBUG] [Thread-126477] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:37.877 [DEBUG] [Thread-126477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:37.878 [DEBUG] [Thread-126477] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:37.878 [DEBUG] [Thread-126477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:59:37.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:59:37.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:37.939 [DEBUG] [Thread-126477] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:37.939 [DEBUG] [Thread-126477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:37.940 [DEBUG] [Thread-126477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:37.940 [DEBUG] [Thread-126477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:59:37.940 [DEBUG] [Thread-126477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:37.959 [INFO] [Thread-126477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:37.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-28T13:59:37.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:38.938 [DEBUG] [Thread-126477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:38.938 [DEBUG] [Thread-126477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:38.987 [DEBUG] [Thread-126477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:38.987 [DEBUG] [Thread-126477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:38.996 [DEBUG] [Thread-126477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:39.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:39.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T13:59:39.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') -> 00000000
2025-09-28T13:59:39.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:39.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:39.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:39.032 [DEBUG] [Thread-126477] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:49.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T13:59:49.028 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T13:59:49.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-28T13:59:49.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 59, 28), 17.99, 29.52, 0.0, 19.74, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T13:59:49.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:59:28
2025-09-28T13:59:49.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T13:59:49.847 [DEBUG] [Thread-126479] [transport.py] [_log()] starting thread (client mode): 0x2e377640
2025-09-28T13:59:49.847 [DEBUG] [Thread-126479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:49.867 [DEBUG] [Thread-126479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T13:59:49.867 [INFO] [Thread-126479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:49.870 [DEBUG] [Thread-126479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:49.871 [DEBUG] [Thread-126479] [transport.py] [_log()] Compression: none
2025-09-28T13:59:49.871 [DEBUG] [Thread-126479] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:49.887 [DEBUG] [Thread-126479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:49.888 [DEBUG] [Thread-126479] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:49.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T13:59:49.888 [DEBUG] [Thread-126479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T13:59:49.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:49.932 [DEBUG] [Thread-126479] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:49.933 [DEBUG] [Thread-126479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:49.933 [DEBUG] [Thread-126479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:49.933 [DEBUG] [Thread-126479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T13:59:49.933 [DEBUG] [Thread-126479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:49.968 [INFO] [Thread-126479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:49.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:50.584 [DEBUG] [Thread-126479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:50.585 [DEBUG] [Thread-126479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:50.585 [DEBUG] [Thread-126479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T13:59:50.625 [DEBUG] [Thread-126479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:50.626 [DEBUG] [Thread-126479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:50.629 [DEBUG] [Thread-126479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:50.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:50.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T13:59:50.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T13:59:50.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T13:59:50.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:50.652 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T13:59:50.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:50.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:50.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T13:59:50.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.499736 -999.00  +19.80  11.08     33   +3.10 1 1 1 1 1   888    0 15.56 -7.98 ----- 15.6 11.1 225.8 22.0 25.4 -25.8 24.2 -25.8 25.2 -25.1 26.6 -25.7
2025-09-28T13:59:50.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T13:59:50.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T13:59:50.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.499736
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T13:59:50.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:59:28', tmtdew=17.99, humidity=29.52, cloud=0.0, wind=19.74, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:59:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T13:59:50.655 [DEBUG] [Thread-126479] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:50.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-28T13:59:50.749 [DEBUG] [Thread-126482] [transport.py] [_log()] starting thread (client mode): 0x2e376530
2025-09-28T13:59:50.749 [DEBUG] [Thread-126482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T13:59:50.764 [DEBUG] [Thread-126482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T13:59:50.764 [INFO] [Thread-126482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T13:59:50.771 [DEBUG] [Thread-126482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T13:59:50.772 [DEBUG] [Thread-126482] [transport.py] [_log()] client lang: <none>
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] server lang: <none>
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] kex follows: False
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] Compression: none
2025-09-28T13:59:50.773 [DEBUG] [Thread-126482] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T13:59:50.832 [DEBUG] [Thread-126482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T13:59:50.832 [DEBUG] [Thread-126482] [transport.py] [_log()] Switch to new keys ...
2025-09-28T13:59:50.833 [DEBUG] [Thread-126482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T13:59:50.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T13:59:50.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T13:59:50.888 [DEBUG] [Thread-126482] [transport.py] [_log()] userauth is OK
2025-09-28T13:59:50.889 [DEBUG] [Thread-126482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T13:59:50.889 [DEBUG] [Thread-126482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T13:59:50.889 [DEBUG] [Thread-126482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T13:59:50.889 [DEBUG] [Thread-126482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T13:59:50.908 [INFO] [Thread-126482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T13:59:50.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-28T13:59:50.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T13:59:51.879 [DEBUG] [Thread-126482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T13:59:51.879 [DEBUG] [Thread-126482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T13:59:51.927 [DEBUG] [Thread-126482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T13:59:51.927 [DEBUG] [Thread-126482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T13:59:51.936 [DEBUG] [Thread-126482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T13:59:51.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T13:59:51.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-28T13:59:51.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-28T13:59:51.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T13:59:51.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T13:59:51.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T13:59:51.971 [DEBUG] [Thread-126482] [transport.py] [_log()] EOF in transport thread
2025-09-28T13:59:52.617 [DEBUG] [Thread-126484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:59.293 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T13:59:59.294 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:01.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:00:01.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:00:01.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-28T14:00:02.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 13, 59, 28), 17.99, 29.52, 0.0, 19.74, 18.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:00:02.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 13:59:28
2025-09-28T14:00:02.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:00:02.865 [DEBUG] [Thread-126485] [transport.py] [_log()] starting thread (client mode): 0x2b9cf820
2025-09-28T14:00:02.865 [DEBUG] [Thread-126485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:02.886 [DEBUG] [Thread-126485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:00:02.886 [INFO] [Thread-126485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:00:02.889 [DEBUG] [Thread-126485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] Compression: none
2025-09-28T14:00:02.890 [DEBUG] [Thread-126485] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:02.905 [DEBUG] [Thread-126485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:02.905 [DEBUG] [Thread-126485] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:02.905 [DEBUG] [Thread-126485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:00:02.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:00:02.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:02.906 [DEBUG] [Thread-126485] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:02.906 [DEBUG] [Thread-126485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:02.906 [DEBUG] [Thread-126485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:02.906 [DEBUG] [Thread-126485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:00:02.906 [DEBUG] [Thread-126485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:02.915 [INFO] [Thread-126485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:02.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:07.661 [DEBUG] [Thread-126487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:08.625 [DEBUG] [Thread-126485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:08.625 [DEBUG] [Thread-126485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:08.625 [DEBUG] [Thread-126485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:00:08.666 [DEBUG] [Thread-126485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:08.666 [DEBUG] [Thread-126485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:08.669 [DEBUG] [Thread-126485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:08.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:08.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:00:08.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:00:08.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:00:08.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:08.737 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:00:08.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.499736 -999.00  +19.80  11.08     33   +3.10 1 1 1 1 1   888    0 15.56 -7.98 ----- 15.6 11.1 225.8 22.0 25.4 -25.8 24.2 -25.8 25.2 -25.1 26.6 -25.7
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.499736
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:00:08.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T13:59:28', tmtdew=17.99, humidity=29.52, cloud=0.0, wind=19.74, temperature=18.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T11:59:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:00:08.738 [DEBUG] [Thread-126485] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:08.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-28T14:00:08.824 [DEBUG] [Thread-126489] [transport.py] [_log()] starting thread (client mode): 0x28706f80
2025-09-28T14:00:08.825 [DEBUG] [Thread-126489] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:08.839 [DEBUG] [Thread-126489] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:00:08.840 [INFO] [Thread-126489] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:08.847 [DEBUG] [Thread-126489] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:08.848 [DEBUG] [Thread-126489] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:08.848 [DEBUG] [Thread-126489] [transport.py] [_log()] Compression: none
2025-09-28T14:00:08.848 [DEBUG] [Thread-126489] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:08.906 [DEBUG] [Thread-126489] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:08.906 [DEBUG] [Thread-126489] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:08.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:00:08.907 [DEBUG] [Thread-126489] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:00:08.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:08.963 [DEBUG] [Thread-126489] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:08.963 [DEBUG] [Thread-126489] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:08.963 [DEBUG] [Thread-126489] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:08.963 [DEBUG] [Thread-126489] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:00:08.963 [DEBUG] [Thread-126489] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:08.981 [INFO] [Thread-126489] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:08.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-28T14:00:08.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:09.950 [DEBUG] [Thread-126489] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:09.950 [DEBUG] [Thread-126489] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:09.998 [DEBUG] [Thread-126489] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:09.998 [DEBUG] [Thread-126489] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:10.006 [DEBUG] [Thread-126489] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:10.014 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:10.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-28T14:00:10.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-28T14:00:10.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:10.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:10.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:10.038 [DEBUG] [Thread-126489] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:13.787 [DEBUG] [Thread-126491 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:20.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:00:20.041 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:00:20.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:00:20.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 0), 18.22, 29.26, 0.0, 24.65, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:00:20.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:00:00
2025-09-28T14:00:20.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:00:20.866 [DEBUG] [Thread-126492] [transport.py] [_log()] starting thread (client mode): 0x2b9cd9c0
2025-09-28T14:00:20.866 [DEBUG] [Thread-126492] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:20.884 [DEBUG] [Thread-126492] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:00:20.884 [INFO] [Thread-126492] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] Compression: none
2025-09-28T14:00:20.886 [DEBUG] [Thread-126492] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:20.903 [DEBUG] [Thread-126492] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:20.904 [DEBUG] [Thread-126492] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:20.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:00:20.905 [DEBUG] [Thread-126492] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:00:20.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:20.907 [DEBUG] [Thread-126492] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:20.907 [DEBUG] [Thread-126492] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:20.907 [DEBUG] [Thread-126492] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:20.907 [DEBUG] [Thread-126492] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:00:20.907 [DEBUG] [Thread-126492] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:20.928 [INFO] [Thread-126492] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:20.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:21.530 [DEBUG] [Thread-126492] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:21.530 [DEBUG] [Thread-126492] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:21.530 [DEBUG] [Thread-126492] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:00:21.571 [DEBUG] [Thread-126492] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:21.571 [DEBUG] [Thread-126492] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:21.574 [DEBUG] [Thread-126492] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:21.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:21.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:00:21.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:00:21.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:00:21.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:21.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:00:21.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:21.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:21.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:00:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500083 -999.00  +19.80  14.46     33   +3.30 1 1 1 1 1   888    0 15.69 -2.07 ----- 12.9 14.5 192.9 28.7 25.3 -28.0 24.2 -26.2 25.2 -26.6 26.5 -28.5
2025-09-28T14:00:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:00:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:00:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500083
2025-09-28T14:00:21.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:00:21.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:00:21.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:00:21.601 [DEBUG] [Thread-126492] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:21.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:00:21.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:00:21.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:00:00', tmtdew=18.22, humidity=29.26, cloud=0.0, wind=24.65, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:00:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:00:21.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-28T14:00:21.697 [DEBUG] [Thread-126495] [transport.py] [_log()] starting thread (client mode): 0x2b96efb0
2025-09-28T14:00:21.698 [DEBUG] [Thread-126495] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:21.713 [DEBUG] [Thread-126495] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:00:21.713 [INFO] [Thread-126495] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:00:21.720 [DEBUG] [Thread-126495] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:21.720 [DEBUG] [Thread-126495] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:00:21.720 [DEBUG] [Thread-126495] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] Compression: none
2025-09-28T14:00:21.721 [DEBUG] [Thread-126495] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:21.782 [DEBUG] [Thread-126495] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:21.783 [DEBUG] [Thread-126495] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:21.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:00:21.784 [DEBUG] [Thread-126495] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:00:21.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:21.839 [DEBUG] [Thread-126495] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:21.839 [DEBUG] [Thread-126495] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:21.840 [DEBUG] [Thread-126495] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:21.840 [DEBUG] [Thread-126495] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:00:21.840 [DEBUG] [Thread-126495] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:21.859 [INFO] [Thread-126495] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:21.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-28T14:00:21.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:22.690 [DEBUG] [Thread-126497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:22.886 [DEBUG] [Thread-126495] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:22.887 [DEBUG] [Thread-126495] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:22.934 [DEBUG] [Thread-126495] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:22.934 [DEBUG] [Thread-126495] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:22.943 [DEBUG] [Thread-126495] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:22.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:22.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-28T14:00: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') -> 00000000
2025-09-28T14:00:22.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:22.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:22.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:22.978 [DEBUG] [Thread-126495] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:32.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:00:32.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:00:32.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-28T14:00:33.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 0), 18.22, 29.26, 0.0, 24.65, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:00:33.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:00:00
2025-09-28T14:00:33.711 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:00:33.864 [DEBUG] [Thread-126498] [transport.py] [_log()] starting thread (client mode): 0x28707fd0
2025-09-28T14:00:33.864 [DEBUG] [Thread-126498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:33.885 [DEBUG] [Thread-126498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:00:33.885 [INFO] [Thread-126498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:00:33.888 [DEBUG] [Thread-126498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:33.888 [DEBUG] [Thread-126498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:00:33.888 [DEBUG] [Thread-126498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:33.888 [DEBUG] [Thread-126498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:33.888 [DEBUG] [Thread-126498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] Compression: none
2025-09-28T14:00:33.889 [DEBUG] [Thread-126498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:33.906 [DEBUG] [Thread-126498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:33.906 [DEBUG] [Thread-126498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:33.907 [DEBUG] [Thread-126498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:00:33.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:00:33.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:33.908 [DEBUG] [Thread-126498] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:33.908 [DEBUG] [Thread-126498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:33.908 [DEBUG] [Thread-126498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:33.908 [DEBUG] [Thread-126498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:00:33.908 [DEBUG] [Thread-126498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:33.939 [INFO] [Thread-126498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:33.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:34.912 [DEBUG] [Thread-126498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:34.912 [DEBUG] [Thread-126498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:34.913 [DEBUG] [Thread-126498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:00:34.953 [DEBUG] [Thread-126498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:34.954 [DEBUG] [Thread-126498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:34.957 [DEBUG] [Thread-126498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:34.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:34.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:00:34.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:00:34.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:00:34.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:34.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:00:34.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:34.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500083 -999.00  +19.80  14.46     33   +3.30 1 1 1 1 1   888    0 15.69 -2.07 ----- 12.9 14.5 192.9 28.7 25.3 -28.0 24.2 -26.2 25.2 -26.6 26.5 -28.5
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500083
2025-09-28T14:00:34.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:00:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:00:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:00:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:00:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:00:34.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:00:00', tmtdew=18.22, humidity=29.26, cloud=0.0, wind=24.65, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:00:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:00:34.976 [DEBUG] [Thread-126498] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:35.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-28T14:00:35.060 [DEBUG] [Thread-126501] [transport.py] [_log()] starting thread (client mode): 0x2b9ccfa0
2025-09-28T14:00:35.060 [DEBUG] [Thread-126501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:35.075 [DEBUG] [Thread-126501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:00:35.075 [INFO] [Thread-126501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] Compression: none
2025-09-28T14:00:35.083 [DEBUG] [Thread-126501] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:35.145 [DEBUG] [Thread-126501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:35.146 [DEBUG] [Thread-126501] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:35.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:00:35.147 [DEBUG] [Thread-126501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:00:35.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:35.205 [DEBUG] [Thread-126501] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:35.205 [DEBUG] [Thread-126501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:35.205 [DEBUG] [Thread-126501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:35.205 [DEBUG] [Thread-126501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:00:35.205 [DEBUG] [Thread-126501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:35.225 [INFO] [Thread-126501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:35.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-28T14:00:35.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:36.192 [DEBUG] [Thread-126501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:36.193 [DEBUG] [Thread-126501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:36.244 [DEBUG] [Thread-126501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:36.244 [DEBUG] [Thread-126501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:36.253 [DEBUG] [Thread-126501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:36.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:36.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-28T14:00:36.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-28T14:00:36.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:36.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:36.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:36.288 [DEBUG] [Thread-126501] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:37.736 [DEBUG] [Thread-126503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:46.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:00:46.290 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:00:46.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-28T14:00:46.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 0, 32), 18.33, 29.07, 0.0, 27.3, 18.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:00:46.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:00:32
2025-09-28T14:00:46.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:00:47.124 [DEBUG] [Thread-126504] [transport.py] [_log()] starting thread (client mode): 0x2b9ce7d0
2025-09-28T14:00:47.125 [DEBUG] [Thread-126504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:47.145 [DEBUG] [Thread-126504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:00:47.145 [INFO] [Thread-126504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] Compression: none
2025-09-28T14:00:47.148 [DEBUG] [Thread-126504] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:47.164 [DEBUG] [Thread-126504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:47.165 [DEBUG] [Thread-126504] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:47.165 [DEBUG] [Thread-126504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:00:47.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:00:47.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:47.167 [DEBUG] [Thread-126504] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:47.167 [DEBUG] [Thread-126504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:47.167 [DEBUG] [Thread-126504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:47.167 [DEBUG] [Thread-126504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:00:47.167 [DEBUG] [Thread-126504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:47.182 [INFO] [Thread-126504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:47.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:47.955 [DEBUG] [Thread-126504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:47.956 [DEBUG] [Thread-126504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:47.956 [DEBUG] [Thread-126504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:00:47.997 [DEBUG] [Thread-126504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:47.997 [DEBUG] [Thread-126504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:47.999 [DEBUG] [Thread-126504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:48.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:48.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:00:48.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:00:48.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:00:48.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:48.024 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:00:48.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:48.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:48.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:00:48.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500083 -999.00  +19.80  14.46     33   +3.30 1 1 1 1 1   888    0 15.69 -2.07 ----- 12.9 14.5 192.9 28.7 25.3 -28.0 24.2 -26.2 25.2 -26.6 26.5 -28.5
2025-09-28T14:00:48.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:00:48.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:00:48.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500083
2025-09-28T14:00:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:00:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:00:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:00:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:00:48.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:00:48.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:00:32', tmtdew=18.33, humidity=29.07, cloud=0.0, wind=27.3, temperature=18.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:00:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:00:48.027 [DEBUG] [Thread-126504] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:48.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-28T14:00:48.121 [DEBUG] [Thread-126507] [transport.py] [_log()] starting thread (client mode): 0x2b9cf430
2025-09-28T14:00:48.121 [DEBUG] [Thread-126507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:00:48.136 [DEBUG] [Thread-126507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:00:48.136 [INFO] [Thread-126507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:00:48.144 [DEBUG] [Thread-126507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:00:48.144 [DEBUG] [Thread-126507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] client lang: <none>
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] server lang: <none>
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] kex follows: False
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] Compression: none
2025-09-28T14:00:48.145 [DEBUG] [Thread-126507] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:00:48.203 [DEBUG] [Thread-126507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:00:48.203 [DEBUG] [Thread-126507] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:00:48.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:00:48.204 [DEBUG] [Thread-126507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:00:48.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:00:48.260 [DEBUG] [Thread-126507] [transport.py] [_log()] userauth is OK
2025-09-28T14:00:48.260 [DEBUG] [Thread-126507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:00:48.260 [DEBUG] [Thread-126507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:00:48.260 [DEBUG] [Thread-126507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:00:48.260 [DEBUG] [Thread-126507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:00:48.280 [INFO] [Thread-126507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:00:48.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-28T14:00:48.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:00:49.232 [DEBUG] [Thread-126507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:00:49.233 [DEBUG] [Thread-126507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:00:49.280 [DEBUG] [Thread-126507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:00:49.280 [DEBUG] [Thread-126507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:00:49.289 [DEBUG] [Thread-126507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:00:49.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:00:49.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-28T14:00:49.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-28T14:00:49.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:00:49.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:00:49.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:00:49.324 [DEBUG] [Thread-126507] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:00:52.769 [DEBUG] [Thread-126509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:59.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:00:59.327 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:00:59.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-28T14:00:59.436 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:59.437 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:00:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 0, 32), 18.33, 29.07, 0.0, 27.3, 18.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:00:59.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:00:32
2025-09-28T14:01:00.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:01:00.150 [DEBUG] [Thread-126510] [transport.py] [_log()] starting thread (client mode): 0x28706380
2025-09-28T14:01:00.150 [DEBUG] [Thread-126510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:00.170 [DEBUG] [Thread-126510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:01:00.170 [INFO] [Thread-126510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] Compression: none
2025-09-28T14:01:00.174 [DEBUG] [Thread-126510] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:00.190 [DEBUG] [Thread-126510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:00.190 [DEBUG] [Thread-126510] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:01:00.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:01:00.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:01:00.191 [DEBUG] [Thread-126510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:00.207 [INFO] [Thread-126510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:00.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:00.772 [DEBUG] [Thread-126510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:00.773 [DEBUG] [Thread-126510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:00.773 [DEBUG] [Thread-126510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:01:00.823 [DEBUG] [Thread-126510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:00.823 [DEBUG] [Thread-126510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:00.826 [DEBUG] [Thread-126510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:00.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:00.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:01:00.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:01:00.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:01:00.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:00.843 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:01:00.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:00.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:01:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500431 -999.00  +19.70   8.04     33   +3.20 1 1 1 1 1   888    0 15.87 3.46 ----- 8.6 8.0 192.5 28.3 25.3 -26.1 24.2 -26.4 25.1 -27.6 26.5 -26.0
2025-09-28T14:01:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:01:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:01:00.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500431
2025-09-28T14:01:00.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:01:00.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:01:00.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:01:00.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:01:00.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:01:00.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:00:32', tmtdew=18.33, humidity=29.07, cloud=0.0, wind=27.3, temperature=18.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:00:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:01:00.846 [DEBUG] [Thread-126510] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:00.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:01:00.942 [DEBUG] [Thread-126513] [transport.py] [_log()] starting thread (client mode): 0x28707430
2025-09-28T14:01:00.942 [DEBUG] [Thread-126513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:00.956 [DEBUG] [Thread-126513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:01:00.957 [INFO] [Thread-126513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:01:00.964 [DEBUG] [Thread-126513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:00.964 [DEBUG] [Thread-126513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] Compression: none
2025-09-28T14:01:00.965 [DEBUG] [Thread-126513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:01.023 [DEBUG] [Thread-126513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:01.023 [DEBUG] [Thread-126513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:01.024 [DEBUG] [Thread-126513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:01:01.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:01:01.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:01.079 [DEBUG] [Thread-126513] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:01.079 [DEBUG] [Thread-126513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:01.080 [DEBUG] [Thread-126513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:01.080 [DEBUG] [Thread-126513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:01:01.080 [DEBUG] [Thread-126513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:01.098 [INFO] [Thread-126513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:01.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:01:01.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:02.109 [DEBUG] [Thread-126513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:02.109 [DEBUG] [Thread-126513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:02.156 [DEBUG] [Thread-126513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:02.156 [DEBUG] [Thread-126513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:02.166 [DEBUG] [Thread-126513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:02.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:02.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-28T14:01: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') -> 00000000
2025-09-28T14:01:02.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:02.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:02.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:02.201 [DEBUG] [Thread-126513] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:07.817 [DEBUG] [Thread-126515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:12.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:01:12.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:01:12.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:01:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 1, 4), 18.41, 28.94, 0.0, 27.3, 18.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:01:12.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:01:04
2025-09-28T14:01:12.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:01:13.039 [DEBUG] [Thread-126516] [transport.py] [_log()] starting thread (client mode): 0x2b9cd630
2025-09-28T14:01:13.039 [DEBUG] [Thread-126516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:13.058 [DEBUG] [Thread-126516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:01:13.058 [INFO] [Thread-126516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:13.061 [DEBUG] [Thread-126516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:13.062 [DEBUG] [Thread-126516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:13.062 [DEBUG] [Thread-126516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:13.062 [DEBUG] [Thread-126516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:13.062 [DEBUG] [Thread-126516] [transport.py] [_log()] Compression: none
2025-09-28T14:01:13.062 [DEBUG] [Thread-126516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:13.077 [DEBUG] [Thread-126516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:13.078 [DEBUG] [Thread-126516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:13.078 [DEBUG] [Thread-126516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:01:13.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:01:13.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:13.080 [DEBUG] [Thread-126516] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:13.080 [DEBUG] [Thread-126516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:13.080 [DEBUG] [Thread-126516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:13.080 [DEBUG] [Thread-126516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:01:13.080 [DEBUG] [Thread-126516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:13.104 [INFO] [Thread-126516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:13.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:13.840 [DEBUG] [Thread-126518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:13.844 [DEBUG] [Thread-126516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:13.844 [DEBUG] [Thread-126516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:13.844 [DEBUG] [Thread-126516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:01:13.885 [DEBUG] [Thread-126516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:13.885 [DEBUG] [Thread-126516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:13.888 [DEBUG] [Thread-126516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:13.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:13.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:01:13.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:01:13.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:01:13.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:13.910 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:01:13.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:13.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500431 -999.00  +19.70   8.04     33   +3.20 1 1 1 1 1   888    0 15.87 3.46 ----- 8.6 8.0 192.5 28.3 25.3 -26.1 24.2 -26.4 25.1 -27.6 26.5 -26.0
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500431
2025-09-28T14:01:13.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:01:13.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:01:13.912 [DEBUG] [Thread-126516] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:13.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:01:13.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:01:13.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:01:13.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:01:04', tmtdew=18.41, humidity=28.94, cloud=0.0, wind=27.3, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:00:37.238', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:01:13.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-28T14:01:14.006 [DEBUG] [Thread-126520] [transport.py] [_log()] starting thread (client mode): 0x2b9cd240
2025-09-28T14:01:14.006 [DEBUG] [Thread-126520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:14.023 [DEBUG] [Thread-126520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:01:14.023 [INFO] [Thread-126520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:01:14.030 [DEBUG] [Thread-126520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:14.030 [DEBUG] [Thread-126520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:01:14.030 [DEBUG] [Thread-126520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:14.030 [DEBUG] [Thread-126520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:14.030 [DEBUG] [Thread-126520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] Compression: none
2025-09-28T14:01:14.031 [DEBUG] [Thread-126520] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:14.086 [DEBUG] [Thread-126520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:14.087 [DEBUG] [Thread-126520] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:14.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:01:14.088 [DEBUG] [Thread-126520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:01:14.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:14.143 [DEBUG] [Thread-126520] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:14.143 [DEBUG] [Thread-126520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:14.143 [DEBUG] [Thread-126520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:14.143 [DEBUG] [Thread-126520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:01:14.143 [DEBUG] [Thread-126520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:14.162 [INFO] [Thread-126520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:14.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-28T14:01:14.163 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:15.134 [DEBUG] [Thread-126520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:15.135 [DEBUG] [Thread-126520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:15.183 [DEBUG] [Thread-126520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:15.183 [DEBUG] [Thread-126520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:15.192 [DEBUG] [Thread-126520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:15.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:15.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')
2025-09-28T14:01:15.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-28T14:01:15.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:15.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:15.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:15.231 [DEBUG] [Thread-126520] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:22.857 [DEBUG] [Thread-126522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:25.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:01:25.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:01:25.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-28T14:01:25.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 1, 4), 18.41, 28.94, 0.0, 27.3, 18.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:01:25.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:01:04
2025-09-28T14:01:25.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:01:26.066 [DEBUG] [Thread-126523] [transport.py] [_log()] starting thread (client mode): 0x2b9ce4a0
2025-09-28T14:01:26.066 [DEBUG] [Thread-126523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:26.086 [DEBUG] [Thread-126523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:01:26.086 [INFO] [Thread-126523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:26.089 [DEBUG] [Thread-126523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:26.090 [DEBUG] [Thread-126523] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:26.090 [DEBUG] [Thread-126523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:26.090 [DEBUG] [Thread-126523] [transport.py] [_log()] Compression: none
2025-09-28T14:01:26.090 [DEBUG] [Thread-126523] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:26.108 [DEBUG] [Thread-126523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:26.109 [DEBUG] [Thread-126523] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:26.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:01:26.110 [DEBUG] [Thread-126523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:01:26.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:26.113 [DEBUG] [Thread-126523] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:26.113 [DEBUG] [Thread-126523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:26.113 [DEBUG] [Thread-126523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:26.113 [DEBUG] [Thread-126523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:01:26.113 [DEBUG] [Thread-126523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:26.136 [INFO] [Thread-126523] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:26.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:26.726 [DEBUG] [Thread-126523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:26.727 [DEBUG] [Thread-126523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:26.727 [DEBUG] [Thread-126523] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:01:26.767 [DEBUG] [Thread-126523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:26.767 [DEBUG] [Thread-126523] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:26.769 [DEBUG] [Thread-126523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:26.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:26.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:01:26.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:01:26.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:01:26.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:26.784 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:01:26.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500778 -999.00  +19.60  12.16     33   +3.20 1 1 1 1 1   888    0 15.90 8.61 ----- 5.8 12.2 204.2 20.8 25.4 -26.4 24.1 -25.5 25.2 -25.6 26.6 -26.5
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:01:26.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500778
2025-09-28T14:01:26.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:01:26.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:01:26.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:01:26.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:01:26.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:01:26.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:01:04', tmtdew=18.41, humidity=28.94, cloud=0.0, wind=27.3, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:01:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:01:26.787 [DEBUG] [Thread-126523] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:26.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-28T14:01:26.885 [DEBUG] [Thread-126526] [transport.py] [_log()] starting thread (client mode): 0x2b9ce590
2025-09-28T14:01:26.885 [DEBUG] [Thread-126526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:26.903 [DEBUG] [Thread-126526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:01:26.903 [INFO] [Thread-126526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:26.913 [DEBUG] [Thread-126526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:26.914 [DEBUG] [Thread-126526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:26.915 [DEBUG] [Thread-126526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:26.915 [DEBUG] [Thread-126526] [transport.py] [_log()] Compression: none
2025-09-28T14:01:26.915 [DEBUG] [Thread-126526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:26.976 [DEBUG] [Thread-126526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:26.977 [DEBUG] [Thread-126526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:26.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:01:26.978 [DEBUG] [Thread-126526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:01:26.979 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:27.036 [DEBUG] [Thread-126526] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:27.037 [DEBUG] [Thread-126526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:27.037 [DEBUG] [Thread-126526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:27.037 [DEBUG] [Thread-126526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:01:27.037 [DEBUG] [Thread-126526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:27.055 [INFO] [Thread-126526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:27.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:01:27.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:28.030 [DEBUG] [Thread-126526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:28.030 [DEBUG] [Thread-126526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:28.078 [DEBUG] [Thread-126526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:28.078 [DEBUG] [Thread-126526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:28.087 [DEBUG] [Thread-126526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:28.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:28.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-28T14:01:28.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-28T14:01:28.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:28.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:28.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:28.122 [DEBUG] [Thread-126526] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:37.890 [DEBUG] [Thread-126528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:38.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:01:38.124 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:01:38.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-28T14:01:38.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 1, 4), 18.41, 28.94, 0.0, 27.3, 18.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:01:38.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:01:04
2025-09-28T14:01:38.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:01:38.991 [DEBUG] [Thread-126529] [transport.py] [_log()] starting thread (client mode): 0x28706ce0
2025-09-28T14:01:38.991 [DEBUG] [Thread-126529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:39.011 [DEBUG] [Thread-126529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:01:39.011 [INFO] [Thread-126529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] Compression: none
2025-09-28T14:01:39.014 [DEBUG] [Thread-126529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:39.032 [DEBUG] [Thread-126529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:39.032 [DEBUG] [Thread-126529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:39.032 [DEBUG] [Thread-126529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:01:39.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:01:39.032 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:39.033 [DEBUG] [Thread-126529] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:39.033 [DEBUG] [Thread-126529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:39.033 [DEBUG] [Thread-126529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:39.033 [DEBUG] [Thread-126529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:01:39.033 [DEBUG] [Thread-126529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:39.052 [INFO] [Thread-126529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:39.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:39.785 [DEBUG] [Thread-126529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:39.785 [DEBUG] [Thread-126529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:39.785 [DEBUG] [Thread-126529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:01:39.826 [DEBUG] [Thread-126529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:39.826 [DEBUG] [Thread-126529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:39.829 [DEBUG] [Thread-126529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:39.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:39.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:01:39.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:01:39.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:01:39.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:39.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:01:39.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:39.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:39.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:01:39.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500778 -999.00  +19.60  12.16     33   +3.20 1 1 1 1 1   888    0 15.90 8.61 ----- 5.8 12.2 204.2 20.8 25.4 -26.4 24.1 -25.5 25.2 -25.6 26.6 -26.5
2025-09-28T14:01:39.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:01:39.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:01:39.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500778
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:01:39.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:01:04', tmtdew=18.41, humidity=28.94, cloud=0.0, wind=27.3, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:01:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:01:39.855 [DEBUG] [Thread-126529] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:39.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-28T14:01:39.950 [DEBUG] [Thread-126532] [transport.py] [_log()] starting thread (client mode): 0x2b9cf3a0
2025-09-28T14:01:39.950 [DEBUG] [Thread-126532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:39.964 [DEBUG] [Thread-126532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:01:39.965 [INFO] [Thread-126532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:01:39.972 [DEBUG] [Thread-126532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:39.972 [DEBUG] [Thread-126532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:01:39.972 [DEBUG] [Thread-126532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] Compression: none
2025-09-28T14:01:39.973 [DEBUG] [Thread-126532] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:40.032 [DEBUG] [Thread-126532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:40.033 [DEBUG] [Thread-126532] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:40.033 [DEBUG] [Thread-126532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:01:40.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:01:40.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:40.092 [DEBUG] [Thread-126532] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:40.092 [DEBUG] [Thread-126532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:40.092 [DEBUG] [Thread-126532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:40.092 [DEBUG] [Thread-126532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:01:40.092 [DEBUG] [Thread-126532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:40.111 [INFO] [Thread-126532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:40.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-28T14:01:40.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:41.073 [DEBUG] [Thread-126532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:41.073 [DEBUG] [Thread-126532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:41.121 [DEBUG] [Thread-126532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:41.121 [DEBUG] [Thread-126532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:41.129 [DEBUG] [Thread-126532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:41.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:41.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-28T14:01:41.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-28T14:01:41.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:41.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:41.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:41.161 [DEBUG] [Thread-126532] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:51.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:01:51.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:01:51.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-28T14:01:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 1, 36), 18.65, 28.56, 0.0, 17.7, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:01:51.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:01:36
2025-09-28T14:01:51.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:01:52.005 [DEBUG] [Thread-126534] [transport.py] [_log()] starting thread (client mode): 0x287076d0
2025-09-28T14:01:52.005 [DEBUG] [Thread-126534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:52.021 [DEBUG] [Thread-126534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:01:52.021 [INFO] [Thread-126534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:52.024 [DEBUG] [Thread-126534] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] Compression: none
2025-09-28T14:01:52.025 [DEBUG] [Thread-126534] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:52.041 [DEBUG] [Thread-126534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:52.041 [DEBUG] [Thread-126534] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:52.042 [DEBUG] [Thread-126534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:01:52.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:01:52.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:52.043 [DEBUG] [Thread-126534] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:52.044 [DEBUG] [Thread-126534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:52.044 [DEBUG] [Thread-126534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:52.044 [DEBUG] [Thread-126534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:01:52.044 [DEBUG] [Thread-126534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:52.068 [INFO] [Thread-126534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:52.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:52.794 [DEBUG] [Thread-126534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:52.794 [DEBUG] [Thread-126534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:52.795 [DEBUG] [Thread-126534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:01:52.836 [DEBUG] [Thread-126534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:52.836 [DEBUG] [Thread-126534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:52.839 [DEBUG] [Thread-126534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:52.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:52.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:01:52.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:01:52.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:01:52.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:52.861 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:01:52.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:52.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.500778 -999.00  +19.60  12.16     33   +3.20 1 1 1 1 1   888    0 15.90 8.61 ----- 5.8 12.2 204.2 20.8 25.4 -26.4 24.1 -25.5 25.2 -25.6 26.6 -26.5
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.500778
2025-09-28T14:01:52.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:01:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:01:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:01:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:01:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:01:52.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:01:36', tmtdew=18.65, humidity=28.56, cloud=0.0, wind=17.7, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:01:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:01:52.864 [DEBUG] [Thread-126534] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:52.932 [DEBUG] [Thread-126537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:52.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-28T14:01:52.958 [DEBUG] [Thread-126538] [transport.py] [_log()] starting thread (client mode): 0x2b9cd150
2025-09-28T14:01:52.958 [DEBUG] [Thread-126538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:01:52.973 [DEBUG] [Thread-126538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:01:52.973 [INFO] [Thread-126538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:01:52.980 [DEBUG] [Thread-126538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] client lang: <none>
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] server lang: <none>
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] kex follows: False
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] Compression: none
2025-09-28T14:01:52.981 [DEBUG] [Thread-126538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:01:53.039 [DEBUG] [Thread-126538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:01:53.039 [DEBUG] [Thread-126538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:01:53.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:01:53.040 [DEBUG] [Thread-126538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:01:53.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:01:53.095 [DEBUG] [Thread-126538] [transport.py] [_log()] userauth is OK
2025-09-28T14:01:53.095 [DEBUG] [Thread-126538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:01:53.095 [DEBUG] [Thread-126538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:01:53.096 [DEBUG] [Thread-126538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:01:53.096 [DEBUG] [Thread-126538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:01:53.115 [INFO] [Thread-126538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:01:53.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-28T14:01:53.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:01:54.065 [DEBUG] [Thread-126538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:01:54.065 [DEBUG] [Thread-126538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:01:54.114 [DEBUG] [Thread-126538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:01:54.115 [DEBUG] [Thread-126538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:01:54.125 [DEBUG] [Thread-126538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:01:54.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:01:54.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-28T14:01:54.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-28T14:01:54.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:01:54.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:01:54.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:01:54.165 [DEBUG] [Thread-126538] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:01:59.580 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:01:59.581 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:04.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:02:04.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:02:04.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-28T14:02:04.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 1, 36), 18.65, 28.56, 0.0, 17.7, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:02:04.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:01:36
2025-09-28T14:02:04.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:02:04.996 [DEBUG] [Thread-126540] [transport.py] [_log()] starting thread (client mode): 0x2b96f4c0
2025-09-28T14:02:04.997 [DEBUG] [Thread-126540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:05.018 [DEBUG] [Thread-126540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:02:05.018 [INFO] [Thread-126540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:02:05.020 [DEBUG] [Thread-126540] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] Compression: none
2025-09-28T14:02:05.021 [DEBUG] [Thread-126540] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:05.038 [DEBUG] [Thread-126540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:05.038 [DEBUG] [Thread-126540] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:05.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:02:05.039 [DEBUG] [Thread-126540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:02:05.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:05.041 [DEBUG] [Thread-126540] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:05.041 [DEBUG] [Thread-126540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:05.042 [DEBUG] [Thread-126540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:05.042 [DEBUG] [Thread-126540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:02:05.042 [DEBUG] [Thread-126540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:05.058 [INFO] [Thread-126540] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:05.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:05.724 [DEBUG] [Thread-126540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:05.724 [DEBUG] [Thread-126540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:05.725 [DEBUG] [Thread-126540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:02:05.765 [DEBUG] [Thread-126540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:05.766 [DEBUG] [Thread-126540] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:05.769 [DEBUG] [Thread-126540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:05.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:05.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:02:05.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:02:05.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:02:05.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:05.790 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:02:05.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:05.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:05.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:02:05.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501125 -999.00  +19.50  15.54     33   +3.00 1 1 1 1 1   888    0 16.13 14.28 ----- 16.7 15.5 209.2 22.4 25.4 -26.4 24.2 -26.1 25.2 -26.3 26.6 -26.6
2025-09-28T14:02:05.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:02:05.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:02:05.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501125
2025-09-28T14:02:05.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:02:05.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:02:05.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:02:05.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:02:05.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:02:05.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:01:36', tmtdew=18.65, humidity=28.56, cloud=0.0, wind=17.7, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:01:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:02:05.794 [DEBUG] [Thread-126540] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:05.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-28T14:02:05.890 [DEBUG] [Thread-126543] [transport.py] [_log()] starting thread (client mode): 0x2b96e7d0
2025-09-28T14:02:05.890 [DEBUG] [Thread-126543] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:05.904 [DEBUG] [Thread-126543] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:02:05.905 [INFO] [Thread-126543] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:02:05.912 [DEBUG] [Thread-126543] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:05.912 [DEBUG] [Thread-126543] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] Compression: none
2025-09-28T14:02:05.913 [DEBUG] [Thread-126543] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:05.971 [DEBUG] [Thread-126543] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:05.972 [DEBUG] [Thread-126543] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:05.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:02:05.973 [DEBUG] [Thread-126543] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:02:05.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:06.027 [DEBUG] [Thread-126543] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:06.027 [DEBUG] [Thread-126543] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:06.027 [DEBUG] [Thread-126543] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:06.027 [DEBUG] [Thread-126543] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:02:06.028 [DEBUG] [Thread-126543] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:06.047 [INFO] [Thread-126543] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:06.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-28T14:02:06.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:07.064 [DEBUG] [Thread-126543] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:07.064 [DEBUG] [Thread-126543] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:07.112 [DEBUG] [Thread-126543] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:07.112 [DEBUG] [Thread-126543] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:07.121 [DEBUG] [Thread-126543] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:07.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:07.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-28T14:02:07.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-28T14:02:07.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:07.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:07.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:07.156 [DEBUG] [Thread-126543] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:07.967 [DEBUG] [Thread-126545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:13.892 [DEBUG] [Thread-126546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:17.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:02:17.153 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:02:17.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:02:17.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 2, 8), 18.34, 29.12, 0.0, 14.56, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:02:17.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:02:08
2025-09-28T14:02:17.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:02:17.988 [DEBUG] [Thread-126547] [transport.py] [_log()] starting thread (client mode): 0x287040a0
2025-09-28T14:02:17.988 [DEBUG] [Thread-126547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:18.005 [DEBUG] [Thread-126547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:02:18.005 [INFO] [Thread-126547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:18.009 [DEBUG] [Thread-126547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:18.010 [DEBUG] [Thread-126547] [transport.py] [_log()] Compression: none
2025-09-28T14:02:18.010 [DEBUG] [Thread-126547] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:18.029 [DEBUG] [Thread-126547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:18.029 [DEBUG] [Thread-126547] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:18.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:02:18.030 [DEBUG] [Thread-126547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:02:18.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:18.032 [DEBUG] [Thread-126547] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:18.032 [DEBUG] [Thread-126547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:18.033 [DEBUG] [Thread-126547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:18.033 [DEBUG] [Thread-126547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:02:18.033 [DEBUG] [Thread-126547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:18.058 [INFO] [Thread-126547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:18.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:18.807 [DEBUG] [Thread-126547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:18.807 [DEBUG] [Thread-126547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:18.807 [DEBUG] [Thread-126547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:02:18.848 [DEBUG] [Thread-126547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:18.848 [DEBUG] [Thread-126547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:18.850 [DEBUG] [Thread-126547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:18.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:18.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:02:18.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:02:18.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:02:18.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:18.870 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:02:18.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501125 -999.00  +19.50  15.54     33   +3.00 1 1 1 1 1   888    0 16.13 14.28 ----- 16.7 15.5 209.2 22.4 25.4 -26.4 24.2 -26.1 25.2 -26.3 26.6 -26.6
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501125
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:02:18.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:02:18.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:02:08', tmtdew=18.34, humidity=29.12, cloud=0.0, wind=14.56, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:01:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:02:18.871 [DEBUG] [Thread-126547] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:18.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-28T14:02:18.953 [DEBUG] [Thread-126550] [transport.py] [_log()] starting thread (client mode): 0x2b9cdff0
2025-09-28T14:02:18.953 [DEBUG] [Thread-126550] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:18.970 [DEBUG] [Thread-126550] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:02:18.970 [INFO] [Thread-126550] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:02:18.977 [DEBUG] [Thread-126550] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] Compression: none
2025-09-28T14:02:18.978 [DEBUG] [Thread-126550] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:19.034 [DEBUG] [Thread-126550] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:19.035 [DEBUG] [Thread-126550] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:19.035 [DEBUG] [Thread-126550] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:02:19.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:02:19.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:19.091 [DEBUG] [Thread-126550] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:19.092 [DEBUG] [Thread-126550] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:19.092 [DEBUG] [Thread-126550] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:19.092 [DEBUG] [Thread-126550] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:02:19.092 [DEBUG] [Thread-126550] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:19.111 [INFO] [Thread-126550] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:19.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-28T14:02:19.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:20.089 [DEBUG] [Thread-126550] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:20.089 [DEBUG] [Thread-126550] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:20.138 [DEBUG] [Thread-126550] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:20.139 [DEBUG] [Thread-126550] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:20.148 [DEBUG] [Thread-126550] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:20.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:20.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')
2025-09-28T14:02:20.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-28T14:02:20.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:20.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:20.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:20.183 [DEBUG] [Thread-126550] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:23.011 [DEBUG] [Thread-126552 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:30.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:02:30.184 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:02:30.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:02:30.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 2, 8), 18.34, 29.12, 0.0, 14.56, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:02:30.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:02:08
2025-09-28T14:02:30.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:02:31.005 [DEBUG] [Thread-126553] [transport.py] [_log()] starting thread (client mode): 0x28706e30
2025-09-28T14:02:31.006 [DEBUG] [Thread-126553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:31.025 [DEBUG] [Thread-126553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:02:31.025 [INFO] [Thread-126553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:31.027 [DEBUG] [Thread-126553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] Compression: none
2025-09-28T14:02:31.028 [DEBUG] [Thread-126553] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:31.036 [DEBUG] [Thread-126553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:31.037 [DEBUG] [Thread-126553] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:31.037 [DEBUG] [Thread-126553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:02:31.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:02:31.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:31.039 [DEBUG] [Thread-126553] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:31.039 [DEBUG] [Thread-126553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:31.039 [DEBUG] [Thread-126553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:31.039 [DEBUG] [Thread-126553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:02:31.039 [DEBUG] [Thread-126553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:31.057 [INFO] [Thread-126553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:31.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:31.681 [DEBUG] [Thread-126553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:31.681 [DEBUG] [Thread-126553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:31.681 [DEBUG] [Thread-126553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:02:31.722 [DEBUG] [Thread-126553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:31.722 [DEBUG] [Thread-126553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:31.724 [DEBUG] [Thread-126553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:31.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:31.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:02:31.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:02:31.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:02:31.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:31.743 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:02:31.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501472 -999.00  +19.30   6.53     33   +3.00 1 1 1 1 1   888    0 16.27 19.50 ----- 6.2 6.5 228.9 19.2 25.4 -27.0 24.2 -25.7 25.2 -26.5 26.6 -26.8
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501472
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:02:31.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:02:08', tmtdew=18.34, humidity=29.12, cloud=0.0, wind=14.56, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:02:31.744 [DEBUG] [Thread-126553] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:31.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-28T14:02:31.827 [DEBUG] [Thread-126556] [transport.py] [_log()] starting thread (client mode): 0x28704310
2025-09-28T14:02:31.827 [DEBUG] [Thread-126556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:31.847 [DEBUG] [Thread-126556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:02:31.847 [INFO] [Thread-126556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] Compression: none
2025-09-28T14:02:31.855 [DEBUG] [Thread-126556] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:31.913 [DEBUG] [Thread-126556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:31.913 [DEBUG] [Thread-126556] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:31.914 [DEBUG] [Thread-126556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:02:31.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:02:31.914 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:31.971 [DEBUG] [Thread-126556] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:31.971 [DEBUG] [Thread-126556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:31.971 [DEBUG] [Thread-126556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:31.971 [DEBUG] [Thread-126556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:02:31.971 [DEBUG] [Thread-126556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:31.985 [INFO] [Thread-126556] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:31.986 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:02:31.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:32.979 [DEBUG] [Thread-126556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:32.979 [DEBUG] [Thread-126556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:33.027 [DEBUG] [Thread-126556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:33.027 [DEBUG] [Thread-126556] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:33.035 [DEBUG] [Thread-126556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:33.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:33.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')
2025-09-28T14:02:33.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:02:33.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:33.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:33.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:33.067 [DEBUG] [Thread-126556] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:38.067 [DEBUG] [Thread-126558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:43.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:02:43.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:02:43.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-28T14:02:43.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 2, 8), 18.34, 29.12, 0.0, 14.56, 18.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:02:43.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:02:08
2025-09-28T14:02:43.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:02:43.908 [DEBUG] [Thread-126559] [transport.py] [_log()] starting thread (client mode): 0x2e374790
2025-09-28T14:02:43.908 [DEBUG] [Thread-126559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:43.928 [DEBUG] [Thread-126559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:02:43.928 [INFO] [Thread-126559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:02:43.931 [DEBUG] [Thread-126559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:43.931 [DEBUG] [Thread-126559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:02:43.931 [DEBUG] [Thread-126559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] Compression: none
2025-09-28T14:02:43.932 [DEBUG] [Thread-126559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:43.947 [DEBUG] [Thread-126559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:43.947 [DEBUG] [Thread-126559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:43.947 [DEBUG] [Thread-126559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:02:43.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:02:43.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:43.948 [DEBUG] [Thread-126559] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:43.948 [DEBUG] [Thread-126559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:43.948 [DEBUG] [Thread-126559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:43.948 [DEBUG] [Thread-126559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:02:43.948 [DEBUG] [Thread-126559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:43.963 [INFO] [Thread-126559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:43.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:44.755 [DEBUG] [Thread-126559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:44.756 [DEBUG] [Thread-126559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:44.756 [DEBUG] [Thread-126559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:02:44.796 [DEBUG] [Thread-126559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:44.796 [DEBUG] [Thread-126559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:44.799 [DEBUG] [Thread-126559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:44.811 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:44.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:02:44.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:02:44.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:02:44.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:44.821 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:02:44.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:44.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:44.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:02:44.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501472 -999.00  +19.30   6.53     33   +3.00 1 1 1 1 1   888    0 16.27 19.50 ----- 6.2 6.5 228.9 19.2 25.4 -27.0 24.2 -25.7 25.2 -26.5 26.6 -26.8
2025-09-28T14:02:44.823 [DEBUG] [Thread-126559] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:02:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:02:44.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501472
2025-09-28T14:02:44.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:02:44.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:02:44.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:02:44.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:02:44.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:02:44.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:02:08', tmtdew=18.34, humidity=29.12, cloud=0.0, wind=14.56, temperature=18.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:02:44.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-28T14:02:44.927 [DEBUG] [Thread-126562] [transport.py] [_log()] starting thread (client mode): 0x2e374640
2025-09-28T14:02:44.927 [DEBUG] [Thread-126562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:44.942 [DEBUG] [Thread-126562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:02:44.942 [INFO] [Thread-126562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:02:44.949 [DEBUG] [Thread-126562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:44.950 [DEBUG] [Thread-126562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:44.951 [DEBUG] [Thread-126562] [transport.py] [_log()] Compression: none
2025-09-28T14:02:44.951 [DEBUG] [Thread-126562] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:45.006 [DEBUG] [Thread-126562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:45.007 [DEBUG] [Thread-126562] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:45.007 [DEBUG] [Thread-126562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:02:45.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:02:45.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:45.063 [DEBUG] [Thread-126562] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:45.063 [DEBUG] [Thread-126562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:45.063 [DEBUG] [Thread-126562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:45.063 [DEBUG] [Thread-126562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:02:45.064 [DEBUG] [Thread-126562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:45.082 [INFO] [Thread-126562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:45.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-28T14:02:45.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:46.062 [DEBUG] [Thread-126562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:46.062 [DEBUG] [Thread-126562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:46.110 [DEBUG] [Thread-126562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:46.110 [DEBUG] [Thread-126562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:46.120 [DEBUG] [Thread-126562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:46.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:46.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')
2025-09-28T14:02:46.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-28T14:02:46.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:46.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:46.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:46.154 [DEBUG] [Thread-126562] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:53.113 [DEBUG] [Thread-126564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:56.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:02:56.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:02:56.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-28T14:02:56.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 2, 41), 18.25, 29.44, 0.0, 19.82, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:02:56.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:02:41
2025-09-28T14:02:56.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:02:56.976 [DEBUG] [Thread-126565] [transport.py] [_log()] starting thread (client mode): 0x28707d90
2025-09-28T14:02:56.977 [DEBUG] [Thread-126565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:56.996 [DEBUG] [Thread-126565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:02:56.996 [INFO] [Thread-126565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:56.999 [DEBUG] [Thread-126565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] Compression: none
2025-09-28T14:02:57.000 [DEBUG] [Thread-126565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:57.019 [DEBUG] [Thread-126565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:57.019 [DEBUG] [Thread-126565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:57.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:02:57.020 [DEBUG] [Thread-126565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:02:57.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:57.022 [DEBUG] [Thread-126565] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:57.022 [DEBUG] [Thread-126565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:57.022 [DEBUG] [Thread-126565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:57.022 [DEBUG] [Thread-126565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:02:57.023 [DEBUG] [Thread-126565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:57.045 [INFO] [Thread-126565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:57.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:57.819 [DEBUG] [Thread-126565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:57.819 [DEBUG] [Thread-126565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:57.819 [DEBUG] [Thread-126565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:02:57.860 [DEBUG] [Thread-126565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:57.860 [DEBUG] [Thread-126565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:57.863 [DEBUG] [Thread-126565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:57.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:57.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:02:57.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:02:57.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:02:57.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:57.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:02:57.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501472 -999.00  +19.30   6.53     33   +3.00 1 1 1 1 1   888    0 16.27 19.50 ----- 6.2 6.5 228.9 19.2 25.4 -27.0 24.2 -25.7 25.2 -26.5 26.6 -26.8
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:02:57.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501472
2025-09-28T14:02:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:02:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:02:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:02:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:02:57.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:02:57.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:02:41', tmtdew=18.25, humidity=29.44, cloud=0.0, wind=19.82, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:02:57.884 [DEBUG] [Thread-126565] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:57.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-28T14:02:57.978 [DEBUG] [Thread-126568] [transport.py] [_log()] starting thread (client mode): 0x28707b50
2025-09-28T14:02:57.978 [DEBUG] [Thread-126568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:02:57.993 [DEBUG] [Thread-126568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:02:57.993 [INFO] [Thread-126568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:02:58.000 [DEBUG] [Thread-126568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] client lang: <none>
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] server lang: <none>
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] kex follows: False
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] Compression: none
2025-09-28T14:02:58.001 [DEBUG] [Thread-126568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:02:58.062 [DEBUG] [Thread-126568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:02:58.063 [DEBUG] [Thread-126568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:02:58.063 [DEBUG] [Thread-126568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:02:58.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:02:58.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:02:58.119 [DEBUG] [Thread-126568] [transport.py] [_log()] userauth is OK
2025-09-28T14:02:58.119 [DEBUG] [Thread-126568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:02:58.120 [DEBUG] [Thread-126568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:02:58.120 [DEBUG] [Thread-126568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:02:58.120 [DEBUG] [Thread-126568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:02:58.138 [INFO] [Thread-126568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:02:58.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-28T14:02:58.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:02:59.103 [DEBUG] [Thread-126568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:02:59.103 [DEBUG] [Thread-126568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:02:59.152 [DEBUG] [Thread-126568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:02:59.153 [DEBUG] [Thread-126568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:02:59.161 [DEBUG] [Thread-126568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:02:59.173 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:02:59.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')
2025-09-28T14:02:59.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') -> 00000000
2025-09-28T14:02:59.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:02:59.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:02:59.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:02:59.199 [DEBUG] [Thread-126568] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:02:59.723 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:02:59.724 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:08.143 [DEBUG] [Thread-126570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:09.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:03:09.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:03:09.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-28T14:03:09.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 2, 41), 18.25, 29.44, 0.0, 19.82, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:03:09.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:02:41
2025-09-28T14:03:09.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:03:10.054 [DEBUG] [Thread-126571] [transport.py] [_log()] starting thread (client mode): 0x2b96c8b0
2025-09-28T14:03:10.054 [DEBUG] [Thread-126571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:10.075 [DEBUG] [Thread-126571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:03:10.075 [INFO] [Thread-126571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] Compression: none
2025-09-28T14:03:10.078 [DEBUG] [Thread-126571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:10.094 [DEBUG] [Thread-126571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:10.094 [DEBUG] [Thread-126571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:10.095 [DEBUG] [Thread-126571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:03:10.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:03:10.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:10.096 [DEBUG] [Thread-126571] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:10.096 [DEBUG] [Thread-126571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:10.096 [DEBUG] [Thread-126571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:10.096 [DEBUG] [Thread-126571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:03:10.096 [DEBUG] [Thread-126571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:10.106 [INFO] [Thread-126571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:10.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:10.741 [DEBUG] [Thread-126571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:10.741 [DEBUG] [Thread-126571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:10.741 [DEBUG] [Thread-126571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:03:10.782 [DEBUG] [Thread-126571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:10.782 [DEBUG] [Thread-126571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:10.784 [DEBUG] [Thread-126571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:10.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:10.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:03:10.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:03:10.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:03:10.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:10.801 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:03:10.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501819 -999.00  +19.50   3.48     34   +3.30 1 1 1 1 1   888    0 16.62 23.27 ----- 9.7 3.5 181.1 12.7 25.4 -25.7 24.2 -25.4 25.2 -25.5 26.7 -26.2
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501819
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:03:10.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:02:41', tmtdew=18.25, humidity=29.44, cloud=0.0, wind=19.82, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:03:10.802 [DEBUG] [Thread-126571] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:10.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-28T14:03:10.887 [DEBUG] [Thread-126574] [transport.py] [_log()] starting thread (client mode): 0x2e376920
2025-09-28T14:03:10.888 [DEBUG] [Thread-126574] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:10.903 [DEBUG] [Thread-126574] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:03:10.903 [INFO] [Thread-126574] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:10.910 [DEBUG] [Thread-126574] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:10.911 [DEBUG] [Thread-126574] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:10.911 [DEBUG] [Thread-126574] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:10.911 [DEBUG] [Thread-126574] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:10.911 [DEBUG] [Thread-126574] [transport.py] [_log()] Compression: none
2025-09-28T14:03:10.911 [DEBUG] [Thread-126574] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:10.965 [DEBUG] [Thread-126574] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:10.966 [DEBUG] [Thread-126574] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:10.966 [DEBUG] [Thread-126574] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:03:10.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:03:10.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:11.023 [DEBUG] [Thread-126574] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:11.023 [DEBUG] [Thread-126574] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:11.023 [DEBUG] [Thread-126574] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:11.023 [DEBUG] [Thread-126574] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:03:11.023 [DEBUG] [Thread-126574] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:11.040 [INFO] [Thread-126574] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:11.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-28T14:03:11.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:12.030 [DEBUG] [Thread-126574] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:12.030 [DEBUG] [Thread-126574] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:12.081 [DEBUG] [Thread-126574] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:12.082 [DEBUG] [Thread-126574] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:12.093 [DEBUG] [Thread-126574] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:12.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:12.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-28T14:03:12.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-28T14:03:12.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:12.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:12.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:12.132 [DEBUG] [Thread-126574] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:13.939 [DEBUG] [Thread-126576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:22.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:03:22.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:03:22.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-28T14:03:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 3, 13), 18.17, 29.56, 0.0, 16.99, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:03:22.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:03:13
2025-09-28T14:03:22.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:03:22.978 [DEBUG] [Thread-126577] [transport.py] [_log()] starting thread (client mode): 0x28705db0
2025-09-28T14:03:22.978 [DEBUG] [Thread-126577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:22.997 [DEBUG] [Thread-126577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:03:22.997 [INFO] [Thread-126577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:23.000 [DEBUG] [Thread-126577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] Compression: none
2025-09-28T14:03:23.001 [DEBUG] [Thread-126577] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:23.019 [DEBUG] [Thread-126577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:23.020 [DEBUG] [Thread-126577] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:23.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:03:23.021 [DEBUG] [Thread-126577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:03:23.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:23.023 [DEBUG] [Thread-126577] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:23.023 [DEBUG] [Thread-126577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:23.023 [DEBUG] [Thread-126577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:23.024 [DEBUG] [Thread-126577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:03:23.024 [DEBUG] [Thread-126577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:23.041 [INFO] [Thread-126577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:23.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:23.180 [DEBUG] [Thread-126579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:23.829 [DEBUG] [Thread-126577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:23.829 [DEBUG] [Thread-126577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:23.829 [DEBUG] [Thread-126577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:03:23.870 [DEBUG] [Thread-126577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:23.870 [DEBUG] [Thread-126577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:23.873 [DEBUG] [Thread-126577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:23.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:23.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:03:23.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:03:23.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:03:23.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:23.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:03:23.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:23.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:23.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:03:23.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501819 -999.00  +19.50   3.48     34   +3.30 1 1 1 1 1   888    0 16.62 23.27 ----- 9.7 3.5 181.1 12.7 25.4 -25.7 24.2 -25.4 25.2 -25.5 26.7 -26.2
2025-09-28T14:03:23.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:03:23.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:03:23.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501819
2025-09-28T14:03:23.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:03:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:03:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:03:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:03:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:03:23.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:03:13', tmtdew=18.17, humidity=29.56, cloud=0.0, wind=16.99, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:03:23.896 [DEBUG] [Thread-126577] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:23.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-28T14:03:23.992 [DEBUG] [Thread-126581] [transport.py] [_log()] starting thread (client mode): 0x30dde740
2025-09-28T14:03:23.993 [DEBUG] [Thread-126581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:24.007 [DEBUG] [Thread-126581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:03:24.008 [INFO] [Thread-126581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:03:24.015 [DEBUG] [Thread-126581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:24.015 [DEBUG] [Thread-126581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:24.016 [DEBUG] [Thread-126581] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] Compression: none
2025-09-28T14:03:24.017 [DEBUG] [Thread-126581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:24.080 [DEBUG] [Thread-126581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:24.081 [DEBUG] [Thread-126581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:24.081 [DEBUG] [Thread-126581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:03:24.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:03:24.082 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:24.138 [DEBUG] [Thread-126581] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:24.139 [DEBUG] [Thread-126581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:24.139 [DEBUG] [Thread-126581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:24.139 [DEBUG] [Thread-126581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:03:24.139 [DEBUG] [Thread-126581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:24.158 [INFO] [Thread-126581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:24.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-28T14:03:24.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:25.147 [DEBUG] [Thread-126581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:25.148 [DEBUG] [Thread-126581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:25.195 [DEBUG] [Thread-126581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:25.195 [DEBUG] [Thread-126581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:25.203 [DEBUG] [Thread-126581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:25.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:25.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-28T14:03:25.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-28T14:03:25.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:25.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:25.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:25.237 [DEBUG] [Thread-126581] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:35.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:03:35.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:03:35.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:03:35.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 3, 13), 18.17, 29.56, 0.0, 16.99, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:03:35.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:03:13
2025-09-28T14:03:35.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:03:36.055 [DEBUG] [Thread-126583] [transport.py] [_log()] starting thread (client mode): 0x2b9cfe20
2025-09-28T14:03:36.055 [DEBUG] [Thread-126583] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:36.075 [DEBUG] [Thread-126583] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:03:36.075 [INFO] [Thread-126583] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:03:36.078 [DEBUG] [Thread-126583] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:36.078 [DEBUG] [Thread-126583] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] Compression: none
2025-09-28T14:03:36.079 [DEBUG] [Thread-126583] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:36.098 [DEBUG] [Thread-126583] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:36.099 [DEBUG] [Thread-126583] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:36.099 [DEBUG] [Thread-126583] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:03:36.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:03:36.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:36.141 [DEBUG] [Thread-126583] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:36.141 [DEBUG] [Thread-126583] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:36.141 [DEBUG] [Thread-126583] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:36.141 [DEBUG] [Thread-126583] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:03:36.141 [DEBUG] [Thread-126583] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:36.173 [INFO] [Thread-126583] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:36.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:36.934 [DEBUG] [Thread-126583] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:36.934 [DEBUG] [Thread-126583] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:36.934 [DEBUG] [Thread-126583] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:03:36.975 [DEBUG] [Thread-126583] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:36.975 [DEBUG] [Thread-126583] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:36.981 [DEBUG] [Thread-126583] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:36.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:36.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:03:36.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:03:36.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:03:37.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:37.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:03:37.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:37.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.501819 -999.00  +19.50   3.48     34   +3.30 1 1 1 1 1   888    0 16.62 23.27 ----- 9.7 3.5 181.1 12.7 25.4 -25.7 24.2 -25.4 25.2 -25.5 26.7 -26.2
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.501819
2025-09-28T14:03:37.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:03:37.004 [DEBUG] [Thread-126583] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:37.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:03:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:03:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:03:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:03:37.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:03:13', tmtdew=18.17, humidity=29.56, cloud=0.0, wind=16.99, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:02:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:03:37.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-28T14:03:37.101 [DEBUG] [Thread-126586] [transport.py] [_log()] starting thread (client mode): 0x28706ef0
2025-09-28T14:03:37.101 [DEBUG] [Thread-126586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:37.116 [DEBUG] [Thread-126586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:03:37.116 [INFO] [Thread-126586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:03:37.123 [DEBUG] [Thread-126586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:37.124 [DEBUG] [Thread-126586] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] Compression: none
2025-09-28T14:03:37.125 [DEBUG] [Thread-126586] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:37.183 [DEBUG] [Thread-126586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:37.184 [DEBUG] [Thread-126586] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:37.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:03:37.185 [DEBUG] [Thread-126586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:03:37.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:37.239 [DEBUG] [Thread-126586] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:37.240 [DEBUG] [Thread-126586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:37.240 [DEBUG] [Thread-126586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:37.240 [DEBUG] [Thread-126586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:03:37.240 [DEBUG] [Thread-126586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:37.259 [INFO] [Thread-126586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:37.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-28T14:03:37.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:38.224 [DEBUG] [Thread-126586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:38.224 [DEBUG] [Thread-126586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:38.233 [DEBUG] [Thread-126588 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:38.272 [DEBUG] [Thread-126586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:38.273 [DEBUG] [Thread-126586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:38.282 [DEBUG] [Thread-126586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:38.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:38.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-28T14:03: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') -> 00000000
2025-09-28T14:03:38.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:38.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:38.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:38.318 [DEBUG] [Thread-126586] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:48.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:03:48.319 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:03:48.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-28T14:03:48.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 3, 45), 17.96, 29.55, 0.0, 19.11, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:03:48.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:03:45
2025-09-28T14:03:49.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:03:49.171 [DEBUG] [Thread-126589] [transport.py] [_log()] starting thread (client mode): 0x2b96ea70
2025-09-28T14:03:49.171 [DEBUG] [Thread-126589] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:49.192 [DEBUG] [Thread-126589] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:03:49.192 [INFO] [Thread-126589] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:03:49.195 [DEBUG] [Thread-126589] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:49.195 [DEBUG] [Thread-126589] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:03:49.195 [DEBUG] [Thread-126589] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:49.195 [DEBUG] [Thread-126589] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:49.195 [DEBUG] [Thread-126589] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] Compression: none
2025-09-28T14:03:49.196 [DEBUG] [Thread-126589] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:49.211 [DEBUG] [Thread-126589] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:03:49.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:03:49.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:03:49.212 [DEBUG] [Thread-126589] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:49.222 [INFO] [Thread-126589] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03:49.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:49.861 [DEBUG] [Thread-126589] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:49.862 [DEBUG] [Thread-126589] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:49.862 [DEBUG] [Thread-126589] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:03:49.902 [DEBUG] [Thread-126589] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:49.902 [DEBUG] [Thread-126589] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:49.905 [DEBUG] [Thread-126589] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:49.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:49.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:03:49.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:03:49.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:03:49.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:49.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:03:49.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:49.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.502167 -999.00  +19.60  10.63     33   +2.90 1 1 1 1 1   888    0 16.38 26.85 ----- 8.3 10.6 207.6 23.8 25.4 -28.2 24.4 -25.3 25.4 -25.4 26.8 -28.4
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.502167
2025-09-28T14:03:49.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:03:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:03:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:03:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:03:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:03:49.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:03:45', tmtdew=17.96, humidity=29.55, cloud=0.0, wind=19.11, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:03:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:03:49.928 [DEBUG] [Thread-126589] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:50.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-28T14:03:50.036 [DEBUG] [Thread-126592] [transport.py] [_log()] starting thread (client mode): 0x2b96d5a0
2025-09-28T14:03:50.036 [DEBUG] [Thread-126592] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:03:50.051 [DEBUG] [Thread-126592] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:03:50.051 [INFO] [Thread-126592] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] client lang: <none>
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] server lang: <none>
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] kex follows: False
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] Compression: none
2025-09-28T14:03:50.058 [DEBUG] [Thread-126592] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:03:50.113 [DEBUG] [Thread-126592] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:03:50.113 [DEBUG] [Thread-126592] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:03:50.113 [DEBUG] [Thread-126592] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:03:50.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:03:50.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:03:50.170 [DEBUG] [Thread-126592] [transport.py] [_log()] userauth is OK
2025-09-28T14:03:50.170 [DEBUG] [Thread-126592] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:03:50.170 [DEBUG] [Thread-126592] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:03:50.170 [DEBUG] [Thread-126592] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:03:50.170 [DEBUG] [Thread-126592] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:03:50.189 [INFO] [Thread-126592] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:03: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-28T14:03:50.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:03:51.186 [DEBUG] [Thread-126592] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:03:51.186 [DEBUG] [Thread-126592] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:03:51.238 [DEBUG] [Thread-126592] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:03:51.238 [DEBUG] [Thread-126592] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:03:51.251 [DEBUG] [Thread-126592] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:03:51.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:03:51.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-28T14:03:51.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-28T14:03:51.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:03:51.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:03:51.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:03:51.300 [DEBUG] [Thread-126592] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:03:53.277 [DEBUG] [Thread-126594 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:59.866 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:03:59.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:04:01.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:04:01.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:04:01.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-28T14:04:01.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 3, 45), 17.96, 29.55, 0.0, 19.11, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:04:01.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:03:45
2025-09-28T14:04:01.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:04:02.141 [DEBUG] [Thread-126595] [transport.py] [_log()] starting thread (client mode): 0x30ddd1e0
2025-09-28T14:04:02.141 [DEBUG] [Thread-126595] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:02.160 [DEBUG] [Thread-126595] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:04:02.160 [INFO] [Thread-126595] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] Compression: none
2025-09-28T14:04:02.163 [DEBUG] [Thread-126595] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:02.175 [DEBUG] [Thread-126595] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:02.175 [DEBUG] [Thread-126595] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:02.176 [DEBUG] [Thread-126595] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:04:02.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:04:02.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:02.177 [DEBUG] [Thread-126595] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:02.177 [DEBUG] [Thread-126595] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:02.177 [DEBUG] [Thread-126595] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:02.177 [DEBUG] [Thread-126595] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:04:02.177 [DEBUG] [Thread-126595] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:02.189 [INFO] [Thread-126595] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:02.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:02.985 [DEBUG] [Thread-126595] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:02.985 [DEBUG] [Thread-126595] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:02.985 [DEBUG] [Thread-126595] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:04:03.026 [DEBUG] [Thread-126595] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:03.027 [DEBUG] [Thread-126595] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:03.030 [DEBUG] [Thread-126595] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:03.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:03.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:04:03.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:04:03.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:04:03.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:03.052 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:04:03.052 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:03.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.502167 -999.00  +19.60  10.63     33   +2.90 1 1 1 1 1   888    0 16.38 26.85 ----- 8.3 10.6 207.6 23.8 25.4 -28.2 24.4 -25.3 25.4 -25.4 26.8 -28.4
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.502167
2025-09-28T14:04:03.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:04:03.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:03:45', tmtdew=17.96, humidity=29.55, cloud=0.0, wind=19.11, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:03:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:04:03.055 [DEBUG] [Thread-126595] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:03.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-28T14:04:03.152 [DEBUG] [Thread-126598] [transport.py] [_log()] starting thread (client mode): 0x30dde590
2025-09-28T14:04:03.152 [DEBUG] [Thread-126598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:03.166 [DEBUG] [Thread-126598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:04:03.167 [INFO] [Thread-126598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:04:03.174 [DEBUG] [Thread-126598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] Compression: none
2025-09-28T14:04:03.175 [DEBUG] [Thread-126598] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:03.236 [DEBUG] [Thread-126598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:03.236 [DEBUG] [Thread-126598] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:03.237 [DEBUG] [Thread-126598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:04:03.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:04:03.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:03.295 [DEBUG] [Thread-126598] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:03.296 [DEBUG] [Thread-126598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:03.296 [DEBUG] [Thread-126598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:03.296 [DEBUG] [Thread-126598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:04:03.296 [DEBUG] [Thread-126598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:03.315 [INFO] [Thread-126598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:03.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-28T14:04:03.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:04.259 [DEBUG] [Thread-126598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:04.260 [DEBUG] [Thread-126598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:04.307 [DEBUG] [Thread-126598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:04.308 [DEBUG] [Thread-126598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:04.317 [DEBUG] [Thread-126598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:04.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:04.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-28T14:04:04.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') -> 00000000
2025-09-28T14:04:04.343 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:04.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:04.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:04.353 [DEBUG] [Thread-126598] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:08.314 [DEBUG] [Thread-126600 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:04:13.989 [DEBUG] [Thread-126601 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:04:14.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:04:14.355 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:04:14.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-28T14:04:14.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 3, 45), 17.96, 29.55, 0.0, 19.11, 18.14, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:04:14.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:03:45
2025-09-28T14:04:15.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:04:15.173 [DEBUG] [Thread-126602] [transport.py] [_log()] starting thread (client mode): 0x28706f80
2025-09-28T14:04:15.173 [DEBUG] [Thread-126602] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:15.187 [DEBUG] [Thread-126602] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:04:15.187 [INFO] [Thread-126602] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:15.190 [DEBUG] [Thread-126602] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] Compression: none
2025-09-28T14:04:15.191 [DEBUG] [Thread-126602] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:15.212 [DEBUG] [Thread-126602] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:15.213 [DEBUG] [Thread-126602] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:15.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:04:15.214 [DEBUG] [Thread-126602] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:04:15.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:15.216 [DEBUG] [Thread-126602] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:15.216 [DEBUG] [Thread-126602] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:15.216 [DEBUG] [Thread-126602] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:15.216 [DEBUG] [Thread-126602] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:04:15.216 [DEBUG] [Thread-126602] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:15.232 [INFO] [Thread-126602] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:15.232 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:15.883 [DEBUG] [Thread-126602] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:15.884 [DEBUG] [Thread-126602] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:15.884 [DEBUG] [Thread-126602] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:04:15.924 [DEBUG] [Thread-126602] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:15.925 [DEBUG] [Thread-126602] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:15.928 [DEBUG] [Thread-126602] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:15.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:15.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:04:15.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:04:15.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:04:15.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:15.951 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:04:15.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:15.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:15.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:04:15.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.502861 -999.00  +19.80  11.60     33   +3.30 1 1 1 1 1   888    0 16.99 32.78 ----- 13.8 11.6 165.4 26.2 25.4 -26.8 24.3 -25.7 25.3 -25.7 26.7 -26.6
2025-09-28T14:04:15.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:04:15.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:04:15.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.502861
2025-09-28T14:04:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:04:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:04:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:04:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:04:15.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:04:15.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:03:45', tmtdew=17.96, humidity=29.55, cloud=0.0, wind=19.11, temperature=18.14, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:04:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:04:15.954 [DEBUG] [Thread-126602] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:16.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-28T14:04:16.051 [DEBUG] [Thread-126605] [transport.py] [_log()] starting thread (client mode): 0x287059f0
2025-09-28T14:04:16.051 [DEBUG] [Thread-126605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:16.066 [DEBUG] [Thread-126605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:04:16.066 [INFO] [Thread-126605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:16.074 [DEBUG] [Thread-126605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:16.075 [DEBUG] [Thread-126605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:16.076 [DEBUG] [Thread-126605] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:16.076 [DEBUG] [Thread-126605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:16.076 [DEBUG] [Thread-126605] [transport.py] [_log()] Compression: none
2025-09-28T14:04:16.076 [DEBUG] [Thread-126605] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:16.131 [DEBUG] [Thread-126605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:16.131 [DEBUG] [Thread-126605] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:16.132 [DEBUG] [Thread-126605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:04:16.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:04:16.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:16.188 [DEBUG] [Thread-126605] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:16.188 [DEBUG] [Thread-126605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:16.188 [DEBUG] [Thread-126605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:16.188 [DEBUG] [Thread-126605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:04:16.188 [DEBUG] [Thread-126605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:16.207 [INFO] [Thread-126605] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:16.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-28T14:04:16.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:17.181 [DEBUG] [Thread-126605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:17.181 [DEBUG] [Thread-126605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:17.229 [DEBUG] [Thread-126605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:17.229 [DEBUG] [Thread-126605] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:17.238 [DEBUG] [Thread-126605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:17.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:17.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-28T14:04: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-28T14:04:17.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:17.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:17.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:17.272 [DEBUG] [Thread-126605] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:23.342 [DEBUG] [Thread-126607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:04:27.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:04:27.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:04:27.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:04:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 4, 17), 18.06, 29.37, 0.0, 19.98, 18.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:04:27.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:04:17
2025-09-28T14:04:27.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:04:28.118 [DEBUG] [Thread-126608] [transport.py] [_log()] starting thread (client mode): 0x28707850
2025-09-28T14:04:28.118 [DEBUG] [Thread-126608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:28.138 [DEBUG] [Thread-126608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:04:28.138 [INFO] [Thread-126608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:04:28.141 [DEBUG] [Thread-126608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:28.141 [DEBUG] [Thread-126608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] Compression: none
2025-09-28T14:04:28.142 [DEBUG] [Thread-126608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:28.160 [DEBUG] [Thread-126608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:28.160 [DEBUG] [Thread-126608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:28.161 [DEBUG] [Thread-126608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:04:28.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:04:28.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:28.163 [DEBUG] [Thread-126608] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:28.163 [DEBUG] [Thread-126608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:28.163 [DEBUG] [Thread-126608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:28.163 [DEBUG] [Thread-126608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:04:28.163 [DEBUG] [Thread-126608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:28.187 [INFO] [Thread-126608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:28.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:28.962 [DEBUG] [Thread-126608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:28.962 [DEBUG] [Thread-126608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:28.962 [DEBUG] [Thread-126608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:04:29.003 [DEBUG] [Thread-126608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:29.003 [DEBUG] [Thread-126608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:29.006 [DEBUG] [Thread-126608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:29.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:29.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:04:29.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:04:29.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:04:29.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:29.027 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:04:29.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:29.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:04:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.502861 -999.00  +19.80  11.60     33   +3.30 1 1 1 1 1   888    0 16.99 32.78 ----- 13.8 11.6 165.4 26.2 25.4 -26.8 24.3 -25.7 25.3 -25.7 26.7 -26.6
2025-09-28T14:04:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:04:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:04:29.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.502861
2025-09-28T14:04:29.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:04:29.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:04:29.029 [DEBUG] [Thread-126608] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:04:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:04:29.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:04:29.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:04:17', tmtdew=18.06, humidity=29.37, cloud=0.0, wind=19.98, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:04:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:04:29.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-28T14:04:29.127 [DEBUG] [Thread-126611] [transport.py] [_log()] starting thread (client mode): 0x287058a0
2025-09-28T14:04:29.127 [DEBUG] [Thread-126611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:29.142 [DEBUG] [Thread-126611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:04:29.143 [INFO] [Thread-126611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:29.150 [DEBUG] [Thread-126611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] Compression: none
2025-09-28T14:04:29.151 [DEBUG] [Thread-126611] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:29.208 [DEBUG] [Thread-126611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:29.208 [DEBUG] [Thread-126611] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:29.209 [DEBUG] [Thread-126611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:04:29.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:04:29.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:29.271 [DEBUG] [Thread-126611] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:29.271 [DEBUG] [Thread-126611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:29.271 [DEBUG] [Thread-126611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:29.271 [DEBUG] [Thread-126611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:04:29.271 [DEBUG] [Thread-126611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:29.290 [INFO] [Thread-126611] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:29.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:04:29.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:30.270 [DEBUG] [Thread-126611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:30.270 [DEBUG] [Thread-126611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:30.318 [DEBUG] [Thread-126611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:30.318 [DEBUG] [Thread-126611] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:30.327 [DEBUG] [Thread-126611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:30.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04: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-28T14:04: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-28T14:04:30.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:30.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:30.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:30.362 [DEBUG] [Thread-126611] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:38.377 [DEBUG] [Thread-126613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:04:40.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:04:40.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:04:40.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-28T14:04:40.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 4, 17), 18.06, 29.37, 0.0, 19.98, 18.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:04:40.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:04:17
2025-09-28T14:04:41.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:04:41.182 [DEBUG] [Thread-126614] [transport.py] [_log()] starting thread (client mode): 0x30ddd6f0
2025-09-28T14:04:41.182 [DEBUG] [Thread-126614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:04:41.196 [DEBUG] [Thread-126614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:04:41.196 [INFO] [Thread-126614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:04:41.197 [DEBUG] [Thread-126614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:04:41.197 [DEBUG] [Thread-126614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:04:41.197 [DEBUG] [Thread-126614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] client lang: <none>
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] server lang: <none>
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] kex follows: False
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] Compression: none
2025-09-28T14:04:41.198 [DEBUG] [Thread-126614] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:04:41.211 [DEBUG] [Thread-126614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:04:41.211 [DEBUG] [Thread-126614] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:04:41.212 [DEBUG] [Thread-126614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:04:41.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:04:41.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:04:41.213 [DEBUG] [Thread-126614] [transport.py] [_log()] userauth is OK
2025-09-28T14:04:41.213 [DEBUG] [Thread-126614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:04:41.213 [DEBUG] [Thread-126614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:04:41.213 [DEBUG] [Thread-126614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:04:41.214 [DEBUG] [Thread-126614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:04:41.231 [INFO] [Thread-126614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:04:41.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:04:41.997 [DEBUG] [Thread-126614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:04:41.997 [DEBUG] [Thread-126614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:04:41.997 [DEBUG] [Thread-126614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:04:42.038 [DEBUG] [Thread-126614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:04:42.039 [DEBUG] [Thread-126614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:04:42.041 [DEBUG] [Thread-126614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:04:42.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:04:42.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:04:42.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:04:42.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:04:42.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:04:42.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:04:42.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:04:42.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:04:42.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:04:42.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.502861 -999.00  +19.80  11.60     33   +3.30 1 1 1 1 1   888    0 16.99 32.78 ----- 13.8 11.6 165.4 26.2 25.4 -26.8 24.3 -25.7 25.3 -25.7 26.7 -26.6
2025-09-28T14:04:42.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:04:42.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:04:42.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.502861
2025-09-28T14:04:42.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:04:42.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:04:42.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:04:42.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:04:42.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:04:42.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:04:17', tmtdew=18.06, humidity=29.37, cloud=0.0, wind=19.98, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:04:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:04:42.070 [DEBUG] [Thread-126614] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:04:42.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-28T14:04:53.420 [DEBUG] [Thread-126617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:00.008 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:00.009 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:08.450 [DEBUG] [Thread-126618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:14.039 [DEBUG] [Thread-126619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:23.475 [DEBUG] [Thread-126620 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:38.502 [DEBUG] [Thread-126621 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:05:53.527 [DEBUG] [Thread-126622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:00.150 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:00.151 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:08.557 [DEBUG] [Thread-126623 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:14.084 [DEBUG] [Thread-126624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:23.588 [DEBUG] [Thread-126625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:38.617 [DEBUG] [Thread-126626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:53.648 [DEBUG] [Thread-126627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:06:56.443 [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-28T14:07:00.292 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:00.294 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:06.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:07:06.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:07:06.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-28T14:07:07.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 6, 56), 18.08, 29.89, 0.0, 18.14, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:07:07.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:06:56
2025-09-28T14:07:07.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:07:07.309 [DEBUG] [Thread-126628] [transport.py] [_log()] starting thread (client mode): 0x28705000
2025-09-28T14:07:07.309 [DEBUG] [Thread-126628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:07.329 [DEBUG] [Thread-126628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:07:07.329 [INFO] [Thread-126628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:07.332 [DEBUG] [Thread-126628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:07.333 [DEBUG] [Thread-126628] [transport.py] [_log()] Compression: none
2025-09-28T14:07:07.334 [DEBUG] [Thread-126628] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:07.356 [DEBUG] [Thread-126628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:07.356 [DEBUG] [Thread-126628] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:07.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:07:07.357 [DEBUG] [Thread-126628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:07:07.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:07.359 [DEBUG] [Thread-126628] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:07.359 [DEBUG] [Thread-126628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:07.359 [DEBUG] [Thread-126628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:07.359 [DEBUG] [Thread-126628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:07:07.359 [DEBUG] [Thread-126628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:07.382 [INFO] [Thread-126628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:07.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:08.064 [DEBUG] [Thread-126628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:08.064 [DEBUG] [Thread-126628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:08.064 [DEBUG] [Thread-126628] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:07:08.105 [DEBUG] [Thread-126628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:08.105 [DEBUG] [Thread-126628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:08.108 [DEBUG] [Thread-126628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:08.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:08.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:07:08.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:07:08.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:07:08.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:08.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:07:08.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.504597 -999.00  +19.50   9.86     34   +3.30 1 1 1 1 1   888    0 17.06 39.30 ----- 10.4 9.9 231.1 30.6 25.4 -27.9 24.3 -25.5 25.4 -25.9 26.8 -27.7
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:07:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.504597
2025-09-28T14:07:08.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:07:08.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:07:08.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:07:08.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:07:08.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:07:08.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:06:56', tmtdew=18.08, humidity=29.89, cloud=0.0, wind=18.14, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:06:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:07:08.135 [DEBUG] [Thread-126628] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:08.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-28T14:07:08.233 [DEBUG] [Thread-126631] [transport.py] [_log()] starting thread (client mode): 0x2e38e290
2025-09-28T14:07:08.233 [DEBUG] [Thread-126631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:08.247 [DEBUG] [Thread-126631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:07:08.247 [INFO] [Thread-126631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:07:08.254 [DEBUG] [Thread-126631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:08.255 [DEBUG] [Thread-126631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:08.256 [DEBUG] [Thread-126631] [transport.py] [_log()] Compression: none
2025-09-28T14:07:08.257 [DEBUG] [Thread-126631] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:08.316 [DEBUG] [Thread-126631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:08.316 [DEBUG] [Thread-126631] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:08.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:07:08.317 [DEBUG] [Thread-126631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:07:08.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:08.374 [DEBUG] [Thread-126631] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:08.374 [DEBUG] [Thread-126631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:08.374 [DEBUG] [Thread-126631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:08.374 [DEBUG] [Thread-126631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:07:08.374 [DEBUG] [Thread-126631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:08.387 [INFO] [Thread-126631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:08.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-28T14:07:08.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:08.680 [DEBUG] [Thread-126633 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:09.370 [DEBUG] [Thread-126631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:09.370 [DEBUG] [Thread-126631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:09.418 [DEBUG] [Thread-126631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:09.418 [DEBUG] [Thread-126631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:09.427 [DEBUG] [Thread-126631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:09.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:09.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-28T14:07:09.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-28T14:07:09.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:09.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:09.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:09.462 [DEBUG] [Thread-126631] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:14.133 [DEBUG] [Thread-126634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:19.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:07:19.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:07:19.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-28T14:07:20.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 6, 56), 18.08, 29.89, 0.0, 18.14, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:07:20.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:06:56
2025-09-28T14:07:20.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:07:20.327 [DEBUG] [Thread-126635] [transport.py] [_log()] starting thread (client mode): 0x2e38e350
2025-09-28T14:07:20.328 [DEBUG] [Thread-126635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:20.347 [DEBUG] [Thread-126635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:07:20.347 [INFO] [Thread-126635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:20.351 [DEBUG] [Thread-126635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] Compression: none
2025-09-28T14:07:20.352 [DEBUG] [Thread-126635] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:20.367 [DEBUG] [Thread-126635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:20.368 [DEBUG] [Thread-126635] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:20.368 [DEBUG] [Thread-126635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:07:20.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:07:20.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:20.370 [DEBUG] [Thread-126635] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:20.371 [DEBUG] [Thread-126635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:20.371 [DEBUG] [Thread-126635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:20.371 [DEBUG] [Thread-126635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:07:20.371 [DEBUG] [Thread-126635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:20.395 [INFO] [Thread-126635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:20.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:21.037 [DEBUG] [Thread-126635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:21.037 [DEBUG] [Thread-126635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:21.037 [DEBUG] [Thread-126635] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:07:21.078 [DEBUG] [Thread-126635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:21.078 [DEBUG] [Thread-126635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:21.080 [DEBUG] [Thread-126635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:21.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:21.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:07:21.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:07:21.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:07:21.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:21.099 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:07:21.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:21.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.504597 -999.00  +19.50   9.86     34   +3.30 1 1 1 1 1   888    0 17.06 39.30 ----- 10.4 9.9 231.1 30.6 25.4 -27.9 24.3 -25.5 25.4 -25.9 26.8 -27.7
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.504597
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:07:21.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:06:56', tmtdew=18.08, humidity=29.89, cloud=0.0, wind=18.14, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:06:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:07:21.101 [DEBUG] [Thread-126635] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:21.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-28T14:07:21.184 [DEBUG] [Thread-126638] [transport.py] [_log()] starting thread (client mode): 0x2e38f3a0
2025-09-28T14:07:21.185 [DEBUG] [Thread-126638] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:21.200 [DEBUG] [Thread-126638] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:07:21.200 [INFO] [Thread-126638] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:07:21.207 [DEBUG] [Thread-126638] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:21.207 [DEBUG] [Thread-126638] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] Compression: none
2025-09-28T14:07:21.208 [DEBUG] [Thread-126638] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:21.266 [DEBUG] [Thread-126638] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:21.267 [DEBUG] [Thread-126638] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:21.267 [DEBUG] [Thread-126638] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:07:21.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:07:21.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:21.322 [DEBUG] [Thread-126638] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:21.323 [DEBUG] [Thread-126638] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:21.323 [DEBUG] [Thread-126638] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:21.323 [DEBUG] [Thread-126638] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:07:21.323 [DEBUG] [Thread-126638] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:21.343 [INFO] [Thread-126638] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:21.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-28T14:07:21.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:22.334 [DEBUG] [Thread-126638] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:22.334 [DEBUG] [Thread-126638] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:22.382 [DEBUG] [Thread-126638] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:22.382 [DEBUG] [Thread-126638] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:22.391 [DEBUG] [Thread-126638] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:22.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:22.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-28T14:07:22.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-28T14:07:22.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:22.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:22.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:22.427 [DEBUG] [Thread-126638] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:23.735 [DEBUG] [Thread-126640 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:32.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:07:32.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:07:32.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-28T14:07:33.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 7, 28), 18.23, 29.62, 0.0, 21.7, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:07:33.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:07:28
2025-09-28T14:07:33.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:07:33.303 [DEBUG] [Thread-126641] [transport.py] [_log()] starting thread (client mode): 0x30ddffd0
2025-09-28T14:07:33.304 [DEBUG] [Thread-126641] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:33.323 [DEBUG] [Thread-126641] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:07:33.323 [INFO] [Thread-126641] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:33.327 [DEBUG] [Thread-126641] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] Compression: none
2025-09-28T14:07:33.328 [DEBUG] [Thread-126641] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:33.344 [DEBUG] [Thread-126641] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:33.345 [DEBUG] [Thread-126641] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:33.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:07:33.345 [DEBUG] [Thread-126641] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:07:33.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:33.347 [DEBUG] [Thread-126641] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:33.347 [DEBUG] [Thread-126641] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:33.347 [DEBUG] [Thread-126641] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:33.347 [DEBUG] [Thread-126641] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:07:33.347 [DEBUG] [Thread-126641] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:33.371 [INFO] [Thread-126641] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:33.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:34.039 [DEBUG] [Thread-126641] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:34.039 [DEBUG] [Thread-126641] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:34.039 [DEBUG] [Thread-126641] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:07:34.080 [DEBUG] [Thread-126641] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:34.081 [DEBUG] [Thread-126641] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:34.084 [DEBUG] [Thread-126641] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:34.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:34.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:07:34.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:07:34.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:07:34.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:34.105 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:07:34.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:34.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:34.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:07:34.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.504944 -999.00  +19.30  15.67     34   +3.20 1 1 1 1 1   888    0 16.99 39.02 ----- 16.3 15.7 216.0 25.6 25.3 -27.3 24.3 -25.2 25.3 -24.7 26.7 -28.0
2025-09-28T14:07:34.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:07:34.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:07:34.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.504944
2025-09-28T14:07:34.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:07:34.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:07:34.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:07:34.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:07:34.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:07:34.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:07:28', tmtdew=18.23, humidity=29.62, cloud=0.0, wind=21.7, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:07:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:07:34.108 [DEBUG] [Thread-126641] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:34.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-28T14:07:34.209 [DEBUG] [Thread-126644] [transport.py] [_log()] starting thread (client mode): 0x30dde800
2025-09-28T14:07:34.209 [DEBUG] [Thread-126644] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:34.225 [DEBUG] [Thread-126644] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:07:34.225 [INFO] [Thread-126644] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:07:34.232 [DEBUG] [Thread-126644] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:34.232 [DEBUG] [Thread-126644] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] Compression: none
2025-09-28T14:07:34.233 [DEBUG] [Thread-126644] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:34.289 [DEBUG] [Thread-126644] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:34.290 [DEBUG] [Thread-126644] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:34.290 [DEBUG] [Thread-126644] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:07:34.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:07:34.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:34.350 [DEBUG] [Thread-126644] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:34.350 [DEBUG] [Thread-126644] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:34.350 [DEBUG] [Thread-126644] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:34.350 [DEBUG] [Thread-126644] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:07:34.350 [DEBUG] [Thread-126644] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:34.372 [INFO] [Thread-126644] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:34.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:07:34.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:35.379 [DEBUG] [Thread-126644] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:35.379 [DEBUG] [Thread-126644] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:35.427 [DEBUG] [Thread-126644] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:35.427 [DEBUG] [Thread-126644] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:35.436 [DEBUG] [Thread-126644] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:35.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:35.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')
2025-09-28T14:07:35.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-28T14:07:35.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:35.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:35.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:35.472 [DEBUG] [Thread-126644] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:38.764 [DEBUG] [Thread-126646 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:45.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:07:45.475 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:07:45.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:07:46.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 7, 28), 18.23, 29.62, 0.0, 21.7, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:07:46.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:07:28
2025-09-28T14:07:46.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:07:46.339 [DEBUG] [Thread-126647] [transport.py] [_log()] starting thread (client mode): 0x2e38cfa0
2025-09-28T14:07:46.339 [DEBUG] [Thread-126647] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:46.359 [DEBUG] [Thread-126647] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:07:46.359 [INFO] [Thread-126647] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:46.361 [DEBUG] [Thread-126647] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] Compression: none
2025-09-28T14:07:46.362 [DEBUG] [Thread-126647] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:46.370 [DEBUG] [Thread-126647] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:46.371 [DEBUG] [Thread-126647] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:46.371 [DEBUG] [Thread-126647] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:07:46.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:07:46.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:46.373 [DEBUG] [Thread-126647] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:46.373 [DEBUG] [Thread-126647] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:46.373 [DEBUG] [Thread-126647] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:46.373 [DEBUG] [Thread-126647] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:07:46.373 [DEBUG] [Thread-126647] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:46.387 [INFO] [Thread-126647] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:46.387 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:47.013 [DEBUG] [Thread-126647] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:47.014 [DEBUG] [Thread-126647] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:47.014 [DEBUG] [Thread-126647] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:07:47.054 [DEBUG] [Thread-126647] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:47.054 [DEBUG] [Thread-126647] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:47.057 [DEBUG] [Thread-126647] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:47.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:47.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:07:47.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:07:47.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:07:47.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:47.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:07:47.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:47.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:07:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.504944 -999.00  +19.30  15.67     34   +3.20 1 1 1 1 1   888    0 16.99 39.02 ----- 16.3 15.7 216.0 25.6 25.3 -27.3 24.3 -25.2 25.3 -24.7 26.7 -28.0
2025-09-28T14:07:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:07:47.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:07:47.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.504944
2025-09-28T14:07:47.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:07:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:07:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:07:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:07:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:07:47.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:07:28', tmtdew=18.23, humidity=29.62, cloud=0.0, wind=21.7, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:07:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:07:47.083 [DEBUG] [Thread-126647] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:47.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-28T14:07:47.180 [DEBUG] [Thread-126650] [transport.py] [_log()] starting thread (client mode): 0x2e38f5e0
2025-09-28T14:07:47.180 [DEBUG] [Thread-126650] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:47.195 [DEBUG] [Thread-126650] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:07:47.195 [INFO] [Thread-126650] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:07:47.202 [DEBUG] [Thread-126650] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:47.203 [DEBUG] [Thread-126650] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:47.204 [DEBUG] [Thread-126650] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:47.204 [DEBUG] [Thread-126650] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:47.204 [DEBUG] [Thread-126650] [transport.py] [_log()] Compression: none
2025-09-28T14:07:47.204 [DEBUG] [Thread-126650] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:47.261 [DEBUG] [Thread-126650] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:47.262 [DEBUG] [Thread-126650] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:47.262 [DEBUG] [Thread-126650] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:07:47.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:07:47.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:47.318 [DEBUG] [Thread-126650] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:47.318 [DEBUG] [Thread-126650] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:47.318 [DEBUG] [Thread-126650] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:47.318 [DEBUG] [Thread-126650] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:07:47.318 [DEBUG] [Thread-126650] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:47.337 [INFO] [Thread-126650] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:47.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-28T14:07:47.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:07:48.339 [DEBUG] [Thread-126650] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:07:48.339 [DEBUG] [Thread-126650] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:07:48.387 [DEBUG] [Thread-126650] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:07:48.387 [DEBUG] [Thread-126650] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:07:48.396 [DEBUG] [Thread-126650] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:07:48.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:07:48.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-28T14:07:48.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-28T14:07:48.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:07:48.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:07:48.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:07:48.430 [DEBUG] [Thread-126650] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:07:53.816 [DEBUG] [Thread-126652 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:07:58.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:07:58.433 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:07:58.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-28T14:07:59.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 7, 28), 18.23, 29.62, 0.0, 21.7, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:07:59.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:07:28
2025-09-28T14:07:59.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:07:59.310 [DEBUG] [Thread-126653] [transport.py] [_log()] starting thread (client mode): 0x30ddeb90
2025-09-28T14:07:59.310 [DEBUG] [Thread-126653] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:07:59.331 [DEBUG] [Thread-126653] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:07:59.331 [INFO] [Thread-126653] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:07:59.334 [DEBUG] [Thread-126653] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] client lang: <none>
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] server lang: <none>
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] kex follows: False
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:07:59.335 [DEBUG] [Thread-126653] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:07:59.336 [DEBUG] [Thread-126653] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:07:59.336 [DEBUG] [Thread-126653] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:07:59.336 [DEBUG] [Thread-126653] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:07:59.336 [DEBUG] [Thread-126653] [transport.py] [_log()] Compression: none
2025-09-28T14:07:59.336 [DEBUG] [Thread-126653] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:07:59.355 [DEBUG] [Thread-126653] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:07:59.355 [DEBUG] [Thread-126653] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:07:59.356 [DEBUG] [Thread-126653] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:07:59.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:07:59.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:07:59.357 [DEBUG] [Thread-126653] [transport.py] [_log()] userauth is OK
2025-09-28T14:07:59.358 [DEBUG] [Thread-126653] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:07:59.358 [DEBUG] [Thread-126653] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:07:59.358 [DEBUG] [Thread-126653] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:07:59.358 [DEBUG] [Thread-126653] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:07:59.381 [INFO] [Thread-126653] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:07:59.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:00.011 [DEBUG] [Thread-126653] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:00.011 [DEBUG] [Thread-126653] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:00.012 [DEBUG] [Thread-126653] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:08:00.052 [DEBUG] [Thread-126653] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:00.052 [DEBUG] [Thread-126653] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:00.055 [DEBUG] [Thread-126653] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:00.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:00.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:08:00.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:08:00.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:08:00.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:00.075 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:08:00.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:00.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:08:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.504944 -999.00  +19.30  15.67     34   +3.20 1 1 1 1 1   888    0 16.99 39.02 ----- 16.3 15.7 216.0 25.6 25.3 -27.3 24.3 -25.2 25.3 -24.7 26.7 -28.0
2025-09-28T14:08:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:08:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:08:00.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.504944
2025-09-28T14:08:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:08:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:08:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:08:00.077 [DEBUG] [Thread-126653] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:00.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:08:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:08:00.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:07:28', tmtdew=18.23, humidity=29.62, cloud=0.0, wind=21.7, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:07:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:08:00.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-28T14:08:00.182 [DEBUG] [Thread-126656] [transport.py] [_log()] starting thread (client mode): 0x2e38e2c0
2025-09-28T14:08:00.182 [DEBUG] [Thread-126656] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:00.197 [DEBUG] [Thread-126656] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:08:00.198 [INFO] [Thread-126656] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:08:00.205 [DEBUG] [Thread-126656] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:00.205 [DEBUG] [Thread-126656] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] Compression: none
2025-09-28T14:08:00.206 [DEBUG] [Thread-126656] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:00.260 [DEBUG] [Thread-126656] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:00.260 [DEBUG] [Thread-126656] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:00.260 [DEBUG] [Thread-126656] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:08:00.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:08:00.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:00.318 [DEBUG] [Thread-126656] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:00.318 [DEBUG] [Thread-126656] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:00.318 [DEBUG] [Thread-126656] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:00.318 [DEBUG] [Thread-126656] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:08:00.318 [DEBUG] [Thread-126656] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:00.337 [INFO] [Thread-126656] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:00.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-28T14:08:00.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:00.434 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:00.435 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:01.349 [DEBUG] [Thread-126656] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:01.349 [DEBUG] [Thread-126656] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:01.398 [DEBUG] [Thread-126656] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:01.398 [DEBUG] [Thread-126656] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:01.406 [DEBUG] [Thread-126656] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:01.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:01.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-28T14:08:01.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-28T14:08:01.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:01.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:01.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:01.437 [DEBUG] [Thread-126656] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:08.845 [DEBUG] [Thread-126658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:11.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:08:11.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:08:11.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-28T14:08:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 7, 28), 18.23, 29.62, 0.0, 21.7, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:08:12.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:07:28
2025-09-28T14:08:12.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:08:12.282 [DEBUG] [Thread-126659] [transport.py] [_log()] starting thread (client mode): 0x2e38ee00
2025-09-28T14:08:12.282 [DEBUG] [Thread-126659] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:12.302 [DEBUG] [Thread-126659] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:08:12.302 [INFO] [Thread-126659] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:12.305 [DEBUG] [Thread-126659] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] Compression: none
2025-09-28T14:08:12.306 [DEBUG] [Thread-126659] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:12.321 [DEBUG] [Thread-126659] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:12.322 [DEBUG] [Thread-126659] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:12.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:08:12.323 [DEBUG] [Thread-126659] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:08:12.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:12.324 [DEBUG] [Thread-126659] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:12.324 [DEBUG] [Thread-126659] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:12.325 [DEBUG] [Thread-126659] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:12.325 [DEBUG] [Thread-126659] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:08:12.325 [DEBUG] [Thread-126659] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:12.338 [INFO] [Thread-126659] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:12.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:12.963 [DEBUG] [Thread-126659] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:12.963 [DEBUG] [Thread-126659] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:12.964 [DEBUG] [Thread-126659] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:08:13.004 [DEBUG] [Thread-126659] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:13.004 [DEBUG] [Thread-126659] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:13.007 [DEBUG] [Thread-126659] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:13.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:13.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:08:13.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:08:13.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:08:13.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:13.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:08:13.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:13.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:13.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:08:13.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.505292 -999.00  +19.40  10.22     35   +3.50 1 1 1 1 1   888    0 17.22 39.21 ----- 13.2 10.2 216.0 15.7 25.3 -25.8 24.1 -25.5 25.3 -25.5 26.7 -25.8
2025-09-28T14:08:13.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:08:13.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:08:13.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.505292
2025-09-28T14:08:13.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:08:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:08:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:08:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:08:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:08:13.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:07:28', tmtdew=18.23, humidity=29.62, cloud=0.0, wind=21.7, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:07:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:08:13.031 [DEBUG] [Thread-126659] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:13.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-28T14:08:13.123 [DEBUG] [Thread-126662] [transport.py] [_log()] starting thread (client mode): 0x30ddf370
2025-09-28T14:08:13.123 [DEBUG] [Thread-126662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:13.138 [DEBUG] [Thread-126662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:08:13.138 [INFO] [Thread-126662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:08:13.146 [DEBUG] [Thread-126662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:13.146 [DEBUG] [Thread-126662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:08:13.146 [DEBUG] [Thread-126662] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] Compression: none
2025-09-28T14:08:13.147 [DEBUG] [Thread-126662] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:13.205 [DEBUG] [Thread-126662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:13.206 [DEBUG] [Thread-126662] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:13.206 [DEBUG] [Thread-126662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:08:13.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:08:13.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:13.262 [DEBUG] [Thread-126662] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:13.262 [DEBUG] [Thread-126662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:13.262 [DEBUG] [Thread-126662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:13.262 [DEBUG] [Thread-126662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:08:13.262 [DEBUG] [Thread-126662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:13.282 [INFO] [Thread-126662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:13.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-28T14:08:13.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:14.182 [DEBUG] [Thread-126664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:14.265 [DEBUG] [Thread-126662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:14.266 [DEBUG] [Thread-126662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:14.313 [DEBUG] [Thread-126662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:14.313 [DEBUG] [Thread-126662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:14.322 [DEBUG] [Thread-126662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:14.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:14.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-28T14:08:14.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-28T14:08:14.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:14.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:14.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:14.357 [DEBUG] [Thread-126662] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:23.876 [DEBUG] [Thread-126665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:24.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:08:24.360 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:08:24.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-28T14:08:24.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 7, 28), 18.23, 29.62, 0.0, 21.7, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:08:24.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:07:28
2025-09-28T14:08:25.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:08:25.205 [DEBUG] [Thread-126666] [transport.py] [_log()] starting thread (client mode): 0x2e38e710
2025-09-28T14:08:25.205 [DEBUG] [Thread-126666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:25.225 [DEBUG] [Thread-126666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:08:25.225 [INFO] [Thread-126666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:08:25.228 [DEBUG] [Thread-126666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:25.228 [DEBUG] [Thread-126666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:08:25.228 [DEBUG] [Thread-126666] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:25.228 [DEBUG] [Thread-126666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:25.228 [DEBUG] [Thread-126666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] Compression: none
2025-09-28T14:08:25.229 [DEBUG] [Thread-126666] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:25.246 [DEBUG] [Thread-126666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:25.246 [DEBUG] [Thread-126666] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:25.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:08:25.247 [DEBUG] [Thread-126666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:08:25.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:25.249 [DEBUG] [Thread-126666] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:25.250 [DEBUG] [Thread-126666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:25.250 [DEBUG] [Thread-126666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:25.250 [DEBUG] [Thread-126666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:08:25.250 [DEBUG] [Thread-126666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:25.285 [INFO] [Thread-126666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:25.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:25.948 [DEBUG] [Thread-126666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:25.948 [DEBUG] [Thread-126666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:25.948 [DEBUG] [Thread-126666] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:08:25.989 [DEBUG] [Thread-126666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:25.989 [DEBUG] [Thread-126666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:25.992 [DEBUG] [Thread-126666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:26.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:26.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:08:26.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:08:26.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:08:26.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:26.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:08:26.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:26.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:26.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:08:26.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.505292 -999.00  +19.40  10.22     35   +3.50 1 1 1 1 1   888    0 17.22 39.21 ----- 13.2 10.2 216.0 15.7 25.3 -25.8 24.1 -25.5 25.3 -25.5 26.7 -25.8
2025-09-28T14:08:26.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:08:26.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:08:26.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.505292
2025-09-28T14:08:26.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:08:26.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:08:26.018 [DEBUG] [Thread-126666] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:08:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:08:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:08:26.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:07:28', tmtdew=18.23, humidity=29.62, cloud=0.0, wind=21.7, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:07:37.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:08:26.101 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:08:26.111 [DEBUG] [Thread-126669] [transport.py] [_log()] starting thread (client mode): 0x28704460
2025-09-28T14:08:26.111 [DEBUG] [Thread-126669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:26.126 [DEBUG] [Thread-126669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:08:26.127 [INFO] [Thread-126669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:08:26.134 [DEBUG] [Thread-126669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] Compression: none
2025-09-28T14:08:26.135 [DEBUG] [Thread-126669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:26.194 [DEBUG] [Thread-126669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:26.194 [DEBUG] [Thread-126669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:26.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:08:26.195 [DEBUG] [Thread-126669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:08:26.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:26.250 [DEBUG] [Thread-126669] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:26.250 [DEBUG] [Thread-126669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:26.250 [DEBUG] [Thread-126669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:26.250 [DEBUG] [Thread-126669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:08:26.250 [DEBUG] [Thread-126669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:26.271 [INFO] [Thread-126669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:26.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-28T14:08:26.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:27.246 [DEBUG] [Thread-126669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:27.246 [DEBUG] [Thread-126669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:27.295 [DEBUG] [Thread-126669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:27.295 [DEBUG] [Thread-126669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:27.307 [DEBUG] [Thread-126669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:27.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:27.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-28T14:08:27.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-28T14:08:27.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:27.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:27.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:27.341 [DEBUG] [Thread-126669] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:37.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:08:37.339 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:08:37.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-28T14:08:37.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 8, 32), 18.18, 29.74, 0.0, 19.6, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:08:37.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:08:32
2025-09-28T14:08:38.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:08:38.204 [DEBUG] [Thread-126671] [transport.py] [_log()] starting thread (client mode): 0x30ddd660
2025-09-28T14:08:38.205 [DEBUG] [Thread-126671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:38.220 [DEBUG] [Thread-126671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:08:38.220 [INFO] [Thread-126671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] Compression: none
2025-09-28T14:08:38.223 [DEBUG] [Thread-126671] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:38.239 [DEBUG] [Thread-126671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:38.239 [DEBUG] [Thread-126671] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:38.239 [DEBUG] [Thread-126671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:08:38.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:08:38.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:38.240 [DEBUG] [Thread-126671] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:38.240 [DEBUG] [Thread-126671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:38.240 [DEBUG] [Thread-126671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:38.240 [DEBUG] [Thread-126671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:08:38.240 [DEBUG] [Thread-126671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:38.255 [INFO] [Thread-126671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:38.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:38.864 [DEBUG] [Thread-126671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:38.864 [DEBUG] [Thread-126671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:38.864 [DEBUG] [Thread-126671] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:08:38.905 [DEBUG] [Thread-126671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:38.905 [DEBUG] [Thread-126671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:38.906 [DEBUG] [Thread-126671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:38.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:38.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:08:38.917 [DEBUG] [Thread-126673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:08:38.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:08:38.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:08:38.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:38.923 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:08:38.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.505639 -999.00  +19.60  14.87     34   +3.60 1 1 1 1 1   888    0 17.32 39.21 ----- 9.2 14.9 217.4 21.1 25.4 -26.3 24.3 -24.4 25.4 -24.1 26.7 -26.9
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.505639
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:08:38.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:08:32', tmtdew=18.18, humidity=29.74, cloud=0.0, wind=19.6, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:08:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:08:38.924 [DEBUG] [Thread-126671] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:39.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-28T14:08:39.014 [DEBUG] [Thread-126675] [transport.py] [_log()] starting thread (client mode): 0x2e3741f0
2025-09-28T14:08:39.014 [DEBUG] [Thread-126675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:39.030 [DEBUG] [Thread-126675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:08:39.030 [INFO] [Thread-126675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:08:39.037 [DEBUG] [Thread-126675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:39.037 [DEBUG] [Thread-126675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:08:39.037 [DEBUG] [Thread-126675] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] Compression: none
2025-09-28T14:08:39.038 [DEBUG] [Thread-126675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:39.092 [DEBUG] [Thread-126675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:39.092 [DEBUG] [Thread-126675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:39.092 [DEBUG] [Thread-126675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:08:39.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:08:39.092 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:39.149 [DEBUG] [Thread-126675] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:39.149 [DEBUG] [Thread-126675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:39.149 [DEBUG] [Thread-126675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:39.149 [DEBUG] [Thread-126675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:08:39.150 [DEBUG] [Thread-126675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:39.163 [INFO] [Thread-126675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:39.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:08:39.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:40.148 [DEBUG] [Thread-126675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:40.148 [DEBUG] [Thread-126675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:40.196 [DEBUG] [Thread-126675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:40.196 [DEBUG] [Thread-126675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:40.205 [DEBUG] [Thread-126675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:40.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:40.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-28T14:08:40.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-28T14:08:40.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:40.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:40.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:40.236 [DEBUG] [Thread-126675] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:50.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:08:50.237 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:08:50.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-28T14:08:50.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 8, 32), 18.18, 29.74, 0.0, 19.6, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:08:50.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:08:32
2025-09-28T14:08:50.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:08:51.098 [DEBUG] [Thread-126677] [transport.py] [_log()] starting thread (client mode): 0x28705960
2025-09-28T14:08:51.098 [DEBUG] [Thread-126677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:51.118 [DEBUG] [Thread-126677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:08:51.118 [INFO] [Thread-126677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:08:51.121 [DEBUG] [Thread-126677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:51.121 [DEBUG] [Thread-126677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] Compression: none
2025-09-28T14:08:51.122 [DEBUG] [Thread-126677] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:51.139 [DEBUG] [Thread-126677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:51.139 [DEBUG] [Thread-126677] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:51.140 [DEBUG] [Thread-126677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:08:51.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:08:51.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:51.142 [DEBUG] [Thread-126677] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:51.142 [DEBUG] [Thread-126677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:51.142 [DEBUG] [Thread-126677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:51.142 [DEBUG] [Thread-126677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:08:51.142 [DEBUG] [Thread-126677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:51.160 [INFO] [Thread-126677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:51.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:51.791 [DEBUG] [Thread-126677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:51.791 [DEBUG] [Thread-126677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:51.792 [DEBUG] [Thread-126677] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:08:51.832 [DEBUG] [Thread-126677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:51.832 [DEBUG] [Thread-126677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:51.835 [DEBUG] [Thread-126677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:51.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:51.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:08:51.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:08:51.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:08:51.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:51.858 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:08:51.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:51.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:08:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.505639 -999.00  +19.60  14.87     34   +3.60 1 1 1 1 1   888    0 17.32 39.21 ----- 9.2 14.9 217.4 21.1 25.4 -26.3 24.3 -24.4 25.4 -24.1 26.7 -26.9
2025-09-28T14:08:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:08:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:08:51.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.505639
2025-09-28T14:08:51.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:08:51.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:08:51.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:08:51.860 [DEBUG] [Thread-126677] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:51.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:08:51.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:08:51.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:08:32', tmtdew=18.18, humidity=29.74, cloud=0.0, wind=19.6, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:08:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:08:51.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-28T14:08:51.955 [DEBUG] [Thread-126680] [transport.py] [_log()] starting thread (client mode): 0x2e377190
2025-09-28T14:08:51.955 [DEBUG] [Thread-126680] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:08:51.970 [DEBUG] [Thread-126680] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:08:51.970 [INFO] [Thread-126680] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] client lang: <none>
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] server lang: <none>
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] kex follows: False
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] Compression: none
2025-09-28T14:08:51.978 [DEBUG] [Thread-126680] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:08:52.037 [DEBUG] [Thread-126680] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:08:52.037 [DEBUG] [Thread-126680] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:08:52.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:08:52.038 [DEBUG] [Thread-126680] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:08:52.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:08:52.093 [DEBUG] [Thread-126680] [transport.py] [_log()] userauth is OK
2025-09-28T14:08:52.094 [DEBUG] [Thread-126680] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:08:52.094 [DEBUG] [Thread-126680] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:08:52.094 [DEBUG] [Thread-126680] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:08:52.094 [DEBUG] [Thread-126680] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:08:52.113 [INFO] [Thread-126680] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:08:52.113 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:08:52.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:08:53.134 [DEBUG] [Thread-126680] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:08:53.134 [DEBUG] [Thread-126680] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:08:53.182 [DEBUG] [Thread-126680] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:08:53.183 [DEBUG] [Thread-126680] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:08:53.192 [DEBUG] [Thread-126680] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:08:53.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:08:53.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-28T14:08:53.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-28T14:08:53.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:08:53.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:08:53.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:08:53.226 [DEBUG] [Thread-126680] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:08:53.944 [DEBUG] [Thread-126682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:00.575 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:00.577 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:03.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:09:03.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:09:03.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-28T14:09:03.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 8, 32), 18.18, 29.74, 0.0, 19.6, 18.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:09:03.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:08:32
2025-09-28T14:09:03.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:09:04.081 [DEBUG] [Thread-126683] [transport.py] [_log()] starting thread (client mode): 0x287045e0
2025-09-28T14:09:04.081 [DEBUG] [Thread-126683] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:04.100 [DEBUG] [Thread-126683] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:09:04.100 [INFO] [Thread-126683] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] Compression: none
2025-09-28T14:09:04.104 [DEBUG] [Thread-126683] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:04.121 [DEBUG] [Thread-126683] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:04.121 [DEBUG] [Thread-126683] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:04.122 [DEBUG] [Thread-126683] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:09:04.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:09:04.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:04.124 [DEBUG] [Thread-126683] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:04.124 [DEBUG] [Thread-126683] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:04.124 [DEBUG] [Thread-126683] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:04.124 [DEBUG] [Thread-126683] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:09:04.124 [DEBUG] [Thread-126683] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:04.138 [INFO] [Thread-126683] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:04.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:04.801 [DEBUG] [Thread-126683] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:04.801 [DEBUG] [Thread-126683] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:04.801 [DEBUG] [Thread-126683] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:09:04.842 [DEBUG] [Thread-126683] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:04.842 [DEBUG] [Thread-126683] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:04.844 [DEBUG] [Thread-126683] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:04.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:04.858 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:09:04.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:09:04.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:09:04.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:04.864 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:09:04.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.505639 -999.00  +19.60  14.87     34   +3.60 1 1 1 1 1   888    0 17.32 39.21 ----- 9.2 14.9 217.4 21.1 25.4 -26.3 24.3 -24.4 25.4 -24.1 26.7 -26.9
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.505639
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:09:04.865 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:08:32', tmtdew=18.18, humidity=29.74, cloud=0.0, wind=19.6, temperature=18.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:08:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:09:04.866 [DEBUG] [Thread-126683] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:04.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-28T14:09:04.953 [DEBUG] [Thread-126686] [transport.py] [_log()] starting thread (client mode): 0x2e375a80
2025-09-28T14:09:04.953 [DEBUG] [Thread-126686] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:04.969 [DEBUG] [Thread-126686] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:09:04.969 [INFO] [Thread-126686] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:09:04.976 [DEBUG] [Thread-126686] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:04.976 [DEBUG] [Thread-126686] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] Compression: none
2025-09-28T14:09:04.977 [DEBUG] [Thread-126686] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:05.042 [DEBUG] [Thread-126686] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:05.042 [DEBUG] [Thread-126686] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:05.042 [DEBUG] [Thread-126686] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:09:05.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:09:05.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:05.101 [DEBUG] [Thread-126686] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:05.101 [DEBUG] [Thread-126686] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:05.101 [DEBUG] [Thread-126686] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:05.101 [DEBUG] [Thread-126686] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:09:05.101 [DEBUG] [Thread-126686] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:05.119 [INFO] [Thread-126686] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:05.119 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:09:05.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:06.122 [DEBUG] [Thread-126686] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:06.122 [DEBUG] [Thread-126686] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:06.170 [DEBUG] [Thread-126686] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:06.170 [DEBUG] [Thread-126686] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:06.179 [DEBUG] [Thread-126686] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:06.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:06.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')
2025-09-28T14:09:06.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-28T14:09:06.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:06.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:06.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:06.210 [DEBUG] [Thread-126686] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:08.986 [DEBUG] [Thread-126688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:14.232 [DEBUG] [Thread-126689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:16.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:09:16.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:09:16.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-28T14:09:16.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 9, 4), 18.3, 29.56, 0.0, 18.25, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:09:16.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:09:04
2025-09-28T14:09:16.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:09:17.102 [DEBUG] [Thread-126690] [transport.py] [_log()] starting thread (client mode): 0x2e376950
2025-09-28T14:09:17.102 [DEBUG] [Thread-126690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:17.125 [DEBUG] [Thread-126690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:09:17.125 [INFO] [Thread-126690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:09:17.128 [DEBUG] [Thread-126690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:17.128 [DEBUG] [Thread-126690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] Compression: none
2025-09-28T14:09:17.129 [DEBUG] [Thread-126690] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:17.142 [DEBUG] [Thread-126690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:17.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:09:17.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:09:17.143 [DEBUG] [Thread-126690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:17.152 [INFO] [Thread-126690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:17.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:17.808 [DEBUG] [Thread-126690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:17.808 [DEBUG] [Thread-126690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:17.808 [DEBUG] [Thread-126690] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:09:17.849 [DEBUG] [Thread-126690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:17.849 [DEBUG] [Thread-126690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:17.851 [DEBUG] [Thread-126690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:17.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:17.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:09:17.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:09:17.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:09:17.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:17.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:09:17.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.506333 -999.00  +19.70  15.93     33   +3.20 1 1 1 1 1   888    0 17.32 46.91 ----- 18.6 15.9 203.8 25.4 25.3 -28.0 24.4 -26.2 25.4 -25.4 26.6 -26.9
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.506333
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:09:17.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:09:04', tmtdew=18.3, humidity=29.56, cloud=0.0, wind=18.25, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:09:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:09:17.869 [DEBUG] [Thread-126690] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:17.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-28T14:09:17.953 [DEBUG] [Thread-126693] [transport.py] [_log()] starting thread (client mode): 0x2e38c280
2025-09-28T14:09:17.954 [DEBUG] [Thread-126693] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:17.967 [DEBUG] [Thread-126693] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:09:17.967 [INFO] [Thread-126693] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] Compression: none
2025-09-28T14:09:17.975 [DEBUG] [Thread-126693] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:18.032 [DEBUG] [Thread-126693] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:18.032 [DEBUG] [Thread-126693] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:18.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:09:18.033 [DEBUG] [Thread-126693] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:09:18.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:18.090 [DEBUG] [Thread-126693] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:18.091 [DEBUG] [Thread-126693] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:18.091 [DEBUG] [Thread-126693] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:18.091 [DEBUG] [Thread-126693] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:09:18.091 [DEBUG] [Thread-126693] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:18.105 [INFO] [Thread-126693] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09: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-28T14:09:18.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:19.072 [DEBUG] [Thread-126693] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:19.072 [DEBUG] [Thread-126693] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:19.120 [DEBUG] [Thread-126693] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:19.120 [DEBUG] [Thread-126693] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:19.129 [DEBUG] [Thread-126693] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:19.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:19.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-28T14:09:19.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-28T14:09:19.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:19.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:19.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:19.161 [DEBUG] [Thread-126693] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:24.015 [DEBUG] [Thread-126695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:29.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:09:29.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:09:29.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-28T14:09:29.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 9, 4), 18.3, 29.56, 0.0, 18.25, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:09:29.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:09:04
2025-09-28T14:09:29.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:09:30.023 [DEBUG] [Thread-126696] [transport.py] [_log()] starting thread (client mode): 0x2e377ee0
2025-09-28T14:09:30.023 [DEBUG] [Thread-126696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:30.045 [DEBUG] [Thread-126696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:09:30.045 [INFO] [Thread-126696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:30.048 [DEBUG] [Thread-126696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] Compression: none
2025-09-28T14:09:30.049 [DEBUG] [Thread-126696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:30.065 [DEBUG] [Thread-126696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:30.065 [DEBUG] [Thread-126696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:30.066 [DEBUG] [Thread-126696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:09:30.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:09:30.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:30.066 [DEBUG] [Thread-126696] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:30.067 [DEBUG] [Thread-126696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:30.067 [DEBUG] [Thread-126696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:30.067 [DEBUG] [Thread-126696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:09:30.067 [DEBUG] [Thread-126696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:30.082 [INFO] [Thread-126696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:30.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:30.716 [DEBUG] [Thread-126696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:30.716 [DEBUG] [Thread-126696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:30.717 [DEBUG] [Thread-126696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:09:30.757 [DEBUG] [Thread-126696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:30.758 [DEBUG] [Thread-126696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:30.761 [DEBUG] [Thread-126696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:30.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:30.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:09:30.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:09:30.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:09:30.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:30.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:09:30.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:30.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.506333 -999.00  +19.70  15.93     33   +3.20 1 1 1 1 1   888    0 17.32 46.91 ----- 18.6 15.9 203.8 25.4 25.3 -28.0 24.4 -26.2 25.4 -25.4 26.6 -26.9
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.506333
2025-09-28T14:09:30.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:09:30.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:09:30.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:09:30.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:09:30.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:09:30.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:09:04', tmtdew=18.3, humidity=29.56, cloud=0.0, wind=18.25, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:09:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:09:30.785 [DEBUG] [Thread-126696] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:30.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-28T14:09:30.882 [DEBUG] [Thread-126699] [transport.py] [_log()] starting thread (client mode): 0x2e377c70
2025-09-28T14:09:30.882 [DEBUG] [Thread-126699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:30.898 [DEBUG] [Thread-126699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:09:30.898 [INFO] [Thread-126699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] Compression: none
2025-09-28T14:09:30.906 [DEBUG] [Thread-126699] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:30.965 [DEBUG] [Thread-126699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:30.965 [DEBUG] [Thread-126699] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:30.966 [DEBUG] [Thread-126699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:09:30.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:09:30.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:31.021 [DEBUG] [Thread-126699] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:31.021 [DEBUG] [Thread-126699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:31.022 [DEBUG] [Thread-126699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:31.022 [DEBUG] [Thread-126699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:09:31.022 [DEBUG] [Thread-126699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:31.041 [INFO] [Thread-126699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:31.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-28T14:09:31.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:32.035 [DEBUG] [Thread-126699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:32.035 [DEBUG] [Thread-126699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:32.083 [DEBUG] [Thread-126699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:32.083 [DEBUG] [Thread-126699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:32.092 [DEBUG] [Thread-126699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:32.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:32.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-28T14:09: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-28T14:09:32.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:32.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:32.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:32.125 [DEBUG] [Thread-126699] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:39.063 [DEBUG] [Thread-126701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:42.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:09:42.123 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:09: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-28T14:09:42.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 9, 36), 18.48, 28.66, 0.0, 23.41, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:09:42.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:09:36
2025-09-28T14:09:42.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:09:42.983 [DEBUG] [Thread-126702] [transport.py] [_log()] starting thread (client mode): 0x28704430
2025-09-28T14:09:42.983 [DEBUG] [Thread-126702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:43.001 [DEBUG] [Thread-126702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:09:43.001 [INFO] [Thread-126702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:09:43.004 [DEBUG] [Thread-126702] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] Compression: none
2025-09-28T14:09:43.005 [DEBUG] [Thread-126702] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:43.021 [DEBUG] [Thread-126702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:43.022 [DEBUG] [Thread-126702] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:43.022 [DEBUG] [Thread-126702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:09:43.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:09:43.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:43.024 [DEBUG] [Thread-126702] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:43.024 [DEBUG] [Thread-126702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:43.025 [DEBUG] [Thread-126702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:43.025 [DEBUG] [Thread-126702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:09:43.025 [DEBUG] [Thread-126702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:43.042 [INFO] [Thread-126702] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:43.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:43.644 [DEBUG] [Thread-126702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:43.644 [DEBUG] [Thread-126702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:43.645 [DEBUG] [Thread-126702] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:09:43.685 [DEBUG] [Thread-126702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:43.685 [DEBUG] [Thread-126702] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:43.687 [DEBUG] [Thread-126702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:43.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:43.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:09:43.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:09:43.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:09:43.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:43.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:09:43.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:43.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:43.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:09:43.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.506680 -999.00  +19.50  20.02     33   +3.00 1 1 1 1 1   888    0 17.50 51.16 ----- 10.0 20.0 210.6 27.8 25.2 -28.1 24.2 -26.6 25.3 -26.4 26.5 -28.4
2025-09-28T14:09:43.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:09:43.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:09:43.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.506680
2025-09-28T14:09:43.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:09:43.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:09:43.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:09:43.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:09:43.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:09:43.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:09:36', tmtdew=18.48, humidity=28.66, cloud=0.0, wind=23.41, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:09:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:09:43.707 [DEBUG] [Thread-126702] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:43.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-28T14:09:43.804 [DEBUG] [Thread-126705] [transport.py] [_log()] starting thread (client mode): 0x28706320
2025-09-28T14:09:43.804 [DEBUG] [Thread-126705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:43.818 [DEBUG] [Thread-126705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:09:43.818 [INFO] [Thread-126705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:43.826 [DEBUG] [Thread-126705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] Compression: none
2025-09-28T14:09:43.827 [DEBUG] [Thread-126705] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:43.889 [DEBUG] [Thread-126705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:43.889 [DEBUG] [Thread-126705] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:43.890 [DEBUG] [Thread-126705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:09:43.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:09:43.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:43.945 [DEBUG] [Thread-126705] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:43.946 [DEBUG] [Thread-126705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:43.946 [DEBUG] [Thread-126705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:43.946 [DEBUG] [Thread-126705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:09:43.946 [DEBUG] [Thread-126705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:43.966 [INFO] [Thread-126705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:43.966 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:09:43.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:44.943 [DEBUG] [Thread-126705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:44.943 [DEBUG] [Thread-126705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:44.991 [DEBUG] [Thread-126705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:44.992 [DEBUG] [Thread-126705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:45.001 [DEBUG] [Thread-126705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:45.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:45.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')
2025-09-28T14:09:45.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') -> 00000000
2025-09-28T14:09:45.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:45.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:45.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:45.035 [DEBUG] [Thread-126705] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:54.093 [DEBUG] [Thread-126707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:09:55.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:09:55.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:09:55.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-28T14:09:55.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 9, 36), 18.48, 28.66, 0.0, 23.41, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:09:55.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:09:36
2025-09-28T14:09:55.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:09:55.903 [DEBUG] [Thread-126708] [transport.py] [_log()] starting thread (client mode): 0x2e3776a0
2025-09-28T14:09:55.903 [DEBUG] [Thread-126708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:55.924 [DEBUG] [Thread-126708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:09:55.924 [INFO] [Thread-126708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] Compression: none
2025-09-28T14:09:55.927 [DEBUG] [Thread-126708] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:55.943 [DEBUG] [Thread-126708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:55.943 [DEBUG] [Thread-126708] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:55.943 [DEBUG] [Thread-126708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:09:55.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:09:55.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:55.944 [DEBUG] [Thread-126708] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:55.944 [DEBUG] [Thread-126708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:55.944 [DEBUG] [Thread-126708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:55.944 [DEBUG] [Thread-126708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:09:55.944 [DEBUG] [Thread-126708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:55.953 [INFO] [Thread-126708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:55.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:56.610 [DEBUG] [Thread-126708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:56.610 [DEBUG] [Thread-126708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:56.610 [DEBUG] [Thread-126708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:09:56.651 [DEBUG] [Thread-126708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:56.651 [DEBUG] [Thread-126708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:56.653 [DEBUG] [Thread-126708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:56.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:56.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:09:56.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:09:56.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:09:56.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:56.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:09:56.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:56.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.506680 -999.00  +19.50  20.02     33   +3.00 1 1 1 1 1   888    0 17.50 51.16 ----- 10.0 20.0 210.6 27.8 25.2 -28.1 24.2 -26.6 25.3 -26.4 26.5 -28.4
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.506680
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:09:56.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:09:36', tmtdew=18.48, humidity=28.66, cloud=0.0, wind=23.41, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:09:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:09:56.675 [DEBUG] [Thread-126708] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:09:56.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-28T14:09:56.760 [DEBUG] [Thread-126711] [transport.py] [_log()] starting thread (client mode): 0x2e38d060
2025-09-28T14:09:56.760 [DEBUG] [Thread-126711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:09:56.775 [DEBUG] [Thread-126711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:09:56.776 [INFO] [Thread-126711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] client lang: <none>
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] server lang: <none>
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] kex follows: False
2025-09-28T14:09:56.783 [DEBUG] [Thread-126711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] Compression: none
2025-09-28T14:09:56.784 [DEBUG] [Thread-126711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:09:56.841 [DEBUG] [Thread-126711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:09:56.842 [DEBUG] [Thread-126711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:09:56.842 [DEBUG] [Thread-126711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:09:56.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:09:56.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:09:56.897 [DEBUG] [Thread-126711] [transport.py] [_log()] userauth is OK
2025-09-28T14:09:56.897 [DEBUG] [Thread-126711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:09:56.897 [DEBUG] [Thread-126711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:09:56.898 [DEBUG] [Thread-126711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:09:56.898 [DEBUG] [Thread-126711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:09:56.917 [INFO] [Thread-126711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:09:56.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:09:56.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:09:57.914 [DEBUG] [Thread-126711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:09:57.914 [DEBUG] [Thread-126711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:09:57.962 [DEBUG] [Thread-126711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:09:57.962 [DEBUG] [Thread-126711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:09:57.971 [DEBUG] [Thread-126711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:09:57.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:09:57.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-28T14:09:57.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-28T14:09:57.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:09:57.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:09:57.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:09:58.006 [DEBUG] [Thread-126711] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:00.716 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:00.717 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:08.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:10:08.009 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:10:08.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-28T14:10:08.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 9, 36), 18.48, 28.66, 0.0, 23.41, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:10:08.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:09:36
2025-09-28T14:10:08.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:10:08.915 [DEBUG] [Thread-126713] [transport.py] [_log()] starting thread (client mode): 0x2b96e560
2025-09-28T14:10:08.916 [DEBUG] [Thread-126713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:08.936 [DEBUG] [Thread-126713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:10:08.936 [INFO] [Thread-126713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] Compression: none
2025-09-28T14:10:08.938 [DEBUG] [Thread-126713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:08.950 [DEBUG] [Thread-126713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:08.950 [DEBUG] [Thread-126713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:08.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:10:08.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:10:08.951 [DEBUG] [Thread-126713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:08.961 [INFO] [Thread-126713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:08.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:09.129 [DEBUG] [Thread-126715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:10.378 [DEBUG] [Thread-126713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:10.379 [DEBUG] [Thread-126713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:10.379 [DEBUG] [Thread-126713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:10:10.419 [DEBUG] [Thread-126713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:10.419 [DEBUG] [Thread-126713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:10.422 [DEBUG] [Thread-126713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:10.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:10.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:10:10.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:10:10.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:10:10.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:10.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:10:10.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.506680 -999.00  +19.50  20.02     33   +3.00 1 1 1 1 1   888    0 17.50 51.16 ----- 10.0 20.0 210.6 27.8 25.2 -28.1 24.2 -26.6 25.3 -26.4 26.5 -28.4
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:10:10.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.506680
2025-09-28T14:10:10.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:10:10.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:10:10.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:10:10.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:10:10.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:10:10.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:09:36', tmtdew=18.48, humidity=28.66, cloud=0.0, wind=23.41, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:09:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:10:10.446 [DEBUG] [Thread-126713] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:10.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-28T14:10:10.541 [DEBUG] [Thread-126717] [transport.py] [_log()] starting thread (client mode): 0x28707f70
2025-09-28T14:10:10.541 [DEBUG] [Thread-126717] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:10.557 [DEBUG] [Thread-126717] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:10:10.557 [INFO] [Thread-126717] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:10:10.564 [DEBUG] [Thread-126717] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:10.564 [DEBUG] [Thread-126717] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:10:10.564 [DEBUG] [Thread-126717] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] Compression: none
2025-09-28T14:10:10.565 [DEBUG] [Thread-126717] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:10.621 [DEBUG] [Thread-126717] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:10.622 [DEBUG] [Thread-126717] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:10.622 [DEBUG] [Thread-126717] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:10:10.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:10:10.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:10.678 [DEBUG] [Thread-126717] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:10.678 [DEBUG] [Thread-126717] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:10.678 [DEBUG] [Thread-126717] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:10.678 [DEBUG] [Thread-126717] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:10:10.678 [DEBUG] [Thread-126717] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:10.698 [INFO] [Thread-126717] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:10.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-28T14:10:10.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:11.697 [DEBUG] [Thread-126717] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:11.697 [DEBUG] [Thread-126717] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:11.745 [DEBUG] [Thread-126717] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:11.745 [DEBUG] [Thread-126717] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:11.754 [DEBUG] [Thread-126717] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:11.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10: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-28T14:10: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-28T14:10:11.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:11.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:11.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:11.790 [DEBUG] [Thread-126717] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:14.285 [DEBUG] [Thread-126719 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:21.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:10:21.793 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:10: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-28T14:10:22.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 10, 7), 18.85, 27.98, 0.0, 25.94, 19.05, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:10:22.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:10:07
2025-09-28T14:10:22.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:10:22.646 [DEBUG] [Thread-126720] [transport.py] [_log()] starting thread (client mode): 0x2b9ce950
2025-09-28T14:10:22.646 [DEBUG] [Thread-126720] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:22.667 [DEBUG] [Thread-126720] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:10:22.667 [INFO] [Thread-126720] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:10:22.670 [DEBUG] [Thread-126720] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] Compression: none
2025-09-28T14:10:22.671 [DEBUG] [Thread-126720] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:22.688 [DEBUG] [Thread-126720] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:22.689 [DEBUG] [Thread-126720] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:22.689 [DEBUG] [Thread-126720] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:10:22.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:10:22.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:22.691 [DEBUG] [Thread-126720] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:22.691 [DEBUG] [Thread-126720] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:22.691 [DEBUG] [Thread-126720] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:22.691 [DEBUG] [Thread-126720] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:10:22.692 [DEBUG] [Thread-126720] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:22.713 [INFO] [Thread-126720] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:22.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:23.267 [DEBUG] [Thread-126720] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:23.267 [DEBUG] [Thread-126720] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:23.267 [DEBUG] [Thread-126720] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:10:23.307 [DEBUG] [Thread-126720] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:23.308 [DEBUG] [Thread-126720] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:23.310 [DEBUG] [Thread-126720] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:23.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:23.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:10:23.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:10:23.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:10:23.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:23.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:10:23.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:23.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507027 -999.00  +19.40  14.90     33   +3.00 1 1 1 1 1   888    0 17.67 55.30 ----- 9.1 14.9 202.4 21.1 25.3 -26.2 24.2 -25.7 25.2 -25.2 26.6 -26.3
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507027
2025-09-28T14:10:23.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:10:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:10:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:10:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:10:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:10:23.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:10:07', tmtdew=18.85, humidity=27.98, cloud=0.0, wind=25.94, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:10:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:10:23.338 [DEBUG] [Thread-126720] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:23.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-28T14:10:23.433 [DEBUG] [Thread-126723] [transport.py] [_log()] starting thread (client mode): 0x2b9cee30
2025-09-28T14:10:23.433 [DEBUG] [Thread-126723] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:23.450 [DEBUG] [Thread-126723] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:10:23.450 [INFO] [Thread-126723] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:10:23.458 [DEBUG] [Thread-126723] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] Compression: none
2025-09-28T14:10:23.459 [DEBUG] [Thread-126723] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:23.517 [DEBUG] [Thread-126723] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:23.517 [DEBUG] [Thread-126723] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:23.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:10:23.517 [DEBUG] [Thread-126723] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:10:23.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:23.575 [DEBUG] [Thread-126723] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:23.575 [DEBUG] [Thread-126723] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:23.575 [DEBUG] [Thread-126723] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:23.575 [DEBUG] [Thread-126723] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:10:23.575 [DEBUG] [Thread-126723] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:23.589 [INFO] [Thread-126723] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:23.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-28T14:10:23.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:24.157 [DEBUG] [Thread-126725 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:24.631 [DEBUG] [Thread-126723] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:24.632 [DEBUG] [Thread-126723] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:24.679 [DEBUG] [Thread-126723] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:24.679 [DEBUG] [Thread-126723] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:24.689 [DEBUG] [Thread-126723] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:24.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:24.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-28T14:10:24.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-28T14:10:24.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:24.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:24.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:24.724 [DEBUG] [Thread-126723] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:34.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:10:34.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:10:34.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-28T14:10:35.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 10, 7), 18.85, 27.98, 0.0, 25.94, 19.05, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:10:35.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:10:07
2025-09-28T14:10:35.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:10:35.568 [DEBUG] [Thread-126726] [transport.py] [_log()] starting thread (client mode): 0x2b9cfca0
2025-09-28T14:10:35.569 [DEBUG] [Thread-126726] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:35.589 [DEBUG] [Thread-126726] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:10:35.589 [INFO] [Thread-126726] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:35.593 [DEBUG] [Thread-126726] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] Compression: none
2025-09-28T14:10:35.594 [DEBUG] [Thread-126726] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:35.613 [DEBUG] [Thread-126726] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:35.613 [DEBUG] [Thread-126726] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:35.614 [DEBUG] [Thread-126726] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:10:35.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:10:35.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:35.616 [DEBUG] [Thread-126726] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:35.616 [DEBUG] [Thread-126726] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:35.616 [DEBUG] [Thread-126726] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:35.616 [DEBUG] [Thread-126726] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:10:35.616 [DEBUG] [Thread-126726] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:35.631 [INFO] [Thread-126726] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:35.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:37.436 [DEBUG] [Thread-126726] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:37.436 [DEBUG] [Thread-126726] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:37.437 [DEBUG] [Thread-126726] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:10:37.477 [DEBUG] [Thread-126726] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:37.478 [DEBUG] [Thread-126726] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:37.481 [DEBUG] [Thread-126726] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:37.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:37.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:10:37.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:10:37.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:10:37.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:37.509 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:10:37.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:37.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:37.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:10:37.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507027 -999.00  +19.40  14.90     33   +3.00 1 1 1 1 1   888    0 17.67 55.30 ----- 9.1 14.9 202.4 21.1 25.3 -26.2 24.2 -25.7 25.2 -25.2 26.6 -26.3
2025-09-28T14:10:37.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:10:37.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:10:37.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507027
2025-09-28T14:10:37.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:10:37.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:10:37.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:10:37.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:10:37.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:10:37.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:10:07', tmtdew=18.85, humidity=27.98, cloud=0.0, wind=25.94, temperature=19.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:10:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:10:37.512 [DEBUG] [Thread-126726] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:37.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-28T14:10:37.609 [DEBUG] [Thread-126729] [transport.py] [_log()] starting thread (client mode): 0x2b96fc70
2025-09-28T14:10:37.609 [DEBUG] [Thread-126729] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:37.624 [DEBUG] [Thread-126729] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:10:37.624 [INFO] [Thread-126729] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:10:37.631 [DEBUG] [Thread-126729] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:37.632 [DEBUG] [Thread-126729] [transport.py] [_log()] Compression: none
2025-09-28T14:10:37.633 [DEBUG] [Thread-126729] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:37.692 [DEBUG] [Thread-126729] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:37.692 [DEBUG] [Thread-126729] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:37.693 [DEBUG] [Thread-126729] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:10:37.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:10:37.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:37.748 [DEBUG] [Thread-126729] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:37.748 [DEBUG] [Thread-126729] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:37.748 [DEBUG] [Thread-126729] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:37.748 [DEBUG] [Thread-126729] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:10:37.749 [DEBUG] [Thread-126729] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:37.768 [INFO] [Thread-126729] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:37.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-28T14:10:37.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:38.725 [DEBUG] [Thread-126729] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:38.725 [DEBUG] [Thread-126729] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:38.773 [DEBUG] [Thread-126729] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:38.773 [DEBUG] [Thread-126729] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:38.782 [DEBUG] [Thread-126729] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:38.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:38.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-28T14:10:38.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-28T14:10:38.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:38.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:38.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:38.816 [DEBUG] [Thread-126729] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:39.199 [DEBUG] [Thread-126731 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:10:48.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:10:48.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:10:48.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-28T14:10:49.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 10, 39), 18.45, 29.03, 0.0, 23.1, 18.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:10:49.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:10:39
2025-09-28T14:10:49.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:10:49.655 [DEBUG] [Thread-126732] [transport.py] [_log()] starting thread (client mode): 0x2e38eb90
2025-09-28T14:10:49.655 [DEBUG] [Thread-126732] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:49.675 [DEBUG] [Thread-126732] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:10:49.675 [INFO] [Thread-126732] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:49.678 [DEBUG] [Thread-126732] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] Compression: none
2025-09-28T14:10:49.679 [DEBUG] [Thread-126732] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:49.697 [DEBUG] [Thread-126732] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:49.698 [DEBUG] [Thread-126732] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:49.698 [DEBUG] [Thread-126732] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:10:49.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:10:49.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:49.700 [DEBUG] [Thread-126732] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:49.701 [DEBUG] [Thread-126732] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:49.701 [DEBUG] [Thread-126732] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:49.701 [DEBUG] [Thread-126732] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:10:49.701 [DEBUG] [Thread-126732] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:49.724 [INFO] [Thread-126732] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:49.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:50.301 [DEBUG] [Thread-126732] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:50.301 [DEBUG] [Thread-126732] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:50.302 [DEBUG] [Thread-126732] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:10:50.342 [DEBUG] [Thread-126732] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:50.342 [DEBUG] [Thread-126732] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:50.344 [DEBUG] [Thread-126732] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:50.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:50.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:10:50.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:10:50.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:10:50.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:50.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:10:50.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:50.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:50.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:10:50.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507375 -999.00  +19.60   9.67     34   +3.30 1 1 1 1 1   888    0 17.47 55.08 ----- 9.0 9.7 250.9 21.0 25.3 -26.6 24.2 -25.4 25.3 -24.9 26.6 -27.3
2025-09-28T14:10:50.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:10:50.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:10:50.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507375
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:10:50.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:10:39', tmtdew=18.45, humidity=29.03, cloud=0.0, wind=23.1, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:10:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:10:50.374 [DEBUG] [Thread-126732] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:50.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-28T14:10:50.470 [DEBUG] [Thread-126735] [transport.py] [_log()] starting thread (client mode): 0x2b9ceda0
2025-09-28T14:10:50.470 [DEBUG] [Thread-126735] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:10:50.485 [DEBUG] [Thread-126735] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:10:50.486 [INFO] [Thread-126735] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:10:50.493 [DEBUG] [Thread-126735] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:50.494 [DEBUG] [Thread-126735] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] client lang: <none>
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] server lang: <none>
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] kex follows: False
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] Compression: none
2025-09-28T14:10:50.495 [DEBUG] [Thread-126735] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:10:50.552 [DEBUG] [Thread-126735] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:10:50.553 [DEBUG] [Thread-126735] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:10:50.553 [DEBUG] [Thread-126735] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:10:50.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:10:50.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:10:50.609 [DEBUG] [Thread-126735] [transport.py] [_log()] userauth is OK
2025-09-28T14:10:50.609 [DEBUG] [Thread-126735] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:10:50.609 [DEBUG] [Thread-126735] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:10:50.609 [DEBUG] [Thread-126735] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:10:50.609 [DEBUG] [Thread-126735] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:10:50.626 [INFO] [Thread-126735] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:10:50.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-28T14:10:50.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:10:51.611 [DEBUG] [Thread-126735] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:10:51.611 [DEBUG] [Thread-126735] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:10:51.659 [DEBUG] [Thread-126735] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:10:51.659 [DEBUG] [Thread-126735] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:10:51.668 [DEBUG] [Thread-126735] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:10:51.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:10:51.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')
2025-09-28T14:10:51.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') -> 00000000
2025-09-28T14:10:51.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:10:51.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:10:51.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:10:51.702 [DEBUG] [Thread-126735] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:10:54.228 [DEBUG] [Thread-126737 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:00.861 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:00.862 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:01.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:11:01.705 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:11:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:11:02.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 10, 39), 18.45, 29.03, 0.0, 23.1, 18.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:11:02.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:10:39
2025-09-28T14:11:02.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:11:02.543 [DEBUG] [Thread-126738] [transport.py] [_log()] starting thread (client mode): 0x2e3746d0
2025-09-28T14:11:02.543 [DEBUG] [Thread-126738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:02.562 [DEBUG] [Thread-126738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:11:02.563 [INFO] [Thread-126738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:02.566 [DEBUG] [Thread-126738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] Compression: none
2025-09-28T14:11:02.567 [DEBUG] [Thread-126738] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:02.585 [DEBUG] [Thread-126738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:02.585 [DEBUG] [Thread-126738] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:02.586 [DEBUG] [Thread-126738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:11:02.586 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:11:02.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:02.628 [DEBUG] [Thread-126738] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:02.628 [DEBUG] [Thread-126738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:02.628 [DEBUG] [Thread-126738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:02.629 [DEBUG] [Thread-126738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:11:02.629 [DEBUG] [Thread-126738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:02.655 [INFO] [Thread-126738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:02.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:03.372 [DEBUG] [Thread-126738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:03.373 [DEBUG] [Thread-126738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:03.373 [DEBUG] [Thread-126738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:11:03.413 [DEBUG] [Thread-126738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:03.414 [DEBUG] [Thread-126738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:03.416 [DEBUG] [Thread-126738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:03.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:03.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:11:03.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:11:03.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:11:03.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:03.431 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:11:03.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:03.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507375 -999.00  +19.60   9.67     34   +3.30 1 1 1 1 1   888    0 17.47 55.08 ----- 9.0 9.7 250.9 21.0 25.3 -26.6 24.2 -25.4 25.3 -24.9 26.6 -27.3
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507375
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:11:03.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:10:39', tmtdew=18.45, humidity=29.03, cloud=0.0, wind=23.1, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:10:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:11:03.432 [DEBUG] [Thread-126738] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:03.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-28T14:11:03.519 [DEBUG] [Thread-126741] [transport.py] [_log()] starting thread (client mode): 0x2b9ce860
2025-09-28T14:11:03.519 [DEBUG] [Thread-126741] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:03.534 [DEBUG] [Thread-126741] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:11:03.534 [INFO] [Thread-126741] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:11:03.542 [DEBUG] [Thread-126741] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:03.542 [DEBUG] [Thread-126741] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:11:03.542 [DEBUG] [Thread-126741] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:03.542 [DEBUG] [Thread-126741] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:03.542 [DEBUG] [Thread-126741] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:03.543 [DEBUG] [Thread-126741] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:03.544 [DEBUG] [Thread-126741] [transport.py] [_log()] Compression: none
2025-09-28T14:11:03.544 [DEBUG] [Thread-126741] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:03.601 [DEBUG] [Thread-126741] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:03.602 [DEBUG] [Thread-126741] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:03.602 [DEBUG] [Thread-126741] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:11:03.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:11:03.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:03.658 [DEBUG] [Thread-126741] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:03.658 [DEBUG] [Thread-126741] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:03.658 [DEBUG] [Thread-126741] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:03.658 [DEBUG] [Thread-126741] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:11:03.658 [DEBUG] [Thread-126741] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:03.674 [INFO] [Thread-126741] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:03.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-28T14:11:03.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:04.674 [DEBUG] [Thread-126741] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:04.674 [DEBUG] [Thread-126741] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:04.722 [DEBUG] [Thread-126741] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:04.722 [DEBUG] [Thread-126741] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:04.731 [DEBUG] [Thread-126741] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:04.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:04.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-28T14:11:04.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-28T14:11:04.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:04.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:04.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:04.766 [DEBUG] [Thread-126741] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:09.269 [DEBUG] [Thread-126743 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:14.341 [DEBUG] [Thread-126744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:14.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:11:14.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:11:14.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-28T14:11:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 11, 11), 18.07, 29.69, 0.0, 21.0, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:11:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:11:11
2025-09-28T14:11:15.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:11:15.604 [DEBUG] [Thread-126745] [transport.py] [_log()] starting thread (client mode): 0x2b9ccdf0
2025-09-28T14:11:15.604 [DEBUG] [Thread-126745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:15.624 [DEBUG] [Thread-126745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:11:15.624 [INFO] [Thread-126745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:11:15.627 [DEBUG] [Thread-126745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:15.627 [DEBUG] [Thread-126745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:11:15.627 [DEBUG] [Thread-126745] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] Compression: none
2025-09-28T14:11:15.628 [DEBUG] [Thread-126745] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:15.645 [DEBUG] [Thread-126745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:15.645 [DEBUG] [Thread-126745] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:15.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:11:15.646 [DEBUG] [Thread-126745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:11:15.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:15.649 [DEBUG] [Thread-126745] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:15.649 [DEBUG] [Thread-126745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:15.649 [DEBUG] [Thread-126745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:15.649 [DEBUG] [Thread-126745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:11:15.649 [DEBUG] [Thread-126745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:15.666 [INFO] [Thread-126745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:15.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:16.373 [DEBUG] [Thread-126745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:16.373 [DEBUG] [Thread-126745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:16.373 [DEBUG] [Thread-126745] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:11:16.414 [DEBUG] [Thread-126745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:16.415 [DEBUG] [Thread-126745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:16.418 [DEBUG] [Thread-126745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:16.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:16.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:11:16.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:11:16.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:11:16.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:16.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:11:16.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:16.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:11:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507375 -999.00  +19.60   9.67     34   +3.30 1 1 1 1 1   888    0 17.47 55.08 ----- 9.0 9.7 250.9 21.0 25.3 -26.6 24.2 -25.4 25.3 -24.9 26.6 -27.3
2025-09-28T14:11:16.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:11:16.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:11:16.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507375
2025-09-28T14:11:16.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:11:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:11:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:11:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:11:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:11:16.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:11:11', tmtdew=18.07, humidity=29.69, cloud=0.0, wind=21.0, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:10:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:11:16.437 [DEBUG] [Thread-126745] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:16.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-28T14:11:16.531 [DEBUG] [Thread-126748] [transport.py] [_log()] starting thread (client mode): 0x2b9cc370
2025-09-28T14:11:16.531 [DEBUG] [Thread-126748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:16.546 [DEBUG] [Thread-126748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:11:16.546 [INFO] [Thread-126748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:11:16.554 [DEBUG] [Thread-126748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:16.554 [DEBUG] [Thread-126748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:11:16.554 [DEBUG] [Thread-126748] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] Compression: none
2025-09-28T14:11:16.555 [DEBUG] [Thread-126748] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:16.610 [DEBUG] [Thread-126748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:16.610 [DEBUG] [Thread-126748] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:16.611 [DEBUG] [Thread-126748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:11:16.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:11:16.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:16.666 [DEBUG] [Thread-126748] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:16.667 [DEBUG] [Thread-126748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:16.667 [DEBUG] [Thread-126748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:16.667 [DEBUG] [Thread-126748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:11:16.667 [DEBUG] [Thread-126748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:16.689 [INFO] [Thread-126748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:16.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-28T14:11:16.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:17.670 [DEBUG] [Thread-126748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:17.671 [DEBUG] [Thread-126748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:17.718 [DEBUG] [Thread-126748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:17.718 [DEBUG] [Thread-126748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:17.727 [DEBUG] [Thread-126748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:17.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:17.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-28T14:11:17.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-28T14:11:17.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:17.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:17.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:17.762 [DEBUG] [Thread-126748] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:24.302 [DEBUG] [Thread-126750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:27.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:11:27.755 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:11:27.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-28T14:11:28.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 11, 11), 18.07, 29.69, 0.0, 21.0, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:11:28.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:11:11
2025-09-28T14:11:28.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:11:28.600 [DEBUG] [Thread-126751] [transport.py] [_log()] starting thread (client mode): 0x2e3748b0
2025-09-28T14:11:28.600 [DEBUG] [Thread-126751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:28.620 [DEBUG] [Thread-126751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:11:28.620 [INFO] [Thread-126751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:28.623 [DEBUG] [Thread-126751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:28.624 [DEBUG] [Thread-126751] [transport.py] [_log()] Compression: none
2025-09-28T14:11:28.625 [DEBUG] [Thread-126751] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:28.635 [DEBUG] [Thread-126751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:28.635 [DEBUG] [Thread-126751] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:28.636 [DEBUG] [Thread-126751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:11:28.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:11:28.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:28.638 [DEBUG] [Thread-126751] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:28.639 [DEBUG] [Thread-126751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:28.639 [DEBUG] [Thread-126751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:28.639 [DEBUG] [Thread-126751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:11:28.639 [DEBUG] [Thread-126751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:28.653 [INFO] [Thread-126751] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:28.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:29.269 [DEBUG] [Thread-126751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:29.270 [DEBUG] [Thread-126751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:29.270 [DEBUG] [Thread-126751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:11:29.310 [DEBUG] [Thread-126751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:29.310 [DEBUG] [Thread-126751] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:29.313 [DEBUG] [Thread-126751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:29.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:29.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:11:29.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:11:29.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:11:29.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:29.334 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:11:29.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:29.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507722 -999.00  +19.80  11.89     33   +3.20 1 1 1 1 1   888    0 17.68 59.20 ----- 10.2 11.9 238.6 24.3 25.3 -27.7 24.3 -24.9 25.4 -25.3 26.6 -28.2
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507722
2025-09-28T14:11:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:11:29.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:11:29.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:11:29.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:11:29.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:11:29.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:11:11', tmtdew=18.07, humidity=29.69, cloud=0.0, wind=21.0, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:11:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:11:29.336 [DEBUG] [Thread-126751] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:29.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-28T14:11:29.432 [DEBUG] [Thread-126754] [transport.py] [_log()] starting thread (client mode): 0x2e377910
2025-09-28T14:11:29.432 [DEBUG] [Thread-126754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:29.447 [DEBUG] [Thread-126754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:11:29.447 [INFO] [Thread-126754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:11:29.454 [DEBUG] [Thread-126754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] Compression: none
2025-09-28T14:11:29.455 [DEBUG] [Thread-126754] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:29.511 [DEBUG] [Thread-126754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:29.512 [DEBUG] [Thread-126754] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:29.512 [DEBUG] [Thread-126754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:11:29.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:11:29.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:29.567 [DEBUG] [Thread-126754] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:29.568 [DEBUG] [Thread-126754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:29.568 [DEBUG] [Thread-126754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:29.568 [DEBUG] [Thread-126754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:11:29.568 [DEBUG] [Thread-126754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:29.587 [INFO] [Thread-126754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:29.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-28T14:11:29.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:30.561 [DEBUG] [Thread-126754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:30.561 [DEBUG] [Thread-126754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:30.609 [DEBUG] [Thread-126754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:30.609 [DEBUG] [Thread-126754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:30.618 [DEBUG] [Thread-126754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:30.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:30.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-28T14:11:30.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-28T14:11:30.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:30.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:30.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:30.654 [DEBUG] [Thread-126754] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:39.349 [DEBUG] [Thread-126756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:40.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:11:40.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:11:40.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-28T14:11:41.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 11, 11), 18.07, 29.69, 0.0, 21.0, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:11:41.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:11:11
2025-09-28T14:11:41.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:11:41.494 [DEBUG] [Thread-126757] [transport.py] [_log()] starting thread (client mode): 0x2b9ce8f0
2025-09-28T14:11:41.494 [DEBUG] [Thread-126757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:41.514 [DEBUG] [Thread-126757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:11:41.514 [INFO] [Thread-126757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] Compression: none
2025-09-28T14:11:41.517 [DEBUG] [Thread-126757] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:41.531 [DEBUG] [Thread-126757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:41.531 [DEBUG] [Thread-126757] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:41.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:11:41.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:11:41.532 [DEBUG] [Thread-126757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:41.541 [INFO] [Thread-126757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:41.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:42.288 [DEBUG] [Thread-126757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:42.288 [DEBUG] [Thread-126757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:42.288 [DEBUG] [Thread-126757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:11:42.329 [DEBUG] [Thread-126757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:42.329 [DEBUG] [Thread-126757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:42.331 [DEBUG] [Thread-126757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:42.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:42.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:11:42.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:11:42.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:42.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:11:42.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507722 -999.00  +19.80  11.89     33   +3.20 1 1 1 1 1   888    0 17.68 59.20 ----- 10.2 11.9 238.6 24.3 25.3 -27.7 24.3 -24.9 25.4 -25.3 26.6 -28.2
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507722
2025-09-28T14:11:42.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:11:42.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:11:42.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:11:42.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:11:42.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:11:42.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:11:11', tmtdew=18.07, humidity=29.69, cloud=0.0, wind=21.0, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:11:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:11:42.346 [DEBUG] [Thread-126757] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:42.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-28T14:11:42.433 [DEBUG] [Thread-126760] [transport.py] [_log()] starting thread (client mode): 0x2b9cd000
2025-09-28T14:11:42.433 [DEBUG] [Thread-126760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:42.450 [DEBUG] [Thread-126760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:11:42.450 [INFO] [Thread-126760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:42.458 [DEBUG] [Thread-126760] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] Compression: none
2025-09-28T14:11:42.459 [DEBUG] [Thread-126760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:42.516 [DEBUG] [Thread-126760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:42.517 [DEBUG] [Thread-126760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:42.517 [DEBUG] [Thread-126760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:11:42.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:11:42.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:42.577 [DEBUG] [Thread-126760] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:42.577 [DEBUG] [Thread-126760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:42.577 [DEBUG] [Thread-126760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:42.577 [DEBUG] [Thread-126760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:11:42.577 [DEBUG] [Thread-126760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:42.591 [INFO] [Thread-126760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:42.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-28T14:11:42.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:43.567 [DEBUG] [Thread-126760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:43.568 [DEBUG] [Thread-126760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:43.616 [DEBUG] [Thread-126760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:43.616 [DEBUG] [Thread-126760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:43.626 [DEBUG] [Thread-126760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:43.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:43.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-28T14:11:43.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-28T14:11:43.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:43.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:43.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:43.663 [DEBUG] [Thread-126760] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:53.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:11:53.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:11:53.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-28T14:11:54.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 11, 43), 18.35, 28.91, 0.0, 23.24, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:11:54.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:11:43
2025-09-28T14:11:54.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:11:54.387 [DEBUG] [Thread-126762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:11:54.521 [DEBUG] [Thread-126763] [transport.py] [_log()] starting thread (client mode): 0x2b96c430
2025-09-28T14:11:54.521 [DEBUG] [Thread-126763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:54.540 [DEBUG] [Thread-126763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:11:54.540 [INFO] [Thread-126763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:11:54.543 [DEBUG] [Thread-126763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:54.543 [DEBUG] [Thread-126763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:11:54.543 [DEBUG] [Thread-126763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:54.543 [DEBUG] [Thread-126763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:54.543 [DEBUG] [Thread-126763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] Compression: none
2025-09-28T14:11:54.544 [DEBUG] [Thread-126763] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:54.562 [DEBUG] [Thread-126763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:54.563 [DEBUG] [Thread-126763] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:54.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:11:54.564 [DEBUG] [Thread-126763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:11:54.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:54.566 [DEBUG] [Thread-126763] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:54.566 [DEBUG] [Thread-126763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:54.566 [DEBUG] [Thread-126763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:54.566 [DEBUG] [Thread-126763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:11:54.566 [DEBUG] [Thread-126763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:54.590 [INFO] [Thread-126763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:54.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:55.367 [DEBUG] [Thread-126763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:55.367 [DEBUG] [Thread-126763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:55.368 [DEBUG] [Thread-126763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:11:55.408 [DEBUG] [Thread-126763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:55.408 [DEBUG] [Thread-126763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:55.411 [DEBUG] [Thread-126763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:55.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:55.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:11:55.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:11:55.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:11:55.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:55.430 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:11:55.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:55.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.507722 -999.00  +19.80  11.89     33   +3.20 1 1 1 1 1   888    0 17.68 59.20 ----- 10.2 11.9 238.6 24.3 25.3 -27.7 24.3 -24.9 25.4 -25.3 26.6 -28.2
2025-09-28T14:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:11:55.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.507722
2025-09-28T14:11:55.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:11:55.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:11:55.432 [DEBUG] [Thread-126763] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:11:55.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:11:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:11:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:11:55.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:11:43', tmtdew=18.35, humidity=28.91, cloud=0.0, wind=23.24, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:11:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:11:55.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-28T14:11:55.532 [DEBUG] [Thread-126766] [transport.py] [_log()] starting thread (client mode): 0x2b96f7f0
2025-09-28T14:11:55.532 [DEBUG] [Thread-126766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:11:55.546 [DEBUG] [Thread-126766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:11:55.547 [INFO] [Thread-126766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:11:55.554 [DEBUG] [Thread-126766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:11:55.554 [DEBUG] [Thread-126766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:11:55.554 [DEBUG] [Thread-126766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] client lang: <none>
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] server lang: <none>
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] kex follows: False
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] Compression: none
2025-09-28T14:11:55.555 [DEBUG] [Thread-126766] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:11:55.612 [DEBUG] [Thread-126766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:11:55.613 [DEBUG] [Thread-126766] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:11:55.613 [DEBUG] [Thread-126766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:11:55.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:11:55.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:11:55.669 [DEBUG] [Thread-126766] [transport.py] [_log()] userauth is OK
2025-09-28T14:11:55.669 [DEBUG] [Thread-126766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:11:55.669 [DEBUG] [Thread-126766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:11:55.669 [DEBUG] [Thread-126766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:11:55.669 [DEBUG] [Thread-126766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:11:55.689 [INFO] [Thread-126766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:11:55.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-28T14:11:55.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:11:56.668 [DEBUG] [Thread-126766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:11:56.668 [DEBUG] [Thread-126766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:11:56.716 [DEBUG] [Thread-126766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:11:56.716 [DEBUG] [Thread-126766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:11:56.725 [DEBUG] [Thread-126766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:11:56.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:11:56.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')
2025-09-28T14:11:56.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-28T14:11:56.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:11:56.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:11:56.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:11:56.759 [DEBUG] [Thread-126766] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:01.002 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:01.003 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:06.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:12:06.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:12:06.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-28T14:12:07.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 11, 43), 18.35, 28.91, 0.0, 23.24, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:12:07.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:11:43
2025-09-28T14:12:07.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:12:07.592 [DEBUG] [Thread-126768] [transport.py] [_log()] starting thread (client mode): 0x2b9ce500
2025-09-28T14:12:07.592 [DEBUG] [Thread-126768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:07.612 [DEBUG] [Thread-126768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:12:07.613 [INFO] [Thread-126768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:12:07.616 [DEBUG] [Thread-126768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:07.616 [DEBUG] [Thread-126768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:12:07.616 [DEBUG] [Thread-126768] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:07.616 [DEBUG] [Thread-126768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:07.616 [DEBUG] [Thread-126768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] Compression: none
2025-09-28T14:12:07.617 [DEBUG] [Thread-126768] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:07.635 [DEBUG] [Thread-126768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:07.636 [DEBUG] [Thread-126768] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:07.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:12:07.636 [DEBUG] [Thread-126768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:12:07.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:07.638 [DEBUG] [Thread-126768] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:07.639 [DEBUG] [Thread-126768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:07.639 [DEBUG] [Thread-126768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:07.639 [DEBUG] [Thread-126768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:12:07.639 [DEBUG] [Thread-126768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:07.660 [INFO] [Thread-126768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:07.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:08.270 [DEBUG] [Thread-126768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:08.270 [DEBUG] [Thread-126768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:08.271 [DEBUG] [Thread-126768] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:12:08.311 [DEBUG] [Thread-126768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:08.311 [DEBUG] [Thread-126768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:08.313 [DEBUG] [Thread-126768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:08.328 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:08.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:12:08.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:12:08.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:12:08.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:08.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:12:08.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:08.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508070 -999.00  +19.70  12.64     33   +3.20 1 1 1 1 1   888    0 17.77 59.26 ----- 11.3 12.6 213.2 26.1 25.3 -26.9 24.4 -26.1 25.4 -25.4 26.6 -27.8
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508070
2025-09-28T14:12:08.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:12:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:12:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:12:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:12:08.339 [DEBUG] [Thread-126768] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:12:08.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:11:43', tmtdew=18.35, humidity=28.91, cloud=0.0, wind=23.24, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:11:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:12:08.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-28T14:12:08.435 [DEBUG] [Thread-126771] [transport.py] [_log()] starting thread (client mode): 0x2e376a70
2025-09-28T14:12:08.436 [DEBUG] [Thread-126771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:08.451 [DEBUG] [Thread-126771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:12:08.451 [INFO] [Thread-126771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:12:08.458 [DEBUG] [Thread-126771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:08.459 [DEBUG] [Thread-126771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:08.460 [DEBUG] [Thread-126771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:08.461 [DEBUG] [Thread-126771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:08.461 [DEBUG] [Thread-126771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:08.461 [DEBUG] [Thread-126771] [transport.py] [_log()] Compression: none
2025-09-28T14:12:08.461 [DEBUG] [Thread-126771] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:08.519 [DEBUG] [Thread-126771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:08.520 [DEBUG] [Thread-126771] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:08.520 [DEBUG] [Thread-126771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:12:08.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:12:08.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:08.578 [DEBUG] [Thread-126771] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:08.578 [DEBUG] [Thread-126771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:08.579 [DEBUG] [Thread-126771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:08.579 [DEBUG] [Thread-126771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:12:08.579 [DEBUG] [Thread-126771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:08.598 [INFO] [Thread-126771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:08.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-28T14:12:08.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:09.413 [DEBUG] [Thread-126773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:09.626 [DEBUG] [Thread-126771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:09.626 [DEBUG] [Thread-126771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:09.674 [DEBUG] [Thread-126771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:09.674 [DEBUG] [Thread-126771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:09.684 [DEBUG] [Thread-126771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:09.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:09.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-28T14:12:09.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-28T14:12:09.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:09.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:09.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:09.719 [DEBUG] [Thread-126771] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:14.374 [DEBUG] [Thread-126774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:19.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:12:19.714 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:12:19.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-28T14:12:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 12, 15), 18.46, 28.69, 0.0, 25.16, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:12:20.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:12:15
2025-09-28T14:12:20.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:12:20.570 [DEBUG] [Thread-126775] [transport.py] [_log()] starting thread (client mode): 0x2b96d450
2025-09-28T14:12:20.570 [DEBUG] [Thread-126775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:20.591 [DEBUG] [Thread-126775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:12:20.591 [INFO] [Thread-126775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:20.594 [DEBUG] [Thread-126775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:20.595 [DEBUG] [Thread-126775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:20.595 [DEBUG] [Thread-126775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:20.595 [DEBUG] [Thread-126775] [transport.py] [_log()] Compression: none
2025-09-28T14:12:20.595 [DEBUG] [Thread-126775] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:20.608 [DEBUG] [Thread-126775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:20.608 [DEBUG] [Thread-126775] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:20.609 [DEBUG] [Thread-126775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:12:20.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:12:20.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:20.609 [DEBUG] [Thread-126775] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:20.610 [DEBUG] [Thread-126775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:20.610 [DEBUG] [Thread-126775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:20.610 [DEBUG] [Thread-126775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:12:20.610 [DEBUG] [Thread-126775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:20.619 [INFO] [Thread-126775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:20.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:21.330 [DEBUG] [Thread-126775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:21.331 [DEBUG] [Thread-126775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:21.331 [DEBUG] [Thread-126775] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:12:21.372 [DEBUG] [Thread-126775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:21.372 [DEBUG] [Thread-126775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:21.374 [DEBUG] [Thread-126775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:21.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:21.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:12:21.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:12:21.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:12:21.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:21.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:12:21.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508070 -999.00  +19.70  12.64     33   +3.20 1 1 1 1 1   888    0 17.77 59.26 ----- 11.3 12.6 213.2 26.1 25.3 -26.9 24.4 -26.1 25.4 -25.4 26.6 -27.8
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508070
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:12:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:12:15', tmtdew=18.46, humidity=28.69, cloud=0.0, wind=25.16, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:11:37.248', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:12:21.393 [DEBUG] [Thread-126775] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:21.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-28T14:12:21.476 [DEBUG] [Thread-126778] [transport.py] [_log()] starting thread (client mode): 0x2b96c040
2025-09-28T14:12:21.476 [DEBUG] [Thread-126778] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:21.490 [DEBUG] [Thread-126778] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:12:21.490 [INFO] [Thread-126778] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:21.498 [DEBUG] [Thread-126778] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:21.499 [DEBUG] [Thread-126778] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:21.499 [DEBUG] [Thread-126778] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:21.499 [DEBUG] [Thread-126778] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:21.499 [DEBUG] [Thread-126778] [transport.py] [_log()] Compression: none
2025-09-28T14:12:21.499 [DEBUG] [Thread-126778] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:21.553 [DEBUG] [Thread-126778] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:21.553 [DEBUG] [Thread-126778] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:21.553 [DEBUG] [Thread-126778] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:12:21.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:12:21.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:21.611 [DEBUG] [Thread-126778] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:21.611 [DEBUG] [Thread-126778] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:21.611 [DEBUG] [Thread-126778] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:21.611 [DEBUG] [Thread-126778] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:12:21.611 [DEBUG] [Thread-126778] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:21.625 [INFO] [Thread-126778] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:21.625 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:12:21.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:22.630 [DEBUG] [Thread-126778] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:22.630 [DEBUG] [Thread-126778] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:22.678 [DEBUG] [Thread-126778] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:22.678 [DEBUG] [Thread-126778] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:22.686 [DEBUG] [Thread-126778] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:22.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:22.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-28T14:12:22.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-28T14:12:22.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:22.710 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:22.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:22.718 [DEBUG] [Thread-126778] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:24.458 [DEBUG] [Thread-126780 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:32.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:12:32.720 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:12:32.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-28T14:12:33.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 12, 15), 18.46, 28.69, 0.0, 25.16, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:12:33.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:12:15
2025-09-28T14:12:33.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:12:33.538 [DEBUG] [Thread-126781] [transport.py] [_log()] starting thread (client mode): 0x2b96f520
2025-09-28T14:12:33.538 [DEBUG] [Thread-126781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:33.557 [DEBUG] [Thread-126781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:12:33.557 [INFO] [Thread-126781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] Compression: none
2025-09-28T14:12:33.559 [DEBUG] [Thread-126781] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:33.577 [DEBUG] [Thread-126781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:33.577 [DEBUG] [Thread-126781] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:33.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:12:33.578 [DEBUG] [Thread-126781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:12:33.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:33.580 [DEBUG] [Thread-126781] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:33.581 [DEBUG] [Thread-126781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:33.581 [DEBUG] [Thread-126781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:33.581 [DEBUG] [Thread-126781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:12:33.581 [DEBUG] [Thread-126781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:33.599 [INFO] [Thread-126781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:33.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:34.182 [DEBUG] [Thread-126781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:34.182 [DEBUG] [Thread-126781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:34.182 [DEBUG] [Thread-126781] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:12:34.222 [DEBUG] [Thread-126781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:34.222 [DEBUG] [Thread-126781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:34.225 [DEBUG] [Thread-126781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:34.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:34.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:12:34.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:12:34.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:12:34.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:34.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:12:34.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:34.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508417 -999.00  +19.80  13.94     33   +3.10 1 1 1 1 1   888    0 17.86 66.46 ----- 21.1 13.9 231.4 25.3 25.3 -27.1 24.3 -26.8 25.4 -25.9 26.6 -27.2
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508417
2025-09-28T14:12:34.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:12:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:12:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:12:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:12:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:12:34.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:12:15', tmtdew=18.46, humidity=28.69, cloud=0.0, wind=25.16, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:12:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:12:34.245 [DEBUG] [Thread-126781] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:34.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-28T14:12:34.341 [DEBUG] [Thread-126784] [transport.py] [_log()] starting thread (client mode): 0x28705d20
2025-09-28T14:12:34.341 [DEBUG] [Thread-126784] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:34.355 [DEBUG] [Thread-126784] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:12:34.356 [INFO] [Thread-126784] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:12:34.363 [DEBUG] [Thread-126784] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:34.363 [DEBUG] [Thread-126784] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] Compression: none
2025-09-28T14:12:34.364 [DEBUG] [Thread-126784] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:34.421 [DEBUG] [Thread-126784] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:34.422 [DEBUG] [Thread-126784] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:34.422 [DEBUG] [Thread-126784] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:12:34.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:12:34.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:34.480 [DEBUG] [Thread-126784] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:34.480 [DEBUG] [Thread-126784] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:34.480 [DEBUG] [Thread-126784] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:34.480 [DEBUG] [Thread-126784] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:12:34.489 [DEBUG] [Thread-126784] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:34.511 [INFO] [Thread-126784] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:34.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-28T14:12:34.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:35.516 [DEBUG] [Thread-126784] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:35.516 [DEBUG] [Thread-126784] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:35.564 [DEBUG] [Thread-126784] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:35.564 [DEBUG] [Thread-126784] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:35.573 [DEBUG] [Thread-126784] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:35.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:35.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-28T14:12:35.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-28T14:12:35.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:35.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:35.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:35.609 [DEBUG] [Thread-126784] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:39.509 [DEBUG] [Thread-126786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:45.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:12:45.605 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:12:45.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-28T14:12:46.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 12, 15), 18.46, 28.69, 0.0, 25.16, 18.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:12:46.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:12:15
2025-09-28T14:12:46.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:12:46.427 [DEBUG] [Thread-126787] [transport.py] [_log()] starting thread (client mode): 0x2b96df60
2025-09-28T14:12:46.427 [DEBUG] [Thread-126787] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:46.443 [DEBUG] [Thread-126787] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:12:46.443 [INFO] [Thread-126787] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:46.447 [DEBUG] [Thread-126787] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] Compression: none
2025-09-28T14:12:46.448 [DEBUG] [Thread-126787] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:46.464 [DEBUG] [Thread-126787] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:46.464 [DEBUG] [Thread-126787] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:46.465 [DEBUG] [Thread-126787] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:12:46.465 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:12:46.466 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:46.508 [DEBUG] [Thread-126787] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:46.509 [DEBUG] [Thread-126787] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:46.509 [DEBUG] [Thread-126787] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:46.509 [DEBUG] [Thread-126787] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:12:46.509 [DEBUG] [Thread-126787] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:46.529 [INFO] [Thread-126787] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:46.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:47.262 [DEBUG] [Thread-126787] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:47.263 [DEBUG] [Thread-126787] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:47.263 [DEBUG] [Thread-126787] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:12:47.303 [DEBUG] [Thread-126787] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:47.303 [DEBUG] [Thread-126787] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:47.310 [DEBUG] [Thread-126787] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:47.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:47.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:12:47.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:12:47.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:12:47.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:47.332 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:12:47.332 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508417 -999.00  +19.80  13.94     33   +3.10 1 1 1 1 1   888    0 17.86 66.46 ----- 21.1 13.9 231.4 25.3 25.3 -27.1 24.3 -26.8 25.4 -25.9 26.6 -27.2
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:12:47.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508417
2025-09-28T14:12:47.334 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:12:47.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:12:47.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:12:47.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:12:47.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:12:47.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:12:15', tmtdew=18.46, humidity=28.69, cloud=0.0, wind=25.16, temperature=18.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:12:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:12:47.335 [DEBUG] [Thread-126787] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:47.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:12:47.430 [DEBUG] [Thread-126790] [transport.py] [_log()] starting thread (client mode): 0x2b9ccca0
2025-09-28T14:12:47.430 [DEBUG] [Thread-126790] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:47.445 [DEBUG] [Thread-126790] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:12:47.445 [INFO] [Thread-126790] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:47.453 [DEBUG] [Thread-126790] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:47.454 [DEBUG] [Thread-126790] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:47.454 [DEBUG] [Thread-126790] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:47.454 [DEBUG] [Thread-126790] [transport.py] [_log()] Compression: none
2025-09-28T14:12:47.454 [DEBUG] [Thread-126790] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:47.512 [DEBUG] [Thread-126790] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:47.512 [DEBUG] [Thread-126790] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:47.513 [DEBUG] [Thread-126790] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:12:47.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:12:47.514 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:47.570 [DEBUG] [Thread-126790] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:47.570 [DEBUG] [Thread-126790] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:47.570 [DEBUG] [Thread-126790] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:47.570 [DEBUG] [Thread-126790] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:12:47.570 [DEBUG] [Thread-126790] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:47.592 [INFO] [Thread-126790] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:47.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-28T14:12:47.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:12:48.609 [DEBUG] [Thread-126790] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:12:48.610 [DEBUG] [Thread-126790] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:12:48.658 [DEBUG] [Thread-126790] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:12:48.658 [DEBUG] [Thread-126790] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:12:48.666 [DEBUG] [Thread-126790] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:12:48.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:12:48.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')
2025-09-28T14:12:48.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') -> 00000000
2025-09-28T14:12:48.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:12:48.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:12:48.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:12:48.697 [DEBUG] [Thread-126790] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:12:54.557 [DEBUG] [Thread-126792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:12:58.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:12:58.690 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:12:58.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-28T14:12:59.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 12, 47), 18.7, 28.43, 0.0, 20.41, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:12:59.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:12:47
2025-09-28T14:12:59.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:12:59.524 [DEBUG] [Thread-126793] [transport.py] [_log()] starting thread (client mode): 0x2e377250
2025-09-28T14:12:59.524 [DEBUG] [Thread-126793] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:12:59.544 [DEBUG] [Thread-126793] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:12:59.544 [INFO] [Thread-126793] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] client lang: <none>
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] server lang: <none>
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] kex follows: False
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:12:59.547 [DEBUG] [Thread-126793] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:12:59.548 [DEBUG] [Thread-126793] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:12:59.548 [DEBUG] [Thread-126793] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:12:59.548 [DEBUG] [Thread-126793] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:12:59.548 [DEBUG] [Thread-126793] [transport.py] [_log()] Compression: none
2025-09-28T14:12:59.548 [DEBUG] [Thread-126793] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:12:59.565 [DEBUG] [Thread-126793] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:12:59.565 [DEBUG] [Thread-126793] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:12:59.565 [DEBUG] [Thread-126793] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:12:59.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:12:59.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:12:59.566 [DEBUG] [Thread-126793] [transport.py] [_log()] userauth is OK
2025-09-28T14:12:59.566 [DEBUG] [Thread-126793] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:12:59.566 [DEBUG] [Thread-126793] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:12:59.566 [DEBUG] [Thread-126793] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:12:59.566 [DEBUG] [Thread-126793] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:12:59.581 [INFO] [Thread-126793] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:12:59.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:00.331 [DEBUG] [Thread-126793] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:00.331 [DEBUG] [Thread-126793] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:00.331 [DEBUG] [Thread-126793] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:13:00.371 [DEBUG] [Thread-126793] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:00.371 [DEBUG] [Thread-126793] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:00.374 [DEBUG] [Thread-126793] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:00.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:00.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:13:00.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:13:00.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:13:00.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:00.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:13:00.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:00.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508417 -999.00  +19.80  13.94     33   +3.10 1 1 1 1 1   888    0 17.86 66.46 ----- 21.1 13.9 231.4 25.3 25.3 -27.1 24.3 -26.8 25.4 -25.9 26.6 -27.2
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508417
2025-09-28T14:13:00.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:13:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:13:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:13:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:13:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:13:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:12:47', tmtdew=18.7, humidity=28.43, cloud=0.0, wind=20.41, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:12:07.229', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:13:00.401 [DEBUG] [Thread-126793] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:00.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-28T14:13:00.499 [DEBUG] [Thread-126796] [transport.py] [_log()] starting thread (client mode): 0x2b9cffa0
2025-09-28T14:13:00.499 [DEBUG] [Thread-126796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:00.514 [DEBUG] [Thread-126796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:13:00.514 [INFO] [Thread-126796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:13:00.521 [DEBUG] [Thread-126796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:00.522 [DEBUG] [Thread-126796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:00.523 [DEBUG] [Thread-126796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:00.524 [DEBUG] [Thread-126796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:00.524 [DEBUG] [Thread-126796] [transport.py] [_log()] Compression: none
2025-09-28T14:13:00.524 [DEBUG] [Thread-126796] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:00.581 [DEBUG] [Thread-126796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:00.581 [DEBUG] [Thread-126796] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:00.582 [DEBUG] [Thread-126796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:13:00.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:13:00.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:00.638 [DEBUG] [Thread-126796] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:00.638 [DEBUG] [Thread-126796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:00.638 [DEBUG] [Thread-126796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:00.638 [DEBUG] [Thread-126796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:13:00.638 [DEBUG] [Thread-126796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:00.658 [INFO] [Thread-126796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:00.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-28T14:13:00.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:01.145 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:01.146 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:01.665 [DEBUG] [Thread-126796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:01.665 [DEBUG] [Thread-126796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:01.713 [DEBUG] [Thread-126796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:01.713 [DEBUG] [Thread-126796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:01.722 [DEBUG] [Thread-126796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:01.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:01.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-28T14:13:01.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') -> 00000000
2025-09-28T14:13:01.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:01.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:01.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:01.757 [DEBUG] [Thread-126796] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:09.587 [DEBUG] [Thread-126798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:11.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:13:11.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:13:11.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-28T14:13:12.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 12, 47), 18.7, 28.43, 0.0, 20.41, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:13:12.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:12:47
2025-09-28T14:13:12.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:13:12.594 [DEBUG] [Thread-126799] [transport.py] [_log()] starting thread (client mode): 0x2b9cdae0
2025-09-28T14:13:12.595 [DEBUG] [Thread-126799] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:12.614 [DEBUG] [Thread-126799] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:13:12.614 [INFO] [Thread-126799] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:12.615 [DEBUG] [Thread-126799] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:12.616 [DEBUG] [Thread-126799] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:12.616 [DEBUG] [Thread-126799] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:12.616 [DEBUG] [Thread-126799] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:12.616 [DEBUG] [Thread-126799] [transport.py] [_log()] Compression: none
2025-09-28T14:13:12.616 [DEBUG] [Thread-126799] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:12.629 [DEBUG] [Thread-126799] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:12.629 [DEBUG] [Thread-126799] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:12.630 [DEBUG] [Thread-126799] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:13:12.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:13:12.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:12.632 [DEBUG] [Thread-126799] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:12.632 [DEBUG] [Thread-126799] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:12.632 [DEBUG] [Thread-126799] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:12.632 [DEBUG] [Thread-126799] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:13:12.632 [DEBUG] [Thread-126799] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:12.650 [INFO] [Thread-126799] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:12.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:13.300 [DEBUG] [Thread-126799] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:13.300 [DEBUG] [Thread-126799] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:13.301 [DEBUG] [Thread-126799] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:13:13.341 [DEBUG] [Thread-126799] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:13.341 [DEBUG] [Thread-126799] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:13.344 [DEBUG] [Thread-126799] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:13.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:13.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:13:13.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:13:13.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:13:13.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:13.367 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:13:13.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:13.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:13.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:13:13.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508764 -999.00  +19.30  13.02     34   +3.00 1 1 1 1 1   888    0 18.18 68.50 ----- 12.4 13.0 224.2 30.3 25.1 -26.9 24.4 -26.5 25.3 -26.2 26.3 -27.9
2025-09-28T14:13:13.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:13:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:13:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508764
2025-09-28T14:13:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:13:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:13:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:13:13.369 [DEBUG] [Thread-126799] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:13:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:13:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:12:47', tmtdew=18.7, humidity=28.43, cloud=0.0, wind=20.41, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:12:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:13:13.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-28T14:13:13.465 [DEBUG] [Thread-126802] [transport.py] [_log()] starting thread (client mode): 0x287060e0
2025-09-28T14:13:13.465 [DEBUG] [Thread-126802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:13.480 [DEBUG] [Thread-126802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:13:13.480 [INFO] [Thread-126802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:13.488 [DEBUG] [Thread-126802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:13.489 [DEBUG] [Thread-126802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:13.489 [DEBUG] [Thread-126802] [transport.py] [_log()] Compression: none
2025-09-28T14:13:13.489 [DEBUG] [Thread-126802] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:13.544 [DEBUG] [Thread-126802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:13.544 [DEBUG] [Thread-126802] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:13.544 [DEBUG] [Thread-126802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:13:13.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:13:13.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:13.602 [DEBUG] [Thread-126802] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:13.602 [DEBUG] [Thread-126802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:13.602 [DEBUG] [Thread-126802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:13.602 [DEBUG] [Thread-126802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:13:13.602 [DEBUG] [Thread-126802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:13.615 [INFO] [Thread-126802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:13.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-28T14:13:13.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:14.428 [DEBUG] [Thread-126804 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:14.576 [DEBUG] [Thread-126802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:14.576 [DEBUG] [Thread-126802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:14.624 [DEBUG] [Thread-126802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:14.624 [DEBUG] [Thread-126802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:14.633 [DEBUG] [Thread-126802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:14.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:14.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-28T14:13:14.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-28T14:13:14.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:14.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:14.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:14.667 [DEBUG] [Thread-126802] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:24.632 [DEBUG] [Thread-126805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:24.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:13:24.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:13:24.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-28T14:13:25.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 13, 19), 18.64, 28.56, 0.0, 22.36, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:13:25.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:13:19
2025-09-28T14:13:25.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:13:25.508 [DEBUG] [Thread-126806] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-28T14:13:25.508 [DEBUG] [Thread-126806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:25.528 [DEBUG] [Thread-126806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:13:25.528 [INFO] [Thread-126806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:25.531 [DEBUG] [Thread-126806] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] Compression: none
2025-09-28T14:13:25.532 [DEBUG] [Thread-126806] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:25.551 [DEBUG] [Thread-126806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:25.552 [DEBUG] [Thread-126806] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:25.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:13:25.552 [DEBUG] [Thread-126806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:13:25.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:25.555 [DEBUG] [Thread-126806] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:25.555 [DEBUG] [Thread-126806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:25.555 [DEBUG] [Thread-126806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:25.555 [DEBUG] [Thread-126806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:13:25.556 [DEBUG] [Thread-126806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:25.570 [INFO] [Thread-126806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:25.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:26.326 [DEBUG] [Thread-126806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:26.326 [DEBUG] [Thread-126806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:26.327 [DEBUG] [Thread-126806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:13:26.367 [DEBUG] [Thread-126806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:26.368 [DEBUG] [Thread-126806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:26.370 [DEBUG] [Thread-126806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:26.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:26.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:13:26.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:13:26.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:13:26.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:26.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:13:26.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:26.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:26.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:13:26.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.508764 -999.00  +19.30  13.02     34   +3.00 1 1 1 1 1   888    0 18.18 68.50 ----- 12.4 13.0 224.2 30.3 25.1 -26.9 24.4 -26.5 25.3 -26.2 26.3 -27.9
2025-09-28T14:13:26.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:13:26.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:13:26.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.508764
2025-09-28T14:13:26.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:13:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:13:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:13:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:13:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:13:26.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:13:19', tmtdew=18.64, humidity=28.56, cloud=0.0, wind=22.36, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:12:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:13:26.394 [DEBUG] [Thread-126806] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:26.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-28T14:13:26.494 [DEBUG] [Thread-126809] [transport.py] [_log()] starting thread (client mode): 0x28706e00
2025-09-28T14:13:26.494 [DEBUG] [Thread-126809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:26.509 [DEBUG] [Thread-126809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:13:26.509 [INFO] [Thread-126809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:13:26.517 [DEBUG] [Thread-126809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:26.518 [DEBUG] [Thread-126809] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:26.519 [DEBUG] [Thread-126809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:26.520 [DEBUG] [Thread-126809] [transport.py] [_log()] Compression: none
2025-09-28T14:13:26.520 [DEBUG] [Thread-126809] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:26.577 [DEBUG] [Thread-126809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:26.578 [DEBUG] [Thread-126809] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:26.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:13:26.579 [DEBUG] [Thread-126809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:13:26.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:26.638 [DEBUG] [Thread-126809] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:26.638 [DEBUG] [Thread-126809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:26.638 [DEBUG] [Thread-126809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:26.639 [DEBUG] [Thread-126809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:13:26.639 [DEBUG] [Thread-126809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:26.660 [INFO] [Thread-126809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:26.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-28T14:13:26.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:27.701 [DEBUG] [Thread-126809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:27.701 [DEBUG] [Thread-126809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:27.749 [DEBUG] [Thread-126809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:27.749 [DEBUG] [Thread-126809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:27.758 [DEBUG] [Thread-126809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:27.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:27.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-28T14:13:27.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-28T14:13:27.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:27.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:27.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:27.793 [DEBUG] [Thread-126809] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:37.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:13:37.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:13:37.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-28T14:13:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 13, 19), 18.64, 28.56, 0.0, 22.36, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:13:38.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:13:19
2025-09-28T14:13:38.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:13:38.637 [DEBUG] [Thread-126811] [transport.py] [_log()] starting thread (client mode): 0x2b9cf010
2025-09-28T14:13:38.637 [DEBUG] [Thread-126811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:38.658 [DEBUG] [Thread-126811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:13:38.659 [INFO] [Thread-126811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:38.662 [DEBUG] [Thread-126811] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] Compression: none
2025-09-28T14:13:38.663 [DEBUG] [Thread-126811] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:38.682 [DEBUG] [Thread-126811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:38.682 [DEBUG] [Thread-126811] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:38.683 [DEBUG] [Thread-126811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:13:38.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:13:38.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:38.685 [DEBUG] [Thread-126811] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:38.685 [DEBUG] [Thread-126811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:38.685 [DEBUG] [Thread-126811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:38.685 [DEBUG] [Thread-126811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:13:38.685 [DEBUG] [Thread-126811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:38.702 [INFO] [Thread-126811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:38.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:39.368 [DEBUG] [Thread-126811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:39.368 [DEBUG] [Thread-126811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:39.369 [DEBUG] [Thread-126811] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:13:39.409 [DEBUG] [Thread-126811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:39.409 [DEBUG] [Thread-126811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:39.412 [DEBUG] [Thread-126811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:39.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:39.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:13:39.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:13:39.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:13:39.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:39.438 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:13:39.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:39.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.509111 -999.00  +19.00  28.49     34   +2.90 1 1 1 1 1   888    0 18.01 61.53 ----- 25.3 28.5 266.2 34.4 25.2 -28.2 24.3 -26.1 25.3 -25.1 26.4 -28.7
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.509111
2025-09-28T14:13:39.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:13:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:13:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:13:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:13:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:13:39.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:13:19', tmtdew=18.64, humidity=28.56, cloud=0.0, wind=22.36, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:13:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:13:39.440 [DEBUG] [Thread-126811] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13: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-28T14:13:39.537 [DEBUG] [Thread-126814] [transport.py] [_log()] starting thread (client mode): 0x28706b60
2025-09-28T14:13:39.537 [DEBUG] [Thread-126814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:39.552 [DEBUG] [Thread-126814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:13:39.552 [INFO] [Thread-126814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:13:39.559 [DEBUG] [Thread-126814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:39.560 [DEBUG] [Thread-126814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:39.561 [DEBUG] [Thread-126814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:39.561 [DEBUG] [Thread-126814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:39.561 [DEBUG] [Thread-126814] [transport.py] [_log()] Compression: none
2025-09-28T14:13:39.561 [DEBUG] [Thread-126814] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:39.619 [DEBUG] [Thread-126814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:39.620 [DEBUG] [Thread-126814] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:39.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:13:39.621 [DEBUG] [Thread-126814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:13:39.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:39.675 [DEBUG] [Thread-126814] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:39.676 [DEBUG] [Thread-126814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:39.676 [DEBUG] [Thread-126814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:39.676 [DEBUG] [Thread-126814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:13:39.676 [DEBUG] [Thread-126814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:39.683 [DEBUG] [Thread-126816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:13:39.694 [INFO] [Thread-126814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:39.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-28T14:13:39.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:40.671 [DEBUG] [Thread-126814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:40.671 [DEBUG] [Thread-126814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:40.719 [DEBUG] [Thread-126814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:40.719 [DEBUG] [Thread-126814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:40.727 [DEBUG] [Thread-126814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:40.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:40.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-28T14:13:40.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-28T14:13:40.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:40.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:40.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:40.762 [DEBUG] [Thread-126814] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:50.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:13:50.764 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:13:50.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-28T14:13:51.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 13, 19), 18.64, 28.56, 0.0, 22.36, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:13:51.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:13:19
2025-09-28T14:13:51.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:13:51.583 [DEBUG] [Thread-126817] [transport.py] [_log()] starting thread (client mode): 0x2e38fe50
2025-09-28T14:13:51.583 [DEBUG] [Thread-126817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:51.597 [DEBUG] [Thread-126817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:13:51.597 [INFO] [Thread-126817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:13:51.601 [DEBUG] [Thread-126817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:51.601 [DEBUG] [Thread-126817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:13:51.601 [DEBUG] [Thread-126817] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:51.601 [DEBUG] [Thread-126817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:51.601 [DEBUG] [Thread-126817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] Compression: none
2025-09-28T14:13:51.602 [DEBUG] [Thread-126817] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:51.617 [DEBUG] [Thread-126817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:51.617 [DEBUG] [Thread-126817] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:51.618 [DEBUG] [Thread-126817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:13:51.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:13:51.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:51.619 [DEBUG] [Thread-126817] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:51.620 [DEBUG] [Thread-126817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:51.620 [DEBUG] [Thread-126817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:51.620 [DEBUG] [Thread-126817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:13:51.620 [DEBUG] [Thread-126817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:51.644 [INFO] [Thread-126817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:51.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:52.430 [DEBUG] [Thread-126817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:52.430 [DEBUG] [Thread-126817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:52.430 [DEBUG] [Thread-126817] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:13:52.471 [DEBUG] [Thread-126817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:52.471 [DEBUG] [Thread-126817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:52.473 [DEBUG] [Thread-126817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:52.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:52.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:13:52.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:13:52.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:13:52.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:52.491 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:13:52.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.509111 -999.00  +19.00  28.49     34   +2.90 1 1 1 1 1   888    0 18.01 61.53 ----- 25.3 28.5 266.2 34.4 25.2 -28.2 24.3 -26.1 25.3 -25.1 26.4 -28.7
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:13:52.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.509111
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:13:52.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:13:19', tmtdew=18.64, humidity=28.56, cloud=0.0, wind=22.36, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:13:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:13:52.492 [DEBUG] [Thread-126817] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:52.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-28T14:13:52.576 [DEBUG] [Thread-126820] [transport.py] [_log()] starting thread (client mode): 0x2e38c490
2025-09-28T14:13:52.576 [DEBUG] [Thread-126820] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:13:52.591 [DEBUG] [Thread-126820] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:13:52.591 [INFO] [Thread-126820] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] client lang: <none>
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] server lang: <none>
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] kex follows: False
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] Compression: none
2025-09-28T14:13:52.599 [DEBUG] [Thread-126820] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:13:52.655 [DEBUG] [Thread-126820] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:13:52.655 [DEBUG] [Thread-126820] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:13:52.655 [DEBUG] [Thread-126820] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:13:52.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:13:52.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:13:52.712 [DEBUG] [Thread-126820] [transport.py] [_log()] userauth is OK
2025-09-28T14:13:52.712 [DEBUG] [Thread-126820] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:13:52.712 [DEBUG] [Thread-126820] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:13:52.712 [DEBUG] [Thread-126820] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:13:52.712 [DEBUG] [Thread-126820] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:13:52.726 [INFO] [Thread-126820] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:13:52.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-28T14:13:52.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:13:53.710 [DEBUG] [Thread-126820] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:13:53.710 [DEBUG] [Thread-126820] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:13:53.757 [DEBUG] [Thread-126820] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:13:53.757 [DEBUG] [Thread-126820] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:13:53.766 [DEBUG] [Thread-126820] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:13:53.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:13:53.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-28T14:13:53.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-28T14:13:53.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:13:53.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:13:53.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:13:53.800 [DEBUG] [Thread-126820] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:13:54.729 [DEBUG] [Thread-126822 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:01.300 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:01.301 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:03.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:14:03.801 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:14:03.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-28T14:14:04.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 13, 51), 18.37, 29.16, 0.0, 25.39, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:14:04.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:13:51
2025-09-28T14:14:04.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:14:04.644 [DEBUG] [Thread-126823] [transport.py] [_log()] starting thread (client mode): 0x30ddecb0
2025-09-28T14:14:04.645 [DEBUG] [Thread-126823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:04.665 [DEBUG] [Thread-126823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:14:04.665 [INFO] [Thread-126823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:04.669 [DEBUG] [Thread-126823] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] Compression: none
2025-09-28T14:14:04.670 [DEBUG] [Thread-126823] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:04.690 [DEBUG] [Thread-126823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:04.690 [DEBUG] [Thread-126823] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:04.691 [DEBUG] [Thread-126823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:14:04.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:14:04.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:04.693 [DEBUG] [Thread-126823] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:04.693 [DEBUG] [Thread-126823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:04.693 [DEBUG] [Thread-126823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:04.693 [DEBUG] [Thread-126823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:14:04.693 [DEBUG] [Thread-126823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:04.715 [INFO] [Thread-126823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:04.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:05.534 [DEBUG] [Thread-126823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:05.534 [DEBUG] [Thread-126823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:05.534 [DEBUG] [Thread-126823] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:14:05.575 [DEBUG] [Thread-126823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:05.575 [DEBUG] [Thread-126823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:05.578 [DEBUG] [Thread-126823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:05.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:05.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:14:05.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:14:05.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:14:05.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:05.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:14:05.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:05.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:05.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:14:05.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.509111 -999.00  +19.00  28.49     34   +2.90 1 1 1 1 1   888    0 18.01 61.53 ----- 25.3 28.5 266.2 34.4 25.2 -28.2 24.3 -26.1 25.3 -25.1 26.4 -28.7
2025-09-28T14:14:05.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:14:05.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:14:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.509111
2025-09-28T14:14:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:14:05.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:14:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:14:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:14:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:14:05.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:13:51', tmtdew=18.37, humidity=29.16, cloud=0.0, wind=25.39, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:13:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:14:05.601 [DEBUG] [Thread-126823] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:05.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-28T14:14:05.698 [DEBUG] [Thread-126826] [transport.py] [_log()] starting thread (client mode): 0x2b9cd690
2025-09-28T14:14:05.698 [DEBUG] [Thread-126826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:05.713 [DEBUG] [Thread-126826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:14:05.713 [INFO] [Thread-126826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:14:05.720 [DEBUG] [Thread-126826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:05.721 [DEBUG] [Thread-126826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] Compression: none
2025-09-28T14:14:05.722 [DEBUG] [Thread-126826] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:05.780 [DEBUG] [Thread-126826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:05.781 [DEBUG] [Thread-126826] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:05.781 [DEBUG] [Thread-126826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:14:05.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:14:05.782 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:05.838 [DEBUG] [Thread-126826] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:05.838 [DEBUG] [Thread-126826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:05.838 [DEBUG] [Thread-126826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:05.838 [DEBUG] [Thread-126826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:14:05.838 [DEBUG] [Thread-126826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:05.856 [INFO] [Thread-126826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:05.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-28T14:14:05.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:06.861 [DEBUG] [Thread-126826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:06.861 [DEBUG] [Thread-126826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:06.909 [DEBUG] [Thread-126826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:06.909 [DEBUG] [Thread-126826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:06.917 [DEBUG] [Thread-126826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:06.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:06.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-28T14:14:06.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-28T14:14:06.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:06.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:06.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:06.948 [DEBUG] [Thread-126826] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:09.758 [DEBUG] [Thread-126828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:14.483 [DEBUG] [Thread-126829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:16.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:14:16.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:14:16.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-28T14:14:17.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 13, 51), 18.37, 29.16, 0.0, 25.39, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:14:17.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:13:51
2025-09-28T14:14:17.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:14:17.781 [DEBUG] [Thread-126830] [transport.py] [_log()] starting thread (client mode): 0x2e38ec50
2025-09-28T14:14:17.782 [DEBUG] [Thread-126830] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:17.802 [DEBUG] [Thread-126830] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:14:17.802 [INFO] [Thread-126830] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:17.805 [DEBUG] [Thread-126830] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] Compression: none
2025-09-28T14:14:17.806 [DEBUG] [Thread-126830] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:17.824 [DEBUG] [Thread-126830] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:17.825 [DEBUG] [Thread-126830] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:17.825 [DEBUG] [Thread-126830] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:14:17.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:14:17.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:17.827 [DEBUG] [Thread-126830] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:17.827 [DEBUG] [Thread-126830] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:17.827 [DEBUG] [Thread-126830] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:17.828 [DEBUG] [Thread-126830] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:14:17.828 [DEBUG] [Thread-126830] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:17.850 [INFO] [Thread-126830] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:17.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:18.506 [DEBUG] [Thread-126830] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:18.506 [DEBUG] [Thread-126830] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:18.507 [DEBUG] [Thread-126830] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:14:18.547 [DEBUG] [Thread-126830] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:18.548 [DEBUG] [Thread-126830] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:18.551 [DEBUG] [Thread-126830] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:18.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:18.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:14:18.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:14:18.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:14:18.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:18.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:14:18.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:18.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:18.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:14:18.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.509458 -999.00  +18.30  23.12     35   +2.70 1 1 1 1 1   888    0 17.73 57.15 ----- 14.9 23.1 249.0 33.5 24.9 -28.0 24.2 -26.8 25.1 -26.4 25.9 -28.0
2025-09-28T14:14:18.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:14:18.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:14:18.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.509458
2025-09-28T14:14:18.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:14:18.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:14:18.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:14:18.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:14:18.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:14:18.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:13:51', tmtdew=18.37, humidity=29.16, cloud=0.0, wind=25.39, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:13:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:14:18.577 [DEBUG] [Thread-126830] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:18.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-28T14:14:18.673 [DEBUG] [Thread-126833] [transport.py] [_log()] starting thread (client mode): 0x28706920
2025-09-28T14:14:18.673 [DEBUG] [Thread-126833] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:18.687 [DEBUG] [Thread-126833] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:14:18.688 [INFO] [Thread-126833] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:14:18.696 [DEBUG] [Thread-126833] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:18.696 [DEBUG] [Thread-126833] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:14:18.696 [DEBUG] [Thread-126833] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:18.696 [DEBUG] [Thread-126833] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:18.697 [DEBUG] [Thread-126833] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:18.698 [DEBUG] [Thread-126833] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:18.698 [DEBUG] [Thread-126833] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:18.698 [DEBUG] [Thread-126833] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:18.698 [DEBUG] [Thread-126833] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:18.699 [DEBUG] [Thread-126833] [transport.py] [_log()] Compression: none
2025-09-28T14:14:18.699 [DEBUG] [Thread-126833] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:18.753 [DEBUG] [Thread-126833] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:18.753 [DEBUG] [Thread-126833] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:18.754 [DEBUG] [Thread-126833] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:14:18.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:14:18.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:18.809 [DEBUG] [Thread-126833] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:18.810 [DEBUG] [Thread-126833] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:18.810 [DEBUG] [Thread-126833] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:18.810 [DEBUG] [Thread-126833] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:14:18.810 [DEBUG] [Thread-126833] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:18.830 [INFO] [Thread-126833] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:18.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-28T14:14:18.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:19.820 [DEBUG] [Thread-126833] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:19.820 [DEBUG] [Thread-126833] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:19.868 [DEBUG] [Thread-126833] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:19.868 [DEBUG] [Thread-126833] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:19.877 [DEBUG] [Thread-126833] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:19.886 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:19.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')
2025-09-28T14:14:19.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-28T14:14:19.904 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:19.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:19.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:19.912 [DEBUG] [Thread-126833] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:24.793 [DEBUG] [Thread-126835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:29.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:14:29.915 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:14:29.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-28T14:14:30.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 14, 23), 18.48, 28.98, 0.0, 25.53, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:14:30.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:14:23
2025-09-28T14:14:30.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:14:30.743 [DEBUG] [Thread-126836] [transport.py] [_log()] starting thread (client mode): 0x2e38dd80
2025-09-28T14:14:30.743 [DEBUG] [Thread-126836] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:30.763 [DEBUG] [Thread-126836] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:14:30.763 [INFO] [Thread-126836] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:14:30.766 [DEBUG] [Thread-126836] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:30.767 [DEBUG] [Thread-126836] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] Compression: none
2025-09-28T14:14:30.768 [DEBUG] [Thread-126836] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:30.787 [DEBUG] [Thread-126836] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:30.787 [DEBUG] [Thread-126836] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:30.788 [DEBUG] [Thread-126836] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:14:30.788 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:14:30.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:30.790 [DEBUG] [Thread-126836] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:30.790 [DEBUG] [Thread-126836] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:30.790 [DEBUG] [Thread-126836] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:30.790 [DEBUG] [Thread-126836] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:14:30.790 [DEBUG] [Thread-126836] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:30.814 [INFO] [Thread-126836] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:30.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:31.594 [DEBUG] [Thread-126836] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:31.594 [DEBUG] [Thread-126836] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:31.594 [DEBUG] [Thread-126836] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:14:31.636 [DEBUG] [Thread-126836] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:31.636 [DEBUG] [Thread-126836] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:31.638 [DEBUG] [Thread-126836] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:31.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:31.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:14:31.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:14:31.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:14:31.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:31.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:14:31.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:31.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:31.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:14:31.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.509458 -999.00  +18.30  23.12     35   +2.70 1 1 1 1 1   888    0 17.73 57.15 ----- 14.9 23.1 249.0 33.5 24.9 -28.0 24.2 -26.8 25.1 -26.4 25.9 -28.0
2025-09-28T14:14:31.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:14:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:14:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.509458
2025-09-28T14:14:31.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:14:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:14:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:14:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:14:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:14:31.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:14:23', tmtdew=18.48, humidity=28.98, cloud=0.0, wind=25.53, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:13:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:14:31.664 [DEBUG] [Thread-126836] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:31.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-28T14:14:31.760 [DEBUG] [Thread-126839] [transport.py] [_log()] starting thread (client mode): 0x2e38d0c0
2025-09-28T14:14:31.760 [DEBUG] [Thread-126839] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:31.775 [DEBUG] [Thread-126839] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:14:31.775 [INFO] [Thread-126839] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:31.784 [DEBUG] [Thread-126839] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:31.785 [DEBUG] [Thread-126839] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:31.785 [DEBUG] [Thread-126839] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:31.785 [DEBUG] [Thread-126839] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:31.785 [DEBUG] [Thread-126839] [transport.py] [_log()] Compression: none
2025-09-28T14:14:31.785 [DEBUG] [Thread-126839] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:31.842 [DEBUG] [Thread-126839] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:31.842 [DEBUG] [Thread-126839] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:31.843 [DEBUG] [Thread-126839] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:14:31.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:14:31.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:31.900 [DEBUG] [Thread-126839] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:31.900 [DEBUG] [Thread-126839] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:31.900 [DEBUG] [Thread-126839] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:31.900 [DEBUG] [Thread-126839] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:14:31.900 [DEBUG] [Thread-126839] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:31.919 [INFO] [Thread-126839] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:31.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-28T14:14:31.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:32.907 [DEBUG] [Thread-126839] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:32.907 [DEBUG] [Thread-126839] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:32.955 [DEBUG] [Thread-126839] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:32.955 [DEBUG] [Thread-126839] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:32.964 [DEBUG] [Thread-126839] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:32.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:32.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-28T14:14:32.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-28T14:14:32.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:32.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:32.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:32.999 [DEBUG] [Thread-126839] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:39.839 [DEBUG] [Thread-126841 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:43.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:14:43.002 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:14:43.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-28T14:14:43.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 14, 23), 18.48, 28.98, 0.0, 25.53, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:14:43.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:14:23
2025-09-28T14:14:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:14:43.821 [DEBUG] [Thread-126842] [transport.py] [_log()] starting thread (client mode): 0x2b96f8e0
2025-09-28T14:14:43.821 [DEBUG] [Thread-126842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:43.841 [DEBUG] [Thread-126842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:14:43.841 [INFO] [Thread-126842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:43.845 [DEBUG] [Thread-126842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] Compression: none
2025-09-28T14:14:43.846 [DEBUG] [Thread-126842] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:43.866 [DEBUG] [Thread-126842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:43.866 [DEBUG] [Thread-126842] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:43.867 [DEBUG] [Thread-126842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:14:43.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:14:43.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:43.869 [DEBUG] [Thread-126842] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:43.869 [DEBUG] [Thread-126842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:43.869 [DEBUG] [Thread-126842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:43.869 [DEBUG] [Thread-126842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:14:43.869 [DEBUG] [Thread-126842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:43.888 [INFO] [Thread-126842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:43.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:44.489 [DEBUG] [Thread-126842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:44.489 [DEBUG] [Thread-126842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:44.489 [DEBUG] [Thread-126842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:14:44.530 [DEBUG] [Thread-126842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:44.530 [DEBUG] [Thread-126842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:44.533 [DEBUG] [Thread-126842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:44.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:44.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:14:44.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:14:44.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:14:44.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:44.555 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:14:44.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:44.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:14:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.510153 -999.00  +18.50   8.27     36   +3.30 1 1 1 1 1   888    0 17.81 55.28 ----- 12.8 8.3 249.7 14.0 25.1 -26.7 24.1 -25.7 25.0 -26.0 26.2 -26.1
2025-09-28T14:14:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:14:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:14:44.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.510153
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:14:44.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:14:23', tmtdew=18.48, humidity=28.98, cloud=0.0, wind=25.53, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:14:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:14:44.558 [DEBUG] [Thread-126842] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:44.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:14:44.653 [DEBUG] [Thread-126845] [transport.py] [_log()] starting thread (client mode): 0x2e38dab0
2025-09-28T14:14:44.653 [DEBUG] [Thread-126845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:44.668 [DEBUG] [Thread-126845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:14:44.668 [INFO] [Thread-126845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:14:44.675 [DEBUG] [Thread-126845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] Compression: none
2025-09-28T14:14:44.676 [DEBUG] [Thread-126845] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:44.734 [DEBUG] [Thread-126845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:44.735 [DEBUG] [Thread-126845] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:44.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:14:44.736 [DEBUG] [Thread-126845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:14:44.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:44.791 [DEBUG] [Thread-126845] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:44.791 [DEBUG] [Thread-126845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:44.791 [DEBUG] [Thread-126845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:44.791 [DEBUG] [Thread-126845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:14:44.791 [DEBUG] [Thread-126845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:44.804 [INFO] [Thread-126845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:44.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-28T14:14:44.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:45.785 [DEBUG] [Thread-126845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:45.785 [DEBUG] [Thread-126845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:45.833 [DEBUG] [Thread-126845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:45.833 [DEBUG] [Thread-126845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:45.841 [DEBUG] [Thread-126845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:45.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:45.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-28T14:14:45.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-28T14:14:45.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:45.865 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:45.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:45.874 [DEBUG] [Thread-126845] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:54.890 [DEBUG] [Thread-126847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:14:55.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:14:55.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:14:55.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-28T14:14:56.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 14, 23), 18.48, 28.98, 0.0, 25.53, 18.59, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:14:56.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:14:23
2025-09-28T14:14:56.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:14:56.766 [DEBUG] [Thread-126848] [transport.py] [_log()] starting thread (client mode): 0x2e3f89a0
2025-09-28T14:14:56.767 [DEBUG] [Thread-126848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:56.785 [DEBUG] [Thread-126848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:14:56.785 [INFO] [Thread-126848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:56.788 [DEBUG] [Thread-126848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:56.789 [DEBUG] [Thread-126848] [transport.py] [_log()] Compression: none
2025-09-28T14:14:56.789 [DEBUG] [Thread-126848] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:56.804 [DEBUG] [Thread-126848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:56.804 [DEBUG] [Thread-126848] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:14:56.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:14:56.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:14:56.805 [DEBUG] [Thread-126848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:56.822 [INFO] [Thread-126848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:56.822 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:57.613 [DEBUG] [Thread-126848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:57.613 [DEBUG] [Thread-126848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:57.613 [DEBUG] [Thread-126848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:14:57.653 [DEBUG] [Thread-126848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:57.654 [DEBUG] [Thread-126848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:57.657 [DEBUG] [Thread-126848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:57.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:57.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:14:57.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:14:57.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:14:57.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:57.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:14:57.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:57.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.510153 -999.00  +18.50   8.27     36   +3.30 1 1 1 1 1   888    0 17.81 55.28 ----- 12.8 8.3 249.7 14.0 25.1 -26.7 24.1 -25.7 25.0 -26.0 26.2 -26.1
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.510153
2025-09-28T14:14:57.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:14:57.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:14:23', tmtdew=18.48, humidity=28.98, cloud=0.0, wind=25.53, temperature=18.59, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:14:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:14:57.680 [DEBUG] [Thread-126848] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:14:57.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-28T14:14:57.776 [DEBUG] [Thread-126851] [transport.py] [_log()] starting thread (client mode): 0x2e3fb310
2025-09-28T14:14:57.776 [DEBUG] [Thread-126851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:14:57.797 [DEBUG] [Thread-126851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:14:57.798 [INFO] [Thread-126851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:14:57.805 [DEBUG] [Thread-126851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] client lang: <none>
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] server lang: <none>
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] kex follows: False
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] Compression: none
2025-09-28T14:14:57.806 [DEBUG] [Thread-126851] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:14:57.864 [DEBUG] [Thread-126851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:14:57.864 [DEBUG] [Thread-126851] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:14:57.865 [DEBUG] [Thread-126851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:14:57.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:14:57.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:14:57.920 [DEBUG] [Thread-126851] [transport.py] [_log()] userauth is OK
2025-09-28T14:14:57.920 [DEBUG] [Thread-126851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:14:57.920 [DEBUG] [Thread-126851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:14:57.920 [DEBUG] [Thread-126851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:14:57.920 [DEBUG] [Thread-126851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:14:57.940 [INFO] [Thread-126851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:14:57.941 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:14:57.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:14:58.906 [DEBUG] [Thread-126851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:14:58.906 [DEBUG] [Thread-126851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:14:58.954 [DEBUG] [Thread-126851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:14:58.954 [DEBUG] [Thread-126851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:14:58.963 [DEBUG] [Thread-126851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:14:58.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:14:58.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')
2025-09-28T14:14:58.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') -> 00000000
2025-09-28T14:14:58.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:14:58.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:14:58.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:14:58.997 [DEBUG] [Thread-126851] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:15:01.444 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:01.446 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:09.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:15:09.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:15:09.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-28T14:15:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 14, 55), 18.04, 29.54, 0.0, 18.72, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:15:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:14:55
2025-09-28T14:15:09.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:15:09.814 [DEBUG] [Thread-126853] [transport.py] [_log()] starting thread (client mode): 0x28704220
2025-09-28T14:15:09.814 [DEBUG] [Thread-126853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:15:09.834 [DEBUG] [Thread-126853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:15:09.834 [INFO] [Thread-126853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:15:09.837 [DEBUG] [Thread-126853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] client lang: <none>
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] server lang: <none>
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] kex follows: False
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] Compression: none
2025-09-28T14:15:09.838 [DEBUG] [Thread-126853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:15:09.856 [DEBUG] [Thread-126853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:15:09.857 [DEBUG] [Thread-126853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:15:09.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:15:09.858 [DEBUG] [Thread-126853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:15:09.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:15:09.861 [DEBUG] [Thread-126853] [transport.py] [_log()] userauth is OK
2025-09-28T14:15:09.861 [DEBUG] [Thread-126853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:15:09.861 [DEBUG] [Thread-126853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:15:09.861 [DEBUG] [Thread-126853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:15:09.861 [DEBUG] [Thread-126853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:15:09.881 [INFO] [Thread-126853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:15:09.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:15:09.932 [DEBUG] [Thread-126855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:14.533 [DEBUG] [Thread-126856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:18.273 [DEBUG] [Thread-126853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:15:18.273 [DEBUG] [Thread-126853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:15:18.274 [DEBUG] [Thread-126853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:15:18.314 [DEBUG] [Thread-126853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:15:18.315 [DEBUG] [Thread-126853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:15:18.317 [DEBUG] [Thread-126853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:15:18.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:15:18.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:15:18.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:15:18.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:15:18.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:15:18.447 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:15:18.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.510153 -999.00  +18.50   8.27     36   +3.30 1 1 1 1 1   888    0 17.81 55.28 ----- 12.8 8.3 249.7 14.0 25.1 -26.7 24.1 -25.7 25.0 -26.0 26.2 -26.1
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:15:18.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.510153
2025-09-28T14:15:18.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:15:18.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:15:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:15:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:15:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:15:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:14:55', tmtdew=18.04, humidity=29.54, cloud=0.0, wind=18.72, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:14:37.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:15:18.450 [DEBUG] [Thread-126853] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:15:18.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-28T14:15:18.546 [DEBUG] [Thread-126858] [transport.py] [_log()] starting thread (client mode): 0x2b9cf2e0
2025-09-28T14:15:18.546 [DEBUG] [Thread-126858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:15:18.563 [DEBUG] [Thread-126858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:15:18.563 [INFO] [Thread-126858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] client lang: <none>
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] server lang: <none>
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] kex follows: False
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:15:18.571 [DEBUG] [Thread-126858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:15:18.572 [DEBUG] [Thread-126858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:15:18.572 [DEBUG] [Thread-126858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:15:18.572 [DEBUG] [Thread-126858] [transport.py] [_log()] Compression: none
2025-09-28T14:15:18.572 [DEBUG] [Thread-126858] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:15:18.628 [DEBUG] [Thread-126858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:15:18.629 [DEBUG] [Thread-126858] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:15:18.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:15:18.630 [DEBUG] [Thread-126858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:15:18.631 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:15:18.684 [DEBUG] [Thread-126858] [transport.py] [_log()] userauth is OK
2025-09-28T14:15:18.685 [DEBUG] [Thread-126858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:15:18.685 [DEBUG] [Thread-126858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:15:18.685 [DEBUG] [Thread-126858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:15:18.685 [DEBUG] [Thread-126858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:15:18.704 [INFO] [Thread-126858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:15:18.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-28T14:15:18.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:15:19.682 [DEBUG] [Thread-126858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:15:19.682 [DEBUG] [Thread-126858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:15:19.730 [DEBUG] [Thread-126858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:15:19.730 [DEBUG] [Thread-126858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:15:19.741 [DEBUG] [Thread-126858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:15:19.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:15:19.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-28T14:15: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-28T14:15:19.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:15:19.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:15:19.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:15:19.779 [DEBUG] [Thread-126858] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:15:24.963 [DEBUG] [Thread-126860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:29.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:15:29.781 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:15:29.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-28T14:15:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 15, 27), 17.88, 29.89, 0.0, 16.16, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:15:30.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:15:27
2025-09-28T14:15:30.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:15:30.621 [DEBUG] [Thread-126861] [transport.py] [_log()] starting thread (client mode): 0x2e38ece0
2025-09-28T14:15:30.621 [DEBUG] [Thread-126861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:15:30.644 [DEBUG] [Thread-126861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:15:30.644 [INFO] [Thread-126861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:15:30.646 [DEBUG] [Thread-126861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:15:30.646 [DEBUG] [Thread-126861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] client lang: <none>
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] server lang: <none>
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] kex follows: False
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:15:30.647 [DEBUG] [Thread-126861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:15:30.648 [DEBUG] [Thread-126861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:15:30.648 [DEBUG] [Thread-126861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:15:30.648 [DEBUG] [Thread-126861] [transport.py] [_log()] Compression: none
2025-09-28T14:15:30.648 [DEBUG] [Thread-126861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:15:30.666 [DEBUG] [Thread-126861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:15:30.666 [DEBUG] [Thread-126861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:15:30.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:15:30.667 [DEBUG] [Thread-126861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:15:30.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:15:30.669 [DEBUG] [Thread-126861] [transport.py] [_log()] userauth is OK
2025-09-28T14:15:30.669 [DEBUG] [Thread-126861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:15:30.669 [DEBUG] [Thread-126861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:15:30.669 [DEBUG] [Thread-126861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:15:30.669 [DEBUG] [Thread-126861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:15:30.693 [INFO] [Thread-126861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:15:30.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:15:31.286 [DEBUG] [Thread-126861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:15:31.286 [DEBUG] [Thread-126861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:15:31.287 [DEBUG] [Thread-126861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:15:31.327 [DEBUG] [Thread-126861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:15:31.328 [DEBUG] [Thread-126861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:15:31.330 [DEBUG] [Thread-126861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:15:31.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:15:31.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:15:31.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:15:31.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:15:31.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:15:31.354 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:15:31.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:15:31.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.510499 -999.00  +18.80  17.51     35   +3.30 1 1 1 1 1   888    0 17.22 47.29 ----- 12.4 17.5 222.3 23.8 25.0 -27.1 24.2 -25.7 25.0 -26.8 26.1 -27.6
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.510499
2025-09-28T14:15:31.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:15:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:15:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:15:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:15:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:15:31.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:15:27', tmtdew=17.88, humidity=29.89, cloud=0.0, wind=16.16, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:15:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:15:31.356 [DEBUG] [Thread-126861] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:15:31.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-28T14:15:39.995 [DEBUG] [Thread-126864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:15:55.037 [DEBUG] [Thread-126865 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:01.587 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:01.588 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:10.065 [DEBUG] [Thread-126866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:14.594 [DEBUG] [Thread-126867 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:25.096 [DEBUG] [Thread-126868 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:40.123 [DEBUG] [Thread-126869 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:16:55.153 [DEBUG] [Thread-126870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:01.729 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:01.730 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:10.184 [DEBUG] [Thread-126871 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:14.644 [DEBUG] [Thread-126872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:25.212 [DEBUG] [Thread-126873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:40.243 [DEBUG] [Thread-126874 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:43.610 [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-28T14:17:53.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:17:53.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:17:53.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-28T14:17:54.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 17, 35), 17.56, 30.62, 0.0, 17.84, 18.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:17:54.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:17:35
2025-09-28T14:17:54.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:17:54.466 [DEBUG] [Thread-126875] [transport.py] [_log()] starting thread (client mode): 0x2e38cbe0
2025-09-28T14:17:54.467 [DEBUG] [Thread-126875] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:17:54.486 [DEBUG] [Thread-126875] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:17:54.486 [INFO] [Thread-126875] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:17:54.489 [DEBUG] [Thread-126875] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] client lang: <none>
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] server lang: <none>
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] kex follows: False
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] Compression: none
2025-09-28T14:17:54.490 [DEBUG] [Thread-126875] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:17:54.505 [DEBUG] [Thread-126875] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:17:54.505 [DEBUG] [Thread-126875] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:17:54.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:17:54.506 [DEBUG] [Thread-126875] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:17:54.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:17:54.508 [DEBUG] [Thread-126875] [transport.py] [_log()] userauth is OK
2025-09-28T14:17:54.508 [DEBUG] [Thread-126875] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:17:54.508 [DEBUG] [Thread-126875] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:17:54.508 [DEBUG] [Thread-126875] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:17:54.508 [DEBUG] [Thread-126875] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:17:54.532 [INFO] [Thread-126875] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:17:54.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:17:55.254 [DEBUG] [Thread-126875] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:17:55.254 [DEBUG] [Thread-126875] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:17:55.255 [DEBUG] [Thread-126875] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:17:55.274 [DEBUG] [Thread-126877 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:17:55.295 [DEBUG] [Thread-126875] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:17:55.295 [DEBUG] [Thread-126875] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:17:55.299 [DEBUG] [Thread-126875] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:17:55.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:17:55.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:17:55.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:17:55.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:17:55.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:17:55.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:17:55.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:17:55.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:17:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:17:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.511890 -999.00  +18.80   9.53     35   +3.10 1 1 1 1 1   888    0 17.25 32.39 ----- 8.4 9.5 225.9 15.4 25.2 -27.1 24.1 -25.5 25.2 -25.2 26.6 -26.6
2025-09-28T14:17:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:17:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:17:55.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.511890
2025-09-28T14:17:55.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:17:55.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:17:55.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:17:55.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:17:55.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:17:55.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:17:35', tmtdew=17.56, humidity=30.62, cloud=0.0, wind=17.84, temperature=18.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:17:07.296', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:17:55.326 [DEBUG] [Thread-126875] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:17:55.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-28T14:17:55.423 [DEBUG] [Thread-126879] [transport.py] [_log()] starting thread (client mode): 0x2b9cfe80
2025-09-28T14:17:55.424 [DEBUG] [Thread-126879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:17:55.442 [DEBUG] [Thread-126879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:17:55.442 [INFO] [Thread-126879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:17:55.449 [DEBUG] [Thread-126879] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] client lang: <none>
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] server lang: <none>
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] kex follows: False
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] Compression: none
2025-09-28T14:17:55.450 [DEBUG] [Thread-126879] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:17:55.511 [DEBUG] [Thread-126879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:17:55.511 [DEBUG] [Thread-126879] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:17:55.512 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:17:55.512 [DEBUG] [Thread-126879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:17:55.513 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:17:55.567 [DEBUG] [Thread-126879] [transport.py] [_log()] userauth is OK
2025-09-28T14:17:55.567 [DEBUG] [Thread-126879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:17:55.567 [DEBUG] [Thread-126879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:17:55.568 [DEBUG] [Thread-126879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:17:55.568 [DEBUG] [Thread-126879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:17:55.588 [INFO] [Thread-126879] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:17:55.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-28T14:17:55.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:17:56.576 [DEBUG] [Thread-126879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:17:56.577 [DEBUG] [Thread-126879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:17:56.624 [DEBUG] [Thread-126879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:17:56.625 [DEBUG] [Thread-126879] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:17:56.634 [DEBUG] [Thread-126879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:17:56.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:17:56.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-28T14:17:56.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-28T14:17:56.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:17:56.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:17:56.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:17:56.669 [DEBUG] [Thread-126879] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:01.873 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:01.874 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:06.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:18:06.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:18:06.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-28T14:18:07.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 17, 35), 17.56, 30.62, 0.0, 17.84, 18.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:18:07.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:17:35
2025-09-28T14:18:07.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:18:07.533 [DEBUG] [Thread-126881] [transport.py] [_log()] starting thread (client mode): 0x2e3fbc40
2025-09-28T14:18:07.533 [DEBUG] [Thread-126881] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:07.554 [DEBUG] [Thread-126881] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:18:07.554 [INFO] [Thread-126881] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:18:07.555 [DEBUG] [Thread-126881] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:07.555 [DEBUG] [Thread-126881] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:18:07.555 [DEBUG] [Thread-126881] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:07.555 [DEBUG] [Thread-126881] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:07.555 [DEBUG] [Thread-126881] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] Compression: none
2025-09-28T14:18:07.556 [DEBUG] [Thread-126881] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:07.573 [DEBUG] [Thread-126881] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:07.573 [DEBUG] [Thread-126881] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:07.573 [DEBUG] [Thread-126881] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:18:07.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:18:07.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:07.574 [DEBUG] [Thread-126881] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:07.574 [DEBUG] [Thread-126881] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:07.574 [DEBUG] [Thread-126881] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:07.574 [DEBUG] [Thread-126881] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:18:07.574 [DEBUG] [Thread-126881] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:07.583 [INFO] [Thread-126881] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:07.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:08.219 [DEBUG] [Thread-126881] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:08.219 [DEBUG] [Thread-126881] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:08.219 [DEBUG] [Thread-126881] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:18:08.260 [DEBUG] [Thread-126881] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:08.260 [DEBUG] [Thread-126881] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:08.262 [DEBUG] [Thread-126881] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:08.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:08.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:18:08.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:18:08.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:18:08.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:08.280 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:18:08.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.512236 -999.00  +19.10  12.05     34   +3.10 1 1 1 1 1   888    0 16.87 28.40 ----- 9.8 12.1 206.5 22.4 25.2 -26.4 24.0 -25.8 25.2 -26.9 26.5 -25.8
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.512236
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:18:08.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:17:35', tmtdew=17.56, humidity=30.62, cloud=0.0, wind=17.84, temperature=18.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:17:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:18:08.281 [DEBUG] [Thread-126881] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:08.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-28T14:18:08.365 [DEBUG] [Thread-126884] [transport.py] [_log()] starting thread (client mode): 0x2e3fb8e0
2025-09-28T14:18:08.365 [DEBUG] [Thread-126884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:08.380 [DEBUG] [Thread-126884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:18:08.380 [INFO] [Thread-126884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] Compression: none
2025-09-28T14:18:08.388 [DEBUG] [Thread-126884] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:08.445 [DEBUG] [Thread-126884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:08.445 [DEBUG] [Thread-126884] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:08.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:18:08.446 [DEBUG] [Thread-126884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:18:08.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:08.503 [DEBUG] [Thread-126884] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:08.503 [DEBUG] [Thread-126884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:08.503 [DEBUG] [Thread-126884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:08.503 [DEBUG] [Thread-126884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:18:08.503 [DEBUG] [Thread-126884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:08.517 [INFO] [Thread-126884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:08.517 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:18:08.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:09.561 [DEBUG] [Thread-126884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:09.561 [DEBUG] [Thread-126884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:09.609 [DEBUG] [Thread-126884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:09.609 [DEBUG] [Thread-126884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:09.617 [DEBUG] [Thread-126884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:09.625 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:09.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-28T14:18:09.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-28T14:18:09.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:09.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:09.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:09.649 [DEBUG] [Thread-126884] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:10.310 [DEBUG] [Thread-126886 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:14.699 [DEBUG] [Thread-126887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:19.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:18:19.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:18:19.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-28T14:18:20.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 18, 6), 17.51, 30.65, 0.0, 16.16, 17.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:18:20.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:18:06
2025-09-28T14:18:20.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:18:20.510 [DEBUG] [Thread-126888] [transport.py] [_log()] starting thread (client mode): 0x2b9cce80
2025-09-28T14:18:20.510 [DEBUG] [Thread-126888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:20.529 [DEBUG] [Thread-126888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:18:20.529 [INFO] [Thread-126888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:20.532 [DEBUG] [Thread-126888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] Compression: none
2025-09-28T14:18:20.533 [DEBUG] [Thread-126888] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:20.549 [DEBUG] [Thread-126888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:20.549 [DEBUG] [Thread-126888] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:20.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:18:20.550 [DEBUG] [Thread-126888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:18:20.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:20.552 [DEBUG] [Thread-126888] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:20.552 [DEBUG] [Thread-126888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:20.553 [DEBUG] [Thread-126888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:20.553 [DEBUG] [Thread-126888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:18:20.553 [DEBUG] [Thread-126888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:20.576 [INFO] [Thread-126888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:20.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:21.379 [DEBUG] [Thread-126888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:21.379 [DEBUG] [Thread-126888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:21.379 [DEBUG] [Thread-126888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:18:21.420 [DEBUG] [Thread-126888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:21.420 [DEBUG] [Thread-126888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:21.423 [DEBUG] [Thread-126888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:21.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:21.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:18:21.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:18:21.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:18:21.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:21.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:18:21.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.512236 -999.00  +19.10  12.05     34   +3.10 1 1 1 1 1   888    0 16.87 28.40 ----- 9.8 12.1 206.5 22.4 25.2 -26.4 24.0 -25.8 25.2 -26.9 26.5 -25.8
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:18:21.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.512236
2025-09-28T14:18:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:18:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:18:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:18:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:18:21.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:18:21.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:18:06', tmtdew=17.51, humidity=30.65, cloud=0.0, wind=16.16, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:17:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:18:21.447 [DEBUG] [Thread-126888] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:21.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-28T14:18:21.535 [DEBUG] [Thread-126891] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd30
2025-09-28T14:18:21.536 [DEBUG] [Thread-126891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:21.550 [DEBUG] [Thread-126891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:18:21.551 [INFO] [Thread-126891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:21.558 [DEBUG] [Thread-126891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] Compression: none
2025-09-28T14:18:21.559 [DEBUG] [Thread-126891] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:21.615 [DEBUG] [Thread-126891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:21.615 [DEBUG] [Thread-126891] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:21.616 [DEBUG] [Thread-126891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:18:21.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:18:21.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:21.675 [DEBUG] [Thread-126891] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:21.676 [DEBUG] [Thread-126891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:21.676 [DEBUG] [Thread-126891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:21.676 [DEBUG] [Thread-126891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:18:21.676 [DEBUG] [Thread-126891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:21.695 [INFO] [Thread-126891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:21.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-28T14:18:21.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:22.655 [DEBUG] [Thread-126891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:22.655 [DEBUG] [Thread-126891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:22.703 [DEBUG] [Thread-126891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:22.703 [DEBUG] [Thread-126891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:22.713 [DEBUG] [Thread-126891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:22.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:22.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')
2025-09-28T14:18:22.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') -> 00000000
2025-09-28T14:18:22.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:22.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:22.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:22.747 [DEBUG] [Thread-126891] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:25.354 [DEBUG] [Thread-126893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:32.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:18:32.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:18:32.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-28T14:18:33.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 18, 6), 17.51, 30.65, 0.0, 16.16, 17.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:18:33.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:18:06
2025-09-28T14:18:33.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:18:33.592 [DEBUG] [Thread-126894] [transport.py] [_log()] starting thread (client mode): 0x2e3faad0
2025-09-28T14:18:33.592 [DEBUG] [Thread-126894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:33.614 [DEBUG] [Thread-126894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:18:33.614 [INFO] [Thread-126894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:33.617 [DEBUG] [Thread-126894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] Compression: none
2025-09-28T14:18:33.618 [DEBUG] [Thread-126894] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:33.634 [DEBUG] [Thread-126894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:33.634 [DEBUG] [Thread-126894] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:33.635 [DEBUG] [Thread-126894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:18:33.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:18:33.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:33.637 [DEBUG] [Thread-126894] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:33.637 [DEBUG] [Thread-126894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:33.637 [DEBUG] [Thread-126894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:33.637 [DEBUG] [Thread-126894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:18:33.637 [DEBUG] [Thread-126894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:33.660 [INFO] [Thread-126894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:33.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:34.473 [DEBUG] [Thread-126894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:34.473 [DEBUG] [Thread-126894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:34.473 [DEBUG] [Thread-126894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:18:34.514 [DEBUG] [Thread-126894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:34.514 [DEBUG] [Thread-126894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:34.518 [DEBUG] [Thread-126894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:34.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:34.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:18:34.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:18:34.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:18:34.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:34.538 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:18:34.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.512236 -999.00  +19.10  12.05     34   +3.10 1 1 1 1 1   888    0 16.87 28.40 ----- 9.8 12.1 206.5 22.4 25.2 -26.4 24.0 -25.8 25.2 -26.9 26.5 -25.8
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.512236
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:18:34.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:18:06', tmtdew=17.51, humidity=30.65, cloud=0.0, wind=16.16, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:17:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:18:34.539 [DEBUG] [Thread-126894] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:34.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-28T14:18:34.624 [DEBUG] [Thread-126897] [transport.py] [_log()] starting thread (client mode): 0x2e3fa920
2025-09-28T14:18:34.624 [DEBUG] [Thread-126897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:34.639 [DEBUG] [Thread-126897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:18:34.639 [INFO] [Thread-126897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:34.647 [DEBUG] [Thread-126897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:34.648 [DEBUG] [Thread-126897] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:34.649 [DEBUG] [Thread-126897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:34.649 [DEBUG] [Thread-126897] [transport.py] [_log()] Compression: none
2025-09-28T14:18:34.649 [DEBUG] [Thread-126897] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:34.704 [DEBUG] [Thread-126897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:34.704 [DEBUG] [Thread-126897] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:34.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:18:34.706 [DEBUG] [Thread-126897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:18:34.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:34.765 [DEBUG] [Thread-126897] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:34.765 [DEBUG] [Thread-126897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:34.765 [DEBUG] [Thread-126897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:34.765 [DEBUG] [Thread-126897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:18:34.765 [DEBUG] [Thread-126897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:34.782 [INFO] [Thread-126897] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:34.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:18:34.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:35.749 [DEBUG] [Thread-126897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:35.749 [DEBUG] [Thread-126897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:35.797 [DEBUG] [Thread-126897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:35.797 [DEBUG] [Thread-126897] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:35.807 [DEBUG] [Thread-126897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:35.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:35.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-28T14:18:35.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-28T14:18:35.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:35.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:35.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:35.842 [DEBUG] [Thread-126897] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:40.396 [DEBUG] [Thread-126899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:45.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:18:45.845 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:18:45.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:18:46.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 18, 38), 17.41, 30.87, 0.0, 15.23, 17.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:18:46.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:18:38
2025-09-28T14:18:46.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:18:46.691 [DEBUG] [Thread-126900] [transport.py] [_log()] starting thread (client mode): 0x2b9ce3b0
2025-09-28T14:18:46.691 [DEBUG] [Thread-126900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:46.711 [DEBUG] [Thread-126900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:18:46.711 [INFO] [Thread-126900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] Compression: none
2025-09-28T14:18:46.714 [DEBUG] [Thread-126900] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:46.733 [DEBUG] [Thread-126900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:46.733 [DEBUG] [Thread-126900] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:46.734 [DEBUG] [Thread-126900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:18:46.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:18:46.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:46.736 [DEBUG] [Thread-126900] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:46.736 [DEBUG] [Thread-126900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:46.736 [DEBUG] [Thread-126900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:46.736 [DEBUG] [Thread-126900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:18:46.736 [DEBUG] [Thread-126900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:46.760 [INFO] [Thread-126900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:46.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:47.384 [DEBUG] [Thread-126900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:47.384 [DEBUG] [Thread-126900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:47.384 [DEBUG] [Thread-126900] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:18:47.425 [DEBUG] [Thread-126900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:47.425 [DEBUG] [Thread-126900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:47.427 [DEBUG] [Thread-126900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:47.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:47.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:18:47.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:18:47.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:47.443 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:18:47.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.512583 -999.00  +19.20  13.13     34   +3.00 1 1 1 1 1   888    0 16.60 22.85 ----- 17.7 13.1 204.4 19.3 25.2 -27.2 24.1 -26.6 25.2 -26.8 26.6 -27.0
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:18:47.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.512583
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:18:47.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:18:38', tmtdew=17.41, humidity=30.87, cloud=0.0, wind=15.23, temperature=17.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:18:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:18:47.444 [DEBUG] [Thread-126900] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18: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-28T14:18:47.526 [DEBUG] [Thread-126903] [transport.py] [_log()] starting thread (client mode): 0x2b9ce7d0
2025-09-28T14:18:47.526 [DEBUG] [Thread-126903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:47.541 [DEBUG] [Thread-126903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:18:47.541 [INFO] [Thread-126903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:18:47.548 [DEBUG] [Thread-126903] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:47.548 [DEBUG] [Thread-126903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] Compression: none
2025-09-28T14:18:47.549 [DEBUG] [Thread-126903] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:47.608 [DEBUG] [Thread-126903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:47.608 [DEBUG] [Thread-126903] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:47.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:18:47.609 [DEBUG] [Thread-126903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:18:47.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:47.666 [DEBUG] [Thread-126903] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:47.666 [DEBUG] [Thread-126903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:47.666 [DEBUG] [Thread-126903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:47.666 [DEBUG] [Thread-126903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:18:47.666 [DEBUG] [Thread-126903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:47.684 [INFO] [Thread-126903] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:47.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-28T14:18:47.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:18:48.686 [DEBUG] [Thread-126903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:18:48.686 [DEBUG] [Thread-126903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:18:48.737 [DEBUG] [Thread-126903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:18:48.737 [DEBUG] [Thread-126903] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:18:48.745 [DEBUG] [Thread-126903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:18:48.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:18:48.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-28T14:18:48.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-28T14:18:48.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:18:48.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:18:48.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:18:48.781 [DEBUG] [Thread-126903] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:18:55.423 [DEBUG] [Thread-126905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:18:58.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:18:58.775 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:18:58.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-28T14:18:59.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 18, 38), 17.41, 30.87, 0.0, 15.23, 17.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:18:59.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:18:38
2025-09-28T14:18:59.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:18:59.607 [DEBUG] [Thread-126906] [transport.py] [_log()] starting thread (client mode): 0x2e3f9db0
2025-09-28T14:18:59.607 [DEBUG] [Thread-126906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:18:59.627 [DEBUG] [Thread-126906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:18:59.627 [INFO] [Thread-126906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:18:59.631 [DEBUG] [Thread-126906] [transport.py] [_log()] client lang: <none>
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] server lang: <none>
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] kex follows: False
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] Compression: none
2025-09-28T14:18:59.632 [DEBUG] [Thread-126906] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:18:59.645 [DEBUG] [Thread-126906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:18:59.646 [DEBUG] [Thread-126906] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:18:59.646 [DEBUG] [Thread-126906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:18:59.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:18:59.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:18:59.648 [DEBUG] [Thread-126906] [transport.py] [_log()] userauth is OK
2025-09-28T14:18:59.648 [DEBUG] [Thread-126906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:18:59.649 [DEBUG] [Thread-126906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:18:59.649 [DEBUG] [Thread-126906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:18:59.649 [DEBUG] [Thread-126906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:18:59.666 [INFO] [Thread-126906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:18:59.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:00.468 [DEBUG] [Thread-126906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:00.468 [DEBUG] [Thread-126906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:00.468 [DEBUG] [Thread-126906] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:19:00.509 [DEBUG] [Thread-126906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:00.509 [DEBUG] [Thread-126906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:00.511 [DEBUG] [Thread-126906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:00.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:00.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:19:00.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:19:00.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:19:00.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:00.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:19:00.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:00.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.512583 -999.00  +19.20  13.13     34   +3.00 1 1 1 1 1   888    0 16.60 22.85 ----- 17.7 13.1 204.4 19.3 25.2 -27.2 24.1 -26.6 25.2 -26.8 26.6 -27.0
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.512583
2025-09-28T14:19:00.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:19:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:19:00.530 [DEBUG] [Thread-126906] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:19:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:19:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:19:00.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:18:38', tmtdew=17.41, humidity=30.87, cloud=0.0, wind=15.23, temperature=17.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:18:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:19:00.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-28T14:19:01.635 [DEBUG] [Thread-126909] [transport.py] [_log()] starting thread (client mode): 0x2b9ce650
2025-09-28T14:19:01.635 [DEBUG] [Thread-126909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:01.648 [DEBUG] [Thread-126909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:19:01.648 [INFO] [Thread-126909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:01.655 [DEBUG] [Thread-126909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:01.656 [DEBUG] [Thread-126909] [transport.py] [_log()] Compression: none
2025-09-28T14:19:01.656 [DEBUG] [Thread-126909] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:01.716 [DEBUG] [Thread-126909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:01.716 [DEBUG] [Thread-126909] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:01.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:19:01.716 [DEBUG] [Thread-126909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:19:01.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:01.772 [DEBUG] [Thread-126909] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:01.772 [DEBUG] [Thread-126909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:01.773 [DEBUG] [Thread-126909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:01.773 [DEBUG] [Thread-126909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:19:01.773 [DEBUG] [Thread-126909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:01.787 [INFO] [Thread-126909] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:01.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-28T14:19:01.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:02.014 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:02.015 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:02.828 [DEBUG] [Thread-126909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:02.828 [DEBUG] [Thread-126909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:02.876 [DEBUG] [Thread-126909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:02.876 [DEBUG] [Thread-126909] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:02.884 [DEBUG] [Thread-126909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:02.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:02.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-28T14:19:02.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-28T14:19:02.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:02.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:02.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:02.916 [DEBUG] [Thread-126909] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:10.475 [DEBUG] [Thread-126911 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:12.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:19:12.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:19:12.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:19:13.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 19, 10), 17.53, 30.62, 0.0, 15.47, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:19:13.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:19:10
2025-09-28T14:19:13.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:19:13.771 [DEBUG] [Thread-126912] [transport.py] [_log()] starting thread (client mode): 0x2e3f9690
2025-09-28T14:19:13.771 [DEBUG] [Thread-126912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:13.783 [DEBUG] [Thread-126912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:19:13.783 [INFO] [Thread-126912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] Compression: none
2025-09-28T14:19:13.786 [DEBUG] [Thread-126912] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:13.801 [DEBUG] [Thread-126912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:13.801 [DEBUG] [Thread-126912] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:13.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:19:13.802 [DEBUG] [Thread-126912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:19:13.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:13.804 [DEBUG] [Thread-126912] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:13.804 [DEBUG] [Thread-126912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:13.804 [DEBUG] [Thread-126912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:13.805 [DEBUG] [Thread-126912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:19:13.805 [DEBUG] [Thread-126912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:13.818 [INFO] [Thread-126912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:13.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:14.416 [DEBUG] [Thread-126912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:14.416 [DEBUG] [Thread-126912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:14.416 [DEBUG] [Thread-126912] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:19:14.457 [DEBUG] [Thread-126912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:14.457 [DEBUG] [Thread-126912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:14.463 [DEBUG] [Thread-126912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:14.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:14.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:19:14.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:19:14.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:19:14.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:14.481 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:19:14.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513278 -999.00  +19.10   7.10     34   +3.00 1 1 1 1 1   888    0 16.76 15.67 ----- 9.4 7.1 207.8 12.2 25.2 -26.6 24.1 -25.9 25.4 -25.4 26.7 -25.5
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:19:14.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513278
2025-09-28T14:19:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:19:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:19:14.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:19:14.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:19:14.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:19:14.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:19:10', tmtdew=17.53, humidity=30.62, cloud=0.0, wind=15.47, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:19:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:19:14.483 [DEBUG] [Thread-126912] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:14.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-28T14:19:14.577 [DEBUG] [Thread-126915] [transport.py] [_log()] starting thread (client mode): 0x2e3f89a0
2025-09-28T14:19:14.577 [DEBUG] [Thread-126915] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:14.592 [DEBUG] [Thread-126915] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:19:14.593 [INFO] [Thread-126915] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:14.600 [DEBUG] [Thread-126915] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] Compression: none
2025-09-28T14:19:14.601 [DEBUG] [Thread-126915] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:14.657 [DEBUG] [Thread-126915] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:14.658 [DEBUG] [Thread-126915] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:14.658 [DEBUG] [Thread-126915] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:19:14.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:19:14.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:14.713 [DEBUG] [Thread-126915] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:14.713 [DEBUG] [Thread-126915] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:14.713 [DEBUG] [Thread-126915] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:14.713 [DEBUG] [Thread-126915] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:19:14.713 [DEBUG] [Thread-126915] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:14.732 [INFO] [Thread-126915] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:14.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-28T14:19:14.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:14.757 [DEBUG] [Thread-126917 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:15.787 [DEBUG] [Thread-126915] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:15.787 [DEBUG] [Thread-126915] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:15.835 [DEBUG] [Thread-126915] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:15.835 [DEBUG] [Thread-126915] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:15.844 [DEBUG] [Thread-126915] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:15.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:15.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')
2025-09-28T14:19:15.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-28T14:19:15.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:15.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:15.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:15.880 [DEBUG] [Thread-126915] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:25.506 [DEBUG] [Thread-126918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:19:25.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:19:25.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-28T14:19:26.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 19, 10), 17.53, 30.62, 0.0, 15.47, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:19:26.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:19:10
2025-09-28T14:19:26.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:19:26.727 [DEBUG] [Thread-126919] [transport.py] [_log()] starting thread (client mode): 0x30dde9b0
2025-09-28T14:19:26.728 [DEBUG] [Thread-126919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:26.747 [DEBUG] [Thread-126919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:19:26.747 [INFO] [Thread-126919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:26.750 [DEBUG] [Thread-126919] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] Compression: none
2025-09-28T14:19:26.751 [DEBUG] [Thread-126919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:26.766 [DEBUG] [Thread-126919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:26.766 [DEBUG] [Thread-126919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:26.767 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:19:26.767 [DEBUG] [Thread-126919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:19:26.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:26.769 [DEBUG] [Thread-126919] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:26.769 [DEBUG] [Thread-126919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:26.770 [DEBUG] [Thread-126919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:26.770 [DEBUG] [Thread-126919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:19:26.770 [DEBUG] [Thread-126919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:26.793 [INFO] [Thread-126919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:26.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:27.503 [DEBUG] [Thread-126919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:27.503 [DEBUG] [Thread-126919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:27.503 [DEBUG] [Thread-126919] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:19:27.544 [DEBUG] [Thread-126919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:27.544 [DEBUG] [Thread-126919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:27.547 [DEBUG] [Thread-126919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:27.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:27.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:19:27.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:19:27.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:19:27.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:27.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:19:27.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:27.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:27.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:19:27.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513278 -999.00  +19.10   7.10     34   +3.00 1 1 1 1 1   888    0 16.76 15.67 ----- 9.4 7.1 207.8 12.2 25.2 -26.6 24.1 -25.9 25.4 -25.4 26.7 -25.5
2025-09-28T14:19:27.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:19:27.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:19:27.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513278
2025-09-28T14:19:27.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:19:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:19:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:19:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:19:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:19:27.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:19:10', tmtdew=17.53, humidity=30.62, cloud=0.0, wind=15.47, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:19:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:19:27.571 [DEBUG] [Thread-126919] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19: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-28T14:19:27.669 [DEBUG] [Thread-126922] [transport.py] [_log()] starting thread (client mode): 0x2e38d6f0
2025-09-28T14:19:27.669 [DEBUG] [Thread-126922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:27.683 [DEBUG] [Thread-126922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:19:27.683 [INFO] [Thread-126922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:27.691 [DEBUG] [Thread-126922] [transport.py] [_log()] Compression: none
2025-09-28T14:19:27.692 [DEBUG] [Thread-126922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:27.754 [DEBUG] [Thread-126922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:27.755 [DEBUG] [Thread-126922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:27.755 [DEBUG] [Thread-126922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:19:27.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:19:27.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:27.809 [DEBUG] [Thread-126922] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:27.810 [DEBUG] [Thread-126922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:27.810 [DEBUG] [Thread-126922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:27.810 [DEBUG] [Thread-126922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:19:27.810 [DEBUG] [Thread-126922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:27.828 [INFO] [Thread-126922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19: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-28T14:19:27.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:28.839 [DEBUG] [Thread-126922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:28.840 [DEBUG] [Thread-126922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:28.887 [DEBUG] [Thread-126922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:28.887 [DEBUG] [Thread-126922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:28.896 [DEBUG] [Thread-126922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:28.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:28.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-28T14:19:28.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-28T14:19:28.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:28.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:28.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:28.930 [DEBUG] [Thread-126922] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:38.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:19:38.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:19:38.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-28T14:19:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 19, 10), 17.53, 30.62, 0.0, 15.47, 17.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:19:39.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:19:10
2025-09-28T14:19:39.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:19:39.784 [DEBUG] [Thread-126924] [transport.py] [_log()] starting thread (client mode): 0x30ddef20
2025-09-28T14:19:39.784 [DEBUG] [Thread-126924] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:39.804 [DEBUG] [Thread-126924] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:19:39.805 [INFO] [Thread-126924] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:19:39.807 [DEBUG] [Thread-126924] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] Compression: none
2025-09-28T14:19:39.808 [DEBUG] [Thread-126924] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:39.826 [DEBUG] [Thread-126924] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:39.827 [DEBUG] [Thread-126924] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:39.827 [DEBUG] [Thread-126924] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:19:39.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:19:39.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:39.828 [DEBUG] [Thread-126924] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:39.828 [DEBUG] [Thread-126924] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:39.828 [DEBUG] [Thread-126924] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:39.828 [DEBUG] [Thread-126924] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:19:39.828 [DEBUG] [Thread-126924] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:39.837 [INFO] [Thread-126924] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:39.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:40.551 [DEBUG] [Thread-126926 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:19:40.571 [DEBUG] [Thread-126924] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:40.571 [DEBUG] [Thread-126924] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:40.571 [DEBUG] [Thread-126924] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:19:40.612 [DEBUG] [Thread-126924] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:40.612 [DEBUG] [Thread-126924] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:40.614 [DEBUG] [Thread-126924] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:40.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:40.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:19:40.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:19:40.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:19:40.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:40.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:19:40.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513278 -999.00  +19.10   7.10     34   +3.00 1 1 1 1 1   888    0 16.76 15.67 ----- 9.4 7.1 207.8 12.2 25.2 -26.6 24.1 -25.9 25.4 -25.4 26.7 -25.5
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513278
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:19:40.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:19:40.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:19:10', tmtdew=17.53, humidity=30.62, cloud=0.0, wind=15.47, temperature=17.71, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:19:07.219', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:19:40.633 [DEBUG] [Thread-126924] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:40.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-28T14:19:40.722 [DEBUG] [Thread-126928] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T14:19:40.723 [DEBUG] [Thread-126928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:40.737 [DEBUG] [Thread-126928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:19:40.737 [INFO] [Thread-126928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:19:40.744 [DEBUG] [Thread-126928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:40.744 [DEBUG] [Thread-126928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:19:40.744 [DEBUG] [Thread-126928] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] Compression: none
2025-09-28T14:19:40.745 [DEBUG] [Thread-126928] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:40.800 [DEBUG] [Thread-126928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:40.801 [DEBUG] [Thread-126928] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:40.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:19:40.801 [DEBUG] [Thread-126928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:19:40.801 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:40.859 [DEBUG] [Thread-126928] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:40.859 [DEBUG] [Thread-126928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:40.859 [DEBUG] [Thread-126928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:40.859 [DEBUG] [Thread-126928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:19:40.859 [DEBUG] [Thread-126928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:40.873 [INFO] [Thread-126928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:40.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-28T14:19:40.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:41.845 [DEBUG] [Thread-126928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:41.845 [DEBUG] [Thread-126928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:41.893 [DEBUG] [Thread-126928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:41.893 [DEBUG] [Thread-126928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:41.901 [DEBUG] [Thread-126928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:41.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:41.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-28T14:19:41.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-28T14:19:41.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:41.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:41.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:41.934 [DEBUG] [Thread-126928] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:51.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:19:51.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:19:51.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-28T14:19:52.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 19, 42), 17.5, 30.49, 0.0, 13.11, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:19:52.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:19:42
2025-09-28T14:19:52.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:19:52.786 [DEBUG] [Thread-126930] [transport.py] [_log()] starting thread (client mode): 0x2b9ce6e0
2025-09-28T14:19:52.786 [DEBUG] [Thread-126930] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:52.808 [DEBUG] [Thread-126930] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:19:52.808 [INFO] [Thread-126930] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:52.811 [DEBUG] [Thread-126930] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:52.812 [DEBUG] [Thread-126930] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:52.813 [DEBUG] [Thread-126930] [transport.py] [_log()] Compression: none
2025-09-28T14:19:52.813 [DEBUG] [Thread-126930] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:52.830 [DEBUG] [Thread-126930] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:52.830 [DEBUG] [Thread-126930] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:52.831 [DEBUG] [Thread-126930] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:19:52.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:19:52.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:52.833 [DEBUG] [Thread-126930] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:52.833 [DEBUG] [Thread-126930] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:52.833 [DEBUG] [Thread-126930] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:52.833 [DEBUG] [Thread-126930] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:19:52.833 [DEBUG] [Thread-126930] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:52.856 [INFO] [Thread-126930] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19:52.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:53.428 [DEBUG] [Thread-126930] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:53.429 [DEBUG] [Thread-126930] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:53.429 [DEBUG] [Thread-126930] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:19:53.470 [DEBUG] [Thread-126930] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:53.470 [DEBUG] [Thread-126930] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:53.471 [DEBUG] [Thread-126930] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:53.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19:53.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:19:53.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:19:53.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:19:53.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:53.488 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:19:53.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513624 -999.00  +19.40   7.15     34   +3.20 1 1 1 1 1   888    0 16.41 11.04 ----- 10.6 7.2 202.8 11.8 25.3 -26.2 24.2 -24.9 25.4 -24.8 26.8 -27.1
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513624
2025-09-28T14:19:53.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:19:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:19:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:19:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:19:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:19:53.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:19:42', tmtdew=17.5, humidity=30.49, cloud=0.0, wind=13.11, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:19:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:19:53.489 [DEBUG] [Thread-126930] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:53.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-28T14:19:53.585 [DEBUG] [Thread-126933] [transport.py] [_log()] starting thread (client mode): 0x2e38e380
2025-09-28T14:19:53.585 [DEBUG] [Thread-126933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:19:53.600 [DEBUG] [Thread-126933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:19:53.600 [INFO] [Thread-126933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:19:53.607 [DEBUG] [Thread-126933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] client lang: <none>
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] server lang: <none>
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] kex follows: False
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:19:53.608 [DEBUG] [Thread-126933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:19:53.609 [DEBUG] [Thread-126933] [transport.py] [_log()] Compression: none
2025-09-28T14:19:53.609 [DEBUG] [Thread-126933] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:19:53.666 [DEBUG] [Thread-126933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:19:53.667 [DEBUG] [Thread-126933] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:19:53.667 [DEBUG] [Thread-126933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:19:53.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:19:53.668 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:19:53.723 [DEBUG] [Thread-126933] [transport.py] [_log()] userauth is OK
2025-09-28T14:19:53.723 [DEBUG] [Thread-126933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:19:53.723 [DEBUG] [Thread-126933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:19:53.723 [DEBUG] [Thread-126933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:19:53.723 [DEBUG] [Thread-126933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:19:53.741 [INFO] [Thread-126933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:19: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-28T14:19:53.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:19:54.810 [DEBUG] [Thread-126933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:19:54.810 [DEBUG] [Thread-126933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:19:54.859 [DEBUG] [Thread-126933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:19:54.860 [DEBUG] [Thread-126933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:19:54.868 [DEBUG] [Thread-126933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:19:54.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:19: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-28T14:19:54.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-28T14:19:54.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:19:54.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:19:54.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:19:54.907 [DEBUG] [Thread-126933] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:19:55.579 [DEBUG] [Thread-126935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:02.157 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:02.157 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:04.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:20:04.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:20:04.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-28T14:20:05.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 19, 42), 17.5, 30.49, 0.0, 13.11, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:20:05.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:19:42
2025-09-28T14:20:05.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:20:05.759 [DEBUG] [Thread-126936] [transport.py] [_log()] starting thread (client mode): 0x28707bb0
2025-09-28T14:20:05.759 [DEBUG] [Thread-126936] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:05.779 [DEBUG] [Thread-126936] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:20:05.779 [INFO] [Thread-126936] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:05.783 [DEBUG] [Thread-126936] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] Compression: none
2025-09-28T14:20:05.784 [DEBUG] [Thread-126936] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:05.801 [DEBUG] [Thread-126936] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:05.802 [DEBUG] [Thread-126936] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:05.802 [DEBUG] [Thread-126936] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:20:05.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:20:05.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:05.805 [DEBUG] [Thread-126936] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:05.805 [DEBUG] [Thread-126936] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:05.805 [DEBUG] [Thread-126936] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:05.805 [DEBUG] [Thread-126936] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:20:05.805 [DEBUG] [Thread-126936] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:05.828 [INFO] [Thread-126936] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:05.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:10.624 [DEBUG] [Thread-126938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:13.858 [DEBUG] [Thread-126936] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:13.858 [DEBUG] [Thread-126936] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:13.858 [DEBUG] [Thread-126936] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:20:13.899 [DEBUG] [Thread-126936] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:13.899 [DEBUG] [Thread-126936] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:13.902 [DEBUG] [Thread-126936] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:13.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:13.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:20:13.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:20:14.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:20:14.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:14.060 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:20:14.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:14.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:14.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:20:14.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513624 -999.00  +19.40   7.15     34   +3.20 1 1 1 1 1   888    0 16.41 11.04 ----- 10.6 7.2 202.8 11.8 25.3 -26.2 24.2 -24.9 25.4 -24.8 26.8 -27.1
2025-09-28T14:20:14.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:20:14.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:20:14.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513624
2025-09-28T14:20:14.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:20:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:20:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:20:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:20:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:20:14.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:19:42', tmtdew=17.5, humidity=30.49, cloud=0.0, wind=13.11, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:19:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:20:14.062 [DEBUG] [Thread-126936] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:14.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-28T14:20:14.150 [DEBUG] [Thread-126940] [transport.py] [_log()] starting thread (client mode): 0x28706650
2025-09-28T14:20:14.150 [DEBUG] [Thread-126940] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:14.165 [DEBUG] [Thread-126940] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:20:14.165 [INFO] [Thread-126940] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:14.172 [DEBUG] [Thread-126940] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] Compression: none
2025-09-28T14:20:14.173 [DEBUG] [Thread-126940] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:14.231 [DEBUG] [Thread-126940] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:14.231 [DEBUG] [Thread-126940] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:14.232 [DEBUG] [Thread-126940] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:20:14.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:20:14.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:14.287 [DEBUG] [Thread-126940] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:14.287 [DEBUG] [Thread-126940] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:14.287 [DEBUG] [Thread-126940] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:14.287 [DEBUG] [Thread-126940] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:20:14.287 [DEBUG] [Thread-126940] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:14.307 [INFO] [Thread-126940] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:14.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-28T14:20:14.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:14.819 [DEBUG] [Thread-126942 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:15.294 [DEBUG] [Thread-126940] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:15.294 [DEBUG] [Thread-126940] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:15.342 [DEBUG] [Thread-126940] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:15.342 [DEBUG] [Thread-126940] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:15.350 [DEBUG] [Thread-126940] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:15.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:15.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-28T14:20:15.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-28T14:20:15.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:15.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:15.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:15.381 [DEBUG] [Thread-126940] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:25.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:20:25.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:20:25.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-28T14:20:25.656 [DEBUG] [Thread-126943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:25.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 20, 14), 17.52, 30.47, 0.0, 14.26, 17.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:20:25.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:20:14
2025-09-28T14:20:26.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:20:26.230 [DEBUG] [Thread-126944] [transport.py] [_log()] starting thread (client mode): 0x287079a0
2025-09-28T14:20:26.230 [DEBUG] [Thread-126944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:26.250 [DEBUG] [Thread-126944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:20:26.250 [INFO] [Thread-126944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:26.253 [DEBUG] [Thread-126944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] Compression: none
2025-09-28T14:20:26.254 [DEBUG] [Thread-126944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:26.272 [DEBUG] [Thread-126944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:26.273 [DEBUG] [Thread-126944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:26.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:20:26.274 [DEBUG] [Thread-126944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:20:26.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:26.276 [DEBUG] [Thread-126944] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:26.276 [DEBUG] [Thread-126944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:26.276 [DEBUG] [Thread-126944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:26.277 [DEBUG] [Thread-126944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:20:26.277 [DEBUG] [Thread-126944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:26.300 [INFO] [Thread-126944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:26.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:26.910 [DEBUG] [Thread-126944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:26.911 [DEBUG] [Thread-126944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:26.911 [DEBUG] [Thread-126944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:20:26.951 [DEBUG] [Thread-126944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:26.951 [DEBUG] [Thread-126944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:26.953 [DEBUG] [Thread-126944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:26.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:26.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:20:26.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:20:26.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:20:26.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:26.971 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:20:26.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513972 -999.00  +19.40  14.44     34   +3.20 1 1 1 1 1   888    0 16.30 9.09 ----- 9.0 14.4 208.6 23.9 25.2 -26.9 24.3 -25.9 25.5 -25.5 26.7 -27.8
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:20:26.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513972
2025-09-28T14:20:26.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:20:26.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:20:26.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:20:26.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:20:26.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:20:26.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:20:14', tmtdew=17.52, humidity=30.47, cloud=0.0, wind=14.26, temperature=17.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:20:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:20:26.974 [DEBUG] [Thread-126944] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:27.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-28T14:20:27.070 [DEBUG] [Thread-126947] [transport.py] [_log()] starting thread (client mode): 0x2e38dba0
2025-09-28T14:20:27.070 [DEBUG] [Thread-126947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:27.084 [DEBUG] [Thread-126947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:20:27.085 [INFO] [Thread-126947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:20:27.092 [DEBUG] [Thread-126947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:27.092 [DEBUG] [Thread-126947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:20:27.092 [DEBUG] [Thread-126947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:27.093 [DEBUG] [Thread-126947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] Compression: none
2025-09-28T14:20:27.094 [DEBUG] [Thread-126947] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:27.156 [DEBUG] [Thread-126947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:27.156 [DEBUG] [Thread-126947] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:27.157 [DEBUG] [Thread-126947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:20:27.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:20:27.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:27.217 [DEBUG] [Thread-126947] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:27.217 [DEBUG] [Thread-126947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:27.217 [DEBUG] [Thread-126947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:27.217 [DEBUG] [Thread-126947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:20:27.217 [DEBUG] [Thread-126947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:27.236 [INFO] [Thread-126947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:27.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-28T14:20:27.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:28.259 [DEBUG] [Thread-126947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:28.259 [DEBUG] [Thread-126947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:28.307 [DEBUG] [Thread-126947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:28.307 [DEBUG] [Thread-126947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:28.317 [DEBUG] [Thread-126947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:28.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:28.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-28T14:20:28.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-28T14:20:28.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:28.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:28.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:28.363 [DEBUG] [Thread-126947] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:38.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:20:38.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:20:38.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-28T14:20:38.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 20, 14), 17.52, 30.47, 0.0, 14.26, 17.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:20:38.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:20:14
2025-09-28T14:20:39.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:20:39.211 [DEBUG] [Thread-126949] [transport.py] [_log()] starting thread (client mode): 0x2e377250
2025-09-28T14:20:39.211 [DEBUG] [Thread-126949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:39.231 [DEBUG] [Thread-126949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:20:39.231 [INFO] [Thread-126949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:20:39.232 [DEBUG] [Thread-126949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] Compression: none
2025-09-28T14:20:39.233 [DEBUG] [Thread-126949] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:39.250 [DEBUG] [Thread-126949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:39.250 [DEBUG] [Thread-126949] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:39.251 [DEBUG] [Thread-126949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:20:39.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:20:39.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:39.253 [DEBUG] [Thread-126949] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:39.253 [DEBUG] [Thread-126949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:39.253 [DEBUG] [Thread-126949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:39.253 [DEBUG] [Thread-126949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:20:39.253 [DEBUG] [Thread-126949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:39.276 [INFO] [Thread-126949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:39.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:40.043 [DEBUG] [Thread-126949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:40.044 [DEBUG] [Thread-126949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:40.044 [DEBUG] [Thread-126949] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:20:40.084 [DEBUG] [Thread-126949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:40.084 [DEBUG] [Thread-126949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:40.087 [DEBUG] [Thread-126949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:40.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:40.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:20:40.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:20:40.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:20:40.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:40.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:20:40.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:40.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:40.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:20:40.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.513972 -999.00  +19.40  14.44     34   +3.20 1 1 1 1 1   888    0 16.30 9.09 ----- 9.0 14.4 208.6 23.9 25.2 -26.9 24.3 -25.9 25.5 -25.5 26.7 -27.8
2025-09-28T14:20:40.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:20:40.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:20:40.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.513972
2025-09-28T14:20:40.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:20:40.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:20:40.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:20:40.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:20:40.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:20:40.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:20:14', tmtdew=17.52, humidity=30.47, cloud=0.0, wind=14.26, temperature=17.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:20:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:20:40.113 [DEBUG] [Thread-126949] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:40.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-28T14:20:40.211 [DEBUG] [Thread-126952] [transport.py] [_log()] starting thread (client mode): 0x2e3f9270
2025-09-28T14:20:40.212 [DEBUG] [Thread-126952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:40.228 [DEBUG] [Thread-126952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:20:40.228 [INFO] [Thread-126952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:20:40.236 [DEBUG] [Thread-126952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:40.236 [DEBUG] [Thread-126952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:20:40.236 [DEBUG] [Thread-126952] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:40.236 [DEBUG] [Thread-126952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:40.236 [DEBUG] [Thread-126952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] Compression: none
2025-09-28T14:20:40.237 [DEBUG] [Thread-126952] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:40.297 [DEBUG] [Thread-126952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:40.297 [DEBUG] [Thread-126952] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:40.298 [DEBUG] [Thread-126952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:20:40.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:20:40.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:40.355 [DEBUG] [Thread-126952] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:40.356 [DEBUG] [Thread-126952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:40.356 [DEBUG] [Thread-126952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:40.356 [DEBUG] [Thread-126952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:20:40.356 [DEBUG] [Thread-126952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:40.375 [INFO] [Thread-126952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:40.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-28T14:20:40.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:40.687 [DEBUG] [Thread-126954 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:20:41.348 [DEBUG] [Thread-126952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:41.349 [DEBUG] [Thread-126952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:41.396 [DEBUG] [Thread-126952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:41.397 [DEBUG] [Thread-126952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:41.406 [DEBUG] [Thread-126952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:41.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:41.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-28T14:20: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') -> 00000000
2025-09-28T14:20:41.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:41.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:41.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:41.441 [DEBUG] [Thread-126952] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:51.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:20:51.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:20:51.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-28T14:20:52.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 20, 46), 17.72, 30.47, 0.0, 16.2, 18.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:20:52.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:20:46
2025-09-28T14:20:52.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:20:52.325 [DEBUG] [Thread-126955] [transport.py] [_log()] starting thread (client mode): 0x2e38e380
2025-09-28T14:20:52.325 [DEBUG] [Thread-126955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:52.344 [DEBUG] [Thread-126955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:20:52.344 [INFO] [Thread-126955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:20:52.346 [DEBUG] [Thread-126955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] Compression: none
2025-09-28T14:20:52.347 [DEBUG] [Thread-126955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:52.354 [DEBUG] [Thread-126955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:52.354 [DEBUG] [Thread-126955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:52.354 [DEBUG] [Thread-126955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:20:52.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:20:52.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:52.356 [DEBUG] [Thread-126955] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:52.356 [DEBUG] [Thread-126955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:52.356 [DEBUG] [Thread-126955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:52.356 [DEBUG] [Thread-126955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:20:52.356 [DEBUG] [Thread-126955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:52.376 [INFO] [Thread-126955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20:52.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:52.954 [DEBUG] [Thread-126955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:52.954 [DEBUG] [Thread-126955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:52.954 [DEBUG] [Thread-126955] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:20:52.995 [DEBUG] [Thread-126955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:52.995 [DEBUG] [Thread-126955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:52.997 [DEBUG] [Thread-126955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:53.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20:53.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:20:53.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:20:53.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:20:53.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:53.018 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:20:53.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.514319 -999.00  +19.50  15.91     34   +3.30 1 1 1 1 1   888    0 16.04 7.06 ----- 15.1 15.9 246.0 19.7 25.4 -26.0 24.3 -25.1 25.5 -24.8 26.7 -27.2
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.514319
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:20:53.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:20:46', tmtdew=17.72, humidity=30.47, cloud=0.0, wind=16.2, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:20:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:20:53.019 [DEBUG] [Thread-126955] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:53.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-28T14:20:53.103 [DEBUG] [Thread-126958] [transport.py] [_log()] starting thread (client mode): 0x2e3fbb20
2025-09-28T14:20:53.103 [DEBUG] [Thread-126958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:20:53.117 [DEBUG] [Thread-126958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:20:53.117 [INFO] [Thread-126958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] client lang: <none>
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] server lang: <none>
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] kex follows: False
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:20:53.125 [DEBUG] [Thread-126958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:20:53.126 [DEBUG] [Thread-126958] [transport.py] [_log()] Compression: none
2025-09-28T14:20:53.126 [DEBUG] [Thread-126958] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:20:53.183 [DEBUG] [Thread-126958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:20:53.183 [DEBUG] [Thread-126958] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:20:53.183 [DEBUG] [Thread-126958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:20:53.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:20:53.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:20:53.240 [DEBUG] [Thread-126958] [transport.py] [_log()] userauth is OK
2025-09-28T14:20:53.240 [DEBUG] [Thread-126958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:20:53.240 [DEBUG] [Thread-126958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:20:53.240 [DEBUG] [Thread-126958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:20:53.240 [DEBUG] [Thread-126958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:20:53.257 [INFO] [Thread-126958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:20: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-28T14:20:53.258 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:20:54.254 [DEBUG] [Thread-126958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:20:54.255 [DEBUG] [Thread-126958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:20:54.302 [DEBUG] [Thread-126958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:20:54.302 [DEBUG] [Thread-126958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:20:54.310 [DEBUG] [Thread-126958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:20:54.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:20: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')
2025-09-28T14:20:54.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-28T14:20:54.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:20:54.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:20:54.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:20:54.342 [DEBUG] [Thread-126958] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:20:55.740 [DEBUG] [Thread-126960 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:02.297 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:02.298 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:04.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:21:04.345 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:21:04.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:21:04.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 20, 46), 17.72, 30.47, 0.0, 16.2, 18.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:21:04.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:20:46
2025-09-28T14:21:05.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:21:05.180 [DEBUG] [Thread-126961] [transport.py] [_log()] starting thread (client mode): 0x28705540
2025-09-28T14:21:05.181 [DEBUG] [Thread-126961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:05.201 [DEBUG] [Thread-126961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:21:05.201 [INFO] [Thread-126961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:21:05.204 [DEBUG] [Thread-126961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:05.204 [DEBUG] [Thread-126961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:21:05.204 [DEBUG] [Thread-126961] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:05.204 [DEBUG] [Thread-126961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:05.204 [DEBUG] [Thread-126961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:05.205 [DEBUG] [Thread-126961] [transport.py] [_log()] Compression: none
2025-09-28T14:21:05.206 [DEBUG] [Thread-126961] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:05.225 [DEBUG] [Thread-126961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:05.226 [DEBUG] [Thread-126961] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:05.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:21:05.227 [DEBUG] [Thread-126961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:21:05.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:05.229 [DEBUG] [Thread-126961] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:05.230 [DEBUG] [Thread-126961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:05.230 [DEBUG] [Thread-126961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:05.230 [DEBUG] [Thread-126961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:21:05.230 [DEBUG] [Thread-126961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:05.253 [INFO] [Thread-126961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:05.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:05.980 [DEBUG] [Thread-126961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:05.981 [DEBUG] [Thread-126961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:05.981 [DEBUG] [Thread-126961] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:21:06.022 [DEBUG] [Thread-126961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:06.022 [DEBUG] [Thread-126961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:06.024 [DEBUG] [Thread-126961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:06.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:06.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:21:06.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:21:06.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:21:06.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:06.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:21:06.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.514319 -999.00  +19.50  15.91     34   +3.30 1 1 1 1 1   888    0 16.04 7.06 ----- 15.1 15.9 246.0 19.7 25.4 -26.0 24.3 -25.1 25.5 -24.8 26.7 -27.2
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.514319
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:21:06.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:21:06.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:20:46', tmtdew=17.72, humidity=30.47, cloud=0.0, wind=16.2, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:20:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:21:06.043 [DEBUG] [Thread-126961] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:06.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-28T14:21:06.126 [DEBUG] [Thread-126964] [transport.py] [_log()] starting thread (client mode): 0x2e3758d0
2025-09-28T14:21:06.126 [DEBUG] [Thread-126964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:06.142 [DEBUG] [Thread-126964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:21:06.142 [INFO] [Thread-126964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:21:06.150 [DEBUG] [Thread-126964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] Compression: none
2025-09-28T14:21:06.151 [DEBUG] [Thread-126964] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:06.208 [DEBUG] [Thread-126964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:06.209 [DEBUG] [Thread-126964] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:06.210 [DEBUG] [Thread-126964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:21:06.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:21:06.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:06.264 [DEBUG] [Thread-126964] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:06.264 [DEBUG] [Thread-126964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:06.265 [DEBUG] [Thread-126964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:06.265 [DEBUG] [Thread-126964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:21:06.265 [DEBUG] [Thread-126964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:06.283 [INFO] [Thread-126964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:06.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-28T14:21:06.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:07.266 [DEBUG] [Thread-126964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:07.266 [DEBUG] [Thread-126964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:07.315 [DEBUG] [Thread-126964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:07.315 [DEBUG] [Thread-126964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:07.324 [DEBUG] [Thread-126964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:07.333 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:07.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-28T14:21:07.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-28T14:21:07.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:07.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:07.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:07.360 [DEBUG] [Thread-126964] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:10.779 [DEBUG] [Thread-126966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:14.871 [DEBUG] [Thread-126967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:17.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:21:17.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:21:17.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-28T14:21:17.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 20, 46), 17.72, 30.47, 0.0, 16.2, 18.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:21:17.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:20:46
2025-09-28T14:21:18.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:21:18.201 [DEBUG] [Thread-126968] [transport.py] [_log()] starting thread (client mode): 0x2e374850
2025-09-28T14:21:18.201 [DEBUG] [Thread-126968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:18.221 [DEBUG] [Thread-126968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:21:18.221 [INFO] [Thread-126968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:21:18.225 [DEBUG] [Thread-126968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:18.225 [DEBUG] [Thread-126968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:21:18.225 [DEBUG] [Thread-126968] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:18.225 [DEBUG] [Thread-126968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] Compression: none
2025-09-28T14:21:18.226 [DEBUG] [Thread-126968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:18.243 [DEBUG] [Thread-126968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:18.243 [DEBUG] [Thread-126968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:18.244 [DEBUG] [Thread-126968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:21:18.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:21:18.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:18.246 [DEBUG] [Thread-126968] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:18.246 [DEBUG] [Thread-126968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:18.246 [DEBUG] [Thread-126968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:18.246 [DEBUG] [Thread-126968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:21:18.246 [DEBUG] [Thread-126968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:18.261 [INFO] [Thread-126968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:18.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:19.002 [DEBUG] [Thread-126968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:19.002 [DEBUG] [Thread-126968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:19.002 [DEBUG] [Thread-126968] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:21:19.043 [DEBUG] [Thread-126968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:19.043 [DEBUG] [Thread-126968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:19.048 [DEBUG] [Thread-126968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:19.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:19.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:21:19.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:21:19.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:21:19.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:19.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:21:19.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.514319 -999.00  +19.50  15.91     34   +3.30 1 1 1 1 1   888    0 16.04 7.06 ----- 15.1 15.9 246.0 19.7 25.4 -26.0 24.3 -25.1 25.5 -24.8 26.7 -27.2
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.514319
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:21:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:20:46', tmtdew=17.72, humidity=30.47, cloud=0.0, wind=16.2, temperature=18.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:20:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:21:19.068 [DEBUG] [Thread-126968] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:19.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-28T14:21:19.157 [DEBUG] [Thread-126971] [transport.py] [_log()] starting thread (client mode): 0x2e377910
2025-09-28T14:21:19.157 [DEBUG] [Thread-126971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:19.171 [DEBUG] [Thread-126971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:21:19.171 [INFO] [Thread-126971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:19.178 [DEBUG] [Thread-126971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] Compression: none
2025-09-28T14:21:19.179 [DEBUG] [Thread-126971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:19.235 [DEBUG] [Thread-126971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:19.235 [DEBUG] [Thread-126971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:19.235 [DEBUG] [Thread-126971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:21:19.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:21:19.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:19.292 [DEBUG] [Thread-126971] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:19.292 [DEBUG] [Thread-126971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:19.293 [DEBUG] [Thread-126971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:19.293 [DEBUG] [Thread-126971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:21:19.293 [DEBUG] [Thread-126971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:19.306 [INFO] [Thread-126971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:19.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-28T14:21:19.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:20.353 [DEBUG] [Thread-126971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:20.353 [DEBUG] [Thread-126971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:20.401 [DEBUG] [Thread-126971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:20.401 [DEBUG] [Thread-126971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:20.409 [DEBUG] [Thread-126971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:20.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21: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')
2025-09-28T14:21:20.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-28T14:21:20.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:20.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:20.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:20.440 [DEBUG] [Thread-126971] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:25.809 [DEBUG] [Thread-126973 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:30.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:21:30.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:21:30.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:21:31.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 21, 18), 17.74, 30.44, 0.0, 17.13, 18.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:21:31.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:21:18
2025-09-28T14:21:31.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:21:31.326 [DEBUG] [Thread-126974] [transport.py] [_log()] starting thread (client mode): 0x2e3fa740
2025-09-28T14:21:31.326 [DEBUG] [Thread-126974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:31.341 [DEBUG] [Thread-126974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:21:31.341 [INFO] [Thread-126974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] Compression: none
2025-09-28T14:21:31.345 [DEBUG] [Thread-126974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:31.363 [DEBUG] [Thread-126974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:31.363 [DEBUG] [Thread-126974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:31.363 [DEBUG] [Thread-126974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:21:31.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:21:31.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:31.364 [DEBUG] [Thread-126974] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:31.364 [DEBUG] [Thread-126974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:31.364 [DEBUG] [Thread-126974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:31.364 [DEBUG] [Thread-126974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:21:31.364 [DEBUG] [Thread-126974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:31.373 [INFO] [Thread-126974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:31.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:31.986 [DEBUG] [Thread-126974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:31.986 [DEBUG] [Thread-126974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:31.986 [DEBUG] [Thread-126974] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:21:32.027 [DEBUG] [Thread-126974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:32.027 [DEBUG] [Thread-126974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:32.029 [DEBUG] [Thread-126974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:32.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:32.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:21:32.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:21:32.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:21:32.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:32.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:21:32.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.514666 -999.00  +19.50  18.46     34   +3.50 1 1 1 1 1   888    0 16.42 5.04 ----- 16.6 18.5 244.4 24.6 25.3 -26.6 24.3 -27.6 25.4 -25.6 26.6 -27.8
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:21:32.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.514666
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:21:32.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:21:18', tmtdew=17.74, humidity=30.44, cloud=0.0, wind=17.13, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:21:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:21:32.042 [DEBUG] [Thread-126974] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:32.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-28T14:21:32.126 [DEBUG] [Thread-126977] [transport.py] [_log()] starting thread (client mode): 0x2b96e890
2025-09-28T14:21:32.126 [DEBUG] [Thread-126977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:32.143 [DEBUG] [Thread-126977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:21:32.143 [INFO] [Thread-126977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:32.150 [DEBUG] [Thread-126977] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] Compression: none
2025-09-28T14:21:32.151 [DEBUG] [Thread-126977] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:32.207 [DEBUG] [Thread-126977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:32.207 [DEBUG] [Thread-126977] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:32.208 [DEBUG] [Thread-126977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:21:32.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:21:32.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:32.265 [DEBUG] [Thread-126977] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:32.265 [DEBUG] [Thread-126977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:32.265 [DEBUG] [Thread-126977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:32.265 [DEBUG] [Thread-126977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:21:32.265 [DEBUG] [Thread-126977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:32.283 [INFO] [Thread-126977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:32.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-28T14:21:32.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:33.300 [DEBUG] [Thread-126977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:33.300 [DEBUG] [Thread-126977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:33.348 [DEBUG] [Thread-126977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:33.348 [DEBUG] [Thread-126977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:33.356 [DEBUG] [Thread-126977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:33.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:33.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-28T14:21:33.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-28T14:21:33.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:33.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:33.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:33.389 [DEBUG] [Thread-126977] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:40.839 [DEBUG] [Thread-126979 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:43.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:21:43.391 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:21:43.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-28T14:21:43.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 21, 18), 17.74, 30.44, 0.0, 17.13, 18.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:21:43.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:21:18
2025-09-28T14:21:44.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:21:44.238 [DEBUG] [Thread-126980] [transport.py] [_log()] starting thread (client mode): 0x287059c0
2025-09-28T14:21:44.239 [DEBUG] [Thread-126980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:44.259 [DEBUG] [Thread-126980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:21:44.260 [INFO] [Thread-126980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:21:44.262 [DEBUG] [Thread-126980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] Compression: none
2025-09-28T14:21:44.263 [DEBUG] [Thread-126980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:44.280 [DEBUG] [Thread-126980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:44.280 [DEBUG] [Thread-126980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:44.281 [DEBUG] [Thread-126980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:21:44.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:21:44.282 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:44.283 [DEBUG] [Thread-126980] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:44.283 [DEBUG] [Thread-126980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:44.283 [DEBUG] [Thread-126980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:44.283 [DEBUG] [Thread-126980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:21:44.284 [DEBUG] [Thread-126980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:44.307 [INFO] [Thread-126980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:44.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:45.055 [DEBUG] [Thread-126980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:45.055 [DEBUG] [Thread-126980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:45.055 [DEBUG] [Thread-126980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:21:45.097 [DEBUG] [Thread-126980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:45.097 [DEBUG] [Thread-126980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:45.100 [DEBUG] [Thread-126980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:45.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:45.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:21:45.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:21:45.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:21:45.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:45.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:21:45.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:45.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:45.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:21:45.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.514666 -999.00  +19.50  18.46     34   +3.50 1 1 1 1 1   888    0 16.42 5.04 ----- 16.6 18.5 244.4 24.6 25.3 -26.6 24.3 -27.6 25.4 -25.6 26.6 -27.8
2025-09-28T14:21:45.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:21:45.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:21:45.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.514666
2025-09-28T14:21:45.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:21:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:21:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:21:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:21:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:21:45.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:21:18', tmtdew=17.74, humidity=30.44, cloud=0.0, wind=17.13, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:21:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:21:45.126 [DEBUG] [Thread-126980] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:45.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-28T14:21:45.222 [DEBUG] [Thread-126983] [transport.py] [_log()] starting thread (client mode): 0x28707dc0
2025-09-28T14:21:45.222 [DEBUG] [Thread-126983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:45.238 [DEBUG] [Thread-126983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:21:45.238 [INFO] [Thread-126983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:21:45.245 [DEBUG] [Thread-126983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:45.245 [DEBUG] [Thread-126983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] Compression: none
2025-09-28T14:21:45.246 [DEBUG] [Thread-126983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:45.305 [DEBUG] [Thread-126983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:45.305 [DEBUG] [Thread-126983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:45.306 [DEBUG] [Thread-126983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:21:45.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:21:45.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:45.361 [DEBUG] [Thread-126983] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:45.362 [DEBUG] [Thread-126983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:45.362 [DEBUG] [Thread-126983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:45.362 [DEBUG] [Thread-126983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:21:45.362 [DEBUG] [Thread-126983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:45.380 [INFO] [Thread-126983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21: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-28T14:21:45.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:46.390 [DEBUG] [Thread-126983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:46.391 [DEBUG] [Thread-126983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:46.438 [DEBUG] [Thread-126983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:46.438 [DEBUG] [Thread-126983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:46.447 [DEBUG] [Thread-126983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:46.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:46.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-28T14:21:46.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-28T14:21:46.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:46.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:46.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:46.485 [DEBUG] [Thread-126983] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:55.891 [DEBUG] [Thread-126985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:21:56.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:21:56.487 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:21:56.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-28T14:21:57.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 21, 50), 18.08, 29.89, 0.0, 18.4, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:21:57.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:21:50
2025-09-28T14:21:57.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:21:57.329 [DEBUG] [Thread-126986] [transport.py] [_log()] starting thread (client mode): 0x2b96d930
2025-09-28T14:21:57.329 [DEBUG] [Thread-126986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:57.349 [DEBUG] [Thread-126986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:21:57.349 [INFO] [Thread-126986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:57.352 [DEBUG] [Thread-126986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:57.353 [DEBUG] [Thread-126986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:57.353 [DEBUG] [Thread-126986] [transport.py] [_log()] Compression: none
2025-09-28T14:21:57.353 [DEBUG] [Thread-126986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:57.371 [DEBUG] [Thread-126986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:57.371 [DEBUG] [Thread-126986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:57.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:21:57.373 [DEBUG] [Thread-126986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:21:57.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:57.374 [DEBUG] [Thread-126986] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:57.374 [DEBUG] [Thread-126986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:57.375 [DEBUG] [Thread-126986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:57.375 [DEBUG] [Thread-126986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:21:57.375 [DEBUG] [Thread-126986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:57.398 [INFO] [Thread-126986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21:57.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:58.020 [DEBUG] [Thread-126986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:58.020 [DEBUG] [Thread-126986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:58.021 [DEBUG] [Thread-126986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:21:58.061 [DEBUG] [Thread-126986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:58.062 [DEBUG] [Thread-126986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:58.064 [DEBUG] [Thread-126986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:58.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:58.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:21:58.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:21:58.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:21:58.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:58.087 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:21:58.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:58.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:21:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.515014 -999.00  +19.40  16.03     35   +3.60 1 1 1 1 1   888    0 15.94 0.64 ----- 18.3 16.0 263.8 21.3 25.3 -26.3 24.4 -25.0 25.5 -26.7 26.6 -27.0
2025-09-28T14:21:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:21:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:21:58.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.515014
2025-09-28T14:21:58.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:21:58.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:21:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:21:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:21:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:21:58.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:21:50', tmtdew=18.08, humidity=29.89, cloud=0.0, wind=18.4, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:21:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:21:58.090 [DEBUG] [Thread-126986] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:21:58.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-28T14:21:58.184 [DEBUG] [Thread-126989] [transport.py] [_log()] starting thread (client mode): 0x2e34b100
2025-09-28T14:21:58.185 [DEBUG] [Thread-126989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:21:58.199 [DEBUG] [Thread-126989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:21:58.199 [INFO] [Thread-126989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:21:58.207 [DEBUG] [Thread-126989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:21:58.207 [DEBUG] [Thread-126989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] client lang: <none>
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] server lang: <none>
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] kex follows: False
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:21:58.208 [DEBUG] [Thread-126989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:21:58.209 [DEBUG] [Thread-126989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:21:58.209 [DEBUG] [Thread-126989] [transport.py] [_log()] Compression: none
2025-09-28T14:21:58.209 [DEBUG] [Thread-126989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:21:58.264 [DEBUG] [Thread-126989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:21:58.265 [DEBUG] [Thread-126989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:21:58.265 [DEBUG] [Thread-126989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:21:58.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:21:58.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:21:58.321 [DEBUG] [Thread-126989] [transport.py] [_log()] userauth is OK
2025-09-28T14:21:58.322 [DEBUG] [Thread-126989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:21:58.322 [DEBUG] [Thread-126989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:21:58.322 [DEBUG] [Thread-126989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:21:58.322 [DEBUG] [Thread-126989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:21:58.340 [INFO] [Thread-126989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:21: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-28T14:21:58.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:21:59.376 [DEBUG] [Thread-126989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:21:59.376 [DEBUG] [Thread-126989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:21:59.423 [DEBUG] [Thread-126989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:21:59.423 [DEBUG] [Thread-126989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:21:59.431 [DEBUG] [Thread-126989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:21:59.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:21:59.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-28T14:21:59.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-28T14:21:59.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:21:59.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:21:59.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:21:59.463 [DEBUG] [Thread-126989] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:02.438 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:02.439 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:09.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:22:09.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:22:09.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-28T14:22:10.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 21, 50), 18.08, 29.89, 0.0, 18.4, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:22:10.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:21:50
2025-09-28T14:22:10.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:22:10.324 [DEBUG] [Thread-126991] [transport.py] [_log()] starting thread (client mode): 0x2e3fad10
2025-09-28T14:22:10.324 [DEBUG] [Thread-126991] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:22:10.344 [DEBUG] [Thread-126991] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:22:10.344 [INFO] [Thread-126991] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:22:10.347 [DEBUG] [Thread-126991] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:22:10.347 [DEBUG] [Thread-126991] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:22:10.347 [DEBUG] [Thread-126991] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:22:10.347 [DEBUG] [Thread-126991] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:10.347 [DEBUG] [Thread-126991] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] client lang: <none>
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] server lang: <none>
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] kex follows: False
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] Compression: none
2025-09-28T14:22:10.348 [DEBUG] [Thread-126991] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:22:10.356 [DEBUG] [Thread-126991] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:22:10.357 [DEBUG] [Thread-126991] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:22:10.357 [DEBUG] [Thread-126991] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:22:10.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:22:10.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:22:10.359 [DEBUG] [Thread-126991] [transport.py] [_log()] userauth is OK
2025-09-28T14:22:10.359 [DEBUG] [Thread-126991] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:22:10.359 [DEBUG] [Thread-126991] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:22:10.359 [DEBUG] [Thread-126991] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:22:10.359 [DEBUG] [Thread-126991] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:22:10.378 [INFO] [Thread-126991] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:22:10.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:22:10.921 [DEBUG] [Thread-126993 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:11.128 [DEBUG] [Thread-126991] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:22:11.128 [DEBUG] [Thread-126991] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:22:11.129 [DEBUG] [Thread-126991] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:22:11.169 [DEBUG] [Thread-126991] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:22:11.169 [DEBUG] [Thread-126991] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:22:11.172 [DEBUG] [Thread-126991] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:22:11.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:22:11.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:22:11.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:22:11.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:22:11.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:22:11.204 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:22:11.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.515014 -999.00  +19.40  16.03     35   +3.60 1 1 1 1 1   888    0 15.94 0.64 ----- 18.3 16.0 263.8 21.3 25.3 -26.3 24.4 -25.0 25.5 -26.7 26.6 -27.0
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:22:11.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.515014
2025-09-28T14:22:11.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:22:11.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:22:11.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:22:11.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:22:11.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:22:11.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:21:50', tmtdew=18.08, humidity=29.89, cloud=0.0, wind=18.4, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:21:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:22:11.208 [DEBUG] [Thread-126991] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:11.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-28T14:22:11.304 [DEBUG] [Thread-126995] [transport.py] [_log()] starting thread (client mode): 0x2e38f5b0
2025-09-28T14:22:11.304 [DEBUG] [Thread-126995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:22:11.319 [DEBUG] [Thread-126995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:22:11.319 [INFO] [Thread-126995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:22:11.326 [DEBUG] [Thread-126995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] client lang: <none>
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] server lang: <none>
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] kex follows: False
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] Compression: none
2025-09-28T14:22:11.327 [DEBUG] [Thread-126995] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:22:11.385 [DEBUG] [Thread-126995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:22:11.386 [DEBUG] [Thread-126995] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:22:11.386 [DEBUG] [Thread-126995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:22:11.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:22:11.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:22:11.442 [DEBUG] [Thread-126995] [transport.py] [_log()] userauth is OK
2025-09-28T14:22:11.442 [DEBUG] [Thread-126995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:22:11.442 [DEBUG] [Thread-126995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:22:11.442 [DEBUG] [Thread-126995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:22:11.443 [DEBUG] [Thread-126995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:22:11.462 [INFO] [Thread-126995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:22:11.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-28T14:22:11.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:22:12.400 [DEBUG] [Thread-126995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:22:12.400 [DEBUG] [Thread-126995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:22:12.450 [DEBUG] [Thread-126995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:22:12.450 [DEBUG] [Thread-126995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:22:12.463 [DEBUG] [Thread-126995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:22:12.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:22:12.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-28T14:22:12.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-28T14:22:12.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:22:12.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:22:12.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:22:12.498 [DEBUG] [Thread-126995] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:14.936 [DEBUG] [Thread-126997 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:22.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:22:22.501 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:22:22.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-28T14:22:23.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 21, 50), 18.08, 29.89, 0.0, 18.4, 18.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:22:23.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:21:50
2025-09-28T14:22:23.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:22:23.397 [DEBUG] [Thread-126998] [transport.py] [_log()] starting thread (client mode): 0x2e3491e0
2025-09-28T14:22:23.397 [DEBUG] [Thread-126998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:22:23.418 [DEBUG] [Thread-126998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:22:23.418 [INFO] [Thread-126998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:22:23.421 [DEBUG] [Thread-126998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:22:23.421 [DEBUG] [Thread-126998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:22:23.421 [DEBUG] [Thread-126998] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:22:23.421 [DEBUG] [Thread-126998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] client lang: <none>
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] server lang: <none>
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] kex follows: False
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] Compression: none
2025-09-28T14:22:23.422 [DEBUG] [Thread-126998] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:22:23.442 [DEBUG] [Thread-126998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:22:23.442 [DEBUG] [Thread-126998] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:22:23.442 [DEBUG] [Thread-126998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:22:23.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:22:23.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:22:23.443 [DEBUG] [Thread-126998] [transport.py] [_log()] userauth is OK
2025-09-28T14:22:23.443 [DEBUG] [Thread-126998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:22:23.443 [DEBUG] [Thread-126998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:22:23.443 [DEBUG] [Thread-126998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:22:23.443 [DEBUG] [Thread-126998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:22:23.470 [INFO] [Thread-126998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:22:23.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:22:24.215 [DEBUG] [Thread-126998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:22:24.215 [DEBUG] [Thread-126998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:22:24.215 [DEBUG] [Thread-126998] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:22:24.256 [DEBUG] [Thread-126998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:22:24.256 [DEBUG] [Thread-126998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:22:24.260 [DEBUG] [Thread-126998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:22:24.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:22:24.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:22:24.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:22:24.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:22:24.279 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:22:24.279 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.515014 -999.00  +19.40  16.03     35   +3.60 1 1 1 1 1   888    0 15.94 0.64 ----- 18.3 16.0 263.8 21.3 25.3 -26.3 24.4 -25.0 25.5 -26.7 26.6 -27.0
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:22:24.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.515014
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:22:24.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:21:50', tmtdew=18.08, humidity=29.89, cloud=0.0, wind=18.4, temperature=18.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:21:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:22:24.280 [DEBUG] [Thread-126998] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:24.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-28T14:22:24.364 [DEBUG] [Thread-127001] [transport.py] [_log()] starting thread (client mode): 0x2e348d90
2025-09-28T14:22:24.364 [DEBUG] [Thread-127001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:22:24.379 [DEBUG] [Thread-127001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:22:24.379 [INFO] [Thread-127001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:24.386 [DEBUG] [Thread-127001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] client lang: <none>
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] server lang: <none>
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] kex follows: False
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] Compression: none
2025-09-28T14:22:24.387 [DEBUG] [Thread-127001] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:22:24.446 [DEBUG] [Thread-127001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:22:24.446 [DEBUG] [Thread-127001] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:22:24.447 [DEBUG] [Thread-127001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:22:24.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:22:24.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:22:24.502 [DEBUG] [Thread-127001] [transport.py] [_log()] userauth is OK
2025-09-28T14:22:24.502 [DEBUG] [Thread-127001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:22:24.503 [DEBUG] [Thread-127001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:22:24.503 [DEBUG] [Thread-127001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:22:24.503 [DEBUG] [Thread-127001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:22:24.522 [INFO] [Thread-127001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:22:24.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-28T14:22:24.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:22:25.538 [DEBUG] [Thread-127001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:22:25.538 [DEBUG] [Thread-127001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:22:25.586 [DEBUG] [Thread-127001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:22:25.586 [DEBUG] [Thread-127001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:22:25.595 [DEBUG] [Thread-127001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:22:25.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:22:25.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-28T14:22:25.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-28T14:22:25.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:22:25.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:22:25.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:22:25.630 [DEBUG] [Thread-127001] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:25.975 [DEBUG] [Thread-127003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:35.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:22:35.632 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:22:35.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-28T14:22:36.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 22, 22), 18.28, 29.61, 0.0, 22.97, 19.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:22:36.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:22:22
2025-09-28T14:22:36.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:22:36.484 [DEBUG] [Thread-127004] [transport.py] [_log()] starting thread (client mode): 0x2e34ae00
2025-09-28T14:22:36.484 [DEBUG] [Thread-127004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:22:36.504 [DEBUG] [Thread-127004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:22:36.504 [INFO] [Thread-127004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:22:36.507 [DEBUG] [Thread-127004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:22:36.507 [DEBUG] [Thread-127004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:22:36.507 [DEBUG] [Thread-127004] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:22:36.507 [DEBUG] [Thread-127004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] client lang: <none>
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] server lang: <none>
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] kex follows: False
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] Compression: none
2025-09-28T14:22:36.508 [DEBUG] [Thread-127004] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:22:36.524 [DEBUG] [Thread-127004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:22:36.525 [DEBUG] [Thread-127004] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:22:36.525 [DEBUG] [Thread-127004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:22:36.525 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:22:36.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:22:36.527 [DEBUG] [Thread-127004] [transport.py] [_log()] userauth is OK
2025-09-28T14:22:36.527 [DEBUG] [Thread-127004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:22:36.527 [DEBUG] [Thread-127004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:22:36.527 [DEBUG] [Thread-127004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:22:36.527 [DEBUG] [Thread-127004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:22:36.544 [INFO] [Thread-127004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:22:36.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:22:37.159 [DEBUG] [Thread-127004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:22:37.159 [DEBUG] [Thread-127004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:22:37.160 [DEBUG] [Thread-127004] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:22:37.200 [DEBUG] [Thread-127004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:22:37.200 [DEBUG] [Thread-127004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:22:37.202 [DEBUG] [Thread-127004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:22:37.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:22:37.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:22:37.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:22:37.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:22:37.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:22:37.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:22:37.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.515361 -999.00  +19.00  18.07     35   +3.30 1 1 1 1 1   888    0 16.01 -4.41 ----- 13.9 18.1 244.7 28.8 25.2 -27.9 24.5 -26.5 25.2 -25.5 26.4 -26.7
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:22:37.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.515361
2025-09-28T14:22:37.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:22:37.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:22:37.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:22:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:22:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:22:37.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:22:22', tmtdew=18.28, humidity=29.61, cloud=0.0, wind=22.97, temperature=19.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:22:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:22:37.220 [DEBUG] [Thread-127004] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:22:37.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-28T14:22:41.005 [DEBUG] [Thread-127007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:22:56.051 [DEBUG] [Thread-127008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:02.580 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:02.581 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:11.081 [DEBUG] [Thread-127009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:14.995 [DEBUG] [Thread-127010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:26.111 [DEBUG] [Thread-127011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:41.142 [DEBUG] [Thread-127012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:23:56.172 [DEBUG] [Thread-127013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:02.721 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:02.722 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:11.201 [DEBUG] [Thread-127014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:15.043 [DEBUG] [Thread-127015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:26.235 [DEBUG] [Thread-127016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:41.264 [DEBUG] [Thread-127017 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:49.594 [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-28T14:24:56.293 [DEBUG] [Thread-127018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:24:59.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:24:59.597 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:24:59.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-28T14:25:00.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 24, 30), 18.06, 29.57, 0.0, 22.8, 18.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:25:00.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:24:30
2025-09-28T14:25:00.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:25:00.457 [DEBUG] [Thread-127019] [transport.py] [_log()] starting thread (client mode): 0x2e34a620
2025-09-28T14:25:00.457 [DEBUG] [Thread-127019] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:00.477 [DEBUG] [Thread-127019] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:25:00.477 [INFO] [Thread-127019] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:00.480 [DEBUG] [Thread-127019] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] Compression: none
2025-09-28T14:25:00.481 [DEBUG] [Thread-127019] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:00.502 [DEBUG] [Thread-127019] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:00.502 [DEBUG] [Thread-127019] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:00.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:25:00.503 [DEBUG] [Thread-127019] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:25:00.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:00.505 [DEBUG] [Thread-127019] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:00.505 [DEBUG] [Thread-127019] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:00.505 [DEBUG] [Thread-127019] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:00.506 [DEBUG] [Thread-127019] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:25:00.506 [DEBUG] [Thread-127019] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:00.523 [INFO] [Thread-127019] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:00.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:01.316 [DEBUG] [Thread-127019] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:01.316 [DEBUG] [Thread-127019] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:01.317 [DEBUG] [Thread-127019] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:25:01.357 [DEBUG] [Thread-127019] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:01.357 [DEBUG] [Thread-127019] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:01.360 [DEBUG] [Thread-127019] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:01.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:01.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:25:01.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:25:01.383 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:25:01.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:01.391 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:25:01.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:01.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:25:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517097 -999.00  +19.20  12.93     35   +3.40 1 1 1 1 1   888    0 15.32 -23.56 ----- 11.1 12.9 201.4 18.6 25.2 -27.4 24.2 -26.8 25.3 -26.3 26.5 -27.6
2025-09-28T14:25:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:25:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:25:01.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517097
2025-09-28T14:25:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:25:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:25:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:25:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:25:01.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:25:01.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:24:30', tmtdew=18.06, humidity=29.57, cloud=0.0, wind=22.8, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:24:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:25:01.394 [DEBUG] [Thread-127019] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:01.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-28T14:25:01.492 [DEBUG] [Thread-127022] [transport.py] [_log()] starting thread (client mode): 0x2e377b50
2025-09-28T14:25:01.492 [DEBUG] [Thread-127022] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:01.506 [DEBUG] [Thread-127022] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:25:01.507 [INFO] [Thread-127022] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:25:01.514 [DEBUG] [Thread-127022] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:01.514 [DEBUG] [Thread-127022] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] Compression: none
2025-09-28T14:25:01.515 [DEBUG] [Thread-127022] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:01.574 [DEBUG] [Thread-127022] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:01.574 [DEBUG] [Thread-127022] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:01.575 [DEBUG] [Thread-127022] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:25:01.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:25:01.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:01.629 [DEBUG] [Thread-127022] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:01.629 [DEBUG] [Thread-127022] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:01.629 [DEBUG] [Thread-127022] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:01.629 [DEBUG] [Thread-127022] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:25:01.629 [DEBUG] [Thread-127022] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:01.646 [INFO] [Thread-127022] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:01.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-28T14:25:01.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:02.675 [DEBUG] [Thread-127022] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:02.676 [DEBUG] [Thread-127022] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:02.724 [DEBUG] [Thread-127022] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:02.724 [DEBUG] [Thread-127022] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:02.732 [DEBUG] [Thread-127022] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:02.740 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:02.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-28T14:25:02.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-28T14:25:02.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:02.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:02.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:02.764 [DEBUG] [Thread-127022] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:02.864 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:02.864 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:11.325 [DEBUG] [Thread-127024 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:12.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:25:12.766 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:25:12.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-28T14:25:13.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 25, 1), 17.84, 30.0, 0.0, 21.28, 18.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:25:13.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:25:01
2025-09-28T14:25:13.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:25:13.662 [DEBUG] [Thread-127025] [transport.py] [_log()] starting thread (client mode): 0x2e348f70
2025-09-28T14:25:13.662 [DEBUG] [Thread-127025] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:13.678 [DEBUG] [Thread-127025] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:25:13.678 [INFO] [Thread-127025] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] Compression: none
2025-09-28T14:25:13.681 [DEBUG] [Thread-127025] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:13.689 [DEBUG] [Thread-127025] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:13.689 [DEBUG] [Thread-127025] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:13.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:25:13.689 [DEBUG] [Thread-127025] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:25:13.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:13.690 [DEBUG] [Thread-127025] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:13.690 [DEBUG] [Thread-127025] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:13.690 [DEBUG] [Thread-127025] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:13.690 [DEBUG] [Thread-127025] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:25:13.690 [DEBUG] [Thread-127025] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:13.699 [INFO] [Thread-127025] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:13.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:15.091 [DEBUG] [Thread-127027 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:22.303 [DEBUG] [Thread-127025] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:22.304 [DEBUG] [Thread-127025] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:22.313 [DEBUG] [Thread-127025] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:25:22.344 [DEBUG] [Thread-127025] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:22.345 [DEBUG] [Thread-127025] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:22.348 [DEBUG] [Thread-127025] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:22.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:22.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:25:22.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:25:22.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:25:22.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:22.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:25:22.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517097 -999.00  +19.20  12.93     35   +3.40 1 1 1 1 1   888    0 15.32 -23.56 ----- 11.1 12.9 201.4 18.6 25.2 -27.4 24.2 -26.8 25.3 -26.3 26.5 -27.6
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:25:22.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517097
2025-09-28T14:25:22.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:25:22.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:25:22.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:25:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:25:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:25:22.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:25:01', tmtdew=17.84, humidity=30.0, cloud=0.0, wind=21.28, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:24:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:25:22.454 [DEBUG] [Thread-127025] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:22.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-28T14:25:22.564 [DEBUG] [Thread-127029] [transport.py] [_log()] starting thread (client mode): 0x2e348160
2025-09-28T14:25:22.564 [DEBUG] [Thread-127029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:22.579 [DEBUG] [Thread-127029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:25:22.579 [INFO] [Thread-127029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:22.591 [DEBUG] [Thread-127029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] Compression: none
2025-09-28T14:25:22.592 [DEBUG] [Thread-127029] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:22.653 [DEBUG] [Thread-127029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:22.653 [DEBUG] [Thread-127029] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:22.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:25:22.654 [DEBUG] [Thread-127029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:25:22.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:22.711 [DEBUG] [Thread-127029] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:22.711 [DEBUG] [Thread-127029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:22.711 [DEBUG] [Thread-127029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:22.712 [DEBUG] [Thread-127029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:25:22.712 [DEBUG] [Thread-127029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:22.733 [INFO] [Thread-127029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:22.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-28T14:25:22.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:23.704 [DEBUG] [Thread-127029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:23.705 [DEBUG] [Thread-127029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:23.752 [DEBUG] [Thread-127029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:23.752 [DEBUG] [Thread-127029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:23.764 [DEBUG] [Thread-127029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:23.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:23.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-28T14:25:23.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:25:23.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:23.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:23.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:23.805 [DEBUG] [Thread-127029] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:26.361 [DEBUG] [Thread-127031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:33.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:25:33.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:25:33.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-28T14:25:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 25, 1), 17.84, 30.0, 0.0, 21.28, 18.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:25:34.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:25:01
2025-09-28T14:25:34.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:25:34.708 [DEBUG] [Thread-127032] [transport.py] [_log()] starting thread (client mode): 0x28707910
2025-09-28T14:25:34.709 [DEBUG] [Thread-127032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:34.728 [DEBUG] [Thread-127032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:25:34.728 [INFO] [Thread-127032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:34.731 [DEBUG] [Thread-127032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:34.732 [DEBUG] [Thread-127032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:34.732 [DEBUG] [Thread-127032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:34.732 [DEBUG] [Thread-127032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:34.732 [DEBUG] [Thread-127032] [transport.py] [_log()] Compression: none
2025-09-28T14:25:34.732 [DEBUG] [Thread-127032] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:34.749 [DEBUG] [Thread-127032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:34.750 [DEBUG] [Thread-127032] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:34.750 [DEBUG] [Thread-127032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:25:34.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:25:34.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:34.750 [DEBUG] [Thread-127032] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:34.750 [DEBUG] [Thread-127032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:34.751 [DEBUG] [Thread-127032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:34.751 [DEBUG] [Thread-127032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:25:34.751 [DEBUG] [Thread-127032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:34.762 [INFO] [Thread-127032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:34.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:35.536 [DEBUG] [Thread-127032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:35.536 [DEBUG] [Thread-127032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:35.536 [DEBUG] [Thread-127032] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:25:35.577 [DEBUG] [Thread-127032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:35.577 [DEBUG] [Thread-127032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:35.579 [DEBUG] [Thread-127032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:35.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:35.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:25:35.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:25:35.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:25:35.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:35.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:25:35.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517444 -999.00  +19.10   9.95     35   +3.30 1 1 1 1 1   888    0 15.36 -25.85 ----- 9.9 9.9 191.0 17.7 25.2 -26.8 24.2 -29.1 25.3 -26.4 26.5 -27.0
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517444
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:25:35.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:25:01', tmtdew=17.84, humidity=30.0, cloud=0.0, wind=21.28, temperature=18.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:25:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:25:35.597 [DEBUG] [Thread-127032] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:35.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-28T14:25:35.684 [DEBUG] [Thread-127035] [transport.py] [_log()] starting thread (client mode): 0x28704700
2025-09-28T14:25:35.684 [DEBUG] [Thread-127035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:35.700 [DEBUG] [Thread-127035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:25:35.700 [INFO] [Thread-127035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:35.707 [DEBUG] [Thread-127035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] Compression: none
2025-09-28T14:25:35.708 [DEBUG] [Thread-127035] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:35.765 [DEBUG] [Thread-127035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:35.765 [DEBUG] [Thread-127035] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:35.765 [DEBUG] [Thread-127035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:25:35.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:25:35.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:35.824 [DEBUG] [Thread-127035] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:35.824 [DEBUG] [Thread-127035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:35.824 [DEBUG] [Thread-127035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:35.824 [DEBUG] [Thread-127035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:25:35.824 [DEBUG] [Thread-127035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:35.841 [INFO] [Thread-127035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:35.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-28T14:25:35.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:36.850 [DEBUG] [Thread-127035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:36.850 [DEBUG] [Thread-127035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:36.898 [DEBUG] [Thread-127035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:36.898 [DEBUG] [Thread-127035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:36.906 [DEBUG] [Thread-127035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:36.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:36.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-28T14:25: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') -> 00000000
2025-09-28T14:25:36.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:36.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:36.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:36.940 [DEBUG] [Thread-127035] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:41.404 [DEBUG] [Thread-127037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:25:46.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:25:46.941 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:25:46.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:25:47.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 25, 33), 17.48, 30.81, 0.0, 16.94, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:25:47.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:25:33
2025-09-28T14:25:47.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:25:47.846 [DEBUG] [Thread-127038] [transport.py] [_log()] starting thread (client mode): 0x2e349f60
2025-09-28T14:25:47.846 [DEBUG] [Thread-127038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:47.867 [DEBUG] [Thread-127038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:25:47.867 [INFO] [Thread-127038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:47.870 [DEBUG] [Thread-127038] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] Compression: none
2025-09-28T14:25:47.871 [DEBUG] [Thread-127038] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:47.889 [DEBUG] [Thread-127038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:47.889 [DEBUG] [Thread-127038] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:47.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:25:47.889 [DEBUG] [Thread-127038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:25:47.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:47.890 [DEBUG] [Thread-127038] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:47.890 [DEBUG] [Thread-127038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:47.890 [DEBUG] [Thread-127038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:47.890 [DEBUG] [Thread-127038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:25:47.890 [DEBUG] [Thread-127038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:47.906 [INFO] [Thread-127038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:47.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:48.642 [DEBUG] [Thread-127038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:48.642 [DEBUG] [Thread-127038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:48.642 [DEBUG] [Thread-127038] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:25:48.683 [DEBUG] [Thread-127038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:48.683 [DEBUG] [Thread-127038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:48.685 [DEBUG] [Thread-127038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:48.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:48.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:25:48.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:25:48.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:25:48.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:48.703 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:25:48.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517444 -999.00  +19.10   9.95     35   +3.30 1 1 1 1 1   888    0 15.36 -25.85 ----- 9.9 9.9 191.0 17.7 25.2 -26.8 24.2 -29.1 25.3 -26.4 26.5 -27.0
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517444
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:25:48.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:25:33', tmtdew=17.48, humidity=30.81, cloud=0.0, wind=16.94, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:25:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:25:48.704 [DEBUG] [Thread-127038] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:48.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-28T14:25:48.788 [DEBUG] [Thread-127041] [transport.py] [_log()] starting thread (client mode): 0x2e348070
2025-09-28T14:25:48.788 [DEBUG] [Thread-127041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:25:48.803 [DEBUG] [Thread-127041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:25:48.803 [INFO] [Thread-127041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] client lang: <none>
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] server lang: <none>
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] kex follows: False
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:25:48.810 [DEBUG] [Thread-127041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:25:48.811 [DEBUG] [Thread-127041] [transport.py] [_log()] Compression: none
2025-09-28T14:25:48.811 [DEBUG] [Thread-127041] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:25:48.868 [DEBUG] [Thread-127041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:25:48.868 [DEBUG] [Thread-127041] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:25:48.868 [DEBUG] [Thread-127041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:25:48.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:25:48.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:25:48.926 [DEBUG] [Thread-127041] [transport.py] [_log()] userauth is OK
2025-09-28T14:25:48.926 [DEBUG] [Thread-127041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:25:48.926 [DEBUG] [Thread-127041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:25:48.926 [DEBUG] [Thread-127041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:25:48.926 [DEBUG] [Thread-127041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:25:48.940 [INFO] [Thread-127041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:25:48.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-28T14:25:48.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:25:49.952 [DEBUG] [Thread-127041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:25:49.952 [DEBUG] [Thread-127041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:25:50.000 [DEBUG] [Thread-127041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:25:50.000 [DEBUG] [Thread-127041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:25:50.008 [DEBUG] [Thread-127041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:25:50.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:25:50.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-28T14:25:50.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') -> 00000000
2025-09-28T14:25:50.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:25:50.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:25:50.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:25:50.040 [DEBUG] [Thread-127041] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:25:56.452 [DEBUG] [Thread-127043 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:00.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:26:00.043 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:26:00.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-28T14:26:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 25, 33), 17.48, 30.81, 0.0, 16.94, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:26:00.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:25:33
2025-09-28T14:26:00.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:26:00.919 [DEBUG] [Thread-127044] [transport.py] [_log()] starting thread (client mode): 0x287040a0
2025-09-28T14:26:00.919 [DEBUG] [Thread-127044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:00.939 [DEBUG] [Thread-127044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:26:00.939 [INFO] [Thread-127044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:26:00.942 [DEBUG] [Thread-127044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:00.942 [DEBUG] [Thread-127044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:26:00.942 [DEBUG] [Thread-127044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] Compression: none
2025-09-28T14:26:00.943 [DEBUG] [Thread-127044] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:00.960 [DEBUG] [Thread-127044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:00.960 [DEBUG] [Thread-127044] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:00.961 [DEBUG] [Thread-127044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:26:00.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:26:00.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:00.962 [DEBUG] [Thread-127044] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:00.963 [DEBUG] [Thread-127044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:00.963 [DEBUG] [Thread-127044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:00.963 [DEBUG] [Thread-127044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:26:00.963 [DEBUG] [Thread-127044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:00.987 [INFO] [Thread-127044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:00.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:01.577 [DEBUG] [Thread-127044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:01.577 [DEBUG] [Thread-127044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:01.578 [DEBUG] [Thread-127044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:26:01.618 [DEBUG] [Thread-127044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:01.618 [DEBUG] [Thread-127044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:01.625 [DEBUG] [Thread-127044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:01.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:01.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:26:01.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:26:01.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:26:01.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:01.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:26:01.641 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:01.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:26:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517791 -999.00  +19.00   9.90     35   +3.20 1 1 1 1 1   888    0 15.15 -26.61 ----- 8.7 9.9 212.3 11.6 25.3 -27.1 24.2 -25.7 25.4 -26.0 26.6 -27.4
2025-09-28T14:26:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:26:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:26:01.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517791
2025-09-28T14:26:01.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:26:01.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:26:01.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:26:01.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:26:01.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:26:01.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:25:33', tmtdew=17.48, humidity=30.81, cloud=0.0, wind=16.94, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:25:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:26:01.644 [DEBUG] [Thread-127044] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:01.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:26:01.754 [DEBUG] [Thread-127047] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T14:26:01.754 [DEBUG] [Thread-127047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:01.769 [DEBUG] [Thread-127047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:26:01.769 [INFO] [Thread-127047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:26:01.776 [DEBUG] [Thread-127047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:01.776 [DEBUG] [Thread-127047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:26:01.776 [DEBUG] [Thread-127047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] Compression: none
2025-09-28T14:26:01.777 [DEBUG] [Thread-127047] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:01.834 [DEBUG] [Thread-127047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:01.834 [DEBUG] [Thread-127047] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:01.835 [DEBUG] [Thread-127047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:26:01.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:26:01.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:01.894 [DEBUG] [Thread-127047] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:01.895 [DEBUG] [Thread-127047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:01.895 [DEBUG] [Thread-127047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:01.895 [DEBUG] [Thread-127047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:26:01.895 [DEBUG] [Thread-127047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:01.918 [INFO] [Thread-127047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:01.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:26:01.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:02.917 [DEBUG] [Thread-127047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:02.917 [DEBUG] [Thread-127047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:02.965 [DEBUG] [Thread-127047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:02.965 [DEBUG] [Thread-127047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:02.974 [DEBUG] [Thread-127047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:02.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:02.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-28T14:26:02.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') -> 00000000
2025-09-28T14:26:03.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:03.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:03.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:03.006 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:03.007 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:03.009 [DEBUG] [Thread-127047] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:11.497 [DEBUG] [Thread-127049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:13.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:26:13.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:26:13.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-28T14:26:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 26, 5), 17.34, 31.04, 0.0, 12.11, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:26:13.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:26:05
2025-09-28T14:26:13.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:26:13.871 [DEBUG] [Thread-127050] [transport.py] [_log()] starting thread (client mode): 0x2e34ac80
2025-09-28T14:26:13.872 [DEBUG] [Thread-127050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:13.886 [DEBUG] [Thread-127050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:26:13.886 [INFO] [Thread-127050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:13.890 [DEBUG] [Thread-127050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] Compression: none
2025-09-28T14:26:13.891 [DEBUG] [Thread-127050] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:13.907 [DEBUG] [Thread-127050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:13.908 [DEBUG] [Thread-127050] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:13.908 [DEBUG] [Thread-127050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:26:13.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:26:13.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:13.910 [DEBUG] [Thread-127050] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:13.910 [DEBUG] [Thread-127050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:13.910 [DEBUG] [Thread-127050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:13.911 [DEBUG] [Thread-127050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:26:13.911 [DEBUG] [Thread-127050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:13.946 [INFO] [Thread-127050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:13.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:14.714 [DEBUG] [Thread-127050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:14.714 [DEBUG] [Thread-127050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:14.714 [DEBUG] [Thread-127050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:26:14.755 [DEBUG] [Thread-127050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:14.755 [DEBUG] [Thread-127050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:14.757 [DEBUG] [Thread-127050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:14.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:14.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:26:14.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:26:14.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:26:14.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:14.779 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:26:14.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:14.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517791 -999.00  +19.00   9.90     35   +3.20 1 1 1 1 1   888    0 15.15 -26.61 ----- 8.7 9.9 212.3 11.6 25.3 -27.1 24.2 -25.7 25.4 -26.0 26.6 -27.4
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517791
2025-09-28T14:26:14.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:26:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:26:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:26:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:26:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:26:14.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:26:05', tmtdew=17.34, humidity=31.04, cloud=0.0, wind=12.11, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:25:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:26:14.781 [DEBUG] [Thread-127050] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:14.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-28T14:26:14.872 [DEBUG] [Thread-127053] [transport.py] [_log()] starting thread (client mode): 0x2e3740a0
2025-09-28T14:26:14.872 [DEBUG] [Thread-127053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:14.886 [DEBUG] [Thread-127053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:26:14.886 [INFO] [Thread-127053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:26:14.894 [DEBUG] [Thread-127053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:14.894 [DEBUG] [Thread-127053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] Compression: none
2025-09-28T14:26:14.895 [DEBUG] [Thread-127053] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:14.950 [DEBUG] [Thread-127053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:14.951 [DEBUG] [Thread-127053] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:14.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:26:14.952 [DEBUG] [Thread-127053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:26:14.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:15.007 [DEBUG] [Thread-127053] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:15.007 [DEBUG] [Thread-127053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:15.007 [DEBUG] [Thread-127053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:15.007 [DEBUG] [Thread-127053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:26:15.007 [DEBUG] [Thread-127053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:15.026 [INFO] [Thread-127053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:15.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-28T14:26:15.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:15.145 [DEBUG] [Thread-127055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:15.980 [DEBUG] [Thread-127053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:15.981 [DEBUG] [Thread-127053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:16.028 [DEBUG] [Thread-127053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:16.028 [DEBUG] [Thread-127053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:16.037 [DEBUG] [Thread-127053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:16.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:16.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')
2025-09-28T14:26: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-28T14:26:16.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:16.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:16.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:16.072 [DEBUG] [Thread-127053] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:26.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:26:26.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:26:26.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:26:26.529 [DEBUG] [Thread-127056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:26.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 26, 5), 17.34, 31.04, 0.0, 12.11, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:26:26.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:26:05
2025-09-28T14:26:26.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:26:26.950 [DEBUG] [Thread-127057] [transport.py] [_log()] starting thread (client mode): 0x28705510
2025-09-28T14:26:26.950 [DEBUG] [Thread-127057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:26.972 [DEBUG] [Thread-127057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:26:26.972 [INFO] [Thread-127057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:26.975 [DEBUG] [Thread-127057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:26.976 [DEBUG] [Thread-127057] [transport.py] [_log()] Compression: none
2025-09-28T14:26:26.976 [DEBUG] [Thread-127057] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:26.990 [DEBUG] [Thread-127057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:26.991 [DEBUG] [Thread-127057] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:26.991 [DEBUG] [Thread-127057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:26:26.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:26:26.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:26.992 [DEBUG] [Thread-127057] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:26.992 [DEBUG] [Thread-127057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:26.992 [DEBUG] [Thread-127057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:26.992 [DEBUG] [Thread-127057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:26:26.992 [DEBUG] [Thread-127057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:27.001 [INFO] [Thread-127057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:27.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:27.725 [DEBUG] [Thread-127057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:27.725 [DEBUG] [Thread-127057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:27.725 [DEBUG] [Thread-127057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:26:27.766 [DEBUG] [Thread-127057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:27.766 [DEBUG] [Thread-127057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:27.768 [DEBUG] [Thread-127057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:27.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:27.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:26:27.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:26:27.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:26:27.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:27.785 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:26:27.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.517791 -999.00  +19.00   9.90     35   +3.20 1 1 1 1 1   888    0 15.15 -26.61 ----- 8.7 9.9 212.3 11.6 25.3 -27.1 24.2 -25.7 25.4 -26.0 26.6 -27.4
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.517791
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:26:27.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:26:05', tmtdew=17.34, humidity=31.04, cloud=0.0, wind=12.11, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:25:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:26:27.786 [DEBUG] [Thread-127057] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:27.859 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:26:27.872 [DEBUG] [Thread-127060] [transport.py] [_log()] starting thread (client mode): 0x2e349240
2025-09-28T14:26:27.872 [DEBUG] [Thread-127060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:27.889 [DEBUG] [Thread-127060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:26:27.889 [INFO] [Thread-127060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:26:27.896 [DEBUG] [Thread-127060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:27.897 [DEBUG] [Thread-127060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:27.898 [DEBUG] [Thread-127060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:27.898 [DEBUG] [Thread-127060] [transport.py] [_log()] Compression: none
2025-09-28T14:26:27.898 [DEBUG] [Thread-127060] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:27.959 [DEBUG] [Thread-127060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:27.959 [DEBUG] [Thread-127060] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:27.960 [DEBUG] [Thread-127060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:26:27.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:26:27.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:28.015 [DEBUG] [Thread-127060] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:28.015 [DEBUG] [Thread-127060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:28.015 [DEBUG] [Thread-127060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:28.016 [DEBUG] [Thread-127060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:26:28.016 [DEBUG] [Thread-127060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:28.036 [INFO] [Thread-127060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:28.036 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:26:28.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:29.022 [DEBUG] [Thread-127060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:29.022 [DEBUG] [Thread-127060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:29.070 [DEBUG] [Thread-127060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:29.070 [DEBUG] [Thread-127060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:29.080 [DEBUG] [Thread-127060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:29.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:29.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-28T14:26:29.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-28T14:26:29.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:29.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:29.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:29.115 [DEBUG] [Thread-127060] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:39.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:26:39.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:26:39.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-28T14:26:39.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 26, 5), 17.34, 31.04, 0.0, 12.11, 17.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:26:39.747 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:26:05
2025-09-28T14:26:39.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:26:40.007 [DEBUG] [Thread-127062] [transport.py] [_log()] starting thread (client mode): 0x2e374460
2025-09-28T14:26:40.007 [DEBUG] [Thread-127062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:40.026 [DEBUG] [Thread-127062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:26:40.027 [INFO] [Thread-127062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:26:40.028 [DEBUG] [Thread-127062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:40.028 [DEBUG] [Thread-127062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:26:40.028 [DEBUG] [Thread-127062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:40.028 [DEBUG] [Thread-127062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] Compression: none
2025-09-28T14:26:40.029 [DEBUG] [Thread-127062] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:40.046 [DEBUG] [Thread-127062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:40.046 [DEBUG] [Thread-127062] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:40.047 [DEBUG] [Thread-127062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:26:40.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:26:40.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:40.049 [DEBUG] [Thread-127062] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:40.049 [DEBUG] [Thread-127062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:40.049 [DEBUG] [Thread-127062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:40.049 [DEBUG] [Thread-127062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:26:40.049 [DEBUG] [Thread-127062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:40.064 [INFO] [Thread-127062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:40.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:40.686 [DEBUG] [Thread-127062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:40.687 [DEBUG] [Thread-127062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:40.687 [DEBUG] [Thread-127062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:26:40.727 [DEBUG] [Thread-127062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:40.727 [DEBUG] [Thread-127062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:40.729 [DEBUG] [Thread-127062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:40.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:40.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:26:40.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:26:40.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:26:40.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:40.749 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:26:40.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:40.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518139 -999.00  +19.00  10.77     35   +3.30 1 1 1 1 1   888    0 15.16 -28.40 ----- 11.2 10.8 261.1 14.0 25.4 -27.1 24.2 -28.7 25.5 -25.3 26.8 -27.6
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518139
2025-09-28T14:26:40.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:26:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:26:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:26:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:26:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:26:40.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:26:05', tmtdew=17.34, humidity=31.04, cloud=0.0, wind=12.11, temperature=17.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:26:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:26:40.751 [DEBUG] [Thread-127062] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:40.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-28T14:26:40.848 [DEBUG] [Thread-127065] [transport.py] [_log()] starting thread (client mode): 0x30ddee60
2025-09-28T14:26:40.848 [DEBUG] [Thread-127065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:40.869 [DEBUG] [Thread-127065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:26:40.869 [INFO] [Thread-127065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:40.877 [DEBUG] [Thread-127065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] Compression: none
2025-09-28T14:26:40.878 [DEBUG] [Thread-127065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:40.934 [DEBUG] [Thread-127065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:40.935 [DEBUG] [Thread-127065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:40.935 [DEBUG] [Thread-127065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:26:40.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:26:40.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:40.991 [DEBUG] [Thread-127065] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:40.991 [DEBUG] [Thread-127065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:40.991 [DEBUG] [Thread-127065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:40.991 [DEBUG] [Thread-127065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:26:40.991 [DEBUG] [Thread-127065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:41.014 [INFO] [Thread-127065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:41.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-28T14:26:41.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:41.566 [DEBUG] [Thread-127067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:26:41.984 [DEBUG] [Thread-127065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:41.985 [DEBUG] [Thread-127065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:42.032 [DEBUG] [Thread-127065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:42.033 [DEBUG] [Thread-127065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:42.042 [DEBUG] [Thread-127065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:42.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:42.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T14:26:42.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-28T14:26:42.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:42.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:42.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:42.077 [DEBUG] [Thread-127065] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:52.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:26:52.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:26:52.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-28T14:26:52.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 26, 37), 17.47, 30.87, 0.0, 12.71, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:26:52.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:26:37
2025-09-28T14:26:52.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:26:52.940 [DEBUG] [Thread-127068] [transport.py] [_log()] starting thread (client mode): 0x2e349000
2025-09-28T14:26:52.940 [DEBUG] [Thread-127068] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:52.960 [DEBUG] [Thread-127068] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:26:52.960 [INFO] [Thread-127068] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:52.963 [DEBUG] [Thread-127068] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] Compression: none
2025-09-28T14:26:52.964 [DEBUG] [Thread-127068] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:52.981 [DEBUG] [Thread-127068] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:52.982 [DEBUG] [Thread-127068] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:52.982 [DEBUG] [Thread-127068] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:26:52.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:26:52.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:52.984 [DEBUG] [Thread-127068] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:52.984 [DEBUG] [Thread-127068] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:52.984 [DEBUG] [Thread-127068] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:52.985 [DEBUG] [Thread-127068] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:26:52.985 [DEBUG] [Thread-127068] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:52.999 [INFO] [Thread-127068] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:52.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:53.764 [DEBUG] [Thread-127068] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:53.764 [DEBUG] [Thread-127068] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:53.765 [DEBUG] [Thread-127068] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:26:53.805 [DEBUG] [Thread-127068] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:53.806 [DEBUG] [Thread-127068] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:53.808 [DEBUG] [Thread-127068] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:53.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:53.815 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:26:53.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:26:53.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:26:53.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:53.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:26:53.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518139 -999.00  +19.00  10.77     35   +3.30 1 1 1 1 1   888    0 15.16 -28.40 ----- 11.2 10.8 261.1 14.0 25.4 -27.1 24.2 -28.7 25.5 -25.3 26.8 -27.6
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:26:53.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518139
2025-09-28T14:26:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:26:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:26:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:26:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:26:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:26:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:26:37', tmtdew=17.47, humidity=30.87, cloud=0.0, wind=12.71, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:26:07.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:26:53.831 [DEBUG] [Thread-127068] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:53.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-28T14:26:53.928 [DEBUG] [Thread-127071] [transport.py] [_log()] starting thread (client mode): 0x2e34b5e0
2025-09-28T14:26:53.928 [DEBUG] [Thread-127071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:26:53.944 [DEBUG] [Thread-127071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:26:53.945 [INFO] [Thread-127071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:26:53.952 [DEBUG] [Thread-127071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:26:53.952 [DEBUG] [Thread-127071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] client lang: <none>
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] server lang: <none>
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] kex follows: False
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] Compression: none
2025-09-28T14:26:53.953 [DEBUG] [Thread-127071] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:26:54.011 [DEBUG] [Thread-127071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:26:54.011 [DEBUG] [Thread-127071] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:26:54.012 [DEBUG] [Thread-127071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:26:54.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:26:54.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:26:54.067 [DEBUG] [Thread-127071] [transport.py] [_log()] userauth is OK
2025-09-28T14:26:54.067 [DEBUG] [Thread-127071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:26:54.067 [DEBUG] [Thread-127071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:26:54.067 [DEBUG] [Thread-127071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:26:54.068 [DEBUG] [Thread-127071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:26:54.087 [INFO] [Thread-127071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:26:54.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-28T14:26:54.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:26:55.088 [DEBUG] [Thread-127071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:26:55.089 [DEBUG] [Thread-127071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:26:55.136 [DEBUG] [Thread-127071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:26:55.136 [DEBUG] [Thread-127071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:26:55.145 [DEBUG] [Thread-127071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:26:55.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:26:55.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-28T14:26:55.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-28T14:26:55.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:26:55.171 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:26:55.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:26:55.179 [DEBUG] [Thread-127071] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:26:56.610 [DEBUG] [Thread-127073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:03.149 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:03.150 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:05.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:27:05.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:27:05.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-28T14:27:05.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 26, 37), 17.47, 30.87, 0.0, 12.71, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:27:05.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:26:37
2025-09-28T14:27:05.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:27:06.040 [DEBUG] [Thread-127074] [transport.py] [_log()] starting thread (client mode): 0x2e34b850
2025-09-28T14:27:06.040 [DEBUG] [Thread-127074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:06.061 [DEBUG] [Thread-127074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:27:06.061 [INFO] [Thread-127074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:06.065 [DEBUG] [Thread-127074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:06.066 [DEBUG] [Thread-127074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:06.067 [DEBUG] [Thread-127074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:06.067 [DEBUG] [Thread-127074] [transport.py] [_log()] Compression: none
2025-09-28T14:27:06.067 [DEBUG] [Thread-127074] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:06.086 [DEBUG] [Thread-127074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:06.086 [DEBUG] [Thread-127074] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:06.087 [DEBUG] [Thread-127074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:27:06.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:27:06.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:06.089 [DEBUG] [Thread-127074] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:06.089 [DEBUG] [Thread-127074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:06.089 [DEBUG] [Thread-127074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:06.089 [DEBUG] [Thread-127074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:27:06.089 [DEBUG] [Thread-127074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:06.107 [INFO] [Thread-127074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:06.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:06.723 [DEBUG] [Thread-127074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:06.723 [DEBUG] [Thread-127074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:06.724 [DEBUG] [Thread-127074] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:27:06.764 [DEBUG] [Thread-127074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:06.764 [DEBUG] [Thread-127074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:06.767 [DEBUG] [Thread-127074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:06.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:06.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:27:06.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:27:06.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:27:06.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:06.782 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:27:06.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:06.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518486 -999.00  +18.70  10.03     34   +2.90 1 1 1 1 1   888    0 15.14 -32.06 ----- 8.8 10.0 247.6 17.2 25.4 -27.3 24.4 -26.0 25.5 -26.7 26.6 -28.3
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518486
2025-09-28T14:27:06.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:27:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:27:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:27:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:27:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:27:06.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:26:37', tmtdew=17.47, humidity=30.87, cloud=0.0, wind=12.71, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:26:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:27:06.785 [DEBUG] [Thread-127074] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:06.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-28T14:27:06.894 [DEBUG] [Thread-127077] [transport.py] [_log()] starting thread (client mode): 0x2e349c90
2025-09-28T14:27:06.894 [DEBUG] [Thread-127077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:06.909 [DEBUG] [Thread-127077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:27:06.909 [INFO] [Thread-127077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:06.917 [DEBUG] [Thread-127077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:06.918 [DEBUG] [Thread-127077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:06.919 [DEBUG] [Thread-127077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:06.919 [DEBUG] [Thread-127077] [transport.py] [_log()] Compression: none
2025-09-28T14:27:06.919 [DEBUG] [Thread-127077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:06.975 [DEBUG] [Thread-127077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:06.976 [DEBUG] [Thread-127077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:06.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:27:06.977 [DEBUG] [Thread-127077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:27:06.978 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:07.031 [DEBUG] [Thread-127077] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:07.032 [DEBUG] [Thread-127077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:07.032 [DEBUG] [Thread-127077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:07.032 [DEBUG] [Thread-127077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:27:07.032 [DEBUG] [Thread-127077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:07.054 [INFO] [Thread-127077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:07.055 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:27:07.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:08.034 [DEBUG] [Thread-127077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:08.034 [DEBUG] [Thread-127077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:08.082 [DEBUG] [Thread-127077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:08.082 [DEBUG] [Thread-127077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:08.091 [DEBUG] [Thread-127077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:08.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:08.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-28T14:27:08.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-28T14:27:08.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:08.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:08.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:08.125 [DEBUG] [Thread-127077] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:11.653 [DEBUG] [Thread-127079 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:15.189 [DEBUG] [Thread-127080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:18.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:27:18.128 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:27:18.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-28T14:27:18.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 27, 9), 17.37, 31.08, 0.0, 15.51, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:27:18.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:27:09
2025-09-28T14:27:18.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:27:18.978 [DEBUG] [Thread-127081] [transport.py] [_log()] starting thread (client mode): 0x2e38ce80
2025-09-28T14:27:18.978 [DEBUG] [Thread-127081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:19.000 [DEBUG] [Thread-127081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:27:19.001 [INFO] [Thread-127081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:27:19.003 [DEBUG] [Thread-127081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] Compression: none
2025-09-28T14:27:19.004 [DEBUG] [Thread-127081] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:19.022 [DEBUG] [Thread-127081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:19.023 [DEBUG] [Thread-127081] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:19.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:27:19.023 [DEBUG] [Thread-127081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:27:19.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:19.026 [DEBUG] [Thread-127081] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:19.026 [DEBUG] [Thread-127081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:19.026 [DEBUG] [Thread-127081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:19.026 [DEBUG] [Thread-127081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:27:19.026 [DEBUG] [Thread-127081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:19.046 [INFO] [Thread-127081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:19.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:19.817 [DEBUG] [Thread-127081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:19.817 [DEBUG] [Thread-127081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:19.817 [DEBUG] [Thread-127081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:27:19.859 [DEBUG] [Thread-127081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:19.859 [DEBUG] [Thread-127081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:19.861 [DEBUG] [Thread-127081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:19.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:19.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:27:19.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:27:19.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:27:19.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:19.878 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:27:19.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518486 -999.00  +18.70  10.03     34   +2.90 1 1 1 1 1   888    0 15.14 -32.06 ----- 8.8 10.0 247.6 17.2 25.4 -27.3 24.4 -26.0 25.5 -26.7 26.6 -28.3
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:27:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518486
2025-09-28T14:27:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:27:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:27:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:27:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:27:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:27:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:27:09', tmtdew=17.37, humidity=31.08, cloud=0.0, wind=15.51, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:26:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:27:19.881 [DEBUG] [Thread-127081] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:19.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-28T14:27:19.975 [DEBUG] [Thread-127084] [transport.py] [_log()] starting thread (client mode): 0x2b9cd0f0
2025-09-28T14:27:19.975 [DEBUG] [Thread-127084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:19.990 [DEBUG] [Thread-127084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:27:19.990 [INFO] [Thread-127084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:27:19.997 [DEBUG] [Thread-127084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:19.998 [DEBUG] [Thread-127084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] Compression: none
2025-09-28T14:27:19.999 [DEBUG] [Thread-127084] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:20.055 [DEBUG] [Thread-127084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:20.055 [DEBUG] [Thread-127084] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:20.056 [DEBUG] [Thread-127084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:27:20.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:27:20.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:20.111 [DEBUG] [Thread-127084] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:20.112 [DEBUG] [Thread-127084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:20.112 [DEBUG] [Thread-127084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:20.112 [DEBUG] [Thread-127084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:27:20.112 [DEBUG] [Thread-127084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:20.131 [INFO] [Thread-127084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:20.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-28T14:27:20.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:21.137 [DEBUG] [Thread-127084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:21.138 [DEBUG] [Thread-127084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:21.185 [DEBUG] [Thread-127084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:21.185 [DEBUG] [Thread-127084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:21.194 [DEBUG] [Thread-127084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:21.202 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:21.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-28T14:27:21.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-28T14:27:21.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:21.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:21.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:21.228 [DEBUG] [Thread-127084] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:26.698 [DEBUG] [Thread-127086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:31.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:27:31.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:27:31.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:27:31.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 27, 9), 17.37, 31.08, 0.0, 15.51, 17.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:27:31.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:27:09
2025-09-28T14:27:31.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:27:32.081 [DEBUG] [Thread-127087] [transport.py] [_log()] starting thread (client mode): 0x2e375630
2025-09-28T14:27:32.081 [DEBUG] [Thread-127087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:32.102 [DEBUG] [Thread-127087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:27:32.102 [INFO] [Thread-127087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:32.103 [DEBUG] [Thread-127087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:32.104 [DEBUG] [Thread-127087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:32.104 [DEBUG] [Thread-127087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:32.104 [DEBUG] [Thread-127087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:32.104 [DEBUG] [Thread-127087] [transport.py] [_log()] Compression: none
2025-09-28T14:27:32.104 [DEBUG] [Thread-127087] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:32.111 [DEBUG] [Thread-127087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:32.112 [DEBUG] [Thread-127087] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:32.112 [DEBUG] [Thread-127087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:27:32.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:27:32.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:32.114 [DEBUG] [Thread-127087] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:32.114 [DEBUG] [Thread-127087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:32.114 [DEBUG] [Thread-127087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:32.114 [DEBUG] [Thread-127087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:27:32.114 [DEBUG] [Thread-127087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:32.137 [INFO] [Thread-127087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:32.137 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:32.905 [DEBUG] [Thread-127087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:32.905 [DEBUG] [Thread-127087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:32.905 [DEBUG] [Thread-127087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:27:32.946 [DEBUG] [Thread-127087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:32.946 [DEBUG] [Thread-127087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:32.949 [DEBUG] [Thread-127087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:32.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:32.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:27:32.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:27:32.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:27:32.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:32.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:27:32.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:32.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:32.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:27:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518486 -999.00  +18.70  10.03     34   +2.90 1 1 1 1 1   888    0 15.14 -32.06 ----- 8.8 10.0 247.6 17.2 25.4 -27.3 24.4 -26.0 25.5 -26.7 26.6 -28.3
2025-09-28T14:27:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:27:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:27:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518486
2025-09-28T14:27:32.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:27:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:27:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:27:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:27:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:27:32.971 [DEBUG] [Thread-127087] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:32.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:27:09', tmtdew=17.37, humidity=31.08, cloud=0.0, wind=15.51, temperature=17.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:26:37.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:27:33.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-28T14:27:33.066 [DEBUG] [Thread-127090] [transport.py] [_log()] starting thread (client mode): 0x2e38dd50
2025-09-28T14:27:33.066 [DEBUG] [Thread-127090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:33.081 [DEBUG] [Thread-127090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:27:33.082 [INFO] [Thread-127090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:27:33.089 [DEBUG] [Thread-127090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:33.089 [DEBUG] [Thread-127090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] Compression: none
2025-09-28T14:27:33.090 [DEBUG] [Thread-127090] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:33.147 [DEBUG] [Thread-127090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:33.147 [DEBUG] [Thread-127090] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:33.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:27:33.148 [DEBUG] [Thread-127090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:27:33.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:33.204 [DEBUG] [Thread-127090] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:33.204 [DEBUG] [Thread-127090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:33.204 [DEBUG] [Thread-127090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:33.204 [DEBUG] [Thread-127090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:27:33.204 [DEBUG] [Thread-127090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:33.223 [INFO] [Thread-127090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:33.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-28T14:27:33.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:34.175 [DEBUG] [Thread-127090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:34.175 [DEBUG] [Thread-127090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:34.225 [DEBUG] [Thread-127090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:34.226 [DEBUG] [Thread-127090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:34.235 [DEBUG] [Thread-127090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:34.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:34.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-28T14:27:34.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-28T14:27:34.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:34.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:34.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:34.271 [DEBUG] [Thread-127090] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:41.749 [DEBUG] [Thread-127092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:44.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:27:44.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:27:44.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-28T14:27:44.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 27, 41), 17.89, 29.99, 0.0, 16.09, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:27:44.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:27:41
2025-09-28T14:27:44.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:27:45.133 [DEBUG] [Thread-127093] [transport.py] [_log()] starting thread (client mode): 0x2b9ced10
2025-09-28T14:27:45.133 [DEBUG] [Thread-127093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:45.153 [DEBUG] [Thread-127093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:27:45.153 [INFO] [Thread-127093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:27:45.156 [DEBUG] [Thread-127093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] Compression: none
2025-09-28T14:27:45.157 [DEBUG] [Thread-127093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:45.174 [DEBUG] [Thread-127093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:45.175 [DEBUG] [Thread-127093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:45.175 [DEBUG] [Thread-127093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:27:45.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:27:45.176 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:45.177 [DEBUG] [Thread-127093] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:45.177 [DEBUG] [Thread-127093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:45.177 [DEBUG] [Thread-127093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:45.177 [DEBUG] [Thread-127093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:27:45.178 [DEBUG] [Thread-127093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:45.195 [INFO] [Thread-127093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:45.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:45.787 [DEBUG] [Thread-127093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:45.787 [DEBUG] [Thread-127093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:45.787 [DEBUG] [Thread-127093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:27:45.828 [DEBUG] [Thread-127093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:45.829 [DEBUG] [Thread-127093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:45.831 [DEBUG] [Thread-127093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:45.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:45.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:27:45.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:27:45.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:27:45.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:45.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:27:45.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:45.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:45.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:27:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518833 -999.00  +18.70  15.21     35   +3.00 1 1 1 1 1   888    0 15.03 -31.60 ----- 15.3 15.2 252.0 18.2 25.4 -26.9 24.4 -26.6 25.6 -25.0 26.6 -28.4
2025-09-28T14:27:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:27:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:27:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518833
2025-09-28T14:27:45.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:27:45.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:27:45.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:27:45.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:27:45.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:27:45.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:27:41', tmtdew=17.89, humidity=29.99, cloud=0.0, wind=16.09, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:27:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:27:45.854 [DEBUG] [Thread-127093] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:45.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-28T14:27:45.951 [DEBUG] [Thread-127096] [transport.py] [_log()] starting thread (client mode): 0x2e3fbc70
2025-09-28T14:27:45.951 [DEBUG] [Thread-127096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:45.966 [DEBUG] [Thread-127096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:27:45.966 [INFO] [Thread-127096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] Compression: none
2025-09-28T14:27:45.974 [DEBUG] [Thread-127096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:46.030 [DEBUG] [Thread-127096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:46.031 [DEBUG] [Thread-127096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:46.031 [DEBUG] [Thread-127096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:27:46.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:27:46.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:46.088 [DEBUG] [Thread-127096] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:46.088 [DEBUG] [Thread-127096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:46.088 [DEBUG] [Thread-127096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:46.088 [DEBUG] [Thread-127096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:27:46.088 [DEBUG] [Thread-127096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:46.107 [INFO] [Thread-127096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:46.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-28T14:27:46.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:47.138 [DEBUG] [Thread-127096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:47.138 [DEBUG] [Thread-127096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:47.186 [DEBUG] [Thread-127096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:47.186 [DEBUG] [Thread-127096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:47.195 [DEBUG] [Thread-127096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:47.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:47.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-28T14:27:47.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-28T14:27:47.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:47.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:47.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:47.230 [DEBUG] [Thread-127096] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:56.778 [DEBUG] [Thread-127098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:27:57.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:27:57.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:27:57.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:27:57.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 27, 41), 17.89, 29.99, 0.0, 16.09, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:27:57.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:27:41
2025-09-28T14:27:57.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:27:58.086 [DEBUG] [Thread-127099] [transport.py] [_log()] starting thread (client mode): 0x2e34bdc0
2025-09-28T14:27:58.086 [DEBUG] [Thread-127099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:58.107 [DEBUG] [Thread-127099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:27:58.107 [INFO] [Thread-127099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] Compression: none
2025-09-28T14:27:58.110 [DEBUG] [Thread-127099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:58.126 [DEBUG] [Thread-127099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:58.127 [DEBUG] [Thread-127099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:58.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:27:58.128 [DEBUG] [Thread-127099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:27:58.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:58.130 [DEBUG] [Thread-127099] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:58.130 [DEBUG] [Thread-127099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:58.130 [DEBUG] [Thread-127099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:58.130 [DEBUG] [Thread-127099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:27:58.130 [DEBUG] [Thread-127099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:58.148 [INFO] [Thread-127099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:58.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:27:58.887 [DEBUG] [Thread-127099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:27:58.888 [DEBUG] [Thread-127099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:27:58.888 [DEBUG] [Thread-127099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:27:58.928 [DEBUG] [Thread-127099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:27:58.928 [DEBUG] [Thread-127099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:27:58.931 [DEBUG] [Thread-127099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:27:58.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:27:58.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:27:58.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:27:58.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:27:58.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:27:58.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:27:58.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.518833 -999.00  +18.70  15.21     35   +3.00 1 1 1 1 1   888    0 15.03 -31.60 ----- 15.3 15.2 252.0 18.2 25.4 -26.9 24.4 -26.6 25.6 -25.0 26.6 -28.4
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:27:58.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.518833
2025-09-28T14:27:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:27:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:27:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:27:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:27:58.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:27:58.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:27:41', tmtdew=17.89, humidity=29.99, cloud=0.0, wind=16.09, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:27:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:27:58.956 [DEBUG] [Thread-127099] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:27:59.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-28T14:27:59.054 [DEBUG] [Thread-127102] [transport.py] [_log()] starting thread (client mode): 0x2e38e1a0
2025-09-28T14:27:59.054 [DEBUG] [Thread-127102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:27:59.068 [DEBUG] [Thread-127102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:27:59.068 [INFO] [Thread-127102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:27:59.075 [DEBUG] [Thread-127102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] client lang: <none>
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] server lang: <none>
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] kex follows: False
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] Compression: none
2025-09-28T14:27:59.076 [DEBUG] [Thread-127102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:27:59.131 [DEBUG] [Thread-127102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:27:59.132 [DEBUG] [Thread-127102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:27:59.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:27:59.133 [DEBUG] [Thread-127102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:27:59.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:27:59.188 [DEBUG] [Thread-127102] [transport.py] [_log()] userauth is OK
2025-09-28T14:27:59.188 [DEBUG] [Thread-127102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:27:59.188 [DEBUG] [Thread-127102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:27:59.188 [DEBUG] [Thread-127102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:27:59.188 [DEBUG] [Thread-127102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:27:59.207 [INFO] [Thread-127102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:27:59.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-28T14:27:59.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:00.194 [DEBUG] [Thread-127102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:00.194 [DEBUG] [Thread-127102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:00.249 [DEBUG] [Thread-127102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:00.249 [DEBUG] [Thread-127102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:00.258 [DEBUG] [Thread-127102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:00.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:00.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-28T14:28:00.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-28T14:28:00.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:00.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:00.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:00.292 [DEBUG] [Thread-127102] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:03.292 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:03.294 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:10.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:28:10.295 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:28:10.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:28:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 27, 41), 17.89, 29.99, 0.0, 16.09, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:28:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:27:41
2025-09-28T14:28:11.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:28:11.161 [DEBUG] [Thread-127104] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd60
2025-09-28T14:28:11.161 [DEBUG] [Thread-127104] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:11.180 [DEBUG] [Thread-127104] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:28:11.180 [INFO] [Thread-127104] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:11.183 [DEBUG] [Thread-127104] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:11.184 [DEBUG] [Thread-127104] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:11.184 [DEBUG] [Thread-127104] [transport.py] [_log()] Compression: none
2025-09-28T14:28:11.184 [DEBUG] [Thread-127104] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:11.200 [DEBUG] [Thread-127104] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:11.200 [DEBUG] [Thread-127104] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:11.200 [DEBUG] [Thread-127104] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:28:11.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:28:11.200 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:11.201 [DEBUG] [Thread-127104] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:11.201 [DEBUG] [Thread-127104] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:11.201 [DEBUG] [Thread-127104] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:11.201 [DEBUG] [Thread-127104] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:28:11.201 [DEBUG] [Thread-127104] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:11.213 [INFO] [Thread-127104] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:11.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:11.808 [DEBUG] [Thread-127104] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:11.808 [DEBUG] [Thread-127104] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:11.809 [DEBUG] [Thread-127104] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:28:11.834 [DEBUG] [Thread-127106 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:11.849 [DEBUG] [Thread-127104] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:11.849 [DEBUG] [Thread-127104] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:11.851 [DEBUG] [Thread-127104] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:11.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:11.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:28:11.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:28:11.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:28:11.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:11.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:28:11.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:11.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:11.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:28:11.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.519180 -999.00  +18.90  16.48     34   +2.90 1 1 1 1 1   888    0 14.91 -34.38 ----- 16.4 16.5 192.2 24.1 25.3 -27.5 24.5 -25.8 25.6 -25.6 26.6 -26.8
2025-09-28T14:28:11.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:28:11.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:28:11.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.519180
2025-09-28T14:28:11.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:28:11.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:28:11.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:28:11.875 [DEBUG] [Thread-127104] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:28:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:28:11.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:27:41', tmtdew=17.89, humidity=29.99, cloud=0.0, wind=16.09, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:27:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:28:11.953 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:28:11.965 [DEBUG] [Thread-127108] [transport.py] [_log()] starting thread (client mode): 0x2e38d7b0
2025-09-28T14:28:11.965 [DEBUG] [Thread-127108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:11.981 [DEBUG] [Thread-127108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:28:11.981 [INFO] [Thread-127108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:11.989 [DEBUG] [Thread-127108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:11.990 [DEBUG] [Thread-127108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:11.990 [DEBUG] [Thread-127108] [transport.py] [_log()] Compression: none
2025-09-28T14:28:11.990 [DEBUG] [Thread-127108] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:12.052 [DEBUG] [Thread-127108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:12.053 [DEBUG] [Thread-127108] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:12.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:28:12.054 [DEBUG] [Thread-127108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:28:12.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:12.109 [DEBUG] [Thread-127108] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:12.109 [DEBUG] [Thread-127108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:12.109 [DEBUG] [Thread-127108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:12.109 [DEBUG] [Thread-127108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:28:12.109 [DEBUG] [Thread-127108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:12.127 [INFO] [Thread-127108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:12.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-28T14:28:12.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:13.103 [DEBUG] [Thread-127108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:13.103 [DEBUG] [Thread-127108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:13.154 [DEBUG] [Thread-127108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:13.154 [DEBUG] [Thread-127108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:13.168 [DEBUG] [Thread-127108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:13.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:13.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-28T14:28:13.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-28T14:28:13.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:13.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:13.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:13.202 [DEBUG] [Thread-127108] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:15.240 [DEBUG] [Thread-127110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:23.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:28:23.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:28:23.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-28T14:28:23.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 28, 13), 18.05, 29.66, 0.0, 17.35, 18.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:28:23.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:28:13
2025-09-28T14:28:23.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:28:24.062 [DEBUG] [Thread-127111] [transport.py] [_log()] starting thread (client mode): 0x2b94d150
2025-09-28T14:28:24.062 [DEBUG] [Thread-127111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:24.082 [DEBUG] [Thread-127111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:28:24.082 [INFO] [Thread-127111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:28:24.085 [DEBUG] [Thread-127111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:24.086 [DEBUG] [Thread-127111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] Compression: none
2025-09-28T14:28:24.087 [DEBUG] [Thread-127111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:24.102 [DEBUG] [Thread-127111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:24.103 [DEBUG] [Thread-127111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:24.103 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:28:24.104 [DEBUG] [Thread-127111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:28:24.104 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:24.105 [DEBUG] [Thread-127111] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:24.106 [DEBUG] [Thread-127111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:24.106 [DEBUG] [Thread-127111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:24.106 [DEBUG] [Thread-127111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:28:24.106 [DEBUG] [Thread-127111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:24.130 [INFO] [Thread-127111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:24.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:24.896 [DEBUG] [Thread-127111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:24.896 [DEBUG] [Thread-127111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:24.896 [DEBUG] [Thread-127111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:28:24.937 [DEBUG] [Thread-127111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:24.937 [DEBUG] [Thread-127111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:24.940 [DEBUG] [Thread-127111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:24.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:24.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:28:24.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:28:24.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:28:24.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:24.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:28:24.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:24.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.519180 -999.00  +18.90  16.48     34   +2.90 1 1 1 1 1   888    0 14.91 -34.38 ----- 16.4 16.5 192.2 24.1 25.3 -27.5 24.5 -25.8 25.6 -25.6 26.6 -26.8
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.519180
2025-09-28T14:28:24.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:28:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:28:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:28:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:28:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:28:24.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:28:13', tmtdew=18.05, humidity=29.66, cloud=0.0, wind=17.35, temperature=18.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:27:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:28:24.963 [DEBUG] [Thread-127111] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:25.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:28:25.057 [DEBUG] [Thread-127114] [transport.py] [_log()] starting thread (client mode): 0x2b9cd0f0
2025-09-28T14:28:25.057 [DEBUG] [Thread-127114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:25.072 [DEBUG] [Thread-127114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:28:25.072 [INFO] [Thread-127114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:28:25.080 [DEBUG] [Thread-127114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:25.080 [DEBUG] [Thread-127114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:28:25.080 [DEBUG] [Thread-127114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:25.080 [DEBUG] [Thread-127114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] Compression: none
2025-09-28T14:28:25.081 [DEBUG] [Thread-127114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:25.136 [DEBUG] [Thread-127114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:25.136 [DEBUG] [Thread-127114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:25.137 [DEBUG] [Thread-127114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:28:25.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:28:25.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:25.192 [DEBUG] [Thread-127114] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:25.192 [DEBUG] [Thread-127114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:25.193 [DEBUG] [Thread-127114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:25.193 [DEBUG] [Thread-127114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:28:25.193 [DEBUG] [Thread-127114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:25.211 [INFO] [Thread-127114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:25.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-28T14:28:25.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:26.268 [DEBUG] [Thread-127114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:26.269 [DEBUG] [Thread-127114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:26.316 [DEBUG] [Thread-127114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:26.316 [DEBUG] [Thread-127114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:26.325 [DEBUG] [Thread-127114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:26.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:26.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-28T14:28:26.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-28T14:28:26.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:26.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:26.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:26.360 [DEBUG] [Thread-127114] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:26.861 [DEBUG] [Thread-127116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:36.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:28:36.361 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:28:36.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-28T14:28:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 28, 13), 18.05, 29.66, 0.0, 17.35, 18.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:28:36.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:28:13
2025-09-28T14:28:37.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:28:37.205 [DEBUG] [Thread-127117] [transport.py] [_log()] starting thread (client mode): 0x2e38e3e0
2025-09-28T14:28:37.206 [DEBUG] [Thread-127117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:37.224 [DEBUG] [Thread-127117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:28:37.224 [INFO] [Thread-127117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] Compression: none
2025-09-28T14:28:37.228 [DEBUG] [Thread-127117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:37.242 [DEBUG] [Thread-127117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:37.242 [DEBUG] [Thread-127117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:37.243 [DEBUG] [Thread-127117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:28:37.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:28:37.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:37.245 [DEBUG] [Thread-127117] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:37.245 [DEBUG] [Thread-127117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:37.245 [DEBUG] [Thread-127117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:37.245 [DEBUG] [Thread-127117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:28:37.245 [DEBUG] [Thread-127117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:37.269 [INFO] [Thread-127117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:37.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:38.029 [DEBUG] [Thread-127117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:38.030 [DEBUG] [Thread-127117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:38.030 [DEBUG] [Thread-127117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:28:38.070 [DEBUG] [Thread-127117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:38.070 [DEBUG] [Thread-127117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:38.073 [DEBUG] [Thread-127117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:38.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:38.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:28:38.087 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:28:38.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:28:38.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:38.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:28:38.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:38.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:28:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.519180 -999.00  +18.90  16.48     34   +2.90 1 1 1 1 1   888    0 14.91 -34.38 ----- 16.4 16.5 192.2 24.1 25.3 -27.5 24.5 -25.8 25.6 -25.6 26.6 -26.8
2025-09-28T14:28:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:28:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:28:38.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.519180
2025-09-28T14:28:38.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:28:38.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:28:38.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:28:38.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:28:38.097 [DEBUG] [Thread-127117] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:38.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:28:38.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:28:13', tmtdew=18.05, humidity=29.66, cloud=0.0, wind=17.35, temperature=18.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:27:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:28:38.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-28T14:28:38.195 [DEBUG] [Thread-127120] [transport.py] [_log()] starting thread (client mode): 0x2e34b730
2025-09-28T14:28:38.195 [DEBUG] [Thread-127120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:38.209 [DEBUG] [Thread-127120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:28:38.209 [INFO] [Thread-127120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:28:38.217 [DEBUG] [Thread-127120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:38.217 [DEBUG] [Thread-127120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:28:38.217 [DEBUG] [Thread-127120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:38.217 [DEBUG] [Thread-127120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] Compression: none
2025-09-28T14:28:38.218 [DEBUG] [Thread-127120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:38.277 [DEBUG] [Thread-127120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:38.278 [DEBUG] [Thread-127120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:38.278 [DEBUG] [Thread-127120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:28:38.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:28:38.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:38.332 [DEBUG] [Thread-127120] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:38.333 [DEBUG] [Thread-127120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:38.333 [DEBUG] [Thread-127120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:38.333 [DEBUG] [Thread-127120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:28:38.333 [DEBUG] [Thread-127120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:38.352 [INFO] [Thread-127120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:38.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-28T14:28:38.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:39.300 [DEBUG] [Thread-127120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:39.300 [DEBUG] [Thread-127120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:39.348 [DEBUG] [Thread-127120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:39.348 [DEBUG] [Thread-127120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:39.357 [DEBUG] [Thread-127120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:39.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:39.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-28T14:28:39.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-28T14:28:39.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:39.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:39.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:39.392 [DEBUG] [Thread-127120] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:41.897 [DEBUG] [Thread-127122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:28:49.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:28:49.395 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:28:49.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:28:49.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 28, 45), 18.45, 28.97, 0.0, 19.3, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:28:49.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:28:45
2025-09-28T14:28:50.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:28:50.233 [DEBUG] [Thread-127123] [transport.py] [_log()] starting thread (client mode): 0x2e38fee0
2025-09-28T14:28:50.233 [DEBUG] [Thread-127123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:50.257 [DEBUG] [Thread-127123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:28:50.257 [INFO] [Thread-127123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] Compression: none
2025-09-28T14:28:50.261 [DEBUG] [Thread-127123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:50.279 [DEBUG] [Thread-127123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:50.279 [DEBUG] [Thread-127123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:50.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:28:50.280 [DEBUG] [Thread-127123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:28:50.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:50.282 [DEBUG] [Thread-127123] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:50.282 [DEBUG] [Thread-127123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:50.283 [DEBUG] [Thread-127123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:50.283 [DEBUG] [Thread-127123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:28:50.283 [DEBUG] [Thread-127123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:50.308 [INFO] [Thread-127123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:50.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:50.928 [DEBUG] [Thread-127123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:50.929 [DEBUG] [Thread-127123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:50.929 [DEBUG] [Thread-127123] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:28:50.970 [DEBUG] [Thread-127123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:50.970 [DEBUG] [Thread-127123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:50.973 [DEBUG] [Thread-127123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:50.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:50.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:28:50.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:28:50.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:28:50.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:50.993 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:28:50.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:50.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.519875 -999.00  +19.50   9.78     33   +3.10 1 1 1 1 1   888    0 15.09 -33.10 ----- 8.2 9.8 249.6 19.7 25.4 -26.6 24.5 -26.4 25.6 -25.9 26.6 -27.7
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.519875
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:28:50.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:28:45', tmtdew=18.45, humidity=28.97, cloud=0.0, wind=19.3, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:28:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:28:50.995 [DEBUG] [Thread-127123] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:51.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-28T14:28:51.079 [DEBUG] [Thread-127126] [transport.py] [_log()] starting thread (client mode): 0x2e38d7b0
2025-09-28T14:28:51.079 [DEBUG] [Thread-127126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:28:51.094 [DEBUG] [Thread-127126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:28:51.094 [INFO] [Thread-127126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:28:51.101 [DEBUG] [Thread-127126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:28:51.101 [DEBUG] [Thread-127126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] client lang: <none>
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] server lang: <none>
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] kex follows: False
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] Compression: none
2025-09-28T14:28:51.102 [DEBUG] [Thread-127126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:28:51.159 [DEBUG] [Thread-127126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:28:51.159 [DEBUG] [Thread-127126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:28:51.159 [DEBUG] [Thread-127126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:28:51.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:28:51.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:28:51.217 [DEBUG] [Thread-127126] [transport.py] [_log()] userauth is OK
2025-09-28T14:28:51.217 [DEBUG] [Thread-127126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:28:51.217 [DEBUG] [Thread-127126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:28:51.217 [DEBUG] [Thread-127126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:28:51.217 [DEBUG] [Thread-127126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:28:51.231 [INFO] [Thread-127126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:28:51.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-28T14:28:51.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:28:52.257 [DEBUG] [Thread-127126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:28:52.257 [DEBUG] [Thread-127126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:28:52.305 [DEBUG] [Thread-127126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:28:52.305 [DEBUG] [Thread-127126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:28:52.313 [DEBUG] [Thread-127126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:28:52.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:28:52.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T14:28:52.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-28T14:28:52.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:28:52.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:28:52.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:28:52.344 [DEBUG] [Thread-127126] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:28:56.928 [DEBUG] [Thread-127128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:02.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:29:02.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:29:02.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-28T14:29:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 28, 45), 18.45, 28.97, 0.0, 19.3, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:29:02.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:28:45
2025-09-28T14:29:03.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:29:03.221 [DEBUG] [Thread-127129] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-28T14:29:03.221 [DEBUG] [Thread-127129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:03.241 [DEBUG] [Thread-127129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:29:03.241 [INFO] [Thread-127129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:03.245 [DEBUG] [Thread-127129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] Compression: none
2025-09-28T14:29:03.246 [DEBUG] [Thread-127129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:03.264 [DEBUG] [Thread-127129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:03.264 [DEBUG] [Thread-127129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:03.265 [DEBUG] [Thread-127129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:29:03.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:29:03.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:03.267 [DEBUG] [Thread-127129] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:03.267 [DEBUG] [Thread-127129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:03.267 [DEBUG] [Thread-127129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:03.267 [DEBUG] [Thread-127129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:29:03.268 [DEBUG] [Thread-127129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:03.291 [INFO] [Thread-127129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:03.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:03.435 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:03.436 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:04.056 [DEBUG] [Thread-127129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:04.056 [DEBUG] [Thread-127129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:04.056 [DEBUG] [Thread-127129] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:29:04.097 [DEBUG] [Thread-127129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:04.097 [DEBUG] [Thread-127129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:04.100 [DEBUG] [Thread-127129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:04.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:04.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:29:04.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:29:04.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:29:04.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:04.121 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:29:04.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.519875 -999.00  +19.50   9.78     33   +3.10 1 1 1 1 1   888    0 15.09 -33.10 ----- 8.2 9.8 249.6 19.7 25.4 -26.6 24.5 -26.4 25.6 -25.9 26.6 -27.7
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:29:04.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.519875
2025-09-28T14:29:04.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:29:04.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:29:04.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:29:04.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:29:04.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:29:04.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:28:45', tmtdew=18.45, humidity=28.97, cloud=0.0, wind=19.3, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:28:37.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:29:04.124 [DEBUG] [Thread-127129] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:04.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-28T14:29:04.218 [DEBUG] [Thread-127132] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T14:29:04.218 [DEBUG] [Thread-127132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:04.232 [DEBUG] [Thread-127132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:29:04.232 [INFO] [Thread-127132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] Compression: none
2025-09-28T14:29:04.240 [DEBUG] [Thread-127132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:04.300 [DEBUG] [Thread-127132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:04.300 [DEBUG] [Thread-127132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:04.301 [DEBUG] [Thread-127132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:29:04.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:29:04.301 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:04.357 [DEBUG] [Thread-127132] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:04.357 [DEBUG] [Thread-127132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:04.357 [DEBUG] [Thread-127132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:04.357 [DEBUG] [Thread-127132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:29:04.357 [DEBUG] [Thread-127132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:04.376 [INFO] [Thread-127132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:04.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-28T14:29:04.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:05.385 [DEBUG] [Thread-127132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:05.385 [DEBUG] [Thread-127132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:05.432 [DEBUG] [Thread-127132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:05.433 [DEBUG] [Thread-127132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:05.442 [DEBUG] [Thread-127132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:05.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:05.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-28T14:29:05.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-28T14:29:05.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:05.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:05.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:05.477 [DEBUG] [Thread-127132] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:11.969 [DEBUG] [Thread-127134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:15.300 [DEBUG] [Thread-127135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:15.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:29:15.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:29:15.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-28T14:29:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 28, 45), 18.45, 28.97, 0.0, 19.3, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:29:16.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:28:45
2025-09-28T14:29:16.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:29:16.318 [DEBUG] [Thread-127136] [transport.py] [_log()] starting thread (client mode): 0x2e348580
2025-09-28T14:29:16.318 [DEBUG] [Thread-127136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:16.334 [DEBUG] [Thread-127136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:29:16.334 [INFO] [Thread-127136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] Compression: none
2025-09-28T14:29:16.337 [DEBUG] [Thread-127136] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:16.354 [DEBUG] [Thread-127136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:16.354 [DEBUG] [Thread-127136] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:16.355 [DEBUG] [Thread-127136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:29:16.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:29:16.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:16.356 [DEBUG] [Thread-127136] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:16.357 [DEBUG] [Thread-127136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:16.357 [DEBUG] [Thread-127136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:16.357 [DEBUG] [Thread-127136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:29:16.357 [DEBUG] [Thread-127136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:16.380 [INFO] [Thread-127136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:16.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:16.981 [DEBUG] [Thread-127136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:16.982 [DEBUG] [Thread-127136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:16.982 [DEBUG] [Thread-127136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:29:17.023 [DEBUG] [Thread-127136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:17.023 [DEBUG] [Thread-127136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:17.025 [DEBUG] [Thread-127136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:17.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:17.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:29:17.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:29:17.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:29:17.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:17.042 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:29:17.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:17.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:17.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:29:17.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520222 -999.00  +19.50   6.40     33   +2.90 1 1 1 1 1   888    0 15.08 -31.76 ----- 13.6 6.4 237.2 19.7 25.3 -28.3 24.5 -26.2 25.6 -26.6 26.6 -28.2
2025-09-28T14:29:17.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:29:17.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:29:17.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520222
2025-09-28T14:29:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:29:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:29:17.044 [DEBUG] [Thread-127136] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:17.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:29:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:29:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:29:17.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:28:45', tmtdew=18.45, humidity=28.97, cloud=0.0, wind=19.3, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:29:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:29:17.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-28T14:29:17.138 [DEBUG] [Thread-127139] [transport.py] [_log()] starting thread (client mode): 0x2e38c3a0
2025-09-28T14:29:17.138 [DEBUG] [Thread-127139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:17.153 [DEBUG] [Thread-127139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:29:17.153 [INFO] [Thread-127139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:29:17.160 [DEBUG] [Thread-127139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] Compression: none
2025-09-28T14:29:17.161 [DEBUG] [Thread-127139] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:17.217 [DEBUG] [Thread-127139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:17.217 [DEBUG] [Thread-127139] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:17.218 [DEBUG] [Thread-127139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:29:17.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:29:17.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:17.273 [DEBUG] [Thread-127139] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:17.273 [DEBUG] [Thread-127139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:17.273 [DEBUG] [Thread-127139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:17.273 [DEBUG] [Thread-127139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:29:17.273 [DEBUG] [Thread-127139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:17.290 [INFO] [Thread-127139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:17.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:29:17.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:18.231 [DEBUG] [Thread-127139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:18.231 [DEBUG] [Thread-127139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:18.285 [DEBUG] [Thread-127139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:18.285 [DEBUG] [Thread-127139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:18.295 [DEBUG] [Thread-127139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:18.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29: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')
2025-09-28T14:29:18.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-28T14:29:18.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:18.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:18.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:18.327 [DEBUG] [Thread-127139] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:26.997 [DEBUG] [Thread-127141 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:28.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:29:28.329 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:29:28.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-28T14:29:28.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 29, 17), 18.53, 28.84, 0.0, 19.87, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:29:28.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:29:17
2025-09-28T14:29:29.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:29:29.213 [DEBUG] [Thread-127142] [transport.py] [_log()] starting thread (client mode): 0x2e34ab00
2025-09-28T14:29:29.213 [DEBUG] [Thread-127142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:29.232 [DEBUG] [Thread-127142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:29:29.232 [INFO] [Thread-127142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:29.236 [DEBUG] [Thread-127142] [transport.py] [_log()] Compression: none
2025-09-28T14:29:29.237 [DEBUG] [Thread-127142] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:29.258 [DEBUG] [Thread-127142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:29.258 [DEBUG] [Thread-127142] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:29.258 [DEBUG] [Thread-127142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:29:29.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:29:29.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:29.259 [DEBUG] [Thread-127142] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:29.259 [DEBUG] [Thread-127142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:29.259 [DEBUG] [Thread-127142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:29.259 [DEBUG] [Thread-127142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:29:29.259 [DEBUG] [Thread-127142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:29.285 [INFO] [Thread-127142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:29.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:30.096 [DEBUG] [Thread-127142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:30.096 [DEBUG] [Thread-127142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:30.096 [DEBUG] [Thread-127142] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:29:30.137 [DEBUG] [Thread-127142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:30.137 [DEBUG] [Thread-127142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:30.139 [DEBUG] [Thread-127142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:30.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:30.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:29:30.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:29:30.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:29:30.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:30.156 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:29:30.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520222 -999.00  +19.50   6.40     33   +2.90 1 1 1 1 1   888    0 15.08 -31.76 ----- 13.6 6.4 237.2 19.7 25.3 -28.3 24.5 -26.2 25.6 -26.6 26.6 -28.2
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520222
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:29:30.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:29:17', tmtdew=18.53, humidity=28.84, cloud=0.0, wind=19.87, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:29:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:29:30.157 [DEBUG] [Thread-127142] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:30.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-28T14:29:30.240 [DEBUG] [Thread-127145] [transport.py] [_log()] starting thread (client mode): 0x2b94da80
2025-09-28T14:29:30.240 [DEBUG] [Thread-127145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:30.256 [DEBUG] [Thread-127145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:29:30.256 [INFO] [Thread-127145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:29:30.265 [DEBUG] [Thread-127145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:30.265 [DEBUG] [Thread-127145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] Compression: none
2025-09-28T14:29:30.266 [DEBUG] [Thread-127145] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:30.323 [DEBUG] [Thread-127145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:30.323 [DEBUG] [Thread-127145] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:30.323 [DEBUG] [Thread-127145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:29:30.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:29:30.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:30.384 [DEBUG] [Thread-127145] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:30.384 [DEBUG] [Thread-127145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:30.384 [DEBUG] [Thread-127145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:30.384 [DEBUG] [Thread-127145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:29:30.384 [DEBUG] [Thread-127145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:30.403 [INFO] [Thread-127145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:30.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-28T14:29:30.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:31.421 [DEBUG] [Thread-127145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:31.421 [DEBUG] [Thread-127145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:31.469 [DEBUG] [Thread-127145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:31.469 [DEBUG] [Thread-127145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:31.477 [DEBUG] [Thread-127145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:31.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:31.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-28T14:29:31.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-28T14:29:31.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:31.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:31.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:31.510 [DEBUG] [Thread-127145] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:41.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:29:41.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:29:41.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-28T14:29:42.040 [DEBUG] [Thread-127147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:42.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 29, 17), 18.53, 28.84, 0.0, 19.87, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:29:42.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:29:17
2025-09-28T14:29:42.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:29:42.356 [DEBUG] [Thread-127148] [transport.py] [_log()] starting thread (client mode): 0x2e376320
2025-09-28T14:29:42.356 [DEBUG] [Thread-127148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:42.376 [DEBUG] [Thread-127148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:29:42.376 [INFO] [Thread-127148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:42.379 [DEBUG] [Thread-127148] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] Compression: none
2025-09-28T14:29:42.380 [DEBUG] [Thread-127148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:42.401 [DEBUG] [Thread-127148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:42.402 [DEBUG] [Thread-127148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:42.402 [DEBUG] [Thread-127148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:29:42.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:29:42.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:42.405 [DEBUG] [Thread-127148] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:42.405 [DEBUG] [Thread-127148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:42.405 [DEBUG] [Thread-127148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:42.405 [DEBUG] [Thread-127148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:29:42.405 [DEBUG] [Thread-127148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:42.428 [INFO] [Thread-127148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:42.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:43.251 [DEBUG] [Thread-127148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:43.251 [DEBUG] [Thread-127148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:43.251 [DEBUG] [Thread-127148] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:29:43.291 [DEBUG] [Thread-127148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:43.291 [DEBUG] [Thread-127148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:43.294 [DEBUG] [Thread-127148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:43.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:43.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:29:43.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:29:43.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:29:43.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:43.315 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:29:43.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:43.315 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:29:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520222 -999.00  +19.50   6.40     33   +2.90 1 1 1 1 1   888    0 15.08 -31.76 ----- 13.6 6.4 237.2 19.7 25.3 -28.3 24.5 -26.2 25.6 -26.6 26.6 -28.2
2025-09-28T14:29:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:29:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:29:43.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520222
2025-09-28T14:29:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:29:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:29:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:29:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:29:43.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:29:43.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:29:17', tmtdew=18.53, humidity=28.84, cloud=0.0, wind=19.87, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:29:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:29:43.318 [DEBUG] [Thread-127148] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:43.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-28T14:29:43.414 [DEBUG] [Thread-127151] [transport.py] [_log()] starting thread (client mode): 0x2b94dea0
2025-09-28T14:29:43.414 [DEBUG] [Thread-127151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:43.428 [DEBUG] [Thread-127151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:29:43.428 [INFO] [Thread-127151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] Compression: none
2025-09-28T14:29:43.436 [DEBUG] [Thread-127151] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:43.493 [DEBUG] [Thread-127151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:43.494 [DEBUG] [Thread-127151] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:43.494 [DEBUG] [Thread-127151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:29:43.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:29:43.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:43.549 [DEBUG] [Thread-127151] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:43.550 [DEBUG] [Thread-127151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:43.550 [DEBUG] [Thread-127151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:43.550 [DEBUG] [Thread-127151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:29:43.550 [DEBUG] [Thread-127151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:43.569 [INFO] [Thread-127151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:43.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:29:43.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:44.527 [DEBUG] [Thread-127151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:44.527 [DEBUG] [Thread-127151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:44.575 [DEBUG] [Thread-127151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:44.575 [DEBUG] [Thread-127151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:44.584 [DEBUG] [Thread-127151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:44.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:44.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-28T14:29:44.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-28T14:29:44.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:44.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:44.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:44.619 [DEBUG] [Thread-127151] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:29:54.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:29:54.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-28T14:29:55.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 29, 49), 18.92, 27.96, 0.0, 19.94, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:29:55.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:29:49
2025-09-28T14:29:55.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:29:55.459 [DEBUG] [Thread-127153] [transport.py] [_log()] starting thread (client mode): 0x2e374790
2025-09-28T14:29:55.459 [DEBUG] [Thread-127153] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:55.479 [DEBUG] [Thread-127153] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:29:55.479 [INFO] [Thread-127153] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:55.483 [DEBUG] [Thread-127153] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:55.484 [DEBUG] [Thread-127153] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:55.484 [DEBUG] [Thread-127153] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:55.484 [DEBUG] [Thread-127153] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:55.484 [DEBUG] [Thread-127153] [transport.py] [_log()] Compression: none
2025-09-28T14:29:55.484 [DEBUG] [Thread-127153] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:55.502 [DEBUG] [Thread-127153] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:55.503 [DEBUG] [Thread-127153] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:55.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:29:55.504 [DEBUG] [Thread-127153] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:29:55.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:55.506 [DEBUG] [Thread-127153] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:55.506 [DEBUG] [Thread-127153] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:55.506 [DEBUG] [Thread-127153] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:55.506 [DEBUG] [Thread-127153] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:29:55.507 [DEBUG] [Thread-127153] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:55.527 [INFO] [Thread-127153] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:55.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:56.184 [DEBUG] [Thread-127153] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:56.184 [DEBUG] [Thread-127153] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:56.185 [DEBUG] [Thread-127153] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:29:56.225 [DEBUG] [Thread-127153] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:56.225 [DEBUG] [Thread-127153] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:56.228 [DEBUG] [Thread-127153] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:56.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:56.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:29:56.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:29:56.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:29:56.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:56.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:29:56.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:56.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:56.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:29:56.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520569 -999.00  +19.70   7.26     33   +3.00 1 1 1 1 1   888    0 15.42 -30.39 ----- 10.8 7.3 202.0 16.5 25.4 -26.7 24.4 -25.7 25.6 -25.9 26.8 -26.7
2025-09-28T14:29:56.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:29:56.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:29:56.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520569
2025-09-28T14:29:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:29:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:29:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:29:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:29:56.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:29:56.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:29:49', tmtdew=18.92, humidity=27.96, cloud=0.0, wind=19.94, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:29:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:29:56.252 [DEBUG] [Thread-127153] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:29:56.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-28T14:29:56.346 [DEBUG] [Thread-127156] [transport.py] [_log()] starting thread (client mode): 0x2e3fba00
2025-09-28T14:29:56.346 [DEBUG] [Thread-127156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:29:56.360 [DEBUG] [Thread-127156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:29:56.360 [INFO] [Thread-127156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] client lang: <none>
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] server lang: <none>
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] kex follows: False
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] Compression: none
2025-09-28T14:29:56.368 [DEBUG] [Thread-127156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:29:56.425 [DEBUG] [Thread-127156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:29:56.425 [DEBUG] [Thread-127156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:29:56.426 [DEBUG] [Thread-127156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:29:56.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:29:56.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:29:56.481 [DEBUG] [Thread-127156] [transport.py] [_log()] userauth is OK
2025-09-28T14:29:56.482 [DEBUG] [Thread-127156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:29:56.482 [DEBUG] [Thread-127156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:29:56.482 [DEBUG] [Thread-127156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:29:56.482 [DEBUG] [Thread-127156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:29:56.501 [INFO] [Thread-127156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:29:56.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-28T14:29:56.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:29:57.074 [DEBUG] [Thread-127158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:29:57.491 [DEBUG] [Thread-127156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:29:57.491 [DEBUG] [Thread-127156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:29:57.539 [DEBUG] [Thread-127156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:29:57.539 [DEBUG] [Thread-127156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:29:57.548 [DEBUG] [Thread-127156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:29:57.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:29:57.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-28T14:29:57.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-28T14:29:57.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:29:57.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:29:57.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:29:57.583 [DEBUG] [Thread-127156] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:03.579 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:03.580 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:07.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:30:07.585 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:30:07.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:30:08.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 29, 49), 18.92, 27.96, 0.0, 19.94, 18.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:30:08.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:29:49
2025-09-28T14:30:08.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:30:08.441 [DEBUG] [Thread-127159] [transport.py] [_log()] starting thread (client mode): 0x2b94f1f0
2025-09-28T14:30:08.441 [DEBUG] [Thread-127159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:08.462 [DEBUG] [Thread-127159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:30:08.462 [INFO] [Thread-127159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:08.466 [DEBUG] [Thread-127159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:08.467 [DEBUG] [Thread-127159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:08.467 [DEBUG] [Thread-127159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:08.467 [DEBUG] [Thread-127159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:08.467 [DEBUG] [Thread-127159] [transport.py] [_log()] Compression: none
2025-09-28T14:30:08.467 [DEBUG] [Thread-127159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:08.481 [DEBUG] [Thread-127159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:08.481 [DEBUG] [Thread-127159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:08.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:30:08.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:30:08.482 [DEBUG] [Thread-127159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:08.498 [INFO] [Thread-127159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:08.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:12.119 [DEBUG] [Thread-127161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:15.353 [DEBUG] [Thread-127162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:17.848 [DEBUG] [Thread-127159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:17.848 [DEBUG] [Thread-127159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:17.849 [DEBUG] [Thread-127159] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:30:17.889 [DEBUG] [Thread-127159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:17.889 [DEBUG] [Thread-127159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:17.892 [DEBUG] [Thread-127159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:17.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:17.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:30:17.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:30:18.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:30:18.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:18.041 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:30:18.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520569 -999.00  +19.70   7.26     33   +3.00 1 1 1 1 1   888    0 15.42 -30.39 ----- 10.8 7.3 202.0 16.5 25.4 -26.7 24.4 -25.7 25.6 -25.9 26.8 -26.7
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:30:18.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520569
2025-09-28T14:30:18.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:30:18.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:30:18.044 [DEBUG] [Thread-127159] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:18.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:30:18.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:30:18.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:30:18.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:29:49', tmtdew=18.92, humidity=27.96, cloud=0.0, wind=19.94, temperature=18.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:29:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:30:18.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:30:18.138 [DEBUG] [Thread-127164] [transport.py] [_log()] starting thread (client mode): 0x2b94d780
2025-09-28T14:30:18.138 [DEBUG] [Thread-127164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:18.152 [DEBUG] [Thread-127164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:30:18.153 [INFO] [Thread-127164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:18.160 [DEBUG] [Thread-127164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:18.161 [DEBUG] [Thread-127164] [transport.py] [_log()] Compression: none
2025-09-28T14:30:18.162 [DEBUG] [Thread-127164] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:18.218 [DEBUG] [Thread-127164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:18.218 [DEBUG] [Thread-127164] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:18.219 [DEBUG] [Thread-127164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:30:18.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:30:18.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:18.274 [DEBUG] [Thread-127164] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:18.274 [DEBUG] [Thread-127164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:18.274 [DEBUG] [Thread-127164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:18.274 [DEBUG] [Thread-127164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:30:18.274 [DEBUG] [Thread-127164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:18.294 [INFO] [Thread-127164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:18.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:30:18.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:19.298 [DEBUG] [Thread-127164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:19.298 [DEBUG] [Thread-127164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:19.347 [DEBUG] [Thread-127164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:19.347 [DEBUG] [Thread-127164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:19.356 [DEBUG] [Thread-127164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:19.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:19.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-28T14:30:19.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-28T14:30:19.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:19.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:19.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:19.390 [DEBUG] [Thread-127164] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:27.151 [DEBUG] [Thread-127166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:29.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:30:29.392 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:30:29.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-28T14:30:29.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 30, 21), 19.11, 27.65, 0.0, 21.76, 19.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:30:29.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:30:21
2025-09-28T14:30:30.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:30:30.229 [DEBUG] [Thread-127167] [transport.py] [_log()] starting thread (client mode): 0x2e3f92d0
2025-09-28T14:30:30.229 [DEBUG] [Thread-127167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:30.249 [DEBUG] [Thread-127167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:30:30.250 [INFO] [Thread-127167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:30:30.252 [DEBUG] [Thread-127167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:30.252 [DEBUG] [Thread-127167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:30:30.252 [DEBUG] [Thread-127167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:30.253 [DEBUG] [Thread-127167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:30.254 [DEBUG] [Thread-127167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:30.254 [DEBUG] [Thread-127167] [transport.py] [_log()] Compression: none
2025-09-28T14:30:30.254 [DEBUG] [Thread-127167] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:30.272 [DEBUG] [Thread-127167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:30.273 [DEBUG] [Thread-127167] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:30.274 [DEBUG] [Thread-127167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:30:30.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:30:30.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:30.276 [DEBUG] [Thread-127167] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:30.276 [DEBUG] [Thread-127167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:30.276 [DEBUG] [Thread-127167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:30.276 [DEBUG] [Thread-127167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:30:30.276 [DEBUG] [Thread-127167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:30.299 [INFO] [Thread-127167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:30.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:30.887 [DEBUG] [Thread-127167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:30.888 [DEBUG] [Thread-127167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:30.888 [DEBUG] [Thread-127167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:30:30.929 [DEBUG] [Thread-127167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:30.929 [DEBUG] [Thread-127167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:30.932 [DEBUG] [Thread-127167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:30.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:30.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:30:30.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:30:30.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:30:30.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:30.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:30:30.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520916 -999.00  +19.90  14.03     32   +3.10 1 1 1 1 1   888    0 15.29 -26.52 ----- 19.4 14.0 201.1 19.1 25.5 -27.7 24.5 -25.6 25.6 -25.0 26.9 -27.7
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:30:30.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520916
2025-09-28T14:30:30.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:30:30.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:30:30.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:30:30.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:30:30.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:30:30.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:30:21', tmtdew=19.11, humidity=27.65, cloud=0.0, wind=21.76, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:30:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:30:30.955 [DEBUG] [Thread-127167] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:31.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-28T14:30:31.049 [DEBUG] [Thread-127170] [transport.py] [_log()] starting thread (client mode): 0x2e3fa6b0
2025-09-28T14:30:31.049 [DEBUG] [Thread-127170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:31.065 [DEBUG] [Thread-127170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:30:31.065 [INFO] [Thread-127170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:30:31.072 [DEBUG] [Thread-127170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:31.072 [DEBUG] [Thread-127170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:31.073 [DEBUG] [Thread-127170] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] Compression: none
2025-09-28T14:30:31.074 [DEBUG] [Thread-127170] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:31.130 [DEBUG] [Thread-127170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:31.130 [DEBUG] [Thread-127170] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:31.131 [DEBUG] [Thread-127170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:30:31.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:30:31.132 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:31.186 [DEBUG] [Thread-127170] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:31.186 [DEBUG] [Thread-127170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:31.186 [DEBUG] [Thread-127170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:31.186 [DEBUG] [Thread-127170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:30:31.186 [DEBUG] [Thread-127170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:31.209 [INFO] [Thread-127170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:31.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-28T14:30:31.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:32.214 [DEBUG] [Thread-127170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:32.214 [DEBUG] [Thread-127170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:32.262 [DEBUG] [Thread-127170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:32.262 [DEBUG] [Thread-127170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:32.271 [DEBUG] [Thread-127170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:32.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:32.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-28T14:30:32.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:30:32.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:32.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:32.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:32.306 [DEBUG] [Thread-127170] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:42.179 [DEBUG] [Thread-127172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:42.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:30:42.307 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:30:42.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-28T14:30:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 30, 21), 19.11, 27.65, 0.0, 21.76, 19.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:30:42.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:30:21
2025-09-28T14:30:43.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:30:43.163 [DEBUG] [Thread-127173] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb20
2025-09-28T14:30:43.164 [DEBUG] [Thread-127173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:43.184 [DEBUG] [Thread-127173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:30:43.184 [INFO] [Thread-127173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:30:43.187 [DEBUG] [Thread-127173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] Compression: none
2025-09-28T14:30:43.188 [DEBUG] [Thread-127173] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:43.206 [DEBUG] [Thread-127173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:43.206 [DEBUG] [Thread-127173] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:43.206 [DEBUG] [Thread-127173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:30:43.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:30:43.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:43.207 [DEBUG] [Thread-127173] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:43.207 [DEBUG] [Thread-127173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:43.207 [DEBUG] [Thread-127173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:43.207 [DEBUG] [Thread-127173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:30:43.207 [DEBUG] [Thread-127173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:43.222 [INFO] [Thread-127173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:43.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:43.974 [DEBUG] [Thread-127173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:43.974 [DEBUG] [Thread-127173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:43.974 [DEBUG] [Thread-127173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:30:44.015 [DEBUG] [Thread-127173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:44.015 [DEBUG] [Thread-127173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:44.017 [DEBUG] [Thread-127173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:44.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:44.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:30:44.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:30:44.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:30:44.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:44.030 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:30:44.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.520916 -999.00  +19.90  14.03     32   +3.10 1 1 1 1 1   888    0 15.29 -26.52 ----- 19.4 14.0 201.1 19.1 25.5 -27.7 24.5 -25.6 25.6 -25.0 26.9 -27.7
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.520916
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:30:44.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:30:21', tmtdew=19.11, humidity=27.65, cloud=0.0, wind=21.76, temperature=19.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:30:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:30:44.031 [DEBUG] [Thread-127173] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:44.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-28T14:30:44.116 [DEBUG] [Thread-127176] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb60
2025-09-28T14:30:44.116 [DEBUG] [Thread-127176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:44.131 [DEBUG] [Thread-127176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:30:44.131 [INFO] [Thread-127176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:44.138 [DEBUG] [Thread-127176] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] Compression: none
2025-09-28T14:30:44.139 [DEBUG] [Thread-127176] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:44.197 [DEBUG] [Thread-127176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:44.197 [DEBUG] [Thread-127176] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:44.197 [DEBUG] [Thread-127176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:30:44.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:30:44.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:44.254 [DEBUG] [Thread-127176] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:44.254 [DEBUG] [Thread-127176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:44.254 [DEBUG] [Thread-127176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:44.254 [DEBUG] [Thread-127176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:30:44.254 [DEBUG] [Thread-127176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:44.268 [INFO] [Thread-127176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:44.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:30:44.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:45.228 [DEBUG] [Thread-127176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:45.228 [DEBUG] [Thread-127176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:45.276 [DEBUG] [Thread-127176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:45.276 [DEBUG] [Thread-127176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:45.284 [DEBUG] [Thread-127176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:45.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:45.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-28T14:30:45.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-28T14:30:45.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:45.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:45.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:45.316 [DEBUG] [Thread-127176] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:55.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:30:55.318 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:30:55.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-28T14:30:55.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 30, 53), 18.95, 28.16, 0.0, 26.59, 19.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:30:55.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:30:53
2025-09-28T14:30:56.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:30:56.152 [DEBUG] [Thread-127178] [transport.py] [_log()] starting thread (client mode): 0x2b9ccf40
2025-09-28T14:30:56.152 [DEBUG] [Thread-127178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:56.168 [DEBUG] [Thread-127178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:30:56.169 [INFO] [Thread-127178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:56.172 [DEBUG] [Thread-127178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:56.173 [DEBUG] [Thread-127178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:56.173 [DEBUG] [Thread-127178] [transport.py] [_log()] Compression: none
2025-09-28T14:30:56.173 [DEBUG] [Thread-127178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:56.187 [DEBUG] [Thread-127178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:56.188 [DEBUG] [Thread-127178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:56.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:30:56.188 [DEBUG] [Thread-127178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:30:56.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:56.190 [DEBUG] [Thread-127178] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:56.190 [DEBUG] [Thread-127178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:56.190 [DEBUG] [Thread-127178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:56.190 [DEBUG] [Thread-127178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:30:56.190 [DEBUG] [Thread-127178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:56.203 [INFO] [Thread-127178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:56.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:56.772 [DEBUG] [Thread-127178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:56.772 [DEBUG] [Thread-127178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:56.772 [DEBUG] [Thread-127178] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:30:56.813 [DEBUG] [Thread-127178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:56.813 [DEBUG] [Thread-127178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:56.815 [DEBUG] [Thread-127178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:56.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:56.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:30:56.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:30:56.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:30:56.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:56.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:30:56.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:56.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:56.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:30:56.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521264 -999.00  +19.80  17.94     33   +3.20 1 1 1 1 1   888    0 15.02 -22.59 ----- 16.0 17.9 238.4 23.0 25.4 -28.2 24.4 -25.7 25.6 -25.7 26.7 -28.6
2025-09-28T14:30:56.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:30:56.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:30:56.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521264
2025-09-28T14:30:56.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:30:56.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:30:56.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:30:56.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:30:56.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:30:56.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:30:53', tmtdew=18.95, humidity=28.16, cloud=0.0, wind=26.59, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:30:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:30:56.832 [DEBUG] [Thread-127178] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:30:56.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-28T14:30:56.925 [DEBUG] [Thread-127181] [transport.py] [_log()] starting thread (client mode): 0x2b94cfd0
2025-09-28T14:30:56.926 [DEBUG] [Thread-127181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:30:56.941 [DEBUG] [Thread-127181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:30:56.941 [INFO] [Thread-127181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:30:56.948 [DEBUG] [Thread-127181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:30:56.948 [DEBUG] [Thread-127181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] client lang: <none>
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] server lang: <none>
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] kex follows: False
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] Compression: none
2025-09-28T14:30:56.949 [DEBUG] [Thread-127181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:30:57.006 [DEBUG] [Thread-127181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:30:57.006 [DEBUG] [Thread-127181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:30:57.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:30:57.007 [DEBUG] [Thread-127181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:30:57.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:30:57.062 [DEBUG] [Thread-127181] [transport.py] [_log()] userauth is OK
2025-09-28T14:30:57.062 [DEBUG] [Thread-127181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:30:57.062 [DEBUG] [Thread-127181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:30:57.062 [DEBUG] [Thread-127181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:30:57.062 [DEBUG] [Thread-127181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:30:57.081 [INFO] [Thread-127181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:30:57.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-28T14:30:57.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:30:57.214 [DEBUG] [Thread-127183 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:30:58.025 [DEBUG] [Thread-127181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:30:58.025 [DEBUG] [Thread-127181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:30:58.073 [DEBUG] [Thread-127181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:30:58.073 [DEBUG] [Thread-127181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:30:58.082 [DEBUG] [Thread-127181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:30:58.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:30:58.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-28T14:30:58.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-28T14:30:58.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:30:58.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:30:58.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:30:58.115 [DEBUG] [Thread-127181] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:03.720 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:03.722 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:08.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:31:08.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:31:08.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-28T14:31:08.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 30, 53), 18.95, 28.16, 0.0, 26.59, 19.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:31:08.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:30:53
2025-09-28T14:31:08.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:31:08.972 [DEBUG] [Thread-127184] [transport.py] [_log()] starting thread (client mode): 0x2e374790
2025-09-28T14:31:08.972 [DEBUG] [Thread-127184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:08.993 [DEBUG] [Thread-127184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:31:08.993 [INFO] [Thread-127184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:31:08.994 [DEBUG] [Thread-127184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] Compression: none
2025-09-28T14:31:08.995 [DEBUG] [Thread-127184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:09.004 [DEBUG] [Thread-127184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:09.005 [DEBUG] [Thread-127184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:09.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:31:09.005 [DEBUG] [Thread-127184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:31:09.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:09.007 [DEBUG] [Thread-127184] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:09.007 [DEBUG] [Thread-127184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:09.007 [DEBUG] [Thread-127184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:09.007 [DEBUG] [Thread-127184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:31:09.008 [DEBUG] [Thread-127184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:09.025 [INFO] [Thread-127184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:09.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:09.813 [DEBUG] [Thread-127184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:09.813 [DEBUG] [Thread-127184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:09.813 [DEBUG] [Thread-127184] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:31:09.854 [DEBUG] [Thread-127184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:09.854 [DEBUG] [Thread-127184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:09.857 [DEBUG] [Thread-127184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:09.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:09.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:31:09.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:31:09.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:31:09.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:09.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:31:09.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:09.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521264 -999.00  +19.80  17.94     33   +3.20 1 1 1 1 1   888    0 15.02 -22.59 ----- 16.0 17.9 238.4 23.0 25.4 -28.2 24.4 -25.7 25.6 -25.7 26.7 -28.6
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521264
2025-09-28T14:31:09.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:31:09.879 [DEBUG] [Thread-127184] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:09.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:31:09.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:31:09.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:31:09.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:31:09.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:30:53', tmtdew=18.95, humidity=28.16, cloud=0.0, wind=26.59, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:30:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:31:09.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-28T14:31:09.976 [DEBUG] [Thread-127187] [transport.py] [_log()] starting thread (client mode): 0x2e38c520
2025-09-28T14:31:09.976 [DEBUG] [Thread-127187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:09.991 [DEBUG] [Thread-127187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:31:09.991 [INFO] [Thread-127187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:31:09.999 [DEBUG] [Thread-127187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:09.999 [DEBUG] [Thread-127187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:10.000 [DEBUG] [Thread-127187] [transport.py] [_log()] Compression: none
2025-09-28T14:31:10.001 [DEBUG] [Thread-127187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:10.059 [DEBUG] [Thread-127187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:10.059 [DEBUG] [Thread-127187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:10.060 [DEBUG] [Thread-127187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:31:10.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:31:10.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:10.114 [DEBUG] [Thread-127187] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:10.115 [DEBUG] [Thread-127187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:10.115 [DEBUG] [Thread-127187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:10.115 [DEBUG] [Thread-127187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:31:10.115 [DEBUG] [Thread-127187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:10.134 [INFO] [Thread-127187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:10.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-28T14:31:10.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:11.107 [DEBUG] [Thread-127187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:11.107 [DEBUG] [Thread-127187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:11.154 [DEBUG] [Thread-127187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:11.154 [DEBUG] [Thread-127187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:11.163 [DEBUG] [Thread-127187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:11.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:11.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-28T14:31:11.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') -> 00000000
2025-09-28T14:31:11.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:11.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:11.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:11.198 [DEBUG] [Thread-127187] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:12.264 [DEBUG] [Thread-127189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:15.406 [DEBUG] [Thread-127190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:21.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:31:21.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:31:21.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:31:21.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 30, 53), 18.95, 28.16, 0.0, 26.59, 19.03, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:31:21.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:30:53
2025-09-28T14:31:21.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:31:22.056 [DEBUG] [Thread-127191] [transport.py] [_log()] starting thread (client mode): 0x2b94cb20
2025-09-28T14:31:22.056 [DEBUG] [Thread-127191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:22.077 [DEBUG] [Thread-127191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:31:22.077 [INFO] [Thread-127191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:31:22.080 [DEBUG] [Thread-127191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] Compression: none
2025-09-28T14:31:22.081 [DEBUG] [Thread-127191] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:22.096 [DEBUG] [Thread-127191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:22.096 [DEBUG] [Thread-127191] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:22.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:31:22.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:31:22.097 [DEBUG] [Thread-127191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:22.106 [INFO] [Thread-127191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:22.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:22.850 [DEBUG] [Thread-127191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:22.851 [DEBUG] [Thread-127191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:22.851 [DEBUG] [Thread-127191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:31:22.891 [DEBUG] [Thread-127191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:22.891 [DEBUG] [Thread-127191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:22.894 [DEBUG] [Thread-127191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:22.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:22.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:31:22.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:31:22.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:31:22.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:22.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:31:22.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:22.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521264 -999.00  +19.80  17.94     33   +3.20 1 1 1 1 1   888    0 15.02 -22.59 ----- 16.0 17.9 238.4 23.0 25.4 -28.2 24.4 -25.7 25.6 -25.7 26.7 -28.6
2025-09-28T14:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:31:22.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521264
2025-09-28T14:31:22.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:31:22.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:31:22.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:31:22.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:31:22.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:31:22.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:30:53', tmtdew=18.95, humidity=28.16, cloud=0.0, wind=26.59, temperature=19.03, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:30:37.210', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:31:22.922 [DEBUG] [Thread-127191] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:23.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-28T14:31:23.017 [DEBUG] [Thread-127194] [transport.py] [_log()] starting thread (client mode): 0x2e3fbb20
2025-09-28T14:31:23.017 [DEBUG] [Thread-127194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:23.032 [DEBUG] [Thread-127194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:31:23.033 [INFO] [Thread-127194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:31:23.041 [DEBUG] [Thread-127194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:23.042 [DEBUG] [Thread-127194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:23.043 [DEBUG] [Thread-127194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:23.044 [DEBUG] [Thread-127194] [transport.py] [_log()] Compression: none
2025-09-28T14:31:23.044 [DEBUG] [Thread-127194] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:23.099 [DEBUG] [Thread-127194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:23.099 [DEBUG] [Thread-127194] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:23.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:31:23.100 [DEBUG] [Thread-127194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:31:23.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:23.154 [DEBUG] [Thread-127194] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:23.154 [DEBUG] [Thread-127194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:23.154 [DEBUG] [Thread-127194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:23.154 [DEBUG] [Thread-127194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:31:23.154 [DEBUG] [Thread-127194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:23.168 [INFO] [Thread-127194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:23.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:31:23.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:24.164 [DEBUG] [Thread-127194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:24.164 [DEBUG] [Thread-127194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:24.212 [DEBUG] [Thread-127194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:24.212 [DEBUG] [Thread-127194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:24.221 [DEBUG] [Thread-127194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:24.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:24.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-28T14:31:24.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-28T14:31:24.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:24.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:24.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:24.257 [DEBUG] [Thread-127194] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:27.298 [DEBUG] [Thread-127196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:34.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:31:34.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:31:34.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-28T14:31:34.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 31, 24), 18.67, 28.71, 0.0, 27.31, 19.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:31:34.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:31:24
2025-09-28T14:31:34.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:31:35.096 [DEBUG] [Thread-127197] [transport.py] [_log()] starting thread (client mode): 0x2b9ceda0
2025-09-28T14:31:35.096 [DEBUG] [Thread-127197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:35.116 [DEBUG] [Thread-127197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:31:35.116 [INFO] [Thread-127197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:31:35.119 [DEBUG] [Thread-127197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:35.119 [DEBUG] [Thread-127197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] Compression: none
2025-09-28T14:31:35.120 [DEBUG] [Thread-127197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:35.134 [DEBUG] [Thread-127197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:35.135 [DEBUG] [Thread-127197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:35.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:31:35.136 [DEBUG] [Thread-127197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:31:35.137 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:35.138 [DEBUG] [Thread-127197] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:35.138 [DEBUG] [Thread-127197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:35.138 [DEBUG] [Thread-127197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:35.138 [DEBUG] [Thread-127197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:31:35.138 [DEBUG] [Thread-127197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:35.162 [INFO] [Thread-127197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:35.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:35.703 [DEBUG] [Thread-127197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:35.703 [DEBUG] [Thread-127197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:35.703 [DEBUG] [Thread-127197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:31:35.745 [DEBUG] [Thread-127197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:35.745 [DEBUG] [Thread-127197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:35.747 [DEBUG] [Thread-127197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:35.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:35.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:31:35.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:31:35.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:31:35.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:35.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:31:35.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:35.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521611 -999.00  +19.80  22.24     33   +3.20 1 1 1 1 1   888    0 15.53 -19.10 ----- 15.7 22.2 251.4 26.9 25.4 -28.1 -999.0 -999.0 25.6 -25.2 26.8 -29.0
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521611
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:31:35.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:31:24', tmtdew=18.67, humidity=28.71, cloud=0.0, wind=27.31, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:31:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:31:35.760 [DEBUG] [Thread-127197] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:35.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-28T14:31:35.844 [DEBUG] [Thread-127200] [transport.py] [_log()] starting thread (client mode): 0x2e38fd00
2025-09-28T14:31:35.844 [DEBUG] [Thread-127200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:35.859 [DEBUG] [Thread-127200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:31:35.859 [INFO] [Thread-127200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] Compression: none
2025-09-28T14:31:35.867 [DEBUG] [Thread-127200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:35.926 [DEBUG] [Thread-127200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:35.926 [DEBUG] [Thread-127200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:35.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:31:35.927 [DEBUG] [Thread-127200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:31:35.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:35.983 [DEBUG] [Thread-127200] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:35.983 [DEBUG] [Thread-127200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:35.983 [DEBUG] [Thread-127200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:35.983 [DEBUG] [Thread-127200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:31:35.983 [DEBUG] [Thread-127200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:36.006 [INFO] [Thread-127200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:36.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:31:36.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:37.084 [DEBUG] [Thread-127200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:37.084 [DEBUG] [Thread-127200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:37.132 [DEBUG] [Thread-127200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:37.133 [DEBUG] [Thread-127200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:37.142 [DEBUG] [Thread-127200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:37.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:37.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-28T14:31:37.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-28T14:31:37.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:37.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:37.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:37.176 [DEBUG] [Thread-127200] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:42.327 [DEBUG] [Thread-127202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:31:47.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:31:47.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:31:47.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-28T14:31:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 31, 24), 18.67, 28.71, 0.0, 27.31, 19.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:31:47.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:31:24
2025-09-28T14:31:47.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:31:48.024 [DEBUG] [Thread-127203] [transport.py] [_log()] starting thread (client mode): 0x2b94d4e0
2025-09-28T14:31:48.024 [DEBUG] [Thread-127203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:48.047 [DEBUG] [Thread-127203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:31:48.047 [INFO] [Thread-127203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] Compression: none
2025-09-28T14:31:48.049 [DEBUG] [Thread-127203] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:48.058 [DEBUG] [Thread-127203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:48.058 [DEBUG] [Thread-127203] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:48.058 [DEBUG] [Thread-127203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:31:48.058 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:31:48.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:48.060 [DEBUG] [Thread-127203] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:48.060 [DEBUG] [Thread-127203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:48.060 [DEBUG] [Thread-127203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:48.060 [DEBUG] [Thread-127203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:31:48.060 [DEBUG] [Thread-127203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:48.074 [INFO] [Thread-127203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:48.074 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:48.830 [DEBUG] [Thread-127203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:48.831 [DEBUG] [Thread-127203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:48.831 [DEBUG] [Thread-127203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:31:48.872 [DEBUG] [Thread-127203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:48.872 [DEBUG] [Thread-127203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:48.876 [DEBUG] [Thread-127203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:48.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:48.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:31:48.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:31:48.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:31:48.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:48.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:31:48.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:48.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:31:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521611 -999.00  +19.80  22.24     33   +3.20 1 1 1 1 1   888    0 15.53 -19.10 ----- 15.7 22.2 251.4 26.9 25.4 -28.1 -999.0 -999.0 25.6 -25.2 26.8 -29.0
2025-09-28T14:31:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:31:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:31:48.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521611
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:31:48.914 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:31:24', tmtdew=18.67, humidity=28.71, cloud=0.0, wind=27.31, temperature=19.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:31:07.190', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:31:48.916 [DEBUG] [Thread-127203] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:49.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-28T14:31:49.010 [DEBUG] [Thread-127206] [transport.py] [_log()] starting thread (client mode): 0x2e3f8130
2025-09-28T14:31:49.010 [DEBUG] [Thread-127206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:31:49.024 [DEBUG] [Thread-127206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:31:49.024 [INFO] [Thread-127206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:31:49.032 [DEBUG] [Thread-127206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:31:49.032 [DEBUG] [Thread-127206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] client lang: <none>
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] server lang: <none>
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] kex follows: False
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] Compression: none
2025-09-28T14:31:49.033 [DEBUG] [Thread-127206] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:31:49.090 [DEBUG] [Thread-127206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:31:49.091 [DEBUG] [Thread-127206] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:31:49.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:31:49.092 [DEBUG] [Thread-127206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:31:49.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:31:49.147 [DEBUG] [Thread-127206] [transport.py] [_log()] userauth is OK
2025-09-28T14:31:49.147 [DEBUG] [Thread-127206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:31:49.147 [DEBUG] [Thread-127206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:31:49.147 [DEBUG] [Thread-127206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:31:49.147 [DEBUG] [Thread-127206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:31:49.166 [INFO] [Thread-127206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:31:49.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-28T14:31:49.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:31:50.280 [DEBUG] [Thread-127206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:31:50.280 [DEBUG] [Thread-127206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:31:50.328 [DEBUG] [Thread-127206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:31:50.328 [DEBUG] [Thread-127206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:31:50.336 [DEBUG] [Thread-127206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:31:50.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:31:50.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-28T14:31:50.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-28T14:31:50.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:31:50.361 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:31:50.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:31:50.369 [DEBUG] [Thread-127206] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:31:57.368 [DEBUG] [Thread-127208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:00.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:32:00.372 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:32:00.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-28T14:32:00.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 31, 56), 18.61, 28.54, 0.0, 27.63, 18.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:32:00.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:31:56
2025-09-28T14:32:01.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:32:01.208 [DEBUG] [Thread-127209] [transport.py] [_log()] starting thread (client mode): 0x2b94f970
2025-09-28T14:32:01.208 [DEBUG] [Thread-127209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:01.227 [DEBUG] [Thread-127209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:32:01.227 [INFO] [Thread-127209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:01.230 [DEBUG] [Thread-127209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:01.231 [DEBUG] [Thread-127209] [transport.py] [_log()] Compression: none
2025-09-28T14:32:01.231 [DEBUG] [Thread-127209] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:01.247 [DEBUG] [Thread-127209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:01.248 [DEBUG] [Thread-127209] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:01.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:32:01.249 [DEBUG] [Thread-127209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:32:01.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:01.251 [DEBUG] [Thread-127209] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:01.251 [DEBUG] [Thread-127209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:01.251 [DEBUG] [Thread-127209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:01.251 [DEBUG] [Thread-127209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:32:01.251 [DEBUG] [Thread-127209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:01.274 [INFO] [Thread-127209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:01.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:01.885 [DEBUG] [Thread-127209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:01.885 [DEBUG] [Thread-127209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:01.885 [DEBUG] [Thread-127209] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:32:01.926 [DEBUG] [Thread-127209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:01.927 [DEBUG] [Thread-127209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:01.929 [DEBUG] [Thread-127209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:01.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:01.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:32:01.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:32:01.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:32:01.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:01.950 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:32:01.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521958 -999.00  +19.60  20.37     34   +3.30 1 1 1 1 1   888    0 15.62 -15.76 ----- 20.7 20.4 278.6 29.7 25.3 -29.5 24.6 -26.7 25.5 -26.1 26.6 -29.3
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:32:01.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521958
2025-09-28T14:32:01.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:32:01.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:32:01.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:32:01.953 [DEBUG] [Thread-127209] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:01.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:32:01.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:32:01.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:31:56', tmtdew=18.61, humidity=28.54, cloud=0.0, wind=27.63, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:31:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:32:02.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-28T14:32:02.049 [DEBUG] [Thread-127212] [transport.py] [_log()] starting thread (client mode): 0x2e38ebc0
2025-09-28T14:32:02.049 [DEBUG] [Thread-127212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:02.064 [DEBUG] [Thread-127212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:32:02.064 [INFO] [Thread-127212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] Compression: none
2025-09-28T14:32:02.072 [DEBUG] [Thread-127212] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:02.130 [DEBUG] [Thread-127212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:02.130 [DEBUG] [Thread-127212] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:02.130 [DEBUG] [Thread-127212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:32:02.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:32:02.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:02.187 [DEBUG] [Thread-127212] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:02.187 [DEBUG] [Thread-127212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:02.187 [DEBUG] [Thread-127212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:02.187 [DEBUG] [Thread-127212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:32:02.187 [DEBUG] [Thread-127212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:02.201 [INFO] [Thread-127212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:02.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-28T14:32:02.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:03.195 [DEBUG] [Thread-127212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:03.195 [DEBUG] [Thread-127212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:03.242 [DEBUG] [Thread-127212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:03.242 [DEBUG] [Thread-127212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:03.251 [DEBUG] [Thread-127212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:03.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:03.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-28T14:32:03.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-28T14:32:03.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:03.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:03.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:03.286 [DEBUG] [Thread-127212] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:03.864 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:03.865 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:12.395 [DEBUG] [Thread-127214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:13.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:32:13.289 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:32:13.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-28T14:32:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 31, 56), 18.61, 28.54, 0.0, 27.63, 18.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:32:13.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:31:56
2025-09-28T14:32:13.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:32:14.114 [DEBUG] [Thread-127215] [transport.py] [_log()] starting thread (client mode): 0x2b9ced10
2025-09-28T14:32:14.114 [DEBUG] [Thread-127215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:14.133 [DEBUG] [Thread-127215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:32:14.134 [INFO] [Thread-127215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:14.137 [DEBUG] [Thread-127215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] Compression: none
2025-09-28T14:32:14.138 [DEBUG] [Thread-127215] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:14.154 [DEBUG] [Thread-127215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:14.155 [DEBUG] [Thread-127215] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:14.155 [DEBUG] [Thread-127215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:32:14.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:32:14.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:14.157 [DEBUG] [Thread-127215] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:14.157 [DEBUG] [Thread-127215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:14.157 [DEBUG] [Thread-127215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:14.157 [DEBUG] [Thread-127215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:32:14.157 [DEBUG] [Thread-127215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:14.182 [INFO] [Thread-127215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:14.183 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:14.946 [DEBUG] [Thread-127215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:14.946 [DEBUG] [Thread-127215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:14.946 [DEBUG] [Thread-127215] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:32:14.987 [DEBUG] [Thread-127215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:14.988 [DEBUG] [Thread-127215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:14.991 [DEBUG] [Thread-127215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:15.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:15.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:32:15.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:32:15.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:32:15.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:15.016 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:32:15.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:15.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:15.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:32:15.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521958 -999.00  +19.60  20.37     34   +3.30 1 1 1 1 1   888    0 15.62 -15.76 ----- 20.7 20.4 278.6 29.7 25.3 -29.5 24.6 -26.7 25.5 -26.1 26.6 -29.3
2025-09-28T14:32:15.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:32:15.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:32:15.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521958
2025-09-28T14:32:15.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:32:15.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:32:15.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:32:15.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:32:15.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:32:15.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:31:56', tmtdew=18.61, humidity=28.54, cloud=0.0, wind=27.63, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:31:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:32:15.019 [DEBUG] [Thread-127215] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:15.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-28T14:32:15.115 [DEBUG] [Thread-127218] [transport.py] [_log()] starting thread (client mode): 0x2b9cc5b0
2025-09-28T14:32:15.115 [DEBUG] [Thread-127218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:15.130 [DEBUG] [Thread-127218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:32:15.130 [INFO] [Thread-127218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:15.138 [DEBUG] [Thread-127218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:15.139 [DEBUG] [Thread-127218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:15.140 [DEBUG] [Thread-127218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:15.140 [DEBUG] [Thread-127218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:15.140 [DEBUG] [Thread-127218] [transport.py] [_log()] Compression: none
2025-09-28T14:32:15.140 [DEBUG] [Thread-127218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:15.201 [DEBUG] [Thread-127218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:15.201 [DEBUG] [Thread-127218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:15.202 [DEBUG] [Thread-127218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:32:15.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:32:15.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:15.259 [DEBUG] [Thread-127218] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:15.260 [DEBUG] [Thread-127218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:15.260 [DEBUG] [Thread-127218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:15.260 [DEBUG] [Thread-127218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:32:15.260 [DEBUG] [Thread-127218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:15.279 [INFO] [Thread-127218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:15.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-28T14:32:15.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:15.460 [DEBUG] [Thread-127220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:16.363 [DEBUG] [Thread-127218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:16.363 [DEBUG] [Thread-127218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:16.411 [DEBUG] [Thread-127218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:16.411 [DEBUG] [Thread-127218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:16.420 [DEBUG] [Thread-127218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:16.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:16.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')
2025-09-28T14:32:16.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-28T14:32:16.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:16.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:16.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:16.455 [DEBUG] [Thread-127218] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:26.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:32:26.451 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:32:26.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-28T14:32:27.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 31, 56), 18.61, 28.54, 0.0, 27.63, 18.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:32:27.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:31:56
2025-09-28T14:32:27.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:32:27.280 [DEBUG] [Thread-127221] [transport.py] [_log()] starting thread (client mode): 0x2b94f610
2025-09-28T14:32:27.280 [DEBUG] [Thread-127221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:27.299 [DEBUG] [Thread-127221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:32:27.299 [INFO] [Thread-127221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:32:27.302 [DEBUG] [Thread-127221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:27.302 [DEBUG] [Thread-127221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:32:27.302 [DEBUG] [Thread-127221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] Compression: none
2025-09-28T14:32:27.303 [DEBUG] [Thread-127221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:27.320 [DEBUG] [Thread-127221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:27.320 [DEBUG] [Thread-127221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:27.321 [DEBUG] [Thread-127221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:32:27.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:32:27.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:27.323 [DEBUG] [Thread-127221] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:27.323 [DEBUG] [Thread-127221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:27.323 [DEBUG] [Thread-127221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:27.324 [DEBUG] [Thread-127221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:32:27.324 [DEBUG] [Thread-127221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:27.344 [INFO] [Thread-127221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:27.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:27.438 [DEBUG] [Thread-127223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:28.081 [DEBUG] [Thread-127221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:28.081 [DEBUG] [Thread-127221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:28.081 [DEBUG] [Thread-127221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:32:28.122 [DEBUG] [Thread-127221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:28.123 [DEBUG] [Thread-127221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:28.125 [DEBUG] [Thread-127221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:28.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:28.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:32:28.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:32:28.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:32:28.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:28.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:32:28.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.521958 -999.00  +19.60  20.37     34   +3.30 1 1 1 1 1   888    0 15.62 -15.76 ----- 20.7 20.4 278.6 29.7 25.3 -29.5 24.6 -26.7 25.5 -26.1 26.6 -29.3
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:32:28.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.521958
2025-09-28T14:32:28.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:32:28.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:32:28.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:32:28.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:32:28.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:32:28.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:31:56', tmtdew=18.61, humidity=28.54, cloud=0.0, wind=27.63, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:31:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:32:28.155 [DEBUG] [Thread-127221] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:28.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-28T14:32:28.252 [DEBUG] [Thread-127225] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-28T14:32:28.253 [DEBUG] [Thread-127225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:28.268 [DEBUG] [Thread-127225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:32:28.268 [INFO] [Thread-127225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:32:28.275 [DEBUG] [Thread-127225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:28.275 [DEBUG] [Thread-127225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:28.276 [DEBUG] [Thread-127225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:28.277 [DEBUG] [Thread-127225] [transport.py] [_log()] Compression: none
2025-09-28T14:32:28.277 [DEBUG] [Thread-127225] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:28.335 [DEBUG] [Thread-127225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:28.336 [DEBUG] [Thread-127225] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:28.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:32:28.337 [DEBUG] [Thread-127225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:32:28.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:28.391 [DEBUG] [Thread-127225] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:28.392 [DEBUG] [Thread-127225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:28.392 [DEBUG] [Thread-127225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:28.392 [DEBUG] [Thread-127225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:32:28.392 [DEBUG] [Thread-127225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:28.411 [INFO] [Thread-127225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:28.412 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:32:28.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:29.420 [DEBUG] [Thread-127225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:29.420 [DEBUG] [Thread-127225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:29.469 [DEBUG] [Thread-127225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:29.469 [DEBUG] [Thread-127225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:29.477 [DEBUG] [Thread-127225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:29.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:29.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-28T14:32:29.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') -> 00000000
2025-09-28T14:32:29.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:29.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:29.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:29.508 [DEBUG] [Thread-127225] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:39.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:32:39.512 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:32:39.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:32:40.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 32, 28), 18.58, 28.61, 0.0, 28.27, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:32:40.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:32:28
2025-09-28T14:32:40.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:32:40.330 [DEBUG] [Thread-127227] [transport.py] [_log()] starting thread (client mode): 0x2b9cc4f0
2025-09-28T14:32:40.330 [DEBUG] [Thread-127227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:40.351 [DEBUG] [Thread-127227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:32:40.351 [INFO] [Thread-127227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:40.354 [DEBUG] [Thread-127227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] Compression: none
2025-09-28T14:32:40.355 [DEBUG] [Thread-127227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:40.372 [DEBUG] [Thread-127227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:40.372 [DEBUG] [Thread-127227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:40.372 [DEBUG] [Thread-127227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:32:40.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:32:40.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:40.374 [DEBUG] [Thread-127227] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:40.375 [DEBUG] [Thread-127227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:40.375 [DEBUG] [Thread-127227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:40.375 [DEBUG] [Thread-127227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:32:40.375 [DEBUG] [Thread-127227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:40.398 [INFO] [Thread-127227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:40.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:40.970 [DEBUG] [Thread-127227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:40.970 [DEBUG] [Thread-127227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:40.970 [DEBUG] [Thread-127227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:32:41.011 [DEBUG] [Thread-127227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:41.011 [DEBUG] [Thread-127227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:41.016 [DEBUG] [Thread-127227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:41.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:41.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:32:41.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:32:41.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:32:41.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:41.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:32:41.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:41.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:32:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.522305 -999.00  +19.00  13.90     34   +3.10 1 1 1 1 1   888    0 15.80 -14.06 ----- 18.6 13.9 265.4 27.2 25.3 -27.6 24.5 -26.3 25.3 -27.6 26.5 -27.5
2025-09-28T14:32:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:32:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:32:41.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.522305
2025-09-28T14:32:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:32:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:32:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:32:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:32:41.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:32:41.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:32:28', tmtdew=18.58, humidity=28.61, cloud=0.0, wind=28.27, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:32:07.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:32:41.043 [DEBUG] [Thread-127227] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:41.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-28T14:32:41.143 [DEBUG] [Thread-127230] [transport.py] [_log()] starting thread (client mode): 0x2e38ee00
2025-09-28T14:32:41.143 [DEBUG] [Thread-127230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:41.159 [DEBUG] [Thread-127230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:32:41.159 [INFO] [Thread-127230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:41.167 [DEBUG] [Thread-127230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:41.168 [DEBUG] [Thread-127230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:41.168 [DEBUG] [Thread-127230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:41.168 [DEBUG] [Thread-127230] [transport.py] [_log()] Compression: none
2025-09-28T14:32:41.168 [DEBUG] [Thread-127230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:41.227 [DEBUG] [Thread-127230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:41.227 [DEBUG] [Thread-127230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:41.228 [DEBUG] [Thread-127230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:32:41.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:32:41.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:41.283 [DEBUG] [Thread-127230] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:41.283 [DEBUG] [Thread-127230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:41.283 [DEBUG] [Thread-127230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:41.284 [DEBUG] [Thread-127230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:32:41.284 [DEBUG] [Thread-127230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:41.303 [INFO] [Thread-127230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:41.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-28T14:32:41.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:42.317 [DEBUG] [Thread-127230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:42.317 [DEBUG] [Thread-127230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:42.365 [DEBUG] [Thread-127230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:42.365 [DEBUG] [Thread-127230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:42.374 [DEBUG] [Thread-127230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:42.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:42.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-28T14:32:42.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-28T14:32:42.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:42.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:42.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:42.408 [DEBUG] [Thread-127230] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:42.471 [DEBUG] [Thread-127232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:32:52.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:32:52.411 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:32:52.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-28T14:32:52.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 32, 28), 18.58, 28.61, 0.0, 28.27, 18.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:32:52.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:32:28
2025-09-28T14:32:53.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:32:53.230 [DEBUG] [Thread-127233] [transport.py] [_log()] starting thread (client mode): 0x2e34ba00
2025-09-28T14:32:53.230 [DEBUG] [Thread-127233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:53.251 [DEBUG] [Thread-127233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:32:53.252 [INFO] [Thread-127233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:32:53.254 [DEBUG] [Thread-127233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:53.254 [DEBUG] [Thread-127233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:53.255 [DEBUG] [Thread-127233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:53.256 [DEBUG] [Thread-127233] [transport.py] [_log()] Compression: none
2025-09-28T14:32:53.256 [DEBUG] [Thread-127233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:53.274 [DEBUG] [Thread-127233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:53.275 [DEBUG] [Thread-127233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:53.275 [DEBUG] [Thread-127233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:32:53.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:32:53.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:53.277 [DEBUG] [Thread-127233] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:53.277 [DEBUG] [Thread-127233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:53.278 [DEBUG] [Thread-127233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:53.278 [DEBUG] [Thread-127233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:32:53.278 [DEBUG] [Thread-127233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:53.296 [INFO] [Thread-127233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:53.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:54.018 [DEBUG] [Thread-127233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:54.018 [DEBUG] [Thread-127233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:54.018 [DEBUG] [Thread-127233] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:32:54.059 [DEBUG] [Thread-127233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:54.060 [DEBUG] [Thread-127233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:54.062 [DEBUG] [Thread-127233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:54.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:54.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:32:54.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:32:54.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:32:54.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:54.080 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:32:54.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:54.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:54.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:32:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.522305 -999.00  +19.00  13.90     34   +3.10 1 1 1 1 1   888    0 15.80 -14.06 ----- 18.6 13.9 265.4 27.2 25.3 -27.6 24.5 -26.3 25.3 -27.6 26.5 -27.5
2025-09-28T14:32:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:32:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:32:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.522305
2025-09-28T14:32:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:32:54.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:32:54.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:32:54.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:32:54.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:32:54.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:32:28', tmtdew=18.58, humidity=28.61, cloud=0.0, wind=28.27, temperature=18.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:32:07.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:32:54.082 [DEBUG] [Thread-127233] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:54.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-28T14:32:54.177 [DEBUG] [Thread-127236] [transport.py] [_log()] starting thread (client mode): 0x2b94f220
2025-09-28T14:32:54.177 [DEBUG] [Thread-127236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:32:54.192 [DEBUG] [Thread-127236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:32:54.192 [INFO] [Thread-127236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] client lang: <none>
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] server lang: <none>
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] kex follows: False
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:32:54.200 [DEBUG] [Thread-127236] [transport.py] [_log()] Compression: none
2025-09-28T14:32:54.201 [DEBUG] [Thread-127236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:32:54.260 [DEBUG] [Thread-127236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:32:54.260 [DEBUG] [Thread-127236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:32:54.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:32:54.261 [DEBUG] [Thread-127236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:32:54.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:32:54.319 [DEBUG] [Thread-127236] [transport.py] [_log()] userauth is OK
2025-09-28T14:32:54.319 [DEBUG] [Thread-127236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:32:54.319 [DEBUG] [Thread-127236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:32:54.319 [DEBUG] [Thread-127236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:32:54.319 [DEBUG] [Thread-127236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:32:54.338 [INFO] [Thread-127236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:32:54.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-28T14:32:54.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:32:55.333 [DEBUG] [Thread-127236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:32:55.333 [DEBUG] [Thread-127236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:32:55.382 [DEBUG] [Thread-127236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:32:55.382 [DEBUG] [Thread-127236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:32:55.395 [DEBUG] [Thread-127236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:32:55.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:32:55.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-28T14:32:55.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-28T14:32:55.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:32:55.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:32:55.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:32:55.430 [DEBUG] [Thread-127236] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:32:57.520 [DEBUG] [Thread-127238 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:04.006 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:04.007 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:33:05.429 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:33:05.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-28T14:33:05.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 33), 18.39, 29.41, 0.0, 23.15, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:33:05.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:33:00
2025-09-28T14:33:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:33:06.254 [DEBUG] [Thread-127239] [transport.py] [_log()] starting thread (client mode): 0x2e38f5e0
2025-09-28T14:33:06.255 [DEBUG] [Thread-127239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:06.275 [DEBUG] [Thread-127239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:33:06.275 [INFO] [Thread-127239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:06.278 [DEBUG] [Thread-127239] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] Compression: none
2025-09-28T14:33:06.279 [DEBUG] [Thread-127239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:06.297 [DEBUG] [Thread-127239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:06.297 [DEBUG] [Thread-127239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:06.298 [DEBUG] [Thread-127239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:33:06.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:33:06.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:06.300 [DEBUG] [Thread-127239] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:06.300 [DEBUG] [Thread-127239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:06.300 [DEBUG] [Thread-127239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:06.300 [DEBUG] [Thread-127239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:33:06.301 [DEBUG] [Thread-127239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:06.316 [INFO] [Thread-127239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:06.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:07.068 [DEBUG] [Thread-127239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:07.068 [DEBUG] [Thread-127239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:07.068 [DEBUG] [Thread-127239] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:33:07.109 [DEBUG] [Thread-127239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:07.109 [DEBUG] [Thread-127239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:07.111 [DEBUG] [Thread-127239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:07.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:07.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:33:07.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:33:07.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:33:07.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:07.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:33:07.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.522305 -999.00  +19.00  13.90     34   +3.10 1 1 1 1 1   888    0 15.80 -14.06 ----- 18.6 13.9 265.4 27.2 25.3 -27.6 24.5 -26.3 25.3 -27.6 26.5 -27.5
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.522305
2025-09-28T14:33:07.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:33:07.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:33:07.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:33:07.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:33:07.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:33:07.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:33:00', tmtdew=18.39, humidity=29.41, cloud=0.0, wind=23.15, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:32:07.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:33:07.142 [DEBUG] [Thread-127239] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:07.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:33:07.229 [DEBUG] [Thread-127242] [transport.py] [_log()] starting thread (client mode): 0x2e38f010
2025-09-28T14:33:07.230 [DEBUG] [Thread-127242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:07.244 [DEBUG] [Thread-127242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:33:07.244 [INFO] [Thread-127242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] Compression: none
2025-09-28T14:33:07.252 [DEBUG] [Thread-127242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:07.310 [DEBUG] [Thread-127242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:07.310 [DEBUG] [Thread-127242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:07.311 [DEBUG] [Thread-127242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:33:07.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:33:07.311 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:07.367 [DEBUG] [Thread-127242] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:07.368 [DEBUG] [Thread-127242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:07.368 [DEBUG] [Thread-127242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:07.368 [DEBUG] [Thread-127242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:33:07.368 [DEBUG] [Thread-127242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:07.385 [INFO] [Thread-127242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:07.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-28T14:33:07.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:08.380 [DEBUG] [Thread-127242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:08.380 [DEBUG] [Thread-127242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:08.428 [DEBUG] [Thread-127242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:08.428 [DEBUG] [Thread-127242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:08.436 [DEBUG] [Thread-127242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:08.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:08.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-28T14:33:08.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-28T14:33:08.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:08.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:08.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:08.468 [DEBUG] [Thread-127242] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:12.549 [DEBUG] [Thread-127244 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:15.514 [DEBUG] [Thread-127245 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:18.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:33:18.470 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:33:18.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-28T14:33:19.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 33), 18.39, 29.41, 0.0, 23.15, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:33:19.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:33:00
2025-09-28T14:33:19.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:33:19.295 [DEBUG] [Thread-127246] [transport.py] [_log()] starting thread (client mode): 0x2e34b850
2025-09-28T14:33:19.295 [DEBUG] [Thread-127246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:19.314 [DEBUG] [Thread-127246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:33:19.314 [INFO] [Thread-127246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:19.318 [DEBUG] [Thread-127246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:19.319 [DEBUG] [Thread-127246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:19.319 [DEBUG] [Thread-127246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:19.319 [DEBUG] [Thread-127246] [transport.py] [_log()] Compression: none
2025-09-28T14:33:19.319 [DEBUG] [Thread-127246] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:19.334 [DEBUG] [Thread-127246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:19.334 [DEBUG] [Thread-127246] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:19.335 [DEBUG] [Thread-127246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:33:19.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:33:19.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:19.337 [DEBUG] [Thread-127246] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:19.338 [DEBUG] [Thread-127246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:19.338 [DEBUG] [Thread-127246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:19.338 [DEBUG] [Thread-127246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:33:19.338 [DEBUG] [Thread-127246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:19.362 [INFO] [Thread-127246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:19.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:20.040 [DEBUG] [Thread-127246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:20.040 [DEBUG] [Thread-127246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:20.040 [DEBUG] [Thread-127246] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:33:20.081 [DEBUG] [Thread-127246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:20.081 [DEBUG] [Thread-127246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:20.085 [DEBUG] [Thread-127246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:20.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:20.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:33:20.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:33:20.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:33:20.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:20.109 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:33:20.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.522652 -999.00  +18.60  17.00     35   +3.00 1 1 1 1 1   888    0 15.57 -15.19 ----- 16.8 17.0 238.4 31.8 25.0 -28.7 24.5 -27.7 25.2 -26.4 26.2 -29.5
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:33:20.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.522652
2025-09-28T14:33:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:33:20.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:33:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:33:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:33:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:33:20.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:33:00', tmtdew=18.39, humidity=29.41, cloud=0.0, wind=23.15, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:32:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:33:20.112 [DEBUG] [Thread-127246] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:20.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-28T14:33:20.208 [DEBUG] [Thread-127249] [transport.py] [_log()] starting thread (client mode): 0x2e34b1f0
2025-09-28T14:33:20.208 [DEBUG] [Thread-127249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:20.224 [DEBUG] [Thread-127249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:33:20.224 [INFO] [Thread-127249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:33:20.231 [DEBUG] [Thread-127249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] Compression: none
2025-09-28T14:33:20.232 [DEBUG] [Thread-127249] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:20.287 [DEBUG] [Thread-127249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:20.288 [DEBUG] [Thread-127249] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:20.288 [DEBUG] [Thread-127249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:33:20.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:33:20.289 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:20.344 [DEBUG] [Thread-127249] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:20.344 [DEBUG] [Thread-127249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:20.344 [DEBUG] [Thread-127249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:20.344 [DEBUG] [Thread-127249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:33:20.353 [DEBUG] [Thread-127249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:20.372 [INFO] [Thread-127249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:20.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:33:20.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:21.320 [DEBUG] [Thread-127249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:21.320 [DEBUG] [Thread-127249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:21.368 [DEBUG] [Thread-127249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:21.368 [DEBUG] [Thread-127249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:21.379 [DEBUG] [Thread-127249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:21.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:21.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-28T14:33:21.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-28T14:33:21.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:21.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:21.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:21.417 [DEBUG] [Thread-127249] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:27.591 [DEBUG] [Thread-127251 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:31.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:33:31.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:33:31.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:33:31.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 33), 18.39, 29.41, 0.0, 23.15, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:33:31.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:33:00
2025-09-28T14:33:32.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:33:32.239 [DEBUG] [Thread-127252] [transport.py] [_log()] starting thread (client mode): 0x2e38ffa0
2025-09-28T14:33:32.239 [DEBUG] [Thread-127252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:32.261 [DEBUG] [Thread-127252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:33:32.261 [INFO] [Thread-127252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:33:32.264 [DEBUG] [Thread-127252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] Compression: none
2025-09-28T14:33:32.265 [DEBUG] [Thread-127252] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:32.280 [DEBUG] [Thread-127252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:32.280 [DEBUG] [Thread-127252] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:32.280 [DEBUG] [Thread-127252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:33:32.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:33:32.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:32.281 [DEBUG] [Thread-127252] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:32.281 [DEBUG] [Thread-127252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:32.282 [DEBUG] [Thread-127252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:32.282 [DEBUG] [Thread-127252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:33:32.282 [DEBUG] [Thread-127252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:32.291 [INFO] [Thread-127252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:32.291 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:33.100 [DEBUG] [Thread-127252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:33.100 [DEBUG] [Thread-127252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:33.100 [DEBUG] [Thread-127252] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:33:33.141 [DEBUG] [Thread-127252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:33.141 [DEBUG] [Thread-127252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:33.143 [DEBUG] [Thread-127252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:33.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:33.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:33:33.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:33:33.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:33:33.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:33.162 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:33:33.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.522652 -999.00  +18.60  17.00     35   +3.00 1 1 1 1 1   888    0 15.57 -15.19 ----- 16.8 17.0 238.4 31.8 25.0 -28.7 24.5 -27.7 25.2 -26.4 26.2 -29.5
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.522652
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:33:33.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:33:00', tmtdew=18.39, humidity=29.41, cloud=0.0, wind=23.15, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:32:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:33:33.163 [DEBUG] [Thread-127252] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:33.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-28T14:33:33.246 [DEBUG] [Thread-127255] [transport.py] [_log()] starting thread (client mode): 0x2b94e890
2025-09-28T14:33:33.246 [DEBUG] [Thread-127255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:33.263 [DEBUG] [Thread-127255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:33:33.263 [INFO] [Thread-127255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] Compression: none
2025-09-28T14:33:33.271 [DEBUG] [Thread-127255] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:33.329 [DEBUG] [Thread-127255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:33.329 [DEBUG] [Thread-127255] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:33.329 [DEBUG] [Thread-127255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:33:33.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:33:33.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:33.384 [DEBUG] [Thread-127255] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:33.384 [DEBUG] [Thread-127255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:33.384 [DEBUG] [Thread-127255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:33.384 [DEBUG] [Thread-127255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:33:33.384 [DEBUG] [Thread-127255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:33.399 [INFO] [Thread-127255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:33.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-28T14:33:33.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:34.474 [DEBUG] [Thread-127255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:34.474 [DEBUG] [Thread-127255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:34.522 [DEBUG] [Thread-127255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:34.522 [DEBUG] [Thread-127255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:34.531 [DEBUG] [Thread-127255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:34.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:34.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-28T14:33:34.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-28T14:33:34.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:34.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:34.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:34.563 [DEBUG] [Thread-127255] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:42.637 [DEBUG] [Thread-127257 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:44.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:33:44.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:33:44.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-28T14:33:45.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 33, 32), 18.14, 29.84, 0.0, 23.41, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:33:45.149 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:33:32
2025-09-28T14:33:45.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:33:45.421 [DEBUG] [Thread-127258] [transport.py] [_log()] starting thread (client mode): 0x2e38d690
2025-09-28T14:33:45.422 [DEBUG] [Thread-127258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:45.443 [DEBUG] [Thread-127258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:33:45.444 [INFO] [Thread-127258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:45.447 [DEBUG] [Thread-127258] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] Compression: none
2025-09-28T14:33:45.448 [DEBUG] [Thread-127258] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:45.463 [DEBUG] [Thread-127258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:45.464 [DEBUG] [Thread-127258] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:45.464 [DEBUG] [Thread-127258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:33:45.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:33:45.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:45.465 [DEBUG] [Thread-127258] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:45.465 [DEBUG] [Thread-127258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:45.465 [DEBUG] [Thread-127258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:45.465 [DEBUG] [Thread-127258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:33:45.465 [DEBUG] [Thread-127258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:45.478 [INFO] [Thread-127258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:45.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:46.125 [DEBUG] [Thread-127258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:46.125 [DEBUG] [Thread-127258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:46.126 [DEBUG] [Thread-127258] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:33:46.166 [DEBUG] [Thread-127258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:46.166 [DEBUG] [Thread-127258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:46.169 [DEBUG] [Thread-127258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:46.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:46.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:33:46.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:33:46.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:33:46.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:46.186 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:33:46.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.523347 -999.00  +18.80  13.55     35   +3.20 1 1 1 1 1   888    0 15.52 -15.11 ----- 16.1 13.6 269.8 20.1 25.2 -26.9 24.3 -25.7 25.3 -25.2 26.3 -25.9
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.523347
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:33:46.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:33:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:33:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:33:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:33:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:33:32', tmtdew=18.14, humidity=29.84, cloud=0.0, wind=23.41, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:33:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:33:46.187 [DEBUG] [Thread-127258] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:46.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-28T14:33:46.273 [DEBUG] [Thread-127261] [transport.py] [_log()] starting thread (client mode): 0x2e348760
2025-09-28T14:33:46.273 [DEBUG] [Thread-127261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:46.289 [DEBUG] [Thread-127261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:33:46.289 [INFO] [Thread-127261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] Compression: none
2025-09-28T14:33:46.296 [DEBUG] [Thread-127261] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:46.355 [DEBUG] [Thread-127261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:46.355 [DEBUG] [Thread-127261] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:46.355 [DEBUG] [Thread-127261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:33:46.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:33:46.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:46.416 [DEBUG] [Thread-127261] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:46.416 [DEBUG] [Thread-127261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:46.416 [DEBUG] [Thread-127261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:46.416 [DEBUG] [Thread-127261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:33:46.416 [DEBUG] [Thread-127261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:46.431 [INFO] [Thread-127261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:46.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-28T14:33:46.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:47.448 [DEBUG] [Thread-127261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:47.448 [DEBUG] [Thread-127261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:47.496 [DEBUG] [Thread-127261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:47.496 [DEBUG] [Thread-127261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:47.504 [DEBUG] [Thread-127261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:47.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:47.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-28T14:33:47.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-28T14:33:47.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:47.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:47.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:47.536 [DEBUG] [Thread-127261] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:57.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:33:57.538 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:33:57.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-28T14:33:57.668 [DEBUG] [Thread-127263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:33:58.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 33, 32), 18.14, 29.84, 0.0, 23.41, 18.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:33:58.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:33:32
2025-09-28T14:33:58.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:33:58.362 [DEBUG] [Thread-127264] [transport.py] [_log()] starting thread (client mode): 0x2e38feb0
2025-09-28T14:33:58.362 [DEBUG] [Thread-127264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:58.381 [DEBUG] [Thread-127264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:33:58.382 [INFO] [Thread-127264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:33:58.385 [DEBUG] [Thread-127264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:58.385 [DEBUG] [Thread-127264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:33:58.385 [DEBUG] [Thread-127264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:58.385 [DEBUG] [Thread-127264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:58.385 [DEBUG] [Thread-127264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] Compression: none
2025-09-28T14:33:58.386 [DEBUG] [Thread-127264] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:58.402 [DEBUG] [Thread-127264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:58.402 [DEBUG] [Thread-127264] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:58.403 [DEBUG] [Thread-127264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:33:58.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:33:58.403 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:58.404 [DEBUG] [Thread-127264] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:58.405 [DEBUG] [Thread-127264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:58.405 [DEBUG] [Thread-127264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:58.405 [DEBUG] [Thread-127264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:33:58.405 [DEBUG] [Thread-127264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:58.429 [INFO] [Thread-127264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:58.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:33:59.240 [DEBUG] [Thread-127264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:33:59.240 [DEBUG] [Thread-127264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:33:59.241 [DEBUG] [Thread-127264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:33:59.281 [DEBUG] [Thread-127264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:33:59.281 [DEBUG] [Thread-127264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:33:59.284 [DEBUG] [Thread-127264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:33:59.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:33:59.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:33:59.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:33:59.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:33:59.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:33:59.308 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:33:59.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:33:59.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.523347 -999.00  +18.80  13.55     35   +3.20 1 1 1 1 1   888    0 15.52 -15.11 ----- 16.1 13.6 269.8 20.1 25.2 -26.9 24.3 -25.7 25.3 -25.2 26.3 -25.9
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.523347
2025-09-28T14:33:59.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:33:59.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:33:59.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:33:59.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:33:59.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:33:59.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:33:32', tmtdew=18.14, humidity=29.84, cloud=0.0, wind=23.41, temperature=18.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:33:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:33:59.310 [DEBUG] [Thread-127264] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:33:59.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-28T14:33:59.406 [DEBUG] [Thread-127267] [transport.py] [_log()] starting thread (client mode): 0x2e38d8a0
2025-09-28T14:33:59.406 [DEBUG] [Thread-127267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:33:59.422 [DEBUG] [Thread-127267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:33:59.422 [INFO] [Thread-127267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:33:59.430 [DEBUG] [Thread-127267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:33:59.430 [DEBUG] [Thread-127267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:33:59.430 [DEBUG] [Thread-127267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] client lang: <none>
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] server lang: <none>
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] kex follows: False
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] Compression: none
2025-09-28T14:33:59.431 [DEBUG] [Thread-127267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:33:59.487 [DEBUG] [Thread-127267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:33:59.488 [DEBUG] [Thread-127267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:33:59.488 [DEBUG] [Thread-127267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:33:59.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:33:59.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:33:59.545 [DEBUG] [Thread-127267] [transport.py] [_log()] userauth is OK
2025-09-28T14:33:59.545 [DEBUG] [Thread-127267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:33:59.545 [DEBUG] [Thread-127267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:33:59.545 [DEBUG] [Thread-127267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:33:59.545 [DEBUG] [Thread-127267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:33:59.565 [INFO] [Thread-127267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:33:59.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-28T14:33:59.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:00.518 [DEBUG] [Thread-127267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:00.518 [DEBUG] [Thread-127267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:00.566 [DEBUG] [Thread-127267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:00.566 [DEBUG] [Thread-127267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:00.575 [DEBUG] [Thread-127267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:00.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:00.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-28T14:34:00.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-28T14:34:00.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:00.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:00.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:00.607 [DEBUG] [Thread-127267] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:04.147 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:04.148 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:10.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:34:10.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:34:10.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-28T14:34:11.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 34, 4), 18.15, 29.84, 0.0, 22.43, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:34:11.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:34:04
2025-09-28T14:34:11.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:34:11.456 [DEBUG] [Thread-127269] [transport.py] [_log()] starting thread (client mode): 0x2e377070
2025-09-28T14:34:11.457 [DEBUG] [Thread-127269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:11.476 [DEBUG] [Thread-127269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:34:11.476 [INFO] [Thread-127269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:34:11.479 [DEBUG] [Thread-127269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:11.480 [DEBUG] [Thread-127269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] Compression: none
2025-09-28T14:34:11.481 [DEBUG] [Thread-127269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:11.496 [DEBUG] [Thread-127269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:11.497 [DEBUG] [Thread-127269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:11.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:34:11.498 [DEBUG] [Thread-127269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:34:11.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:11.500 [DEBUG] [Thread-127269] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:11.500 [DEBUG] [Thread-127269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:11.500 [DEBUG] [Thread-127269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:11.500 [DEBUG] [Thread-127269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:34:11.500 [DEBUG] [Thread-127269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:11.517 [INFO] [Thread-127269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:11.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:12.309 [DEBUG] [Thread-127269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:12.309 [DEBUG] [Thread-127269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:12.310 [DEBUG] [Thread-127269] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:34:12.350 [DEBUG] [Thread-127269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:12.350 [DEBUG] [Thread-127269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:12.353 [DEBUG] [Thread-127269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:12.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:12.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:34:12.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:34:12.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:34:12.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:12.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:34:12.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.523347 -999.00  +18.80  13.55     35   +3.20 1 1 1 1 1   888    0 15.52 -15.11 ----- 16.1 13.6 269.8 20.1 25.2 -26.9 24.3 -25.7 25.3 -25.2 26.3 -25.9
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:34:12.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.523347
2025-09-28T14:34:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:34:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:34:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:34:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:34:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:34:12.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:34:04', tmtdew=18.15, humidity=29.84, cloud=0.0, wind=22.43, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:33:37.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:34:12.379 [DEBUG] [Thread-127269] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:12.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-28T14:34:12.474 [DEBUG] [Thread-127272] [transport.py] [_log()] starting thread (client mode): 0x2e377e50
2025-09-28T14:34:12.474 [DEBUG] [Thread-127272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:12.489 [DEBUG] [Thread-127272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:34:12.490 [INFO] [Thread-127272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:34:12.497 [DEBUG] [Thread-127272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:12.497 [DEBUG] [Thread-127272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:12.498 [DEBUG] [Thread-127272] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] Compression: none
2025-09-28T14:34:12.499 [DEBUG] [Thread-127272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:12.557 [DEBUG] [Thread-127272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:12.558 [DEBUG] [Thread-127272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:12.558 [DEBUG] [Thread-127272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:34:12.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:34:12.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:12.613 [DEBUG] [Thread-127272] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:12.613 [DEBUG] [Thread-127272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:12.613 [DEBUG] [Thread-127272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:12.613 [DEBUG] [Thread-127272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:34:12.613 [DEBUG] [Thread-127272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:12.634 [INFO] [Thread-127272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:12.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-28T14:34:12.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:12.705 [DEBUG] [Thread-127274 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:13.614 [DEBUG] [Thread-127272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:13.614 [DEBUG] [Thread-127272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:13.662 [DEBUG] [Thread-127272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:13.662 [DEBUG] [Thread-127272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:13.680 [DEBUG] [Thread-127272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:13.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:13.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-28T14:34:13.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:34:13.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:13.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:13.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:13.714 [DEBUG] [Thread-127272] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:15.548 [DEBUG] [Thread-127275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:23.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:34:23.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:34:23.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-28T14:34:24.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 34, 4), 18.15, 29.84, 0.0, 22.43, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:34:24.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:34:04
2025-09-28T14:34:24.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:34:24.574 [DEBUG] [Thread-127276] [transport.py] [_log()] starting thread (client mode): 0x2e376860
2025-09-28T14:34:24.574 [DEBUG] [Thread-127276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:24.593 [DEBUG] [Thread-127276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:34:24.593 [INFO] [Thread-127276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] Compression: none
2025-09-28T14:34:24.596 [DEBUG] [Thread-127276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:24.604 [DEBUG] [Thread-127276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:24.604 [DEBUG] [Thread-127276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:24.604 [DEBUG] [Thread-127276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:34:24.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:34:24.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:24.605 [DEBUG] [Thread-127276] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:24.605 [DEBUG] [Thread-127276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:24.605 [DEBUG] [Thread-127276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:24.605 [DEBUG] [Thread-127276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:34:24.605 [DEBUG] [Thread-127276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:24.613 [INFO] [Thread-127276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:24.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:25.249 [DEBUG] [Thread-127276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:25.249 [DEBUG] [Thread-127276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:25.249 [DEBUG] [Thread-127276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:34:25.290 [DEBUG] [Thread-127276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:25.290 [DEBUG] [Thread-127276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:25.291 [DEBUG] [Thread-127276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:25.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:25.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:34:25.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:34:25.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:25.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:34:25.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.523694 -999.00  +18.80  15.12     35   +3.00 1 1 1 1 1   888    0 15.58 -13.46 ----- 16.9 15.1 265.8 17.4 25.2 -27.8 24.4 -25.7 25.0 -28.4 26.4 -27.3
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:34:25.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.523694
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:34:25.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:34:04', tmtdew=18.15, humidity=29.84, cloud=0.0, wind=22.43, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:34:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:34:25.311 [DEBUG] [Thread-127276] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:25.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:34:25.394 [DEBUG] [Thread-127279] [transport.py] [_log()] starting thread (client mode): 0x2e3dfc40
2025-09-28T14:34:25.394 [DEBUG] [Thread-127279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:25.409 [DEBUG] [Thread-127279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:34:25.409 [INFO] [Thread-127279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:25.416 [DEBUG] [Thread-127279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] Compression: none
2025-09-28T14:34:25.417 [DEBUG] [Thread-127279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:25.475 [DEBUG] [Thread-127279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:25.475 [DEBUG] [Thread-127279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:25.476 [DEBUG] [Thread-127279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:34:25.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:34:25.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:25.532 [DEBUG] [Thread-127279] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:25.532 [DEBUG] [Thread-127279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:25.532 [DEBUG] [Thread-127279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:25.532 [DEBUG] [Thread-127279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:34:25.532 [DEBUG] [Thread-127279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:25.546 [INFO] [Thread-127279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:25.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-28T14:34:25.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:26.526 [DEBUG] [Thread-127279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:26.526 [DEBUG] [Thread-127279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:26.575 [DEBUG] [Thread-127279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:26.575 [DEBUG] [Thread-127279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:26.584 [DEBUG] [Thread-127279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:26.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:26.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-28T14:34:26.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-28T14:34:26.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:26.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:26.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:26.619 [DEBUG] [Thread-127279] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:27.747 [DEBUG] [Thread-127281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:36.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:34:36.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:34:36.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-28T14:34:37.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 34, 4), 18.15, 29.84, 0.0, 22.43, 18.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:34:37.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:34:04
2025-09-28T14:34:37.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:34:37.511 [DEBUG] [Thread-127282] [transport.py] [_log()] starting thread (client mode): 0x2e38eef0
2025-09-28T14:34:37.511 [DEBUG] [Thread-127282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:37.532 [DEBUG] [Thread-127282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:34:37.532 [INFO] [Thread-127282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] Compression: none
2025-09-28T14:34:37.535 [DEBUG] [Thread-127282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:37.551 [DEBUG] [Thread-127282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:37.551 [DEBUG] [Thread-127282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:37.551 [DEBUG] [Thread-127282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:34:37.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:34:37.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:37.552 [DEBUG] [Thread-127282] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:37.552 [DEBUG] [Thread-127282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:37.552 [DEBUG] [Thread-127282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:37.552 [DEBUG] [Thread-127282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:34:37.552 [DEBUG] [Thread-127282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:37.566 [INFO] [Thread-127282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:37.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:38.362 [DEBUG] [Thread-127282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:38.362 [DEBUG] [Thread-127282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:38.362 [DEBUG] [Thread-127282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:34:38.403 [DEBUG] [Thread-127282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:38.403 [DEBUG] [Thread-127282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:38.405 [DEBUG] [Thread-127282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:38.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:38.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:34:38.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:34:38.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:34:38.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:38.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:34:38.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:38.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.523694 -999.00  +18.80  15.12     35   +3.00 1 1 1 1 1   888    0 15.58 -13.46 ----- 16.9 15.1 265.8 17.4 25.2 -27.8 24.4 -25.7 25.0 -28.4 26.4 -27.3
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.523694
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:34:38.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:34:04', tmtdew=18.15, humidity=29.84, cloud=0.0, wind=22.43, temperature=18.6, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:34:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:34:38.423 [DEBUG] [Thread-127282] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:38.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-28T14:34:38.509 [DEBUG] [Thread-127285] [transport.py] [_log()] starting thread (client mode): 0x2e38f250
2025-09-28T14:34:38.509 [DEBUG] [Thread-127285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:38.524 [DEBUG] [Thread-127285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:34:38.524 [INFO] [Thread-127285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] Compression: none
2025-09-28T14:34:38.532 [DEBUG] [Thread-127285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:38.587 [DEBUG] [Thread-127285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:38.587 [DEBUG] [Thread-127285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:38.587 [DEBUG] [Thread-127285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:34:38.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:34:38.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:38.645 [DEBUG] [Thread-127285] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:38.645 [DEBUG] [Thread-127285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:38.645 [DEBUG] [Thread-127285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:38.645 [DEBUG] [Thread-127285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:34:38.645 [DEBUG] [Thread-127285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:38.659 [INFO] [Thread-127285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:38.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-28T14:34:38.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:39.615 [DEBUG] [Thread-127285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:39.615 [DEBUG] [Thread-127285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:39.663 [DEBUG] [Thread-127285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:39.663 [DEBUG] [Thread-127285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:39.672 [DEBUG] [Thread-127285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:39.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:39.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')
2025-09-28T14:34:39.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-28T14:34:39.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:39.698 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:39.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:39.706 [DEBUG] [Thread-127285] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:42.790 [DEBUG] [Thread-127287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:34:49.709 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:34:49.709 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:34:49.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-28T14:34:50.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 34, 36), 18.61, 28.64, 0.0, 25.11, 18.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:34:50.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:34:36
2025-09-28T14:34:50.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:34:50.547 [DEBUG] [Thread-127288] [transport.py] [_log()] starting thread (client mode): 0x2e3de2f0
2025-09-28T14:34:50.548 [DEBUG] [Thread-127288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:50.566 [DEBUG] [Thread-127288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:34:50.566 [INFO] [Thread-127288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:50.567 [DEBUG] [Thread-127288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] Compression: none
2025-09-28T14:34:50.568 [DEBUG] [Thread-127288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:50.581 [DEBUG] [Thread-127288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:50.582 [DEBUG] [Thread-127288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:50.582 [DEBUG] [Thread-127288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:34:50.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:34:50.583 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:50.584 [DEBUG] [Thread-127288] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:50.585 [DEBUG] [Thread-127288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:50.585 [DEBUG] [Thread-127288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:50.585 [DEBUG] [Thread-127288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:34:50.585 [DEBUG] [Thread-127288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:50.599 [INFO] [Thread-127288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:50.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:51.250 [DEBUG] [Thread-127288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:51.250 [DEBUG] [Thread-127288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:51.251 [DEBUG] [Thread-127288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:34:51.291 [DEBUG] [Thread-127288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:51.291 [DEBUG] [Thread-127288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:51.294 [DEBUG] [Thread-127288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:51.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:51.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:34:51.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:34:51.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:34:51.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:51.319 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:34:51.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:51.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:51.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:34:51.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.524041 -999.00  +18.70  22.50     35   +2.90 1 1 1 1 1   888    0 15.75 -13.79 ----- 26.6 22.5 261.0 24.7 25.1 -28.3 24.4 -26.3 25.1 -25.5 26.1 -28.3
2025-09-28T14:34:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:34:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:34:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.524041
2025-09-28T14:34:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:34:51.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:34:51.321 [DEBUG] [Thread-127288] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:51.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:34:51.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:34:51.321 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:34:51.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:34:36', tmtdew=18.61, humidity=28.64, cloud=0.0, wind=25.11, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:34:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:34:51.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-28T14:34:51.417 [DEBUG] [Thread-127291] [transport.py] [_log()] starting thread (client mode): 0x2e3de440
2025-09-28T14:34:51.417 [DEBUG] [Thread-127291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:34:51.433 [DEBUG] [Thread-127291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:34:51.433 [INFO] [Thread-127291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:34:51.440 [DEBUG] [Thread-127291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:34:51.441 [DEBUG] [Thread-127291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:34:51.441 [DEBUG] [Thread-127291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:34:51.441 [DEBUG] [Thread-127291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:51.441 [DEBUG] [Thread-127291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:34:51.441 [DEBUG] [Thread-127291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] client lang: <none>
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] server lang: <none>
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] kex follows: False
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] Compression: none
2025-09-28T14:34:51.442 [DEBUG] [Thread-127291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:34:51.501 [DEBUG] [Thread-127291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:34:51.502 [DEBUG] [Thread-127291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:34:51.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:34:51.503 [DEBUG] [Thread-127291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:34:51.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:34:51.559 [DEBUG] [Thread-127291] [transport.py] [_log()] userauth is OK
2025-09-28T14:34:51.559 [DEBUG] [Thread-127291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:34:51.559 [DEBUG] [Thread-127291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:34:51.559 [DEBUG] [Thread-127291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:34:51.559 [DEBUG] [Thread-127291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:34:51.581 [INFO] [Thread-127291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:34:51.581 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:34:51.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:34:52.572 [DEBUG] [Thread-127291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:34:52.573 [DEBUG] [Thread-127291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:34:52.620 [DEBUG] [Thread-127291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:34:52.620 [DEBUG] [Thread-127291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:34:52.629 [DEBUG] [Thread-127291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:34:52.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:34:52.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-28T14:34:52.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-28T14:34:52.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:34:52.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:34:52.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:34:52.664 [DEBUG] [Thread-127291] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:34:57.819 [DEBUG] [Thread-127293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:02.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:35:02.667 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:35:02.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-28T14:35:03.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 34, 36), 18.61, 28.64, 0.0, 25.11, 18.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:35:03.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:34:36
2025-09-28T14:35:03.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:35:03.519 [DEBUG] [Thread-127294] [transport.py] [_log()] starting thread (client mode): 0x2e3dc400
2025-09-28T14:35:03.519 [DEBUG] [Thread-127294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:35:03.544 [DEBUG] [Thread-127294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:35:03.544 [INFO] [Thread-127294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] client lang: <none>
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] server lang: <none>
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] kex follows: False
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] Compression: none
2025-09-28T14:35:03.548 [DEBUG] [Thread-127294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:35:03.571 [DEBUG] [Thread-127294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:35:03.571 [DEBUG] [Thread-127294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:35:03.571 [DEBUG] [Thread-127294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:35:03.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:35:03.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:35:03.572 [DEBUG] [Thread-127294] [transport.py] [_log()] userauth is OK
2025-09-28T14:35:03.572 [DEBUG] [Thread-127294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:35:03.573 [DEBUG] [Thread-127294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:35:03.573 [DEBUG] [Thread-127294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:35:03.573 [DEBUG] [Thread-127294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:35:03.581 [INFO] [Thread-127294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:35:03.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:35:04.289 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:04.290 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:11.273 [DEBUG] [Thread-127294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:35:11.273 [DEBUG] [Thread-127294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:35:11.274 [DEBUG] [Thread-127294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:35:11.314 [DEBUG] [Thread-127294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:35:11.314 [DEBUG] [Thread-127294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:35:11.318 [DEBUG] [Thread-127294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:35:11.329 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:35:11.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:35:11.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:35:11.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:35:11.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:35:11.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:35:11.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:35:11.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.524041 -999.00  +18.70  22.50     35   +2.90 1 1 1 1 1   888    0 15.75 -13.79 ----- 26.6 22.5 261.0 24.7 25.1 -28.3 24.4 -26.3 25.1 -25.5 26.1 -28.3
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.524041
2025-09-28T14:35:11.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:35:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:35:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:35:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:35:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:35:11.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:34:36', tmtdew=18.61, humidity=28.64, cloud=0.0, wind=25.11, temperature=18.88, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:34:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:35:11.382 [DEBUG] [Thread-127294] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:35:11.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-28T14:35:11.480 [DEBUG] [Thread-127297] [transport.py] [_log()] starting thread (client mode): 0x2e34ad40
2025-09-28T14:35:11.480 [DEBUG] [Thread-127297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:35:11.495 [DEBUG] [Thread-127297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:35:11.495 [INFO] [Thread-127297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:35:11.502 [DEBUG] [Thread-127297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:35:11.502 [DEBUG] [Thread-127297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:35:11.502 [DEBUG] [Thread-127297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] client lang: <none>
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] server lang: <none>
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] kex follows: False
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] Compression: none
2025-09-28T14:35:11.503 [DEBUG] [Thread-127297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:35:11.561 [DEBUG] [Thread-127297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:35:11.561 [DEBUG] [Thread-127297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:35:11.562 [DEBUG] [Thread-127297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:35:11.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:35:11.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:35:11.618 [DEBUG] [Thread-127297] [transport.py] [_log()] userauth is OK
2025-09-28T14:35:11.618 [DEBUG] [Thread-127297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:35:11.618 [DEBUG] [Thread-127297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:35:11.618 [DEBUG] [Thread-127297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:35:11.618 [DEBUG] [Thread-127297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:35:11.638 [INFO] [Thread-127297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:35:11.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-28T14:35:11.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:35:12.633 [DEBUG] [Thread-127297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:35:12.634 [DEBUG] [Thread-127297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:35:12.682 [DEBUG] [Thread-127297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:35:12.682 [DEBUG] [Thread-127297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:35:12.692 [DEBUG] [Thread-127297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:35:12.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:35:12.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-28T14:35:12.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-28T14:35:12.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:35:12.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:35:12.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:35:12.728 [DEBUG] [Thread-127297] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:35:12.859 [DEBUG] [Thread-127299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:15.582 [DEBUG] [Thread-127300 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:22.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:35:22.730 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:35:22.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-28T14:35:23.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 35, 8), 18.48, 28.86, 0.0, 21.14, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:35:23.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:35:08
2025-09-28T14:35:23.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:35:23.585 [DEBUG] [Thread-127301] [transport.py] [_log()] starting thread (client mode): 0x2e348dc0
2025-09-28T14:35:23.585 [DEBUG] [Thread-127301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:35:23.605 [DEBUG] [Thread-127301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:35:23.605 [INFO] [Thread-127301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:35:23.609 [DEBUG] [Thread-127301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] client lang: <none>
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] server lang: <none>
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] kex follows: False
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] Compression: none
2025-09-28T14:35:23.610 [DEBUG] [Thread-127301] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:35:23.627 [DEBUG] [Thread-127301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:35:23.627 [DEBUG] [Thread-127301] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:35:23.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:35:23.628 [DEBUG] [Thread-127301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:35:23.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:35:23.630 [DEBUG] [Thread-127301] [transport.py] [_log()] userauth is OK
2025-09-28T14:35:23.630 [DEBUG] [Thread-127301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:35:23.630 [DEBUG] [Thread-127301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:35:23.630 [DEBUG] [Thread-127301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:35:23.630 [DEBUG] [Thread-127301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:35:23.654 [INFO] [Thread-127301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:35:23.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:35:24.231 [DEBUG] [Thread-127301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:35:24.232 [DEBUG] [Thread-127301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:35:24.232 [DEBUG] [Thread-127301] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:35:24.272 [DEBUG] [Thread-127301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:35:24.272 [DEBUG] [Thread-127301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:35:24.277 [DEBUG] [Thread-127301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:35:24.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:35:24.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:35:24.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:35:24.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:35:24.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:35:24.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:35:24.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.524388 -999.00  +18.30  17.79     35   +2.90 1 1 1 1 1   888    0 15.27 -14.44 ----- 15.9 17.8 255.6 28.4 25.0 -27.2 24.4 -26.7 25.0 -25.3 25.9 -27.2
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:35:24.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.524388
2025-09-28T14:35:24.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:35:24.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:35:24.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:35:24.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:35:24.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:35:24.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:35:08', tmtdew=18.48, humidity=28.86, cloud=0.0, wind=21.14, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:35:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:35:24.303 [DEBUG] [Thread-127301] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:35:24.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-28T14:35:27.888 [DEBUG] [Thread-127304 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:42.937 [DEBUG] [Thread-127305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:35:57.970 [DEBUG] [Thread-127306 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:04.433 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:04.435 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:12.999 [DEBUG] [Thread-127307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:15.623 [DEBUG] [Thread-127308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:28.026 [DEBUG] [Thread-127309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:43.060 [DEBUG] [Thread-127310 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:36:58.091 [DEBUG] [Thread-127311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:04.573 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:04.574 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:13.125 [DEBUG] [Thread-127312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:15.671 [DEBUG] [Thread-127313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:28.150 [DEBUG] [Thread-127314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:39.643 [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-28T14:37:43.179 [DEBUG] [Thread-127315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:37:49.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:37:49.652 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:37:49.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-28T14:37:50.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 37, 16), 18.49, 28.63, 0.0, 18.44, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:37:50.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:37:16
2025-09-28T14:37:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:37:50.534 [DEBUG] [Thread-127316] [transport.py] [_log()] starting thread (client mode): 0x2e3df5b0
2025-09-28T14:37:50.534 [DEBUG] [Thread-127316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:37:50.553 [DEBUG] [Thread-127316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:37:50.553 [INFO] [Thread-127316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] client lang: <none>
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] server lang: <none>
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] kex follows: False
2025-09-28T14:37:50.557 [DEBUG] [Thread-127316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] Compression: none
2025-09-28T14:37:50.558 [DEBUG] [Thread-127316] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:37:50.575 [DEBUG] [Thread-127316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:37:50.575 [DEBUG] [Thread-127316] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:37:50.575 [DEBUG] [Thread-127316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:37:50.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:37:50.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:37:50.576 [DEBUG] [Thread-127316] [transport.py] [_log()] userauth is OK
2025-09-28T14:37:50.577 [DEBUG] [Thread-127316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:37:50.577 [DEBUG] [Thread-127316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:37:50.577 [DEBUG] [Thread-127316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:37:50.577 [DEBUG] [Thread-127316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:37:50.598 [INFO] [Thread-127316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:37:50.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:37:51.243 [DEBUG] [Thread-127316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:37:51.243 [DEBUG] [Thread-127316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:37:51.244 [DEBUG] [Thread-127316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:37:51.284 [DEBUG] [Thread-127316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:37:51.284 [DEBUG] [Thread-127316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:37:51.287 [DEBUG] [Thread-127316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:37:51.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:37:51.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:37:51.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:37:51.304 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:37:51.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:37:51.311 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:37:51.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:37:51.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:37:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:37:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.525777 -999.00  +18.90  14.44     34   +2.80 1 1 1 1 1   888    0 15.79 -13.31 ----- 12.2 14.4 227.0 18.1 25.0 -26.8 24.1 -25.6 25.1 -25.4 26.1 -27.1
2025-09-28T14:37:51.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:37:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:37:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.525777
2025-09-28T14:37:51.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:37:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:37:51.313 [DEBUG] [Thread-127316] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:37:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:37:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:37:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:37:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:37:16', tmtdew=18.49, humidity=28.63, cloud=0.0, wind=18.44, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:37:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:37: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-28T14:37:51.406 [DEBUG] [Thread-127319] [transport.py] [_log()] starting thread (client mode): 0x2e38d1e0
2025-09-28T14:37:51.406 [DEBUG] [Thread-127319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:37:51.421 [DEBUG] [Thread-127319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:37:51.421 [INFO] [Thread-127319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:37:51.429 [DEBUG] [Thread-127319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:37:51.429 [DEBUG] [Thread-127319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:37:51.429 [DEBUG] [Thread-127319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:37:51.429 [DEBUG] [Thread-127319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] client lang: <none>
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] server lang: <none>
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] kex follows: False
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] Compression: none
2025-09-28T14:37:51.430 [DEBUG] [Thread-127319] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:37:51.490 [DEBUG] [Thread-127319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:37:51.490 [DEBUG] [Thread-127319] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:37:51.491 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:37:51.491 [DEBUG] [Thread-127319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:37:51.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:37:51.546 [DEBUG] [Thread-127319] [transport.py] [_log()] userauth is OK
2025-09-28T14:37:51.546 [DEBUG] [Thread-127319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:37:51.547 [DEBUG] [Thread-127319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:37:51.547 [DEBUG] [Thread-127319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:37:51.547 [DEBUG] [Thread-127319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:37:51.566 [INFO] [Thread-127319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:37:51.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-28T14:37:51.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:37:52.528 [DEBUG] [Thread-127319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:37:52.528 [DEBUG] [Thread-127319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:37:52.576 [DEBUG] [Thread-127319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:37:52.576 [DEBUG] [Thread-127319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:37:52.585 [DEBUG] [Thread-127319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:37:52.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:37:52.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-28T14:37:52.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-28T14:37:52.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:37:52.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:37:52.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:37:52.619 [DEBUG] [Thread-127319] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:37:58.212 [DEBUG] [Thread-127321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:02.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:38:02.621 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:38:02.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-28T14:38:03.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 37, 48), 19.1, 27.68, 0.0, 22.9, 19.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:38:03.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:37:48
2025-09-28T14:38:03.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:38:03.532 [DEBUG] [Thread-127322] [transport.py] [_log()] starting thread (client mode): 0x2e3dd9f0
2025-09-28T14:38:03.532 [DEBUG] [Thread-127322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:03.552 [DEBUG] [Thread-127322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:38:03.552 [INFO] [Thread-127322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] Compression: none
2025-09-28T14:38:03.554 [DEBUG] [Thread-127322] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:03.572 [DEBUG] [Thread-127322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:03.572 [DEBUG] [Thread-127322] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:38:03.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:38:03.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:38:03.573 [DEBUG] [Thread-127322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:03.582 [INFO] [Thread-127322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:03.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:04.220 [DEBUG] [Thread-127322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:04.220 [DEBUG] [Thread-127322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:04.220 [DEBUG] [Thread-127322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:38:04.261 [DEBUG] [Thread-127322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:04.261 [DEBUG] [Thread-127322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:04.263 [DEBUG] [Thread-127322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:04.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:04.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:38:04.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:38:04.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:38:04.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:04.281 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:38:04.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.525777 -999.00  +18.90  14.44     34   +2.80 1 1 1 1 1   888    0 15.79 -13.31 ----- 12.2 14.4 227.0 18.1 25.0 -26.8 24.1 -25.6 25.1 -25.4 26.1 -27.1
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.525777
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:38:04.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:37:48', tmtdew=19.1, humidity=27.68, cloud=0.0, wind=22.9, temperature=19.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:37:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:38:04.283 [DEBUG] [Thread-127322] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:04.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-28T14:38:04.367 [DEBUG] [Thread-127325] [transport.py] [_log()] starting thread (client mode): 0x2e3ddc30
2025-09-28T14:38:04.367 [DEBUG] [Thread-127325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:04.383 [DEBUG] [Thread-127325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:38:04.383 [INFO] [Thread-127325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] Compression: none
2025-09-28T14:38:04.391 [DEBUG] [Thread-127325] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:04.448 [DEBUG] [Thread-127325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:04.449 [DEBUG] [Thread-127325] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:04.449 [DEBUG] [Thread-127325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:38:04.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:38:04.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:04.511 [DEBUG] [Thread-127325] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:04.511 [DEBUG] [Thread-127325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:04.511 [DEBUG] [Thread-127325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:04.511 [DEBUG] [Thread-127325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:38:04.511 [DEBUG] [Thread-127325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:04.525 [INFO] [Thread-127325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:04.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-28T14:38:04.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:04.714 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:04.714 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:05.500 [DEBUG] [Thread-127325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:05.500 [DEBUG] [Thread-127325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:05.548 [DEBUG] [Thread-127325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:05.548 [DEBUG] [Thread-127325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:05.556 [DEBUG] [Thread-127325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:05.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:05.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-28T14:38:05.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-28T14:38:05.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:05.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:05.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:05.588 [DEBUG] [Thread-127325] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:13.266 [DEBUG] [Thread-127327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:15.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:38:15.591 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:38:15.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-28T14:38:15.699 [DEBUG] [Thread-127328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 37, 48), 19.1, 27.68, 0.0, 22.9, 19.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:38:16.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:37:48
2025-09-28T14:38:16.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:38:16.435 [DEBUG] [Thread-127329] [transport.py] [_log()] starting thread (client mode): 0x2b9cdba0
2025-09-28T14:38:16.435 [DEBUG] [Thread-127329] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:16.455 [DEBUG] [Thread-127329] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:38:16.455 [INFO] [Thread-127329] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:16.459 [DEBUG] [Thread-127329] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] Compression: none
2025-09-28T14:38:16.460 [DEBUG] [Thread-127329] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:16.477 [DEBUG] [Thread-127329] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:16.478 [DEBUG] [Thread-127329] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:16.478 [DEBUG] [Thread-127329] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:38:16.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:38:16.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:16.520 [DEBUG] [Thread-127329] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:16.521 [DEBUG] [Thread-127329] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:16.521 [DEBUG] [Thread-127329] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:16.521 [DEBUG] [Thread-127329] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:38:16.521 [DEBUG] [Thread-127329] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:16.556 [INFO] [Thread-127329] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:16.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:17.228 [DEBUG] [Thread-127329] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:17.229 [DEBUG] [Thread-127329] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:17.229 [DEBUG] [Thread-127329] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:38:17.269 [DEBUG] [Thread-127329] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:17.270 [DEBUG] [Thread-127329] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:17.272 [DEBUG] [Thread-127329] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:17.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:17.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:38:17.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:38:17.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:38:17.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:17.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:38:17.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:17.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:17.294 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:38:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.526124 -999.00  +19.10  13.58     34   +2.80 1 1 1 1 1   888    0 15.36 -11.24 ----- 14.7 13.6 245.9 20.9 25.0 -27.1 24.1 -27.0 25.1 -25.4 26.2 -27.2
2025-09-28T14:38:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:38:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:38:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.526124
2025-09-28T14:38:17.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:38:17.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:38:17.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:38:17.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:38:17.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:38:17.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:37:48', tmtdew=19.1, humidity=27.68, cloud=0.0, wind=22.9, temperature=19.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:37:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:38:17.296 [DEBUG] [Thread-127329] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:17.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-28T14:38:17.395 [DEBUG] [Thread-127332] [transport.py] [_log()] starting thread (client mode): 0x2b9cf6a0
2025-09-28T14:38:17.396 [DEBUG] [Thread-127332] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:17.411 [DEBUG] [Thread-127332] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:38:17.411 [INFO] [Thread-127332] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:38:17.418 [DEBUG] [Thread-127332] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:17.418 [DEBUG] [Thread-127332] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] Compression: none
2025-09-28T14:38:17.419 [DEBUG] [Thread-127332] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:17.478 [DEBUG] [Thread-127332] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:17.478 [DEBUG] [Thread-127332] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:17.479 [DEBUG] [Thread-127332] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:38:17.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:38:17.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:17.534 [DEBUG] [Thread-127332] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:17.535 [DEBUG] [Thread-127332] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:17.535 [DEBUG] [Thread-127332] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:17.535 [DEBUG] [Thread-127332] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:38:17.535 [DEBUG] [Thread-127332] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:17.554 [INFO] [Thread-127332] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:17.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-28T14:38:17.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:18.544 [DEBUG] [Thread-127332] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:18.544 [DEBUG] [Thread-127332] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:18.592 [DEBUG] [Thread-127332] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:18.592 [DEBUG] [Thread-127332] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:18.601 [DEBUG] [Thread-127332] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:18.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:18.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-28T14:38:18.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-28T14:38:18.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:18.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:18.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:18.636 [DEBUG] [Thread-127332] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:28.312 [DEBUG] [Thread-127334 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:28.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:38:28.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:38:28.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-28T14:38:29.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 38, 20), 19.13, 27.61, 0.0, 18.85, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:38:29.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:38:20
2025-09-28T14:38:29.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:38:29.482 [DEBUG] [Thread-127335] [transport.py] [_log()] starting thread (client mode): 0x2b9ccf40
2025-09-28T14:38:29.482 [DEBUG] [Thread-127335] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:29.502 [DEBUG] [Thread-127335] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:38:29.502 [INFO] [Thread-127335] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:38:29.505 [DEBUG] [Thread-127335] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:29.505 [DEBUG] [Thread-127335] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:38:29.505 [DEBUG] [Thread-127335] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:29.505 [DEBUG] [Thread-127335] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] Compression: none
2025-09-28T14:38:29.506 [DEBUG] [Thread-127335] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:29.518 [DEBUG] [Thread-127335] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:29.518 [DEBUG] [Thread-127335] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:29.519 [DEBUG] [Thread-127335] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:38:29.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:38:29.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:29.521 [DEBUG] [Thread-127335] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:29.521 [DEBUG] [Thread-127335] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:29.521 [DEBUG] [Thread-127335] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:29.521 [DEBUG] [Thread-127335] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:38:29.521 [DEBUG] [Thread-127335] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:29.535 [INFO] [Thread-127335] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:29.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:30.191 [DEBUG] [Thread-127335] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:30.192 [DEBUG] [Thread-127335] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:30.192 [DEBUG] [Thread-127335] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:38:30.232 [DEBUG] [Thread-127335] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:30.232 [DEBUG] [Thread-127335] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:30.235 [DEBUG] [Thread-127335] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:30.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:30.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:38:30.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:38:30.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:38:30.257 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:30.259 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:38:30.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:30.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:38:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.526124 -999.00  +19.10  13.58     34   +2.80 1 1 1 1 1   888    0 15.36 -11.24 ----- 14.7 13.6 245.9 20.9 25.0 -27.1 24.1 -27.0 25.1 -25.4 26.2 -27.2
2025-09-28T14:38:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:38:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:38:30.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.526124
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:38:30.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:38:20', tmtdew=19.13, humidity=27.61, cloud=0.0, wind=18.85, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:37:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:38:30.262 [DEBUG] [Thread-127335] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:30.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-28T14:38:30.355 [DEBUG] [Thread-127338] [transport.py] [_log()] starting thread (client mode): 0x2e3de3b0
2025-09-28T14:38:30.356 [DEBUG] [Thread-127338] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:30.371 [DEBUG] [Thread-127338] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:38:30.371 [INFO] [Thread-127338] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:30.379 [DEBUG] [Thread-127338] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:30.380 [DEBUG] [Thread-127338] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:30.380 [DEBUG] [Thread-127338] [transport.py] [_log()] Compression: none
2025-09-28T14:38:30.380 [DEBUG] [Thread-127338] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:30.442 [DEBUG] [Thread-127338] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:30.443 [DEBUG] [Thread-127338] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:30.443 [DEBUG] [Thread-127338] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:38:30.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:38:30.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:30.502 [DEBUG] [Thread-127338] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:30.503 [DEBUG] [Thread-127338] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:30.503 [DEBUG] [Thread-127338] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:30.503 [DEBUG] [Thread-127338] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:38:30.503 [DEBUG] [Thread-127338] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:30.523 [INFO] [Thread-127338] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:30.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-28T14:38:30.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:31.553 [DEBUG] [Thread-127338] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:31.553 [DEBUG] [Thread-127338] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:31.600 [DEBUG] [Thread-127338] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:31.600 [DEBUG] [Thread-127338] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:31.609 [DEBUG] [Thread-127338] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:31.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:31.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-28T14:38:31.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-28T14:38:31.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:31.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:31.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:31.644 [DEBUG] [Thread-127338] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:41.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:38:41.647 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:38:41.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:38:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 38, 20), 19.13, 27.61, 0.0, 18.85, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:38:42.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:38:20
2025-09-28T14:38:42.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:38:42.510 [DEBUG] [Thread-127340] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb90
2025-09-28T14:38:42.510 [DEBUG] [Thread-127340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:42.522 [DEBUG] [Thread-127340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:38:42.522 [INFO] [Thread-127340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] Compression: none
2025-09-28T14:38:42.524 [DEBUG] [Thread-127340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:42.532 [DEBUG] [Thread-127340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:42.533 [DEBUG] [Thread-127340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:42.533 [DEBUG] [Thread-127340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:38:42.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:38:42.533 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:42.534 [DEBUG] [Thread-127340] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:42.534 [DEBUG] [Thread-127340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:42.534 [DEBUG] [Thread-127340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:42.534 [DEBUG] [Thread-127340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:38:42.534 [DEBUG] [Thread-127340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:42.543 [INFO] [Thread-127340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:42.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:43.147 [DEBUG] [Thread-127340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:43.148 [DEBUG] [Thread-127340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:43.148 [DEBUG] [Thread-127340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:38:43.188 [DEBUG] [Thread-127340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:43.188 [DEBUG] [Thread-127340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:43.191 [DEBUG] [Thread-127340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:43.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:43.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:38:43.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:38:43.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:38:43.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:43.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:38:43.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:43.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:38:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.526472 -999.00  +18.90  14.25     33   +2.60 1 1 1 1 1   888    0 15.59 -10.79 ----- 13.2 14.2 255.4 22.8 25.0 -29.2 24.1 -26.6 25.2 -25.9 26.1 -28.4
2025-09-28T14:38:43.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:38:43.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:38:43.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.526472
2025-09-28T14:38:43.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:38:43.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:38:43.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:38:43.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:38:43.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:38:43.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:38:20', tmtdew=19.13, humidity=27.61, cloud=0.0, wind=18.85, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:38:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:38:43.220 [DEBUG] [Thread-127340] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:43.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-28T14:38:43.310 [DEBUG] [Thread-127343] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb20
2025-09-28T14:38:43.310 [DEBUG] [Thread-127343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:43.327 [DEBUG] [Thread-127343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:38:43.327 [INFO] [Thread-127343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:38:43.335 [DEBUG] [Thread-127343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:43.335 [DEBUG] [Thread-127343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:38:43.335 [DEBUG] [Thread-127343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] Compression: none
2025-09-28T14:38:43.336 [DEBUG] [Thread-127343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:43.348 [DEBUG] [Thread-127345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:38:43.395 [DEBUG] [Thread-127343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:43.396 [DEBUG] [Thread-127343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:43.396 [DEBUG] [Thread-127343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:38:43.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:38:43.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:43.451 [DEBUG] [Thread-127343] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:43.451 [DEBUG] [Thread-127343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:43.452 [DEBUG] [Thread-127343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:43.452 [DEBUG] [Thread-127343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:38:43.452 [DEBUG] [Thread-127343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:43.471 [INFO] [Thread-127343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:43.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-28T14:38:43.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:44.518 [DEBUG] [Thread-127343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:44.518 [DEBUG] [Thread-127343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:44.565 [DEBUG] [Thread-127343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:44.565 [DEBUG] [Thread-127343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:44.574 [DEBUG] [Thread-127343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:44.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:44.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')
2025-09-28T14:38:44.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') -> 00000000
2025-09-28T14:38:44.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:44.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:44.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:44.610 [DEBUG] [Thread-127343] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:54.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:38:54.613 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:38:54.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-28T14:38:55.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 38, 52), 18.87, 28.3, 0.0, 17.42, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:38:55.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:38:52
2025-09-28T14:38:55.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:38:55.459 [DEBUG] [Thread-127346] [transport.py] [_log()] starting thread (client mode): 0x2e3df2b0
2025-09-28T14:38:55.459 [DEBUG] [Thread-127346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:55.477 [DEBUG] [Thread-127346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:38:55.477 [INFO] [Thread-127346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:55.479 [DEBUG] [Thread-127346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:55.480 [DEBUG] [Thread-127346] [transport.py] [_log()] Compression: none
2025-09-28T14:38:55.480 [DEBUG] [Thread-127346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:55.495 [DEBUG] [Thread-127346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:55.496 [DEBUG] [Thread-127346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:55.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:38:55.497 [DEBUG] [Thread-127346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:38:55.498 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:55.499 [DEBUG] [Thread-127346] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:55.499 [DEBUG] [Thread-127346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:55.499 [DEBUG] [Thread-127346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:55.499 [DEBUG] [Thread-127346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:38:55.499 [DEBUG] [Thread-127346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:55.514 [INFO] [Thread-127346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:55.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:56.138 [DEBUG] [Thread-127346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:56.138 [DEBUG] [Thread-127346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:56.138 [DEBUG] [Thread-127346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:38:56.179 [DEBUG] [Thread-127346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:56.179 [DEBUG] [Thread-127346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:56.182 [DEBUG] [Thread-127346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:56.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:56.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:38:56.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:38:56.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:38:56.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:56.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:38:56.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.526472 -999.00  +18.90  14.25     33   +2.60 1 1 1 1 1   888    0 15.59 -10.79 ----- 13.2 14.2 255.4 22.8 25.0 -29.2 24.1 -26.6 25.2 -25.9 26.1 -28.4
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:38:56.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.526472
2025-09-28T14:38:56.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:38:56.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:38:56.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:38:56.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:38:56.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:38:56.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:38:52', tmtdew=18.87, humidity=28.3, cloud=0.0, wind=17.42, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:38:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:38:56.209 [DEBUG] [Thread-127346] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:56.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-28T14:38:56.303 [DEBUG] [Thread-127349] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T14:38:56.303 [DEBUG] [Thread-127349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:38:56.319 [DEBUG] [Thread-127349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:38:56.319 [INFO] [Thread-127349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:38:56.329 [DEBUG] [Thread-127349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:38:56.329 [DEBUG] [Thread-127349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:38:56.329 [DEBUG] [Thread-127349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:38:56.329 [DEBUG] [Thread-127349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] client lang: <none>
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] server lang: <none>
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] kex follows: False
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:38:56.330 [DEBUG] [Thread-127349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:38:56.331 [DEBUG] [Thread-127349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:38:56.331 [DEBUG] [Thread-127349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:38:56.331 [DEBUG] [Thread-127349] [transport.py] [_log()] Compression: none
2025-09-28T14:38:56.331 [DEBUG] [Thread-127349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:38:56.388 [DEBUG] [Thread-127349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:38:56.388 [DEBUG] [Thread-127349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:38:56.389 [DEBUG] [Thread-127349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:38:56.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:38:56.390 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:38:56.447 [DEBUG] [Thread-127349] [transport.py] [_log()] userauth is OK
2025-09-28T14:38:56.447 [DEBUG] [Thread-127349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:38:56.447 [DEBUG] [Thread-127349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:38:56.447 [DEBUG] [Thread-127349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:38:56.447 [DEBUG] [Thread-127349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:38:56.467 [INFO] [Thread-127349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:38:56.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-28T14:38:56.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:38:57.566 [DEBUG] [Thread-127349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:38:57.566 [DEBUG] [Thread-127349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:38:57.618 [DEBUG] [Thread-127349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:38:57.618 [DEBUG] [Thread-127349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:38:57.628 [DEBUG] [Thread-127349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:38:57.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:38:57.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-28T14:38:57.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-28T14:38:57.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:38:57.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:38:57.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:38:57.668 [DEBUG] [Thread-127349] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:38:58.393 [DEBUG] [Thread-127351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:04.869 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:04.870 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:07.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:39:07.669 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:39:07.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-28T14:39:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 38, 52), 18.87, 28.3, 0.0, 17.42, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:39:08.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:38:52
2025-09-28T14:39:08.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:39:08.528 [DEBUG] [Thread-127352] [transport.py] [_log()] starting thread (client mode): 0x2e3dd240
2025-09-28T14:39:08.528 [DEBUG] [Thread-127352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:08.548 [DEBUG] [Thread-127352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:39:08.549 [INFO] [Thread-127352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:39:08.551 [DEBUG] [Thread-127352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:08.551 [DEBUG] [Thread-127352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] Compression: none
2025-09-28T14:39:08.552 [DEBUG] [Thread-127352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:08.565 [DEBUG] [Thread-127352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:08.565 [DEBUG] [Thread-127352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:08.566 [DEBUG] [Thread-127352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:39:08.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:39:08.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:08.567 [DEBUG] [Thread-127352] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:08.568 [DEBUG] [Thread-127352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:08.568 [DEBUG] [Thread-127352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:08.568 [DEBUG] [Thread-127352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:39:08.568 [DEBUG] [Thread-127352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:08.593 [INFO] [Thread-127352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:08.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:09.177 [DEBUG] [Thread-127352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:09.177 [DEBUG] [Thread-127352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:09.177 [DEBUG] [Thread-127352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:39:09.218 [DEBUG] [Thread-127352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:09.218 [DEBUG] [Thread-127352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:09.220 [DEBUG] [Thread-127352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:09.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:09.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:39:09.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:39:09.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:39:09.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:09.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:39:09.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.526472 -999.00  +18.90  14.25     33   +2.60 1 1 1 1 1   888    0 15.59 -10.79 ----- 13.2 14.2 255.4 22.8 25.0 -29.2 24.1 -26.6 25.2 -25.9 26.1 -28.4
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:39:09.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.526472
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:39:09.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:38:52', tmtdew=18.87, humidity=28.3, cloud=0.0, wind=17.42, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:38:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:39:09.241 [DEBUG] [Thread-127352] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39: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-28T14:39:09.324 [DEBUG] [Thread-127355] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T14:39:09.325 [DEBUG] [Thread-127355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:09.339 [DEBUG] [Thread-127355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:39:09.339 [INFO] [Thread-127355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:09.347 [DEBUG] [Thread-127355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] Compression: none
2025-09-28T14:39:09.348 [DEBUG] [Thread-127355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:09.407 [DEBUG] [Thread-127355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:09.407 [DEBUG] [Thread-127355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:09.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:39:09.408 [DEBUG] [Thread-127355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:39:09.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:09.463 [DEBUG] [Thread-127355] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:09.463 [DEBUG] [Thread-127355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:09.463 [DEBUG] [Thread-127355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:09.463 [DEBUG] [Thread-127355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:39:09.463 [DEBUG] [Thread-127355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:09.481 [INFO] [Thread-127355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:09.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:39:09.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:10.481 [DEBUG] [Thread-127355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:10.481 [DEBUG] [Thread-127355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:10.529 [DEBUG] [Thread-127355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:10.529 [DEBUG] [Thread-127355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:10.538 [DEBUG] [Thread-127355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:10.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:10.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-28T14:39:10.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-28T14:39:10.564 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:10.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:10.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:10.573 [DEBUG] [Thread-127355] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:13.445 [DEBUG] [Thread-127357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:15.728 [DEBUG] [Thread-127358 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:20.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:39:20.573 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:39:20.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:39:21.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 38, 52), 18.87, 28.3, 0.0, 17.42, 18.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:39:21.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:38:52
2025-09-28T14:39:21.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:39:21.412 [DEBUG] [Thread-127359] [transport.py] [_log()] starting thread (client mode): 0x30ddf550
2025-09-28T14:39:21.413 [DEBUG] [Thread-127359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:21.433 [DEBUG] [Thread-127359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:39:21.434 [INFO] [Thread-127359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:39:21.436 [DEBUG] [Thread-127359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:21.437 [DEBUG] [Thread-127359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] Compression: none
2025-09-28T14:39:21.438 [DEBUG] [Thread-127359] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:21.447 [DEBUG] [Thread-127359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:21.448 [DEBUG] [Thread-127359] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:21.448 [DEBUG] [Thread-127359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:39:21.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:39:21.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:21.450 [DEBUG] [Thread-127359] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:21.451 [DEBUG] [Thread-127359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:21.451 [DEBUG] [Thread-127359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:21.451 [DEBUG] [Thread-127359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:39:21.451 [DEBUG] [Thread-127359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:21.475 [INFO] [Thread-127359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:21.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:22.135 [DEBUG] [Thread-127359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:22.135 [DEBUG] [Thread-127359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:22.136 [DEBUG] [Thread-127359] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:39:22.176 [DEBUG] [Thread-127359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:22.176 [DEBUG] [Thread-127359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:22.179 [DEBUG] [Thread-127359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:22.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:22.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:39:22.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:39:22.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:39:22.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:22.203 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:39:22.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:22.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:39:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527166 -999.00  +19.00   9.63     34   +2.90 1 1 1 1 1   888    0 15.70 -6.05 ----- 9.6 9.6 208.8 16.2 25.0 -26.9 24.1 -27.0 25.1 -25.6 26.2 -27.0
2025-09-28T14:39:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:39:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:39:22.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527166
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:39:22.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:38:52', tmtdew=18.87, humidity=28.3, cloud=0.0, wind=17.42, temperature=18.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:39:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:39:22.206 [DEBUG] [Thread-127359] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:22.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-28T14:39:22.300 [DEBUG] [Thread-127362] [transport.py] [_log()] starting thread (client mode): 0x2e3dd870
2025-09-28T14:39:22.300 [DEBUG] [Thread-127362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:22.315 [DEBUG] [Thread-127362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:39:22.315 [INFO] [Thread-127362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:39:22.322 [DEBUG] [Thread-127362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] Compression: none
2025-09-28T14:39:22.323 [DEBUG] [Thread-127362] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:22.387 [DEBUG] [Thread-127362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:22.387 [DEBUG] [Thread-127362] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:22.388 [DEBUG] [Thread-127362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:39:22.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:39:22.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:22.447 [DEBUG] [Thread-127362] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:22.447 [DEBUG] [Thread-127362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:22.447 [DEBUG] [Thread-127362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:22.447 [DEBUG] [Thread-127362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:39:22.448 [DEBUG] [Thread-127362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:22.466 [INFO] [Thread-127362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:22.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:39:22.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:23.430 [DEBUG] [Thread-127362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:23.430 [DEBUG] [Thread-127362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:23.478 [DEBUG] [Thread-127362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:23.478 [DEBUG] [Thread-127362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:23.487 [DEBUG] [Thread-127362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:23.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:23.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-28T14:39:23.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-28T14:39:23.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:23.514 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:23.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:23.522 [DEBUG] [Thread-127362] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:28.473 [DEBUG] [Thread-127364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:33.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:39:33.525 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:39:33.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-28T14:39:34.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 39, 24), 18.95, 28.16, 0.0, 17.54, 18.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:39:34.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:39:24
2025-09-28T14:39:34.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:39:34.390 [DEBUG] [Thread-127365] [transport.py] [_log()] starting thread (client mode): 0x2e34a200
2025-09-28T14:39:34.390 [DEBUG] [Thread-127365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:34.406 [DEBUG] [Thread-127365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:39:34.406 [INFO] [Thread-127365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:34.409 [DEBUG] [Thread-127365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:34.410 [DEBUG] [Thread-127365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:34.410 [DEBUG] [Thread-127365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:34.410 [DEBUG] [Thread-127365] [transport.py] [_log()] Compression: none
2025-09-28T14:39:34.410 [DEBUG] [Thread-127365] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:34.418 [DEBUG] [Thread-127365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:34.418 [DEBUG] [Thread-127365] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:34.418 [DEBUG] [Thread-127365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:39:34.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:39:34.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:34.419 [DEBUG] [Thread-127365] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:34.419 [DEBUG] [Thread-127365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:34.419 [DEBUG] [Thread-127365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:34.419 [DEBUG] [Thread-127365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:39:34.419 [DEBUG] [Thread-127365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:34.432 [INFO] [Thread-127365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:34.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:35.023 [DEBUG] [Thread-127365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:35.023 [DEBUG] [Thread-127365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:35.024 [DEBUG] [Thread-127365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:39:35.064 [DEBUG] [Thread-127365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:35.064 [DEBUG] [Thread-127365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:35.069 [DEBUG] [Thread-127365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:35.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:35.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:39:35.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:39:35.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:39:35.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:35.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:39:35.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:35.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:39:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527166 -999.00  +19.00   9.63     34   +2.90 1 1 1 1 1   888    0 15.70 -6.05 ----- 9.6 9.6 208.8 16.2 25.0 -26.9 24.1 -27.0 25.1 -25.6 26.2 -27.0
2025-09-28T14:39:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:39:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:39:35.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527166
2025-09-28T14:39:35.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:39:35.092 [DEBUG] [Thread-127365] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:35.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:39:35.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:39:35.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:39:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:39:35.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:39:24', tmtdew=18.95, humidity=28.16, cloud=0.0, wind=17.54, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:39:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:39:35.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-28T14:39:35.189 [DEBUG] [Thread-127368] [transport.py] [_log()] starting thread (client mode): 0x2b9cd3f0
2025-09-28T14:39:35.189 [DEBUG] [Thread-127368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:35.206 [DEBUG] [Thread-127368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:39:35.206 [INFO] [Thread-127368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:39:35.214 [DEBUG] [Thread-127368] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:35.214 [DEBUG] [Thread-127368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:39:35.214 [DEBUG] [Thread-127368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:35.214 [DEBUG] [Thread-127368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:35.215 [DEBUG] [Thread-127368] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:35.216 [DEBUG] [Thread-127368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:35.216 [DEBUG] [Thread-127368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:35.216 [DEBUG] [Thread-127368] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:35.216 [DEBUG] [Thread-127368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:35.216 [DEBUG] [Thread-127368] [transport.py] [_log()] Compression: none
2025-09-28T14:39:35.217 [DEBUG] [Thread-127368] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:35.271 [DEBUG] [Thread-127368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:35.271 [DEBUG] [Thread-127368] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:35.272 [DEBUG] [Thread-127368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:39:35.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:39:35.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:35.327 [DEBUG] [Thread-127368] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:35.327 [DEBUG] [Thread-127368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:35.327 [DEBUG] [Thread-127368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:35.327 [DEBUG] [Thread-127368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:39:35.327 [DEBUG] [Thread-127368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:35.348 [INFO] [Thread-127368] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:35.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-28T14:39:35.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:36.333 [DEBUG] [Thread-127368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:36.333 [DEBUG] [Thread-127368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:36.380 [DEBUG] [Thread-127368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:36.380 [DEBUG] [Thread-127368] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:36.390 [DEBUG] [Thread-127368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:36.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:36.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-28T14:39:36.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-28T14:39:36.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:36.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:36.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:36.425 [DEBUG] [Thread-127368] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:43.526 [DEBUG] [Thread-127370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:46.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:39:46.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:39:46.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-28T14:39:47.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 39, 24), 18.95, 28.16, 0.0, 17.54, 18.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:39:47.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:39:24
2025-09-28T14:39:47.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:39:47.283 [DEBUG] [Thread-127371] [transport.py] [_log()] starting thread (client mode): 0x2e3f9de0
2025-09-28T14:39:47.283 [DEBUG] [Thread-127371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:47.303 [DEBUG] [Thread-127371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:39:47.303 [INFO] [Thread-127371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:39:47.306 [DEBUG] [Thread-127371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:47.306 [DEBUG] [Thread-127371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:39:47.306 [DEBUG] [Thread-127371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] Compression: none
2025-09-28T14:39:47.307 [DEBUG] [Thread-127371] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:47.324 [DEBUG] [Thread-127371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:47.324 [DEBUG] [Thread-127371] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:47.325 [DEBUG] [Thread-127371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:39:47.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:39:47.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:47.372 [DEBUG] [Thread-127371] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:47.373 [DEBUG] [Thread-127371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:47.373 [DEBUG] [Thread-127371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:47.373 [DEBUG] [Thread-127371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:39:47.373 [DEBUG] [Thread-127371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:47.393 [INFO] [Thread-127371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:47.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:47.967 [DEBUG] [Thread-127371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:47.968 [DEBUG] [Thread-127371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:47.968 [DEBUG] [Thread-127371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:39:48.009 [DEBUG] [Thread-127371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:48.009 [DEBUG] [Thread-127371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:48.013 [DEBUG] [Thread-127371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:48.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:48.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:39:48.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:39:48.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:39:48.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:48.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:39:48.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:48.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:48.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:39:48.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527513 -999.00  +19.10  16.80     33   +2.60 1 1 1 1 1   888    0 15.74 -2.08 ----- 16.8 16.8 255.6 20.2 25.1 -27.3 24.2 -25.5 25.3 -25.3 26.4 -27.2
2025-09-28T14:39:48.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:39:48.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:39:48.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527513
2025-09-28T14:39:48.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:39:48.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:39:48.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:39:48.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:39:48.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:39:48.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:39:24', tmtdew=18.95, humidity=28.16, cloud=0.0, wind=17.54, temperature=18.83, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:39:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:39:48.033 [DEBUG] [Thread-127371] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:48.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-28T14:39:48.127 [DEBUG] [Thread-127374] [transport.py] [_log()] starting thread (client mode): 0x2e3f8c40
2025-09-28T14:39:48.127 [DEBUG] [Thread-127374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:39:48.143 [DEBUG] [Thread-127374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:39:48.143 [INFO] [Thread-127374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:39:48.151 [DEBUG] [Thread-127374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:39:48.151 [DEBUG] [Thread-127374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:39:48.151 [DEBUG] [Thread-127374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:39:48.151 [DEBUG] [Thread-127374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:48.151 [DEBUG] [Thread-127374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] client lang: <none>
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] server lang: <none>
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] kex follows: False
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:39:48.152 [DEBUG] [Thread-127374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:39:48.153 [DEBUG] [Thread-127374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:39:48.153 [DEBUG] [Thread-127374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:39:48.153 [DEBUG] [Thread-127374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:39:48.153 [DEBUG] [Thread-127374] [transport.py] [_log()] Compression: none
2025-09-28T14:39:48.153 [DEBUG] [Thread-127374] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:39:48.211 [DEBUG] [Thread-127374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:39:48.211 [DEBUG] [Thread-127374] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:39:48.212 [DEBUG] [Thread-127374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:39:48.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:39:48.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:39:48.267 [DEBUG] [Thread-127374] [transport.py] [_log()] userauth is OK
2025-09-28T14:39:48.267 [DEBUG] [Thread-127374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:39:48.268 [DEBUG] [Thread-127374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:39:48.268 [DEBUG] [Thread-127374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:39:48.268 [DEBUG] [Thread-127374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:39:48.287 [INFO] [Thread-127374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:39:48.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-28T14:39:48.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:39:49.253 [DEBUG] [Thread-127374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:39:49.253 [DEBUG] [Thread-127374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:39:49.301 [DEBUG] [Thread-127374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:39:49.301 [DEBUG] [Thread-127374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:39:49.310 [DEBUG] [Thread-127374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:39:49.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:39:49.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-28T14:39:49.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-28T14:39:49.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:39:49.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:39:49.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:39:49.345 [DEBUG] [Thread-127374] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:39:58.575 [DEBUG] [Thread-127376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:39:59.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:39:59.347 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:39:59.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-28T14:39:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 39, 55), 19.08, 27.7, 0.0, 17.73, 18.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:39:59.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:39:55
2025-09-28T14:40:00.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:40:00.214 [DEBUG] [Thread-127377] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb80
2025-09-28T14:40:00.214 [DEBUG] [Thread-127377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:00.236 [DEBUG] [Thread-127377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:40:00.236 [INFO] [Thread-127377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:00.240 [DEBUG] [Thread-127377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] Compression: none
2025-09-28T14:40:00.241 [DEBUG] [Thread-127377] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:00.260 [DEBUG] [Thread-127377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:00.261 [DEBUG] [Thread-127377] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:00.261 [DEBUG] [Thread-127377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:40:00.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:40:00.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:00.263 [DEBUG] [Thread-127377] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:00.263 [DEBUG] [Thread-127377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:00.264 [DEBUG] [Thread-127377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:00.264 [DEBUG] [Thread-127377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:40:00.264 [DEBUG] [Thread-127377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:00.286 [INFO] [Thread-127377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:00.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:01.049 [DEBUG] [Thread-127377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:01.049 [DEBUG] [Thread-127377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:01.050 [DEBUG] [Thread-127377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:40:01.090 [DEBUG] [Thread-127377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:01.090 [DEBUG] [Thread-127377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:01.093 [DEBUG] [Thread-127377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:01.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:01.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:40:01.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:40:01.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:40:01.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:01.115 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:40:01.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:01.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:40:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527513 -999.00  +19.10  16.80     33   +2.60 1 1 1 1 1   888    0 15.74 -2.08 ----- 16.8 16.8 255.6 20.2 25.1 -27.3 24.2 -25.5 25.3 -25.3 26.4 -27.2
2025-09-28T14:40:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:40:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:40:01.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527513
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:40:01.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:39:55', tmtdew=19.08, humidity=27.7, cloud=0.0, wind=17.73, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:39:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:40:01.118 [DEBUG] [Thread-127377] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:01.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-28T14:40:01.218 [DEBUG] [Thread-127380] [transport.py] [_log()] starting thread (client mode): 0x2b94c490
2025-09-28T14:40:01.219 [DEBUG] [Thread-127380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:01.237 [DEBUG] [Thread-127380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:40:01.237 [INFO] [Thread-127380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:01.245 [DEBUG] [Thread-127380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] Compression: none
2025-09-28T14:40:01.246 [DEBUG] [Thread-127380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:01.302 [DEBUG] [Thread-127380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:01.303 [DEBUG] [Thread-127380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:01.303 [DEBUG] [Thread-127380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:40:01.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:40:01.304 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:01.359 [DEBUG] [Thread-127380] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:01.360 [DEBUG] [Thread-127380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:01.360 [DEBUG] [Thread-127380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:01.360 [DEBUG] [Thread-127380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:40:01.360 [DEBUG] [Thread-127380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:01.380 [INFO] [Thread-127380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:01.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:40:01.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:02.359 [DEBUG] [Thread-127380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:02.360 [DEBUG] [Thread-127380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:02.407 [DEBUG] [Thread-127380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:02.407 [DEBUG] [Thread-127380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:02.417 [DEBUG] [Thread-127380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:02.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:02.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-28T14:40:02.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-28T14:40:02.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:02.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:02.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:02.451 [DEBUG] [Thread-127380] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:05.012 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:05.013 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:12.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:40:12.449 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:40:12.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-28T14:40:13.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 39, 55), 19.08, 27.7, 0.0, 17.73, 18.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:40:13.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:39:55
2025-09-28T14:40:13.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:40:13.299 [DEBUG] [Thread-127382] [transport.py] [_log()] starting thread (client mode): 0x2e3f84f0
2025-09-28T14:40:13.299 [DEBUG] [Thread-127382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:13.319 [DEBUG] [Thread-127382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:40:13.319 [INFO] [Thread-127382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] Compression: none
2025-09-28T14:40:13.322 [DEBUG] [Thread-127382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:13.340 [DEBUG] [Thread-127382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:13.340 [DEBUG] [Thread-127382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:13.341 [DEBUG] [Thread-127382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:40:13.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:40:13.342 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:13.343 [DEBUG] [Thread-127382] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:13.343 [DEBUG] [Thread-127382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:13.343 [DEBUG] [Thread-127382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:13.343 [DEBUG] [Thread-127382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:40:13.343 [DEBUG] [Thread-127382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:13.366 [INFO] [Thread-127382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:13.367 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:13.632 [DEBUG] [Thread-127384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:15.770 [DEBUG] [Thread-127385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:22.881 [DEBUG] [Thread-127382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:22.881 [DEBUG] [Thread-127382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:22.881 [DEBUG] [Thread-127382] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:40:22.921 [DEBUG] [Thread-127382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:22.921 [DEBUG] [Thread-127382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:22.924 [DEBUG] [Thread-127382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:23.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:23.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:40:23.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:40:23.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:40:23.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:23.039 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:40:23.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:23.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:23.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:40:23.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527513 -999.00  +19.10  16.80     33   +2.60 1 1 1 1 1   888    0 15.74 -2.08 ----- 16.8 16.8 255.6 20.2 25.1 -27.3 24.2 -25.5 25.3 -25.3 26.4 -27.2
2025-09-28T14:40:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:40:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:40:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527513
2025-09-28T14:40:23.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:40:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:40:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:40:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:40:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:40:23.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:39:55', tmtdew=19.08, humidity=27.7, cloud=0.0, wind=17.73, temperature=18.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:39:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:40:23.042 [DEBUG] [Thread-127382] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:23.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:40:23.139 [DEBUG] [Thread-127387] [transport.py] [_log()] starting thread (client mode): 0x2e3493f0
2025-09-28T14:40:23.139 [DEBUG] [Thread-127387] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:23.154 [DEBUG] [Thread-127387] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:40:23.154 [INFO] [Thread-127387] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:23.162 [DEBUG] [Thread-127387] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:23.163 [DEBUG] [Thread-127387] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:23.163 [DEBUG] [Thread-127387] [transport.py] [_log()] Compression: none
2025-09-28T14:40:23.163 [DEBUG] [Thread-127387] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:23.219 [DEBUG] [Thread-127387] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:23.220 [DEBUG] [Thread-127387] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:23.220 [DEBUG] [Thread-127387] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:40:23.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:40:23.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:23.275 [DEBUG] [Thread-127387] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:23.276 [DEBUG] [Thread-127387] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:23.276 [DEBUG] [Thread-127387] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:23.276 [DEBUG] [Thread-127387] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:40:23.276 [DEBUG] [Thread-127387] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:23.295 [INFO] [Thread-127387] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:23.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-28T14:40:23.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:24.247 [DEBUG] [Thread-127387] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:24.248 [DEBUG] [Thread-127387] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:24.295 [DEBUG] [Thread-127387] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:24.295 [DEBUG] [Thread-127387] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:24.304 [DEBUG] [Thread-127387] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:24.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:24.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-28T14:40:24.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-28T14:40:24.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:24.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:24.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:24.339 [DEBUG] [Thread-127387] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:28.682 [DEBUG] [Thread-127389 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:34.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:40:34.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:40:34.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-28T14:40:34.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 40, 27), 19.06, 27.76, 0.0, 15.56, 18.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:40:34.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:40:27
2025-09-28T14:40:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:40:35.185 [DEBUG] [Thread-127390] [transport.py] [_log()] starting thread (client mode): 0x30ddee30
2025-09-28T14:40:35.186 [DEBUG] [Thread-127390] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:35.205 [DEBUG] [Thread-127390] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:40:35.205 [INFO] [Thread-127390] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] Compression: none
2025-09-28T14:40:35.208 [DEBUG] [Thread-127390] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:35.225 [DEBUG] [Thread-127390] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:35.226 [DEBUG] [Thread-127390] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:35.226 [DEBUG] [Thread-127390] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:40:35.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:40:35.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:35.228 [DEBUG] [Thread-127390] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:35.228 [DEBUG] [Thread-127390] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:35.228 [DEBUG] [Thread-127390] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:35.228 [DEBUG] [Thread-127390] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:40:35.229 [DEBUG] [Thread-127390] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:35.244 [INFO] [Thread-127390] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:35.244 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:35.856 [DEBUG] [Thread-127390] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:35.857 [DEBUG] [Thread-127390] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:35.857 [DEBUG] [Thread-127390] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:40:35.897 [DEBUG] [Thread-127390] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:35.897 [DEBUG] [Thread-127390] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:35.899 [DEBUG] [Thread-127390] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:35.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:35.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:40:35.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:40:35.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:40:35.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:35.922 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:40:35.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:35.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:35.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:40:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527860 -999.00  +18.40  15.44     34   +2.30 1 1 1 1 1   888    0 16.17 3.42 ----- 15.4 15.4 252.4 20.2 25.1 -27.1 24.3 -26.1 25.2 -25.9 26.2 -28.0
2025-09-28T14:40:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:40:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:40:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527860
2025-09-28T14:40:35.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:40:35.923 [DEBUG] [Thread-127390] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:40:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:40:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:40:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:40:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:40:27', tmtdew=19.06, humidity=27.76, cloud=0.0, wind=15.56, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:40:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:40:36.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-28T14:40:36.013 [DEBUG] [Thread-127393] [transport.py] [_log()] starting thread (client mode): 0x2e3fa830
2025-09-28T14:40:36.013 [DEBUG] [Thread-127393] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:36.029 [DEBUG] [Thread-127393] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:40:36.029 [INFO] [Thread-127393] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:36.037 [DEBUG] [Thread-127393] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] Compression: none
2025-09-28T14:40:36.038 [DEBUG] [Thread-127393] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:36.096 [DEBUG] [Thread-127393] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:36.097 [DEBUG] [Thread-127393] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:36.097 [DEBUG] [Thread-127393] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:40:36.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:40:36.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:36.157 [DEBUG] [Thread-127393] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:36.157 [DEBUG] [Thread-127393] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:36.157 [DEBUG] [Thread-127393] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:36.157 [DEBUG] [Thread-127393] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:40:36.157 [DEBUG] [Thread-127393] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:36.176 [INFO] [Thread-127393] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:36.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-28T14:40:36.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:37.203 [DEBUG] [Thread-127393] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:37.203 [DEBUG] [Thread-127393] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:37.252 [DEBUG] [Thread-127393] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:37.252 [DEBUG] [Thread-127393] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:37.261 [DEBUG] [Thread-127393] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:37.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:37.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')
2025-09-28T14:40:37.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-28T14:40:37.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:37.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:37.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:37.294 [DEBUG] [Thread-127393] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:43.710 [DEBUG] [Thread-127395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:40:47.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:40:47.297 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:40:47.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-28T14:40:47.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 40, 27), 19.06, 27.76, 0.0, 15.56, 18.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:40:47.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:40:27
2025-09-28T14:40:47.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:40:48.138 [DEBUG] [Thread-127396] [transport.py] [_log()] starting thread (client mode): 0x2e3fb550
2025-09-28T14:40:48.138 [DEBUG] [Thread-127396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:48.158 [DEBUG] [Thread-127396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:40:48.159 [INFO] [Thread-127396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:48.161 [DEBUG] [Thread-127396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] Compression: none
2025-09-28T14:40:48.162 [DEBUG] [Thread-127396] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:48.179 [DEBUG] [Thread-127396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:48.179 [DEBUG] [Thread-127396] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:48.180 [DEBUG] [Thread-127396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:40:48.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:40:48.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:48.181 [DEBUG] [Thread-127396] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:48.182 [DEBUG] [Thread-127396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:48.182 [DEBUG] [Thread-127396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:48.182 [DEBUG] [Thread-127396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:40:48.182 [DEBUG] [Thread-127396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:48.205 [INFO] [Thread-127396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:48.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:48.935 [DEBUG] [Thread-127396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:48.936 [DEBUG] [Thread-127396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:48.936 [DEBUG] [Thread-127396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:40:48.976 [DEBUG] [Thread-127396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:48.976 [DEBUG] [Thread-127396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:48.979 [DEBUG] [Thread-127396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:48.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:48.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:40:48.992 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:40:48.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:40:48.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:48.999 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:40:48.999 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:48.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.527860 -999.00  +18.40  15.44     34   +2.30 1 1 1 1 1   888    0 16.17 3.42 ----- 15.4 15.4 252.4 20.2 25.1 -27.1 24.3 -26.1 25.2 -25.9 26.2 -28.0
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.527860
2025-09-28T14:40:49.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:40:49.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:40:49.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:40:49.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:40:49.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:40:49.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:40:27', tmtdew=19.06, humidity=27.76, cloud=0.0, wind=15.56, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:40:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:40:49.001 [DEBUG] [Thread-127396] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:49.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-28T14:40:49.095 [DEBUG] [Thread-127399] [transport.py] [_log()] starting thread (client mode): 0x2b94c070
2025-09-28T14:40:49.096 [DEBUG] [Thread-127399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:40:49.110 [DEBUG] [Thread-127399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:40:49.110 [INFO] [Thread-127399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:40:49.118 [DEBUG] [Thread-127399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:40:49.118 [DEBUG] [Thread-127399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] client lang: <none>
2025-09-28T14:40:49.119 [DEBUG] [Thread-127399] [transport.py] [_log()] server lang: <none>
2025-09-28T14:40:49.120 [DEBUG] [Thread-127399] [transport.py] [_log()] kex follows: False
2025-09-28T14:40:49.120 [DEBUG] [Thread-127399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:40:49.120 [DEBUG] [Thread-127399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:40:49.120 [DEBUG] [Thread-127399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:40:49.120 [DEBUG] [Thread-127399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:40:49.122 [DEBUG] [Thread-127399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:40:49.122 [DEBUG] [Thread-127399] [transport.py] [_log()] Compression: none
2025-09-28T14:40:49.122 [DEBUG] [Thread-127399] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:40:49.176 [DEBUG] [Thread-127399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:40:49.176 [DEBUG] [Thread-127399] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:40:49.177 [DEBUG] [Thread-127399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:40:49.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:40:49.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:40:49.232 [DEBUG] [Thread-127399] [transport.py] [_log()] userauth is OK
2025-09-28T14:40:49.232 [DEBUG] [Thread-127399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:40:49.232 [DEBUG] [Thread-127399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:40:49.232 [DEBUG] [Thread-127399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:40:49.232 [DEBUG] [Thread-127399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:40:49.252 [INFO] [Thread-127399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:40:49.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-28T14:40:49.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:40:50.225 [DEBUG] [Thread-127399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:40:50.225 [DEBUG] [Thread-127399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:40:50.275 [DEBUG] [Thread-127399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:40:50.275 [DEBUG] [Thread-127399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:40:50.285 [DEBUG] [Thread-127399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:40:50.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:40:50.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-28T14:40:50.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-28T14:40:50.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:40:50.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:40:50.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:40:50.331 [DEBUG] [Thread-127399] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:40:58.754 [DEBUG] [Thread-127401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:00.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:41:00.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:41:00.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-28T14:41:00.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 40, 27), 19.06, 27.76, 0.0, 15.56, 18.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:41:00.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:40:27
2025-09-28T14:41:01.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:41:01.227 [DEBUG] [Thread-127402] [transport.py] [_log()] starting thread (client mode): 0x2b94ebc0
2025-09-28T14:41:01.227 [DEBUG] [Thread-127402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:01.248 [DEBUG] [Thread-127402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:41:01.248 [INFO] [Thread-127402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] Compression: none
2025-09-28T14:41:01.251 [DEBUG] [Thread-127402] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:01.267 [DEBUG] [Thread-127402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:01.267 [DEBUG] [Thread-127402] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:01.267 [DEBUG] [Thread-127402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:41:01.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:41:01.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:01.309 [DEBUG] [Thread-127402] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:01.309 [DEBUG] [Thread-127402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:01.309 [DEBUG] [Thread-127402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:01.309 [DEBUG] [Thread-127402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:41:01.309 [DEBUG] [Thread-127402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:01.324 [INFO] [Thread-127402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:01.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:01.950 [DEBUG] [Thread-127402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:01.950 [DEBUG] [Thread-127402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:01.950 [DEBUG] [Thread-127402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:41:01.991 [DEBUG] [Thread-127402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:01.991 [DEBUG] [Thread-127402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:01.994 [DEBUG] [Thread-127402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:02.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:02.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:41:02.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:41:02.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:41:02.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:02.013 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:41:02.013 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:02.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:02.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:41:02.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528208 -999.00  +18.30  10.72     34   +2.40 1 1 1 1 1   888    0 15.92 5.42 ----- 10.7 10.7 252.8 19.4 25.2 -26.8 24.3 -25.5 25.3 -24.8 26.4 -26.2
2025-09-28T14:41:02.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:41:02.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:41:02.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528208
2025-09-28T14:41:02.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:41:02.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:41:02.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:41:02.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:41:02.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:41:02.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:40:27', tmtdew=19.06, humidity=27.76, cloud=0.0, wind=15.56, temperature=18.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:40:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:41:02.015 [DEBUG] [Thread-127402] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:02.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-28T14:41:02.102 [DEBUG] [Thread-127405] [transport.py] [_log()] starting thread (client mode): 0x30ddc550
2025-09-28T14:41:02.103 [DEBUG] [Thread-127405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:02.118 [DEBUG] [Thread-127405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:41:02.118 [INFO] [Thread-127405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:41:02.125 [DEBUG] [Thread-127405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:02.125 [DEBUG] [Thread-127405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:41:02.125 [DEBUG] [Thread-127405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] Compression: none
2025-09-28T14:41:02.126 [DEBUG] [Thread-127405] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:02.182 [DEBUG] [Thread-127405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:02.182 [DEBUG] [Thread-127405] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:02.182 [DEBUG] [Thread-127405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:41:02.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:41:02.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:02.239 [DEBUG] [Thread-127405] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:02.240 [DEBUG] [Thread-127405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:02.240 [DEBUG] [Thread-127405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:02.240 [DEBUG] [Thread-127405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:41:02.240 [DEBUG] [Thread-127405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:02.264 [INFO] [Thread-127405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:02.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-28T14:41:02.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:03.274 [DEBUG] [Thread-127405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:03.275 [DEBUG] [Thread-127405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:03.323 [DEBUG] [Thread-127405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:03.323 [DEBUG] [Thread-127405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:03.332 [DEBUG] [Thread-127405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:03.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:03.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')
2025-09-28T14:41:03.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-28T14:41:03.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:03.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:03.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:03.368 [DEBUG] [Thread-127405] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:05.152 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:05.153 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:41:13.370 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:41:13.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:41:13.781 [DEBUG] [Thread-127407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:13.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 40, 59), 18.96, 27.76, 0.0, 15.93, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:41:13.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:40:59
2025-09-28T14:41:14.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:41:14.213 [DEBUG] [Thread-127408] [transport.py] [_log()] starting thread (client mode): 0x2b94f820
2025-09-28T14:41:14.213 [DEBUG] [Thread-127408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:14.233 [DEBUG] [Thread-127408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:41:14.234 [INFO] [Thread-127408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] Compression: none
2025-09-28T14:41:14.237 [DEBUG] [Thread-127408] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:14.254 [DEBUG] [Thread-127408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:14.255 [DEBUG] [Thread-127408] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:14.255 [DEBUG] [Thread-127408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:41:14.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:41:14.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:14.257 [DEBUG] [Thread-127408] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:14.257 [DEBUG] [Thread-127408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:14.257 [DEBUG] [Thread-127408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:14.257 [DEBUG] [Thread-127408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:41:14.258 [DEBUG] [Thread-127408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:14.282 [INFO] [Thread-127408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:14.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:15.067 [DEBUG] [Thread-127408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:15.067 [DEBUG] [Thread-127408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:15.067 [DEBUG] [Thread-127408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:41:15.108 [DEBUG] [Thread-127408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:15.108 [DEBUG] [Thread-127408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:15.110 [DEBUG] [Thread-127408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:15.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:15.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:41:15.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:41:15.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:41:15.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:15.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:41:15.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528208 -999.00  +18.30  10.72     34   +2.40 1 1 1 1 1   888    0 15.92 5.42 ----- 10.7 10.7 252.8 19.4 25.2 -26.8 24.3 -25.5 25.3 -24.8 26.4 -26.2
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528208
2025-09-28T14:41:15.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:41:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:41:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:41:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:41:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:41:15.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:40:59', tmtdew=18.96, humidity=27.76, cloud=0.0, wind=15.93, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:40:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:41:15.128 [DEBUG] [Thread-127408] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:15.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-28T14:41:15.210 [DEBUG] [Thread-127411] [transport.py] [_log()] starting thread (client mode): 0x2b94ec80
2025-09-28T14:41:15.210 [DEBUG] [Thread-127411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:15.227 [DEBUG] [Thread-127411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:41:15.227 [INFO] [Thread-127411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:15.234 [DEBUG] [Thread-127411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] Compression: none
2025-09-28T14:41:15.235 [DEBUG] [Thread-127411] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:15.296 [DEBUG] [Thread-127411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:15.297 [DEBUG] [Thread-127411] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:15.297 [DEBUG] [Thread-127411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:41:15.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:41:15.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:15.352 [DEBUG] [Thread-127411] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:15.352 [DEBUG] [Thread-127411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:15.352 [DEBUG] [Thread-127411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:15.352 [DEBUG] [Thread-127411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:41:15.352 [DEBUG] [Thread-127411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:15.372 [INFO] [Thread-127411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:15.372 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:41:15.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:15.803 [DEBUG] [Thread-127413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:16.361 [DEBUG] [Thread-127411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:16.361 [DEBUG] [Thread-127411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:16.409 [DEBUG] [Thread-127411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:16.409 [DEBUG] [Thread-127411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:16.418 [DEBUG] [Thread-127411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:16.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:16.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-28T14:41:16.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-28T14:41:16.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:16.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:16.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:16.452 [DEBUG] [Thread-127411] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:26.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:41:26.446 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:41:26.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-28T14:41:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 40, 59), 18.96, 27.76, 0.0, 15.93, 18.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:41:27.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:40:59
2025-09-28T14:41:27.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:41:27.289 [DEBUG] [Thread-127414] [transport.py] [_log()] starting thread (client mode): 0x30dde380
2025-09-28T14:41:27.289 [DEBUG] [Thread-127414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:27.309 [DEBUG] [Thread-127414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:41:27.309 [INFO] [Thread-127414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:27.313 [DEBUG] [Thread-127414] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] Compression: none
2025-09-28T14:41:27.314 [DEBUG] [Thread-127414] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:27.331 [DEBUG] [Thread-127414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:27.331 [DEBUG] [Thread-127414] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:27.332 [DEBUG] [Thread-127414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:41:27.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:41:27.333 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:27.334 [DEBUG] [Thread-127414] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:27.334 [DEBUG] [Thread-127414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:27.334 [DEBUG] [Thread-127414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:27.334 [DEBUG] [Thread-127414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:41:27.334 [DEBUG] [Thread-127414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:27.356 [INFO] [Thread-127414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:27.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:28.131 [DEBUG] [Thread-127414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:28.131 [DEBUG] [Thread-127414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:28.131 [DEBUG] [Thread-127414] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:41:28.172 [DEBUG] [Thread-127414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:28.172 [DEBUG] [Thread-127414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:28.175 [DEBUG] [Thread-127414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:28.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:28.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:41:28.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:41:28.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:41:28.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:28.192 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:41:28.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528208 -999.00  +18.30  10.72     34   +2.40 1 1 1 1 1   888    0 15.92 5.42 ----- 10.7 10.7 252.8 19.4 25.2 -26.8 24.3 -25.5 25.3 -24.8 26.4 -26.2
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:41:28.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528208
2025-09-28T14:41:28.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:41:28.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:41:28.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:41:28.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:41:28.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:41:28.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:40:59', tmtdew=18.96, humidity=27.76, cloud=0.0, wind=15.93, temperature=18.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:40:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:41:28.195 [DEBUG] [Thread-127414] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:28.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-28T14:41:28.293 [DEBUG] [Thread-127417] [transport.py] [_log()] starting thread (client mode): 0x2e3f8220
2025-09-28T14:41:28.293 [DEBUG] [Thread-127417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:28.307 [DEBUG] [Thread-127417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:41:28.308 [INFO] [Thread-127417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:41:28.315 [DEBUG] [Thread-127417] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:28.315 [DEBUG] [Thread-127417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:28.316 [DEBUG] [Thread-127417] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] Compression: none
2025-09-28T14:41:28.317 [DEBUG] [Thread-127417] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:28.376 [DEBUG] [Thread-127417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:28.376 [DEBUG] [Thread-127417] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:28.377 [DEBUG] [Thread-127417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:41:28.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:41:28.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:28.432 [DEBUG] [Thread-127417] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:28.432 [DEBUG] [Thread-127417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:28.432 [DEBUG] [Thread-127417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:28.432 [DEBUG] [Thread-127417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:41:28.432 [DEBUG] [Thread-127417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:28.451 [INFO] [Thread-127417] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:28.452 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:41:28.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:28.825 [DEBUG] [Thread-127419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:29.411 [DEBUG] [Thread-127417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:29.411 [DEBUG] [Thread-127417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:29.459 [DEBUG] [Thread-127417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:29.459 [DEBUG] [Thread-127417] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:29.468 [DEBUG] [Thread-127417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:29.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:29.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-28T14:41:29.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') -> 00000000
2025-09-28T14:41:29.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:29.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:29.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:29.502 [DEBUG] [Thread-127417] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:39.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:41:39.504 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:41:39.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:41:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 41, 31), 19.21, 27.28, 0.0, 14.96, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:41:40.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:41:31
2025-09-28T14:41:40.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:41:40.373 [DEBUG] [Thread-127420] [transport.py] [_log()] starting thread (client mode): 0x287072e0
2025-09-28T14:41:40.373 [DEBUG] [Thread-127420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:40.396 [DEBUG] [Thread-127420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:41:40.396 [INFO] [Thread-127420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] Compression: none
2025-09-28T14:41:40.400 [DEBUG] [Thread-127420] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:40.415 [DEBUG] [Thread-127420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:40.415 [DEBUG] [Thread-127420] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:40.416 [DEBUG] [Thread-127420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:41:40.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:41:40.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:40.417 [DEBUG] [Thread-127420] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:40.417 [DEBUG] [Thread-127420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:40.417 [DEBUG] [Thread-127420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:40.417 [DEBUG] [Thread-127420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:41:40.417 [DEBUG] [Thread-127420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:40.438 [INFO] [Thread-127420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:40.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:41.072 [DEBUG] [Thread-127420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:41.073 [DEBUG] [Thread-127420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:41.073 [DEBUG] [Thread-127420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:41:41.114 [DEBUG] [Thread-127420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:41.114 [DEBUG] [Thread-127420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:41.116 [DEBUG] [Thread-127420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:41.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:41.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:41:41.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:41:41.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:41:41.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:41.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:41:41.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528555 -999.00  +18.80  11.49     35   +3.20 1 1 1 1 1   888    0 15.79 7.32 ----- 11.5 11.5 246.5 22.3 25.2 -26.7 24.4 -25.1 25.2 -24.8 26.2 -26.4
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:41:41.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528555
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:41:41.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:41:31', tmtdew=19.21, humidity=27.28, cloud=0.0, wind=14.96, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:41:07.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:41:41.131 [DEBUG] [Thread-127420] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:41.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-28T14:41:41.217 [DEBUG] [Thread-127423] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd30
2025-09-28T14:41:41.217 [DEBUG] [Thread-127423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:41.232 [DEBUG] [Thread-127423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:41:41.232 [INFO] [Thread-127423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:41:41.239 [DEBUG] [Thread-127423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:41.239 [DEBUG] [Thread-127423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] Compression: none
2025-09-28T14:41:41.240 [DEBUG] [Thread-127423] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:41.301 [DEBUG] [Thread-127423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:41.301 [DEBUG] [Thread-127423] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:41.302 [DEBUG] [Thread-127423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:41:41.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:41:41.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:41.359 [DEBUG] [Thread-127423] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:41.359 [DEBUG] [Thread-127423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:41.359 [DEBUG] [Thread-127423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:41.359 [DEBUG] [Thread-127423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:41:41.359 [DEBUG] [Thread-127423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:41.373 [INFO] [Thread-127423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:41.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:41:41.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:42.339 [DEBUG] [Thread-127423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:42.339 [DEBUG] [Thread-127423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:42.388 [DEBUG] [Thread-127423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:42.388 [DEBUG] [Thread-127423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:42.396 [DEBUG] [Thread-127423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:42.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:42.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-28T14:41:42.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-28T14:41:42.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:42.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:42.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:42.428 [DEBUG] [Thread-127423] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:43.867 [DEBUG] [Thread-127425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:41:52.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:41:52.431 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:41:52.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-28T14:41:53.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 41, 31), 19.21, 27.28, 0.0, 14.96, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:41:53.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:41:31
2025-09-28T14:41:53.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:41:53.275 [DEBUG] [Thread-127426] [transport.py] [_log()] starting thread (client mode): 0x2e3f8dc0
2025-09-28T14:41:53.275 [DEBUG] [Thread-127426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:53.296 [DEBUG] [Thread-127426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:41:53.296 [INFO] [Thread-127426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:53.300 [DEBUG] [Thread-127426] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] Compression: none
2025-09-28T14:41:53.301 [DEBUG] [Thread-127426] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:53.318 [DEBUG] [Thread-127426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:53.318 [DEBUG] [Thread-127426] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:53.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:41:53.319 [DEBUG] [Thread-127426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:41:53.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:53.322 [DEBUG] [Thread-127426] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:53.322 [DEBUG] [Thread-127426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:53.322 [DEBUG] [Thread-127426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:53.322 [DEBUG] [Thread-127426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:41:53.322 [DEBUG] [Thread-127426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:53.343 [INFO] [Thread-127426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:53.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:54.094 [DEBUG] [Thread-127426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:54.094 [DEBUG] [Thread-127426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:54.094 [DEBUG] [Thread-127426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:41:54.135 [DEBUG] [Thread-127426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:54.135 [DEBUG] [Thread-127426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:54.138 [DEBUG] [Thread-127426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:54.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:54.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:41:54.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:41:54.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:41:54.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:54.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:41:54.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:54.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528555 -999.00  +18.80  11.49     35   +3.20 1 1 1 1 1   888    0 15.79 7.32 ----- 11.5 11.5 246.5 22.3 25.2 -26.7 24.4 -25.1 25.2 -24.8 26.2 -26.4
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528555
2025-09-28T14:41:54.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:41:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:41:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:41:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:41:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:41:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:41:31', tmtdew=19.21, humidity=27.28, cloud=0.0, wind=14.96, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:41:07.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:41:54.154 [DEBUG] [Thread-127426] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:54.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-28T14:41:54.249 [DEBUG] [Thread-127429] [transport.py] [_log()] starting thread (client mode): 0x2b96d1e0
2025-09-28T14:41:54.249 [DEBUG] [Thread-127429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:41:54.264 [DEBUG] [Thread-127429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:41:54.264 [INFO] [Thread-127429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:41:54.271 [DEBUG] [Thread-127429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:41:54.271 [DEBUG] [Thread-127429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] client lang: <none>
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] server lang: <none>
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] kex follows: False
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:41:54.272 [DEBUG] [Thread-127429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:41:54.273 [DEBUG] [Thread-127429] [transport.py] [_log()] Compression: none
2025-09-28T14:41:54.273 [DEBUG] [Thread-127429] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:41:54.328 [DEBUG] [Thread-127429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:41:54.328 [DEBUG] [Thread-127429] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:41:54.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:41:54.330 [DEBUG] [Thread-127429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:41:54.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:41:54.384 [DEBUG] [Thread-127429] [transport.py] [_log()] userauth is OK
2025-09-28T14:41:54.384 [DEBUG] [Thread-127429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:41:54.384 [DEBUG] [Thread-127429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:41:54.384 [DEBUG] [Thread-127429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:41:54.385 [DEBUG] [Thread-127429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:41:54.403 [INFO] [Thread-127429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:41:54.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-28T14:41:54.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:41:55.358 [DEBUG] [Thread-127429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:41:55.358 [DEBUG] [Thread-127429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:41:55.406 [DEBUG] [Thread-127429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:41:55.407 [DEBUG] [Thread-127429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:41:55.416 [DEBUG] [Thread-127429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:41:55.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:41:55.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-28T14:41:55.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-28T14:41:55.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:41:55.443 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:41:55.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:41:55.451 [DEBUG] [Thread-127429] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:41:58.901 [DEBUG] [Thread-127431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:05.294 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:05.295 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:05.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:42:05.452 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:42:05.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-28T14:42:06.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 41, 31), 19.21, 27.28, 0.0, 14.96, 18.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:42:06.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:41:31
2025-09-28T14:42:06.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:42:06.352 [DEBUG] [Thread-127432] [transport.py] [_log()] starting thread (client mode): 0x28706e30
2025-09-28T14:42:06.353 [DEBUG] [Thread-127432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:06.374 [DEBUG] [Thread-127432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:42:06.374 [INFO] [Thread-127432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:06.376 [DEBUG] [Thread-127432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] Compression: none
2025-09-28T14:42:06.377 [DEBUG] [Thread-127432] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:06.391 [DEBUG] [Thread-127432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:06.391 [DEBUG] [Thread-127432] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:06.391 [DEBUG] [Thread-127432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:42:06.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:42:06.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:06.392 [DEBUG] [Thread-127432] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:06.392 [DEBUG] [Thread-127432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:06.392 [DEBUG] [Thread-127432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:06.392 [DEBUG] [Thread-127432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:42:06.392 [DEBUG] [Thread-127432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:06.407 [INFO] [Thread-127432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:06.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:06.980 [DEBUG] [Thread-127432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:06.980 [DEBUG] [Thread-127432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:06.980 [DEBUG] [Thread-127432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:42:07.021 [DEBUG] [Thread-127432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:07.021 [DEBUG] [Thread-127432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:07.024 [DEBUG] [Thread-127432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:07.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:07.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:42:07.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:42:07.045 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:42:07.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:07.055 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:42:07.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:07.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:07.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:42:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528902 -999.00  +18.80  15.35     35   +3.10 1 1 1 1 1   888    0 15.81 8.71 ----- 15.3 15.3 240.6 27.6 25.1 -28.1 24.5 -26.2 25.2 -25.5 26.0 -28.4
2025-09-28T14:42:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:42:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:42:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528902
2025-09-28T14:42:07.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:42:07.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:42:07.057 [DEBUG] [Thread-127432] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:07.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:42:07.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:42:07.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:42:07.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:41:31', tmtdew=19.21, humidity=27.28, cloud=0.0, wind=14.96, temperature=18.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:41:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:42:07.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-28T14:42:07.157 [DEBUG] [Thread-127435] [transport.py] [_log()] starting thread (client mode): 0x2b94d1b0
2025-09-28T14:42:07.157 [DEBUG] [Thread-127435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:07.174 [DEBUG] [Thread-127435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:42:07.174 [INFO] [Thread-127435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:42:07.181 [DEBUG] [Thread-127435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:07.182 [DEBUG] [Thread-127435] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:07.183 [DEBUG] [Thread-127435] [transport.py] [_log()] Compression: none
2025-09-28T14:42:07.184 [DEBUG] [Thread-127435] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:07.244 [DEBUG] [Thread-127435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:07.244 [DEBUG] [Thread-127435] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:07.245 [DEBUG] [Thread-127435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:42:07.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:42:07.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:07.300 [DEBUG] [Thread-127435] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:07.300 [DEBUG] [Thread-127435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:07.300 [DEBUG] [Thread-127435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:07.301 [DEBUG] [Thread-127435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:42:07.301 [DEBUG] [Thread-127435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:07.321 [INFO] [Thread-127435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:07.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-28T14:42:07.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:08.321 [DEBUG] [Thread-127435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:08.322 [DEBUG] [Thread-127435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:08.369 [DEBUG] [Thread-127435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:08.369 [DEBUG] [Thread-127435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:08.378 [DEBUG] [Thread-127435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:08.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:08.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-28T14:42:08.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-28T14:42:08.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:08.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:08.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:08.416 [DEBUG] [Thread-127435] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:13.933 [DEBUG] [Thread-127437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:15.847 [DEBUG] [Thread-127438 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:18.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:42:18.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:42:18.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:42:19.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 42, 4), 19.0, 27.65, 0.0, 14.24, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:42:19.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:42:04
2025-09-28T14:42:19.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:42:19.316 [DEBUG] [Thread-127439] [transport.py] [_log()] starting thread (client mode): 0x2b94fbe0
2025-09-28T14:42:19.316 [DEBUG] [Thread-127439] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:19.335 [DEBUG] [Thread-127439] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:42:19.335 [INFO] [Thread-127439] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:19.338 [DEBUG] [Thread-127439] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] Compression: none
2025-09-28T14:42:19.339 [DEBUG] [Thread-127439] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:19.354 [DEBUG] [Thread-127439] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:19.354 [DEBUG] [Thread-127439] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:19.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:42:19.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:42:19.355 [DEBUG] [Thread-127439] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:19.365 [INFO] [Thread-127439] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:19.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:20.132 [DEBUG] [Thread-127439] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:20.132 [DEBUG] [Thread-127439] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:20.132 [DEBUG] [Thread-127439] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:42:20.173 [DEBUG] [Thread-127439] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:20.173 [DEBUG] [Thread-127439] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:20.175 [DEBUG] [Thread-127439] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:20.186 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:20.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:42:20.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:42:20.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:42:20.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:20.199 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:42:20.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528902 -999.00  +18.80  15.35     35   +3.10 1 1 1 1 1   888    0 15.81 8.71 ----- 15.3 15.3 240.6 27.6 25.1 -28.1 24.5 -26.2 25.2 -25.5 26.0 -28.4
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:42:20.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528902
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:42:20.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:42:04', tmtdew=19.0, humidity=27.65, cloud=0.0, wind=14.24, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:41:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:42:20.200 [DEBUG] [Thread-127439] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:20.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-28T14:42:20.283 [DEBUG] [Thread-127442] [transport.py] [_log()] starting thread (client mode): 0x2e34a170
2025-09-28T14:42:20.283 [DEBUG] [Thread-127442] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:20.298 [DEBUG] [Thread-127442] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:42:20.298 [INFO] [Thread-127442] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:42:20.305 [DEBUG] [Thread-127442] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] Compression: none
2025-09-28T14:42:20.306 [DEBUG] [Thread-127442] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:20.363 [DEBUG] [Thread-127442] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:20.363 [DEBUG] [Thread-127442] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:20.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:42:20.363 [DEBUG] [Thread-127442] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:42:20.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:20.420 [DEBUG] [Thread-127442] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:20.420 [DEBUG] [Thread-127442] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:20.420 [DEBUG] [Thread-127442] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:20.420 [DEBUG] [Thread-127442] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:42:20.420 [DEBUG] [Thread-127442] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:20.438 [INFO] [Thread-127442] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:20.439 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:42:20.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:21.429 [DEBUG] [Thread-127442] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:21.429 [DEBUG] [Thread-127442] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:21.477 [DEBUG] [Thread-127442] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:21.477 [DEBUG] [Thread-127442] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:21.485 [DEBUG] [Thread-127442] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:21.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:21.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-28T14:42:21.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') -> 00000000
2025-09-28T14:42:21.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:21.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:21.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:21.519 [DEBUG] [Thread-127442] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:28.973 [DEBUG] [Thread-127444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:31.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:42:31.522 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:42:31.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-28T14:42:32.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 42, 4), 19.0, 27.65, 0.0, 14.24, 18.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:42:32.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:42:04
2025-09-28T14:42:32.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:42:32.372 [DEBUG] [Thread-127445] [transport.py] [_log()] starting thread (client mode): 0x30dde9b0
2025-09-28T14:42:32.372 [DEBUG] [Thread-127445] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:32.392 [DEBUG] [Thread-127445] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:42:32.392 [INFO] [Thread-127445] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:32.395 [DEBUG] [Thread-127445] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] Compression: none
2025-09-28T14:42:32.396 [DEBUG] [Thread-127445] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:32.414 [DEBUG] [Thread-127445] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:32.415 [DEBUG] [Thread-127445] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:32.416 [DEBUG] [Thread-127445] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:42:32.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:42:32.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:32.418 [DEBUG] [Thread-127445] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:32.418 [DEBUG] [Thread-127445] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:32.418 [DEBUG] [Thread-127445] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:32.419 [DEBUG] [Thread-127445] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:42:32.419 [DEBUG] [Thread-127445] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:32.440 [INFO] [Thread-127445] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:32.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:33.185 [DEBUG] [Thread-127445] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:33.186 [DEBUG] [Thread-127445] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:33.186 [DEBUG] [Thread-127445] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:42:33.226 [DEBUG] [Thread-127445] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:33.226 [DEBUG] [Thread-127445] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:33.230 [DEBUG] [Thread-127445] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:33.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:33.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:42:33.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:42:33.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:42:33.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:33.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:42:33.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:33.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:33.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:42:33.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.528902 -999.00  +18.80  15.35     35   +3.10 1 1 1 1 1   888    0 15.81 8.71 ----- 15.3 15.3 240.6 27.6 25.1 -28.1 24.5 -26.2 25.2 -25.5 26.0 -28.4
2025-09-28T14:42:33.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:42:33.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:42:33.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.528902
2025-09-28T14:42:33.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:42:33.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:42:33.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:42:33.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:42:33.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:42:33.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:42:04', tmtdew=19.0, humidity=27.65, cloud=0.0, wind=14.24, temperature=18.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:41:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:42:33.254 [DEBUG] [Thread-127445] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:33.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-28T14:42:33.350 [DEBUG] [Thread-127448] [transport.py] [_log()] starting thread (client mode): 0x2e3f8fa0
2025-09-28T14:42:33.350 [DEBUG] [Thread-127448] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:33.366 [DEBUG] [Thread-127448] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:42:33.366 [INFO] [Thread-127448] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:33.374 [DEBUG] [Thread-127448] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:33.375 [DEBUG] [Thread-127448] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:33.375 [DEBUG] [Thread-127448] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:33.375 [DEBUG] [Thread-127448] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:33.375 [DEBUG] [Thread-127448] [transport.py] [_log()] Compression: none
2025-09-28T14:42:33.375 [DEBUG] [Thread-127448] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:33.432 [DEBUG] [Thread-127448] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:33.433 [DEBUG] [Thread-127448] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:33.433 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:42:33.434 [DEBUG] [Thread-127448] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:42:33.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:33.488 [DEBUG] [Thread-127448] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:33.488 [DEBUG] [Thread-127448] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:33.489 [DEBUG] [Thread-127448] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:33.489 [DEBUG] [Thread-127448] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:42:33.489 [DEBUG] [Thread-127448] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:33.509 [INFO] [Thread-127448] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:33.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-28T14:42:33.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:34.536 [DEBUG] [Thread-127448] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:34.537 [DEBUG] [Thread-127448] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:34.584 [DEBUG] [Thread-127448] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:34.584 [DEBUG] [Thread-127448] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:34.592 [DEBUG] [Thread-127448] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:34.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:34.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-28T14:42:34.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-28T14:42:34.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:34.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:34.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:34.643 [DEBUG] [Thread-127448] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:44.020 [DEBUG] [Thread-127450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:44.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:42:44.635 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:42:44.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-28T14:42:45.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 42, 36), 18.17, 29.68, 0.0, 19.46, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:42:45.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:42:36
2025-09-28T14:42:45.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:42:45.488 [DEBUG] [Thread-127451] [transport.py] [_log()] starting thread (client mode): 0x30dde9b0
2025-09-28T14:42:45.488 [DEBUG] [Thread-127451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:45.508 [DEBUG] [Thread-127451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:42:45.508 [INFO] [Thread-127451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:45.511 [DEBUG] [Thread-127451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:45.512 [DEBUG] [Thread-127451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:45.512 [DEBUG] [Thread-127451] [transport.py] [_log()] Compression: none
2025-09-28T14:42:45.512 [DEBUG] [Thread-127451] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:45.533 [DEBUG] [Thread-127451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:45.534 [DEBUG] [Thread-127451] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:45.535 [DEBUG] [Thread-127451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:42:45.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:42:45.535 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:45.537 [DEBUG] [Thread-127451] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:45.537 [DEBUG] [Thread-127451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:45.537 [DEBUG] [Thread-127451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:45.537 [DEBUG] [Thread-127451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:42:45.537 [DEBUG] [Thread-127451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:45.563 [INFO] [Thread-127451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:45.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:46.229 [DEBUG] [Thread-127451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:46.229 [DEBUG] [Thread-127451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:46.229 [DEBUG] [Thread-127451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:42:46.270 [DEBUG] [Thread-127451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:46.270 [DEBUG] [Thread-127451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:46.273 [DEBUG] [Thread-127451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:46.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:46.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:42:46.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:42:46.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:42:46.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:46.295 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:42:46.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:46.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:46.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:42:46.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.529250 -999.00  +19.00  15.07     36   +3.60 1 1 1 1 1   888    0 16.55 9.54 ----- 15.1 15.1 213.3 22.6 25.2 -27.3 24.4 -25.7 25.2 -25.7 26.3 -27.0
2025-09-28T14:42:46.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:42:46.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:42:46.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.529250
2025-09-28T14:42:46.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:42:46.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:42:46.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:42:46.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:42:46.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:42:46.298 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:42:36', tmtdew=18.17, humidity=29.68, cloud=0.0, wind=19.46, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:42:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:42:46.298 [DEBUG] [Thread-127451] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:46.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-28T14:42:46.390 [DEBUG] [Thread-127454] [transport.py] [_log()] starting thread (client mode): 0x2e3fb4c0
2025-09-28T14:42:46.390 [DEBUG] [Thread-127454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:46.405 [DEBUG] [Thread-127454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:42:46.405 [INFO] [Thread-127454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] Compression: none
2025-09-28T14:42:46.413 [DEBUG] [Thread-127454] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:46.471 [DEBUG] [Thread-127454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:46.471 [DEBUG] [Thread-127454] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:46.471 [DEBUG] [Thread-127454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:42:46.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:42:46.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:46.529 [DEBUG] [Thread-127454] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:46.529 [DEBUG] [Thread-127454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:46.529 [DEBUG] [Thread-127454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:46.529 [DEBUG] [Thread-127454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:42:46.529 [DEBUG] [Thread-127454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:46.544 [INFO] [Thread-127454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:46.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-28T14:42:46.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:47.524 [DEBUG] [Thread-127454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:47.525 [DEBUG] [Thread-127454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:47.572 [DEBUG] [Thread-127454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:47.572 [DEBUG] [Thread-127454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:47.582 [DEBUG] [Thread-127454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:47.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:47.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-28T14:42:47.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-28T14:42:47.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:47.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:47.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:47.618 [DEBUG] [Thread-127454] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:57.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:42:57.619 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:42:57.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-28T14:42:58.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 42, 36), 18.17, 29.68, 0.0, 19.46, 18.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:42:58.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:42:36
2025-09-28T14:42:58.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:42:58.518 [DEBUG] [Thread-127456] [transport.py] [_log()] starting thread (client mode): 0x2e34ad40
2025-09-28T14:42:58.518 [DEBUG] [Thread-127456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:58.538 [DEBUG] [Thread-127456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:42:58.538 [INFO] [Thread-127456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:42:58.541 [DEBUG] [Thread-127456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:58.541 [DEBUG] [Thread-127456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] Compression: none
2025-09-28T14:42:58.542 [DEBUG] [Thread-127456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:58.558 [DEBUG] [Thread-127456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:58.558 [DEBUG] [Thread-127456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:58.558 [DEBUG] [Thread-127456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:42:58.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:42:58.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:58.559 [DEBUG] [Thread-127456] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:58.559 [DEBUG] [Thread-127456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:58.559 [DEBUG] [Thread-127456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:58.559 [DEBUG] [Thread-127456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:42:58.559 [DEBUG] [Thread-127456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:58.568 [INFO] [Thread-127456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:58.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:42:59.052 [DEBUG] [Thread-127458 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:42:59.343 [DEBUG] [Thread-127456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:42:59.343 [DEBUG] [Thread-127456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:42:59.343 [DEBUG] [Thread-127456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:42:59.384 [DEBUG] [Thread-127456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:42:59.384 [DEBUG] [Thread-127456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:42:59.386 [DEBUG] [Thread-127456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:42:59.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:42:59.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:42:59.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:42:59.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:42:59.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:42:59.396 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:42:59.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.529250 -999.00  +19.00  15.07     36   +3.60 1 1 1 1 1   888    0 16.55 9.54 ----- 15.1 15.1 213.3 22.6 25.2 -27.3 24.4 -25.7 25.2 -25.7 26.3 -27.0
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.529250
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:42:59.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:42:36', tmtdew=18.17, humidity=29.68, cloud=0.0, wind=19.46, temperature=18.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:42:07.200', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:42:59.396 [DEBUG] [Thread-127456] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:42:59.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-28T14:42:59.484 [DEBUG] [Thread-127460] [transport.py] [_log()] starting thread (client mode): 0x2e349960
2025-09-28T14:42:59.484 [DEBUG] [Thread-127460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:42:59.499 [DEBUG] [Thread-127460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:42:59.499 [INFO] [Thread-127460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] client lang: <none>
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] server lang: <none>
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] kex follows: False
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:42:59.507 [DEBUG] [Thread-127460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:42:59.508 [DEBUG] [Thread-127460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:42:59.508 [DEBUG] [Thread-127460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:42:59.508 [DEBUG] [Thread-127460] [transport.py] [_log()] Compression: none
2025-09-28T14:42:59.508 [DEBUG] [Thread-127460] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:42:59.565 [DEBUG] [Thread-127460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:42:59.565 [DEBUG] [Thread-127460] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:42:59.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:42:59.566 [DEBUG] [Thread-127460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:42:59.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:42:59.621 [DEBUG] [Thread-127460] [transport.py] [_log()] userauth is OK
2025-09-28T14:42:59.621 [DEBUG] [Thread-127460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:42:59.621 [DEBUG] [Thread-127460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:42:59.621 [DEBUG] [Thread-127460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:42:59.621 [DEBUG] [Thread-127460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:42:59.640 [INFO] [Thread-127460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:42:59.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-28T14:42:59.641 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:00.630 [DEBUG] [Thread-127460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:00.631 [DEBUG] [Thread-127460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:00.678 [DEBUG] [Thread-127460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:00.678 [DEBUG] [Thread-127460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:00.688 [DEBUG] [Thread-127460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:00.696 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43: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-28T14:43:00.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-28T14:43:00.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:00.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:00.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:00.722 [DEBUG] [Thread-127460] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:05.435 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:05.436 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:10.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:43:10.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:43:10.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-28T14:43:11.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 43, 8), 18.02, 30.02, 0.0, 21.53, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:43:11.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:43:08
2025-09-28T14:43:11.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:43:11.575 [DEBUG] [Thread-127462] [transport.py] [_log()] starting thread (client mode): 0x30dde740
2025-09-28T14:43:11.575 [DEBUG] [Thread-127462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:11.591 [DEBUG] [Thread-127462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:43:11.591 [INFO] [Thread-127462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:11.594 [DEBUG] [Thread-127462] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] Compression: none
2025-09-28T14:43:11.595 [DEBUG] [Thread-127462] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:11.605 [DEBUG] [Thread-127462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:11.605 [DEBUG] [Thread-127462] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:43:11.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:43:11.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:43:11.606 [DEBUG] [Thread-127462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:11.616 [INFO] [Thread-127462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:11.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:12.257 [DEBUG] [Thread-127462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:12.258 [DEBUG] [Thread-127462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:12.258 [DEBUG] [Thread-127462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:43:12.298 [DEBUG] [Thread-127462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:12.299 [DEBUG] [Thread-127462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:12.301 [DEBUG] [Thread-127462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:12.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:12.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:43:12.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:43:12.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:43:12.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:12.323 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:43:12.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:12.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:12.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:43:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.529944 -999.00  +19.20  11.99     36   +3.70 1 1 1 1 1   888    0 16.07 8.69 ----- 12.0 12.0 212.5 20.4 25.0 -26.5 24.1 -26.8 25.2 -26.1 26.2 -26.1
2025-09-28T14:43:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:43:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:43:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.529944
2025-09-28T14:43:12.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:43:12.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:43:12.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:43:12.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:43:12.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:43:12.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:43:08', tmtdew=18.02, humidity=30.02, cloud=0.0, wind=21.53, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:43:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:43:12.325 [DEBUG] [Thread-127462] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43: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-28T14:43:12.421 [DEBUG] [Thread-127465] [transport.py] [_log()] starting thread (client mode): 0x2b9cc190
2025-09-28T14:43:12.421 [DEBUG] [Thread-127465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:12.437 [DEBUG] [Thread-127465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:43:12.437 [INFO] [Thread-127465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:43:12.444 [DEBUG] [Thread-127465] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:12.444 [DEBUG] [Thread-127465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:43:12.444 [DEBUG] [Thread-127465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] Compression: none
2025-09-28T14:43:12.445 [DEBUG] [Thread-127465] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:12.504 [DEBUG] [Thread-127465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:12.505 [DEBUG] [Thread-127465] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:12.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:43:12.505 [DEBUG] [Thread-127465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:43:12.506 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:12.560 [DEBUG] [Thread-127465] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:12.561 [DEBUG] [Thread-127465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:12.561 [DEBUG] [Thread-127465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:12.561 [DEBUG] [Thread-127465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:43:12.561 [DEBUG] [Thread-127465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:12.580 [INFO] [Thread-127465] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:12.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-28T14:43:12.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:13.562 [DEBUG] [Thread-127465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:13.562 [DEBUG] [Thread-127465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:13.610 [DEBUG] [Thread-127465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:13.610 [DEBUG] [Thread-127465] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:13.620 [DEBUG] [Thread-127465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:13.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:13.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-28T14:43:13.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-28T14:43:13.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:13.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:13.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:13.654 [DEBUG] [Thread-127465] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:14.088 [DEBUG] [Thread-127467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:15.880 [DEBUG] [Thread-127468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:23.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:43:23.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:43: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-28T14:43:24.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 43, 8), 18.02, 30.02, 0.0, 21.53, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:43:24.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:43:08
2025-09-28T14:43:24.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:43:24.494 [DEBUG] [Thread-127469] [transport.py] [_log()] starting thread (client mode): 0x2e3fa4d0
2025-09-28T14:43:24.494 [DEBUG] [Thread-127469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:24.514 [DEBUG] [Thread-127469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:43:24.515 [INFO] [Thread-127469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:24.518 [DEBUG] [Thread-127469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] Compression: none
2025-09-28T14:43:24.519 [DEBUG] [Thread-127469] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:24.536 [DEBUG] [Thread-127469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:24.536 [DEBUG] [Thread-127469] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:24.537 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:43:24.537 [DEBUG] [Thread-127469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:43:24.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:24.539 [DEBUG] [Thread-127469] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:24.539 [DEBUG] [Thread-127469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:24.539 [DEBUG] [Thread-127469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:24.540 [DEBUG] [Thread-127469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:43:24.540 [DEBUG] [Thread-127469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:24.563 [INFO] [Thread-127469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:24.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:25.391 [DEBUG] [Thread-127469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:25.392 [DEBUG] [Thread-127469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:25.392 [DEBUG] [Thread-127469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:43:25.432 [DEBUG] [Thread-127469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:25.432 [DEBUG] [Thread-127469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:25.435 [DEBUG] [Thread-127469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:25.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:25.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:43:25.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:43:25.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:43:25.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:25.455 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:43:25.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.529944 -999.00  +19.20  11.99     36   +3.70 1 1 1 1 1   888    0 16.07 8.69 ----- 12.0 12.0 212.5 20.4 25.0 -26.5 24.1 -26.8 25.2 -26.1 26.2 -26.1
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:43:25.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.529944
2025-09-28T14:43:25.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:43:25.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:43:25.457 [DEBUG] [Thread-127469] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:43:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:43:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:43:25.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:43:08', tmtdew=18.02, humidity=30.02, cloud=0.0, wind=21.53, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:43:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:43:25.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-28T14:43:25.552 [DEBUG] [Thread-127472] [transport.py] [_log()] starting thread (client mode): 0x2e3f9ea0
2025-09-28T14:43:25.552 [DEBUG] [Thread-127472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:25.566 [DEBUG] [Thread-127472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:43:25.567 [INFO] [Thread-127472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:43:25.574 [DEBUG] [Thread-127472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:25.574 [DEBUG] [Thread-127472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:25.575 [DEBUG] [Thread-127472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] Compression: none
2025-09-28T14:43:25.576 [DEBUG] [Thread-127472] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:25.632 [DEBUG] [Thread-127472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:25.633 [DEBUG] [Thread-127472] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:25.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:43:25.634 [DEBUG] [Thread-127472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:43:25.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:25.688 [DEBUG] [Thread-127472] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:25.689 [DEBUG] [Thread-127472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:25.689 [DEBUG] [Thread-127472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:25.689 [DEBUG] [Thread-127472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:43:25.689 [DEBUG] [Thread-127472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:25.709 [INFO] [Thread-127472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:25.709 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:43:25.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:26.723 [DEBUG] [Thread-127472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:26.723 [DEBUG] [Thread-127472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:26.771 [DEBUG] [Thread-127472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:26.771 [DEBUG] [Thread-127472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:26.780 [DEBUG] [Thread-127472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:26.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:26.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T14:43:26.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-28T14:43:26.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:26.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:26.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:26.815 [DEBUG] [Thread-127472] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:29.126 [DEBUG] [Thread-127474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:36.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:43:36.817 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:43:36.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-28T14:43:37.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 43, 8), 18.02, 30.02, 0.0, 21.53, 18.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:43:37.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:43:08
2025-09-28T14:43:37.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:43:37.660 [DEBUG] [Thread-127475] [transport.py] [_log()] starting thread (client mode): 0x2b9cfb20
2025-09-28T14:43:37.660 [DEBUG] [Thread-127475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:37.680 [DEBUG] [Thread-127475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:43:37.680 [INFO] [Thread-127475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] Compression: none
2025-09-28T14:43:37.683 [DEBUG] [Thread-127475] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:37.700 [DEBUG] [Thread-127475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:37.701 [DEBUG] [Thread-127475] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:37.702 [DEBUG] [Thread-127475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:43:37.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:43:37.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:37.703 [DEBUG] [Thread-127475] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:37.704 [DEBUG] [Thread-127475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:37.704 [DEBUG] [Thread-127475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:37.704 [DEBUG] [Thread-127475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:43:37.704 [DEBUG] [Thread-127475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:37.727 [INFO] [Thread-127475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:37.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:38.516 [DEBUG] [Thread-127475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:38.516 [DEBUG] [Thread-127475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:38.516 [DEBUG] [Thread-127475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:43:38.556 [DEBUG] [Thread-127475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:38.557 [DEBUG] [Thread-127475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:38.560 [DEBUG] [Thread-127475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:38.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:38.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:43:38.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:43:38.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:43:38.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:38.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:43:38.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:38.584 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.529944 -999.00  +19.20  11.99     36   +3.70 1 1 1 1 1   888    0 16.07 8.69 ----- 12.0 12.0 212.5 20.4 25.0 -26.5 24.1 -26.8 25.2 -26.1 26.2 -26.1
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.529944
2025-09-28T14:43:38.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:43:38.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:43:38.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:43:38.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:43:38.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:43:38.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:43:08', tmtdew=18.02, humidity=30.02, cloud=0.0, wind=21.53, temperature=18.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:43:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:43:38.587 [DEBUG] [Thread-127475] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:38.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-28T14:43:38.682 [DEBUG] [Thread-127478] [transport.py] [_log()] starting thread (client mode): 0x2b9cd300
2025-09-28T14:43:38.683 [DEBUG] [Thread-127478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:38.698 [DEBUG] [Thread-127478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:43:38.698 [INFO] [Thread-127478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:43:38.706 [DEBUG] [Thread-127478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:38.706 [DEBUG] [Thread-127478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:43:38.706 [DEBUG] [Thread-127478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:38.706 [DEBUG] [Thread-127478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:38.706 [DEBUG] [Thread-127478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:38.707 [DEBUG] [Thread-127478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:38.708 [DEBUG] [Thread-127478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:38.708 [DEBUG] [Thread-127478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:38.708 [DEBUG] [Thread-127478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:38.708 [DEBUG] [Thread-127478] [transport.py] [_log()] Compression: none
2025-09-28T14:43:38.708 [DEBUG] [Thread-127478] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:38.766 [DEBUG] [Thread-127478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:38.767 [DEBUG] [Thread-127478] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:38.767 [DEBUG] [Thread-127478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:43:38.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:43:38.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:38.825 [DEBUG] [Thread-127478] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:38.825 [DEBUG] [Thread-127478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:38.825 [DEBUG] [Thread-127478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:38.826 [DEBUG] [Thread-127478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:43:38.826 [DEBUG] [Thread-127478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:38.845 [INFO] [Thread-127478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:38.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-28T14:43:38.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:39.920 [DEBUG] [Thread-127478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:39.921 [DEBUG] [Thread-127478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:39.968 [DEBUG] [Thread-127478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:39.968 [DEBUG] [Thread-127478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:39.976 [DEBUG] [Thread-127478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:39.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:39.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-28T14:43:39.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') -> 00000000
2025-09-28T14:43:40.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:40.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:40.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:40.008 [DEBUG] [Thread-127478] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:44.157 [DEBUG] [Thread-127480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:43:50.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:43:50.010 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:43:50.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:43:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 43, 40), 17.87, 30.14, 0.0, 23.26, 18.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:43:50.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:43:40
2025-09-28T14:43:50.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:43:50.875 [DEBUG] [Thread-127481] [transport.py] [_log()] starting thread (client mode): 0x2b96e890
2025-09-28T14:43:50.875 [DEBUG] [Thread-127481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:50.895 [DEBUG] [Thread-127481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:43:50.895 [INFO] [Thread-127481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] Compression: none
2025-09-28T14:43:50.898 [DEBUG] [Thread-127481] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:50.917 [DEBUG] [Thread-127481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:50.917 [DEBUG] [Thread-127481] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:50.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:43:50.918 [DEBUG] [Thread-127481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:43:50.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:50.960 [DEBUG] [Thread-127481] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:50.960 [DEBUG] [Thread-127481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:50.960 [DEBUG] [Thread-127481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:50.960 [DEBUG] [Thread-127481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:43:50.961 [DEBUG] [Thread-127481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:50.984 [INFO] [Thread-127481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:50.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:51.609 [DEBUG] [Thread-127481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:51.609 [DEBUG] [Thread-127481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:51.610 [DEBUG] [Thread-127481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:43:51.650 [DEBUG] [Thread-127481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:51.650 [DEBUG] [Thread-127481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:51.652 [DEBUG] [Thread-127481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:51.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:51.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:43:51.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:43:51.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:43:51.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:51.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:43:51.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:51.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:43:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530291 -999.00  +19.30  18.88     35   +3.60 1 1 1 1 1   888    0 16.23 7.29 ----- 18.9 18.9 200.0 27.8 24.9 -27.4 24.1 -26.8 25.1 -26.3 26.1 -27.6
2025-09-28T14:43:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:43:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:43:51.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530291
2025-09-28T14:43:51.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:43:51.677 [DEBUG] [Thread-127481] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:51.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:43:51.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:43:51.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:43:51.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:43:51.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:43:40', tmtdew=17.87, humidity=30.14, cloud=0.0, wind=23.26, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:43:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:43:51.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-28T14:43:51.773 [DEBUG] [Thread-127484] [transport.py] [_log()] starting thread (client mode): 0x2e3dc400
2025-09-28T14:43:51.774 [DEBUG] [Thread-127484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:43:51.789 [DEBUG] [Thread-127484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:43:51.789 [INFO] [Thread-127484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:43:51.796 [DEBUG] [Thread-127484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:43:51.796 [DEBUG] [Thread-127484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:43:51.796 [DEBUG] [Thread-127484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] client lang: <none>
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] server lang: <none>
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] kex follows: False
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] Compression: none
2025-09-28T14:43:51.797 [DEBUG] [Thread-127484] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:43:51.852 [DEBUG] [Thread-127484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:43:51.852 [DEBUG] [Thread-127484] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:43:51.853 [DEBUG] [Thread-127484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:43:51.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:43:51.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:43:51.908 [DEBUG] [Thread-127484] [transport.py] [_log()] userauth is OK
2025-09-28T14:43:51.909 [DEBUG] [Thread-127484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:43:51.909 [DEBUG] [Thread-127484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:43:51.909 [DEBUG] [Thread-127484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:43:51.909 [DEBUG] [Thread-127484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:43:51.928 [INFO] [Thread-127484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:43:51.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-28T14:43:51.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:43:52.929 [DEBUG] [Thread-127484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:43:52.930 [DEBUG] [Thread-127484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:43:52.977 [DEBUG] [Thread-127484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:43:52.977 [DEBUG] [Thread-127484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:43:52.986 [DEBUG] [Thread-127484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:43:52.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:43:52.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')
2025-09-28T14:43:53.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:43:53.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:43:53.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:43:53.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:43:53.020 [DEBUG] [Thread-127484] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:43:59.193 [DEBUG] [Thread-127486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:03.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:44:03.023 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:44:03.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:44:03.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 43, 40), 17.87, 30.14, 0.0, 23.26, 18.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:44:03.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:43:40
2025-09-28T14:44:03.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:44:03.870 [DEBUG] [Thread-127487] [transport.py] [_log()] starting thread (client mode): 0x2e3fb820
2025-09-28T14:44:03.870 [DEBUG] [Thread-127487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:03.891 [DEBUG] [Thread-127487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:44:03.891 [INFO] [Thread-127487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:03.892 [DEBUG] [Thread-127487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] Compression: none
2025-09-28T14:44:03.893 [DEBUG] [Thread-127487] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:03.915 [DEBUG] [Thread-127487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:03.915 [DEBUG] [Thread-127487] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:03.916 [DEBUG] [Thread-127487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:44:03.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:44:03.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:03.917 [DEBUG] [Thread-127487] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:03.918 [DEBUG] [Thread-127487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:03.918 [DEBUG] [Thread-127487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:03.918 [DEBUG] [Thread-127487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:44:03.918 [DEBUG] [Thread-127487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:03.940 [INFO] [Thread-127487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:03.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:04.780 [DEBUG] [Thread-127487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:04.780 [DEBUG] [Thread-127487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:04.780 [DEBUG] [Thread-127487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:44:04.821 [DEBUG] [Thread-127487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:04.822 [DEBUG] [Thread-127487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:04.825 [DEBUG] [Thread-127487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:04.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:04.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:44:04.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:44:04.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:44:04.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:04.847 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:44:04.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:04.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:04.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:44:04.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530291 -999.00  +19.30  18.88     35   +3.60 1 1 1 1 1   888    0 16.23 7.29 ----- 18.9 18.9 200.0 27.8 24.9 -27.4 24.1 -26.8 25.1 -26.3 26.1 -27.6
2025-09-28T14:44:04.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:44:04.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:44:04.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530291
2025-09-28T14:44:04.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:44:04.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:44:04.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:44:04.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:44:04.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:44:04.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:43:40', tmtdew=17.87, humidity=30.14, cloud=0.0, wind=23.26, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:43:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:44:04.849 [DEBUG] [Thread-127487] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:04.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-28T14:44:04.946 [DEBUG] [Thread-127490] [transport.py] [_log()] starting thread (client mode): 0x2e3f98a0
2025-09-28T14:44:04.946 [DEBUG] [Thread-127490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:04.960 [DEBUG] [Thread-127490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:44:04.960 [INFO] [Thread-127490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:04.974 [DEBUG] [Thread-127490] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] Compression: none
2025-09-28T14:44:04.975 [DEBUG] [Thread-127490] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:05.029 [DEBUG] [Thread-127490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:05.030 [DEBUG] [Thread-127490] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:05.030 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:44:05.031 [DEBUG] [Thread-127490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:44:05.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:05.091 [DEBUG] [Thread-127490] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:05.092 [DEBUG] [Thread-127490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:05.092 [DEBUG] [Thread-127490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:05.092 [DEBUG] [Thread-127490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:44:05.092 [DEBUG] [Thread-127490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:05.116 [INFO] [Thread-127490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:05.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-28T14:44:05.117 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:05.576 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:05.578 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:06.119 [DEBUG] [Thread-127490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:06.119 [DEBUG] [Thread-127490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:06.167 [DEBUG] [Thread-127490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:06.167 [DEBUG] [Thread-127490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:06.176 [DEBUG] [Thread-127490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:06.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:06.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-28T14:44:06.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-28T14:44:06.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:06.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:06.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:06.211 [DEBUG] [Thread-127490] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:14.245 [DEBUG] [Thread-127492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:15.923 [DEBUG] [Thread-127493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:16.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:44:16.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:44:16.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-28T14:44:16.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 44, 12), 17.95, 29.97, 0.0, 24.61, 18.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:44:16.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:44:12
2025-09-28T14:44:16.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:44:17.055 [DEBUG] [Thread-127494] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd90
2025-09-28T14:44:17.055 [DEBUG] [Thread-127494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:17.069 [DEBUG] [Thread-127494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:44:17.069 [INFO] [Thread-127494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] Compression: none
2025-09-28T14:44:17.072 [DEBUG] [Thread-127494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:17.088 [DEBUG] [Thread-127494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:17.089 [DEBUG] [Thread-127494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:17.089 [DEBUG] [Thread-127494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:44:17.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:44:17.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:17.091 [DEBUG] [Thread-127494] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:17.091 [DEBUG] [Thread-127494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:17.091 [DEBUG] [Thread-127494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:17.091 [DEBUG] [Thread-127494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:44:17.091 [DEBUG] [Thread-127494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:17.115 [INFO] [Thread-127494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:17.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:17.717 [DEBUG] [Thread-127494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:17.717 [DEBUG] [Thread-127494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:17.717 [DEBUG] [Thread-127494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:44:17.757 [DEBUG] [Thread-127494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:17.757 [DEBUG] [Thread-127494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:17.760 [DEBUG] [Thread-127494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:17.770 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:17.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:44:17.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:44:17.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:44:17.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:17.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:44:17.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:17.775 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530638 -999.00  +19.30   8.46     35   +3.60 1 1 1 1 1   888    0 15.67 3.64 ----- 8.5 8.5 235.9 22.3 24.9 -26.5 23.9 -27.2 25.0 -26.6 26.2 -26.5
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530638
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:44:17.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:44:12', tmtdew=17.95, humidity=29.97, cloud=0.0, wind=24.61, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:44:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:44:17.776 [DEBUG] [Thread-127494] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:17.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-28T14:44:17.859 [DEBUG] [Thread-127497] [transport.py] [_log()] starting thread (client mode): 0x2e3fabf0
2025-09-28T14:44:17.859 [DEBUG] [Thread-127497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:17.876 [DEBUG] [Thread-127497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:44:17.876 [INFO] [Thread-127497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:17.883 [DEBUG] [Thread-127497] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] Compression: none
2025-09-28T14:44:17.884 [DEBUG] [Thread-127497] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:17.940 [DEBUG] [Thread-127497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:17.941 [DEBUG] [Thread-127497] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:17.941 [DEBUG] [Thread-127497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:44:17.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:44:17.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:17.997 [DEBUG] [Thread-127497] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:17.997 [DEBUG] [Thread-127497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:17.997 [DEBUG] [Thread-127497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:17.997 [DEBUG] [Thread-127497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:44:17.997 [DEBUG] [Thread-127497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:18.016 [INFO] [Thread-127497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:18.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:44:18.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:19.009 [DEBUG] [Thread-127497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:19.009 [DEBUG] [Thread-127497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:19.057 [DEBUG] [Thread-127497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:19.058 [DEBUG] [Thread-127497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:19.067 [DEBUG] [Thread-127497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:19.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:19.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-28T14:44:19.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') -> 00000000
2025-09-28T14:44:19.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:19.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:19.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:19.108 [DEBUG] [Thread-127497] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:29.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:44:29.108 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:44:29.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:44:29.272 [DEBUG] [Thread-127499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:29.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 44, 12), 17.95, 29.97, 0.0, 24.61, 18.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:44:29.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:44:12
2025-09-28T14:44:29.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:44:29.958 [DEBUG] [Thread-127500] [transport.py] [_log()] starting thread (client mode): 0x2b9ccf40
2025-09-28T14:44:29.958 [DEBUG] [Thread-127500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:29.979 [DEBUG] [Thread-127500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:44:29.979 [INFO] [Thread-127500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:44:29.982 [DEBUG] [Thread-127500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:29.983 [DEBUG] [Thread-127500] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] Compression: none
2025-09-28T14:44:29.984 [DEBUG] [Thread-127500] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:30.002 [DEBUG] [Thread-127500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:30.003 [DEBUG] [Thread-127500] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:30.003 [DEBUG] [Thread-127500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:44:30.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:44:30.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:30.005 [DEBUG] [Thread-127500] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:30.006 [DEBUG] [Thread-127500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:30.006 [DEBUG] [Thread-127500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:30.006 [DEBUG] [Thread-127500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:44:30.006 [DEBUG] [Thread-127500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:30.029 [INFO] [Thread-127500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:30.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:30.834 [DEBUG] [Thread-127500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:30.835 [DEBUG] [Thread-127500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:30.835 [DEBUG] [Thread-127500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:44:30.875 [DEBUG] [Thread-127500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:30.875 [DEBUG] [Thread-127500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:30.878 [DEBUG] [Thread-127500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:30.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:30.891 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:44:30.893 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:44:30.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:44:30.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:30.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:44:30.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:30.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:30.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:44:30.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530638 -999.00  +19.30   8.46     35   +3.60 1 1 1 1 1   888    0 15.67 3.64 ----- 8.5 8.5 235.9 22.3 24.9 -26.5 23.9 -27.2 25.0 -26.6 26.2 -26.5
2025-09-28T14:44:30.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:44:30.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:44:30.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530638
2025-09-28T14:44:30.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:44:30.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:44:30.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:44:30.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:44:30.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:44:30.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:44:12', tmtdew=17.95, humidity=29.97, cloud=0.0, wind=24.61, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:44:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:44:30.905 [DEBUG] [Thread-127500] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:30.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-28T14:44:31.005 [DEBUG] [Thread-127503] [transport.py] [_log()] starting thread (client mode): 0x2b9cdf00
2025-09-28T14:44:31.005 [DEBUG] [Thread-127503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:31.020 [DEBUG] [Thread-127503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:44:31.020 [INFO] [Thread-127503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:44:31.028 [DEBUG] [Thread-127503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:31.028 [DEBUG] [Thread-127503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] Compression: none
2025-09-28T14:44:31.029 [DEBUG] [Thread-127503] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:31.087 [DEBUG] [Thread-127503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:31.087 [DEBUG] [Thread-127503] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:31.088 [DEBUG] [Thread-127503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:44:31.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:44:31.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:31.143 [DEBUG] [Thread-127503] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:31.144 [DEBUG] [Thread-127503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:31.144 [DEBUG] [Thread-127503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:31.144 [DEBUG] [Thread-127503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:44:31.144 [DEBUG] [Thread-127503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:31.163 [INFO] [Thread-127503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:31.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-28T14:44:31.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:32.210 [DEBUG] [Thread-127503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:32.211 [DEBUG] [Thread-127503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:32.258 [DEBUG] [Thread-127503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:32.258 [DEBUG] [Thread-127503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:32.267 [DEBUG] [Thread-127503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:32.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:32.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-28T14:44:32.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-28T14:44:32.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:32.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:32.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:32.302 [DEBUG] [Thread-127503] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:42.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:44:42.303 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:44:42.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-28T14:44:42.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 44, 12), 17.95, 29.97, 0.0, 24.61, 18.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:44:42.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:44:12
2025-09-28T14:44:42.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:44:43.150 [DEBUG] [Thread-127505] [transport.py] [_log()] starting thread (client mode): 0x2e3dd900
2025-09-28T14:44:43.150 [DEBUG] [Thread-127505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:43.169 [DEBUG] [Thread-127505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:44:43.169 [INFO] [Thread-127505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:43.172 [DEBUG] [Thread-127505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:43.173 [DEBUG] [Thread-127505] [transport.py] [_log()] Compression: none
2025-09-28T14:44:43.174 [DEBUG] [Thread-127505] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:43.190 [DEBUG] [Thread-127505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:43.190 [DEBUG] [Thread-127505] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:43.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:44:43.191 [DEBUG] [Thread-127505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:44:43.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:43.193 [DEBUG] [Thread-127505] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:43.193 [DEBUG] [Thread-127505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:43.193 [DEBUG] [Thread-127505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:43.194 [DEBUG] [Thread-127505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:44:43.194 [DEBUG] [Thread-127505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:43.212 [INFO] [Thread-127505] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:43.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:44.029 [DEBUG] [Thread-127505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:44.029 [DEBUG] [Thread-127505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:44.029 [DEBUG] [Thread-127505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:44:44.070 [DEBUG] [Thread-127505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:44.070 [DEBUG] [Thread-127505] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:44.073 [DEBUG] [Thread-127505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:44.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:44.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:44:44.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:44:44.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:44:44.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:44.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:44:44.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:44.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:44.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:44:44.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530638 -999.00  +19.30   8.46     35   +3.60 1 1 1 1 1   888    0 15.67 3.64 ----- 8.5 8.5 235.9 22.3 24.9 -26.5 23.9 -27.2 25.0 -26.6 26.2 -26.5
2025-09-28T14:44:44.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:44:44.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:44:44.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530638
2025-09-28T14:44:44.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:44:44.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:44:44.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:44:44.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:44:44.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:44:44.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:44:12', tmtdew=17.95, humidity=29.97, cloud=0.0, wind=24.61, temperature=18.98, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:44:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:44:44.101 [DEBUG] [Thread-127505] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:44.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-28T14:44:44.197 [DEBUG] [Thread-127508] [transport.py] [_log()] starting thread (client mode): 0x2e3dc3d0
2025-09-28T14:44:44.197 [DEBUG] [Thread-127508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:44.212 [DEBUG] [Thread-127508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:44:44.212 [INFO] [Thread-127508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:44:44.219 [DEBUG] [Thread-127508] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:44.219 [DEBUG] [Thread-127508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:44:44.219 [DEBUG] [Thread-127508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] Compression: none
2025-09-28T14:44:44.220 [DEBUG] [Thread-127508] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:44.277 [DEBUG] [Thread-127508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:44.277 [DEBUG] [Thread-127508] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:44.277 [DEBUG] [Thread-127508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:44:44.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:44:44.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:44.309 [DEBUG] [Thread-127510 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:44:44.334 [DEBUG] [Thread-127508] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:44.334 [DEBUG] [Thread-127508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:44.334 [DEBUG] [Thread-127508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:44.334 [DEBUG] [Thread-127508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:44:44.334 [DEBUG] [Thread-127508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:44.350 [INFO] [Thread-127508] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:44.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-28T14:44:44.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:45.327 [DEBUG] [Thread-127508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:45.327 [DEBUG] [Thread-127508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:45.375 [DEBUG] [Thread-127508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:45.375 [DEBUG] [Thread-127508] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:45.383 [DEBUG] [Thread-127508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:45.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:45.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-28T14:44:45.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-28T14:44:45.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:45.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:45.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:45.415 [DEBUG] [Thread-127508] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:55.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:44:55.418 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:44:55.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-28T14:44:56.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 44, 44), 18.26, 29.39, 0.0, 20.36, 19.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:44:56.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:44:44
2025-09-28T14:44:56.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:44:56.272 [DEBUG] [Thread-127511] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T14:44:56.272 [DEBUG] [Thread-127511] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:56.296 [DEBUG] [Thread-127511] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:44:56.296 [INFO] [Thread-127511] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:44:56.300 [DEBUG] [Thread-127511] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:56.300 [DEBUG] [Thread-127511] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:44:56.300 [DEBUG] [Thread-127511] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:56.300 [DEBUG] [Thread-127511] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:56.301 [DEBUG] [Thread-127511] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:56.302 [DEBUG] [Thread-127511] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:56.302 [DEBUG] [Thread-127511] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:56.302 [DEBUG] [Thread-127511] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:56.302 [DEBUG] [Thread-127511] [transport.py] [_log()] Compression: none
2025-09-28T14:44:56.302 [DEBUG] [Thread-127511] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:56.323 [DEBUG] [Thread-127511] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:56.324 [DEBUG] [Thread-127511] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:56.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:44:56.325 [DEBUG] [Thread-127511] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:44:56.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:56.327 [DEBUG] [Thread-127511] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:56.328 [DEBUG] [Thread-127511] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:56.328 [DEBUG] [Thread-127511] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:56.328 [DEBUG] [Thread-127511] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:44:56.328 [DEBUG] [Thread-127511] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:56.349 [INFO] [Thread-127511] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:56.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:56.984 [DEBUG] [Thread-127511] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:56.984 [DEBUG] [Thread-127511] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:56.984 [DEBUG] [Thread-127511] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:44:57.025 [DEBUG] [Thread-127511] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:57.026 [DEBUG] [Thread-127511] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:57.028 [DEBUG] [Thread-127511] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:57.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:57.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:44:57.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:44:57.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:44:57.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:57.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:44:57.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:57.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:44:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530985 -999.00  +19.30   8.12     35   +3.60 1 1 1 1 1   888    0 15.60 -1.26 ----- 8.1 8.1 176.5 24.8 24.8 -26.7 23.9 -26.2 25.1 -26.9 26.2 -27.1
2025-09-28T14:44:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:44:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:44:57.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530985
2025-09-28T14:44:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:44:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:44:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:44:57.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:44:57.055 [DEBUG] [Thread-127511] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:57.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:44:57.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:44:44', tmtdew=18.26, humidity=29.39, cloud=0.0, wind=20.36, temperature=19.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:44:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:44: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-28T14:44:57.153 [DEBUG] [Thread-127514] [transport.py] [_log()] starting thread (client mode): 0x2e3608b0
2025-09-28T14:44:57.153 [DEBUG] [Thread-127514] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:44:57.171 [DEBUG] [Thread-127514] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:44:57.171 [INFO] [Thread-127514] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:44:57.182 [DEBUG] [Thread-127514] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:44:57.182 [DEBUG] [Thread-127514] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:44:57.182 [DEBUG] [Thread-127514] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] client lang: <none>
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] server lang: <none>
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] kex follows: False
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:44:57.183 [DEBUG] [Thread-127514] [transport.py] [_log()] Compression: none
2025-09-28T14:44:57.184 [DEBUG] [Thread-127514] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:44:57.242 [DEBUG] [Thread-127514] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:44:57.243 [DEBUG] [Thread-127514] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:44:57.243 [DEBUG] [Thread-127514] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:44:57.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:44:57.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:44:57.298 [DEBUG] [Thread-127514] [transport.py] [_log()] userauth is OK
2025-09-28T14:44:57.298 [DEBUG] [Thread-127514] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:44:57.298 [DEBUG] [Thread-127514] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:44:57.298 [DEBUG] [Thread-127514] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:44:57.298 [DEBUG] [Thread-127514] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:44:57.317 [INFO] [Thread-127514] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:44:57.318 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:44:57.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:44:58.302 [DEBUG] [Thread-127514] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:44:58.302 [DEBUG] [Thread-127514] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:44:58.350 [DEBUG] [Thread-127514] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:44:58.350 [DEBUG] [Thread-127514] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:44:58.359 [DEBUG] [Thread-127514] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:44:58.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:44:58.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-28T14:44:58.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-28T14:44:58.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:44:58.385 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:44:58.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:44:58.393 [DEBUG] [Thread-127514] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:44:59.335 [DEBUG] [Thread-127516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:05.722 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:05.723 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:08.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:45:08.396 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:45:08.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-28T14:45:08.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 44, 44), 18.26, 29.39, 0.0, 20.36, 19.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:45:08.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:44:44
2025-09-28T14:45:09.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:45:09.229 [DEBUG] [Thread-127517] [transport.py] [_log()] starting thread (client mode): 0x2e3ddc30
2025-09-28T14:45:09.229 [DEBUG] [Thread-127517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:45:09.241 [DEBUG] [Thread-127517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:45:09.241 [INFO] [Thread-127517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] client lang: <none>
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] server lang: <none>
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] kex follows: False
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] Compression: none
2025-09-28T14:45:09.245 [DEBUG] [Thread-127517] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:45:09.260 [DEBUG] [Thread-127517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:45:09.261 [DEBUG] [Thread-127517] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:45:09.261 [DEBUG] [Thread-127517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:45:09.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:45:09.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:45:09.263 [DEBUG] [Thread-127517] [transport.py] [_log()] userauth is OK
2025-09-28T14:45:09.263 [DEBUG] [Thread-127517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:45:09.263 [DEBUG] [Thread-127517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:45:09.263 [DEBUG] [Thread-127517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:45:09.263 [DEBUG] [Thread-127517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:45:09.288 [INFO] [Thread-127517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:45:09.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:45:14.387 [DEBUG] [Thread-127519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:15.960 [DEBUG] [Thread-127520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:18.716 [DEBUG] [Thread-127517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:45:18.716 [DEBUG] [Thread-127517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:45:18.716 [DEBUG] [Thread-127517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:45:18.757 [DEBUG] [Thread-127517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:45:18.758 [DEBUG] [Thread-127517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:45:18.760 [DEBUG] [Thread-127517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:45:18.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:45:18.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:45:18.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:45:18.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:45:19.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:45:19.065 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:45:19.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.530985 -999.00  +19.30   8.12     35   +3.60 1 1 1 1 1   888    0 15.60 -1.26 ----- 8.1 8.1 176.5 24.8 24.8 -26.7 23.9 -26.2 25.1 -26.9 26.2 -27.1
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:45:19.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.530985
2025-09-28T14:45:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:45:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:45:19.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:45:19.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:45:19.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:45:19.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:44:44', tmtdew=18.26, humidity=29.39, cloud=0.0, wind=20.36, temperature=19.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:44:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:45:19.068 [DEBUG] [Thread-127517] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:45:19.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-28T14:45:19.165 [DEBUG] [Thread-127522] [transport.py] [_log()] starting thread (client mode): 0x2e361390
2025-09-28T14:45:19.165 [DEBUG] [Thread-127522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:45:19.180 [DEBUG] [Thread-127522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:45:19.181 [INFO] [Thread-127522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:45:19.188 [DEBUG] [Thread-127522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:45:19.188 [DEBUG] [Thread-127522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] client lang: <none>
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] server lang: <none>
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] kex follows: False
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:45:19.189 [DEBUG] [Thread-127522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:45:19.190 [DEBUG] [Thread-127522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:45:19.190 [DEBUG] [Thread-127522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:45:19.190 [DEBUG] [Thread-127522] [transport.py] [_log()] Compression: none
2025-09-28T14:45:19.191 [DEBUG] [Thread-127522] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:45:19.247 [DEBUG] [Thread-127522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:45:19.248 [DEBUG] [Thread-127522] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:45:19.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:45:19.249 [DEBUG] [Thread-127522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:45:19.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:45:19.305 [DEBUG] [Thread-127522] [transport.py] [_log()] userauth is OK
2025-09-28T14:45:19.305 [DEBUG] [Thread-127522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:45:19.305 [DEBUG] [Thread-127522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:45:19.305 [DEBUG] [Thread-127522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:45:19.305 [DEBUG] [Thread-127522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:45:19.324 [INFO] [Thread-127522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:45:19.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-28T14:45:19.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:45:20.275 [DEBUG] [Thread-127522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:45:20.275 [DEBUG] [Thread-127522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:45:20.323 [DEBUG] [Thread-127522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:45:20.323 [DEBUG] [Thread-127522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:45:20.332 [DEBUG] [Thread-127522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:45:20.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:45:20.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')
2025-09-28T14:45:20.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-28T14:45:20.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:45:20.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:45:20.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:45:20.368 [DEBUG] [Thread-127522] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:45:29.416 [DEBUG] [Thread-127524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:30.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:45:30.370 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:45:30.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-28T14:45:30.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 45, 16), 18.13, 29.61, 0.0, 22.16, 19.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:45:30.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:45:16
2025-09-28T14:45:31.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:45:31.199 [DEBUG] [Thread-127525] [transport.py] [_log()] starting thread (client mode): 0x2e360f40
2025-09-28T14:45:31.199 [DEBUG] [Thread-127525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:45:31.218 [DEBUG] [Thread-127525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:45:31.218 [INFO] [Thread-127525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] client lang: <none>
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] server lang: <none>
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] kex follows: False
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:45:31.221 [DEBUG] [Thread-127525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:45:31.222 [DEBUG] [Thread-127525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:45:31.222 [DEBUG] [Thread-127525] [transport.py] [_log()] Compression: none
2025-09-28T14:45:31.222 [DEBUG] [Thread-127525] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:45:31.238 [DEBUG] [Thread-127525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:45:31.239 [DEBUG] [Thread-127525] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:45:31.239 [DEBUG] [Thread-127525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:45:31.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:45:31.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:45:31.241 [DEBUG] [Thread-127525] [transport.py] [_log()] userauth is OK
2025-09-28T14:45:31.241 [DEBUG] [Thread-127525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:45:31.241 [DEBUG] [Thread-127525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:45:31.241 [DEBUG] [Thread-127525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:45:31.241 [DEBUG] [Thread-127525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:45:31.259 [INFO] [Thread-127525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:45:31.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:45:31.859 [DEBUG] [Thread-127525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:45:31.859 [DEBUG] [Thread-127525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:45:31.859 [DEBUG] [Thread-127525] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:45:31.900 [DEBUG] [Thread-127525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:45:31.901 [DEBUG] [Thread-127525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:45:31.903 [DEBUG] [Thread-127525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:45:31.910 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:45:31.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:45:31.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:45:31.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:45:31.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:45:31.919 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:45:31.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:45:31.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:45:31.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:45:31.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.531332 -999.00  +19.50  12.61     35   +3.80 1 1 1 1 1   888    0 15.59 -5.94 ----- 12.6 12.6 196.0 23.5 24.9 -26.3 23.9 -26.1 25.1 -25.8 26.4 -26.9
2025-09-28T14:45:31.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:45:31.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:45:31.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.531332
2025-09-28T14:45:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:45:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:45:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:45:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:45:31.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:45:31.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:45:16', tmtdew=18.13, humidity=29.61, cloud=0.0, wind=22.16, temperature=19.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:45:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:45:31.922 [DEBUG] [Thread-127525] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:45:32.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-28T14:45:44.447 [DEBUG] [Thread-127528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:45:59.490 [DEBUG] [Thread-127529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:05.866 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:05.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:14.515 [DEBUG] [Thread-127530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:15.994 [DEBUG] [Thread-127531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:29.543 [DEBUG] [Thread-127532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:44.573 [DEBUG] [Thread-127533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:46:59.604 [DEBUG] [Thread-127534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:06.011 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:06.013 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:14.631 [DEBUG] [Thread-127535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:16.022 [DEBUG] [Thread-127536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:29.659 [DEBUG] [Thread-127537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:44.690 [DEBUG] [Thread-127538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:47:45.850 [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-28T14:47:55.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:47:55.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:47:55.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-28T14:47:56.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 47, 23), 18.07, 29.91, 0.0, 23.75, 18.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:47:56.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:47:23
2025-09-28T14:47:56.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:47:56.782 [DEBUG] [Thread-127539] [transport.py] [_log()] starting thread (client mode): 0x2e361db0
2025-09-28T14:47:56.782 [DEBUG] [Thread-127539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:47:56.793 [DEBUG] [Thread-127539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:47:56.793 [INFO] [Thread-127539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:47:56.796 [DEBUG] [Thread-127539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] client lang: <none>
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] server lang: <none>
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] kex follows: False
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] Compression: none
2025-09-28T14:47:56.797 [DEBUG] [Thread-127539] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:47:56.804 [DEBUG] [Thread-127539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:47:56.804 [DEBUG] [Thread-127539] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:47:56.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:47:56.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] userauth is OK
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:47:56.805 [DEBUG] [Thread-127539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:47:56.815 [INFO] [Thread-127539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:47:56.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:47:57.452 [DEBUG] [Thread-127539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:47:57.452 [DEBUG] [Thread-127539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:47:57.452 [DEBUG] [Thread-127539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:47:57.493 [DEBUG] [Thread-127539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:47:57.493 [DEBUG] [Thread-127539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:47:57.495 [DEBUG] [Thread-127539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:47:57.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:47:57.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:47:57.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:47:57.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:47:57.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:47:57.511 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:47:57.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.532722 -999.00  +19.60  16.89     34   +3.30 1 1 1 1 1   888    0 15.56 -13.13 ----- 16.9 16.9 194.8 28.3 24.9 -27.7 24.1 -26.0 25.4 -27.3 26.4 -28.5
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.532722
2025-09-28T14:47:57.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:47:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:47:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:47:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:47:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:47:57.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:47:23', tmtdew=18.07, humidity=29.91, cloud=0.0, wind=23.75, temperature=18.93, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:47:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:47:57.512 [DEBUG] [Thread-127539] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:47:57.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-28T14:47:57.598 [DEBUG] [Thread-127542] [transport.py] [_log()] starting thread (client mode): 0x2e3629e0
2025-09-28T14:47:57.598 [DEBUG] [Thread-127542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:47:57.613 [DEBUG] [Thread-127542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:47:57.613 [INFO] [Thread-127542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] client lang: <none>
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] server lang: <none>
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] kex follows: False
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] Compression: none
2025-09-28T14:47:57.621 [DEBUG] [Thread-127542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:47:57.681 [DEBUG] [Thread-127542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:47:57.681 [DEBUG] [Thread-127542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:47:57.681 [DEBUG] [Thread-127542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:47:57.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:47:57.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:47:57.738 [DEBUG] [Thread-127542] [transport.py] [_log()] userauth is OK
2025-09-28T14:47:57.738 [DEBUG] [Thread-127542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:47:57.738 [DEBUG] [Thread-127542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:47:57.738 [DEBUG] [Thread-127542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:47:57.738 [DEBUG] [Thread-127542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:47:57.754 [INFO] [Thread-127542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:47:57.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-28T14:47:57.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:47:58.947 [DEBUG] [Thread-127542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:47:58.947 [DEBUG] [Thread-127542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:47:58.995 [DEBUG] [Thread-127542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:47:58.995 [DEBUG] [Thread-127542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:47:59.004 [DEBUG] [Thread-127542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:47:59.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:47:59.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-28T14:47:59.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') -> 00000000
2025-09-28T14:47:59.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:47:59.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:47:59.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:47:59.041 [DEBUG] [Thread-127542] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:47:59.717 [DEBUG] [Thread-127544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:06.156 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:06.157 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:09.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:48:09.044 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:48:09.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:48:09.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 47, 55), 18.01, 29.59, 0.0, 23.03, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:48:09.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:47:55
2025-09-28T14:48:09.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:48:09.914 [DEBUG] [Thread-127545] [transport.py] [_log()] starting thread (client mode): 0x2e3fba00
2025-09-28T14:48:09.914 [DEBUG] [Thread-127545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:09.928 [DEBUG] [Thread-127545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:48:09.928 [INFO] [Thread-127545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:09.931 [DEBUG] [Thread-127545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:09.932 [DEBUG] [Thread-127545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:09.932 [DEBUG] [Thread-127545] [transport.py] [_log()] Compression: none
2025-09-28T14:48:09.932 [DEBUG] [Thread-127545] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:09.948 [DEBUG] [Thread-127545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:09.948 [DEBUG] [Thread-127545] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:09.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:48:09.949 [DEBUG] [Thread-127545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:48:09.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:09.951 [DEBUG] [Thread-127545] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:09.951 [DEBUG] [Thread-127545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:09.951 [DEBUG] [Thread-127545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:09.951 [DEBUG] [Thread-127545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:48:09.951 [DEBUG] [Thread-127545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:09.975 [INFO] [Thread-127545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:09.976 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:10.556 [DEBUG] [Thread-127545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:10.556 [DEBUG] [Thread-127545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:10.556 [DEBUG] [Thread-127545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:48:10.597 [DEBUG] [Thread-127545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:10.597 [DEBUG] [Thread-127545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:10.600 [DEBUG] [Thread-127545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:10.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:10.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:48:10.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:48:10.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:48:10.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:10.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:48:10.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.533069 -999.00  +19.20  24.57     35   +3.30 1 1 1 1 1   888    0 15.59 -12.60 ----- 24.6 24.6 196.4 28.0 24.9 -27.4 23.9 -27.0 25.3 -26.4 26.4 -30.0
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:48:10.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.533069
2025-09-28T14:48:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:48:10.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:48:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:48:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:48:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:48:10.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:47:55', tmtdew=18.01, humidity=29.59, cloud=0.0, wind=23.03, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:47:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:48:10.623 [DEBUG] [Thread-127545] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:10.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-28T14:48:10.717 [DEBUG] [Thread-127548] [transport.py] [_log()] starting thread (client mode): 0x2e3f9690
2025-09-28T14:48:10.717 [DEBUG] [Thread-127548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:10.731 [DEBUG] [Thread-127548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:48:10.731 [INFO] [Thread-127548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] Compression: none
2025-09-28T14:48:10.739 [DEBUG] [Thread-127548] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:10.798 [DEBUG] [Thread-127548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:10.798 [DEBUG] [Thread-127548] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:10.799 [DEBUG] [Thread-127548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:48:10.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:48:10.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:10.854 [DEBUG] [Thread-127548] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:10.854 [DEBUG] [Thread-127548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:10.854 [DEBUG] [Thread-127548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:10.854 [DEBUG] [Thread-127548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:48:10.854 [DEBUG] [Thread-127548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:10.869 [INFO] [Thread-127548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:10.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-28T14:48:10.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:12.087 [DEBUG] [Thread-127548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:12.087 [DEBUG] [Thread-127548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:12.134 [DEBUG] [Thread-127548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:12.134 [DEBUG] [Thread-127548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:12.144 [DEBUG] [Thread-127548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:12.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:12.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-28T14:48:12.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-28T14:48:12.171 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:12.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:12.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:12.180 [DEBUG] [Thread-127548] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:14.761 [DEBUG] [Thread-127550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:16.068 [DEBUG] [Thread-127551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:22.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:48:22.183 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:48:22.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-28T14:48:22.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 47, 55), 18.01, 29.59, 0.0, 23.03, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:48:22.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:47:55
2025-09-28T14:48:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:48:23.054 [DEBUG] [Thread-127552] [transport.py] [_log()] starting thread (client mode): 0x2e3f89a0
2025-09-28T14:48:23.055 [DEBUG] [Thread-127552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:23.065 [DEBUG] [Thread-127552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:48:23.065 [INFO] [Thread-127552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:23.067 [DEBUG] [Thread-127552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:23.068 [DEBUG] [Thread-127552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:23.068 [DEBUG] [Thread-127552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:23.068 [DEBUG] [Thread-127552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:23.068 [DEBUG] [Thread-127552] [transport.py] [_log()] Compression: none
2025-09-28T14:48:23.068 [DEBUG] [Thread-127552] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:23.083 [DEBUG] [Thread-127552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:23.083 [DEBUG] [Thread-127552] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:23.084 [DEBUG] [Thread-127552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:48:23.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:48:23.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:23.085 [DEBUG] [Thread-127552] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:23.085 [DEBUG] [Thread-127552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:23.085 [DEBUG] [Thread-127552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:23.085 [DEBUG] [Thread-127552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:48:23.086 [DEBUG] [Thread-127552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:23.106 [INFO] [Thread-127552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:23.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:23.652 [DEBUG] [Thread-127552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:23.652 [DEBUG] [Thread-127552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:23.652 [DEBUG] [Thread-127552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:48:23.693 [DEBUG] [Thread-127552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:23.693 [DEBUG] [Thread-127552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:23.696 [DEBUG] [Thread-127552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:23.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:23.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:48:23.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:48:23.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:48:23.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:23.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:48:23.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:23.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:23.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:48:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.533069 -999.00  +19.20  24.57     35   +3.30 1 1 1 1 1   888    0 15.59 -12.60 ----- 24.6 24.6 196.4 28.0 24.9 -27.4 23.9 -27.0 25.3 -26.4 26.4 -30.0
2025-09-28T14:48:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:48:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:48:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.533069
2025-09-28T14:48:23.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:48:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:48:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:48:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:48:23.726 [DEBUG] [Thread-127552] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:23.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:48:23.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:47:55', tmtdew=18.01, humidity=29.59, cloud=0.0, wind=23.03, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:47:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:48:23.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-28T14:48:23.823 [DEBUG] [Thread-127555] [transport.py] [_log()] starting thread (client mode): 0x2e3f8040
2025-09-28T14:48:23.823 [DEBUG] [Thread-127555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:23.840 [DEBUG] [Thread-127555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:48:23.841 [INFO] [Thread-127555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:48:23.848 [DEBUG] [Thread-127555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:23.848 [DEBUG] [Thread-127555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:48:23.848 [DEBUG] [Thread-127555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:23.849 [DEBUG] [Thread-127555] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] Compression: none
2025-09-28T14:48:23.850 [DEBUG] [Thread-127555] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:23.909 [DEBUG] [Thread-127555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:23.910 [DEBUG] [Thread-127555] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:23.910 [DEBUG] [Thread-127555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:48:23.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:48:23.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:23.965 [DEBUG] [Thread-127555] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:23.965 [DEBUG] [Thread-127555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:23.965 [DEBUG] [Thread-127555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:23.966 [DEBUG] [Thread-127555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:48:23.966 [DEBUG] [Thread-127555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:23.989 [INFO] [Thread-127555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:23.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:48:23.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:25.328 [DEBUG] [Thread-127555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:25.328 [DEBUG] [Thread-127555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:25.381 [DEBUG] [Thread-127555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:25.381 [DEBUG] [Thread-127555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:25.390 [DEBUG] [Thread-127555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:25.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:25.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-28T14:48:25.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-28T14:48:25.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:25.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:25.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:25.425 [DEBUG] [Thread-127555] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:29.804 [DEBUG] [Thread-127557 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:35.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:48:35.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:48: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-28T14:48:36.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 48, 27), 17.73, 30.1, 0.0, 20.7, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:48:36.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:48:27
2025-09-28T14:48:36.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:48:36.296 [DEBUG] [Thread-127558] [transport.py] [_log()] starting thread (client mode): 0x2e362890
2025-09-28T14:48:36.296 [DEBUG] [Thread-127558] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:36.316 [DEBUG] [Thread-127558] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:48:36.316 [INFO] [Thread-127558] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:48:36.317 [DEBUG] [Thread-127558] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] Compression: none
2025-09-28T14:48:36.318 [DEBUG] [Thread-127558] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:36.327 [DEBUG] [Thread-127558] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:36.328 [DEBUG] [Thread-127558] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:36.328 [DEBUG] [Thread-127558] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:48:36.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:48:36.328 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:36.329 [DEBUG] [Thread-127558] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:36.330 [DEBUG] [Thread-127558] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:36.330 [DEBUG] [Thread-127558] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:36.330 [DEBUG] [Thread-127558] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:48:36.330 [DEBUG] [Thread-127558] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:36.342 [INFO] [Thread-127558] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:36.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:36.923 [DEBUG] [Thread-127558] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:36.923 [DEBUG] [Thread-127558] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:36.924 [DEBUG] [Thread-127558] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:48:36.964 [DEBUG] [Thread-127558] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:36.964 [DEBUG] [Thread-127558] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:36.967 [DEBUG] [Thread-127558] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:36.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:36.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:48:36.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:48:36.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:48:36.989 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:36.991 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:48:36.991 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.533069 -999.00  +19.20  24.57     35   +3.30 1 1 1 1 1   888    0 15.59 -12.60 ----- 24.6 24.6 196.4 28.0 24.9 -27.4 23.9 -27.0 25.3 -26.4 26.4 -30.0
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:48:36.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.533069
2025-09-28T14:48:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:48:36.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:48:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:48:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:48:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:48:36.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:48:27', tmtdew=17.73, humidity=30.1, cloud=0.0, wind=20.7, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:47:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:48:36.994 [DEBUG] [Thread-127558] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:37.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-28T14:48:37.095 [DEBUG] [Thread-127561] [transport.py] [_log()] starting thread (client mode): 0x2e3632b0
2025-09-28T14:48:37.095 [DEBUG] [Thread-127561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:37.112 [DEBUG] [Thread-127561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:48:37.113 [INFO] [Thread-127561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:48:37.123 [DEBUG] [Thread-127561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:37.124 [DEBUG] [Thread-127561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:37.125 [DEBUG] [Thread-127561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:37.125 [DEBUG] [Thread-127561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:37.125 [DEBUG] [Thread-127561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:37.125 [DEBUG] [Thread-127561] [transport.py] [_log()] Compression: none
2025-09-28T14:48:37.125 [DEBUG] [Thread-127561] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:37.180 [DEBUG] [Thread-127561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:37.180 [DEBUG] [Thread-127561] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:37.180 [DEBUG] [Thread-127561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:48:37.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:48:37.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:37.237 [DEBUG] [Thread-127561] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:37.238 [DEBUG] [Thread-127561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:37.238 [DEBUG] [Thread-127561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:37.238 [DEBUG] [Thread-127561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:48:37.238 [DEBUG] [Thread-127561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:37.264 [INFO] [Thread-127561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:37.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-28T14:48:37.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:38.715 [DEBUG] [Thread-127561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:38.715 [DEBUG] [Thread-127561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:38.764 [DEBUG] [Thread-127561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:38.764 [DEBUG] [Thread-127561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:38.774 [DEBUG] [Thread-127561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:38.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:38.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-28T14:48:38.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-28T14:48:38.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:38.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:38.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:38.814 [DEBUG] [Thread-127561] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:44.831 [DEBUG] [Thread-127563 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:48:48.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:48:48.817 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:48:48.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-28T14:48:49.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 48, 27), 17.73, 30.1, 0.0, 20.7, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:48:49.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:48:27
2025-09-28T14:48:49.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:48:49.666 [DEBUG] [Thread-127564] [transport.py] [_log()] starting thread (client mode): 0x28705540
2025-09-28T14:48:49.666 [DEBUG] [Thread-127564] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:49.686 [DEBUG] [Thread-127564] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:48:49.686 [INFO] [Thread-127564] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] Compression: none
2025-09-28T14:48:49.688 [DEBUG] [Thread-127564] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:49.699 [DEBUG] [Thread-127564] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:49.699 [DEBUG] [Thread-127564] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:49.699 [DEBUG] [Thread-127564] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:48:49.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:48:49.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:49.702 [DEBUG] [Thread-127564] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:49.702 [DEBUG] [Thread-127564] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:49.702 [DEBUG] [Thread-127564] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:49.702 [DEBUG] [Thread-127564] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:48:49.702 [DEBUG] [Thread-127564] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:49.719 [INFO] [Thread-127564] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:49.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:50.374 [DEBUG] [Thread-127564] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:50.374 [DEBUG] [Thread-127564] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:50.375 [DEBUG] [Thread-127564] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:48:50.415 [DEBUG] [Thread-127564] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:50.416 [DEBUG] [Thread-127564] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:50.419 [DEBUG] [Thread-127564] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:50.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:50.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:48:50.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:48:50.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:48:50.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:50.441 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:48:50.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.533763 -999.00  +19.00  19.31     36   +3.60 1 1 1 1 1   888    0 15.55 -14.46 ----- 19.3 19.3 234.6 32.0 24.8 -27.4 23.8 -26.0 25.3 -26.0 26.4 -28.6
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:48:50.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.533763
2025-09-28T14:48:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:48:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:48:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:48:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:48:50.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:48:50.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:48:27', tmtdew=17.73, humidity=30.1, cloud=0.0, wind=20.7, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:48:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:48:50.444 [DEBUG] [Thread-127564] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:50.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-28T14:48:50.537 [DEBUG] [Thread-127567] [transport.py] [_log()] starting thread (client mode): 0x2e376860
2025-09-28T14:48:50.537 [DEBUG] [Thread-127567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:48:50.551 [DEBUG] [Thread-127567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:48:50.552 [INFO] [Thread-127567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:48:50.559 [DEBUG] [Thread-127567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:48:50.559 [DEBUG] [Thread-127567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:48:50.559 [DEBUG] [Thread-127567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] client lang: <none>
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] server lang: <none>
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] kex follows: False
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] Compression: none
2025-09-28T14:48:50.560 [DEBUG] [Thread-127567] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:48:50.616 [DEBUG] [Thread-127567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:48:50.616 [DEBUG] [Thread-127567] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:48:50.617 [DEBUG] [Thread-127567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:48:50.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:48:50.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:48:50.672 [DEBUG] [Thread-127567] [transport.py] [_log()] userauth is OK
2025-09-28T14:48:50.672 [DEBUG] [Thread-127567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:48:50.672 [DEBUG] [Thread-127567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:48:50.672 [DEBUG] [Thread-127567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:48:50.673 [DEBUG] [Thread-127567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:48:50.691 [INFO] [Thread-127567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:48:50.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-28T14:48:50.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:48:51.879 [DEBUG] [Thread-127567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:48:51.879 [DEBUG] [Thread-127567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:48:51.927 [DEBUG] [Thread-127567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:48:51.927 [DEBUG] [Thread-127567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:48:51.936 [DEBUG] [Thread-127567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:48:51.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:48:51.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-28T14:48:51.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-28T14:48:51.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:48:51.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:48:51.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:48:51.973 [DEBUG] [Thread-127567] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:48:59.877 [DEBUG] [Thread-127569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:01.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:49:01.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:49:01.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-28T14:49:02.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 48, 27), 17.73, 30.1, 0.0, 20.7, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:49:02.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:48:27
2025-09-28T14:49:02.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:49:02.878 [DEBUG] [Thread-127570] [transport.py] [_log()] starting thread (client mode): 0x2e362350
2025-09-28T14:49:02.878 [DEBUG] [Thread-127570] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:02.892 [DEBUG] [Thread-127570] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:49:02.892 [INFO] [Thread-127570] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:02.894 [DEBUG] [Thread-127570] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] Compression: none
2025-09-28T14:49:02.895 [DEBUG] [Thread-127570] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:02.903 [DEBUG] [Thread-127570] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:02.903 [DEBUG] [Thread-127570] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:02.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:49:02.903 [DEBUG] [Thread-127570] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:49:02.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:02.904 [DEBUG] [Thread-127570] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:02.904 [DEBUG] [Thread-127570] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:02.904 [DEBUG] [Thread-127570] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:02.904 [DEBUG] [Thread-127570] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:49:02.904 [DEBUG] [Thread-127570] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:02.913 [INFO] [Thread-127570] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:02.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:03.488 [DEBUG] [Thread-127570] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:03.489 [DEBUG] [Thread-127570] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:03.489 [DEBUG] [Thread-127570] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:49:03.530 [DEBUG] [Thread-127570] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:03.530 [DEBUG] [Thread-127570] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:03.533 [DEBUG] [Thread-127570] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:03.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:03.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:49:03.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:49:03.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:49:03.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:03.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:49:03.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.533763 -999.00  +19.00  19.31     36   +3.60 1 1 1 1 1   888    0 15.55 -14.46 ----- 19.3 19.3 234.6 32.0 24.8 -27.4 23.8 -26.0 25.3 -26.0 26.4 -28.6
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.533763
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:49:03.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:48:27', tmtdew=17.73, humidity=30.1, cloud=0.0, wind=20.7, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:48:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:49:03.552 [DEBUG] [Thread-127570] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:03.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-28T14:49:03.636 [DEBUG] [Thread-127573] [transport.py] [_log()] starting thread (client mode): 0x2e3fb760
2025-09-28T14:49:03.636 [DEBUG] [Thread-127573] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:03.651 [DEBUG] [Thread-127573] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:49:03.651 [INFO] [Thread-127573] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:03.658 [DEBUG] [Thread-127573] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:03.659 [DEBUG] [Thread-127573] [transport.py] [_log()] Compression: none
2025-09-28T14:49:03.659 [DEBUG] [Thread-127573] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:03.713 [DEBUG] [Thread-127573] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:03.714 [DEBUG] [Thread-127573] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:03.714 [DEBUG] [Thread-127573] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:49:03.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:49:03.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:03.771 [DEBUG] [Thread-127573] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:03.771 [DEBUG] [Thread-127573] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:03.771 [DEBUG] [Thread-127573] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:03.771 [DEBUG] [Thread-127573] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:49:03.771 [DEBUG] [Thread-127573] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:03.786 [INFO] [Thread-127573] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:03.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-28T14:49:03.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:05.226 [DEBUG] [Thread-127573] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:05.226 [DEBUG] [Thread-127573] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:05.274 [DEBUG] [Thread-127573] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:05.274 [DEBUG] [Thread-127573] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:05.282 [DEBUG] [Thread-127573] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:05.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:05.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-28T14:49:05.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-28T14:49:05.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:05.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:05.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:05.317 [DEBUG] [Thread-127573] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:06.297 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:06.298 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:14.922 [DEBUG] [Thread-127575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:15.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:49:15.320 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:49:15.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-28T14:49:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 48, 27), 17.73, 30.1, 0.0, 20.7, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:49:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:48:27
2025-09-28T14:49:16.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:49:16.096 [DEBUG] [Thread-127576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:16.166 [DEBUG] [Thread-127577] [transport.py] [_log()] starting thread (client mode): 0x28706650
2025-09-28T14:49:16.166 [DEBUG] [Thread-127577] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:16.191 [DEBUG] [Thread-127577] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:49:16.191 [INFO] [Thread-127577] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:49:16.192 [DEBUG] [Thread-127577] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:16.192 [DEBUG] [Thread-127577] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:49:16.192 [DEBUG] [Thread-127577] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:16.192 [DEBUG] [Thread-127577] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:16.193 [DEBUG] [Thread-127577] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:16.194 [DEBUG] [Thread-127577] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:16.194 [DEBUG] [Thread-127577] [transport.py] [_log()] Compression: none
2025-09-28T14:49:16.194 [DEBUG] [Thread-127577] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:16.207 [DEBUG] [Thread-127577] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:16.208 [DEBUG] [Thread-127577] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:16.208 [DEBUG] [Thread-127577] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:49:16.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:49:16.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:16.211 [DEBUG] [Thread-127577] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:16.211 [DEBUG] [Thread-127577] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:16.211 [DEBUG] [Thread-127577] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:16.211 [DEBUG] [Thread-127577] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:49:16.212 [DEBUG] [Thread-127577] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:16.230 [INFO] [Thread-127577] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:16.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:16.791 [DEBUG] [Thread-127577] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:16.791 [DEBUG] [Thread-127577] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:16.791 [DEBUG] [Thread-127577] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:49:16.832 [DEBUG] [Thread-127577] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:16.832 [DEBUG] [Thread-127577] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:16.835 [DEBUG] [Thread-127577] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:16.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:16.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:49:16.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:49:16.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:49:16.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:16.857 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:49:16.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534110 -999.00  +19.10  22.73     36   +3.70 1 1 1 1 1   888    0 15.48 -17.91 ----- 22.7 22.7 221.8 30.0 24.7 -28.1 23.7 -26.4 25.1 -26.4 26.2 -29.8
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:49:16.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534110
2025-09-28T14:49:16.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:49:16.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:49:16.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:49:16.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:49:16.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:49:16.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:48:27', tmtdew=17.73, humidity=30.1, cloud=0.0, wind=20.7, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:49:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:49:16.860 [DEBUG] [Thread-127577] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:16.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-28T14:49:16.959 [DEBUG] [Thread-127580] [transport.py] [_log()] starting thread (client mode): 0x2b9ce5f0
2025-09-28T14:49:16.959 [DEBUG] [Thread-127580] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:16.975 [DEBUG] [Thread-127580] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:49:16.975 [INFO] [Thread-127580] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] Compression: none
2025-09-28T14:49:16.983 [DEBUG] [Thread-127580] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:17.042 [DEBUG] [Thread-127580] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:17.042 [DEBUG] [Thread-127580] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:17.042 [DEBUG] [Thread-127580] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:49:17.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:49:17.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:17.098 [DEBUG] [Thread-127580] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:17.099 [DEBUG] [Thread-127580] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:17.099 [DEBUG] [Thread-127580] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:17.099 [DEBUG] [Thread-127580] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:49:17.099 [DEBUG] [Thread-127580] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:17.118 [INFO] [Thread-127580] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:17.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-28T14:49:17.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:18.396 [DEBUG] [Thread-127580] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:18.396 [DEBUG] [Thread-127580] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:18.444 [DEBUG] [Thread-127580] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:18.444 [DEBUG] [Thread-127580] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:18.454 [DEBUG] [Thread-127580] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:18.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:18.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-28T14:49:18.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-28T14:49:18.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:18.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:18.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:18.488 [DEBUG] [Thread-127580] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:28.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:49:28.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:49:28.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-28T14:49:29.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 48, 27), 17.73, 30.1, 0.0, 20.7, 18.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:49:29.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:48:27
2025-09-28T14:49:29.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:49:29.336 [DEBUG] [Thread-127582] [transport.py] [_log()] starting thread (client mode): 0x2e363c10
2025-09-28T14:49:29.336 [DEBUG] [Thread-127582] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:29.361 [DEBUG] [Thread-127582] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:49:29.361 [INFO] [Thread-127582] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:49:29.364 [DEBUG] [Thread-127582] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:29.364 [DEBUG] [Thread-127582] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:49:29.364 [DEBUG] [Thread-127582] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:29.364 [DEBUG] [Thread-127582] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:29.365 [DEBUG] [Thread-127582] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:29.366 [DEBUG] [Thread-127582] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:29.366 [DEBUG] [Thread-127582] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:29.366 [DEBUG] [Thread-127582] [transport.py] [_log()] Compression: none
2025-09-28T14:49:29.366 [DEBUG] [Thread-127582] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:29.385 [DEBUG] [Thread-127582] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:29.386 [DEBUG] [Thread-127582] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:29.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:49:29.387 [DEBUG] [Thread-127582] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:49:29.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:29.389 [DEBUG] [Thread-127582] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:29.389 [DEBUG] [Thread-127582] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:29.390 [DEBUG] [Thread-127582] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:29.390 [DEBUG] [Thread-127582] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:49:29.390 [DEBUG] [Thread-127582] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:29.413 [INFO] [Thread-127582] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:29.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:29.952 [DEBUG] [Thread-127584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:30.066 [DEBUG] [Thread-127582] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:30.067 [DEBUG] [Thread-127582] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:30.067 [DEBUG] [Thread-127582] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:49:30.107 [DEBUG] [Thread-127582] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:30.108 [DEBUG] [Thread-127582] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:30.110 [DEBUG] [Thread-127582] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:30.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:30.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:49:30.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:49:30.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:49:30.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:30.133 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:49:30.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534110 -999.00  +19.10  22.73     36   +3.70 1 1 1 1 1   888    0 15.48 -17.91 ----- 22.7 22.7 221.8 30.0 24.7 -28.1 23.7 -26.4 25.1 -26.4 26.2 -29.8
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:49:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534110
2025-09-28T14:49:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:49:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:49:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:49:30.136 [DEBUG] [Thread-127582] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:49:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:49:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:48:27', tmtdew=17.73, humidity=30.1, cloud=0.0, wind=20.7, temperature=18.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:49:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:49:30.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-28T14:49:30.232 [DEBUG] [Thread-127586] [transport.py] [_log()] starting thread (client mode): 0x2e3f9690
2025-09-28T14:49:30.232 [DEBUG] [Thread-127586] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:30.250 [DEBUG] [Thread-127586] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:49:30.251 [INFO] [Thread-127586] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:49:30.258 [DEBUG] [Thread-127586] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:30.258 [DEBUG] [Thread-127586] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:30.259 [DEBUG] [Thread-127586] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:30.260 [DEBUG] [Thread-127586] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:30.260 [DEBUG] [Thread-127586] [transport.py] [_log()] Compression: none
2025-09-28T14:49:30.260 [DEBUG] [Thread-127586] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:30.318 [DEBUG] [Thread-127586] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:30.318 [DEBUG] [Thread-127586] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:30.319 [DEBUG] [Thread-127586] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:49:30.319 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:49:30.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:30.375 [DEBUG] [Thread-127586] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:30.376 [DEBUG] [Thread-127586] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:30.376 [DEBUG] [Thread-127586] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:30.376 [DEBUG] [Thread-127586] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:49:30.376 [DEBUG] [Thread-127586] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:30.407 [INFO] [Thread-127586] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:30.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-28T14:49:30.408 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:31.719 [DEBUG] [Thread-127586] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:31.720 [DEBUG] [Thread-127586] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:31.767 [DEBUG] [Thread-127586] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:31.767 [DEBUG] [Thread-127586] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:31.776 [DEBUG] [Thread-127586] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:31.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:31.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-28T14:49:31.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-28T14:49:31.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:31.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:31.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:31.810 [DEBUG] [Thread-127586] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:41.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:49:41.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:49:41.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:49:42.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 49, 32), 17.11, 31.83, 29.3, 23.33, 18.07, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:49:42.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:49:32
2025-09-28T14:49:42.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:49:42.695 [DEBUG] [Thread-127588] [transport.py] [_log()] starting thread (client mode): 0x28704eb0
2025-09-28T14:49:42.695 [DEBUG] [Thread-127588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:42.716 [DEBUG] [Thread-127588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:49:42.716 [INFO] [Thread-127588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] Compression: none
2025-09-28T14:49:42.718 [DEBUG] [Thread-127588] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:42.731 [DEBUG] [Thread-127588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:42.731 [DEBUG] [Thread-127588] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:42.731 [DEBUG] [Thread-127588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:49:42.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:49:42.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:42.732 [DEBUG] [Thread-127588] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:42.732 [DEBUG] [Thread-127588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:42.732 [DEBUG] [Thread-127588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:42.732 [DEBUG] [Thread-127588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:49:42.732 [DEBUG] [Thread-127588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:42.742 [INFO] [Thread-127588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:42.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:43.405 [DEBUG] [Thread-127588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:43.405 [DEBUG] [Thread-127588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:43.405 [DEBUG] [Thread-127588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:49:43.446 [DEBUG] [Thread-127588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:43.446 [DEBUG] [Thread-127588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:43.448 [DEBUG] [Thread-127588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:43.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:43.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:49:43.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:49:43.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:49:43.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:43.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:49:43.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534110 -999.00  +19.10  22.73     36   +3.70 1 1 1 1 1   888    0 15.48 -17.91 ----- 22.7 22.7 221.8 30.0 24.7 -28.1 23.7 -26.4 25.1 -26.4 26.2 -29.8
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534110
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:49:43.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:49:43.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:49:32', tmtdew=17.11, humidity=31.83, cloud=29.3, wind=23.33, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:49:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:49:43.468 [DEBUG] [Thread-127588] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:43.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-28T14:49:43.554 [DEBUG] [Thread-127591] [transport.py] [_log()] starting thread (client mode): 0x28705780
2025-09-28T14:49:43.554 [DEBUG] [Thread-127591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:43.570 [DEBUG] [Thread-127591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:49:43.570 [INFO] [Thread-127591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] Compression: none
2025-09-28T14:49:43.578 [DEBUG] [Thread-127591] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:43.639 [DEBUG] [Thread-127591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:43.639 [DEBUG] [Thread-127591] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:43.640 [DEBUG] [Thread-127591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:49:43.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:49:43.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:43.698 [DEBUG] [Thread-127591] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:43.698 [DEBUG] [Thread-127591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:43.698 [DEBUG] [Thread-127591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:43.698 [DEBUG] [Thread-127591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:49:43.698 [DEBUG] [Thread-127591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:43.717 [INFO] [Thread-127591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:43.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-28T14:49:43.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:44.994 [DEBUG] [Thread-127593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:49:45.117 [DEBUG] [Thread-127591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:45.117 [DEBUG] [Thread-127591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:45.165 [DEBUG] [Thread-127591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:45.165 [DEBUG] [Thread-127591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:45.175 [DEBUG] [Thread-127591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:45.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:45.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-28T14:49:45.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-28T14:49:45.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:45.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:45.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:45.216 [DEBUG] [Thread-127591] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:55.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:49:55.209 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:49:55.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-28T14:49:55.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 49, 32), 17.11, 31.83, 29.3, 23.33, 18.07, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:49:55.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:49:32
2025-09-28T14:49:55.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:49:56.058 [DEBUG] [Thread-127594] [transport.py] [_log()] starting thread (client mode): 0x2b9ccf40
2025-09-28T14:49:56.059 [DEBUG] [Thread-127594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:56.078 [DEBUG] [Thread-127594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:49:56.078 [INFO] [Thread-127594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:49:56.081 [DEBUG] [Thread-127594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:56.082 [DEBUG] [Thread-127594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:56.083 [DEBUG] [Thread-127594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:56.083 [DEBUG] [Thread-127594] [transport.py] [_log()] Compression: none
2025-09-28T14:49:56.083 [DEBUG] [Thread-127594] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:56.103 [DEBUG] [Thread-127594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:56.104 [DEBUG] [Thread-127594] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:56.104 [DEBUG] [Thread-127594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:49:56.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:49:56.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:56.107 [DEBUG] [Thread-127594] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:56.107 [DEBUG] [Thread-127594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:56.108 [DEBUG] [Thread-127594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:56.108 [DEBUG] [Thread-127594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:49:56.108 [DEBUG] [Thread-127594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:56.129 [INFO] [Thread-127594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:56.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:56.789 [DEBUG] [Thread-127594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:56.790 [DEBUG] [Thread-127594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:56.790 [DEBUG] [Thread-127594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:49:56.830 [DEBUG] [Thread-127594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:56.830 [DEBUG] [Thread-127594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:56.833 [DEBUG] [Thread-127594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:56.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:56.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:49:56.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:49:56.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:49:56.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:56.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:49:56.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:56.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534458 -999.00  +19.00  23.88     36   +3.70 1 1 1 1 1   888    0 15.16 -20.14 ----- 23.9 23.9 202.2 33.4 24.5 -27.9 23.7 -26.2 25.0 -27.3 26.2 -29.1
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534458
2025-09-28T14:49:56.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:49:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:49:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:49:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:49:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:49:56.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:49:32', tmtdew=17.11, humidity=31.83, cloud=29.3, wind=23.33, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:49:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:49:56.859 [DEBUG] [Thread-127594] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:49:56.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-28T14:49:56.952 [DEBUG] [Thread-127597] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-28T14:49:56.952 [DEBUG] [Thread-127597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:49:56.971 [DEBUG] [Thread-127597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:49:56.971 [INFO] [Thread-127597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:49:56.980 [DEBUG] [Thread-127597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] client lang: <none>
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] server lang: <none>
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] kex follows: False
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:49:56.981 [DEBUG] [Thread-127597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:49:56.982 [DEBUG] [Thread-127597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:49:56.982 [DEBUG] [Thread-127597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:49:56.982 [DEBUG] [Thread-127597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:49:56.982 [DEBUG] [Thread-127597] [transport.py] [_log()] Compression: none
2025-09-28T14:49:56.982 [DEBUG] [Thread-127597] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:49:57.044 [DEBUG] [Thread-127597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:49:57.045 [DEBUG] [Thread-127597] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:49:57.045 [DEBUG] [Thread-127597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:49:57.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:49:57.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:49:57.113 [DEBUG] [Thread-127597] [transport.py] [_log()] userauth is OK
2025-09-28T14:49:57.113 [DEBUG] [Thread-127597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:49:57.113 [DEBUG] [Thread-127597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:49:57.113 [DEBUG] [Thread-127597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:49:57.113 [DEBUG] [Thread-127597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:49:57.132 [INFO] [Thread-127597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:49:57.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-28T14:49:57.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:49:58.476 [DEBUG] [Thread-127597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:49:58.476 [DEBUG] [Thread-127597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:49:58.524 [DEBUG] [Thread-127597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:49:58.525 [DEBUG] [Thread-127597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:49:58.534 [DEBUG] [Thread-127597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:49:58.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:49:58.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-28T14:49:58.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-28T14:49:58.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:49:58.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:49:58.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:49:58.570 [DEBUG] [Thread-127597] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:00.051 [DEBUG] [Thread-127599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:06.439 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:06.440 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:08.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:50:08.572 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:50:08.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-28T14:50:09.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 50, 3), 17.15, 31.77, 29.3, 21.9, 18.19, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:50:09.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:50:03
2025-09-28T14:50:09.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:50:09.431 [DEBUG] [Thread-127600] [transport.py] [_log()] starting thread (client mode): 0x2e38d8a0
2025-09-28T14:50:09.431 [DEBUG] [Thread-127600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:09.451 [DEBUG] [Thread-127600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:50:09.451 [INFO] [Thread-127600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] Compression: none
2025-09-28T14:50:09.454 [DEBUG] [Thread-127600] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:09.470 [DEBUG] [Thread-127600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:09.471 [DEBUG] [Thread-127600] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:09.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:50:09.472 [DEBUG] [Thread-127600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:50:09.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:09.512 [DEBUG] [Thread-127600] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:09.513 [DEBUG] [Thread-127600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:09.513 [DEBUG] [Thread-127600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:09.513 [DEBUG] [Thread-127600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:50:09.513 [DEBUG] [Thread-127600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:09.545 [INFO] [Thread-127600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:09.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:14.915 [DEBUG] [Thread-127600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:14.915 [DEBUG] [Thread-127600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:14.915 [DEBUG] [Thread-127600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:50:14.956 [DEBUG] [Thread-127600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:14.956 [DEBUG] [Thread-127600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:14.959 [DEBUG] [Thread-127600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:14.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:14.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:50:14.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:50:14.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:50:14.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:14.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:50:14.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534458 -999.00  +19.00  23.88     36   +3.70 1 1 1 1 1   888    0 15.16 -20.14 ----- 23.9 23.9 202.2 33.4 24.5 -27.9 23.7 -26.2 25.0 -27.3 26.2 -29.1
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:50:14.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534458
2025-09-28T14:50:14.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:50:14.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:50:14.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:50:14.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:50:14.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:50:14.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:50:03', tmtdew=17.15, humidity=31.77, cloud=29.3, wind=21.9, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:49:37.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:50:14.988 [DEBUG] [Thread-127600] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:15.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-28T14:50:15.085 [DEBUG] [Thread-127603] [transport.py] [_log()] starting thread (client mode): 0x2e3602b0
2025-09-28T14:50:15.085 [DEBUG] [Thread-127603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:15.091 [DEBUG] [Thread-127604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:15.099 [DEBUG] [Thread-127603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:50:15.100 [INFO] [Thread-127603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:15.107 [DEBUG] [Thread-127603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:15.108 [DEBUG] [Thread-127603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:15.108 [DEBUG] [Thread-127603] [transport.py] [_log()] Compression: none
2025-09-28T14:50:15.108 [DEBUG] [Thread-127603] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:15.167 [DEBUG] [Thread-127603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:15.167 [DEBUG] [Thread-127603] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:15.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:50:15.167 [DEBUG] [Thread-127603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:50:15.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:15.227 [DEBUG] [Thread-127603] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:15.227 [DEBUG] [Thread-127603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:15.227 [DEBUG] [Thread-127603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:15.227 [DEBUG] [Thread-127603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:50:15.227 [DEBUG] [Thread-127603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:15.245 [INFO] [Thread-127603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:15.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-28T14:50:15.245 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:15.527 [DEBUG] [Thread-127603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:15.527 [DEBUG] [Thread-127603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:15.575 [DEBUG] [Thread-127603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:15.575 [DEBUG] [Thread-127603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:15.583 [DEBUG] [Thread-127603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:15.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:15.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-28T14:50:15.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-28T14:50:15.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:15.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:15.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:15.624 [DEBUG] [Thread-127603] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:16.124 [DEBUG] [Thread-127606 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:25.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:50:25.622 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:50:25.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-28T14:50:26.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 50, 3), 17.15, 31.77, 29.3, 21.9, 18.19, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:50:26.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:50:03
2025-09-28T14:50:26.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:50:26.468 [DEBUG] [Thread-127607] [transport.py] [_log()] starting thread (client mode): 0x2e349f60
2025-09-28T14:50:26.468 [DEBUG] [Thread-127607] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:26.483 [DEBUG] [Thread-127607] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:50:26.483 [INFO] [Thread-127607] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:26.486 [DEBUG] [Thread-127607] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:26.487 [DEBUG] [Thread-127607] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:26.487 [DEBUG] [Thread-127607] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:26.487 [DEBUG] [Thread-127607] [transport.py] [_log()] Compression: none
2025-09-28T14:50:26.487 [DEBUG] [Thread-127607] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:26.503 [DEBUG] [Thread-127607] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:26.503 [DEBUG] [Thread-127607] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:26.504 [DEBUG] [Thread-127607] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:50:26.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:50:26.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:26.506 [DEBUG] [Thread-127607] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:26.506 [DEBUG] [Thread-127607] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:26.506 [DEBUG] [Thread-127607] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:26.506 [DEBUG] [Thread-127607] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:50:26.506 [DEBUG] [Thread-127607] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:26.530 [INFO] [Thread-127607] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:26.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:27.184 [DEBUG] [Thread-127607] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:27.184 [DEBUG] [Thread-127607] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:27.184 [DEBUG] [Thread-127607] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:50:27.225 [DEBUG] [Thread-127607] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:27.225 [DEBUG] [Thread-127607] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:27.228 [DEBUG] [Thread-127607] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:27.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:27.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:50:27.241 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:50:27.243 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:50:27.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:27.251 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:50:27.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:27.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:50:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534804 -999.00  +18.90  14.43     36   +3.60 1 1 1 1 1   888    0 15.07 -20.70 ----- 14.4 14.4 215.0 35.0 24.4 -27.1 23.6 -27.1 24.9 -26.7 26.1 -27.6
2025-09-28T14:50:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:50:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:50:27.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534804
2025-09-28T14:50:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:50:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:50:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:50:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:50:27.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:50:27.254 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:50:03', tmtdew=17.15, humidity=31.77, cloud=29.3, wind=21.9, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:50:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:50:27.254 [DEBUG] [Thread-127607] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:27.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-28T14:50:27.349 [DEBUG] [Thread-127610] [transport.py] [_log()] starting thread (client mode): 0x2b9cdcf0
2025-09-28T14:50:27.349 [DEBUG] [Thread-127610] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:27.364 [DEBUG] [Thread-127610] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:50:27.364 [INFO] [Thread-127610] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:50:27.376 [DEBUG] [Thread-127610] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:27.376 [DEBUG] [Thread-127610] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:50:27.376 [DEBUG] [Thread-127610] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:27.377 [DEBUG] [Thread-127610] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:27.378 [DEBUG] [Thread-127610] [transport.py] [_log()] Compression: none
2025-09-28T14:50:27.378 [DEBUG] [Thread-127610] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:27.434 [DEBUG] [Thread-127610] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:27.434 [DEBUG] [Thread-127610] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:27.435 [DEBUG] [Thread-127610] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:50:27.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:50:27.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:27.491 [DEBUG] [Thread-127610] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:27.492 [DEBUG] [Thread-127610] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:27.492 [DEBUG] [Thread-127610] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:27.492 [DEBUG] [Thread-127610] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:50:27.492 [DEBUG] [Thread-127610] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:27.515 [INFO] [Thread-127610] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50: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-28T14:50:27.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:28.122 [DEBUG] [Thread-127610] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:28.123 [DEBUG] [Thread-127610] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:28.170 [DEBUG] [Thread-127610] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:28.170 [DEBUG] [Thread-127610] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:28.179 [DEBUG] [Thread-127610] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:28.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:28.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-28T14:50:28.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-28T14:50:28.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:28.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:28.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:28.214 [DEBUG] [Thread-127610] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:30.126 [DEBUG] [Thread-127612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:38.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:50:38.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:50:38.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-28T14:50:38.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 50, 35), 17.07, 31.55, 29.3, 26.25, 18.24, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:50:38.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:50:35
2025-09-28T14:50:38.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:50:39.079 [DEBUG] [Thread-127613] [transport.py] [_log()] starting thread (client mode): 0x2e3fa3b0
2025-09-28T14:50:39.079 [DEBUG] [Thread-127613] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:39.094 [DEBUG] [Thread-127613] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:50:39.094 [INFO] [Thread-127613] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:39.098 [DEBUG] [Thread-127613] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:39.099 [DEBUG] [Thread-127613] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:39.099 [DEBUG] [Thread-127613] [transport.py] [_log()] Compression: none
2025-09-28T14:50:39.099 [DEBUG] [Thread-127613] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:39.118 [DEBUG] [Thread-127613] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:39.119 [DEBUG] [Thread-127613] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:39.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:50:39.120 [DEBUG] [Thread-127613] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:50:39.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:39.123 [DEBUG] [Thread-127613] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:39.123 [DEBUG] [Thread-127613] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:39.123 [DEBUG] [Thread-127613] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:39.123 [DEBUG] [Thread-127613] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:50:39.123 [DEBUG] [Thread-127613] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:39.154 [INFO] [Thread-127613] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:39.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:39.952 [DEBUG] [Thread-127613] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:39.953 [DEBUG] [Thread-127613] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:39.953 [DEBUG] [Thread-127613] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:50:39.993 [DEBUG] [Thread-127613] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:39.994 [DEBUG] [Thread-127613] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:39.996 [DEBUG] [Thread-127613] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:40.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:40.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:50:40.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:50:40.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:50:40.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:40.019 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:50:40.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:40.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:40.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:50:40.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534804 -999.00  +18.90  14.43     36   +3.60 1 1 1 1 1   888    0 15.07 -20.70 ----- 14.4 14.4 215.0 35.0 24.4 -27.1 23.6 -27.1 24.9 -26.7 26.1 -27.6
2025-09-28T14:50:40.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:50:40.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:50:40.020 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534804
2025-09-28T14:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:50:40.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:50:40.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:50:35', tmtdew=17.07, humidity=31.55, cloud=29.3, wind=26.25, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:50:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:50:40.022 [DEBUG] [Thread-127613] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:40.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-28T14:50:40.109 [DEBUG] [Thread-127616] [transport.py] [_log()] starting thread (client mode): 0x2e3dc220
2025-09-28T14:50:40.109 [DEBUG] [Thread-127616] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:40.124 [DEBUG] [Thread-127616] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:50:40.124 [INFO] [Thread-127616] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:50:40.132 [DEBUG] [Thread-127616] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:40.132 [DEBUG] [Thread-127616] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:50:40.132 [DEBUG] [Thread-127616] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:40.132 [DEBUG] [Thread-127616] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] Compression: none
2025-09-28T14:50:40.133 [DEBUG] [Thread-127616] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:40.191 [DEBUG] [Thread-127616] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:40.191 [DEBUG] [Thread-127616] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:40.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:50:40.192 [DEBUG] [Thread-127616] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:50:40.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:40.247 [DEBUG] [Thread-127616] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:40.247 [DEBUG] [Thread-127616] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:40.247 [DEBUG] [Thread-127616] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:40.248 [DEBUG] [Thread-127616] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:50:40.248 [DEBUG] [Thread-127616] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:40.268 [INFO] [Thread-127616] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:40.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:50:40.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:40.562 [DEBUG] [Thread-127616] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:40.562 [DEBUG] [Thread-127616] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:40.610 [DEBUG] [Thread-127616] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:40.610 [DEBUG] [Thread-127616] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:40.619 [DEBUG] [Thread-127616] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:40.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:40.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-28T14:50:40.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-28T14:50:40.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:40.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:40.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:40.654 [DEBUG] [Thread-127616] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:45.175 [DEBUG] [Thread-127618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:50:50.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:50:50.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:50:50.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-28T14:50:51.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 50, 35), 17.07, 31.55, 29.3, 26.25, 18.24, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:50:51.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:50:35
2025-09-28T14:50:51.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:50:51.502 [DEBUG] [Thread-127619] [transport.py] [_log()] starting thread (client mode): 0x2b94ed40
2025-09-28T14:50:51.502 [DEBUG] [Thread-127619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:51.516 [DEBUG] [Thread-127619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:50:51.517 [INFO] [Thread-127619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:50:51.519 [DEBUG] [Thread-127619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] Compression: none
2025-09-28T14:50:51.520 [DEBUG] [Thread-127619] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:51.537 [DEBUG] [Thread-127619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:51.538 [DEBUG] [Thread-127619] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:51.538 [DEBUG] [Thread-127619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:50:51.538 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:50:51.539 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:51.540 [DEBUG] [Thread-127619] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:51.540 [DEBUG] [Thread-127619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:51.540 [DEBUG] [Thread-127619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:51.540 [DEBUG] [Thread-127619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:50:51.541 [DEBUG] [Thread-127619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:51.560 [INFO] [Thread-127619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:51.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:52.359 [DEBUG] [Thread-127619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:52.360 [DEBUG] [Thread-127619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:52.360 [DEBUG] [Thread-127619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:50:52.401 [DEBUG] [Thread-127619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:52.401 [DEBUG] [Thread-127619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:52.403 [DEBUG] [Thread-127619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:52.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:52.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:50:52.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:50:52.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:50:52.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:52.422 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:50:52.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.534804 -999.00  +18.90  14.43     36   +3.60 1 1 1 1 1   888    0 15.07 -20.70 ----- 14.4 14.4 215.0 35.0 24.4 -27.1 23.6 -27.1 24.9 -26.7 26.1 -27.6
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.534804
2025-09-28T14:50:52.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:50:52.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:50:52.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:50:52.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:50:52.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:50:52.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:50:35', tmtdew=17.07, humidity=31.55, cloud=29.3, wind=26.25, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:50:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:50:52.423 [DEBUG] [Thread-127619] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:50:52.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-28T14:50:52.508 [DEBUG] [Thread-127622] [transport.py] [_log()] starting thread (client mode): 0x2b96c5e0
2025-09-28T14:50:52.509 [DEBUG] [Thread-127622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:50:52.523 [DEBUG] [Thread-127622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:50:52.523 [INFO] [Thread-127622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] client lang: <none>
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] server lang: <none>
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] kex follows: False
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] Compression: none
2025-09-28T14:50:52.531 [DEBUG] [Thread-127622] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:50:52.589 [DEBUG] [Thread-127622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:50:52.589 [DEBUG] [Thread-127622] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:50:52.589 [DEBUG] [Thread-127622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:50:52.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:50:52.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:50:52.647 [DEBUG] [Thread-127622] [transport.py] [_log()] userauth is OK
2025-09-28T14:50:52.647 [DEBUG] [Thread-127622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:50:52.647 [DEBUG] [Thread-127622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:50:52.647 [DEBUG] [Thread-127622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:50:52.647 [DEBUG] [Thread-127622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:50:52.662 [INFO] [Thread-127622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:50:52.662 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:50:52.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:50:53.220 [DEBUG] [Thread-127622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:50:53.220 [DEBUG] [Thread-127622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:50:53.269 [DEBUG] [Thread-127622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:50:53.269 [DEBUG] [Thread-127622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:50:53.277 [DEBUG] [Thread-127622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:50:53.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:50:53.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-28T14:50:53.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-28T14:50:53.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:50:53.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:50:53.302 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:50:53.311 [DEBUG] [Thread-127622] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:00.207 [DEBUG] [Thread-127624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:03.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:51:03.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:51:03.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-28T14:51:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 50, 35), 17.07, 31.55, 29.3, 26.25, 18.24, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:51:03.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:50:35
2025-09-28T14:51:03.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:51:04.144 [DEBUG] [Thread-127625] [transport.py] [_log()] starting thread (client mode): 0x2e34bc70
2025-09-28T14:51:04.145 [DEBUG] [Thread-127625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:04.164 [DEBUG] [Thread-127625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:51:04.164 [INFO] [Thread-127625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:04.167 [DEBUG] [Thread-127625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] Compression: none
2025-09-28T14:51:04.168 [DEBUG] [Thread-127625] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:04.187 [DEBUG] [Thread-127625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:04.187 [DEBUG] [Thread-127625] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:04.188 [DEBUG] [Thread-127625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:51:04.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:51:04.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:04.190 [DEBUG] [Thread-127625] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:04.190 [DEBUG] [Thread-127625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:04.190 [DEBUG] [Thread-127625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:04.191 [DEBUG] [Thread-127625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:51:04.191 [DEBUG] [Thread-127625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:04.217 [INFO] [Thread-127625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:04.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:04.850 [DEBUG] [Thread-127625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:04.850 [DEBUG] [Thread-127625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:04.851 [DEBUG] [Thread-127625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:51:04.891 [DEBUG] [Thread-127625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:04.892 [DEBUG] [Thread-127625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:04.894 [DEBUG] [Thread-127625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:04.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:04.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:51:04.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:51:04.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:51:04.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:04.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:51:04.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:04.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:04.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:51:04.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535152 -999.00  +19.20   6.63     36   +3.80 1 1 1 1 1   888    0 15.11 -20.85 ----- 6.6 6.6 210.8 19.3 24.6 -26.2 23.6 -25.8 24.9 -25.8 26.3 -26.0
2025-09-28T14:51:04.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:51:04.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:51:04.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535152
2025-09-28T14:51:04.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:51:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:51:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:51:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:51:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:51:04.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:50:35', tmtdew=17.07, humidity=31.55, cloud=29.3, wind=26.25, temperature=18.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:50:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:51:04.929 [DEBUG] [Thread-127625] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:05.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-28T14:51:05.019 [DEBUG] [Thread-127628] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T14:51:05.019 [DEBUG] [Thread-127628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:05.034 [DEBUG] [Thread-127628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:51:05.034 [INFO] [Thread-127628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:51:05.041 [DEBUG] [Thread-127628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:05.041 [DEBUG] [Thread-127628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] Compression: none
2025-09-28T14:51:05.042 [DEBUG] [Thread-127628] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:05.106 [DEBUG] [Thread-127628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:05.106 [DEBUG] [Thread-127628] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:05.106 [DEBUG] [Thread-127628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:51:05.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:51:05.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:05.162 [DEBUG] [Thread-127628] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:05.162 [DEBUG] [Thread-127628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:05.162 [DEBUG] [Thread-127628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:05.162 [DEBUG] [Thread-127628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:51:05.162 [DEBUG] [Thread-127628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:05.181 [INFO] [Thread-127628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:05.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-28T14:51:05.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:05.679 [DEBUG] [Thread-127628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:05.679 [DEBUG] [Thread-127628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:05.727 [DEBUG] [Thread-127628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:05.727 [DEBUG] [Thread-127628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:05.736 [DEBUG] [Thread-127628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:05.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:05.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-28T14:51:05.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-28T14:51:05.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:05.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:05.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:05.771 [DEBUG] [Thread-127628] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:06.580 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:06.581 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:15.239 [DEBUG] [Thread-127630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:15.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:51:15.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:51:15.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-28T14:51:16.172 [DEBUG] [Thread-127631 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:16.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 51, 7), 17.24, 31.22, 29.3, 25.35, 18.37, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:51:16.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:51:07
2025-09-28T14:51:16.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:51:16.616 [DEBUG] [Thread-127632] [transport.py] [_log()] starting thread (client mode): 0x2e3dc340
2025-09-28T14:51:16.616 [DEBUG] [Thread-127632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:16.636 [DEBUG] [Thread-127632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:51:16.636 [INFO] [Thread-127632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:51:16.637 [DEBUG] [Thread-127632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] Compression: none
2025-09-28T14:51:16.638 [DEBUG] [Thread-127632] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:16.655 [DEBUG] [Thread-127632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:16.655 [DEBUG] [Thread-127632] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:16.655 [DEBUG] [Thread-127632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:51:16.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:51:16.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:16.656 [DEBUG] [Thread-127632] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:16.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:16.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:16.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:51:16.657 [DEBUG] [Thread-127632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:16.668 [INFO] [Thread-127632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:16.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:17.281 [DEBUG] [Thread-127632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:17.281 [DEBUG] [Thread-127632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:17.281 [DEBUG] [Thread-127632] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:51:17.322 [DEBUG] [Thread-127632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:17.322 [DEBUG] [Thread-127632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:17.325 [DEBUG] [Thread-127632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:17.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:17.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:51:17.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:51:17.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:51:17.347 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:17.349 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:51:17.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:17.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:17.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535152 -999.00  +19.20   6.63     36   +3.80 1 1 1 1 1   888    0 15.11 -20.85 ----- 6.6 6.6 210.8 19.3 24.6 -26.2 23.6 -25.8 24.9 -25.8 26.3 -26.0
2025-09-28T14:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535152
2025-09-28T14:51:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:51:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:51:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:51:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:51:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:51:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:51:07', tmtdew=17.24, humidity=31.22, cloud=29.3, wind=25.35, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:50:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:51:17.352 [DEBUG] [Thread-127632] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:17.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-28T14:51:17.446 [DEBUG] [Thread-127635] [transport.py] [_log()] starting thread (client mode): 0x2e361210
2025-09-28T14:51:17.446 [DEBUG] [Thread-127635] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:17.460 [DEBUG] [Thread-127635] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:51:17.461 [INFO] [Thread-127635] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:51:17.468 [DEBUG] [Thread-127635] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:17.468 [DEBUG] [Thread-127635] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] Compression: none
2025-09-28T14:51:17.469 [DEBUG] [Thread-127635] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:17.527 [DEBUG] [Thread-127635] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:17.528 [DEBUG] [Thread-127635] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:17.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:51:17.529 [DEBUG] [Thread-127635] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:51:17.529 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:17.587 [DEBUG] [Thread-127635] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:17.587 [DEBUG] [Thread-127635] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:17.587 [DEBUG] [Thread-127635] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:17.587 [DEBUG] [Thread-127635] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:51:17.587 [DEBUG] [Thread-127635] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:17.606 [INFO] [Thread-127635] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:17.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-28T14:51:17.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:18.372 [DEBUG] [Thread-127635] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:18.372 [DEBUG] [Thread-127635] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:18.420 [DEBUG] [Thread-127635] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:18.420 [DEBUG] [Thread-127635] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:18.429 [DEBUG] [Thread-127635] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:18.438 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:18.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-28T14:51:18.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-28T14:51:18.455 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:18.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:18.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:18.464 [DEBUG] [Thread-127635] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:28.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:51:28.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:51:28.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-28T14:51:29.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 51, 7), 17.24, 31.22, 29.3, 25.35, 18.37, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:51:29.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:51:07
2025-09-28T14:51:29.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:51:29.343 [DEBUG] [Thread-127637] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T14:51:29.343 [DEBUG] [Thread-127637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:29.367 [DEBUG] [Thread-127637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:51:29.367 [INFO] [Thread-127637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] Compression: none
2025-09-28T14:51:29.370 [DEBUG] [Thread-127637] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:51:29.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:51:29.383 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:51:29.383 [DEBUG] [Thread-127637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:29.393 [INFO] [Thread-127637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:29.393 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:29.990 [DEBUG] [Thread-127637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:29.991 [DEBUG] [Thread-127637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:29.991 [DEBUG] [Thread-127637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:51:30.032 [DEBUG] [Thread-127637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:30.032 [DEBUG] [Thread-127637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:30.034 [DEBUG] [Thread-127637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:30.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:30.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:51:30.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:51:30.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:51:30.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:30.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:51:30.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535499 -999.00  +19.30  13.30     35   +3.70 1 1 1 1 1   888    0 15.27 -21.18 ----- 13.3 13.3 206.0 24.1 24.6 -26.7 23.6 -25.9 25.0 -26.3 26.2 -27.0
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535499
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:51:30.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:51:07', tmtdew=17.24, humidity=31.22, cloud=29.3, wind=25.35, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:51:30.052 [DEBUG] [Thread-127637] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:30.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:51:30.136 [DEBUG] [Thread-127640] [transport.py] [_log()] starting thread (client mode): 0x2e34bd30
2025-09-28T14:51:30.136 [DEBUG] [Thread-127640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:30.151 [DEBUG] [Thread-127640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:51:30.151 [INFO] [Thread-127640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:30.158 [DEBUG] [Thread-127640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:30.159 [DEBUG] [Thread-127640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:30.159 [DEBUG] [Thread-127640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:30.159 [DEBUG] [Thread-127640] [transport.py] [_log()] Compression: none
2025-09-28T14:51:30.159 [DEBUG] [Thread-127640] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:30.216 [DEBUG] [Thread-127640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:30.216 [DEBUG] [Thread-127640] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:30.216 [DEBUG] [Thread-127640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:51:30.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:51:30.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:30.276 [DEBUG] [Thread-127640] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:30.276 [DEBUG] [Thread-127640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:30.276 [DEBUG] [Thread-127640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:30.276 [DEBUG] [Thread-127640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:51:30.276 [DEBUG] [Thread-127640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:30.278 [DEBUG] [Thread-127642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:30.294 [INFO] [Thread-127640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:30.294 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:51:30.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:30.639 [DEBUG] [Thread-127640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:30.639 [DEBUG] [Thread-127640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:30.687 [DEBUG] [Thread-127640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:30.687 [DEBUG] [Thread-127640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:30.695 [DEBUG] [Thread-127640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:30.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:30.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-28T14:51:30.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-28T14:51:30.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:30.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:30.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:30.727 [DEBUG] [Thread-127640] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:51:40.729 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:51:40.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-28T14:51:41.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 51, 7), 17.24, 31.22, 29.3, 25.35, 18.37, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:51:41.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:51:07
2025-09-28T14:51:41.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:51:41.612 [DEBUG] [Thread-127643] [transport.py] [_log()] starting thread (client mode): 0x2b9cdcf0
2025-09-28T14:51:41.612 [DEBUG] [Thread-127643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:41.633 [DEBUG] [Thread-127643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:51:41.633 [INFO] [Thread-127643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:51:41.636 [DEBUG] [Thread-127643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] Compression: none
2025-09-28T14:51:41.637 [DEBUG] [Thread-127643] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:41.654 [DEBUG] [Thread-127643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:41.655 [DEBUG] [Thread-127643] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:41.655 [DEBUG] [Thread-127643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:51:41.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:51:41.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:41.656 [DEBUG] [Thread-127643] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:41.656 [DEBUG] [Thread-127643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:41.656 [DEBUG] [Thread-127643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:41.656 [DEBUG] [Thread-127643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:51:41.656 [DEBUG] [Thread-127643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:41.672 [INFO] [Thread-127643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:41.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:42.291 [DEBUG] [Thread-127643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:42.291 [DEBUG] [Thread-127643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:42.292 [DEBUG] [Thread-127643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:51:42.332 [DEBUG] [Thread-127643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:42.332 [DEBUG] [Thread-127643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:42.335 [DEBUG] [Thread-127643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:42.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:42.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:51:42.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:51:42.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:51:42.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:42.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:51:42.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:42.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:42.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:51:42.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535499 -999.00  +19.30  13.30     35   +3.70 1 1 1 1 1   888    0 15.27 -21.18 ----- 13.3 13.3 206.0 24.1 24.6 -26.7 23.6 -25.9 25.0 -26.3 26.2 -27.0
2025-09-28T14:51:42.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:51:42.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:51:42.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535499
2025-09-28T14:51:42.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:51:42.361 [DEBUG] [Thread-127643] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:42.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:51:42.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:51:42.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:51:42.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:51:42.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:51:07', tmtdew=17.24, humidity=31.22, cloud=29.3, wind=25.35, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:51:42.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-28T14:51:42.456 [DEBUG] [Thread-127646] [transport.py] [_log()] starting thread (client mode): 0x2e3df550
2025-09-28T14:51:42.456 [DEBUG] [Thread-127646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:42.471 [DEBUG] [Thread-127646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:51:42.471 [INFO] [Thread-127646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:42.479 [DEBUG] [Thread-127646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:42.480 [DEBUG] [Thread-127646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:42.480 [DEBUG] [Thread-127646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:42.480 [DEBUG] [Thread-127646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:42.480 [DEBUG] [Thread-127646] [transport.py] [_log()] Compression: none
2025-09-28T14:51:42.480 [DEBUG] [Thread-127646] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:42.540 [DEBUG] [Thread-127646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:42.541 [DEBUG] [Thread-127646] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:42.541 [DEBUG] [Thread-127646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:51:42.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:51:42.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:42.596 [DEBUG] [Thread-127646] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:42.597 [DEBUG] [Thread-127646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:42.597 [DEBUG] [Thread-127646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:42.597 [DEBUG] [Thread-127646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:51:42.597 [DEBUG] [Thread-127646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:42.616 [INFO] [Thread-127646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:42.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-28T14:51:42.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:43.340 [DEBUG] [Thread-127646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:43.340 [DEBUG] [Thread-127646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:43.388 [DEBUG] [Thread-127646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:43.388 [DEBUG] [Thread-127646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:43.397 [DEBUG] [Thread-127646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:43.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:43.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-28T14:51:43.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-28T14:51:43.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:43.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:43.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:43.431 [DEBUG] [Thread-127646] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:45.311 [DEBUG] [Thread-127648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:51:53.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:51:53.434 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:51:53.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-28T14:51:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 51, 39), 17.47, 31.07, 29.3, 21.91, 18.44, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:51:54.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:51:39
2025-09-28T14:51:54.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:51:54.284 [DEBUG] [Thread-127649] [transport.py] [_log()] starting thread (client mode): 0x2b9ba1a0
2025-09-28T14:51:54.284 [DEBUG] [Thread-127649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:54.303 [DEBUG] [Thread-127649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:51:54.303 [INFO] [Thread-127649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:51:54.306 [DEBUG] [Thread-127649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:54.306 [DEBUG] [Thread-127649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] Compression: none
2025-09-28T14:51:54.307 [DEBUG] [Thread-127649] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:54.324 [DEBUG] [Thread-127649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:54.324 [DEBUG] [Thread-127649] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:54.324 [DEBUG] [Thread-127649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:51:54.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:51:54.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:54.325 [DEBUG] [Thread-127649] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:54.325 [DEBUG] [Thread-127649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:54.325 [DEBUG] [Thread-127649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:54.325 [DEBUG] [Thread-127649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:51:54.326 [DEBUG] [Thread-127649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:54.342 [INFO] [Thread-127649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:54.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:54.981 [DEBUG] [Thread-127649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:54.981 [DEBUG] [Thread-127649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:54.981 [DEBUG] [Thread-127649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:51:55.022 [DEBUG] [Thread-127649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:55.022 [DEBUG] [Thread-127649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:55.026 [DEBUG] [Thread-127649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:55.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:55.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:51:55.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:51:55.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:51:55.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:55.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:51:55.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535499 -999.00  +19.30  13.30     35   +3.70 1 1 1 1 1   888    0 15.27 -21.18 ----- 13.3 13.3 206.0 24.1 24.6 -26.7 23.6 -25.9 25.0 -26.3 26.2 -27.0
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:51:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535499
2025-09-28T14:51:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:51:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:51:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:51:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:51:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:51:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:51:39', tmtdew=17.47, humidity=31.07, cloud=29.3, wind=21.91, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:51:55.050 [DEBUG] [Thread-127649] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:51:55.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-28T14:51:55.144 [DEBUG] [Thread-127652] [transport.py] [_log()] starting thread (client mode): 0x2b9ba3e0
2025-09-28T14:51:55.144 [DEBUG] [Thread-127652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:51:55.159 [DEBUG] [Thread-127652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:51:55.159 [INFO] [Thread-127652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:51:55.167 [DEBUG] [Thread-127652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] client lang: <none>
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] server lang: <none>
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] kex follows: False
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] Compression: none
2025-09-28T14:51:55.168 [DEBUG] [Thread-127652] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:51:55.224 [DEBUG] [Thread-127652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:51:55.224 [DEBUG] [Thread-127652] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:51:55.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:51:55.225 [DEBUG] [Thread-127652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:51:55.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:51:55.280 [DEBUG] [Thread-127652] [transport.py] [_log()] userauth is OK
2025-09-28T14:51:55.281 [DEBUG] [Thread-127652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:51:55.281 [DEBUG] [Thread-127652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:51:55.281 [DEBUG] [Thread-127652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:51:55.281 [DEBUG] [Thread-127652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:51:55.299 [INFO] [Thread-127652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:51:55.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-28T14:51:55.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:51:55.731 [DEBUG] [Thread-127652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:51:55.732 [DEBUG] [Thread-127652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:51:55.779 [DEBUG] [Thread-127652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:51:55.779 [DEBUG] [Thread-127652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:51:55.788 [DEBUG] [Thread-127652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:51:55.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:51:55.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-28T14:51:55.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-28T14:51:55.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:51:55.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:51:55.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:51:55.822 [DEBUG] [Thread-127652] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:00.344 [DEBUG] [Thread-127654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:05.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:52:05.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:52:05.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-28T14:52:06.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 51, 39), 17.47, 31.07, 29.3, 21.91, 18.44, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:52:06.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:51:39
2025-09-28T14:52:06.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:52:06.695 [DEBUG] [Thread-127655] [transport.py] [_log()] starting thread (client mode): 0x2b96f2e0
2025-09-28T14:52:06.695 [DEBUG] [Thread-127655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:06.714 [DEBUG] [Thread-127655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:52:06.714 [INFO] [Thread-127655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:06.717 [DEBUG] [Thread-127655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:06.718 [DEBUG] [Thread-127655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:06.718 [DEBUG] [Thread-127655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:06.718 [DEBUG] [Thread-127655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:06.718 [DEBUG] [Thread-127655] [transport.py] [_log()] Compression: none
2025-09-28T14:52:06.718 [DEBUG] [Thread-127655] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:06.725 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:06.725 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:06.734 [DEBUG] [Thread-127655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:06.734 [DEBUG] [Thread-127655] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:06.734 [DEBUG] [Thread-127655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:52:06.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:52:06.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:06.735 [DEBUG] [Thread-127655] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:06.735 [DEBUG] [Thread-127655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:06.735 [DEBUG] [Thread-127655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:06.735 [DEBUG] [Thread-127655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:52:06.735 [DEBUG] [Thread-127655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:06.750 [INFO] [Thread-127655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:06.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:07.367 [DEBUG] [Thread-127655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:07.367 [DEBUG] [Thread-127655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:07.367 [DEBUG] [Thread-127655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:52:07.408 [DEBUG] [Thread-127655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:07.408 [DEBUG] [Thread-127655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:07.410 [DEBUG] [Thread-127655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:07.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:07.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:52:07.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:52:07.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:52:07.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:07.428 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:52:07.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535846 -999.00  +19.50  14.26     35   +3.80 1 1 1 1 1   888    0 14.99 -21.73 ----- 14.3 14.3 191.3 21.8 24.7 -27.0 23.7 -25.9 25.1 -26.1 26.3 -27.1
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535846
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:52:07.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:51:39', tmtdew=17.47, humidity=31.07, cloud=29.3, wind=21.91, temperature=18.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:52:07.430 [DEBUG] [Thread-127655] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:07.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-28T14:52:07.515 [DEBUG] [Thread-127658] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd30
2025-09-28T14:52:07.515 [DEBUG] [Thread-127658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:07.530 [DEBUG] [Thread-127658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:52:07.530 [INFO] [Thread-127658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:07.537 [DEBUG] [Thread-127658] [transport.py] [_log()] Compression: none
2025-09-28T14:52:07.538 [DEBUG] [Thread-127658] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:07.594 [DEBUG] [Thread-127658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:07.594 [DEBUG] [Thread-127658] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:07.594 [DEBUG] [Thread-127658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:52:07.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:52:07.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:07.652 [DEBUG] [Thread-127658] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:07.652 [DEBUG] [Thread-127658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:07.652 [DEBUG] [Thread-127658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:07.652 [DEBUG] [Thread-127658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:52:07.653 [DEBUG] [Thread-127658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:07.667 [INFO] [Thread-127658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:07.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-28T14:52:07.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:08.359 [DEBUG] [Thread-127658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:08.359 [DEBUG] [Thread-127658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:08.407 [DEBUG] [Thread-127658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:08.407 [DEBUG] [Thread-127658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:08.415 [DEBUG] [Thread-127658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:08.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:08.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-28T14:52:08.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-28T14:52:08.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:08.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:08.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:08.448 [DEBUG] [Thread-127658] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:15.395 [DEBUG] [Thread-127660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:16.214 [DEBUG] [Thread-127661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:18.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:52:18.450 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:52:18.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-28T14:52:19.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 52, 11), 17.25, 31.47, 29.3, 20.27, 18.19, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:52:19.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:52:11
2025-09-28T14:52:19.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:52:19.311 [DEBUG] [Thread-127662] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2f0
2025-09-28T14:52:19.311 [DEBUG] [Thread-127662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:19.332 [DEBUG] [Thread-127662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:52:19.332 [INFO] [Thread-127662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] Compression: none
2025-09-28T14:52:19.335 [DEBUG] [Thread-127662] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:19.352 [DEBUG] [Thread-127662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:19.352 [DEBUG] [Thread-127662] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:19.353 [DEBUG] [Thread-127662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:52:19.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:52:19.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:19.355 [DEBUG] [Thread-127662] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:19.355 [DEBUG] [Thread-127662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:19.355 [DEBUG] [Thread-127662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:19.355 [DEBUG] [Thread-127662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:52:19.355 [DEBUG] [Thread-127662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:19.379 [INFO] [Thread-127662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:19.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:19.998 [DEBUG] [Thread-127662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:19.998 [DEBUG] [Thread-127662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:19.998 [DEBUG] [Thread-127662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:52:20.039 [DEBUG] [Thread-127662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:20.040 [DEBUG] [Thread-127662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:20.042 [DEBUG] [Thread-127662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:20.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:20.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:52:20.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:52:20.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:52:20.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:20.064 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:52:20.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535846 -999.00  +19.50  14.26     35   +3.80 1 1 1 1 1   888    0 14.99 -21.73 ----- 14.3 14.3 191.3 21.8 24.7 -27.0 23.7 -25.9 25.1 -26.1 26.3 -27.1
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:52:20.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535846
2025-09-28T14:52:20.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:52:20.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:52:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:52:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:52:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:52:20.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:52:11', tmtdew=17.25, humidity=31.47, cloud=29.3, wind=20.27, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:52:20.067 [DEBUG] [Thread-127662] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:20.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-28T14:52:20.174 [DEBUG] [Thread-127665] [transport.py] [_log()] starting thread (client mode): 0x2b9bbca0
2025-09-28T14:52:20.174 [DEBUG] [Thread-127665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:20.191 [DEBUG] [Thread-127665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:52:20.191 [INFO] [Thread-127665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:52:20.201 [DEBUG] [Thread-127665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:20.202 [DEBUG] [Thread-127665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:20.203 [DEBUG] [Thread-127665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:20.204 [DEBUG] [Thread-127665] [transport.py] [_log()] Compression: none
2025-09-28T14:52:20.204 [DEBUG] [Thread-127665] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:20.275 [DEBUG] [Thread-127665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:20.276 [DEBUG] [Thread-127665] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:20.276 [DEBUG] [Thread-127665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:52:20.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:52:20.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:20.331 [DEBUG] [Thread-127665] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:20.331 [DEBUG] [Thread-127665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:20.332 [DEBUG] [Thread-127665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:20.332 [DEBUG] [Thread-127665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:52:20.332 [DEBUG] [Thread-127665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:20.354 [INFO] [Thread-127665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52: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-28T14:52:20.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:20.833 [DEBUG] [Thread-127665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:20.833 [DEBUG] [Thread-127665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:20.884 [DEBUG] [Thread-127665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:20.884 [DEBUG] [Thread-127665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:20.896 [DEBUG] [Thread-127665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:20.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:20.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-28T14:52:20.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-28T14:52:20.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:20.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:20.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:20.940 [DEBUG] [Thread-127665] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:30.438 [DEBUG] [Thread-127667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:30.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:52:30.934 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:52:30.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-28T14:52:31.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 52, 11), 17.25, 31.47, 29.3, 20.27, 18.19, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:52:31.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:52:11
2025-09-28T14:52:31.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:52:31.773 [DEBUG] [Thread-127668] [transport.py] [_log()] starting thread (client mode): 0x2b9ce530
2025-09-28T14:52:31.773 [DEBUG] [Thread-127668] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:31.796 [DEBUG] [Thread-127668] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:52:31.796 [INFO] [Thread-127668] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] Compression: none
2025-09-28T14:52:31.800 [DEBUG] [Thread-127668] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:31.820 [DEBUG] [Thread-127668] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:31.821 [DEBUG] [Thread-127668] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:31.821 [DEBUG] [Thread-127668] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:52:31.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:52:31.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:31.824 [DEBUG] [Thread-127668] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:31.824 [DEBUG] [Thread-127668] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:31.824 [DEBUG] [Thread-127668] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:31.824 [DEBUG] [Thread-127668] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:52:31.824 [DEBUG] [Thread-127668] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:31.859 [INFO] [Thread-127668] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:31.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:32.501 [DEBUG] [Thread-127668] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:32.501 [DEBUG] [Thread-127668] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:32.502 [DEBUG] [Thread-127668] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:52:32.542 [DEBUG] [Thread-127668] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:32.543 [DEBUG] [Thread-127668] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:32.545 [DEBUG] [Thread-127668] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:32.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:32.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:52:32.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:52:32.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:52:32.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:32.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:52:32.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:32.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:52:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.535846 -999.00  +19.50  14.26     35   +3.80 1 1 1 1 1   888    0 14.99 -21.73 ----- 14.3 14.3 191.3 21.8 24.7 -27.0 23.7 -25.9 25.1 -26.1 26.3 -27.1
2025-09-28T14:52:32.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:52:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:52:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.535846
2025-09-28T14:52:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:52:32.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:52:32.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:52:32.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:52:32.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:52:32.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:52:11', tmtdew=17.25, humidity=31.47, cloud=29.3, wind=20.27, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:51:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:52:32.570 [DEBUG] [Thread-127668] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:32.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-28T14:52:32.664 [DEBUG] [Thread-127671] [transport.py] [_log()] starting thread (client mode): 0x2b96f8e0
2025-09-28T14:52:32.664 [DEBUG] [Thread-127671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:32.679 [DEBUG] [Thread-127671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:52:32.679 [INFO] [Thread-127671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:32.687 [DEBUG] [Thread-127671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:32.688 [DEBUG] [Thread-127671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:32.689 [DEBUG] [Thread-127671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:32.689 [DEBUG] [Thread-127671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:32.689 [DEBUG] [Thread-127671] [transport.py] [_log()] Compression: none
2025-09-28T14:52:32.689 [DEBUG] [Thread-127671] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:32.756 [DEBUG] [Thread-127671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:32.756 [DEBUG] [Thread-127671] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:32.757 [DEBUG] [Thread-127671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:52:32.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:52:32.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:32.811 [DEBUG] [Thread-127671] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:32.812 [DEBUG] [Thread-127671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:32.812 [DEBUG] [Thread-127671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:32.812 [DEBUG] [Thread-127671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:52:32.812 [DEBUG] [Thread-127671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:32.831 [INFO] [Thread-127671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:32.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:52:32.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:34.743 [DEBUG] [Thread-127671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:34.743 [DEBUG] [Thread-127671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:34.792 [DEBUG] [Thread-127671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:34.792 [DEBUG] [Thread-127671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:34.804 [DEBUG] [Thread-127671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:34.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:34.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')
2025-09-28T14:52:34.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-28T14:52:34.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:34.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:34.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:34.849 [DEBUG] [Thread-127671] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:44.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:52:44.851 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:52:44.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:52:45.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 52, 11), 17.25, 31.47, 29.3, 20.27, 18.19, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:52:45.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:52:11
2025-09-28T14:52:45.480 [DEBUG] [Thread-127673 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:52:45.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:52:45.746 [DEBUG] [Thread-127674] [transport.py] [_log()] starting thread (client mode): 0x2b9ce170
2025-09-28T14:52:45.746 [DEBUG] [Thread-127674] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:45.765 [DEBUG] [Thread-127674] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:52:45.765 [INFO] [Thread-127674] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:52:45.768 [DEBUG] [Thread-127674] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] Compression: none
2025-09-28T14:52:45.769 [DEBUG] [Thread-127674] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:45.784 [DEBUG] [Thread-127674] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:45.785 [DEBUG] [Thread-127674] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:45.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:52:45.785 [DEBUG] [Thread-127674] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:52:45.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:45.786 [DEBUG] [Thread-127674] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:45.786 [DEBUG] [Thread-127674] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:45.786 [DEBUG] [Thread-127674] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:45.786 [DEBUG] [Thread-127674] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:52:45.786 [DEBUG] [Thread-127674] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:45.799 [INFO] [Thread-127674] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:45.799 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:46.415 [DEBUG] [Thread-127674] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:46.415 [DEBUG] [Thread-127674] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:46.415 [DEBUG] [Thread-127674] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:52:46.456 [DEBUG] [Thread-127674] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:46.456 [DEBUG] [Thread-127674] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:46.458 [DEBUG] [Thread-127674] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:46.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:46.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:52:46.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:52:46.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:52:46.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:46.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:52:46.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.536194 -999.00  +19.30  25.89     35   +3.60 1 1 1 1 1   888    0 14.81 -23.31 ----- 25.9 25.9 204.4 29.6 24.6 -28.4 23.7 -26.5 25.0 -26.4 26.2 -29.4
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.536194
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:52:46.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:52:11', tmtdew=17.25, humidity=31.47, cloud=29.3, wind=20.27, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:52:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:52:46.477 [DEBUG] [Thread-127674] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:46.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-28T14:52:46.563 [DEBUG] [Thread-127677] [transport.py] [_log()] starting thread (client mode): 0x2b9cfdf0
2025-09-28T14:52:46.563 [DEBUG] [Thread-127677] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:46.578 [DEBUG] [Thread-127677] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:52:46.578 [INFO] [Thread-127677] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] Compression: none
2025-09-28T14:52:46.586 [DEBUG] [Thread-127677] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:46.641 [DEBUG] [Thread-127677] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:46.641 [DEBUG] [Thread-127677] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:46.641 [DEBUG] [Thread-127677] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:52:46.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:52:46.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:46.710 [DEBUG] [Thread-127677] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:46.710 [DEBUG] [Thread-127677] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:46.710 [DEBUG] [Thread-127677] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:46.710 [DEBUG] [Thread-127677] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:52:46.710 [DEBUG] [Thread-127677] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:46.728 [INFO] [Thread-127677] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:46.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:52:46.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:47.371 [DEBUG] [Thread-127677] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:47.371 [DEBUG] [Thread-127677] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:47.419 [DEBUG] [Thread-127677] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:47.419 [DEBUG] [Thread-127677] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:47.432 [DEBUG] [Thread-127677] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:47.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:47.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-28T14:52:47.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-28T14:52:47.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:47.463 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:47.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:47.471 [DEBUG] [Thread-127677] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:57.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:52:57.474 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:52:57.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:52:58.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 52, 43), 17.22, 31.43, 29.3, 25.9, 18.15, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:52:58.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:52:43
2025-09-28T14:52:58.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:52:58.310 [DEBUG] [Thread-127679] [transport.py] [_log()] starting thread (client mode): 0x2b96f730
2025-09-28T14:52:58.310 [DEBUG] [Thread-127679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:58.329 [DEBUG] [Thread-127679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:52:58.330 [INFO] [Thread-127679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:58.333 [DEBUG] [Thread-127679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] Compression: none
2025-09-28T14:52:58.334 [DEBUG] [Thread-127679] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:58.352 [DEBUG] [Thread-127679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:58.352 [DEBUG] [Thread-127679] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:58.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:52:58.354 [DEBUG] [Thread-127679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:52:58.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:58.355 [DEBUG] [Thread-127679] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:58.355 [DEBUG] [Thread-127679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:58.356 [DEBUG] [Thread-127679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:58.356 [DEBUG] [Thread-127679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:52:58.356 [DEBUG] [Thread-127679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:58.379 [INFO] [Thread-127679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:58.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:52:58.975 [DEBUG] [Thread-127679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:52:58.975 [DEBUG] [Thread-127679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:52:58.976 [DEBUG] [Thread-127679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:52:59.016 [DEBUG] [Thread-127679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:52:59.016 [DEBUG] [Thread-127679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:52:59.020 [DEBUG] [Thread-127679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:52:59.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:52:59.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:52:59.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:52:59.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:52:59.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:52:59.046 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:52:59.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:52:59.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:52:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:52:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.536194 -999.00  +19.30  25.89     35   +3.60 1 1 1 1 1   888    0 14.81 -23.31 ----- 25.9 25.9 204.4 29.6 24.6 -28.4 23.7 -26.5 25.0 -26.4 26.2 -29.4
2025-09-28T14:52:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:52:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:52:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.536194
2025-09-28T14:52:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:52:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:52:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:52:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:52:59.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:52:59.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:52:43', tmtdew=17.22, humidity=31.43, cloud=29.3, wind=25.9, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:52:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:52:59.049 [DEBUG] [Thread-127679] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:52:59.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T14:52:59.153 [DEBUG] [Thread-127682] [transport.py] [_log()] starting thread (client mode): 0x2b96e6e0
2025-09-28T14:52:59.153 [DEBUG] [Thread-127682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:52:59.169 [DEBUG] [Thread-127682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:52:59.170 [INFO] [Thread-127682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:52:59.178 [DEBUG] [Thread-127682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:52:59.178 [DEBUG] [Thread-127682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:52:59.178 [DEBUG] [Thread-127682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:52:59.178 [DEBUG] [Thread-127682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:59.178 [DEBUG] [Thread-127682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] client lang: <none>
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] server lang: <none>
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] kex follows: False
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] Compression: none
2025-09-28T14:52:59.179 [DEBUG] [Thread-127682] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:52:59.238 [DEBUG] [Thread-127682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:52:59.238 [DEBUG] [Thread-127682] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:52:59.239 [DEBUG] [Thread-127682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:52:59.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:52:59.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:52:59.294 [DEBUG] [Thread-127682] [transport.py] [_log()] userauth is OK
2025-09-28T14:52:59.295 [DEBUG] [Thread-127682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:52:59.295 [DEBUG] [Thread-127682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:52:59.295 [DEBUG] [Thread-127682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:52:59.295 [DEBUG] [Thread-127682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:52:59.316 [INFO] [Thread-127682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:52:59.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-28T14:52:59.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:00.053 [DEBUG] [Thread-127682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:00.053 [DEBUG] [Thread-127682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:00.102 [DEBUG] [Thread-127682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:00.102 [DEBUG] [Thread-127682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:00.111 [DEBUG] [Thread-127682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:00.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:00.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-28T14:53:00.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-28T14:53:00.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:00.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:00.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:00.156 [DEBUG] [Thread-127682] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:00.510 [DEBUG] [Thread-127684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:06.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:06.867 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:10.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:53:10.155 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:53:10.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-28T14:53:10.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 52, 43), 17.22, 31.43, 29.3, 25.9, 18.15, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:53:10.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:52:43
2025-09-28T14:53:10.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:53:10.998 [DEBUG] [Thread-127685] [transport.py] [_log()] starting thread (client mode): 0x2b9b9210
2025-09-28T14:53:10.998 [DEBUG] [Thread-127685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:11.016 [DEBUG] [Thread-127685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:53:11.016 [INFO] [Thread-127685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:11.019 [DEBUG] [Thread-127685] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] Compression: none
2025-09-28T14:53:11.020 [DEBUG] [Thread-127685] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:11.036 [DEBUG] [Thread-127685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:11.036 [DEBUG] [Thread-127685] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:11.037 [DEBUG] [Thread-127685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:53:11.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:53:11.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:11.039 [DEBUG] [Thread-127685] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:11.039 [DEBUG] [Thread-127685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:11.039 [DEBUG] [Thread-127685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:11.039 [DEBUG] [Thread-127685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:53:11.039 [DEBUG] [Thread-127685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:11.057 [INFO] [Thread-127685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:11.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:11.708 [DEBUG] [Thread-127685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:11.709 [DEBUG] [Thread-127685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:11.709 [DEBUG] [Thread-127685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:53:11.750 [DEBUG] [Thread-127685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:11.750 [DEBUG] [Thread-127685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:11.753 [DEBUG] [Thread-127685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:11.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:11.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:53:11.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:53:11.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:53:11.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:11.775 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:53:11.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:11.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:11.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:53:11.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.536541 -999.00  +18.90  13.37     35   +3.30 1 1 1 1 1   888    0 14.86 -22.75 ----- 13.4 13.4 224.9 30.2 24.4 -28.4 23.6 -26.4 24.9 -28.3 26.0 -28.2
2025-09-28T14:53:11.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:53:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:53:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.536541
2025-09-28T14:53:11.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:53:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:53:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:53:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:53:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:53:11.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:52:43', tmtdew=17.22, humidity=31.43, cloud=29.3, wind=25.9, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:52:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:53:11.778 [DEBUG] [Thread-127685] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:11.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-28T14:53:11.865 [DEBUG] [Thread-127688] [transport.py] [_log()] starting thread (client mode): 0x2b94d780
2025-09-28T14:53:11.865 [DEBUG] [Thread-127688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:11.880 [DEBUG] [Thread-127688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:53:11.880 [INFO] [Thread-127688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:53:11.887 [DEBUG] [Thread-127688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] Compression: none
2025-09-28T14:53:11.888 [DEBUG] [Thread-127688] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:11.946 [DEBUG] [Thread-127688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:11.946 [DEBUG] [Thread-127688] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:11.947 [DEBUG] [Thread-127688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:53:11.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:53:11.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:12.002 [DEBUG] [Thread-127688] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:12.002 [DEBUG] [Thread-127688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:12.002 [DEBUG] [Thread-127688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:12.003 [DEBUG] [Thread-127688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:53:12.003 [DEBUG] [Thread-127688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:12.023 [INFO] [Thread-127688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:12.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-28T14:53:12.024 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:12.465 [DEBUG] [Thread-127688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:12.465 [DEBUG] [Thread-127688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:12.513 [DEBUG] [Thread-127688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:12.513 [DEBUG] [Thread-127688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:12.522 [DEBUG] [Thread-127688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:12.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:12.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-28T14:53:12.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-28T14:53:12.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:12.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:12.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:12.557 [DEBUG] [Thread-127688] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:15.545 [DEBUG] [Thread-127690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:16.242 [DEBUG] [Thread-127691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:22.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:53:22.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:53:22.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-28T14:53:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 53, 15), 17.3, 31.28, 29.3, 26.36, 18.3, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:53:23.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:53:15
2025-09-28T14:53:23.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:53:23.416 [DEBUG] [Thread-127692] [transport.py] [_log()] starting thread (client mode): 0x2b9bbf10
2025-09-28T14:53:23.417 [DEBUG] [Thread-127692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:23.437 [DEBUG] [Thread-127692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:53:23.437 [INFO] [Thread-127692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] Compression: none
2025-09-28T14:53:23.440 [DEBUG] [Thread-127692] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:23.456 [DEBUG] [Thread-127692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:23.456 [DEBUG] [Thread-127692] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:23.456 [DEBUG] [Thread-127692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:53:23.456 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:53:23.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:23.457 [DEBUG] [Thread-127692] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:23.457 [DEBUG] [Thread-127692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:23.457 [DEBUG] [Thread-127692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:23.457 [DEBUG] [Thread-127692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:53:23.457 [DEBUG] [Thread-127692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:23.468 [INFO] [Thread-127692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:23.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:24.126 [DEBUG] [Thread-127692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:24.127 [DEBUG] [Thread-127692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:24.127 [DEBUG] [Thread-127692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:53:24.167 [DEBUG] [Thread-127692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:24.167 [DEBUG] [Thread-127692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:24.170 [DEBUG] [Thread-127692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:24.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:24.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:53:24.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:53:24.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:53:24.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:24.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:53:24.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:24.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:53:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.536541 -999.00  +18.90  13.37     35   +3.30 1 1 1 1 1   888    0 14.86 -22.75 ----- 13.4 13.4 224.9 30.2 24.4 -28.4 23.6 -26.4 24.9 -28.3 26.0 -28.2
2025-09-28T14:53:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:53:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:53:24.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.536541
2025-09-28T14:53:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:53:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:53:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:53:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:53:24.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:53:24.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:53:15', tmtdew=17.3, humidity=31.28, cloud=29.3, wind=26.36, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:52:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:53:24.200 [DEBUG] [Thread-127692] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:24.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-28T14:53:24.307 [DEBUG] [Thread-127695] [transport.py] [_log()] starting thread (client mode): 0x2b96c9a0
2025-09-28T14:53:24.308 [DEBUG] [Thread-127695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:24.322 [DEBUG] [Thread-127695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:53:24.322 [INFO] [Thread-127695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:53:24.329 [DEBUG] [Thread-127695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] Compression: none
2025-09-28T14:53:24.330 [DEBUG] [Thread-127695] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:24.394 [DEBUG] [Thread-127695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:24.394 [DEBUG] [Thread-127695] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:24.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:53:24.395 [DEBUG] [Thread-127695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:53:24.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:24.450 [DEBUG] [Thread-127695] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:24.450 [DEBUG] [Thread-127695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:24.450 [DEBUG] [Thread-127695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:24.450 [DEBUG] [Thread-127695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:53:24.450 [DEBUG] [Thread-127695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:24.473 [INFO] [Thread-127695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:24.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-28T14:53:24.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:24.740 [DEBUG] [Thread-127695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:24.740 [DEBUG] [Thread-127695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:24.788 [DEBUG] [Thread-127695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:24.788 [DEBUG] [Thread-127695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:24.798 [DEBUG] [Thread-127695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:24.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:24.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-28T14:53:24.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-28T14:53:24.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:24.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:24.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:24.833 [DEBUG] [Thread-127695] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:30.589 [DEBUG] [Thread-127697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:34.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:53:34.835 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:53:34.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-28T14:53:35.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 53, 15), 17.3, 31.28, 29.3, 26.36, 18.3, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:53:35.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:53:15
2025-09-28T14:53:35.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:53:35.668 [DEBUG] [Thread-127698] [transport.py] [_log()] starting thread (client mode): 0x2b9ce5f0
2025-09-28T14:53:35.668 [DEBUG] [Thread-127698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:35.687 [DEBUG] [Thread-127698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:53:35.688 [INFO] [Thread-127698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] Compression: none
2025-09-28T14:53:35.691 [DEBUG] [Thread-127698] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:35.708 [DEBUG] [Thread-127698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:35.708 [DEBUG] [Thread-127698] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:35.708 [DEBUG] [Thread-127698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:53:35.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:53:35.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:35.709 [DEBUG] [Thread-127698] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:35.709 [DEBUG] [Thread-127698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:35.709 [DEBUG] [Thread-127698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:35.709 [DEBUG] [Thread-127698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:53:35.709 [DEBUG] [Thread-127698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:35.718 [INFO] [Thread-127698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:35.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:36.384 [DEBUG] [Thread-127698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:36.384 [DEBUG] [Thread-127698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:36.385 [DEBUG] [Thread-127698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:53:36.425 [DEBUG] [Thread-127698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:36.425 [DEBUG] [Thread-127698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:36.428 [DEBUG] [Thread-127698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:36.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:36.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:53:36.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:53:36.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:53:36.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:36.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:53:36.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:36.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.536541 -999.00  +18.90  13.37     35   +3.30 1 1 1 1 1   888    0 14.86 -22.75 ----- 13.4 13.4 224.9 30.2 24.4 -28.4 23.6 -26.4 24.9 -28.3 26.0 -28.2
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.536541
2025-09-28T14:53:36.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:53:36.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:53:36.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:53:36.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:53:36.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:53:36.453 [DEBUG] [Thread-127698] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:36.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:53:15', tmtdew=17.3, humidity=31.28, cloud=29.3, wind=26.36, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:52:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:53:36.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-28T14:53:36.552 [DEBUG] [Thread-127701] [transport.py] [_log()] starting thread (client mode): 0x2b96c370
2025-09-28T14:53:36.552 [DEBUG] [Thread-127701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:36.567 [DEBUG] [Thread-127701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:53:36.567 [INFO] [Thread-127701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:36.575 [DEBUG] [Thread-127701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] Compression: none
2025-09-28T14:53:36.576 [DEBUG] [Thread-127701] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:36.634 [DEBUG] [Thread-127701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:36.635 [DEBUG] [Thread-127701] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:36.635 [DEBUG] [Thread-127701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:53:36.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:53:36.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:36.693 [DEBUG] [Thread-127701] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:36.693 [DEBUG] [Thread-127701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:36.694 [DEBUG] [Thread-127701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:36.694 [DEBUG] [Thread-127701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:53:36.694 [DEBUG] [Thread-127701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:36.712 [INFO] [Thread-127701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:36.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-28T14:53:36.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:37.766 [DEBUG] [Thread-127701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:37.767 [DEBUG] [Thread-127701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:37.814 [DEBUG] [Thread-127701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:37.814 [DEBUG] [Thread-127701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:37.823 [DEBUG] [Thread-127701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:37.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:37.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-28T14:53:37.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') -> 00000000
2025-09-28T14:53:37.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:37.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:37.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:37.859 [DEBUG] [Thread-127701] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:45.641 [DEBUG] [Thread-127703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:53:47.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:53:47.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:53:47.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-28T14:53:48.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 53, 15), 17.3, 31.28, 29.3, 26.36, 18.3, 0, 0, 0, 0, 0, 0),)
2025-09-28T14:53:48.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:53:15
2025-09-28T14:53:48.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:53:48.745 [DEBUG] [Thread-127704] [transport.py] [_log()] starting thread (client mode): 0x2b9cfee0
2025-09-28T14:53:48.746 [DEBUG] [Thread-127704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:48.766 [DEBUG] [Thread-127704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:53:48.766 [INFO] [Thread-127704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] Compression: none
2025-09-28T14:53:48.768 [DEBUG] [Thread-127704] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:48.786 [DEBUG] [Thread-127704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:48.786 [DEBUG] [Thread-127704] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:48.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:53:48.787 [DEBUG] [Thread-127704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:53:48.787 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:48.787 [DEBUG] [Thread-127704] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:48.787 [DEBUG] [Thread-127704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:48.788 [DEBUG] [Thread-127704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:48.788 [DEBUG] [Thread-127704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:53:48.788 [DEBUG] [Thread-127704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:48.819 [INFO] [Thread-127704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:48.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:49.481 [DEBUG] [Thread-127704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:49.481 [DEBUG] [Thread-127704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:49.481 [DEBUG] [Thread-127704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:53:49.522 [DEBUG] [Thread-127704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:49.522 [DEBUG] [Thread-127704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:49.524 [DEBUG] [Thread-127704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:49.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:49.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:53:49.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:53:49.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:53:49.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:49.541 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:53:49.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:49.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:49.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537235 -999.00  +19.20  10.79     35   +3.40 1 1 1 1 1   888    0 15.08 -27.85 ----- 10.8 10.8 201.7 23.4 24.4 -28.3 23.5 -26.2 24.9 -25.8 26.1 -26.9
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537235
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:53:49.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:53:15', tmtdew=17.3, humidity=31.28, cloud=29.3, wind=26.36, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=0, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:53:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:53:49.542 [DEBUG] [Thread-127704] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:53:49.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-28T14:53:49.628 [DEBUG] [Thread-127707] [transport.py] [_log()] starting thread (client mode): 0x2e34ad70
2025-09-28T14:53:49.629 [DEBUG] [Thread-127707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:53:49.643 [DEBUG] [Thread-127707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:53:49.643 [INFO] [Thread-127707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:53:49.651 [DEBUG] [Thread-127707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:53:49.651 [DEBUG] [Thread-127707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] client lang: <none>
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] server lang: <none>
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] kex follows: False
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] Compression: none
2025-09-28T14:53:49.652 [DEBUG] [Thread-127707] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:53:49.709 [DEBUG] [Thread-127707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:53:49.709 [DEBUG] [Thread-127707] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:53:49.710 [DEBUG] [Thread-127707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:53:49.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:53:49.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:53:49.769 [DEBUG] [Thread-127707] [transport.py] [_log()] userauth is OK
2025-09-28T14:53:49.769 [DEBUG] [Thread-127707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:53:49.769 [DEBUG] [Thread-127707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:53:49.769 [DEBUG] [Thread-127707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:53:49.770 [DEBUG] [Thread-127707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:53:49.789 [INFO] [Thread-127707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:53:49.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-28T14:53:49.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:53:50.787 [DEBUG] [Thread-127707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:53:50.787 [DEBUG] [Thread-127707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:53:50.837 [DEBUG] [Thread-127707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:53:50.837 [DEBUG] [Thread-127707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:53:50.846 [DEBUG] [Thread-127707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:53:50.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:53:50.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')
2025-09-28T14:53:50.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-28T14:53:50.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:53:50.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:53:50.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:53:50.877 [DEBUG] [Thread-127707] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:00.671 [DEBUG] [Thread-127709 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:00.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:54:00.880 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:54: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-28T14:54:01.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 53, 47), 17.63, 30.77, 0.0, 28.69, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:54:01.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:53:47
2025-09-28T14:54:01.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:54:01.712 [DEBUG] [Thread-127710] [transport.py] [_log()] starting thread (client mode): 0x2e3df1c0
2025-09-28T14:54:01.712 [DEBUG] [Thread-127710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:01.733 [DEBUG] [Thread-127710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:54:01.733 [INFO] [Thread-127710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:54:01.736 [DEBUG] [Thread-127710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:01.737 [DEBUG] [Thread-127710] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] Compression: none
2025-09-28T14:54:01.738 [DEBUG] [Thread-127710] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:01.757 [DEBUG] [Thread-127710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:01.757 [DEBUG] [Thread-127710] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:01.758 [DEBUG] [Thread-127710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:54:01.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:54:01.759 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:01.760 [DEBUG] [Thread-127710] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:01.761 [DEBUG] [Thread-127710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:01.761 [DEBUG] [Thread-127710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:01.761 [DEBUG] [Thread-127710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:54:01.761 [DEBUG] [Thread-127710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:01.774 [INFO] [Thread-127710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:01.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:02.365 [DEBUG] [Thread-127710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:02.365 [DEBUG] [Thread-127710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:02.366 [DEBUG] [Thread-127710] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:54:02.406 [DEBUG] [Thread-127710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:02.406 [DEBUG] [Thread-127710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:02.409 [DEBUG] [Thread-127710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:02.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:02.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:54:02.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:54:02.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:54:02.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:02.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:54:02.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:02.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:02.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:54:02.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537235 -999.00  +19.20  10.79     35   +3.40 1 1 1 1 1   888    0 15.08 -27.85 ----- 10.8 10.8 201.7 23.4 24.4 -28.3 23.5 -26.2 24.9 -25.8 26.1 -26.9
2025-09-28T14:54:02.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:54:02.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:54:02.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537235
2025-09-28T14:54:02.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:54:02.436 [DEBUG] [Thread-127710] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:02.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:54:02.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:54:02.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:54:02.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:54:02.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:53:47', tmtdew=17.63, humidity=30.77, cloud=0.0, wind=28.69, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:53:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:54:02.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-28T14:54:02.541 [DEBUG] [Thread-127713] [transport.py] [_log()] starting thread (client mode): 0x2b96ee00
2025-09-28T14:54:02.541 [DEBUG] [Thread-127713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:02.557 [DEBUG] [Thread-127713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:54:02.557 [INFO] [Thread-127713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:54:02.565 [DEBUG] [Thread-127713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:02.565 [DEBUG] [Thread-127713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:54:02.565 [DEBUG] [Thread-127713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:02.566 [DEBUG] [Thread-127713] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] Compression: none
2025-09-28T14:54:02.567 [DEBUG] [Thread-127713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:02.624 [DEBUG] [Thread-127713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:02.624 [DEBUG] [Thread-127713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:02.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:54:02.625 [DEBUG] [Thread-127713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:54:02.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:02.682 [DEBUG] [Thread-127713] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:02.682 [DEBUG] [Thread-127713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:02.682 [DEBUG] [Thread-127713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:02.682 [DEBUG] [Thread-127713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:54:02.682 [DEBUG] [Thread-127713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:02.701 [INFO] [Thread-127713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:02.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-28T14:54:02.701 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:03.690 [DEBUG] [Thread-127713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:03.691 [DEBUG] [Thread-127713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:03.738 [DEBUG] [Thread-127713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:03.738 [DEBUG] [Thread-127713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:03.747 [DEBUG] [Thread-127713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:03.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:03.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-28T14:54:03.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-28T14:54:03.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:03.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:03.775 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:03.782 [DEBUG] [Thread-127713] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:07.009 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:07.010 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:13.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:54:13.778 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:54:13.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:54:14.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 53, 47), 17.63, 30.77, 0.0, 28.69, 18.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:54:14.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:53:47
2025-09-28T14:54:14.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:54:14.601 [DEBUG] [Thread-127715] [transport.py] [_log()] starting thread (client mode): 0x28706e30
2025-09-28T14:54:14.601 [DEBUG] [Thread-127715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:14.616 [DEBUG] [Thread-127715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:54:14.616 [INFO] [Thread-127715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:14.619 [DEBUG] [Thread-127715] [transport.py] [_log()] Compression: none
2025-09-28T14:54:14.620 [DEBUG] [Thread-127715] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:14.636 [DEBUG] [Thread-127715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:14.637 [DEBUG] [Thread-127715] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:14.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:54:14.637 [DEBUG] [Thread-127715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:54:14.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:14.640 [DEBUG] [Thread-127715] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:14.640 [DEBUG] [Thread-127715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:14.640 [DEBUG] [Thread-127715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:14.640 [DEBUG] [Thread-127715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:54:14.640 [DEBUG] [Thread-127715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:14.658 [INFO] [Thread-127715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:14.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:15.268 [DEBUG] [Thread-127715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:15.268 [DEBUG] [Thread-127715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:15.269 [DEBUG] [Thread-127715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:54:15.309 [DEBUG] [Thread-127715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:15.309 [DEBUG] [Thread-127715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:15.313 [DEBUG] [Thread-127715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:15.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:15.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:54:15.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:54:15.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:54:15.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:15.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:54:15.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:15.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:15.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:54:15.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537583 -999.00  +19.10  19.41     35   +3.40 1 1 1 1 1   888    0 15.02 -31.80 ----- 19.4 19.4 201.6 29.9 24.4 -27.8 23.5 -30.3 24.8 -28.1 25.9 -28.0
2025-09-28T14:54:15.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:54:15.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:54:15.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537583
2025-09-28T14:54:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:54:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:54:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:54:15.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:54:15.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:54:15.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:53:47', tmtdew=17.63, humidity=30.77, cloud=0.0, wind=28.69, temperature=18.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:54:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:54:15.349 [DEBUG] [Thread-127715] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:15.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-28T14:54:15.439 [DEBUG] [Thread-127718] [transport.py] [_log()] starting thread (client mode): 0x2e3fb580
2025-09-28T14:54:15.440 [DEBUG] [Thread-127718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:15.455 [DEBUG] [Thread-127718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:54:15.455 [INFO] [Thread-127718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:15.463 [DEBUG] [Thread-127718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:15.464 [DEBUG] [Thread-127718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:15.464 [DEBUG] [Thread-127718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:15.464 [DEBUG] [Thread-127718] [transport.py] [_log()] Compression: none
2025-09-28T14:54:15.464 [DEBUG] [Thread-127718] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:15.520 [DEBUG] [Thread-127718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:15.521 [DEBUG] [Thread-127718] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:15.521 [DEBUG] [Thread-127718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:54:15.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:54:15.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:15.579 [DEBUG] [Thread-127718] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:15.579 [DEBUG] [Thread-127718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:15.580 [DEBUG] [Thread-127718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:15.580 [DEBUG] [Thread-127718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:54:15.580 [DEBUG] [Thread-127718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:15.599 [INFO] [Thread-127718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:15.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-28T14:54:15.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:15.725 [DEBUG] [Thread-127720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:16.275 [DEBUG] [Thread-127721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:16.607 [DEBUG] [Thread-127718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:16.608 [DEBUG] [Thread-127718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:16.655 [DEBUG] [Thread-127718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:16.655 [DEBUG] [Thread-127718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:16.666 [DEBUG] [Thread-127718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:16.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:16.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-28T14:54:16.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-28T14:54:16.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:16.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:16.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:16.701 [DEBUG] [Thread-127718] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:26.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:54:26.704 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:54:26.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-28T14:54:27.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 54, 19), 17.7, 30.64, 0.0, 28.64, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:54:27.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:54:19
2025-09-28T14:54:27.397 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:54:27.547 [DEBUG] [Thread-127722] [transport.py] [_log()] starting thread (client mode): 0x28707340
2025-09-28T14:54:27.547 [DEBUG] [Thread-127722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:27.567 [DEBUG] [Thread-127722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:54:27.567 [INFO] [Thread-127722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:27.571 [DEBUG] [Thread-127722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] Compression: none
2025-09-28T14:54:27.572 [DEBUG] [Thread-127722] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:27.590 [DEBUG] [Thread-127722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:27.590 [DEBUG] [Thread-127722] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:27.591 [DEBUG] [Thread-127722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:54:27.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:54:27.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:27.593 [DEBUG] [Thread-127722] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:27.593 [DEBUG] [Thread-127722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:27.593 [DEBUG] [Thread-127722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:27.593 [DEBUG] [Thread-127722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:54:27.593 [DEBUG] [Thread-127722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:27.629 [INFO] [Thread-127722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:27.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:28.256 [DEBUG] [Thread-127722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:28.256 [DEBUG] [Thread-127722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:28.257 [DEBUG] [Thread-127722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:54:28.297 [DEBUG] [Thread-127722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:28.297 [DEBUG] [Thread-127722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:28.300 [DEBUG] [Thread-127722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:28.311 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:28.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:54:28.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:54:28.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:54:28.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:28.322 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:54:28.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537583 -999.00  +19.10  19.41     35   +3.40 1 1 1 1 1   888    0 15.02 -31.80 ----- 19.4 19.4 201.6 29.9 24.4 -27.8 23.5 -30.3 24.8 -28.1 25.9 -28.0
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:54:28.323 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537583
2025-09-28T14:54:28.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:54:28.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:54:28.324 [DEBUG] [Thread-127722] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:54:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:54:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:54:28.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:54:19', tmtdew=17.7, humidity=30.64, cloud=0.0, wind=28.64, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:54:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:54:28.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-28T14:54:28.425 [DEBUG] [Thread-127725] [transport.py] [_log()] starting thread (client mode): 0x2b9b9150
2025-09-28T14:54:28.425 [DEBUG] [Thread-127725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:28.440 [DEBUG] [Thread-127725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:54:28.440 [INFO] [Thread-127725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:54:28.447 [DEBUG] [Thread-127725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] Compression: none
2025-09-28T14:54:28.448 [DEBUG] [Thread-127725] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:28.506 [DEBUG] [Thread-127725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:28.507 [DEBUG] [Thread-127725] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:28.507 [DEBUG] [Thread-127725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:54:28.507 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:54:28.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:28.567 [DEBUG] [Thread-127725] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:28.567 [DEBUG] [Thread-127725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:28.568 [DEBUG] [Thread-127725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:28.568 [DEBUG] [Thread-127725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:54:28.568 [DEBUG] [Thread-127725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:28.586 [INFO] [Thread-127725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:28.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-28T14:54:28.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:29.639 [DEBUG] [Thread-127725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:29.639 [DEBUG] [Thread-127725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:29.688 [DEBUG] [Thread-127725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:29.688 [DEBUG] [Thread-127725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:29.696 [DEBUG] [Thread-127725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:29.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:29.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-28T14:54:29.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-28T14:54:29.721 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:29.721 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:29.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:29.730 [DEBUG] [Thread-127725] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:30.770 [DEBUG] [Thread-127727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:39.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:54:39.724 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:54:39.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-28T14:54:40.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 54, 19), 17.7, 30.64, 0.0, 28.64, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:54:40.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:54:19
2025-09-28T14:54:40.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:54:40.541 [DEBUG] [Thread-127728] [transport.py] [_log()] starting thread (client mode): 0x2b9ceef0
2025-09-28T14:54:40.541 [DEBUG] [Thread-127728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:40.561 [DEBUG] [Thread-127728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:54:40.561 [INFO] [Thread-127728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:40.564 [DEBUG] [Thread-127728] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] Compression: none
2025-09-28T14:54:40.565 [DEBUG] [Thread-127728] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:40.583 [DEBUG] [Thread-127728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:40.583 [DEBUG] [Thread-127728] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:40.584 [DEBUG] [Thread-127728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:54:40.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:54:40.585 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:40.586 [DEBUG] [Thread-127728] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:40.586 [DEBUG] [Thread-127728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:40.587 [DEBUG] [Thread-127728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:40.587 [DEBUG] [Thread-127728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:54:40.587 [DEBUG] [Thread-127728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:40.626 [INFO] [Thread-127728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:40.626 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:41.271 [DEBUG] [Thread-127728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:41.271 [DEBUG] [Thread-127728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:41.271 [DEBUG] [Thread-127728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:54:41.312 [DEBUG] [Thread-127728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:41.312 [DEBUG] [Thread-127728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:41.314 [DEBUG] [Thread-127728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:41.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:41.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:54:41.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:54:41.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:54:41.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:41.331 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:54:41.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537583 -999.00  +19.10  19.41     35   +3.40 1 1 1 1 1   888    0 15.02 -31.80 ----- 19.4 19.4 201.6 29.9 24.4 -27.8 23.5 -30.3 24.8 -28.1 25.9 -28.0
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537583
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:54:41.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:54:19', tmtdew=17.7, humidity=30.64, cloud=0.0, wind=28.64, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:54:07.171', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:54:41.332 [DEBUG] [Thread-127728] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:41.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-28T14:54:41.416 [DEBUG] [Thread-127731] [transport.py] [_log()] starting thread (client mode): 0x2b9b8610
2025-09-28T14:54:41.416 [DEBUG] [Thread-127731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:41.429 [DEBUG] [Thread-127731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:54:41.430 [INFO] [Thread-127731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:54:41.437 [DEBUG] [Thread-127731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:41.437 [DEBUG] [Thread-127731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:54:41.437 [DEBUG] [Thread-127731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:41.438 [DEBUG] [Thread-127731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] Compression: none
2025-09-28T14:54:41.439 [DEBUG] [Thread-127731] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:41.496 [DEBUG] [Thread-127731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:41.497 [DEBUG] [Thread-127731] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:41.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:54:41.498 [DEBUG] [Thread-127731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:54:41.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:41.552 [DEBUG] [Thread-127731] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:41.552 [DEBUG] [Thread-127731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:41.552 [DEBUG] [Thread-127731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:41.552 [DEBUG] [Thread-127731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:54:41.552 [DEBUG] [Thread-127731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:41.572 [INFO] [Thread-127731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:41.572 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T14:54:41.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:42.567 [DEBUG] [Thread-127731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:42.567 [DEBUG] [Thread-127731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:42.615 [DEBUG] [Thread-127731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:42.615 [DEBUG] [Thread-127731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:42.624 [DEBUG] [Thread-127731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:42.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:42.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-28T14:54:42.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-28T14:54:42.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:42.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:42.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:42.658 [DEBUG] [Thread-127731] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:45.815 [DEBUG] [Thread-127733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:54:52.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:54:52.659 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:54:52.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T14:54:53.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 54, 19), 17.7, 30.64, 0.0, 28.64, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:54:53.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:54:19
2025-09-28T14:54:53.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:54:53.529 [DEBUG] [Thread-127734] [transport.py] [_log()] starting thread (client mode): 0x2e3fa620
2025-09-28T14:54:53.529 [DEBUG] [Thread-127734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:53.550 [DEBUG] [Thread-127734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:54:53.550 [INFO] [Thread-127734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:54:53.553 [DEBUG] [Thread-127734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:53.553 [DEBUG] [Thread-127734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] Compression: none
2025-09-28T14:54:53.554 [DEBUG] [Thread-127734] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:53.571 [DEBUG] [Thread-127734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:53.571 [DEBUG] [Thread-127734] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:53.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:54:53.572 [DEBUG] [Thread-127734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:54:53.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:53.574 [DEBUG] [Thread-127734] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:53.574 [DEBUG] [Thread-127734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:53.575 [DEBUG] [Thread-127734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:53.575 [DEBUG] [Thread-127734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:54:53.575 [DEBUG] [Thread-127734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:53.599 [INFO] [Thread-127734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:53.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:54.235 [DEBUG] [Thread-127734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:54.235 [DEBUG] [Thread-127734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:54.236 [DEBUG] [Thread-127734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:54:54.276 [DEBUG] [Thread-127734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:54.276 [DEBUG] [Thread-127734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:54.279 [DEBUG] [Thread-127734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:54.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:54.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:54:54.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:54:54.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:54:54.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:54.302 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:54:54.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:54.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:54:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537930 -999.00  +19.00  13.79     36   +3.60 1 1 1 1 1   888    0 14.72 -39.53 ----- 13.8 13.8 213.8 30.5 24.4 -27.5 23.4 -25.9 24.7 -28.3 26.0 -27.2
2025-09-28T14:54:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:54:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:54:54.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537930
2025-09-28T14:54:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:54:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:54:54.304 [DEBUG] [Thread-127734] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:54:54.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:54:54.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:54:54.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:54:54.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:54:19', tmtdew=17.7, humidity=30.64, cloud=0.0, wind=28.64, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:54:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:54:54.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-28T14:54:54.397 [DEBUG] [Thread-127737] [transport.py] [_log()] starting thread (client mode): 0x2e38cfd0
2025-09-28T14:54:54.397 [DEBUG] [Thread-127737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:54:54.413 [DEBUG] [Thread-127737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:54:54.413 [INFO] [Thread-127737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:54:54.420 [DEBUG] [Thread-127737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:54.421 [DEBUG] [Thread-127737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] client lang: <none>
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] server lang: <none>
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] kex follows: False
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] Compression: none
2025-09-28T14:54:54.422 [DEBUG] [Thread-127737] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:54:54.479 [DEBUG] [Thread-127737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:54:54.480 [DEBUG] [Thread-127737] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:54:54.480 [DEBUG] [Thread-127737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:54:54.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:54:54.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:54:54.535 [DEBUG] [Thread-127737] [transport.py] [_log()] userauth is OK
2025-09-28T14:54:54.535 [DEBUG] [Thread-127737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:54:54.536 [DEBUG] [Thread-127737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:54:54.536 [DEBUG] [Thread-127737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:54:54.536 [DEBUG] [Thread-127737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:54:54.554 [INFO] [Thread-127737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:54:54.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-28T14:54:54.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:54:55.605 [DEBUG] [Thread-127737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:54:55.605 [DEBUG] [Thread-127737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:54:55.653 [DEBUG] [Thread-127737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:54:55.653 [DEBUG] [Thread-127737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:54:55.662 [DEBUG] [Thread-127737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:54:55.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:54:55.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-28T14:54:55.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-28T14:54:55.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:54:55.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:54:55.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:54:55.697 [DEBUG] [Thread-127737] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:00.849 [DEBUG] [Thread-127739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:05.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:55:05.694 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:55:05.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-28T14:55:06.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 54, 51), 17.3, 31.47, 0.0, 21.88, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:55:06.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:54:51
2025-09-28T14:55:06.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:55:06.526 [DEBUG] [Thread-127740] [transport.py] [_log()] starting thread (client mode): 0x2e3f8220
2025-09-28T14:55:06.526 [DEBUG] [Thread-127740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:06.545 [DEBUG] [Thread-127740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:55:06.545 [INFO] [Thread-127740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] Compression: none
2025-09-28T14:55:06.548 [DEBUG] [Thread-127740] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:06.556 [DEBUG] [Thread-127740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:06.556 [DEBUG] [Thread-127740] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:06.557 [DEBUG] [Thread-127740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:55:06.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:55:06.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:06.558 [DEBUG] [Thread-127740] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:06.558 [DEBUG] [Thread-127740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:06.558 [DEBUG] [Thread-127740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:06.558 [DEBUG] [Thread-127740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:55:06.558 [DEBUG] [Thread-127740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:06.572 [INFO] [Thread-127740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:06.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:07.150 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:07.151 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:13.044 [DEBUG] [Thread-127740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:13.045 [DEBUG] [Thread-127740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:13.045 [DEBUG] [Thread-127740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:55:13.086 [DEBUG] [Thread-127740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:13.086 [DEBUG] [Thread-127740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:13.088 [DEBUG] [Thread-127740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:13.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:13.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:55:13.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:55:13.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:55:13.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:13.153 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:55:13.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.537930 -999.00  +19.00  13.79     36   +3.60 1 1 1 1 1   888    0 14.72 -39.53 ----- 13.8 13.8 213.8 30.5 24.4 -27.5 23.4 -25.9 24.7 -28.3 26.0 -27.2
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.537930
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:55:13.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:54:51', tmtdew=17.3, humidity=31.47, cloud=0.0, wind=21.88, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:54:37.152', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:55:13.154 [DEBUG] [Thread-127740] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:13.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-28T14:55:13.239 [DEBUG] [Thread-127743] [transport.py] [_log()] starting thread (client mode): 0x2e3df610
2025-09-28T14:55:13.239 [DEBUG] [Thread-127743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:13.254 [DEBUG] [Thread-127743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:55:13.254 [INFO] [Thread-127743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] Compression: none
2025-09-28T14:55:13.262 [DEBUG] [Thread-127743] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:13.321 [DEBUG] [Thread-127743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:13.322 [DEBUG] [Thread-127743] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:13.322 [DEBUG] [Thread-127743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:55:13.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:55:13.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:13.378 [DEBUG] [Thread-127743] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:13.378 [DEBUG] [Thread-127743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:13.378 [DEBUG] [Thread-127743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:13.378 [DEBUG] [Thread-127743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:55:13.378 [DEBUG] [Thread-127743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:13.396 [INFO] [Thread-127743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:13.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-28T14:55:13.396 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:14.446 [DEBUG] [Thread-127743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:14.446 [DEBUG] [Thread-127743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:14.495 [DEBUG] [Thread-127743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:14.495 [DEBUG] [Thread-127743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:14.504 [DEBUG] [Thread-127743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:14.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:14.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-28T14:55:14.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-28T14:55:14.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:14.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:14.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:14.540 [DEBUG] [Thread-127743] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:15.904 [DEBUG] [Thread-127745 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:16.309 [DEBUG] [Thread-127746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:24.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:55:24.542 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:55:24.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-28T14:55:25.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 54, 51), 17.3, 31.47, 0.0, 21.88, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:55:25.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:54:51
2025-09-28T14:55:25.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:55:25.409 [DEBUG] [Thread-127747] [transport.py] [_log()] starting thread (client mode): 0x2e3de3b0
2025-09-28T14:55:25.409 [DEBUG] [Thread-127747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:25.429 [DEBUG] [Thread-127747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:55:25.429 [INFO] [Thread-127747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:25.431 [DEBUG] [Thread-127747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:25.432 [DEBUG] [Thread-127747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:25.432 [DEBUG] [Thread-127747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:25.432 [DEBUG] [Thread-127747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:25.432 [DEBUG] [Thread-127747] [transport.py] [_log()] Compression: none
2025-09-28T14:55:25.432 [DEBUG] [Thread-127747] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:25.443 [DEBUG] [Thread-127747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:25.443 [DEBUG] [Thread-127747] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:25.443 [DEBUG] [Thread-127747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:55:25.443 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:55:25.444 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:25.444 [DEBUG] [Thread-127747] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:25.444 [DEBUG] [Thread-127747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:25.444 [DEBUG] [Thread-127747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:25.444 [DEBUG] [Thread-127747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:55:25.444 [DEBUG] [Thread-127747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:25.456 [INFO] [Thread-127747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:25.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:26.109 [DEBUG] [Thread-127747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:26.109 [DEBUG] [Thread-127747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:26.109 [DEBUG] [Thread-127747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:55:26.150 [DEBUG] [Thread-127747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:26.150 [DEBUG] [Thread-127747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:26.152 [DEBUG] [Thread-127747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:26.165 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:26.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:55:26.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:55:26.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:55:26.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:26.176 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:55:26.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:26.176 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:26.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:55:26.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538277 -999.00  +19.10   9.86     36   +3.70 1 1 1 1 1   888    0 14.36 -45.52 ----- 9.9 9.9 216.4 18.5 24.3 -28.7 23.4 -25.8 24.8 -26.3 26.0 -28.5
2025-09-28T14:55:26.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:55:26.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:55:26.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538277
2025-09-28T14:55:26.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:55:26.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:55:26.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:55:26.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:55:26.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:55:26.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:54:51', tmtdew=17.3, humidity=31.47, cloud=0.0, wind=21.88, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:55:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:55:26.179 [DEBUG] [Thread-127747] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:26.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-28T14:55:26.272 [DEBUG] [Thread-127750] [transport.py] [_log()] starting thread (client mode): 0x2e361870
2025-09-28T14:55:26.273 [DEBUG] [Thread-127750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:26.290 [DEBUG] [Thread-127750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:55:26.290 [INFO] [Thread-127750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:55:26.297 [DEBUG] [Thread-127750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:26.297 [DEBUG] [Thread-127750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:55:26.297 [DEBUG] [Thread-127750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:26.297 [DEBUG] [Thread-127750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:26.297 [DEBUG] [Thread-127750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] Compression: none
2025-09-28T14:55:26.298 [DEBUG] [Thread-127750] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:26.359 [DEBUG] [Thread-127750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:26.360 [DEBUG] [Thread-127750] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:26.360 [DEBUG] [Thread-127750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:55:26.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:55:26.361 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:26.422 [DEBUG] [Thread-127750] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:26.422 [DEBUG] [Thread-127750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:26.422 [DEBUG] [Thread-127750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:26.423 [DEBUG] [Thread-127750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:55:26.423 [DEBUG] [Thread-127750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:26.442 [INFO] [Thread-127750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:26.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-28T14:55:26.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:27.446 [DEBUG] [Thread-127750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:27.447 [DEBUG] [Thread-127750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:27.494 [DEBUG] [Thread-127750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:27.494 [DEBUG] [Thread-127750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:27.503 [DEBUG] [Thread-127750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:27.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:27.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-28T14:55: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-28T14:55:27.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:27.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:27.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:27.537 [DEBUG] [Thread-127750] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:30.940 [DEBUG] [Thread-127752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:37.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:55:37.540 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:55:37.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-28T14:55:38.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 55, 23), 16.85, 32.35, 0.0, 25.6, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:55:38.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:55:23
2025-09-28T14:55:38.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:55:38.363 [DEBUG] [Thread-127753] [transport.py] [_log()] starting thread (client mode): 0x2e34b250
2025-09-28T14:55:38.363 [DEBUG] [Thread-127753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:38.384 [DEBUG] [Thread-127753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:55:38.384 [INFO] [Thread-127753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:38.387 [DEBUG] [Thread-127753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] Compression: none
2025-09-28T14:55:38.388 [DEBUG] [Thread-127753] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:38.408 [DEBUG] [Thread-127753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:38.408 [DEBUG] [Thread-127753] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:38.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:55:38.409 [DEBUG] [Thread-127753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:55:38.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:38.452 [DEBUG] [Thread-127753] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:38.452 [DEBUG] [Thread-127753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:38.453 [DEBUG] [Thread-127753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:38.453 [DEBUG] [Thread-127753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:55:38.453 [DEBUG] [Thread-127753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:38.476 [INFO] [Thread-127753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:38.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:39.145 [DEBUG] [Thread-127753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:39.145 [DEBUG] [Thread-127753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:39.145 [DEBUG] [Thread-127753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:55:39.186 [DEBUG] [Thread-127753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:39.187 [DEBUG] [Thread-127753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:39.189 [DEBUG] [Thread-127753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:39.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:39.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:55:39.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:55:39.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:55:39.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:39.213 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:55:39.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:39.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:55:39.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538277 -999.00  +19.10   9.86     36   +3.70 1 1 1 1 1   888    0 14.36 -45.52 ----- 9.9 9.9 216.4 18.5 24.3 -28.7 23.4 -25.8 24.8 -26.3 26.0 -28.5
2025-09-28T14:55:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:55:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:55:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538277
2025-09-28T14:55:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:55:39.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:55:39.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:55:39.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:55:39.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:55:39.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:55:23', tmtdew=16.85, humidity=32.35, cloud=0.0, wind=25.6, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:55:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:55:39.215 [DEBUG] [Thread-127753] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:39.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-28T14:55:39.312 [DEBUG] [Thread-127756] [transport.py] [_log()] starting thread (client mode): 0x2b9b9600
2025-09-28T14:55:39.312 [DEBUG] [Thread-127756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:39.327 [DEBUG] [Thread-127756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:55:39.327 [INFO] [Thread-127756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:55:39.335 [DEBUG] [Thread-127756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:39.335 [DEBUG] [Thread-127756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:55:39.335 [DEBUG] [Thread-127756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] Compression: none
2025-09-28T14:55:39.336 [DEBUG] [Thread-127756] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:39.394 [DEBUG] [Thread-127756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:39.394 [DEBUG] [Thread-127756] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:39.395 [DEBUG] [Thread-127756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:55:39.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:55:39.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:39.450 [DEBUG] [Thread-127756] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:39.450 [DEBUG] [Thread-127756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:39.450 [DEBUG] [Thread-127756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:39.451 [DEBUG] [Thread-127756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:55:39.451 [DEBUG] [Thread-127756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:39.471 [INFO] [Thread-127756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:39.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-28T14:55:39.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:40.444 [DEBUG] [Thread-127756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:40.445 [DEBUG] [Thread-127756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:40.492 [DEBUG] [Thread-127756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:40.492 [DEBUG] [Thread-127756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:40.502 [DEBUG] [Thread-127756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:40.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:40.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-28T14:55:40.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-28T14:55:40.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:40.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:40.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:40.537 [DEBUG] [Thread-127756] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:45.987 [DEBUG] [Thread-127758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:55:50.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:55:50.539 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:55:50.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-28T14:55:51.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 55, 23), 16.85, 32.35, 0.0, 25.6, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:55:51.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:55:23
2025-09-28T14:55:51.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:55:51.353 [DEBUG] [Thread-127759] [transport.py] [_log()] starting thread (client mode): 0x2e38f250
2025-09-28T14:55:51.353 [DEBUG] [Thread-127759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:51.375 [DEBUG] [Thread-127759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:55:51.375 [INFO] [Thread-127759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:55:51.377 [DEBUG] [Thread-127759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] Compression: none
2025-09-28T14:55:51.378 [DEBUG] [Thread-127759] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:51.394 [DEBUG] [Thread-127759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:51.395 [DEBUG] [Thread-127759] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:51.395 [DEBUG] [Thread-127759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:55:51.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:55:51.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:51.396 [DEBUG] [Thread-127759] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:51.396 [DEBUG] [Thread-127759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:51.396 [DEBUG] [Thread-127759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:51.396 [DEBUG] [Thread-127759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:55:51.396 [DEBUG] [Thread-127759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:51.414 [INFO] [Thread-127759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:51.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:52.040 [DEBUG] [Thread-127759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:52.041 [DEBUG] [Thread-127759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:52.041 [DEBUG] [Thread-127759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:55:52.081 [DEBUG] [Thread-127759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:52.081 [DEBUG] [Thread-127759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:52.085 [DEBUG] [Thread-127759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:52.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:52.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:55:52.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:55:52.100 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:55:52.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:52.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:55:52.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:52.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:52.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:55:52.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538277 -999.00  +19.10   9.86     36   +3.70 1 1 1 1 1   888    0 14.36 -45.52 ----- 9.9 9.9 216.4 18.5 24.3 -28.7 23.4 -25.8 24.8 -26.3 26.0 -28.5
2025-09-28T14:55:52.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:55:52.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:55:52.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538277
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:55:52.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:55:23', tmtdew=16.85, humidity=32.35, cloud=0.0, wind=25.6, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:55:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:55:52.110 [DEBUG] [Thread-127759] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:55:52.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-28T14:55:52.204 [DEBUG] [Thread-127762] [transport.py] [_log()] starting thread (client mode): 0x2e3fbd90
2025-09-28T14:55:52.205 [DEBUG] [Thread-127762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:55:52.221 [DEBUG] [Thread-127762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:55:52.221 [INFO] [Thread-127762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] client lang: <none>
2025-09-28T14:55:52.232 [DEBUG] [Thread-127762] [transport.py] [_log()] server lang: <none>
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] kex follows: False
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] Compression: none
2025-09-28T14:55:52.233 [DEBUG] [Thread-127762] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:55:52.294 [DEBUG] [Thread-127762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:55:52.295 [DEBUG] [Thread-127762] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:55:52.295 [DEBUG] [Thread-127762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:55:52.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:55:52.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:55:52.354 [DEBUG] [Thread-127762] [transport.py] [_log()] userauth is OK
2025-09-28T14:55:52.354 [DEBUG] [Thread-127762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:55:52.354 [DEBUG] [Thread-127762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:55:52.354 [DEBUG] [Thread-127762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:55:52.354 [DEBUG] [Thread-127762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:55:52.375 [INFO] [Thread-127762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:55:52.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-28T14:55:52.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:55:53.370 [DEBUG] [Thread-127762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:55:53.370 [DEBUG] [Thread-127762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:55:53.418 [DEBUG] [Thread-127762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:55:53.418 [DEBUG] [Thread-127762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:55:53.426 [DEBUG] [Thread-127762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:55:53.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:55:53.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-28T14:55:53.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:55:53.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:55:53.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:55:53.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:55:53.460 [DEBUG] [Thread-127762] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:01.025 [DEBUG] [Thread-127764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:03.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:56:03.463 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:56:03.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-28T14:56:04.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 55, 55), 16.89, 32.0, 0.0, 27.51, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:56:04.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:55:55
2025-09-28T14:56:04.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:56:04.297 [DEBUG] [Thread-127765] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T14:56:04.297 [DEBUG] [Thread-127765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:04.319 [DEBUG] [Thread-127765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:56:04.319 [INFO] [Thread-127765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] Compression: none
2025-09-28T14:56:04.322 [DEBUG] [Thread-127765] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:04.339 [DEBUG] [Thread-127765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:04.340 [DEBUG] [Thread-127765] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:04.340 [DEBUG] [Thread-127765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:56:04.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:56:04.341 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:04.343 [DEBUG] [Thread-127765] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:04.343 [DEBUG] [Thread-127765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:04.344 [DEBUG] [Thread-127765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:04.344 [DEBUG] [Thread-127765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:56:04.344 [DEBUG] [Thread-127765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:04.369 [INFO] [Thread-127765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:04.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:05.000 [DEBUG] [Thread-127765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:05.000 [DEBUG] [Thread-127765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:05.001 [DEBUG] [Thread-127765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:56:05.041 [DEBUG] [Thread-127765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:05.041 [DEBUG] [Thread-127765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:05.044 [DEBUG] [Thread-127765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:05.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:05.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:56:05.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:56:05.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:56:05.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:05.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:56:05.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:05.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:05.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:56:05.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538624 -999.00  +19.10  14.60     35   +3.60 1 1 1 1 1   888    0 14.53 -46.69 ----- 14.6 14.6 215.6 24.4 24.2 -27.8 23.4 -27.6 24.8 -26.1 25.9 -28.6
2025-09-28T14:56:05.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:56:05.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:56:05.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538624
2025-09-28T14:56:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:56:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:56:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:56:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:56:05.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:56:05.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:55:55', tmtdew=16.89, humidity=32.0, cloud=0.0, wind=27.51, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:55:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:56:05.071 [DEBUG] [Thread-127765] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:05.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-28T14:56:05.165 [DEBUG] [Thread-127768] [transport.py] [_log()] starting thread (client mode): 0x2b9b8370
2025-09-28T14:56:05.165 [DEBUG] [Thread-127768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:05.180 [DEBUG] [Thread-127768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:56:05.180 [INFO] [Thread-127768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:05.188 [DEBUG] [Thread-127768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] Compression: none
2025-09-28T14:56:05.189 [DEBUG] [Thread-127768] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:05.245 [DEBUG] [Thread-127768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:05.245 [DEBUG] [Thread-127768] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:05.246 [DEBUG] [Thread-127768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:56:05.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:56:05.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:05.301 [DEBUG] [Thread-127768] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:05.301 [DEBUG] [Thread-127768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:05.302 [DEBUG] [Thread-127768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:05.302 [DEBUG] [Thread-127768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:56:05.302 [DEBUG] [Thread-127768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:05.320 [INFO] [Thread-127768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:05.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-28T14:56:05.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:06.327 [DEBUG] [Thread-127768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:06.327 [DEBUG] [Thread-127768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:06.375 [DEBUG] [Thread-127768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:06.375 [DEBUG] [Thread-127768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:06.384 [DEBUG] [Thread-127768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:06.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:06.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-28T14:56:06.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-28T14:56:06.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:06.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:06.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:06.420 [DEBUG] [Thread-127768] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:07.291 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:07.292 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:16.056 [DEBUG] [Thread-127770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:16.346 [DEBUG] [Thread-127771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:16.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:56:16.423 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:56:16.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-28T14:56:17.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 55, 55), 16.89, 32.0, 0.0, 27.51, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:56:17.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:55:55
2025-09-28T14:56:17.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:56:17.258 [DEBUG] [Thread-127772] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-28T14:56:17.258 [DEBUG] [Thread-127772] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:17.277 [DEBUG] [Thread-127772] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:56:17.278 [INFO] [Thread-127772] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:56:17.281 [DEBUG] [Thread-127772] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:17.281 [DEBUG] [Thread-127772] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:56:17.281 [DEBUG] [Thread-127772] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:17.281 [DEBUG] [Thread-127772] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:17.281 [DEBUG] [Thread-127772] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] Compression: none
2025-09-28T14:56:17.282 [DEBUG] [Thread-127772] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:17.299 [DEBUG] [Thread-127772] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:17.300 [DEBUG] [Thread-127772] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:17.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:56:17.301 [DEBUG] [Thread-127772] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:56:17.302 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:17.303 [DEBUG] [Thread-127772] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:17.303 [DEBUG] [Thread-127772] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:17.303 [DEBUG] [Thread-127772] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:17.303 [DEBUG] [Thread-127772] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:56:17.303 [DEBUG] [Thread-127772] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:17.338 [INFO] [Thread-127772] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:17.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:17.980 [DEBUG] [Thread-127772] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:17.980 [DEBUG] [Thread-127772] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:17.980 [DEBUG] [Thread-127772] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:56:18.021 [DEBUG] [Thread-127772] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:18.021 [DEBUG] [Thread-127772] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:18.024 [DEBUG] [Thread-127772] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:18.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:18.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:56:18.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:56:18.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:56:18.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:18.048 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:56:18.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:18.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:18.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:56:18.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538624 -999.00  +19.10  14.60     35   +3.60 1 1 1 1 1   888    0 14.53 -46.69 ----- 14.6 14.6 215.6 24.4 24.2 -27.8 23.4 -27.6 24.8 -26.1 25.9 -28.6
2025-09-28T14:56:18.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:56:18.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:56:18.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538624
2025-09-28T14:56:18.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:56:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:56:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:56:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:56:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:56:18.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:55:55', tmtdew=16.89, humidity=32.0, cloud=0.0, wind=27.51, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:55:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:56:18.050 [DEBUG] [Thread-127772] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:18.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-28T14:56:18.145 [DEBUG] [Thread-127775] [transport.py] [_log()] starting thread (client mode): 0x2e3df130
2025-09-28T14:56:18.145 [DEBUG] [Thread-127775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:18.160 [DEBUG] [Thread-127775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:56:18.160 [INFO] [Thread-127775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:56:18.168 [DEBUG] [Thread-127775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] Compression: none
2025-09-28T14:56:18.169 [DEBUG] [Thread-127775] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:18.229 [DEBUG] [Thread-127775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:18.230 [DEBUG] [Thread-127775] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:18.230 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:56:18.231 [DEBUG] [Thread-127775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:56:18.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:18.285 [DEBUG] [Thread-127775] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:18.286 [DEBUG] [Thread-127775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:18.286 [DEBUG] [Thread-127775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:18.286 [DEBUG] [Thread-127775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:56:18.286 [DEBUG] [Thread-127775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:18.305 [INFO] [Thread-127775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:18.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-28T14:56:18.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:19.315 [DEBUG] [Thread-127775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:19.316 [DEBUG] [Thread-127775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:19.364 [DEBUG] [Thread-127775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:19.364 [DEBUG] [Thread-127775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:19.373 [DEBUG] [Thread-127775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:19.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:19.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-28T14:56:19.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-28T14:56:19.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:19.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:19.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:19.408 [DEBUG] [Thread-127775] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:29.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:56:29.409 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:56:29.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-28T14:56:30.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 56, 27), 17.19, 31.4, 0.0, 31.21, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:56:30.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:56:27
2025-09-28T14:56:30.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:56:30.313 [DEBUG] [Thread-127777] [transport.py] [_log()] starting thread (client mode): 0x2e3f9b10
2025-09-28T14:56:30.314 [DEBUG] [Thread-127777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:30.331 [DEBUG] [Thread-127777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:56:30.331 [INFO] [Thread-127777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:30.335 [DEBUG] [Thread-127777] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] Compression: none
2025-09-28T14:56:30.336 [DEBUG] [Thread-127777] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:30.354 [DEBUG] [Thread-127777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:30.354 [DEBUG] [Thread-127777] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:30.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:56:30.356 [DEBUG] [Thread-127777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:56:30.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:30.396 [DEBUG] [Thread-127777] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:30.397 [DEBUG] [Thread-127777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:30.397 [DEBUG] [Thread-127777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:30.397 [DEBUG] [Thread-127777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:56:30.397 [DEBUG] [Thread-127777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:30.423 [INFO] [Thread-127777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:30.424 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:31.085 [DEBUG] [Thread-127777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:31.085 [DEBUG] [Thread-127777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:31.086 [DEBUG] [Thread-127777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:56:31.097 [DEBUG] [Thread-127779 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:31.126 [DEBUG] [Thread-127777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:31.126 [DEBUG] [Thread-127777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:31.129 [DEBUG] [Thread-127777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:31.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:31.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:56:31.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:56:31.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:56:31.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:31.151 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:56:31.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:31.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:31.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:56:31.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538971 -999.00  +19.00  11.64     35   +3.50 1 1 1 1 1   888    0 14.41 -46.37 ----- 11.6 11.6 189.4 26.6 24.2 -26.7 23.4 -26.3 24.7 -26.6 25.9 -27.7
2025-09-28T14:56:31.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:56:31.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:56:31.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538971
2025-09-28T14:56:31.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:56:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:56:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:56:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:56:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:56:31.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:56:27', tmtdew=17.19, humidity=31.4, cloud=0.0, wind=31.21, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:56:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:56:31.154 [DEBUG] [Thread-127777] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:31.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-28T14:56:31.251 [DEBUG] [Thread-127781] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T14:56:31.251 [DEBUG] [Thread-127781] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:31.266 [DEBUG] [Thread-127781] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:56:31.266 [INFO] [Thread-127781] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:31.274 [DEBUG] [Thread-127781] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] Compression: none
2025-09-28T14:56:31.275 [DEBUG] [Thread-127781] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:31.333 [DEBUG] [Thread-127781] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:31.334 [DEBUG] [Thread-127781] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:31.334 [DEBUG] [Thread-127781] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:56:31.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:56:31.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:31.393 [DEBUG] [Thread-127781] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:31.393 [DEBUG] [Thread-127781] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:31.393 [DEBUG] [Thread-127781] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:31.393 [DEBUG] [Thread-127781] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:56:31.393 [DEBUG] [Thread-127781] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:31.414 [INFO] [Thread-127781] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:31.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-28T14:56:31.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:32.400 [DEBUG] [Thread-127781] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:32.401 [DEBUG] [Thread-127781] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:32.448 [DEBUG] [Thread-127781] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:32.448 [DEBUG] [Thread-127781] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:32.458 [DEBUG] [Thread-127781] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:32.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:32.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-28T14:56:32.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-28T14:56:32.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:32.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:32.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:32.495 [DEBUG] [Thread-127781] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:42.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:56:42.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:56:42.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-28T14:56:43.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 56, 27), 17.19, 31.4, 0.0, 31.21, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:56:43.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:56:27
2025-09-28T14:56:43.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:56:43.353 [DEBUG] [Thread-127783] [transport.py] [_log()] starting thread (client mode): 0x2e361660
2025-09-28T14:56:43.353 [DEBUG] [Thread-127783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:43.372 [DEBUG] [Thread-127783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:56:43.372 [INFO] [Thread-127783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:43.375 [DEBUG] [Thread-127783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] Compression: none
2025-09-28T14:56:43.376 [DEBUG] [Thread-127783] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:43.395 [DEBUG] [Thread-127783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:43.396 [DEBUG] [Thread-127783] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:43.396 [DEBUG] [Thread-127783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:56:43.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:56:43.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:43.399 [DEBUG] [Thread-127783] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:43.399 [DEBUG] [Thread-127783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:43.399 [DEBUG] [Thread-127783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:43.399 [DEBUG] [Thread-127783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:56:43.399 [DEBUG] [Thread-127783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:43.422 [INFO] [Thread-127783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:43.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:44.025 [DEBUG] [Thread-127783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:44.025 [DEBUG] [Thread-127783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:44.025 [DEBUG] [Thread-127783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:56:44.066 [DEBUG] [Thread-127783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:44.066 [DEBUG] [Thread-127783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:44.068 [DEBUG] [Thread-127783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:44.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:44.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:56:44.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:56:44.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:56:44.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:44.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:56:44.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:44.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:44.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:56:44.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538971 -999.00  +19.00  11.64     35   +3.50 1 1 1 1 1   888    0 14.41 -46.37 ----- 11.6 11.6 189.4 26.6 24.2 -26.7 23.4 -26.3 24.7 -26.6 25.9 -27.7
2025-09-28T14:56:44.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538971
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:56:44.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:56:27', tmtdew=17.19, humidity=31.4, cloud=0.0, wind=31.21, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:56:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:56:44.088 [DEBUG] [Thread-127783] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:44.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-28T14:56:44.175 [DEBUG] [Thread-127786] [transport.py] [_log()] starting thread (client mode): 0x2e3637c0
2025-09-28T14:56:44.176 [DEBUG] [Thread-127786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:44.193 [DEBUG] [Thread-127786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:56:44.193 [INFO] [Thread-127786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:56:44.200 [DEBUG] [Thread-127786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:44.201 [DEBUG] [Thread-127786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] Compression: none
2025-09-28T14:56:44.202 [DEBUG] [Thread-127786] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:44.260 [DEBUG] [Thread-127786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:44.261 [DEBUG] [Thread-127786] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:44.261 [DEBUG] [Thread-127786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:56:44.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:56:44.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:44.317 [DEBUG] [Thread-127786] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:44.317 [DEBUG] [Thread-127786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:44.317 [DEBUG] [Thread-127786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:44.317 [DEBUG] [Thread-127786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:56:44.317 [DEBUG] [Thread-127786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:44.337 [INFO] [Thread-127786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:44.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-28T14:56:44.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:45.329 [DEBUG] [Thread-127786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:45.330 [DEBUG] [Thread-127786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:45.378 [DEBUG] [Thread-127786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:45.378 [DEBUG] [Thread-127786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:45.388 [DEBUG] [Thread-127786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:45.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:45.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-28T14:56:45.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-28T14:56:45.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:45.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:45.417 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:45.425 [DEBUG] [Thread-127786] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:46.130 [DEBUG] [Thread-127788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:56:55.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:56:55.428 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:56:55.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-28T14:56:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 56, 27), 17.19, 31.4, 0.0, 31.21, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:56:56.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:56:27
2025-09-28T14:56:56.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:56:56.261 [DEBUG] [Thread-127789] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-28T14:56:56.261 [DEBUG] [Thread-127789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:56.281 [DEBUG] [Thread-127789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:56:56.281 [INFO] [Thread-127789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:56:56.284 [DEBUG] [Thread-127789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:56.285 [DEBUG] [Thread-127789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:56.286 [DEBUG] [Thread-127789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:56.286 [DEBUG] [Thread-127789] [transport.py] [_log()] Compression: none
2025-09-28T14:56:56.286 [DEBUG] [Thread-127789] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:56.304 [DEBUG] [Thread-127789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:56.304 [DEBUG] [Thread-127789] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:56.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:56:56.306 [DEBUG] [Thread-127789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:56:56.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:56.308 [DEBUG] [Thread-127789] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:56.308 [DEBUG] [Thread-127789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:56.308 [DEBUG] [Thread-127789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:56.308 [DEBUG] [Thread-127789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:56:56.308 [DEBUG] [Thread-127789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:56.332 [INFO] [Thread-127789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:56.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:56.970 [DEBUG] [Thread-127789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:56.970 [DEBUG] [Thread-127789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:56.971 [DEBUG] [Thread-127789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:56:57.011 [DEBUG] [Thread-127789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:57.011 [DEBUG] [Thread-127789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:57.015 [DEBUG] [Thread-127789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:57.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56:57.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:56:57.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:56:57.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:56:57.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:57.038 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:56:57.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:57.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:56:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.538971 -999.00  +19.00  11.64     35   +3.50 1 1 1 1 1   888    0 14.41 -46.37 ----- 11.6 11.6 189.4 26.6 24.2 -26.7 23.4 -26.3 24.7 -26.6 25.9 -27.7
2025-09-28T14:56:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:56:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:56:57.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.538971
2025-09-28T14:56:57.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:56:57.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:56:57.040 [DEBUG] [Thread-127789] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:56:57.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:56:57.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:56:57.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:56:57.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:56:27', tmtdew=17.19, humidity=31.4, cloud=0.0, wind=31.21, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:56:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:56:57.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-28T14:56:57.137 [DEBUG] [Thread-127792] [transport.py] [_log()] starting thread (client mode): 0x2b94dd20
2025-09-28T14:56:57.137 [DEBUG] [Thread-127792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:56:57.157 [DEBUG] [Thread-127792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:56:57.157 [INFO] [Thread-127792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:56:57.164 [DEBUG] [Thread-127792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:57.165 [DEBUG] [Thread-127792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] client lang: <none>
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] server lang: <none>
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] kex follows: False
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] Compression: none
2025-09-28T14:56:57.166 [DEBUG] [Thread-127792] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:56:57.223 [DEBUG] [Thread-127792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:56:57.224 [DEBUG] [Thread-127792] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:56:57.224 [DEBUG] [Thread-127792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:56:57.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:56:57.225 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:56:57.280 [DEBUG] [Thread-127792] [transport.py] [_log()] userauth is OK
2025-09-28T14:56:57.280 [DEBUG] [Thread-127792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:56:57.280 [DEBUG] [Thread-127792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:56:57.280 [DEBUG] [Thread-127792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:56:57.280 [DEBUG] [Thread-127792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:56:57.297 [INFO] [Thread-127792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:56:57.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-28T14:56:57.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:56:58.235 [DEBUG] [Thread-127792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:56:58.235 [DEBUG] [Thread-127792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:56:58.284 [DEBUG] [Thread-127792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:56:58.284 [DEBUG] [Thread-127792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:56:58.292 [DEBUG] [Thread-127792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:56:58.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:56: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-28T14:56: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-28T14:56:58.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:56:58.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:56:58.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:56:58.323 [DEBUG] [Thread-127792] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:01.172 [DEBUG] [Thread-127794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:07.432 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:07.433 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:08.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:57:08.326 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:57:08.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-28T14:57:08.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 56, 58), 17.1, 31.69, 0.0, 26.03, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:57:08.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:56:58
2025-09-28T14:57:09.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:57:09.163 [DEBUG] [Thread-127795] [transport.py] [_log()] starting thread (client mode): 0x2e38d660
2025-09-28T14:57:09.163 [DEBUG] [Thread-127795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:09.184 [DEBUG] [Thread-127795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:57:09.184 [INFO] [Thread-127795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:09.185 [DEBUG] [Thread-127795] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] Compression: none
2025-09-28T14:57:09.186 [DEBUG] [Thread-127795] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:09.203 [DEBUG] [Thread-127795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:09.204 [DEBUG] [Thread-127795] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:09.204 [DEBUG] [Thread-127795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:57:09.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:57:09.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:09.205 [DEBUG] [Thread-127795] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:09.205 [DEBUG] [Thread-127795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:09.205 [DEBUG] [Thread-127795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:09.205 [DEBUG] [Thread-127795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:57:09.205 [DEBUG] [Thread-127795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:09.217 [INFO] [Thread-127795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:09.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:09.873 [DEBUG] [Thread-127795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:09.873 [DEBUG] [Thread-127795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:09.873 [DEBUG] [Thread-127795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:57:09.913 [DEBUG] [Thread-127795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:09.913 [DEBUG] [Thread-127795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:09.916 [DEBUG] [Thread-127795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:09.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:09.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:57:09.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:57:09.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:57:09.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:09.938 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:57:09.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:09.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:09.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:57:09.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.539319 -999.00  +18.90  11.07     35   +3.40 1 1 1 1 1   888    0 14.46 -45.27 ----- 11.1 11.1 216.0 26.9 24.3 -27.3 23.4 -26.8 24.7 -26.7 25.9 -28.1
2025-09-28T14:57:09.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:57:09.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:57:09.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.539319
2025-09-28T14:57:09.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:57:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:57:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:57:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:57:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:57:09.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:56:58', tmtdew=17.1, humidity=31.69, cloud=0.0, wind=26.03, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:56:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:57:09.942 [DEBUG] [Thread-127795] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:10.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-28T14:57:10.040 [DEBUG] [Thread-127798] [transport.py] [_log()] starting thread (client mode): 0x2e3f9ba0
2025-09-28T14:57:10.040 [DEBUG] [Thread-127798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:10.055 [DEBUG] [Thread-127798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:57:10.056 [INFO] [Thread-127798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:10.063 [DEBUG] [Thread-127798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] Compression: none
2025-09-28T14:57:10.064 [DEBUG] [Thread-127798] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:10.121 [DEBUG] [Thread-127798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:10.121 [DEBUG] [Thread-127798] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:10.122 [DEBUG] [Thread-127798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:57:10.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:57:10.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:10.176 [DEBUG] [Thread-127798] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:10.176 [DEBUG] [Thread-127798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:10.176 [DEBUG] [Thread-127798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:10.176 [DEBUG] [Thread-127798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:57:10.176 [DEBUG] [Thread-127798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:10.195 [INFO] [Thread-127798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:10.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-28T14:57:10.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:11.180 [DEBUG] [Thread-127798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:11.181 [DEBUG] [Thread-127798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:11.229 [DEBUG] [Thread-127798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:11.229 [DEBUG] [Thread-127798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:11.238 [DEBUG] [Thread-127798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:11.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:11.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-28T14:57:11.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-28T14:57:11.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:11.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:11.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:11.273 [DEBUG] [Thread-127798] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:16.199 [DEBUG] [Thread-127800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:16.380 [DEBUG] [Thread-127801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:21.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:57:21.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:57:21.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-28T14:57:21.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 56, 58), 17.1, 31.69, 0.0, 26.03, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:57:21.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:56:58
2025-09-28T14:57:21.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:57:22.098 [DEBUG] [Thread-127802] [transport.py] [_log()] starting thread (client mode): 0x2e38d3f0
2025-09-28T14:57:22.098 [DEBUG] [Thread-127802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:22.119 [DEBUG] [Thread-127802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:57:22.119 [INFO] [Thread-127802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] Compression: none
2025-09-28T14:57:22.123 [DEBUG] [Thread-127802] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:22.140 [DEBUG] [Thread-127802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:22.141 [DEBUG] [Thread-127802] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:22.141 [DEBUG] [Thread-127802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:57:22.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:57:22.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:22.144 [DEBUG] [Thread-127802] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:22.144 [DEBUG] [Thread-127802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:22.144 [DEBUG] [Thread-127802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:22.144 [DEBUG] [Thread-127802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:57:22.144 [DEBUG] [Thread-127802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:22.168 [INFO] [Thread-127802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:22.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:22.799 [DEBUG] [Thread-127802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:22.800 [DEBUG] [Thread-127802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:22.800 [DEBUG] [Thread-127802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:57:22.841 [DEBUG] [Thread-127802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:22.842 [DEBUG] [Thread-127802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:22.845 [DEBUG] [Thread-127802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:22.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:22.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:57:22.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:57:22.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:57:22.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:22.870 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:57:22.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:22.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:57:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.539319 -999.00  +18.90  11.07     35   +3.40 1 1 1 1 1   888    0 14.46 -45.27 ----- 11.1 11.1 216.0 26.9 24.3 -27.3 23.4 -26.8 24.7 -26.7 25.9 -28.1
2025-09-28T14:57:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:57:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:57:22.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.539319
2025-09-28T14:57:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:57:22.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:57:22.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:57:22.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:57:22.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:57:22.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:56:58', tmtdew=17.1, humidity=31.69, cloud=0.0, wind=26.03, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:56:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:57:22.873 [DEBUG] [Thread-127802] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:22.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-28T14:57:22.968 [DEBUG] [Thread-127805] [transport.py] [_log()] starting thread (client mode): 0x2b94d780
2025-09-28T14:57:22.968 [DEBUG] [Thread-127805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:22.983 [DEBUG] [Thread-127805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:57:22.983 [INFO] [Thread-127805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:22.991 [DEBUG] [Thread-127805] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] Compression: none
2025-09-28T14:57:22.992 [DEBUG] [Thread-127805] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:23.051 [DEBUG] [Thread-127805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:23.051 [DEBUG] [Thread-127805] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:23.051 [DEBUG] [Thread-127805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:57:23.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:57:23.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:23.108 [DEBUG] [Thread-127805] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:23.108 [DEBUG] [Thread-127805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:23.108 [DEBUG] [Thread-127805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:23.108 [DEBUG] [Thread-127805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:57:23.108 [DEBUG] [Thread-127805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:23.131 [INFO] [Thread-127805] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57: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-28T14:57:23.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:24.121 [DEBUG] [Thread-127805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:24.121 [DEBUG] [Thread-127805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:24.169 [DEBUG] [Thread-127805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:24.169 [DEBUG] [Thread-127805] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:24.178 [DEBUG] [Thread-127805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:24.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:24.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-28T14:57: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') -> 00000000
2025-09-28T14:57:24.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:24.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:24.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:24.215 [DEBUG] [Thread-127805] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:31.243 [DEBUG] [Thread-127807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:34.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:57:34.217 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:57:34.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-28T14:57:34.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 57, 30), 17.1, 31.67, 0.0, 23.1, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:57:34.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:57:30
2025-09-28T14:57:34.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:57:35.082 [DEBUG] [Thread-127808] [transport.py] [_log()] starting thread (client mode): 0x2e38f670
2025-09-28T14:57:35.082 [DEBUG] [Thread-127808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:35.093 [DEBUG] [Thread-127808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:57:35.093 [INFO] [Thread-127808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:35.094 [DEBUG] [Thread-127808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:35.095 [DEBUG] [Thread-127808] [transport.py] [_log()] Compression: none
2025-09-28T14:57:35.095 [DEBUG] [Thread-127808] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:35.104 [DEBUG] [Thread-127808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:35.105 [DEBUG] [Thread-127808] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:35.105 [DEBUG] [Thread-127808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:57:35.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:57:35.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:35.106 [DEBUG] [Thread-127808] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:35.106 [DEBUG] [Thread-127808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:35.106 [DEBUG] [Thread-127808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:35.106 [DEBUG] [Thread-127808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:57:35.106 [DEBUG] [Thread-127808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:35.119 [INFO] [Thread-127808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:35.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:35.702 [DEBUG] [Thread-127808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:35.702 [DEBUG] [Thread-127808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:35.702 [DEBUG] [Thread-127808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:57:35.743 [DEBUG] [Thread-127808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:35.743 [DEBUG] [Thread-127808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:35.745 [DEBUG] [Thread-127808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:35.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:35.752 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:57:35.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:57:35.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:57:35.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:35.758 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:57:35.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.539666 -999.00  +18.90  19.14     35   +3.30 1 1 1 1 1   888    0 14.59 -44.63 ----- 19.1 19.1 210.8 23.9 24.2 -27.2 23.4 -26.0 24.7 -27.4 25.9 -27.9
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.539666
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:57:35.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:57:30', tmtdew=17.1, humidity=31.67, cloud=0.0, wind=23.1, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:57:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:57:35.758 [DEBUG] [Thread-127808] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:35.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-28T14:57:35.848 [DEBUG] [Thread-127811] [transport.py] [_log()] starting thread (client mode): 0x2b96ee00
2025-09-28T14:57:35.848 [DEBUG] [Thread-127811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:35.862 [DEBUG] [Thread-127811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:57:35.862 [INFO] [Thread-127811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:35.871 [DEBUG] [Thread-127811] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] Compression: none
2025-09-28T14:57:35.872 [DEBUG] [Thread-127811] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:35.927 [DEBUG] [Thread-127811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:35.927 [DEBUG] [Thread-127811] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:35.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:57:35.928 [DEBUG] [Thread-127811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:57:35.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:35.985 [DEBUG] [Thread-127811] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:35.985 [DEBUG] [Thread-127811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:35.985 [DEBUG] [Thread-127811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:35.985 [DEBUG] [Thread-127811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:57:35.986 [DEBUG] [Thread-127811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:36.003 [INFO] [Thread-127811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:36.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-28T14:57:36.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:36.997 [DEBUG] [Thread-127811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:36.997 [DEBUG] [Thread-127811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:37.045 [DEBUG] [Thread-127811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:37.045 [DEBUG] [Thread-127811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:37.058 [DEBUG] [Thread-127811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:37.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:37.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-28T14:57: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') -> 00000000
2025-09-28T14:57:37.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:37.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:37.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:37.093 [DEBUG] [Thread-127811] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:46.268 [DEBUG] [Thread-127813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:57:47.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:57:47.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:57:47.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-28T14:57:47.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 57, 30), 17.1, 31.67, 0.0, 23.1, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:57:47.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:57:30
2025-09-28T14:57:47.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:57:47.921 [DEBUG] [Thread-127814] [transport.py] [_log()] starting thread (client mode): 0x2b94d3c0
2025-09-28T14:57:47.921 [DEBUG] [Thread-127814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:47.941 [DEBUG] [Thread-127814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:57:47.941 [INFO] [Thread-127814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:57:47.944 [DEBUG] [Thread-127814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:47.944 [DEBUG] [Thread-127814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:57:47.944 [DEBUG] [Thread-127814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:47.944 [DEBUG] [Thread-127814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:47.944 [DEBUG] [Thread-127814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] Compression: none
2025-09-28T14:57:47.945 [DEBUG] [Thread-127814] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:47.965 [DEBUG] [Thread-127814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:47.966 [DEBUG] [Thread-127814] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:47.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:57:47.967 [DEBUG] [Thread-127814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:57:47.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:47.970 [DEBUG] [Thread-127814] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:47.970 [DEBUG] [Thread-127814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:47.970 [DEBUG] [Thread-127814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:47.970 [DEBUG] [Thread-127814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:57:47.970 [DEBUG] [Thread-127814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:47.995 [INFO] [Thread-127814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:47.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:48.587 [DEBUG] [Thread-127814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:48.587 [DEBUG] [Thread-127814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:48.588 [DEBUG] [Thread-127814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:57:48.628 [DEBUG] [Thread-127814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:48.628 [DEBUG] [Thread-127814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:48.631 [DEBUG] [Thread-127814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:48.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:48.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:57:48.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:57:48.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:57:48.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:48.657 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:57:48.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:48.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:57:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.539666 -999.00  +18.90  19.14     35   +3.30 1 1 1 1 1   888    0 14.59 -44.63 ----- 19.1 19.1 210.8 23.9 24.2 -27.2 23.4 -26.0 24.7 -27.4 25.9 -27.9
2025-09-28T14:57:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:57:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:57:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.539666
2025-09-28T14:57:48.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:57:48.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:57:48.659 [DEBUG] [Thread-127814] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:57:48.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:57:48.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:57:48.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:57:48.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:57:30', tmtdew=17.1, humidity=31.67, cloud=0.0, wind=23.1, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:57:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:57:48.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-28T14:57:48.754 [DEBUG] [Thread-127817] [transport.py] [_log()] starting thread (client mode): 0x2e3601f0
2025-09-28T14:57:48.755 [DEBUG] [Thread-127817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:57:48.769 [DEBUG] [Thread-127817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:57:48.769 [INFO] [Thread-127817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:57:48.777 [DEBUG] [Thread-127817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:57:48.777 [DEBUG] [Thread-127817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] client lang: <none>
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] server lang: <none>
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] kex follows: False
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] Compression: none
2025-09-28T14:57:48.778 [DEBUG] [Thread-127817] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:57:48.839 [DEBUG] [Thread-127817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:57:48.839 [DEBUG] [Thread-127817] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:57:48.840 [DEBUG] [Thread-127817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:57:48.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:57:48.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:57:48.895 [DEBUG] [Thread-127817] [transport.py] [_log()] userauth is OK
2025-09-28T14:57:48.896 [DEBUG] [Thread-127817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:57:48.896 [DEBUG] [Thread-127817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:57:48.896 [DEBUG] [Thread-127817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:57:48.896 [DEBUG] [Thread-127817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:57:48.915 [INFO] [Thread-127817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:57:48.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-28T14:57:48.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:57:49.941 [DEBUG] [Thread-127817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:57:49.941 [DEBUG] [Thread-127817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:57:49.989 [DEBUG] [Thread-127817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:57:49.989 [DEBUG] [Thread-127817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:57:49.998 [DEBUG] [Thread-127817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:57:50.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:57:50.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-28T14:57:50.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') -> 00000000
2025-09-28T14:57:50.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:57:50.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:57:50.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:57:50.033 [DEBUG] [Thread-127817] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:58:00.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:58:00.036 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:58:00.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-28T14:58:00.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 57, 30), 17.1, 31.67, 0.0, 23.1, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:58:00.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:57:30
2025-09-28T14:58:00.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:58:00.867 [DEBUG] [Thread-127819] [transport.py] [_log()] starting thread (client mode): 0x2e34b910
2025-09-28T14:58:00.867 [DEBUG] [Thread-127819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:58:00.886 [DEBUG] [Thread-127819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:58:00.886 [INFO] [Thread-127819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:58:00.889 [DEBUG] [Thread-127819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:58:00.889 [DEBUG] [Thread-127819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:58:00.889 [DEBUG] [Thread-127819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:58:00.889 [DEBUG] [Thread-127819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] client lang: <none>
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] server lang: <none>
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] kex follows: False
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] Compression: none
2025-09-28T14:58:00.890 [DEBUG] [Thread-127819] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:58:00.908 [DEBUG] [Thread-127819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:58:00.908 [DEBUG] [Thread-127819] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:58:00.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:58:00.910 [DEBUG] [Thread-127819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:58:00.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:58:00.912 [DEBUG] [Thread-127819] [transport.py] [_log()] userauth is OK
2025-09-28T14:58:00.912 [DEBUG] [Thread-127819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:58:00.912 [DEBUG] [Thread-127819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:58:00.913 [DEBUG] [Thread-127819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:58:00.913 [DEBUG] [Thread-127819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:58:00.945 [INFO] [Thread-127819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:58:00.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:58:01.322 [DEBUG] [Thread-127821 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:01.586 [DEBUG] [Thread-127819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:58:01.586 [DEBUG] [Thread-127819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:58:01.587 [DEBUG] [Thread-127819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:58:01.627 [DEBUG] [Thread-127819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:58:01.627 [DEBUG] [Thread-127819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:58:01.631 [DEBUG] [Thread-127819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:58:01.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:58:01.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:58:01.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:58:01.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:58:01.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:58:01.653 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:58:01.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:58:01.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:58:01.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:58:01.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.539666 -999.00  +18.90  19.14     35   +3.30 1 1 1 1 1   888    0 14.59 -44.63 ----- 19.1 19.1 210.8 23.9 24.2 -27.2 23.4 -26.0 24.7 -27.4 25.9 -27.9
2025-09-28T14:58:01.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:58:01.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:58:01.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.539666
2025-09-28T14:58:01.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:58:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:58:01.655 [DEBUG] [Thread-127819] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:58:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:58:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:58:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:58:01.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:57:30', tmtdew=17.1, humidity=31.67, cloud=0.0, wind=23.1, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:57:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:58:01.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-28T14:58:01.751 [DEBUG] [Thread-127823] [transport.py] [_log()] starting thread (client mode): 0x2e3f9ba0
2025-09-28T14:58:01.751 [DEBUG] [Thread-127823] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:58:01.765 [DEBUG] [Thread-127823] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T14:58:01.765 [INFO] [Thread-127823] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T14:58:01.772 [DEBUG] [Thread-127823] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] client lang: <none>
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] server lang: <none>
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] kex follows: False
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:58:01.773 [DEBUG] [Thread-127823] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:58:01.774 [DEBUG] [Thread-127823] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:58:01.774 [DEBUG] [Thread-127823] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:58:01.774 [DEBUG] [Thread-127823] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:58:01.774 [DEBUG] [Thread-127823] [transport.py] [_log()] Compression: none
2025-09-28T14:58:01.774 [DEBUG] [Thread-127823] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:58:01.838 [DEBUG] [Thread-127823] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:58:01.839 [DEBUG] [Thread-127823] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:58:01.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T14:58:01.839 [DEBUG] [Thread-127823] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T14:58:01.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:58:01.895 [DEBUG] [Thread-127823] [transport.py] [_log()] userauth is OK
2025-09-28T14:58:01.895 [DEBUG] [Thread-127823] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:58:01.895 [DEBUG] [Thread-127823] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:58:01.895 [DEBUG] [Thread-127823] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T14:58:01.895 [DEBUG] [Thread-127823] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:58:01.914 [INFO] [Thread-127823] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:58:01.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-28T14:58:01.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:58:02.976 [DEBUG] [Thread-127823] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:58:02.977 [DEBUG] [Thread-127823] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:58:03.024 [DEBUG] [Thread-127823] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:58:03.024 [DEBUG] [Thread-127823] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:58:03.033 [DEBUG] [Thread-127823] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:58:03.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:58:03.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')
2025-09-28T14:58:03.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T14:58:03.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:58:03.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:58:03.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:58:03.068 [DEBUG] [Thread-127823] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:58:07.576 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:07.577 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:13.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T14:58:13.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T14:58:13.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-28T14:58:13.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 14, 58, 2), 17.01, 31.85, 0.0, 23.52, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T14:58:13.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 14:58:02
2025-09-28T14:58:13.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T14:58:13.913 [DEBUG] [Thread-127825] [transport.py] [_log()] starting thread (client mode): 0x2b96cdc0
2025-09-28T14:58:13.913 [DEBUG] [Thread-127825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T14:58:13.933 [DEBUG] [Thread-127825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T14:58:13.933 [INFO] [Thread-127825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] client lang: <none>
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] server lang: <none>
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] kex follows: False
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] Compression: none
2025-09-28T14:58:13.936 [DEBUG] [Thread-127825] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T14:58:13.952 [DEBUG] [Thread-127825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T14:58:13.952 [DEBUG] [Thread-127825] [transport.py] [_log()] Switch to new keys ...
2025-09-28T14:58:13.952 [DEBUG] [Thread-127825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T14:58:13.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T14:58:13.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T14:58:13.953 [DEBUG] [Thread-127825] [transport.py] [_log()] userauth is OK
2025-09-28T14:58:13.953 [DEBUG] [Thread-127825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T14:58:13.953 [DEBUG] [Thread-127825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T14:58:13.953 [DEBUG] [Thread-127825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T14:58:13.953 [DEBUG] [Thread-127825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T14:58:13.962 [INFO] [Thread-127825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T14:58:13.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T14:58:14.602 [DEBUG] [Thread-127825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T14:58:14.602 [DEBUG] [Thread-127825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T14:58:14.602 [DEBUG] [Thread-127825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T14:58:14.643 [DEBUG] [Thread-127825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T14:58:14.643 [DEBUG] [Thread-127825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T14:58:14.645 [DEBUG] [Thread-127825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T14:58:14.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T14:58:14.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T14:58:14.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T14:58:14.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T14:58:14.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T14:58:14.663 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T14:58:14.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.540013 -999.00  +18.60  15.52     35   +3.20 1 1 1 1 1   888    0 14.20 -48.23 ----- 15.5 15.5 217.8 24.1 24.2 -27.3 23.3 -27.2 24.8 -25.8 26.0 -27.6
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.540013
2025-09-28T14:58:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T14:58:14.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T14:58:14.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T14:58:14.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T14:58:14.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T14:58:14.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T14:58:02', tmtdew=17.01, humidity=31.85, cloud=0.0, wind=23.52, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T12:57:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T14:58:14.664 [DEBUG] [Thread-127825] [transport.py] [_log()] EOF in transport thread
2025-09-28T14:58:14.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-28T14:58:16.350 [DEBUG] [Thread-127828 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:16.407 [DEBUG] [Thread-127829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:31.387 [DEBUG] [Thread-127830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:58:46.422 [DEBUG] [Thread-127831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:01.449 [DEBUG] [Thread-127832 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:07.720 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:07.720 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:16.442 [DEBUG] [Thread-127833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:16.480 [DEBUG] [Thread-127834 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:31.509 [DEBUG] [Thread-127835 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T14:59:46.539 [DEBUG] [Thread-127836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:01.569 [DEBUG] [Thread-127837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:07.863 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:07.864 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:16.475 [DEBUG] [Thread-127838 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:16.599 [DEBUG] [Thread-127839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:27.706 [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-28T15:00:31.635 [DEBUG] [Thread-127840 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:37.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:00:37.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:00:37.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-28T15:00:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 0, 10), 16.8, 32.43, 0.0, 22.55, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:00:38.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:00:10
2025-09-28T15:00:38.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:00:38.577 [DEBUG] [Thread-127841] [transport.py] [_log()] starting thread (client mode): 0x2e3dc970
2025-09-28T15:00:38.577 [DEBUG] [Thread-127841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:00:38.597 [DEBUG] [Thread-127841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:00:38.597 [INFO] [Thread-127841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:00:38.600 [DEBUG] [Thread-127841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:00:38.600 [DEBUG] [Thread-127841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] client lang: <none>
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] server lang: <none>
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] kex follows: False
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] Compression: none
2025-09-28T15:00:38.601 [DEBUG] [Thread-127841] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:00:38.617 [DEBUG] [Thread-127841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:00:38.618 [DEBUG] [Thread-127841] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:00:38.618 [DEBUG] [Thread-127841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:00:38.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:00:38.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:00:38.621 [DEBUG] [Thread-127841] [transport.py] [_log()] userauth is OK
2025-09-28T15:00:38.621 [DEBUG] [Thread-127841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:00:38.621 [DEBUG] [Thread-127841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:00:38.621 [DEBUG] [Thread-127841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:00:38.621 [DEBUG] [Thread-127841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:00:38.645 [INFO] [Thread-127841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:00:38.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:00:39.197 [DEBUG] [Thread-127841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:00:39.197 [DEBUG] [Thread-127841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:00:39.197 [DEBUG] [Thread-127841] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:00:39.238 [DEBUG] [Thread-127841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:00:39.238 [DEBUG] [Thread-127841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:00:39.241 [DEBUG] [Thread-127841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:00:39.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:00:39.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:00:39.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:00:39.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:00:39.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:00:39.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:00:39.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.541749 -999.00  +19.40  11.16     36   +4.00 1 1 1 1 1   888    0 14.80 -34.79 ----- 11.2 11.2 199.2 15.8 24.6 -26.1 23.6 -24.9 25.1 -24.5 26.3 -26.5
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:00:39.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.541749
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:00:39.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:00:10', tmtdew=16.8, humidity=32.43, cloud=0.0, wind=22.55, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:00:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:00:39.261 [DEBUG] [Thread-127841] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:00:39.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-28T15:00:39.347 [DEBUG] [Thread-127844] [transport.py] [_log()] starting thread (client mode): 0x2e38ee30
2025-09-28T15:00:39.347 [DEBUG] [Thread-127844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:00:39.362 [DEBUG] [Thread-127844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:00:39.362 [INFO] [Thread-127844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] client lang: <none>
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] server lang: <none>
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] kex follows: False
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] Compression: none
2025-09-28T15:00:39.370 [DEBUG] [Thread-127844] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:00:39.427 [DEBUG] [Thread-127844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:00:39.427 [DEBUG] [Thread-127844] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:00:39.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:00:39.428 [DEBUG] [Thread-127844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:00:39.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:00:39.489 [DEBUG] [Thread-127844] [transport.py] [_log()] userauth is OK
2025-09-28T15:00:39.489 [DEBUG] [Thread-127844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:00:39.489 [DEBUG] [Thread-127844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:00:39.489 [DEBUG] [Thread-127844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:00:39.489 [DEBUG] [Thread-127844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:00:39.502 [INFO] [Thread-127844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:00:39.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-28T15:00:39.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:00:40.508 [DEBUG] [Thread-127844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:00:40.508 [DEBUG] [Thread-127844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:00:40.556 [DEBUG] [Thread-127844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:00:40.556 [DEBUG] [Thread-127844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:00:40.564 [DEBUG] [Thread-127844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:00:40.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:00:40.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-28T15:00:40.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-28T15:00:40.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:00:40.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:00:40.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:00:40.596 [DEBUG] [Thread-127844] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:00:46.664 [DEBUG] [Thread-127846 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:00:50.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:00:50.598 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:00:50.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-28T15:00:51.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 0, 42), 16.95, 31.93, 0.0, 23.55, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:00:51.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:00:42
2025-09-28T15:00:51.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:00:51.457 [DEBUG] [Thread-127847] [transport.py] [_log()] starting thread (client mode): 0x2e3dee60
2025-09-28T15:00:51.457 [DEBUG] [Thread-127847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:00:51.480 [DEBUG] [Thread-127847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:00:51.481 [INFO] [Thread-127847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] client lang: <none>
2025-09-28T15:00:51.482 [DEBUG] [Thread-127847] [transport.py] [_log()] server lang: <none>
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] kex follows: False
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] Compression: none
2025-09-28T15:00:51.483 [DEBUG] [Thread-127847] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:00:51.492 [DEBUG] [Thread-127847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:00:51.493 [DEBUG] [Thread-127847] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:00:51.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:00:51.493 [DEBUG] [Thread-127847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:00:51.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:00:51.495 [DEBUG] [Thread-127847] [transport.py] [_log()] userauth is OK
2025-09-28T15:00:51.495 [DEBUG] [Thread-127847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:00:51.496 [DEBUG] [Thread-127847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:00:51.496 [DEBUG] [Thread-127847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:00:51.496 [DEBUG] [Thread-127847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:00:51.519 [INFO] [Thread-127847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:00:51.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:00:52.174 [DEBUG] [Thread-127847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:00:52.174 [DEBUG] [Thread-127847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:00:52.174 [DEBUG] [Thread-127847] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:00:52.215 [DEBUG] [Thread-127847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:00:52.215 [DEBUG] [Thread-127847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:00:52.217 [DEBUG] [Thread-127847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:00:52.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:00:52.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:00:52.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:00:52.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:00:52.236 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:00:52.239 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:00:52.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:00:52.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:00:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:00:52.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542096 -999.00  +19.40  12.90     35   +3.70 1 1 1 1 1   888    0 14.96 -29.65 ----- 12.9 12.9 204.4 18.8 24.5 -26.6 23.7 -26.2 25.0 -25.8 26.2 -27.5
2025-09-28T15:00:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:00:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:00:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542096
2025-09-28T15:00:52.240 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:00:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:00:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:00:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:00:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:00:52.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:00:42', tmtdew=16.95, humidity=31.93, cloud=0.0, wind=23.55, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:00:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:00:52.241 [DEBUG] [Thread-127847] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:00:52.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-28T15:00:52.337 [DEBUG] [Thread-127850] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-28T15:00:52.337 [DEBUG] [Thread-127850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:00:52.352 [DEBUG] [Thread-127850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:00:52.352 [INFO] [Thread-127850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:00:52.359 [DEBUG] [Thread-127850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:00:52.359 [DEBUG] [Thread-127850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] client lang: <none>
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] server lang: <none>
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] kex follows: False
2025-09-28T15:00:52.360 [DEBUG] [Thread-127850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] Compression: none
2025-09-28T15:00:52.361 [DEBUG] [Thread-127850] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:00:52.415 [DEBUG] [Thread-127850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:00:52.416 [DEBUG] [Thread-127850] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:00:52.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:00:52.417 [DEBUG] [Thread-127850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:00:52.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:00:52.472 [DEBUG] [Thread-127850] [transport.py] [_log()] userauth is OK
2025-09-28T15:00:52.472 [DEBUG] [Thread-127850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:00:52.472 [DEBUG] [Thread-127850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:00:52.472 [DEBUG] [Thread-127850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:00:52.472 [DEBUG] [Thread-127850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:00:52.490 [INFO] [Thread-127850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:00:52.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-28T15:00:52.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:00:53.504 [DEBUG] [Thread-127850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:00:53.504 [DEBUG] [Thread-127850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:00:53.552 [DEBUG] [Thread-127850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:00:53.552 [DEBUG] [Thread-127850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:00:53.560 [DEBUG] [Thread-127850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:00:53.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:00:53.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-28T15:00:53.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-28T15:00:53.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:00:53.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:00:53.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:00:53.593 [DEBUG] [Thread-127850] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:01.709 [DEBUG] [Thread-127852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:03.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:01:03.596 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:01:03.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-28T15:01:04.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 0, 42), 16.95, 31.93, 0.0, 23.55, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:01:04.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:00:42
2025-09-28T15:01:04.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:01:04.459 [DEBUG] [Thread-127853] [transport.py] [_log()] starting thread (client mode): 0x30ddf370
2025-09-28T15:01:04.459 [DEBUG] [Thread-127853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:04.479 [DEBUG] [Thread-127853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:01:04.479 [INFO] [Thread-127853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:01:04.482 [DEBUG] [Thread-127853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] Compression: none
2025-09-28T15:01:04.483 [DEBUG] [Thread-127853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:04.503 [DEBUG] [Thread-127853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:04.503 [DEBUG] [Thread-127853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:04.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:01:04.504 [DEBUG] [Thread-127853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:01:04.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:04.507 [DEBUG] [Thread-127853] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:04.507 [DEBUG] [Thread-127853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:04.507 [DEBUG] [Thread-127853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:04.507 [DEBUG] [Thread-127853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:01:04.507 [DEBUG] [Thread-127853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:04.530 [INFO] [Thread-127853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:04.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:05.142 [DEBUG] [Thread-127853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:05.142 [DEBUG] [Thread-127853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:05.142 [DEBUG] [Thread-127853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:01:05.183 [DEBUG] [Thread-127853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:05.183 [DEBUG] [Thread-127853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:05.186 [DEBUG] [Thread-127853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:05.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:05.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:01:05.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:01:05.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:01:05.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:05.207 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:01:05.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542096 -999.00  +19.40  12.90     35   +3.70 1 1 1 1 1   888    0 14.96 -29.65 ----- 12.9 12.9 204.4 18.8 24.5 -26.6 23.7 -26.2 25.0 -25.8 26.2 -27.5
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:01:05.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542096
2025-09-28T15:01:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:01:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:01:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:01:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:01:05.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:01:05.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:00:42', tmtdew=16.95, humidity=31.93, cloud=0.0, wind=23.55, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:00:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:01:05.210 [DEBUG] [Thread-127853] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:05.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-28T15:01:05.307 [DEBUG] [Thread-127856] [transport.py] [_log()] starting thread (client mode): 0x28706080
2025-09-28T15:01:05.307 [DEBUG] [Thread-127856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:05.321 [DEBUG] [Thread-127856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:01:05.322 [INFO] [Thread-127856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:01:05.329 [DEBUG] [Thread-127856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:05.329 [DEBUG] [Thread-127856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:01:05.329 [DEBUG] [Thread-127856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:05.330 [DEBUG] [Thread-127856] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] Compression: none
2025-09-28T15:01:05.331 [DEBUG] [Thread-127856] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:05.386 [DEBUG] [Thread-127856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:05.387 [DEBUG] [Thread-127856] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:05.387 [DEBUG] [Thread-127856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:01:05.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:01:05.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:05.443 [DEBUG] [Thread-127856] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:05.443 [DEBUG] [Thread-127856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:05.443 [DEBUG] [Thread-127856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:05.444 [DEBUG] [Thread-127856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:01:05.444 [DEBUG] [Thread-127856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:05.458 [INFO] [Thread-127856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:05.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-28T15:01:05.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:06.471 [DEBUG] [Thread-127856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:06.471 [DEBUG] [Thread-127856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:06.519 [DEBUG] [Thread-127856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:06.519 [DEBUG] [Thread-127856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:06.528 [DEBUG] [Thread-127856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:06.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:06.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-28T15:01:06.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-28T15:01:06.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:06.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:06.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:06.563 [DEBUG] [Thread-127856] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:08.006 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:08.007 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:16.504 [DEBUG] [Thread-127858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:16.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:01:16.564 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:01:16.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-28T15:01:16.753 [DEBUG] [Thread-127859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:17.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 0, 42), 16.95, 31.93, 0.0, 23.55, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:01:17.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:00:42
2025-09-28T15:01:17.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:01:17.470 [DEBUG] [Thread-127860] [transport.py] [_log()] starting thread (client mode): 0x2e38f250
2025-09-28T15:01:17.470 [DEBUG] [Thread-127860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:17.490 [DEBUG] [Thread-127860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:01:17.490 [INFO] [Thread-127860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] Compression: none
2025-09-28T15:01:17.493 [DEBUG] [Thread-127860] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:17.508 [DEBUG] [Thread-127860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:17.508 [DEBUG] [Thread-127860] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:17.508 [DEBUG] [Thread-127860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:01:17.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:01:17.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:17.509 [DEBUG] [Thread-127860] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:17.509 [DEBUG] [Thread-127860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:17.509 [DEBUG] [Thread-127860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:17.509 [DEBUG] [Thread-127860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:01:17.509 [DEBUG] [Thread-127860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:17.518 [INFO] [Thread-127860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:17.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:18.255 [DEBUG] [Thread-127860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:18.256 [DEBUG] [Thread-127860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:18.256 [DEBUG] [Thread-127860] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:01:18.297 [DEBUG] [Thread-127860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:18.297 [DEBUG] [Thread-127860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:18.299 [DEBUG] [Thread-127860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:18.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:18.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:01:18.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:01:18.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:01:18.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:18.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:01:18.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542096 -999.00  +19.40  12.90     35   +3.70 1 1 1 1 1   888    0 14.96 -29.65 ----- 12.9 12.9 204.4 18.8 24.5 -26.6 23.7 -26.2 25.0 -25.8 26.2 -27.5
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542096
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:01:18.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:01:18.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:01:18.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:01:18.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:00:42', tmtdew=16.95, humidity=31.93, cloud=0.0, wind=23.55, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:00:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:01:18.319 [DEBUG] [Thread-127860] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:18.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-28T15:01:18.402 [DEBUG] [Thread-127863] [transport.py] [_log()] starting thread (client mode): 0x2e38d480
2025-09-28T15:01:18.402 [DEBUG] [Thread-127863] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:18.417 [DEBUG] [Thread-127863] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:01:18.417 [INFO] [Thread-127863] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] Compression: none
2025-09-28T15:01:18.425 [DEBUG] [Thread-127863] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:18.482 [DEBUG] [Thread-127863] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:18.482 [DEBUG] [Thread-127863] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:18.483 [DEBUG] [Thread-127863] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:01:18.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:01:18.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:18.540 [DEBUG] [Thread-127863] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:18.540 [DEBUG] [Thread-127863] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:18.540 [DEBUG] [Thread-127863] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:18.540 [DEBUG] [Thread-127863] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:01:18.540 [DEBUG] [Thread-127863] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:18.553 [INFO] [Thread-127863] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:18.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-28T15:01:18.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:19.562 [DEBUG] [Thread-127863] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:19.562 [DEBUG] [Thread-127863] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:19.776 [DEBUG] [Thread-127863] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:19.776 [DEBUG] [Thread-127863] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:19.784 [DEBUG] [Thread-127863] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:19.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:19.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-28T15:01:19.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-28T15:01:19.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:19.809 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:19.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:19.818 [DEBUG] [Thread-127863] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:29.819 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:01:29.820 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:01:29.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-28T15:01:30.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 1, 14), 17.02, 31.79, 0.0, 19.48, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:01:30.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:01:14
2025-09-28T15:01:30.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:01:30.684 [DEBUG] [Thread-127865] [transport.py] [_log()] starting thread (client mode): 0x2e3fac80
2025-09-28T15:01:30.684 [DEBUG] [Thread-127865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:30.708 [DEBUG] [Thread-127865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:01:30.708 [INFO] [Thread-127865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:01:30.709 [DEBUG] [Thread-127865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] Compression: none
2025-09-28T15:01:30.710 [DEBUG] [Thread-127865] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:30.719 [DEBUG] [Thread-127865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:30.719 [DEBUG] [Thread-127865] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:30.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:01:30.720 [DEBUG] [Thread-127865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:01:30.720 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:30.721 [DEBUG] [Thread-127865] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:30.721 [DEBUG] [Thread-127865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:30.721 [DEBUG] [Thread-127865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:30.721 [DEBUG] [Thread-127865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:01:30.721 [DEBUG] [Thread-127865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:30.741 [INFO] [Thread-127865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:30.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:31.334 [DEBUG] [Thread-127865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:31.334 [DEBUG] [Thread-127865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:31.335 [DEBUG] [Thread-127865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:01:31.376 [DEBUG] [Thread-127865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:31.376 [DEBUG] [Thread-127865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:31.379 [DEBUG] [Thread-127865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:31.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:31.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:01:31.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:01:31.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:01:31.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:31.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:01:31.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:31.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:31.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:01:31.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542444 -999.00  +19.50  14.48     35   +3.80 1 1 1 1 1   888    0 15.01 -23.69 ----- 14.5 14.5 187.2 22.1 24.6 -26.5 23.7 -25.7 25.1 -25.3 26.3 -26.8
2025-09-28T15:01:31.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:01:31.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:01:31.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542444
2025-09-28T15:01:31.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:01:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:01:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:01:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:01:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:01:31.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:01:14', tmtdew=17.02, humidity=31.79, cloud=0.0, wind=19.48, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:01:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:01:31.409 [DEBUG] [Thread-127865] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:31.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-28T15:01:31.507 [DEBUG] [Thread-127868] [transport.py] [_log()] starting thread (client mode): 0x2b96f0a0
2025-09-28T15:01:31.507 [DEBUG] [Thread-127868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:31.524 [DEBUG] [Thread-127868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:01:31.524 [INFO] [Thread-127868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:31.533 [DEBUG] [Thread-127868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:31.534 [DEBUG] [Thread-127868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:31.535 [DEBUG] [Thread-127868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:31.535 [DEBUG] [Thread-127868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:31.535 [DEBUG] [Thread-127868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:31.535 [DEBUG] [Thread-127868] [transport.py] [_log()] Compression: none
2025-09-28T15:01:31.535 [DEBUG] [Thread-127868] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:31.592 [DEBUG] [Thread-127868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:31.593 [DEBUG] [Thread-127868] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:31.593 [DEBUG] [Thread-127868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:01:31.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:01:31.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:31.652 [DEBUG] [Thread-127868] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:31.652 [DEBUG] [Thread-127868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:31.652 [DEBUG] [Thread-127868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:31.652 [DEBUG] [Thread-127868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:01:31.652 [DEBUG] [Thread-127868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:31.675 [INFO] [Thread-127868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:31.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-28T15:01:31.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:31.779 [DEBUG] [Thread-127870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:32.657 [DEBUG] [Thread-127868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:32.658 [DEBUG] [Thread-127868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:32.705 [DEBUG] [Thread-127868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:32.705 [DEBUG] [Thread-127868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:32.715 [DEBUG] [Thread-127868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:32.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:32.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-28T15:01:32.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-28T15:01:32.742 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:32.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:32.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:32.750 [DEBUG] [Thread-127868] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:42.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:01:42.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:01:42.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-28T15:01:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 1, 14), 17.02, 31.79, 0.0, 19.48, 18.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:01:43.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:01:14
2025-09-28T15:01:43.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:01:43.603 [DEBUG] [Thread-127871] [transport.py] [_log()] starting thread (client mode): 0x2e3616c0
2025-09-28T15:01:43.603 [DEBUG] [Thread-127871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:43.624 [DEBUG] [Thread-127871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:01:43.624 [INFO] [Thread-127871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:01:43.627 [DEBUG] [Thread-127871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:43.628 [DEBUG] [Thread-127871] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] Compression: none
2025-09-28T15:01:43.629 [DEBUG] [Thread-127871] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:43.647 [DEBUG] [Thread-127871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:43.647 [DEBUG] [Thread-127871] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:43.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:01:43.649 [DEBUG] [Thread-127871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:01:43.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:43.692 [DEBUG] [Thread-127871] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:43.693 [DEBUG] [Thread-127871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:43.693 [DEBUG] [Thread-127871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:43.693 [DEBUG] [Thread-127871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:01:43.693 [DEBUG] [Thread-127871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:43.708 [INFO] [Thread-127871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:43.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:44.442 [DEBUG] [Thread-127871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:44.442 [DEBUG] [Thread-127871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:44.442 [DEBUG] [Thread-127871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:01:44.483 [DEBUG] [Thread-127871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:44.483 [DEBUG] [Thread-127871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:44.486 [DEBUG] [Thread-127871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:44.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:44.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:01:44.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:01:44.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:01:44.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:44.515 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:01:44.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:44.515 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:44.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:01:44.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542444 -999.00  +19.50  14.48     35   +3.80 1 1 1 1 1   888    0 15.01 -23.69 ----- 14.5 14.5 187.2 22.1 24.6 -26.5 23.7 -25.7 25.1 -25.3 26.3 -26.8
2025-09-28T15:01:44.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:01:44.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:01:44.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542444
2025-09-28T15:01:44.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:01:44.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:01:44.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:01:44.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:01:44.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:01:44.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:01:14', tmtdew=17.02, humidity=31.79, cloud=0.0, wind=19.48, temperature=18.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:01:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:01:44.518 [DEBUG] [Thread-127871] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:44.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-28T15:01:44.615 [DEBUG] [Thread-127874] [transport.py] [_log()] starting thread (client mode): 0x2e3fa740
2025-09-28T15:01:44.615 [DEBUG] [Thread-127874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:44.630 [DEBUG] [Thread-127874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:01:44.630 [INFO] [Thread-127874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:01:44.638 [DEBUG] [Thread-127874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:44.638 [DEBUG] [Thread-127874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:44.639 [DEBUG] [Thread-127874] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] Compression: none
2025-09-28T15:01:44.640 [DEBUG] [Thread-127874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:44.695 [DEBUG] [Thread-127874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:44.696 [DEBUG] [Thread-127874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:44.696 [DEBUG] [Thread-127874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:01:44.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:01:44.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:44.752 [DEBUG] [Thread-127874] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:44.752 [DEBUG] [Thread-127874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:44.752 [DEBUG] [Thread-127874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:44.752 [DEBUG] [Thread-127874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:01:44.752 [DEBUG] [Thread-127874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:44.771 [INFO] [Thread-127874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:44.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-28T15:01:44.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:45.769 [DEBUG] [Thread-127874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:45.769 [DEBUG] [Thread-127874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:45.817 [DEBUG] [Thread-127874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:45.817 [DEBUG] [Thread-127874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:45.826 [DEBUG] [Thread-127874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:45.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:45.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')
2025-09-28T15:01:45.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') -> 00000000
2025-09-28T15:01:45.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:45.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:45.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:45.861 [DEBUG] [Thread-127874] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:46.830 [DEBUG] [Thread-127876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:01:55.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:01:55.863 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:01:55.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-28T15:01:56.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 1, 46), 17.12, 31.5, 0.0, 21.67, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:01:56.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:01:46
2025-09-28T15:01:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:01:56.755 [DEBUG] [Thread-127877] [transport.py] [_log()] starting thread (client mode): 0x2e38d480
2025-09-28T15:01:56.755 [DEBUG] [Thread-127877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:56.776 [DEBUG] [Thread-127877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:01:56.776 [INFO] [Thread-127877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] Compression: none
2025-09-28T15:01:56.779 [DEBUG] [Thread-127877] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:56.796 [DEBUG] [Thread-127877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:56.796 [DEBUG] [Thread-127877] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:56.796 [DEBUG] [Thread-127877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:01:56.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:01:56.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:56.797 [DEBUG] [Thread-127877] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:56.797 [DEBUG] [Thread-127877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:56.797 [DEBUG] [Thread-127877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:56.797 [DEBUG] [Thread-127877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:01:56.797 [DEBUG] [Thread-127877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:56.816 [INFO] [Thread-127877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:56.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:57.548 [DEBUG] [Thread-127877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:57.548 [DEBUG] [Thread-127877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:57.548 [DEBUG] [Thread-127877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:01:57.589 [DEBUG] [Thread-127877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:57.589 [DEBUG] [Thread-127877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:57.590 [DEBUG] [Thread-127877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:57.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01:57.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:01:57.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:01:57.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:57.600 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:01:57.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542444 -999.00  +19.50  14.48     35   +3.80 1 1 1 1 1   888    0 15.01 -23.69 ----- 14.5 14.5 187.2 22.1 24.6 -26.5 23.7 -25.7 25.1 -25.3 26.3 -26.8
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:01:57.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542444
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:01:57.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:01:46', tmtdew=17.12, humidity=31.5, cloud=0.0, wind=21.67, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:01:07.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:01:57.601 [DEBUG] [Thread-127877] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:01:57.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:01:57.686 [DEBUG] [Thread-127880] [transport.py] [_log()] starting thread (client mode): 0x2b96ee00
2025-09-28T15:01:57.686 [DEBUG] [Thread-127880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:01:57.702 [DEBUG] [Thread-127880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:01:57.702 [INFO] [Thread-127880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:01:57.709 [DEBUG] [Thread-127880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] client lang: <none>
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] server lang: <none>
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] kex follows: False
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] Compression: none
2025-09-28T15:01:57.710 [DEBUG] [Thread-127880] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:01:57.766 [DEBUG] [Thread-127880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:01:57.766 [DEBUG] [Thread-127880] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:01:57.766 [DEBUG] [Thread-127880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:01:57.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:01:57.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:01:57.824 [DEBUG] [Thread-127880] [transport.py] [_log()] userauth is OK
2025-09-28T15:01:57.825 [DEBUG] [Thread-127880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:01:57.825 [DEBUG] [Thread-127880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:01:57.825 [DEBUG] [Thread-127880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:01:57.825 [DEBUG] [Thread-127880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:01:57.840 [INFO] [Thread-127880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:01:57.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-28T15:01:57.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:01:58.839 [DEBUG] [Thread-127880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:01:58.840 [DEBUG] [Thread-127880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:01:58.887 [DEBUG] [Thread-127880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:01:58.887 [DEBUG] [Thread-127880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:01:58.897 [DEBUG] [Thread-127880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:01:58.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:01: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')
2025-09-28T15:01:58.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-28T15:01:58.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:01:58.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:01:58.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:01:58.931 [DEBUG] [Thread-127880] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:01.859 [DEBUG] [Thread-127882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:08.148 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:08.149 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:08.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:02:08.934 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:02:08.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-28T15:02:09.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 1, 46), 17.12, 31.5, 0.0, 21.67, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:02:09.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:01:46
2025-09-28T15:02:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:02:09.794 [DEBUG] [Thread-127883] [transport.py] [_log()] starting thread (client mode): 0x2b96f520
2025-09-28T15:02:09.794 [DEBUG] [Thread-127883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:09.814 [DEBUG] [Thread-127883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:02:09.814 [INFO] [Thread-127883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:09.817 [DEBUG] [Thread-127883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:09.818 [DEBUG] [Thread-127883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:09.818 [DEBUG] [Thread-127883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:09.818 [DEBUG] [Thread-127883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:09.818 [DEBUG] [Thread-127883] [transport.py] [_log()] Compression: none
2025-09-28T15:02:09.818 [DEBUG] [Thread-127883] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:09.835 [DEBUG] [Thread-127883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:09.835 [DEBUG] [Thread-127883] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:09.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:02:09.836 [DEBUG] [Thread-127883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:02:09.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:09.839 [DEBUG] [Thread-127883] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:09.839 [DEBUG] [Thread-127883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:09.839 [DEBUG] [Thread-127883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:09.839 [DEBUG] [Thread-127883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:02:09.839 [DEBUG] [Thread-127883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:09.862 [INFO] [Thread-127883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:09.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:10.474 [DEBUG] [Thread-127883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:10.474 [DEBUG] [Thread-127883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:10.474 [DEBUG] [Thread-127883] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:02:10.515 [DEBUG] [Thread-127883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:10.516 [DEBUG] [Thread-127883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:10.519 [DEBUG] [Thread-127883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:10.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:10.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:02:10.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:02:10.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:02:10.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:10.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:02:10.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:10.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:10.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:02:10.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542791 -999.00  +19.50  17.01     35   +4.00 1 1 1 1 1   888    0 15.06 -18.67 ----- 17.0 17.0 210.2 21.8 24.8 -27.3 23.7 -25.3 25.2 -25.3 26.4 -26.7
2025-09-28T15:02:10.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:02:10.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:02:10.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542791
2025-09-28T15:02:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:02:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:02:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:02:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:02:10.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:02:10.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:01:46', tmtdew=17.12, humidity=31.5, cloud=0.0, wind=21.67, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:01:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:02:10.546 [DEBUG] [Thread-127883] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:10.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-28T15:02:10.641 [DEBUG] [Thread-127886] [transport.py] [_log()] starting thread (client mode): 0x2b9bb280
2025-09-28T15:02:10.641 [DEBUG] [Thread-127886] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:10.656 [DEBUG] [Thread-127886] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:02:10.656 [INFO] [Thread-127886] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:10.664 [DEBUG] [Thread-127886] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] Compression: none
2025-09-28T15:02:10.665 [DEBUG] [Thread-127886] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:10.726 [DEBUG] [Thread-127886] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:10.726 [DEBUG] [Thread-127886] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:10.727 [DEBUG] [Thread-127886] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:02:10.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:02:10.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:10.783 [DEBUG] [Thread-127886] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:10.783 [DEBUG] [Thread-127886] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:10.784 [DEBUG] [Thread-127886] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:10.784 [DEBUG] [Thread-127886] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:02:10.784 [DEBUG] [Thread-127886] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:10.803 [INFO] [Thread-127886] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:10.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-28T15:02:10.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:11.813 [DEBUG] [Thread-127886] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:11.813 [DEBUG] [Thread-127886] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:11.861 [DEBUG] [Thread-127886] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:11.862 [DEBUG] [Thread-127886] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:11.871 [DEBUG] [Thread-127886] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:11.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:11.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-28T15:02:11.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-28T15:02:11.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:11.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:11.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:11.906 [DEBUG] [Thread-127886] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:16.566 [DEBUG] [Thread-127888 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:16.913 [DEBUG] [Thread-127889 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:21.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:02:21.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:02:21.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-28T15:02:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 2, 18), 17.09, 31.55, 0.0, 21.93, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:02:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:02:18
2025-09-28T15:02:22.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:02:22.765 [DEBUG] [Thread-127890] [transport.py] [_log()] starting thread (client mode): 0x2b9b8700
2025-09-28T15:02:22.765 [DEBUG] [Thread-127890] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:22.785 [DEBUG] [Thread-127890] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:02:22.785 [INFO] [Thread-127890] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:22.788 [DEBUG] [Thread-127890] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] Compression: none
2025-09-28T15:02:22.789 [DEBUG] [Thread-127890] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:22.810 [DEBUG] [Thread-127890] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:22.811 [DEBUG] [Thread-127890] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:22.812 [DEBUG] [Thread-127890] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:02:22.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:02:22.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:22.814 [DEBUG] [Thread-127890] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:22.814 [DEBUG] [Thread-127890] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:22.814 [DEBUG] [Thread-127890] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:22.814 [DEBUG] [Thread-127890] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:02:22.814 [DEBUG] [Thread-127890] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:22.835 [INFO] [Thread-127890] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:22.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:23.591 [DEBUG] [Thread-127890] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:23.591 [DEBUG] [Thread-127890] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:23.592 [DEBUG] [Thread-127890] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:02:23.632 [DEBUG] [Thread-127890] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:23.632 [DEBUG] [Thread-127890] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:23.635 [DEBUG] [Thread-127890] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:23.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:23.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:02:23.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:02:23.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:02:23.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:23.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:02:23.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.542791 -999.00  +19.50  17.01     35   +4.00 1 1 1 1 1   888    0 15.06 -18.67 ----- 17.0 17.0 210.2 21.8 24.8 -27.3 23.7 -25.3 25.2 -25.3 26.4 -26.7
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:02:23.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.542791
2025-09-28T15:02:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:02:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:02:23.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:02:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:02:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:02:23.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:02:18', tmtdew=17.09, humidity=31.55, cloud=0.0, wind=21.93, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:01:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:02:23.657 [DEBUG] [Thread-127890] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02: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-28T15:02:23.753 [DEBUG] [Thread-127893] [transport.py] [_log()] starting thread (client mode): 0x2b9ceda0
2025-09-28T15:02:23.753 [DEBUG] [Thread-127893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:23.768 [DEBUG] [Thread-127893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:02:23.768 [INFO] [Thread-127893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:02:23.775 [DEBUG] [Thread-127893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:23.775 [DEBUG] [Thread-127893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] Compression: none
2025-09-28T15:02:23.776 [DEBUG] [Thread-127893] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:23.834 [DEBUG] [Thread-127893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:23.835 [DEBUG] [Thread-127893] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:23.835 [DEBUG] [Thread-127893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:02:23.835 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:02:23.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:23.891 [DEBUG] [Thread-127893] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:23.891 [DEBUG] [Thread-127893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:23.891 [DEBUG] [Thread-127893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:23.891 [DEBUG] [Thread-127893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:02:23.891 [DEBUG] [Thread-127893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:23.909 [INFO] [Thread-127893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:23.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-28T15:02:23.910 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:24.954 [DEBUG] [Thread-127893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:24.954 [DEBUG] [Thread-127893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:25.002 [DEBUG] [Thread-127893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:25.002 [DEBUG] [Thread-127893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:25.011 [DEBUG] [Thread-127893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:25.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:25.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-28T15:02:25.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-28T15:02:25.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:25.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:25.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:25.045 [DEBUG] [Thread-127893] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:31.953 [DEBUG] [Thread-127895 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:35.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:02:35.048 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:02:35.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-28T15:02:35.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 2, 18), 17.09, 31.55, 0.0, 21.93, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:02:35.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:02:18
2025-09-28T15:02:35.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:02:35.887 [DEBUG] [Thread-127896] [transport.py] [_log()] starting thread (client mode): 0x2e3faf50
2025-09-28T15:02:35.887 [DEBUG] [Thread-127896] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:35.906 [DEBUG] [Thread-127896] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:02:35.906 [INFO] [Thread-127896] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:02:35.909 [DEBUG] [Thread-127896] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] Compression: none
2025-09-28T15:02:35.910 [DEBUG] [Thread-127896] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:35.926 [DEBUG] [Thread-127896] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:35.926 [DEBUG] [Thread-127896] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:35.927 [DEBUG] [Thread-127896] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:02:35.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:02:35.927 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:35.928 [DEBUG] [Thread-127896] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:35.929 [DEBUG] [Thread-127896] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:35.929 [DEBUG] [Thread-127896] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:35.929 [DEBUG] [Thread-127896] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:02:35.929 [DEBUG] [Thread-127896] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:35.946 [INFO] [Thread-127896] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:35.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:36.541 [DEBUG] [Thread-127896] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:36.542 [DEBUG] [Thread-127896] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:36.542 [DEBUG] [Thread-127896] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:02:36.583 [DEBUG] [Thread-127896] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:36.583 [DEBUG] [Thread-127896] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:36.585 [DEBUG] [Thread-127896] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:36.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:36.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:02:36.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:02:36.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:02:36.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:36.606 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:02:36.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:36.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:36.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:02:36.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543138 -999.00  +19.20  14.31     36   +4.00 1 1 1 1 1   888    0 14.98 -17.48 ----- 14.3 14.3 232.4 22.0 24.6 -28.0 23.7 -27.2 25.2 -26.8 26.4 -27.5
2025-09-28T15:02:36.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:02:36.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:02:36.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543138
2025-09-28T15:02:36.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:02:36.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:02:36.608 [DEBUG] [Thread-127896] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:36.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:02:36.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:02:36.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:02:36.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:02:18', tmtdew=17.09, humidity=31.55, cloud=0.0, wind=21.93, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:02:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:02:36.693 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:02:36.706 [DEBUG] [Thread-127899] [transport.py] [_log()] starting thread (client mode): 0x2e3dd900
2025-09-28T15:02:36.706 [DEBUG] [Thread-127899] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:36.720 [DEBUG] [Thread-127899] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:02:36.721 [INFO] [Thread-127899] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:36.728 [DEBUG] [Thread-127899] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:36.729 [DEBUG] [Thread-127899] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:36.729 [DEBUG] [Thread-127899] [transport.py] [_log()] Compression: none
2025-09-28T15:02:36.729 [DEBUG] [Thread-127899] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:36.785 [DEBUG] [Thread-127899] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:36.785 [DEBUG] [Thread-127899] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:36.785 [DEBUG] [Thread-127899] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:02:36.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:02:36.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:36.842 [DEBUG] [Thread-127899] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:36.843 [DEBUG] [Thread-127899] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:36.843 [DEBUG] [Thread-127899] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:36.843 [DEBUG] [Thread-127899] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:02:36.843 [DEBUG] [Thread-127899] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:36.862 [INFO] [Thread-127899] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:36.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-28T15:02:36.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:37.880 [DEBUG] [Thread-127899] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:37.880 [DEBUG] [Thread-127899] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:37.928 [DEBUG] [Thread-127899] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:37.928 [DEBUG] [Thread-127899] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:37.937 [DEBUG] [Thread-127899] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:37.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:37.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-28T15:02:37.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-28T15:02:37.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:37.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:37.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:37.971 [DEBUG] [Thread-127899] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:46.986 [DEBUG] [Thread-127901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:02:47.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:02:47.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:02:47.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-28T15:02:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 2, 18), 17.09, 31.55, 0.0, 21.93, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:02:48.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:02:18
2025-09-28T15:02:48.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:02:48.805 [DEBUG] [Thread-127902] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-28T15:02:48.805 [DEBUG] [Thread-127902] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:48.825 [DEBUG] [Thread-127902] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:02:48.825 [INFO] [Thread-127902] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:02:48.828 [DEBUG] [Thread-127902] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:48.828 [DEBUG] [Thread-127902] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:02:48.828 [DEBUG] [Thread-127902] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:48.828 [DEBUG] [Thread-127902] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:48.828 [DEBUG] [Thread-127902] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] Compression: none
2025-09-28T15:02:48.829 [DEBUG] [Thread-127902] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:48.847 [DEBUG] [Thread-127902] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:48.848 [DEBUG] [Thread-127902] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:48.848 [DEBUG] [Thread-127902] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:02:48.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:02:48.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:48.850 [DEBUG] [Thread-127902] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:48.850 [DEBUG] [Thread-127902] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:48.850 [DEBUG] [Thread-127902] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:48.851 [DEBUG] [Thread-127902] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:02:48.851 [DEBUG] [Thread-127902] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:48.868 [INFO] [Thread-127902] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:48.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:49.616 [DEBUG] [Thread-127902] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:49.616 [DEBUG] [Thread-127902] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:49.616 [DEBUG] [Thread-127902] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:02:49.657 [DEBUG] [Thread-127902] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:49.657 [DEBUG] [Thread-127902] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:49.661 [DEBUG] [Thread-127902] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:49.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:49.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:02:49.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:02:49.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:02:49.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:49.684 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:02:49.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:49.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:49.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:02:49.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543138 -999.00  +19.20  14.31     36   +4.00 1 1 1 1 1   888    0 14.98 -17.48 ----- 14.3 14.3 232.4 22.0 24.6 -28.0 23.7 -27.2 25.2 -26.8 26.4 -27.5
2025-09-28T15:02:49.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:02:49.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:02:49.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543138
2025-09-28T15:02:49.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:02:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:02:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:02:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:02:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:02:49.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:02:18', tmtdew=17.09, humidity=31.55, cloud=0.0, wind=21.93, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:02:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:02:49.686 [DEBUG] [Thread-127902] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:02:49.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-28T15:02:49.781 [DEBUG] [Thread-127905] [transport.py] [_log()] starting thread (client mode): 0x2e3fb970
2025-09-28T15:02:49.781 [DEBUG] [Thread-127905] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:02:49.795 [DEBUG] [Thread-127905] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:02:49.795 [INFO] [Thread-127905] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:02:49.803 [DEBUG] [Thread-127905] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:02:49.803 [DEBUG] [Thread-127905] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] client lang: <none>
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] server lang: <none>
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] kex follows: False
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] Compression: none
2025-09-28T15:02:49.804 [DEBUG] [Thread-127905] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:02:49.867 [DEBUG] [Thread-127905] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:02:49.867 [DEBUG] [Thread-127905] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:02:49.868 [DEBUG] [Thread-127905] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:02:49.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:02:49.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:02:49.926 [DEBUG] [Thread-127905] [transport.py] [_log()] userauth is OK
2025-09-28T15:02:49.927 [DEBUG] [Thread-127905] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:02:49.927 [DEBUG] [Thread-127905] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:02:49.927 [DEBUG] [Thread-127905] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:02:49.927 [DEBUG] [Thread-127905] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:02:49.945 [INFO] [Thread-127905] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:02:49.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-28T15:02:49.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:02:50.924 [DEBUG] [Thread-127905] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:02:50.924 [DEBUG] [Thread-127905] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:02:50.972 [DEBUG] [Thread-127905] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:02:50.972 [DEBUG] [Thread-127905] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:02:50.980 [DEBUG] [Thread-127905] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:02:50.989 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:02:50.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')
2025-09-28T15:02:50.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') -> 00000000
2025-09-28T15:02:51.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:02:51.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:02:51.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:02:51.015 [DEBUG] [Thread-127905] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:01.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:03:01.017 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:03:01.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-28T15:03:01.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 2, 50), 16.74, 32.73, 0.0, 24.38, 18.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:03:01.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:02:50
2025-09-28T15:03:01.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:03:01.885 [DEBUG] [Thread-127907] [transport.py] [_log()] starting thread (client mode): 0x2b9ceda0
2025-09-28T15:03:01.885 [DEBUG] [Thread-127907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:01.905 [DEBUG] [Thread-127907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:03:01.905 [INFO] [Thread-127907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:01.908 [DEBUG] [Thread-127907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:01.909 [DEBUG] [Thread-127907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:01.909 [DEBUG] [Thread-127907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:01.909 [DEBUG] [Thread-127907] [transport.py] [_log()] Compression: none
2025-09-28T15:03:01.909 [DEBUG] [Thread-127907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:01.923 [DEBUG] [Thread-127907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:01.924 [DEBUG] [Thread-127907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:01.924 [DEBUG] [Thread-127907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:03:01.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:03:01.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:01.925 [DEBUG] [Thread-127907] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:01.925 [DEBUG] [Thread-127907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:01.925 [DEBUG] [Thread-127907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:01.925 [DEBUG] [Thread-127907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:03:01.925 [DEBUG] [Thread-127907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:01.936 [INFO] [Thread-127907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:01.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:02.036 [DEBUG] [Thread-127909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:02.668 [DEBUG] [Thread-127907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:02.668 [DEBUG] [Thread-127907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:02.669 [DEBUG] [Thread-127907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:03:02.709 [DEBUG] [Thread-127907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:02.709 [DEBUG] [Thread-127907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:02.712 [DEBUG] [Thread-127907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:02.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:02.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:03:02.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:03:02.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:03:02.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:02.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:03:02.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543138 -999.00  +19.20  14.31     36   +4.00 1 1 1 1 1   888    0 14.98 -17.48 ----- 14.3 14.3 232.4 22.0 24.6 -28.0 23.7 -27.2 25.2 -26.8 26.4 -27.5
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:03:02.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543138
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:03:02.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:02:50', tmtdew=16.74, humidity=32.73, cloud=0.0, wind=24.38, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:02:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:03:02.735 [DEBUG] [Thread-127907] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:02.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-28T15:03:02.835 [DEBUG] [Thread-127911] [transport.py] [_log()] starting thread (client mode): 0x2b9ce350
2025-09-28T15:03:02.835 [DEBUG] [Thread-127911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:02.849 [DEBUG] [Thread-127911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:03:02.849 [INFO] [Thread-127911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:02.856 [DEBUG] [Thread-127911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] Compression: none
2025-09-28T15:03:02.857 [DEBUG] [Thread-127911] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:02.912 [DEBUG] [Thread-127911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:02.912 [DEBUG] [Thread-127911] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:02.912 [DEBUG] [Thread-127911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:03:02.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:03:02.913 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:02.974 [DEBUG] [Thread-127911] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:02.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:02.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:02.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:03:02.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:02.993 [INFO] [Thread-127911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:02.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-28T15:03:02.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:03.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:03.974 [DEBUG] [Thread-127911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:04.022 [DEBUG] [Thread-127911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:04.022 [DEBUG] [Thread-127911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:04.031 [DEBUG] [Thread-127911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:04.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:04.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-28T15:03:04.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-28T15:03:04.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:04.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:04.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:04.072 [DEBUG] [Thread-127911] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:08.290 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:08.291 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:14.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:03:14.071 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:03:14.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:03:14.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 2, 50), 16.74, 32.73, 0.0, 24.38, 18.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:03:14.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:02:50
2025-09-28T15:03:14.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:03:14.919 [DEBUG] [Thread-127913] [transport.py] [_log()] starting thread (client mode): 0x2b91c430
2025-09-28T15:03:14.919 [DEBUG] [Thread-127913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:14.934 [DEBUG] [Thread-127913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:03:14.934 [INFO] [Thread-127913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:14.937 [DEBUG] [Thread-127913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] Compression: none
2025-09-28T15:03:14.938 [DEBUG] [Thread-127913] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:14.951 [DEBUG] [Thread-127913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:14.952 [DEBUG] [Thread-127913] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:14.952 [DEBUG] [Thread-127913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:03:14.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:03:14.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:14.954 [DEBUG] [Thread-127913] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:14.954 [DEBUG] [Thread-127913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:14.954 [DEBUG] [Thread-127913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:14.954 [DEBUG] [Thread-127913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:03:14.954 [DEBUG] [Thread-127913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:14.977 [INFO] [Thread-127913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:14.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:15.621 [DEBUG] [Thread-127913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:15.621 [DEBUG] [Thread-127913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:15.622 [DEBUG] [Thread-127913] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:03:15.662 [DEBUG] [Thread-127913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:15.662 [DEBUG] [Thread-127913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:15.665 [DEBUG] [Thread-127913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:15.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:15.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:03:15.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:03:15.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:03:15.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:15.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:03:15.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:15.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:03:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543485 -999.00  +19.00   8.75     37   +4.00 1 1 1 1 1   888    0 15.05 -18.32 ----- 8.8 8.8 187.2 22.2 24.6 -27.0 23.6 -28.3 25.2 -26.1 26.4 -26.9
2025-09-28T15:03:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:03:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:03:15.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543485
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:03:15.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:02:50', tmtdew=16.74, humidity=32.73, cloud=0.0, wind=24.38, temperature=18.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:02:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:03:15.685 [DEBUG] [Thread-127913] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:15.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-28T15:03:15.779 [DEBUG] [Thread-127916] [transport.py] [_log()] starting thread (client mode): 0x2b91c130
2025-09-28T15:03:15.779 [DEBUG] [Thread-127916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:15.793 [DEBUG] [Thread-127916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:03:15.793 [INFO] [Thread-127916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:03:15.801 [DEBUG] [Thread-127916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:15.801 [DEBUG] [Thread-127916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] Compression: none
2025-09-28T15:03:15.802 [DEBUG] [Thread-127916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:15.857 [DEBUG] [Thread-127916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:15.858 [DEBUG] [Thread-127916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:15.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:03:15.859 [DEBUG] [Thread-127916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:03:15.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:15.914 [DEBUG] [Thread-127916] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:15.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:15.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:15.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:03:15.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:15.932 [INFO] [Thread-127916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:15.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-28T15:03:15.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:16.616 [DEBUG] [Thread-127918 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:16.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:16.914 [DEBUG] [Thread-127916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:16.962 [DEBUG] [Thread-127916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:16.963 [DEBUG] [Thread-127916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:16.972 [DEBUG] [Thread-127916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:16.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:16.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-28T15:03:16.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-28T15:03:16.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:16.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:16.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:17.006 [DEBUG] [Thread-127916] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:17.066 [DEBUG] [Thread-127919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:27.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:03:27.000 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:03:27.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-28T15:03:27.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 3, 22), 16.58, 33.04, 0.0, 23.26, 18.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:03:27.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:03:22
2025-09-28T15:03:27.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:03:27.843 [DEBUG] [Thread-127920] [transport.py] [_log()] starting thread (client mode): 0x2b91fd90
2025-09-28T15:03:27.843 [DEBUG] [Thread-127920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:27.863 [DEBUG] [Thread-127920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:03:27.863 [INFO] [Thread-127920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:27.867 [DEBUG] [Thread-127920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] Compression: none
2025-09-28T15:03:27.868 [DEBUG] [Thread-127920] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:27.886 [DEBUG] [Thread-127920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:27.887 [DEBUG] [Thread-127920] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:27.887 [DEBUG] [Thread-127920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:03:27.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:03:27.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:27.929 [DEBUG] [Thread-127920] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:27.929 [DEBUG] [Thread-127920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:27.929 [DEBUG] [Thread-127920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:27.929 [DEBUG] [Thread-127920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:03:27.929 [DEBUG] [Thread-127920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:27.950 [INFO] [Thread-127920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:27.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:28.729 [DEBUG] [Thread-127920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:28.730 [DEBUG] [Thread-127920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:28.730 [DEBUG] [Thread-127920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:03:28.770 [DEBUG] [Thread-127920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:28.771 [DEBUG] [Thread-127920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:28.774 [DEBUG] [Thread-127920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:28.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:28.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:03:28.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:03:28.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:03:28.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:28.796 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:03:28.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:28.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:03:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543485 -999.00  +19.00   8.75     37   +4.00 1 1 1 1 1   888    0 15.05 -18.32 ----- 8.8 8.8 187.2 22.2 24.6 -27.0 23.6 -28.3 25.2 -26.1 26.4 -26.9
2025-09-28T15:03:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:03:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:03:28.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543485
2025-09-28T15:03:28.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:03:28.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:03:28.798 [DEBUG] [Thread-127920] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:28.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:03:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:03:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:03:28.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:03:22', tmtdew=16.58, humidity=33.04, cloud=0.0, wind=23.26, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:02:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:03:28.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-28T15:03:28.893 [DEBUG] [Thread-127923] [transport.py] [_log()] starting thread (client mode): 0x2b91d2a0
2025-09-28T15:03:28.893 [DEBUG] [Thread-127923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:28.907 [DEBUG] [Thread-127923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:03:28.907 [INFO] [Thread-127923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:03:28.915 [DEBUG] [Thread-127923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:28.915 [DEBUG] [Thread-127923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] Compression: none
2025-09-28T15:03:28.916 [DEBUG] [Thread-127923] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:28.981 [DEBUG] [Thread-127923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:28.981 [DEBUG] [Thread-127923] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:28.982 [DEBUG] [Thread-127923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:03:28.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:03:28.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:29.038 [DEBUG] [Thread-127923] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:29.038 [DEBUG] [Thread-127923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:29.038 [DEBUG] [Thread-127923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:29.038 [DEBUG] [Thread-127923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:03:29.038 [DEBUG] [Thread-127923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:29.058 [INFO] [Thread-127923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:29.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-28T15:03:29.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:30.075 [DEBUG] [Thread-127923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:30.075 [DEBUG] [Thread-127923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:30.123 [DEBUG] [Thread-127923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:30.123 [DEBUG] [Thread-127923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:30.132 [DEBUG] [Thread-127923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:30.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:30.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-28T15:03:30.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-28T15:03:30.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:30.157 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:30.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:30.165 [DEBUG] [Thread-127923] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:32.110 [DEBUG] [Thread-127925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:03:40.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:03:40.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:03:40.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-28T15:03:40.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 3, 22), 16.58, 33.04, 0.0, 23.26, 18.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:03:40.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:03:22
2025-09-28T15:03:40.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:03:41.020 [DEBUG] [Thread-127926] [transport.py] [_log()] starting thread (client mode): 0x2b91ca60
2025-09-28T15:03:41.021 [DEBUG] [Thread-127926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:03:41.041 [DEBUG] [Thread-127926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:03:41.041 [INFO] [Thread-127926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:03:41.044 [DEBUG] [Thread-127926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:03:41.044 [DEBUG] [Thread-127926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:03:41.044 [DEBUG] [Thread-127926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] client lang: <none>
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] server lang: <none>
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] kex follows: False
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] Compression: none
2025-09-28T15:03:41.045 [DEBUG] [Thread-127926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:03:41.062 [DEBUG] [Thread-127926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:03:41.063 [DEBUG] [Thread-127926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:03:41.063 [DEBUG] [Thread-127926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:03:41.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:03:41.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:03:41.065 [DEBUG] [Thread-127926] [transport.py] [_log()] userauth is OK
2025-09-28T15:03:41.065 [DEBUG] [Thread-127926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:03:41.065 [DEBUG] [Thread-127926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:03:41.065 [DEBUG] [Thread-127926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:03:41.065 [DEBUG] [Thread-127926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:03:41.080 [INFO] [Thread-127926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:03:41.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:03:41.722 [DEBUG] [Thread-127926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:03:41.723 [DEBUG] [Thread-127926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:03:41.723 [DEBUG] [Thread-127926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:03:41.763 [DEBUG] [Thread-127926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:03:41.763 [DEBUG] [Thread-127926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:03:41.765 [DEBUG] [Thread-127926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:03:41.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:03:41.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:03:41.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:03:41.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:03:41.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:03:41.786 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:03:41.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:03:41.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.543832 -999.00  +19.10  25.03     36   +4.00 1 1 1 1 1   888    0 15.04 -20.42 ----- 25.0 25.0 209.6 30.3 24.6 -27.4 23.7 -27.1 25.2 -27.3 26.3 -28.5
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.543832
2025-09-28T15:03:41.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:03:41.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:03:41.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:03:41.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:03:41.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:03:41.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:03:22', tmtdew=16.58, humidity=33.04, cloud=0.0, wind=23.26, temperature=18.12, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:03:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:03:41.788 [DEBUG] [Thread-127926] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:03:41.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-28T15:03:47.152 [DEBUG] [Thread-127929 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:02.193 [DEBUG] [Thread-127930 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:08.445 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:08.446 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:16.669 [DEBUG] [Thread-127931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:17.222 [DEBUG] [Thread-127932 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:32.251 [DEBUG] [Thread-127933 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:04:47.279 [DEBUG] [Thread-127934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:02.308 [DEBUG] [Thread-127935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:08.588 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:08.589 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:16.722 [DEBUG] [Thread-127936 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:17.334 [DEBUG] [Thread-127937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:32.369 [DEBUG] [Thread-127938 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:47.398 [DEBUG] [Thread-127939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:05:55.387 [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-28T15:06:02.427 [DEBUG] [Thread-127940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:05.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:06:05.389 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:06:05.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-28T15:06:05.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 6, 2), 16.39, 32.96, 0.0, 21.61, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:06:05.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:06:02
2025-09-28T15:06:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:06:06.254 [DEBUG] [Thread-127941] [transport.py] [_log()] starting thread (client mode): 0x2b91dd20
2025-09-28T15:06:06.254 [DEBUG] [Thread-127941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:06.274 [DEBUG] [Thread-127941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:06:06.274 [INFO] [Thread-127941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:06:06.277 [DEBUG] [Thread-127941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:06.278 [DEBUG] [Thread-127941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:06.279 [DEBUG] [Thread-127941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:06.279 [DEBUG] [Thread-127941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:06.279 [DEBUG] [Thread-127941] [transport.py] [_log()] Compression: none
2025-09-28T15:06:06.279 [DEBUG] [Thread-127941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:06.297 [DEBUG] [Thread-127941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:06.297 [DEBUG] [Thread-127941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:06.298 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:06:06.299 [DEBUG] [Thread-127941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:06:06.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:06.300 [DEBUG] [Thread-127941] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:06.301 [DEBUG] [Thread-127941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:06.301 [DEBUG] [Thread-127941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:06.301 [DEBUG] [Thread-127941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:06:06.301 [DEBUG] [Thread-127941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:06.321 [INFO] [Thread-127941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:06.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:06.948 [DEBUG] [Thread-127941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:06.948 [DEBUG] [Thread-127941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:06.949 [DEBUG] [Thread-127941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:06:06.989 [DEBUG] [Thread-127941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:06.990 [DEBUG] [Thread-127941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:06.993 [DEBUG] [Thread-127941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:07.004 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:07.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:06:07.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:06:07.008 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:06:07.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:07.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:06:07.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.545569 -999.00  +19.30  10.19     34   +3.40 1 1 1 1 1   888    0 14.90 -26.93 ----- 10.2 10.2 198.0 22.1 24.7 -27.1 23.7 -26.5 25.2 -26.1 26.4 -27.6
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:06:07.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.545569
2025-09-28T15:06:07.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:06:07.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:06:07.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:06:07.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:06:07.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:06:07.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:06:02', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=21.61, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:05:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:06:07.018 [DEBUG] [Thread-127941] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06: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-28T15:06:07.116 [DEBUG] [Thread-127944] [transport.py] [_log()] starting thread (client mode): 0x2b91cbe0
2025-09-28T15:06:07.116 [DEBUG] [Thread-127944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:07.132 [DEBUG] [Thread-127944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:06:07.132 [INFO] [Thread-127944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:06:07.140 [DEBUG] [Thread-127944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:07.140 [DEBUG] [Thread-127944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:06:07.140 [DEBUG] [Thread-127944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:07.140 [DEBUG] [Thread-127944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] Compression: none
2025-09-28T15:06:07.141 [DEBUG] [Thread-127944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:07.200 [DEBUG] [Thread-127944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:07.201 [DEBUG] [Thread-127944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:07.201 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:06:07.202 [DEBUG] [Thread-127944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:06:07.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:07.256 [DEBUG] [Thread-127944] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:07.256 [DEBUG] [Thread-127944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:07.257 [DEBUG] [Thread-127944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:07.257 [DEBUG] [Thread-127944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:06:07.257 [DEBUG] [Thread-127944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:07.276 [INFO] [Thread-127944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:07.276 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:06:07.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:08.307 [DEBUG] [Thread-127944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:08.307 [DEBUG] [Thread-127944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:08.355 [DEBUG] [Thread-127944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:08.355 [DEBUG] [Thread-127944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:08.364 [DEBUG] [Thread-127944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:08.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06: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')
2025-09-28T15:06:08.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-28T15:06:08.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:08.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:08.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:08.399 [DEBUG] [Thread-127944] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:08.731 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:08.733 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:16.771 [DEBUG] [Thread-127946 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:17.456 [DEBUG] [Thread-127947 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:18.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:06:18.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:06:18.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-28T15:06:19.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 6, 2), 16.39, 32.96, 0.0, 21.61, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:06:19.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:06:02
2025-09-28T15:06:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:06:19.264 [DEBUG] [Thread-127948] [transport.py] [_log()] starting thread (client mode): 0x2b91ee00
2025-09-28T15:06:19.265 [DEBUG] [Thread-127948] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:19.283 [DEBUG] [Thread-127948] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:06:19.283 [INFO] [Thread-127948] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:06:19.286 [DEBUG] [Thread-127948] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:19.287 [DEBUG] [Thread-127948] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:19.288 [DEBUG] [Thread-127948] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:19.288 [DEBUG] [Thread-127948] [transport.py] [_log()] Compression: none
2025-09-28T15:06:19.288 [DEBUG] [Thread-127948] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:19.295 [DEBUG] [Thread-127948] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:19.296 [DEBUG] [Thread-127948] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:19.296 [DEBUG] [Thread-127948] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:06:19.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:06:19.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:19.298 [DEBUG] [Thread-127948] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:19.298 [DEBUG] [Thread-127948] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:19.299 [DEBUG] [Thread-127948] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:19.299 [DEBUG] [Thread-127948] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:06:19.299 [DEBUG] [Thread-127948] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:19.322 [INFO] [Thread-127948] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:19.322 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:19.963 [DEBUG] [Thread-127948] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:19.963 [DEBUG] [Thread-127948] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:19.964 [DEBUG] [Thread-127948] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:06:20.004 [DEBUG] [Thread-127948] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:20.005 [DEBUG] [Thread-127948] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:20.008 [DEBUG] [Thread-127948] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:20.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:20.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:06:20.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:06:20.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:06:20.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:20.031 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:06:20.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:20.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:20.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:06:20.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.545569 -999.00  +19.30  10.19     34   +3.40 1 1 1 1 1   888    0 14.90 -26.93 ----- 10.2 10.2 198.0 22.1 24.7 -27.1 23.7 -26.5 25.2 -26.1 26.4 -27.6
2025-09-28T15:06:20.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:06:20.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:06:20.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.545569
2025-09-28T15:06:20.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:06:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:06:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:06:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:06:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:06:20.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:06:02', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=21.61, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:05:37.162', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:06:20.033 [DEBUG] [Thread-127948] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:20.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:06:20.130 [DEBUG] [Thread-127951] [transport.py] [_log()] starting thread (client mode): 0x2b91f520
2025-09-28T15:06:20.130 [DEBUG] [Thread-127951] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:20.145 [DEBUG] [Thread-127951] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:06:20.145 [INFO] [Thread-127951] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:06:20.152 [DEBUG] [Thread-127951] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:20.153 [DEBUG] [Thread-127951] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:06:20.153 [DEBUG] [Thread-127951] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:20.153 [DEBUG] [Thread-127951] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:20.153 [DEBUG] [Thread-127951] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:20.153 [DEBUG] [Thread-127951] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] Compression: none
2025-09-28T15:06:20.154 [DEBUG] [Thread-127951] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:20.211 [DEBUG] [Thread-127951] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:20.212 [DEBUG] [Thread-127951] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:20.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:06:20.213 [DEBUG] [Thread-127951] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:06:20.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:20.267 [DEBUG] [Thread-127951] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:20.267 [DEBUG] [Thread-127951] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:20.268 [DEBUG] [Thread-127951] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:20.268 [DEBUG] [Thread-127951] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:06:20.268 [DEBUG] [Thread-127951] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:20.281 [INFO] [Thread-127951] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:20.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-28T15:06:20.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:21.270 [DEBUG] [Thread-127951] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:21.270 [DEBUG] [Thread-127951] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:21.317 [DEBUG] [Thread-127951] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:21.317 [DEBUG] [Thread-127951] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:21.326 [DEBUG] [Thread-127951] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:21.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:21.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')
2025-09-28T15:06:21.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-28T15:06:21.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:21.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:21.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:21.361 [DEBUG] [Thread-127951] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:31.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:06:31.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:06:31.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-28T15:06:31.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 6, 2), 16.39, 32.96, 0.0, 21.61, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:06:31.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:06:02
2025-09-28T15:06:32.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:06:32.229 [DEBUG] [Thread-127953] [transport.py] [_log()] starting thread (client mode): 0x2e3fae90
2025-09-28T15:06:32.229 [DEBUG] [Thread-127953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:32.250 [DEBUG] [Thread-127953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:06:32.251 [INFO] [Thread-127953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] Compression: none
2025-09-28T15:06:32.254 [DEBUG] [Thread-127953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:32.262 [DEBUG] [Thread-127953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:32.263 [DEBUG] [Thread-127953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:32.263 [DEBUG] [Thread-127953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:06:32.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:06:32.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:32.265 [DEBUG] [Thread-127953] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:32.265 [DEBUG] [Thread-127953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:32.265 [DEBUG] [Thread-127953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:32.265 [DEBUG] [Thread-127953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:06:32.265 [DEBUG] [Thread-127953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:32.284 [INFO] [Thread-127953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:32.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:32.505 [DEBUG] [Thread-127955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:32.953 [DEBUG] [Thread-127953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:32.953 [DEBUG] [Thread-127953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:32.954 [DEBUG] [Thread-127953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:06:32.995 [DEBUG] [Thread-127953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:32.995 [DEBUG] [Thread-127953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:32.998 [DEBUG] [Thread-127953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:33.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:33.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:06:33.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:06:33.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:06:33.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:33.022 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:06:33.022 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:33.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:33.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:06:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.545916 -999.00  +19.10   9.50     35   +3.30 1 1 1 1 1   888    0 15.04 -26.84 ----- 9.5 9.5 235.1 22.1 24.6 -27.9 23.7 -26.5 25.2 -25.2 26.5 -27.6
2025-09-28T15:06:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:06:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:06:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.545916
2025-09-28T15:06:33.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:06:33.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:06:33.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:06:33.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:06:33.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:06:33.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:06:02', tmtdew=16.39, humidity=32.96, cloud=0.0, wind=21.61, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:06:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:06:33.024 [DEBUG] [Thread-127953] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:33.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-28T15:06:33.131 [DEBUG] [Thread-127957] [transport.py] [_log()] starting thread (client mode): 0x2b9cc580
2025-09-28T15:06:33.131 [DEBUG] [Thread-127957] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:33.145 [DEBUG] [Thread-127957] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:06:33.146 [INFO] [Thread-127957] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:06:33.153 [DEBUG] [Thread-127957] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:33.153 [DEBUG] [Thread-127957] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] Compression: none
2025-09-28T15:06:33.154 [DEBUG] [Thread-127957] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:33.211 [DEBUG] [Thread-127957] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:33.211 [DEBUG] [Thread-127957] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:33.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:06:33.212 [DEBUG] [Thread-127957] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:06:33.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:33.268 [DEBUG] [Thread-127957] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:33.268 [DEBUG] [Thread-127957] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:33.268 [DEBUG] [Thread-127957] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:33.268 [DEBUG] [Thread-127957] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:06:33.268 [DEBUG] [Thread-127957] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:33.291 [INFO] [Thread-127957] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:33.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-28T15:06:33.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:34.255 [DEBUG] [Thread-127957] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:34.255 [DEBUG] [Thread-127957] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:34.304 [DEBUG] [Thread-127957] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:34.304 [DEBUG] [Thread-127957] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:34.313 [DEBUG] [Thread-127957] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:34.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:34.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-28T15:06:34.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-28T15:06:34.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:34.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:34.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:34.347 [DEBUG] [Thread-127957] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:44.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:06:44.350 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:06:44.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-28T15:06:44.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 6, 33), 16.83, 32.36, 0.0, 24.21, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:06:44.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:06:33
2025-09-28T15:06:45.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:06:45.221 [DEBUG] [Thread-127959] [transport.py] [_log()] starting thread (client mode): 0x2b91e1a0
2025-09-28T15:06:45.222 [DEBUG] [Thread-127959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:45.244 [DEBUG] [Thread-127959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:06:45.244 [INFO] [Thread-127959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:06:45.249 [DEBUG] [Thread-127959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:45.249 [DEBUG] [Thread-127959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:06:45.249 [DEBUG] [Thread-127959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:45.249 [DEBUG] [Thread-127959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] Compression: none
2025-09-28T15:06:45.250 [DEBUG] [Thread-127959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:45.264 [DEBUG] [Thread-127959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:45.265 [DEBUG] [Thread-127959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:45.265 [DEBUG] [Thread-127959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:06:45.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:06:45.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:45.267 [DEBUG] [Thread-127959] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:45.268 [DEBUG] [Thread-127959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:45.268 [DEBUG] [Thread-127959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:45.268 [DEBUG] [Thread-127959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:06:45.268 [DEBUG] [Thread-127959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:45.282 [INFO] [Thread-127959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:45.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:45.938 [DEBUG] [Thread-127959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:45.938 [DEBUG] [Thread-127959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:45.939 [DEBUG] [Thread-127959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:06:45.979 [DEBUG] [Thread-127959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:45.980 [DEBUG] [Thread-127959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:45.983 [DEBUG] [Thread-127959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:45.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:45.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:06:45.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:06:46.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:06:46.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:46.007 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:06:46.007 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:46.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.545916 -999.00  +19.10   9.50     35   +3.30 1 1 1 1 1   888    0 15.04 -26.84 ----- 9.5 9.5 235.1 22.1 24.6 -27.9 23.7 -26.5 25.2 -25.2 26.5 -27.6
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.545916
2025-09-28T15:06:46.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:06:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:06:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:06:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:06:46.009 [DEBUG] [Thread-127959] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:46.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:06:46.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:06:33', tmtdew=16.83, humidity=32.36, cloud=0.0, wind=24.21, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:06:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:06:46.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-28T15:06:46.107 [DEBUG] [Thread-127962] [transport.py] [_log()] starting thread (client mode): 0x2b91f940
2025-09-28T15:06:46.107 [DEBUG] [Thread-127962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:46.122 [DEBUG] [Thread-127962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:06:46.122 [INFO] [Thread-127962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:06:46.129 [DEBUG] [Thread-127962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:46.130 [DEBUG] [Thread-127962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:06:46.130 [DEBUG] [Thread-127962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:46.130 [DEBUG] [Thread-127962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:46.130 [DEBUG] [Thread-127962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:46.130 [DEBUG] [Thread-127962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] Compression: none
2025-09-28T15:06:46.131 [DEBUG] [Thread-127962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:46.187 [DEBUG] [Thread-127962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:46.188 [DEBUG] [Thread-127962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:46.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:06:46.189 [DEBUG] [Thread-127962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:06:46.189 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:46.243 [DEBUG] [Thread-127962] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:46.243 [DEBUG] [Thread-127962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:46.243 [DEBUG] [Thread-127962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:46.243 [DEBUG] [Thread-127962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:06:46.243 [DEBUG] [Thread-127962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:46.257 [INFO] [Thread-127962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:46.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-28T15:06:46.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:47.261 [DEBUG] [Thread-127962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:47.261 [DEBUG] [Thread-127962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:47.309 [DEBUG] [Thread-127962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:47.309 [DEBUG] [Thread-127962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:47.318 [DEBUG] [Thread-127962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:47.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:47.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-28T15:06:47.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-28T15:06:47.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:47.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:47.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:47.353 [DEBUG] [Thread-127962] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:47.534 [DEBUG] [Thread-127964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:06:57.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:06:57.356 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:06:57.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-28T15:06:57.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 6, 33), 16.83, 32.36, 0.0, 24.21, 17.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:06:57.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:06:33
2025-09-28T15:06:58.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:06:58.217 [DEBUG] [Thread-127965] [transport.py] [_log()] starting thread (client mode): 0x2b91d480
2025-09-28T15:06:58.217 [DEBUG] [Thread-127965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:58.237 [DEBUG] [Thread-127965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:06:58.237 [INFO] [Thread-127965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:58.240 [DEBUG] [Thread-127965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] Compression: none
2025-09-28T15:06:58.241 [DEBUG] [Thread-127965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:58.259 [DEBUG] [Thread-127965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:58.259 [DEBUG] [Thread-127965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:58.260 [DEBUG] [Thread-127965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:06:58.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:06:58.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:58.262 [DEBUG] [Thread-127965] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:58.262 [DEBUG] [Thread-127965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:58.262 [DEBUG] [Thread-127965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:58.262 [DEBUG] [Thread-127965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:06:58.262 [DEBUG] [Thread-127965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:58.297 [INFO] [Thread-127965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:58.297 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:06:58.937 [DEBUG] [Thread-127965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:06:58.937 [DEBUG] [Thread-127965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:06:58.938 [DEBUG] [Thread-127965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:06:58.978 [DEBUG] [Thread-127965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:06:58.979 [DEBUG] [Thread-127965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:06:58.982 [DEBUG] [Thread-127965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:06:58.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:06:58.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:06:58.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:06:58.997 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:06:59.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:06:59.005 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:06:59.005 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:06:59.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:06:59.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:06:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.545916 -999.00  +19.10   9.50     35   +3.30 1 1 1 1 1   888    0 15.04 -26.84 ----- 9.5 9.5 235.1 22.1 24.6 -27.9 23.7 -26.5 25.2 -25.2 26.5 -27.6
2025-09-28T15:06:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:06:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:06:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.545916
2025-09-28T15:06:59.006 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:06:59.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:06:59.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:06:59.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:06:59.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:06:59.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:06:33', tmtdew=16.83, humidity=32.36, cloud=0.0, wind=24.21, temperature=17.85, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:06:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:06:59.007 [DEBUG] [Thread-127965] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:06:59.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-28T15:06:59.104 [DEBUG] [Thread-127968] [transport.py] [_log()] starting thread (client mode): 0x2b91d0f0
2025-09-28T15:06:59.105 [DEBUG] [Thread-127968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:06:59.119 [DEBUG] [Thread-127968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:06:59.119 [INFO] [Thread-127968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] client lang: <none>
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] server lang: <none>
2025-09-28T15:06:59.127 [DEBUG] [Thread-127968] [transport.py] [_log()] kex follows: False
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] Compression: none
2025-09-28T15:06:59.128 [DEBUG] [Thread-127968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:06:59.191 [DEBUG] [Thread-127968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:06:59.192 [DEBUG] [Thread-127968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:06:59.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:06:59.193 [DEBUG] [Thread-127968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:06:59.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:06:59.247 [DEBUG] [Thread-127968] [transport.py] [_log()] userauth is OK
2025-09-28T15:06:59.248 [DEBUG] [Thread-127968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:06:59.248 [DEBUG] [Thread-127968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:06:59.248 [DEBUG] [Thread-127968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:06:59.248 [DEBUG] [Thread-127968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:06:59.267 [INFO] [Thread-127968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:06:59.268 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:06:59.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:00.353 [DEBUG] [Thread-127968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:00.354 [DEBUG] [Thread-127968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:00.401 [DEBUG] [Thread-127968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:00.401 [DEBUG] [Thread-127968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:00.410 [DEBUG] [Thread-127968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:00.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:00.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-28T15:07:00.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-28T15:07:00.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:00.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:00.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:00.445 [DEBUG] [Thread-127968] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:02.579 [DEBUG] [Thread-127970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:08.875 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:08.877 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:10.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:07:10.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:07:10.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-28T15:07:11.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 7, 6), 16.83, 32.37, 0.0, 26.54, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:07:11.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:07:06
2025-09-28T15:07:11.150 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:07:11.299 [DEBUG] [Thread-127971] [transport.py] [_log()] starting thread (client mode): 0x2b91ed70
2025-09-28T15:07:11.299 [DEBUG] [Thread-127971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:11.319 [DEBUG] [Thread-127971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:07:11.319 [INFO] [Thread-127971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:11.322 [DEBUG] [Thread-127971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] Compression: none
2025-09-28T15:07:11.323 [DEBUG] [Thread-127971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:11.341 [DEBUG] [Thread-127971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:11.342 [DEBUG] [Thread-127971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:11.342 [DEBUG] [Thread-127971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:07:11.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:07:11.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:11.384 [DEBUG] [Thread-127971] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:11.385 [DEBUG] [Thread-127971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:11.385 [DEBUG] [Thread-127971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:11.385 [DEBUG] [Thread-127971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:07:11.385 [DEBUG] [Thread-127971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:11.410 [INFO] [Thread-127971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:11.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:12.034 [DEBUG] [Thread-127971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:12.035 [DEBUG] [Thread-127971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:12.035 [DEBUG] [Thread-127971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:07:12.075 [DEBUG] [Thread-127971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:12.076 [DEBUG] [Thread-127971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:12.078 [DEBUG] [Thread-127971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:12.089 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:12.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:07:12.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:07:12.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:07:12.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:12.099 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:07:12.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546263 -999.00  +19.10  13.05     35   +3.40 1 1 1 1 1   888    0 14.91 -25.23 ----- 13.1 13.1 207.9 26.2 24.7 -26.7 23.8 -26.4 25.2 -26.7 26.4 -27.5
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:07:12.100 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546263
2025-09-28T15:07:12.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:07:12.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:07:12.102 [DEBUG] [Thread-127971] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:12.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:07:12.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:07:12.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:07:12.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:07:06', tmtdew=16.83, humidity=32.37, cloud=0.0, wind=26.54, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:06:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:07:12.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:07:12.195 [DEBUG] [Thread-127974] [transport.py] [_log()] starting thread (client mode): 0x2b96c8e0
2025-09-28T15:07:12.195 [DEBUG] [Thread-127974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:12.210 [DEBUG] [Thread-127974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:07:12.210 [INFO] [Thread-127974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:07:12.218 [DEBUG] [Thread-127974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:12.218 [DEBUG] [Thread-127974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:07:12.218 [DEBUG] [Thread-127974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:12.218 [DEBUG] [Thread-127974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:12.218 [DEBUG] [Thread-127974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] Compression: none
2025-09-28T15:07:12.219 [DEBUG] [Thread-127974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:12.275 [DEBUG] [Thread-127974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:12.275 [DEBUG] [Thread-127974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:12.276 [DEBUG] [Thread-127974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:07:12.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:07:12.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:12.331 [DEBUG] [Thread-127974] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:12.331 [DEBUG] [Thread-127974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:12.332 [DEBUG] [Thread-127974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:12.332 [DEBUG] [Thread-127974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:07:12.332 [DEBUG] [Thread-127974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:12.350 [INFO] [Thread-127974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:12.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-28T15:07:12.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:13.339 [DEBUG] [Thread-127974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:13.339 [DEBUG] [Thread-127974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:13.387 [DEBUG] [Thread-127974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:13.387 [DEBUG] [Thread-127974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:13.396 [DEBUG] [Thread-127974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:13.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:13.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-28T15:07:13.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-28T15:07:13.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:13.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:13.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:13.429 [DEBUG] [Thread-127974] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:16.832 [DEBUG] [Thread-127976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:17.608 [DEBUG] [Thread-127977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:23.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:07:23.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:07:23.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-28T15:07:24.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 7, 6), 16.83, 32.37, 0.0, 26.54, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:07:24.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:07:06
2025-09-28T15:07:24.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:07:24.280 [DEBUG] [Thread-127978] [transport.py] [_log()] starting thread (client mode): 0x2b91f8e0
2025-09-28T15:07:24.280 [DEBUG] [Thread-127978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:24.300 [DEBUG] [Thread-127978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:07:24.300 [INFO] [Thread-127978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] Compression: none
2025-09-28T15:07:24.304 [DEBUG] [Thread-127978] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:24.320 [DEBUG] [Thread-127978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:24.321 [DEBUG] [Thread-127978] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:24.321 [DEBUG] [Thread-127978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:07:24.321 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:07:24.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:24.323 [DEBUG] [Thread-127978] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:24.323 [DEBUG] [Thread-127978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:24.323 [DEBUG] [Thread-127978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:24.323 [DEBUG] [Thread-127978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:07:24.324 [DEBUG] [Thread-127978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:24.348 [INFO] [Thread-127978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:24.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:24.987 [DEBUG] [Thread-127978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:24.987 [DEBUG] [Thread-127978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:24.987 [DEBUG] [Thread-127978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:07:25.028 [DEBUG] [Thread-127978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:25.028 [DEBUG] [Thread-127978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:25.031 [DEBUG] [Thread-127978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:25.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:25.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:07:25.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:07:25.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:07:25.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:25.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:07:25.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546263 -999.00  +19.10  13.05     35   +3.40 1 1 1 1 1   888    0 14.91 -25.23 ----- 13.1 13.1 207.9 26.2 24.7 -26.7 23.8 -26.4 25.2 -26.7 26.4 -27.5
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546263
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:07:25.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:07:06', tmtdew=16.83, humidity=32.37, cloud=0.0, wind=26.54, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:06:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:07:25.052 [DEBUG] [Thread-127978] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:25.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:07:25.134 [DEBUG] [Thread-127981] [transport.py] [_log()] starting thread (client mode): 0x2b91f2e0
2025-09-28T15:07:25.134 [DEBUG] [Thread-127981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:25.149 [DEBUG] [Thread-127981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:07:25.149 [INFO] [Thread-127981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] Compression: none
2025-09-28T15:07:25.156 [DEBUG] [Thread-127981] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:25.214 [DEBUG] [Thread-127981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:25.214 [DEBUG] [Thread-127981] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:25.214 [DEBUG] [Thread-127981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:07:25.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:07:25.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:25.271 [DEBUG] [Thread-127981] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:25.271 [DEBUG] [Thread-127981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:25.271 [DEBUG] [Thread-127981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:25.271 [DEBUG] [Thread-127981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:07:25.271 [DEBUG] [Thread-127981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:25.285 [INFO] [Thread-127981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:25.285 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:07:25.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:26.270 [DEBUG] [Thread-127981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:26.271 [DEBUG] [Thread-127981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:26.319 [DEBUG] [Thread-127981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:26.319 [DEBUG] [Thread-127981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:26.327 [DEBUG] [Thread-127981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:26.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:26.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')
2025-09-28T15:07:26.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-28T15:07:26.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:26.351 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:26.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:26.359 [DEBUG] [Thread-127981] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:32.647 [DEBUG] [Thread-127983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:36.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:07:36.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:07:36.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-28T15:07:36.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 7, 6), 16.83, 32.37, 0.0, 26.54, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:07:36.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:07:06
2025-09-28T15:07:37.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:07:37.222 [DEBUG] [Thread-127984] [transport.py] [_log()] starting thread (client mode): 0x2b9ba8c0
2025-09-28T15:07:37.223 [DEBUG] [Thread-127984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:37.237 [DEBUG] [Thread-127984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:07:37.237 [INFO] [Thread-127984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:37.239 [DEBUG] [Thread-127984] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] Compression: none
2025-09-28T15:07:37.240 [DEBUG] [Thread-127984] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:37.257 [DEBUG] [Thread-127984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:37.258 [DEBUG] [Thread-127984] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:37.258 [DEBUG] [Thread-127984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:07:37.258 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:07:37.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:37.260 [DEBUG] [Thread-127984] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:37.260 [DEBUG] [Thread-127984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:37.260 [DEBUG] [Thread-127984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:37.260 [DEBUG] [Thread-127984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:07:37.260 [DEBUG] [Thread-127984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:37.278 [INFO] [Thread-127984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:37.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:37.892 [DEBUG] [Thread-127984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:37.893 [DEBUG] [Thread-127984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:37.893 [DEBUG] [Thread-127984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:07:37.933 [DEBUG] [Thread-127984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:37.933 [DEBUG] [Thread-127984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:37.936 [DEBUG] [Thread-127984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:37.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:37.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:07:37.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:07:37.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:07:37.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:37.961 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:07:37.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:37.961 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546610 -999.00  +19.20  10.57     35   +3.30 1 1 1 1 1   888    0 14.92 -24.36 ----- 10.6 10.6 201.2 19.2 24.7 -27.3 23.8 -25.8 25.2 -26.5 26.4 -27.5
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546610
2025-09-28T15:07:37.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:07:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:07:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:07:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:07:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:07:37.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:07:06', tmtdew=16.83, humidity=32.37, cloud=0.0, wind=26.54, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:07:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:07:37.963 [DEBUG] [Thread-127984] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:38.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:07:38.061 [DEBUG] [Thread-127987] [transport.py] [_log()] starting thread (client mode): 0x2b9bb4f0
2025-09-28T15:07:38.061 [DEBUG] [Thread-127987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:38.081 [DEBUG] [Thread-127987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:07:38.082 [INFO] [Thread-127987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:07:38.094 [DEBUG] [Thread-127987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:38.094 [DEBUG] [Thread-127987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:07:38.094 [DEBUG] [Thread-127987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:38.094 [DEBUG] [Thread-127987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:38.094 [DEBUG] [Thread-127987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] Compression: none
2025-09-28T15:07:38.095 [DEBUG] [Thread-127987] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:38.155 [DEBUG] [Thread-127987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:38.155 [DEBUG] [Thread-127987] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:38.156 [DEBUG] [Thread-127987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:07:38.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:07:38.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:38.211 [DEBUG] [Thread-127987] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:38.211 [DEBUG] [Thread-127987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:38.211 [DEBUG] [Thread-127987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:38.212 [DEBUG] [Thread-127987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:07:38.212 [DEBUG] [Thread-127987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:38.230 [INFO] [Thread-127987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:38.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-28T15:07:38.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:39.215 [DEBUG] [Thread-127987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:39.216 [DEBUG] [Thread-127987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:39.264 [DEBUG] [Thread-127987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:39.264 [DEBUG] [Thread-127987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:39.272 [DEBUG] [Thread-127987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:39.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:39.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-28T15:07:39.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-28T15:07:39.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:39.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:39.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:39.303 [DEBUG] [Thread-127987] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:47.673 [DEBUG] [Thread-127989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:07:49.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:07:49.306 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:07:49.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-28T15:07:49.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 7, 38), 16.96, 31.86, 0.0, 16.18, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:07:49.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:07:38
2025-09-28T15:07:49.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:07:50.136 [DEBUG] [Thread-127990] [transport.py] [_log()] starting thread (client mode): 0x2b9b9930
2025-09-28T15:07:50.136 [DEBUG] [Thread-127990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:50.157 [DEBUG] [Thread-127990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:07:50.157 [INFO] [Thread-127990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:50.161 [DEBUG] [Thread-127990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] Compression: none
2025-09-28T15:07:50.162 [DEBUG] [Thread-127990] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:50.176 [DEBUG] [Thread-127990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:50.176 [DEBUG] [Thread-127990] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:50.177 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:07:50.177 [DEBUG] [Thread-127990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:07:50.178 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:50.179 [DEBUG] [Thread-127990] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:50.179 [DEBUG] [Thread-127990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:50.179 [DEBUG] [Thread-127990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:50.179 [DEBUG] [Thread-127990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:07:50.179 [DEBUG] [Thread-127990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:50.194 [INFO] [Thread-127990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:50.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:50.825 [DEBUG] [Thread-127990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:50.825 [DEBUG] [Thread-127990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:50.826 [DEBUG] [Thread-127990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:07:50.866 [DEBUG] [Thread-127990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:50.866 [DEBUG] [Thread-127990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:50.870 [DEBUG] [Thread-127990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:50.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:50.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:07:50.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:07:50.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:07:50.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:50.891 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:07:50.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546610 -999.00  +19.20  10.57     35   +3.30 1 1 1 1 1   888    0 14.92 -24.36 ----- 10.6 10.6 201.2 19.2 24.7 -27.3 23.8 -25.8 25.2 -26.5 26.4 -27.5
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:07:50.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546610
2025-09-28T15:07:50.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:07:50.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:07:50.894 [DEBUG] [Thread-127990] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:07:50.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:07:50.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:07:50.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:07:50.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:07:38', tmtdew=16.96, humidity=31.86, cloud=0.0, wind=16.18, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:07:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:07:50.976 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:07:50.986 [DEBUG] [Thread-127993] [transport.py] [_log()] starting thread (client mode): 0x2b9b87c0
2025-09-28T15:07:50.986 [DEBUG] [Thread-127993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:07:51.001 [DEBUG] [Thread-127993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:07:51.001 [INFO] [Thread-127993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:07:51.009 [DEBUG] [Thread-127993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] client lang: <none>
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] server lang: <none>
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] kex follows: False
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:07:51.010 [DEBUG] [Thread-127993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:07:51.011 [DEBUG] [Thread-127993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:07:51.011 [DEBUG] [Thread-127993] [transport.py] [_log()] Compression: none
2025-09-28T15:07:51.011 [DEBUG] [Thread-127993] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:07:51.073 [DEBUG] [Thread-127993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:07:51.073 [DEBUG] [Thread-127993] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:07:51.074 [DEBUG] [Thread-127993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:07:51.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:07:51.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:07:51.131 [DEBUG] [Thread-127993] [transport.py] [_log()] userauth is OK
2025-09-28T15:07:51.131 [DEBUG] [Thread-127993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:07:51.132 [DEBUG] [Thread-127993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:07:51.132 [DEBUG] [Thread-127993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:07:51.132 [DEBUG] [Thread-127993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:07:51.151 [INFO] [Thread-127993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:07:51.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-28T15:07:51.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:07:52.179 [DEBUG] [Thread-127993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:07:52.179 [DEBUG] [Thread-127993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:07:52.227 [DEBUG] [Thread-127993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:07:52.227 [DEBUG] [Thread-127993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:07:52.236 [DEBUG] [Thread-127993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:07:52.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:07:52.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-28T15:07:52.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-28T15:07:52.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:07:52.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:07:52.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:07:52.271 [DEBUG] [Thread-127993] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:02.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:08:02.272 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:08:02.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-28T15:08:02.713 [DEBUG] [Thread-127995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:02.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 7, 38), 16.96, 31.86, 0.0, 16.18, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:08:02.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:07:38
2025-09-28T15:08:03.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:08:03.176 [DEBUG] [Thread-127996] [transport.py] [_log()] starting thread (client mode): 0x2b91f550
2025-09-28T15:08:03.177 [DEBUG] [Thread-127996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:03.197 [DEBUG] [Thread-127996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:08:03.197 [INFO] [Thread-127996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] Compression: none
2025-09-28T15:08:03.201 [DEBUG] [Thread-127996] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:03.218 [DEBUG] [Thread-127996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:03.219 [DEBUG] [Thread-127996] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:03.219 [DEBUG] [Thread-127996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:08:03.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:08:03.219 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:03.220 [DEBUG] [Thread-127996] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:03.220 [DEBUG] [Thread-127996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:03.220 [DEBUG] [Thread-127996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:03.220 [DEBUG] [Thread-127996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:08:03.220 [DEBUG] [Thread-127996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:03.235 [INFO] [Thread-127996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:03.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:03.869 [DEBUG] [Thread-127996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:03.869 [DEBUG] [Thread-127996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:03.869 [DEBUG] [Thread-127996] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:08:03.910 [DEBUG] [Thread-127996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:03.910 [DEBUG] [Thread-127996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:03.912 [DEBUG] [Thread-127996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:03.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:03.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:08:03.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:08:03.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:08:03.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:03.931 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:08:03.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546610 -999.00  +19.20  10.57     35   +3.30 1 1 1 1 1   888    0 14.92 -24.36 ----- 10.6 10.6 201.2 19.2 24.7 -27.3 23.8 -25.8 25.2 -26.5 26.4 -27.5
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546610
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:08:03.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:07:38', tmtdew=16.96, humidity=31.86, cloud=0.0, wind=16.18, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:07:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:08:03.932 [DEBUG] [Thread-127996] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:04.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-28T15:08:04.022 [DEBUG] [Thread-127999] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-28T15:08:04.022 [DEBUG] [Thread-127999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:04.036 [DEBUG] [Thread-127999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:08:04.036 [INFO] [Thread-127999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:08:04.043 [DEBUG] [Thread-127999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:04.043 [DEBUG] [Thread-127999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:08:04.043 [DEBUG] [Thread-127999] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] Compression: none
2025-09-28T15:08:04.044 [DEBUG] [Thread-127999] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:04.101 [DEBUG] [Thread-127999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:04.101 [DEBUG] [Thread-127999] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:04.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:08:04.102 [DEBUG] [Thread-127999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:08:04.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:04.158 [DEBUG] [Thread-127999] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:04.159 [DEBUG] [Thread-127999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:04.159 [DEBUG] [Thread-127999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:04.159 [DEBUG] [Thread-127999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:08:04.159 [DEBUG] [Thread-127999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:04.173 [INFO] [Thread-127999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:04.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-28T15:08:04.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:05.210 [DEBUG] [Thread-127999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:05.210 [DEBUG] [Thread-127999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:05.258 [DEBUG] [Thread-127999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:05.258 [DEBUG] [Thread-127999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:05.266 [DEBUG] [Thread-127999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:05.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08: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')
2025-09-28T15:08:05.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-28T15:08:05.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:05.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:05.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:05.298 [DEBUG] [Thread-127999] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:09.018 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:09.019 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:15.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:08:15.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:08:15.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-28T15:08:15.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 8, 10), 17.19, 31.45, 0.0, 18.63, 18.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:08:15.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:08:10
2025-09-28T15:08:15.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:08:16.134 [DEBUG] [Thread-128001] [transport.py] [_log()] starting thread (client mode): 0x2e38d060
2025-09-28T15:08:16.135 [DEBUG] [Thread-128001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:16.156 [DEBUG] [Thread-128001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:08:16.156 [INFO] [Thread-128001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:08:16.159 [DEBUG] [Thread-128001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:16.160 [DEBUG] [Thread-128001] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] Compression: none
2025-09-28T15:08:16.161 [DEBUG] [Thread-128001] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:16.179 [DEBUG] [Thread-128001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:16.179 [DEBUG] [Thread-128001] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:16.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:08:16.180 [DEBUG] [Thread-128001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:08:16.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:16.182 [DEBUG] [Thread-128001] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:16.182 [DEBUG] [Thread-128001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:16.182 [DEBUG] [Thread-128001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:16.182 [DEBUG] [Thread-128001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:08:16.182 [DEBUG] [Thread-128001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:16.204 [INFO] [Thread-128001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:16.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:16.851 [DEBUG] [Thread-128001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:16.851 [DEBUG] [Thread-128001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:16.851 [DEBUG] [Thread-128001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:08:16.885 [DEBUG] [Thread-128003 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:16.892 [DEBUG] [Thread-128001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:16.892 [DEBUG] [Thread-128001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:16.894 [DEBUG] [Thread-128001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:16.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:16.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:08:16.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:08:16.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:08:16.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:16.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:08:16.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546957 -999.00  +19.30  12.65     34   +3.40 1 1 1 1 1   888    0 14.86 -21.17 ----- 12.7 12.7 218.0 19.5 24.7 -27.3 23.8 -25.9 25.3 -26.3 26.4 -27.0
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:08:16.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546957
2025-09-28T15:08:16.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:08:16.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:08:16.918 [DEBUG] [Thread-128001] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:16.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:08:16.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:08:16.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:08:16.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:08:10', tmtdew=17.19, humidity=31.45, cloud=0.0, wind=18.63, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:07:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:08:17.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-28T15:08:17.015 [DEBUG] [Thread-128005] [transport.py] [_log()] starting thread (client mode): 0x2e38f250
2025-09-28T15:08:17.015 [DEBUG] [Thread-128005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:17.035 [DEBUG] [Thread-128005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:08:17.035 [INFO] [Thread-128005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:08:17.045 [DEBUG] [Thread-128005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:17.045 [DEBUG] [Thread-128005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:08:17.045 [DEBUG] [Thread-128005] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:17.046 [DEBUG] [Thread-128005] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] Compression: none
2025-09-28T15:08:17.047 [DEBUG] [Thread-128005] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:17.104 [DEBUG] [Thread-128005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:17.104 [DEBUG] [Thread-128005] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:17.105 [DEBUG] [Thread-128005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:08:17.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:08:17.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:17.165 [DEBUG] [Thread-128005] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:17.165 [DEBUG] [Thread-128005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:17.165 [DEBUG] [Thread-128005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:17.166 [DEBUG] [Thread-128005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:08:17.166 [DEBUG] [Thread-128005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:17.188 [INFO] [Thread-128005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:17.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-28T15:08:17.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:17.759 [DEBUG] [Thread-128007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:18.171 [DEBUG] [Thread-128005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:18.171 [DEBUG] [Thread-128005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:18.223 [DEBUG] [Thread-128005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:18.224 [DEBUG] [Thread-128005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:18.237 [DEBUG] [Thread-128005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:18.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:18.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T15:08:18.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-28T15:08:18.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:18.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:18.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:18.280 [DEBUG] [Thread-128005] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:28.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:08:28.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:08:28.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-28T15:08:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 8, 10), 17.19, 31.45, 0.0, 18.63, 18.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:08:28.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:08:10
2025-09-28T15:08:28.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:08:29.119 [DEBUG] [Thread-128008] [transport.py] [_log()] starting thread (client mode): 0x2e3ddf00
2025-09-28T15:08:29.119 [DEBUG] [Thread-128008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:29.139 [DEBUG] [Thread-128008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:08:29.140 [INFO] [Thread-128008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:08:29.143 [DEBUG] [Thread-128008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:29.144 [DEBUG] [Thread-128008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] Compression: none
2025-09-28T15:08:29.145 [DEBUG] [Thread-128008] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:29.166 [DEBUG] [Thread-128008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:29.166 [DEBUG] [Thread-128008] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:29.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:08:29.167 [DEBUG] [Thread-128008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:08:29.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:29.169 [DEBUG] [Thread-128008] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:29.170 [DEBUG] [Thread-128008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:29.170 [DEBUG] [Thread-128008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:29.170 [DEBUG] [Thread-128008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:08:29.170 [DEBUG] [Thread-128008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:29.205 [INFO] [Thread-128008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:29.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:29.842 [DEBUG] [Thread-128008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:29.843 [DEBUG] [Thread-128008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:29.843 [DEBUG] [Thread-128008] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:08:29.883 [DEBUG] [Thread-128008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:29.884 [DEBUG] [Thread-128008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:29.895 [DEBUG] [Thread-128008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:29.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:29.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:08:29.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:08:29.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:08:29.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:29.915 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:08:29.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:29.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:29.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:08:29.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.546957 -999.00  +19.30  12.65     34   +3.40 1 1 1 1 1   888    0 14.86 -21.17 ----- 12.7 12.7 218.0 19.5 24.7 -27.3 23.8 -25.9 25.3 -26.3 26.4 -27.0
2025-09-28T15:08:29.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:08:29.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:08:29.916 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.546957
2025-09-28T15:08:29.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:08:29.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:08:29.918 [DEBUG] [Thread-128008] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:08:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:08:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:08:29.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:08:10', tmtdew=17.19, humidity=31.45, cloud=0.0, wind=18.63, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:07:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:08:30.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-28T15:08:30.012 [DEBUG] [Thread-128011] [transport.py] [_log()] starting thread (client mode): 0x2e3fb640
2025-09-28T15:08:30.012 [DEBUG] [Thread-128011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:30.027 [DEBUG] [Thread-128011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:08:30.027 [INFO] [Thread-128011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:30.035 [DEBUG] [Thread-128011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:30.036 [DEBUG] [Thread-128011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:30.036 [DEBUG] [Thread-128011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:30.036 [DEBUG] [Thread-128011] [transport.py] [_log()] Compression: none
2025-09-28T15:08:30.036 [DEBUG] [Thread-128011] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:30.095 [DEBUG] [Thread-128011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:30.096 [DEBUG] [Thread-128011] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:30.096 [DEBUG] [Thread-128011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:08:30.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:08:30.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:30.151 [DEBUG] [Thread-128011] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:30.151 [DEBUG] [Thread-128011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:30.151 [DEBUG] [Thread-128011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:30.151 [DEBUG] [Thread-128011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:08:30.151 [DEBUG] [Thread-128011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:30.171 [INFO] [Thread-128011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:30.171 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:08:30.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:31.182 [DEBUG] [Thread-128011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:31.182 [DEBUG] [Thread-128011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:31.230 [DEBUG] [Thread-128011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:31.231 [DEBUG] [Thread-128011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:31.240 [DEBUG] [Thread-128011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:31.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08: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')
2025-09-28T15:08:31.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') -> 00000000
2025-09-28T15:08:31.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:31.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:31.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:31.275 [DEBUG] [Thread-128011] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:32.804 [DEBUG] [Thread-128013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:41.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:08:41.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:08:41.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:08:41.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 8, 10), 17.19, 31.45, 0.0, 18.63, 18.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:08:41.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:08:10
2025-09-28T15:08:41.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:08:42.149 [DEBUG] [Thread-128014] [transport.py] [_log()] starting thread (client mode): 0x2b91f010
2025-09-28T15:08:42.149 [DEBUG] [Thread-128014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:42.168 [DEBUG] [Thread-128014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:08:42.168 [INFO] [Thread-128014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:08:42.171 [DEBUG] [Thread-128014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:42.171 [DEBUG] [Thread-128014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] Compression: none
2025-09-28T15:08:42.172 [DEBUG] [Thread-128014] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:42.180 [DEBUG] [Thread-128014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:42.180 [DEBUG] [Thread-128014] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:42.180 [DEBUG] [Thread-128014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:08:42.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:08:42.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:42.181 [DEBUG] [Thread-128014] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:42.181 [DEBUG] [Thread-128014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:42.181 [DEBUG] [Thread-128014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:42.182 [DEBUG] [Thread-128014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:08:42.182 [DEBUG] [Thread-128014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:42.191 [INFO] [Thread-128014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:42.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:42.814 [DEBUG] [Thread-128014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:42.814 [DEBUG] [Thread-128014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:42.814 [DEBUG] [Thread-128014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:08:42.857 [DEBUG] [Thread-128014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:42.857 [DEBUG] [Thread-128014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:42.858 [DEBUG] [Thread-128014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:42.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:42.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:08:42.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:08:42.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:42.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:08:42.877 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547652 -999.00  +19.30   6.63     35   +3.50 1 1 1 1 1   888    0 15.25 -12.96 ----- 6.6 6.6 221.8 20.5 24.7 -27.1 23.8 -25.7 25.4 -25.2 26.4 -27.9
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:08:42.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547652
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:08:42.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:08:10', tmtdew=17.19, humidity=31.45, cloud=0.0, wind=18.63, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:08:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:08:42.878 [DEBUG] [Thread-128014] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:42.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-28T15:08:42.968 [DEBUG] [Thread-128017] [transport.py] [_log()] starting thread (client mode): 0x2b91e920
2025-09-28T15:08:42.968 [DEBUG] [Thread-128017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:42.984 [DEBUG] [Thread-128017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:08:42.984 [INFO] [Thread-128017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:08:42.991 [DEBUG] [Thread-128017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:42.991 [DEBUG] [Thread-128017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] Compression: none
2025-09-28T15:08:42.992 [DEBUG] [Thread-128017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:43.049 [DEBUG] [Thread-128017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:43.049 [DEBUG] [Thread-128017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:43.050 [DEBUG] [Thread-128017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:08:43.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:08:43.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:43.106 [DEBUG] [Thread-128017] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:43.106 [DEBUG] [Thread-128017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:43.106 [DEBUG] [Thread-128017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:43.106 [DEBUG] [Thread-128017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:08:43.106 [DEBUG] [Thread-128017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:43.120 [INFO] [Thread-128017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08: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-28T15:08:43.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:44.087 [DEBUG] [Thread-128017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:44.087 [DEBUG] [Thread-128017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:44.135 [DEBUG] [Thread-128017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:44.135 [DEBUG] [Thread-128017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:44.143 [DEBUG] [Thread-128017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:44.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:44.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-28T15:08:44.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-28T15:08:44.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:44.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:44.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:44.174 [DEBUG] [Thread-128017] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:47.833 [DEBUG] [Thread-128019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:08:54.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:08:54.177 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:08:54.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-28T15:08:54.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 8, 42), 17.46, 30.81, 0.0, 21.54, 18.63, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:08:54.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:08:42
2025-09-28T15:08:54.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:08:55.011 [DEBUG] [Thread-128020] [transport.py] [_log()] starting thread (client mode): 0x2b9bb4f0
2025-09-28T15:08:55.011 [DEBUG] [Thread-128020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:55.030 [DEBUG] [Thread-128020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:08:55.030 [INFO] [Thread-128020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:55.033 [DEBUG] [Thread-128020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:55.034 [DEBUG] [Thread-128020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:55.034 [DEBUG] [Thread-128020] [transport.py] [_log()] Compression: none
2025-09-28T15:08:55.034 [DEBUG] [Thread-128020] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:55.049 [DEBUG] [Thread-128020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:55.049 [DEBUG] [Thread-128020] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:55.050 [DEBUG] [Thread-128020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:08:55.050 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:08:55.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:55.051 [DEBUG] [Thread-128020] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:55.052 [DEBUG] [Thread-128020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:55.052 [DEBUG] [Thread-128020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:55.052 [DEBUG] [Thread-128020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:08:55.052 [DEBUG] [Thread-128020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:55.088 [INFO] [Thread-128020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:55.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:55.706 [DEBUG] [Thread-128020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:55.706 [DEBUG] [Thread-128020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:55.707 [DEBUG] [Thread-128020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:08:55.747 [DEBUG] [Thread-128020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:55.747 [DEBUG] [Thread-128020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:55.751 [DEBUG] [Thread-128020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:55.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:55.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:08:55.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:08:55.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:08:55.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:55.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:08:55.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:55.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547652 -999.00  +19.30   6.63     35   +3.50 1 1 1 1 1   888    0 15.25 -12.96 ----- 6.6 6.6 221.8 20.5 24.7 -27.1 23.8 -25.7 25.4 -25.2 26.4 -27.9
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547652
2025-09-28T15:08:55.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:08:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:08:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:08:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:08:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:08:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:08:42', tmtdew=17.46, humidity=30.81, cloud=0.0, wind=21.54, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:08:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:08:55.777 [DEBUG] [Thread-128020] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:08:55.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-28T15:08:55.870 [DEBUG] [Thread-128023] [transport.py] [_log()] starting thread (client mode): 0x2b94e5c0
2025-09-28T15:08:55.870 [DEBUG] [Thread-128023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:08:55.885 [DEBUG] [Thread-128023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:08:55.885 [INFO] [Thread-128023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:08:55.893 [DEBUG] [Thread-128023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:08:55.893 [DEBUG] [Thread-128023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:08:55.893 [DEBUG] [Thread-128023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:08:55.893 [DEBUG] [Thread-128023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] client lang: <none>
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] server lang: <none>
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] kex follows: False
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:08:55.894 [DEBUG] [Thread-128023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:08:55.895 [DEBUG] [Thread-128023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:08:55.895 [DEBUG] [Thread-128023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:08:55.895 [DEBUG] [Thread-128023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:08:55.895 [DEBUG] [Thread-128023] [transport.py] [_log()] Compression: none
2025-09-28T15:08:55.895 [DEBUG] [Thread-128023] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:08:55.951 [DEBUG] [Thread-128023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:08:55.952 [DEBUG] [Thread-128023] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:08:55.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:08:55.953 [DEBUG] [Thread-128023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:08:55.953 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:08:56.011 [DEBUG] [Thread-128023] [transport.py] [_log()] userauth is OK
2025-09-28T15:08:56.011 [DEBUG] [Thread-128023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:08:56.011 [DEBUG] [Thread-128023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:08:56.011 [DEBUG] [Thread-128023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:08:56.011 [DEBUG] [Thread-128023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:08:56.031 [INFO] [Thread-128023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:08:56.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-28T15:08:56.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:08:57.103 [DEBUG] [Thread-128023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:08:57.103 [DEBUG] [Thread-128023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:08:57.152 [DEBUG] [Thread-128023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:08:57.152 [DEBUG] [Thread-128023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:08:57.161 [DEBUG] [Thread-128023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:08:57.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:08:57.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-28T15:08:57.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-28T15:08:57.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:08:57.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:08:57.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:08:57.197 [DEBUG] [Thread-128023] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:02.876 [DEBUG] [Thread-128025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:07.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:09:07.199 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:09:07.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:09:07.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 8, 42), 17.46, 30.81, 0.0, 21.54, 18.63, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:09:07.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:08:42
2025-09-28T15:09:07.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:09:08.030 [DEBUG] [Thread-128026] [transport.py] [_log()] starting thread (client mode): 0x2e349570
2025-09-28T15:09:08.030 [DEBUG] [Thread-128026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:08.050 [DEBUG] [Thread-128026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:09:08.050 [INFO] [Thread-128026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:09:08.053 [DEBUG] [Thread-128026] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:08.053 [DEBUG] [Thread-128026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:09:08.053 [DEBUG] [Thread-128026] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:08.053 [DEBUG] [Thread-128026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:08.053 [DEBUG] [Thread-128026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] Compression: none
2025-09-28T15:09:08.054 [DEBUG] [Thread-128026] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:08.072 [DEBUG] [Thread-128026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:08.073 [DEBUG] [Thread-128026] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:08.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:09:08.074 [DEBUG] [Thread-128026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:09:08.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:08.077 [DEBUG] [Thread-128026] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:08.077 [DEBUG] [Thread-128026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:08.077 [DEBUG] [Thread-128026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:08.077 [DEBUG] [Thread-128026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:09:08.077 [DEBUG] [Thread-128026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:08.093 [INFO] [Thread-128026] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:08.093 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:08.733 [DEBUG] [Thread-128026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:08.733 [DEBUG] [Thread-128026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:08.733 [DEBUG] [Thread-128026] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:09:08.774 [DEBUG] [Thread-128026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:08.775 [DEBUG] [Thread-128026] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:08.778 [DEBUG] [Thread-128026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:08.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:08.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:09:08.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:09:08.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:09:08.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:08.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:09:08.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547652 -999.00  +19.30   6.63     35   +3.50 1 1 1 1 1   888    0 15.25 -12.96 ----- 6.6 6.6 221.8 20.5 24.7 -27.1 23.8 -25.7 25.4 -25.2 26.4 -27.9
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:09:08.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547652
2025-09-28T15:09:08.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:09:08.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:09:08.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:09:08.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:09:08.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:09:08.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:08:42', tmtdew=17.46, humidity=30.81, cloud=0.0, wind=21.54, temperature=18.63, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:08:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:09:08.806 [DEBUG] [Thread-128026] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:08.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-28T15:09:08.905 [DEBUG] [Thread-128029] [transport.py] [_log()] starting thread (client mode): 0x2e38e680
2025-09-28T15:09:08.905 [DEBUG] [Thread-128029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:08.924 [DEBUG] [Thread-128029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:09:08.925 [INFO] [Thread-128029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:08.935 [DEBUG] [Thread-128029] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] Compression: none
2025-09-28T15:09:08.936 [DEBUG] [Thread-128029] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:08.995 [DEBUG] [Thread-128029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:08.996 [DEBUG] [Thread-128029] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:08.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:09:08.997 [DEBUG] [Thread-128029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:09:08.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:09.051 [DEBUG] [Thread-128029] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:09.051 [DEBUG] [Thread-128029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:09.051 [DEBUG] [Thread-128029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:09.051 [DEBUG] [Thread-128029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:09:09.051 [DEBUG] [Thread-128029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:09.076 [INFO] [Thread-128029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:09.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:09:09.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:09.160 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:09.161 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:10.041 [DEBUG] [Thread-128029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:10.042 [DEBUG] [Thread-128029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:10.090 [DEBUG] [Thread-128029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:10.090 [DEBUG] [Thread-128029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:10.099 [DEBUG] [Thread-128029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:10.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:10.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')
2025-09-28T15:09:10.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-28T15:09:10.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:10.129 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:10.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:10.138 [DEBUG] [Thread-128029] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:16.934 [DEBUG] [Thread-128031 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:17.921 [DEBUG] [Thread-128032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:20.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:09:20.140 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:09:20.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:09:20.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 9, 14), 17.52, 30.67, 0.0, 20.42, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:09:20.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:09:14
2025-09-28T15:09:20.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:09:20.981 [DEBUG] [Thread-128033] [transport.py] [_log()] starting thread (client mode): 0x2e34b9a0
2025-09-28T15:09:20.981 [DEBUG] [Thread-128033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:21.001 [DEBUG] [Thread-128033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:09:21.001 [INFO] [Thread-128033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:21.004 [DEBUG] [Thread-128033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] Compression: none
2025-09-28T15:09:21.005 [DEBUG] [Thread-128033] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:21.022 [DEBUG] [Thread-128033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:21.022 [DEBUG] [Thread-128033] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:21.022 [DEBUG] [Thread-128033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:09:21.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:09:21.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:21.024 [DEBUG] [Thread-128033] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:21.024 [DEBUG] [Thread-128033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:21.025 [DEBUG] [Thread-128033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:21.025 [DEBUG] [Thread-128033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:09:21.025 [DEBUG] [Thread-128033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:21.042 [INFO] [Thread-128033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:21.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:21.689 [DEBUG] [Thread-128033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:21.690 [DEBUG] [Thread-128033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:21.690 [DEBUG] [Thread-128033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:09:21.730 [DEBUG] [Thread-128033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:21.730 [DEBUG] [Thread-128033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:21.733 [DEBUG] [Thread-128033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:21.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:21.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:09:21.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:09:21.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:09:21.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:21.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:09:21.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:21.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547999 -999.00  +19.60  21.62     35   +3.80 1 1 1 1 1   888    0 15.38 -10.32 ----- 21.6 21.6 210.8 29.2 24.8 -26.7 24.0 -26.2 25.4 -27.6 26.6 -27.1
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547999
2025-09-28T15:09:21.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:09:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:09:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:09:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:09:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:09:21.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:09:14', tmtdew=17.52, humidity=30.67, cloud=0.0, wind=20.42, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:09:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:09:21.758 [DEBUG] [Thread-128033] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:21.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-28T15:09:21.856 [DEBUG] [Thread-128036] [transport.py] [_log()] starting thread (client mode): 0x2e361090
2025-09-28T15:09:21.856 [DEBUG] [Thread-128036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:21.871 [DEBUG] [Thread-128036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:09:21.872 [INFO] [Thread-128036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:09:21.879 [DEBUG] [Thread-128036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:21.879 [DEBUG] [Thread-128036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:09:21.879 [DEBUG] [Thread-128036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] Compression: none
2025-09-28T15:09:21.880 [DEBUG] [Thread-128036] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:21.938 [DEBUG] [Thread-128036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:21.939 [DEBUG] [Thread-128036] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:21.939 [DEBUG] [Thread-128036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:09:21.939 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:09:21.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:21.994 [DEBUG] [Thread-128036] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:21.994 [DEBUG] [Thread-128036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:21.994 [DEBUG] [Thread-128036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:21.995 [DEBUG] [Thread-128036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:09:21.995 [DEBUG] [Thread-128036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:22.017 [INFO] [Thread-128036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:22.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-28T15:09:22.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:23.042 [DEBUG] [Thread-128036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:23.042 [DEBUG] [Thread-128036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:23.091 [DEBUG] [Thread-128036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:23.091 [DEBUG] [Thread-128036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:23.100 [DEBUG] [Thread-128036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:23.109 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09: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')
2025-09-28T15:09:23.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') -> 00000000
2025-09-28T15:09:23.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:23.127 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:23.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:23.135 [DEBUG] [Thread-128036] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:32.950 [DEBUG] [Thread-128038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:33.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:09:33.138 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:09:33.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:09:33.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 9, 14), 17.52, 30.67, 0.0, 20.42, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:09:33.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:09:14
2025-09-28T15:09:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:09:33.963 [DEBUG] [Thread-128039] [transport.py] [_log()] starting thread (client mode): 0x2e3dc790
2025-09-28T15:09:33.963 [DEBUG] [Thread-128039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:33.984 [DEBUG] [Thread-128039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:09:33.984 [INFO] [Thread-128039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:33.987 [DEBUG] [Thread-128039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] Compression: none
2025-09-28T15:09:33.988 [DEBUG] [Thread-128039] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:34.006 [DEBUG] [Thread-128039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:34.006 [DEBUG] [Thread-128039] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:34.007 [DEBUG] [Thread-128039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:09:34.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:09:34.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:34.009 [DEBUG] [Thread-128039] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:34.009 [DEBUG] [Thread-128039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:34.009 [DEBUG] [Thread-128039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:34.009 [DEBUG] [Thread-128039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:09:34.010 [DEBUG] [Thread-128039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:34.045 [INFO] [Thread-128039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:34.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:34.697 [DEBUG] [Thread-128039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:34.697 [DEBUG] [Thread-128039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:34.697 [DEBUG] [Thread-128039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:09:34.738 [DEBUG] [Thread-128039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:34.738 [DEBUG] [Thread-128039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:34.741 [DEBUG] [Thread-128039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:34.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:34.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:09:34.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:09:34.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:09:34.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:34.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:09:34.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:34.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:34.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:09:34.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547999 -999.00  +19.60  21.62     35   +3.80 1 1 1 1 1   888    0 15.38 -10.32 ----- 21.6 21.6 210.8 29.2 24.8 -26.7 24.0 -26.2 25.4 -27.6 26.6 -27.1
2025-09-28T15:09:34.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:09:34.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:09:34.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547999
2025-09-28T15:09:34.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:09:34.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:09:34.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:09:34.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:09:34.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:09:34.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:09:14', tmtdew=17.52, humidity=30.67, cloud=0.0, wind=20.42, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:09:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:09:34.766 [DEBUG] [Thread-128039] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:34.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-28T15:09:34.862 [DEBUG] [Thread-128042] [transport.py] [_log()] starting thread (client mode): 0x2e34b490
2025-09-28T15:09:34.862 [DEBUG] [Thread-128042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:34.877 [DEBUG] [Thread-128042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:09:34.877 [INFO] [Thread-128042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:09:34.885 [DEBUG] [Thread-128042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:34.885 [DEBUG] [Thread-128042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:09:34.885 [DEBUG] [Thread-128042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:34.885 [DEBUG] [Thread-128042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] Compression: none
2025-09-28T15:09:34.886 [DEBUG] [Thread-128042] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:34.942 [DEBUG] [Thread-128042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:34.942 [DEBUG] [Thread-128042] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:34.943 [DEBUG] [Thread-128042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:09:34.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:09:34.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:35.001 [DEBUG] [Thread-128042] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:35.001 [DEBUG] [Thread-128042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:35.001 [DEBUG] [Thread-128042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:35.001 [DEBUG] [Thread-128042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:09:35.001 [DEBUG] [Thread-128042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:35.024 [INFO] [Thread-128042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:35.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-28T15:09:35.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:36.022 [DEBUG] [Thread-128042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:36.022 [DEBUG] [Thread-128042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:36.070 [DEBUG] [Thread-128042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:36.070 [DEBUG] [Thread-128042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:36.079 [DEBUG] [Thread-128042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:36.087 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:36.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-28T15:09:36.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-28T15:09:36.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:36.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:36.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:36.114 [DEBUG] [Thread-128042] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:46.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:09:46.116 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:09:46.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-28T15:09:46.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 9, 14), 17.52, 30.67, 0.0, 20.42, 18.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:09:46.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:09:14
2025-09-28T15:09:46.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:09:46.992 [DEBUG] [Thread-128044] [transport.py] [_log()] starting thread (client mode): 0x2b96fd90
2025-09-28T15:09:46.993 [DEBUG] [Thread-128044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:47.016 [DEBUG] [Thread-128044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:09:47.016 [INFO] [Thread-128044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:09:47.019 [DEBUG] [Thread-128044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:47.019 [DEBUG] [Thread-128044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] Compression: none
2025-09-28T15:09:47.020 [DEBUG] [Thread-128044] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:47.035 [DEBUG] [Thread-128044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:47.035 [DEBUG] [Thread-128044] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:47.035 [DEBUG] [Thread-128044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:09:47.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:09:47.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:47.035 [DEBUG] [Thread-128044] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:47.036 [DEBUG] [Thread-128044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:47.036 [DEBUG] [Thread-128044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:47.036 [DEBUG] [Thread-128044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:09:47.036 [DEBUG] [Thread-128044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:47.051 [INFO] [Thread-128044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:47.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:47.653 [DEBUG] [Thread-128044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:47.653 [DEBUG] [Thread-128044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:47.653 [DEBUG] [Thread-128044] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:09:47.694 [DEBUG] [Thread-128044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:47.694 [DEBUG] [Thread-128044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:47.696 [DEBUG] [Thread-128044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:47.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:47.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:09:47.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:09:47.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:47.707 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:09:47.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.547999 -999.00  +19.60  21.62     35   +3.80 1 1 1 1 1   888    0 15.38 -10.32 ----- 21.6 21.6 210.8 29.2 24.8 -26.7 24.0 -26.2 25.4 -27.6 26.6 -27.1
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:09:47.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.547999
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:09:47.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:09:14', tmtdew=17.52, humidity=30.67, cloud=0.0, wind=20.42, temperature=18.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:09:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:09:47.708 [DEBUG] [Thread-128044] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:47.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-28T15:09:47.792 [DEBUG] [Thread-128047] [transport.py] [_log()] starting thread (client mode): 0x2b96d450
2025-09-28T15:09:47.792 [DEBUG] [Thread-128047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:47.806 [DEBUG] [Thread-128047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:09:47.806 [INFO] [Thread-128047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:47.814 [DEBUG] [Thread-128047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:47.815 [DEBUG] [Thread-128047] [transport.py] [_log()] Compression: none
2025-09-28T15:09:47.815 [DEBUG] [Thread-128047] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:47.873 [DEBUG] [Thread-128047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:47.873 [DEBUG] [Thread-128047] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:47.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:09:47.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:47.874 [DEBUG] [Thread-128047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:09:47.930 [DEBUG] [Thread-128047] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:47.930 [DEBUG] [Thread-128047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:47.930 [DEBUG] [Thread-128047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:47.930 [DEBUG] [Thread-128047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:09:47.930 [DEBUG] [Thread-128047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:47.946 [INFO] [Thread-128047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:47.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:09:47.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:09:47.993 [DEBUG] [Thread-128049 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:09:48.943 [DEBUG] [Thread-128047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:09:48.943 [DEBUG] [Thread-128047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:09:48.991 [DEBUG] [Thread-128047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:09:48.991 [DEBUG] [Thread-128047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:09:49.000 [DEBUG] [Thread-128047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:09:49.009 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:09:49.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-28T15:09:49.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-28T15:09:49.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:09:49.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:09:49.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:09:49.035 [DEBUG] [Thread-128047] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:09:59.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:09:59.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:09:59.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-28T15:09:59.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 9, 46), 17.51, 30.92, 0.0, 25.46, 18.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:09:59.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:09:46
2025-09-28T15:09:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:09:59.878 [DEBUG] [Thread-128050] [transport.py] [_log()] starting thread (client mode): 0x2e360520
2025-09-28T15:09:59.878 [DEBUG] [Thread-128050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:09:59.898 [DEBUG] [Thread-128050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:09:59.898 [INFO] [Thread-128050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:09:59.901 [DEBUG] [Thread-128050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:09:59.901 [DEBUG] [Thread-128050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] client lang: <none>
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] server lang: <none>
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] kex follows: False
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] Compression: none
2025-09-28T15:09:59.902 [DEBUG] [Thread-128050] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:09:59.910 [DEBUG] [Thread-128050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:09:59.910 [DEBUG] [Thread-128050] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:09:59.911 [DEBUG] [Thread-128050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:09:59.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:09:59.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:09:59.912 [DEBUG] [Thread-128050] [transport.py] [_log()] userauth is OK
2025-09-28T15:09:59.912 [DEBUG] [Thread-128050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:09:59.913 [DEBUG] [Thread-128050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:09:59.913 [DEBUG] [Thread-128050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:09:59.913 [DEBUG] [Thread-128050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:09:59.932 [INFO] [Thread-128050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:09:59.932 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:00.574 [DEBUG] [Thread-128050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:00.574 [DEBUG] [Thread-128050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:00.574 [DEBUG] [Thread-128050] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:10:00.615 [DEBUG] [Thread-128050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:00.616 [DEBUG] [Thread-128050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:00.619 [DEBUG] [Thread-128050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:00.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:00.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:10:00.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:10:00.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:10:00.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:00.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:10:00.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:00.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:00.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:10:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.548346 -999.00  +19.00  12.21     35   +3.50 1 1 1 1 1   888    0 15.14 -8.71 ----- 12.2 12.2 240.7 25.2 24.5 -29.8 23.8 -26.9 25.2 -26.4 26.3 -31.3
2025-09-28T15:10:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:10:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:10:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.548346
2025-09-28T15:10:00.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:10:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:10:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:10:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:10:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:10:00.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:09:46', tmtdew=17.51, humidity=30.92, cloud=0.0, wind=25.46, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:09:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:10:00.645 [DEBUG] [Thread-128050] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:00.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:10:00.735 [DEBUG] [Thread-128053] [transport.py] [_log()] starting thread (client mode): 0x2e361630
2025-09-28T15:10:00.735 [DEBUG] [Thread-128053] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:00.750 [DEBUG] [Thread-128053] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:10:00.750 [INFO] [Thread-128053] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:00.757 [DEBUG] [Thread-128053] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] Compression: none
2025-09-28T15:10:00.758 [DEBUG] [Thread-128053] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:00.814 [DEBUG] [Thread-128053] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:00.815 [DEBUG] [Thread-128053] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:00.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:10:00.816 [DEBUG] [Thread-128053] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:10:00.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:00.870 [DEBUG] [Thread-128053] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:00.870 [DEBUG] [Thread-128053] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:00.871 [DEBUG] [Thread-128053] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:00.871 [DEBUG] [Thread-128053] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:10:00.871 [DEBUG] [Thread-128053] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:00.890 [INFO] [Thread-128053] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:00.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-28T15:10:00.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:01.869 [DEBUG] [Thread-128053] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:01.869 [DEBUG] [Thread-128053] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:01.919 [DEBUG] [Thread-128053] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:01.919 [DEBUG] [Thread-128053] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:01.929 [DEBUG] [Thread-128053] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:01.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:01.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-28T15:10:01.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') -> 00000000
2025-09-28T15:10:01.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:01.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:01.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:01.967 [DEBUG] [Thread-128053] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:03.021 [DEBUG] [Thread-128055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:09.302 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:09.304 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:11.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:10:11.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:10:11.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-28T15:10:12.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 9, 46), 17.51, 30.92, 0.0, 25.46, 18.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:10:12.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:09:46
2025-09-28T15:10:12.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:10:12.796 [DEBUG] [Thread-128056] [transport.py] [_log()] starting thread (client mode): 0x2b96e290
2025-09-28T15:10:12.796 [DEBUG] [Thread-128056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:12.817 [DEBUG] [Thread-128056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:10:12.817 [INFO] [Thread-128056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] Compression: none
2025-09-28T15:10:12.820 [DEBUG] [Thread-128056] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:12.837 [DEBUG] [Thread-128056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:12.838 [DEBUG] [Thread-128056] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:12.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:10:12.839 [DEBUG] [Thread-128056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:10:12.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:12.841 [DEBUG] [Thread-128056] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:12.841 [DEBUG] [Thread-128056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:12.841 [DEBUG] [Thread-128056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:12.841 [DEBUG] [Thread-128056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:10:12.842 [DEBUG] [Thread-128056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:12.865 [INFO] [Thread-128056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:12.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:16.983 [DEBUG] [Thread-128058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:18.065 [DEBUG] [Thread-128059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:18.960 [DEBUG] [Thread-128056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:18.960 [DEBUG] [Thread-128056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:18.960 [DEBUG] [Thread-128056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:10:19.001 [DEBUG] [Thread-128056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:19.001 [DEBUG] [Thread-128056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:19.003 [DEBUG] [Thread-128056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:19.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:19.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:10:19.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:10:19.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:10:19.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:19.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:10:19.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.548346 -999.00  +19.00  12.21     35   +3.50 1 1 1 1 1   888    0 15.14 -8.71 ----- 12.2 12.2 240.7 25.2 24.5 -29.8 23.8 -26.9 25.2 -26.4 26.3 -31.3
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:10:19.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.548346
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:10:19.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:09:46', tmtdew=17.51, humidity=30.92, cloud=0.0, wind=25.46, temperature=18.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:09:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:10:19.377 [DEBUG] [Thread-128056] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:19.457 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:10:19.466 [DEBUG] [Thread-128061] [transport.py] [_log()] starting thread (client mode): 0x2e361c30
2025-09-28T15:10:19.466 [DEBUG] [Thread-128061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:19.481 [DEBUG] [Thread-128061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:10:19.481 [INFO] [Thread-128061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:10:19.488 [DEBUG] [Thread-128061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:19.488 [DEBUG] [Thread-128061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] Compression: none
2025-09-28T15:10:19.489 [DEBUG] [Thread-128061] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:19.548 [DEBUG] [Thread-128061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:19.549 [DEBUG] [Thread-128061] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:19.549 [DEBUG] [Thread-128061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:10:19.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:10:19.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:19.610 [DEBUG] [Thread-128061] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:19.610 [DEBUG] [Thread-128061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:19.610 [DEBUG] [Thread-128061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:19.610 [DEBUG] [Thread-128061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:10:19.610 [DEBUG] [Thread-128061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:19.624 [INFO] [Thread-128061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:19.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-28T15:10:19.624 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:20.585 [DEBUG] [Thread-128061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:20.585 [DEBUG] [Thread-128061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:20.636 [DEBUG] [Thread-128061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:20.636 [DEBUG] [Thread-128061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:20.645 [DEBUG] [Thread-128061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:20.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:20.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')
2025-09-28T15:10:20.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-28T15:10:20.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:20.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:20.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:20.681 [DEBUG] [Thread-128061] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:30.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:10:30.674 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:10:30.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-28T15:10:31.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 10, 18), 17.7, 30.55, 0.0, 25.76, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:10:31.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:10:18
2025-09-28T15:10:31.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:10:31.555 [DEBUG] [Thread-128063] [transport.py] [_log()] starting thread (client mode): 0x2e363940
2025-09-28T15:10:31.555 [DEBUG] [Thread-128063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:31.576 [DEBUG] [Thread-128063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:10:31.576 [INFO] [Thread-128063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] Compression: none
2025-09-28T15:10:31.579 [DEBUG] [Thread-128063] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:31.595 [DEBUG] [Thread-128063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:31.595 [DEBUG] [Thread-128063] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:31.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:10:31.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:31.596 [DEBUG] [Thread-128063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:10:31.596 [DEBUG] [Thread-128063] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:31.596 [DEBUG] [Thread-128063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:31.596 [DEBUG] [Thread-128063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:31.597 [DEBUG] [Thread-128063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:10:31.597 [DEBUG] [Thread-128063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:31.606 [INFO] [Thread-128063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:31.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:32.224 [DEBUG] [Thread-128063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:32.224 [DEBUG] [Thread-128063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:32.224 [DEBUG] [Thread-128063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:10:32.265 [DEBUG] [Thread-128063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:32.265 [DEBUG] [Thread-128063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:32.267 [DEBUG] [Thread-128063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:32.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:32.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:10:32.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:10:32.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:10:32.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:32.276 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:10:32.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.548693 -999.00  +18.80  13.26     36   +3.40 1 1 1 1 1   888    0 15.37 -4.91 ----- 13.3 13.3 231.7 31.7 24.5 -27.5 23.8 -26.8 25.1 -28.2 26.2 -28.4
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.548693
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:10:32.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:10:18', tmtdew=17.7, humidity=30.55, cloud=0.0, wind=25.76, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:10:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:10:32.277 [DEBUG] [Thread-128063] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:32.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:10:32.360 [DEBUG] [Thread-128066] [transport.py] [_log()] starting thread (client mode): 0x2e34b040
2025-09-28T15:10:32.360 [DEBUG] [Thread-128066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:32.375 [DEBUG] [Thread-128066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:10:32.375 [INFO] [Thread-128066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] Compression: none
2025-09-28T15:10:32.383 [DEBUG] [Thread-128066] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:32.440 [DEBUG] [Thread-128066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:32.441 [DEBUG] [Thread-128066] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:32.441 [DEBUG] [Thread-128066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:10:32.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:10:32.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:32.497 [DEBUG] [Thread-128066] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:32.497 [DEBUG] [Thread-128066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:32.497 [DEBUG] [Thread-128066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:32.497 [DEBUG] [Thread-128066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:10:32.497 [DEBUG] [Thread-128066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:32.512 [INFO] [Thread-128066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:32.512 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:10:32.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:33.095 [DEBUG] [Thread-128068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:33.516 [DEBUG] [Thread-128066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:33.516 [DEBUG] [Thread-128066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:33.564 [DEBUG] [Thread-128066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:33.564 [DEBUG] [Thread-128066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:33.572 [DEBUG] [Thread-128066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:33.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:33.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-28T15:10:33.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-28T15:10:33.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:33.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:33.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:33.607 [DEBUG] [Thread-128066] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:43.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:10:43.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:10:43.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-28T15:10:44.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 10, 18), 17.7, 30.55, 0.0, 25.76, 18.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:10:44.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:10:18
2025-09-28T15:10:44.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:10:44.454 [DEBUG] [Thread-128069] [transport.py] [_log()] starting thread (client mode): 0x2b96c370
2025-09-28T15:10:44.454 [DEBUG] [Thread-128069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:44.475 [DEBUG] [Thread-128069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:10:44.475 [INFO] [Thread-128069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:10:44.479 [DEBUG] [Thread-128069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:44.479 [DEBUG] [Thread-128069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:10:44.479 [DEBUG] [Thread-128069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:44.479 [DEBUG] [Thread-128069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:44.479 [DEBUG] [Thread-128069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] Compression: none
2025-09-28T15:10:44.480 [DEBUG] [Thread-128069] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:44.498 [DEBUG] [Thread-128069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:44.499 [DEBUG] [Thread-128069] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:44.499 [DEBUG] [Thread-128069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:10:44.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:10:44.500 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:44.501 [DEBUG] [Thread-128069] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:44.502 [DEBUG] [Thread-128069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:44.502 [DEBUG] [Thread-128069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:44.502 [DEBUG] [Thread-128069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:10:44.502 [DEBUG] [Thread-128069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:44.526 [INFO] [Thread-128069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:44.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:46.103 [DEBUG] [Thread-128069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:46.103 [DEBUG] [Thread-128069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:46.103 [DEBUG] [Thread-128069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:10:46.143 [DEBUG] [Thread-128069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:46.143 [DEBUG] [Thread-128069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:46.146 [DEBUG] [Thread-128069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:46.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:46.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:10:46.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:10:46.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:10:46.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:46.168 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:10:46.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:46.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:46.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:10:46.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.548693 -999.00  +18.80  13.26     36   +3.40 1 1 1 1 1   888    0 15.37 -4.91 ----- 13.3 13.3 231.7 31.7 24.5 -27.5 23.8 -26.8 25.1 -28.2 26.2 -28.4
2025-09-28T15:10:46.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:10:46.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:10:46.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.548693
2025-09-28T15:10:46.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:10:46.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:10:46.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:10:46.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:10:46.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:10:46.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:10:18', tmtdew=17.7, humidity=30.55, cloud=0.0, wind=25.76, temperature=18.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:10:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:10:46.171 [DEBUG] [Thread-128069] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:46.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-28T15:10:46.266 [DEBUG] [Thread-128072] [transport.py] [_log()] starting thread (client mode): 0x2e348910
2025-09-28T15:10:46.266 [DEBUG] [Thread-128072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:46.280 [DEBUG] [Thread-128072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:10:46.281 [INFO] [Thread-128072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:10:46.288 [DEBUG] [Thread-128072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:46.288 [DEBUG] [Thread-128072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:46.289 [DEBUG] [Thread-128072] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] Compression: none
2025-09-28T15:10:46.290 [DEBUG] [Thread-128072] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:46.346 [DEBUG] [Thread-128072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:46.347 [DEBUG] [Thread-128072] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:46.347 [DEBUG] [Thread-128072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:10:46.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:10:46.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:46.401 [DEBUG] [Thread-128072] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:46.402 [DEBUG] [Thread-128072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:46.402 [DEBUG] [Thread-128072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:46.402 [DEBUG] [Thread-128072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:10:46.402 [DEBUG] [Thread-128072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:46.421 [INFO] [Thread-128072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:46.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-28T15:10:46.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:47.422 [DEBUG] [Thread-128072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:47.422 [DEBUG] [Thread-128072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:47.470 [DEBUG] [Thread-128072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:47.471 [DEBUG] [Thread-128072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:47.479 [DEBUG] [Thread-128072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:47.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:47.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')
2025-09-28T15:10:47.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-28T15:10:47.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:47.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:47.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:47.514 [DEBUG] [Thread-128072] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:48.131 [DEBUG] [Thread-128074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:10:57.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:10:57.517 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:10:57.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-28T15:10:58.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 10, 50), 17.23, 31.7, 0.0, 23.91, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:10:58.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:10:50
2025-09-28T15:10:58.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:10:58.360 [DEBUG] [Thread-128075] [transport.py] [_log()] starting thread (client mode): 0x2e3dcf40
2025-09-28T15:10:58.360 [DEBUG] [Thread-128075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:58.380 [DEBUG] [Thread-128075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:10:58.380 [INFO] [Thread-128075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:10:58.382 [DEBUG] [Thread-128075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:58.382 [DEBUG] [Thread-128075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] Compression: none
2025-09-28T15:10:58.383 [DEBUG] [Thread-128075] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:58.400 [DEBUG] [Thread-128075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:58.400 [DEBUG] [Thread-128075] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:58.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:10:58.401 [DEBUG] [Thread-128075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:10:58.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:58.403 [DEBUG] [Thread-128075] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:58.403 [DEBUG] [Thread-128075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:58.403 [DEBUG] [Thread-128075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:58.403 [DEBUG] [Thread-128075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:10:58.403 [DEBUG] [Thread-128075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:58.427 [INFO] [Thread-128075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:58.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:10:59.009 [DEBUG] [Thread-128075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:10:59.009 [DEBUG] [Thread-128075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:10:59.010 [DEBUG] [Thread-128075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:10:59.050 [DEBUG] [Thread-128075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:10:59.051 [DEBUG] [Thread-128075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:10:59.054 [DEBUG] [Thread-128075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:10:59.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:10:59.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:10:59.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:10:59.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:10:59.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:10:59.084 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:10:59.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:10:59.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549041 -999.00  +18.70  16.17     37   +3.80 1 1 1 1 1   888    0 15.31 -5.92 ----- 16.2 16.2 240.2 21.4 24.4 -27.9 23.7 -26.8 25.1 -26.2 26.1 -28.8
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549041
2025-09-28T15:10:59.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:10:59.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:10:59.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:10:59.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:10:59.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:10:59.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:10:50', tmtdew=17.23, humidity=31.7, cloud=0.0, wind=23.91, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:10:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:10:59.086 [DEBUG] [Thread-128075] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:10:59.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-28T15:10:59.189 [DEBUG] [Thread-128078] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-28T15:10:59.189 [DEBUG] [Thread-128078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:10:59.203 [DEBUG] [Thread-128078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:10:59.203 [INFO] [Thread-128078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] client lang: <none>
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] server lang: <none>
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] kex follows: False
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:10:59.211 [DEBUG] [Thread-128078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:10:59.212 [DEBUG] [Thread-128078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:10:59.212 [DEBUG] [Thread-128078] [transport.py] [_log()] Compression: none
2025-09-28T15:10:59.212 [DEBUG] [Thread-128078] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:10:59.271 [DEBUG] [Thread-128078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:10:59.272 [DEBUG] [Thread-128078] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:10:59.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:10:59.273 [DEBUG] [Thread-128078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:10:59.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:10:59.329 [DEBUG] [Thread-128078] [transport.py] [_log()] userauth is OK
2025-09-28T15:10:59.330 [DEBUG] [Thread-128078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:10:59.330 [DEBUG] [Thread-128078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:10:59.330 [DEBUG] [Thread-128078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:10:59.330 [DEBUG] [Thread-128078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:10:59.349 [INFO] [Thread-128078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:10:59.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:10:59.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:00.363 [DEBUG] [Thread-128078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:00.363 [DEBUG] [Thread-128078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:00.412 [DEBUG] [Thread-128078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:00.412 [DEBUG] [Thread-128078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:00.421 [DEBUG] [Thread-128078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:00.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:00.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')
2025-09-28T15:11:00.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') -> 00000000
2025-09-28T15:11:00.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:00.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:00.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:00.456 [DEBUG] [Thread-128078] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:03.166 [DEBUG] [Thread-128080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:09.453 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:09.454 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:10.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:11:10.459 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:11:10.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:11:11.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 10, 50), 17.23, 31.7, 0.0, 23.91, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:11:11.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:10:50
2025-09-28T15:11:11.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:11:11.305 [DEBUG] [Thread-128081] [transport.py] [_log()] starting thread (client mode): 0x2b96f520
2025-09-28T15:11:11.306 [DEBUG] [Thread-128081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:11.326 [DEBUG] [Thread-128081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:11:11.326 [INFO] [Thread-128081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:11.329 [DEBUG] [Thread-128081] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] Compression: none
2025-09-28T15:11:11.330 [DEBUG] [Thread-128081] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:11.348 [DEBUG] [Thread-128081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:11.348 [DEBUG] [Thread-128081] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:11.349 [DEBUG] [Thread-128081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:11:11.349 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:11:11.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:11.351 [DEBUG] [Thread-128081] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:11.351 [DEBUG] [Thread-128081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:11.351 [DEBUG] [Thread-128081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:11.351 [DEBUG] [Thread-128081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:11:11.351 [DEBUG] [Thread-128081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:11.375 [INFO] [Thread-128081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:11.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:12.203 [DEBUG] [Thread-128081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:12.203 [DEBUG] [Thread-128081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:12.204 [DEBUG] [Thread-128081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:11:12.244 [DEBUG] [Thread-128081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:12.244 [DEBUG] [Thread-128081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:12.246 [DEBUG] [Thread-128081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:12.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:12.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:11:12.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:11:12.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:11:12.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:12.270 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:11:12.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549041 -999.00  +18.70  16.17     37   +3.80 1 1 1 1 1   888    0 15.31 -5.92 ----- 16.2 16.2 240.2 21.4 24.4 -27.9 23.7 -26.8 25.1 -26.2 26.1 -28.8
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:11:12.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549041
2025-09-28T15:11:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:11:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:11:12.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:11:12.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:11:12.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:11:12.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:10:50', tmtdew=17.23, humidity=31.7, cloud=0.0, wind=23.91, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:10:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:11:12.273 [DEBUG] [Thread-128081] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:12.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-28T15:11:12.368 [DEBUG] [Thread-128084] [transport.py] [_log()] starting thread (client mode): 0x2e362d10
2025-09-28T15:11:12.368 [DEBUG] [Thread-128084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:12.385 [DEBUG] [Thread-128084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:11:12.385 [INFO] [Thread-128084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:12.393 [DEBUG] [Thread-128084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:12.394 [DEBUG] [Thread-128084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:12.394 [DEBUG] [Thread-128084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:12.394 [DEBUG] [Thread-128084] [transport.py] [_log()] Compression: none
2025-09-28T15:11:12.394 [DEBUG] [Thread-128084] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:12.449 [DEBUG] [Thread-128084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:12.449 [DEBUG] [Thread-128084] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:12.450 [DEBUG] [Thread-128084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:11:12.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:11:12.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:12.506 [DEBUG] [Thread-128084] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:12.506 [DEBUG] [Thread-128084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:12.506 [DEBUG] [Thread-128084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:12.506 [DEBUG] [Thread-128084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:11:12.506 [DEBUG] [Thread-128084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:12.526 [INFO] [Thread-128084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11: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-28T15:11:12.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:13.536 [DEBUG] [Thread-128084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:13.536 [DEBUG] [Thread-128084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:13.584 [DEBUG] [Thread-128084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:13.584 [DEBUG] [Thread-128084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:13.593 [DEBUG] [Thread-128084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:13.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:13.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-28T15:11:13.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-28T15:11:13.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:13.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:13.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:13.627 [DEBUG] [Thread-128084] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:17.035 [DEBUG] [Thread-128086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:18.206 [DEBUG] [Thread-128087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:23.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:11:23.630 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:11:23.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-28T15:11:24.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 10, 50), 17.23, 31.7, 0.0, 23.91, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:11:24.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:10:50
2025-09-28T15:11:24.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:11:24.485 [DEBUG] [Thread-128088] [transport.py] [_log()] starting thread (client mode): 0x2e3dd900
2025-09-28T15:11:24.485 [DEBUG] [Thread-128088] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:24.505 [DEBUG] [Thread-128088] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:11:24.506 [INFO] [Thread-128088] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] Compression: none
2025-09-28T15:11:24.509 [DEBUG] [Thread-128088] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:24.517 [DEBUG] [Thread-128088] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:24.518 [DEBUG] [Thread-128088] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:24.518 [DEBUG] [Thread-128088] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:11:24.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:11:24.519 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:24.520 [DEBUG] [Thread-128088] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:24.520 [DEBUG] [Thread-128088] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:24.520 [DEBUG] [Thread-128088] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:24.520 [DEBUG] [Thread-128088] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:11:24.520 [DEBUG] [Thread-128088] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:24.537 [INFO] [Thread-128088] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:24.537 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:25.277 [DEBUG] [Thread-128088] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:25.277 [DEBUG] [Thread-128088] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:25.277 [DEBUG] [Thread-128088] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:11:25.318 [DEBUG] [Thread-128088] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:25.318 [DEBUG] [Thread-128088] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:25.321 [DEBUG] [Thread-128088] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:25.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:25.334 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:11:25.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:11:25.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:11:25.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:25.344 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:11:25.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:25.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:25.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:11:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549041 -999.00  +18.70  16.17     37   +3.80 1 1 1 1 1   888    0 15.31 -5.92 ----- 16.2 16.2 240.2 21.4 24.4 -27.9 23.7 -26.8 25.1 -26.2 26.1 -28.8
2025-09-28T15:11:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:11:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:11:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549041
2025-09-28T15:11:25.345 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:11:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:11:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:11:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:11:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:11:25.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:10:50', tmtdew=17.23, humidity=31.7, cloud=0.0, wind=23.91, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:10:37.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:11:25.346 [DEBUG] [Thread-128088] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:25.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-28T15:11:25.440 [DEBUG] [Thread-128091] [transport.py] [_log()] starting thread (client mode): 0x2b96f520
2025-09-28T15:11:25.440 [DEBUG] [Thread-128091] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:25.455 [DEBUG] [Thread-128091] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:11:25.455 [INFO] [Thread-128091] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:25.463 [DEBUG] [Thread-128091] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:25.464 [DEBUG] [Thread-128091] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:25.465 [DEBUG] [Thread-128091] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:25.465 [DEBUG] [Thread-128091] [transport.py] [_log()] Compression: none
2025-09-28T15:11:25.465 [DEBUG] [Thread-128091] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:25.521 [DEBUG] [Thread-128091] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:25.522 [DEBUG] [Thread-128091] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:25.522 [DEBUG] [Thread-128091] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:11:25.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:11:25.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:25.583 [DEBUG] [Thread-128091] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:25.583 [DEBUG] [Thread-128091] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:25.583 [DEBUG] [Thread-128091] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:25.583 [DEBUG] [Thread-128091] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:11:25.584 [DEBUG] [Thread-128091] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:25.606 [INFO] [Thread-128091] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:25.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-28T15:11:25.607 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:26.624 [DEBUG] [Thread-128091] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:26.624 [DEBUG] [Thread-128091] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:26.672 [DEBUG] [Thread-128091] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:26.672 [DEBUG] [Thread-128091] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:26.681 [DEBUG] [Thread-128091] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:26.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:26.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-28T15:11:26.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-28T15:11:26.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:26.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:26.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:26.715 [DEBUG] [Thread-128091] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:33.239 [DEBUG] [Thread-128093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:36.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:11:36.719 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:11:36.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-28T15:11:37.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 11, 21), 17.4, 31.39, 0.0, 20.26, 18.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:11:37.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:11:21
2025-09-28T15:11:37.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:11:37.573 [DEBUG] [Thread-128094] [transport.py] [_log()] starting thread (client mode): 0x2e361d20
2025-09-28T15:11:37.573 [DEBUG] [Thread-128094] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:37.593 [DEBUG] [Thread-128094] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:11:37.594 [INFO] [Thread-128094] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:37.597 [DEBUG] [Thread-128094] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] Compression: none
2025-09-28T15:11:37.598 [DEBUG] [Thread-128094] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:37.616 [DEBUG] [Thread-128094] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:37.617 [DEBUG] [Thread-128094] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:37.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:11:37.618 [DEBUG] [Thread-128094] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:11:37.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:37.620 [DEBUG] [Thread-128094] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:37.620 [DEBUG] [Thread-128094] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:37.620 [DEBUG] [Thread-128094] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:37.620 [DEBUG] [Thread-128094] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:11:37.621 [DEBUG] [Thread-128094] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:37.656 [INFO] [Thread-128094] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:37.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:38.213 [DEBUG] [Thread-128094] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:38.213 [DEBUG] [Thread-128094] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:38.214 [DEBUG] [Thread-128094] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:11:38.254 [DEBUG] [Thread-128094] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:38.254 [DEBUG] [Thread-128094] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:38.256 [DEBUG] [Thread-128094] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:38.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:38.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:11:38.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:11:38.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:11:38.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:38.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:11:38.272 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549388 -999.00  +18.70   7.36     37   +3.90 1 1 1 1 1   888    0 15.54 -8.44 ----- 7.4 7.4 251.3 19.0 24.4 -28.4 23.7 -25.9 25.1 -25.1 26.0 -28.7
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:11:38.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549388
2025-09-28T15:11:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:11:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:11:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:11:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:11:38.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:11:38.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:11:21', tmtdew=17.4, humidity=31.39, cloud=0.0, wind=20.26, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:11:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:11:38.274 [DEBUG] [Thread-128094] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:38.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-28T15:11:38.365 [DEBUG] [Thread-128097] [transport.py] [_log()] starting thread (client mode): 0x2e362e00
2025-09-28T15:11:38.365 [DEBUG] [Thread-128097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:38.380 [DEBUG] [Thread-128097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:11:38.380 [INFO] [Thread-128097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] Compression: none
2025-09-28T15:11:38.388 [DEBUG] [Thread-128097] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:38.444 [DEBUG] [Thread-128097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:38.445 [DEBUG] [Thread-128097] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:38.445 [DEBUG] [Thread-128097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:11:38.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:11:38.446 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:38.501 [DEBUG] [Thread-128097] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:38.502 [DEBUG] [Thread-128097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:38.502 [DEBUG] [Thread-128097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:38.502 [DEBUG] [Thread-128097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:11:38.502 [DEBUG] [Thread-128097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:38.521 [INFO] [Thread-128097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:38.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-28T15:11:38.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:39.509 [DEBUG] [Thread-128097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:39.509 [DEBUG] [Thread-128097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:39.557 [DEBUG] [Thread-128097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:39.557 [DEBUG] [Thread-128097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:39.566 [DEBUG] [Thread-128097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:39.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:39.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-28T15:11:39.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-28T15:11:39.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:39.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:39.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:39.601 [DEBUG] [Thread-128097] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:48.268 [DEBUG] [Thread-128099 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:11:49.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:11:49.604 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:11:49.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-28T15:11:50.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 11, 21), 17.4, 31.39, 0.0, 20.26, 18.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:11:50.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:11:21
2025-09-28T15:11:50.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:11:50.430 [DEBUG] [Thread-128100] [transport.py] [_log()] starting thread (client mode): 0x2b94c700
2025-09-28T15:11:50.430 [DEBUG] [Thread-128100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:50.451 [DEBUG] [Thread-128100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:11:50.451 [INFO] [Thread-128100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:50.454 [DEBUG] [Thread-128100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] Compression: none
2025-09-28T15:11:50.455 [DEBUG] [Thread-128100] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:50.472 [DEBUG] [Thread-128100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:50.473 [DEBUG] [Thread-128100] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:50.473 [DEBUG] [Thread-128100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:11:50.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:11:50.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:50.475 [DEBUG] [Thread-128100] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:50.476 [DEBUG] [Thread-128100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:50.476 [DEBUG] [Thread-128100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:50.476 [DEBUG] [Thread-128100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:11:50.476 [DEBUG] [Thread-128100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:50.500 [INFO] [Thread-128100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:50.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:51.241 [DEBUG] [Thread-128100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:51.242 [DEBUG] [Thread-128100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:51.242 [DEBUG] [Thread-128100] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:11:51.282 [DEBUG] [Thread-128100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:51.282 [DEBUG] [Thread-128100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:51.285 [DEBUG] [Thread-128100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:51.291 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:51.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:11:51.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:11:51.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:11:51.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:51.300 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:11:51.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:51.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:51.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:11:51.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549388 -999.00  +18.70   7.36     37   +3.90 1 1 1 1 1   888    0 15.54 -8.44 ----- 7.4 7.4 251.3 19.0 24.4 -28.4 23.7 -25.9 25.1 -25.1 26.0 -28.7
2025-09-28T15:11:51.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:11:51.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:11:51.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549388
2025-09-28T15:11:51.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:11:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:11:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:11:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:11:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:11:51.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:11:21', tmtdew=17.4, humidity=31.39, cloud=0.0, wind=20.26, temperature=18.68, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:11:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:11:51.303 [DEBUG] [Thread-128100] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:11:51.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-28T15:11:51.397 [DEBUG] [Thread-128103] [transport.py] [_log()] starting thread (client mode): 0x2e349360
2025-09-28T15:11:51.398 [DEBUG] [Thread-128103] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:11:51.413 [DEBUG] [Thread-128103] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:11:51.413 [INFO] [Thread-128103] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:11:51.421 [DEBUG] [Thread-128103] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] client lang: <none>
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] server lang: <none>
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] kex follows: False
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:11:51.422 [DEBUG] [Thread-128103] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:11:51.423 [DEBUG] [Thread-128103] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:11:51.423 [DEBUG] [Thread-128103] [transport.py] [_log()] Compression: none
2025-09-28T15:11:51.423 [DEBUG] [Thread-128103] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:11:51.477 [DEBUG] [Thread-128103] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:11:51.478 [DEBUG] [Thread-128103] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:11:51.478 [DEBUG] [Thread-128103] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:11:51.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:11:51.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:11:51.533 [DEBUG] [Thread-128103] [transport.py] [_log()] userauth is OK
2025-09-28T15:11:51.533 [DEBUG] [Thread-128103] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:11:51.533 [DEBUG] [Thread-128103] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:11:51.533 [DEBUG] [Thread-128103] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:11:51.534 [DEBUG] [Thread-128103] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:11:51.553 [INFO] [Thread-128103] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:11:51.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-28T15:11:51.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:11:52.587 [DEBUG] [Thread-128103] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:11:52.587 [DEBUG] [Thread-128103] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:11:52.634 [DEBUG] [Thread-128103] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:11:52.634 [DEBUG] [Thread-128103] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:11:52.643 [DEBUG] [Thread-128103] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:11:52.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:11:52.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-28T15:11: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-28T15:11:52.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:11:52.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:11:52.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:11:52.679 [DEBUG] [Thread-128103] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:02.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:12:02.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:12:02.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-28T15:12:03.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 11, 53), 17.14, 32.1, 0.0, 21.91, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:12:03.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:11:53
2025-09-28T15:12:03.316 [DEBUG] [Thread-128105 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:03.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:12:03.564 [DEBUG] [Thread-128106] [transport.py] [_log()] starting thread (client mode): 0x2b94cd30
2025-09-28T15:12:03.565 [DEBUG] [Thread-128106] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:03.585 [DEBUG] [Thread-128106] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:12:03.585 [INFO] [Thread-128106] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:03.588 [DEBUG] [Thread-128106] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] Compression: none
2025-09-28T15:12:03.589 [DEBUG] [Thread-128106] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:03.605 [DEBUG] [Thread-128106] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:03.605 [DEBUG] [Thread-128106] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:03.605 [DEBUG] [Thread-128106] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:12:03.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:12:03.606 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:03.606 [DEBUG] [Thread-128106] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:03.606 [DEBUG] [Thread-128106] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:03.606 [DEBUG] [Thread-128106] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:03.606 [DEBUG] [Thread-128106] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:12:03.606 [DEBUG] [Thread-128106] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:03.633 [INFO] [Thread-128106] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:03.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:04.234 [DEBUG] [Thread-128106] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:04.234 [DEBUG] [Thread-128106] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:04.234 [DEBUG] [Thread-128106] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:12:04.274 [DEBUG] [Thread-128106] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:04.274 [DEBUG] [Thread-128106] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:04.276 [DEBUG] [Thread-128106] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:04.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:04.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:12:04.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:12:04.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:12:04.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:04.298 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:12:04.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:04.298 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549735 -999.00  +19.10  14.59     37   +4.10 1 1 1 1 1   888    0 15.19 -10.12 ----- 14.6 14.6 200.0 17.8 24.6 -26.3 23.9 -25.4 25.2 -24.9 26.1 -27.3
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549735
2025-09-28T15:12:04.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:12:04.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:12:04.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:12:04.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:12:04.300 [DEBUG] [Thread-128106] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:04.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:12:04.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:11:53', tmtdew=17.14, humidity=32.1, cloud=0.0, wind=21.91, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:11:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:12:04.384 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:12:04.396 [DEBUG] [Thread-128109] [transport.py] [_log()] starting thread (client mode): 0x2b94c9d0
2025-09-28T15:12:04.396 [DEBUG] [Thread-128109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:04.412 [DEBUG] [Thread-128109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:12:04.412 [INFO] [Thread-128109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:04.421 [DEBUG] [Thread-128109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:04.422 [DEBUG] [Thread-128109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:04.422 [DEBUG] [Thread-128109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:04.422 [DEBUG] [Thread-128109] [transport.py] [_log()] Compression: none
2025-09-28T15:12:04.422 [DEBUG] [Thread-128109] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:04.477 [DEBUG] [Thread-128109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:04.478 [DEBUG] [Thread-128109] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:04.478 [DEBUG] [Thread-128109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:12:04.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:12:04.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:04.533 [DEBUG] [Thread-128109] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:04.533 [DEBUG] [Thread-128109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:04.534 [DEBUG] [Thread-128109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:04.534 [DEBUG] [Thread-128109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:12:04.534 [DEBUG] [Thread-128109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:04.553 [INFO] [Thread-128109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:04.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-28T15:12:04.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:05.571 [DEBUG] [Thread-128109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:05.571 [DEBUG] [Thread-128109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:05.619 [DEBUG] [Thread-128109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:05.619 [DEBUG] [Thread-128109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:05.628 [DEBUG] [Thread-128109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:05.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:05.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-28T15:12:05.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-28T15:12:05.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:05.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:05.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:05.663 [DEBUG] [Thread-128109] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:09.597 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:09.598 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:15.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:12:15.666 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:12:15.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-28T15:12:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 11, 53), 17.14, 32.1, 0.0, 21.91, 18.7, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:12:16.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:11:53
2025-09-28T15:12:16.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:12:16.500 [DEBUG] [Thread-128111] [transport.py] [_log()] starting thread (client mode): 0x287051b0
2025-09-28T15:12:16.500 [DEBUG] [Thread-128111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:16.521 [DEBUG] [Thread-128111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:12:16.521 [INFO] [Thread-128111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:12:16.523 [DEBUG] [Thread-128111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] Compression: none
2025-09-28T15:12:16.524 [DEBUG] [Thread-128111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:16.540 [DEBUG] [Thread-128111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:16.541 [DEBUG] [Thread-128111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:16.541 [DEBUG] [Thread-128111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:12:16.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:12:16.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:16.544 [DEBUG] [Thread-128111] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:16.544 [DEBUG] [Thread-128111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:16.544 [DEBUG] [Thread-128111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:16.544 [DEBUG] [Thread-128111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:12:16.544 [DEBUG] [Thread-128111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:16.568 [INFO] [Thread-128111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:16.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:17.084 [DEBUG] [Thread-128113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:17.289 [DEBUG] [Thread-128111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:17.290 [DEBUG] [Thread-128111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:17.290 [DEBUG] [Thread-128111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:12:17.331 [DEBUG] [Thread-128111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:17.331 [DEBUG] [Thread-128111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:17.334 [DEBUG] [Thread-128111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:17.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:17.340 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:12:17.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:12:17.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:12:17.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:17.348 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:12:17.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:17.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:17.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:12:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549735 -999.00  +19.10  14.59     37   +4.10 1 1 1 1 1   888    0 15.19 -10.12 ----- 14.6 14.6 200.0 17.8 24.6 -26.3 23.9 -25.4 25.2 -24.9 26.1 -27.3
2025-09-28T15:12:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:12:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:12:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549735
2025-09-28T15:12:17.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:12:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:12:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:12:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:12:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:12:17.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:11:53', tmtdew=17.14, humidity=32.1, cloud=0.0, wind=21.91, temperature=18.7, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:11:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:12:17.352 [DEBUG] [Thread-128111] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:17.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-28T15:12:17.446 [DEBUG] [Thread-128115] [transport.py] [_log()] starting thread (client mode): 0x2b94d3c0
2025-09-28T15:12:17.447 [DEBUG] [Thread-128115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:17.460 [DEBUG] [Thread-128115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:12:17.461 [INFO] [Thread-128115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:12:17.468 [DEBUG] [Thread-128115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:17.468 [DEBUG] [Thread-128115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:12:17.468 [DEBUG] [Thread-128115] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] Compression: none
2025-09-28T15:12:17.469 [DEBUG] [Thread-128115] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:17.523 [DEBUG] [Thread-128115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:17.523 [DEBUG] [Thread-128115] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:17.523 [DEBUG] [Thread-128115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:12:17.523 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:12:17.524 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:17.585 [DEBUG] [Thread-128115] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:17.585 [DEBUG] [Thread-128115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:17.585 [DEBUG] [Thread-128115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:17.585 [DEBUG] [Thread-128115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:12:17.585 [DEBUG] [Thread-128115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:17.598 [INFO] [Thread-128115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:17.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-28T15:12:17.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:18.346 [DEBUG] [Thread-128117 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:18.569 [DEBUG] [Thread-128115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:18.569 [DEBUG] [Thread-128115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:18.617 [DEBUG] [Thread-128115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:18.617 [DEBUG] [Thread-128115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:18.626 [DEBUG] [Thread-128115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:18.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:18.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-28T15:12: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') -> 00000000
2025-09-28T15:12:18.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:18.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:18.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:18.661 [DEBUG] [Thread-128115] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:28.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:12:28.664 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:12:28.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:12:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 12, 25), 17.13, 32.15, 0.0, 18.33, 18.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:12:29.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:12:25
2025-09-28T15:12:29.343 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:12:29.491 [DEBUG] [Thread-128118] [transport.py] [_log()] starting thread (client mode): 0x2b96e890
2025-09-28T15:12:29.491 [DEBUG] [Thread-128118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:29.511 [DEBUG] [Thread-128118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:12:29.511 [INFO] [Thread-128118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:29.514 [DEBUG] [Thread-128118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] Compression: none
2025-09-28T15:12:29.515 [DEBUG] [Thread-128118] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:29.531 [DEBUG] [Thread-128118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:29.531 [DEBUG] [Thread-128118] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:29.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:12:29.532 [DEBUG] [Thread-128118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:12:29.532 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:29.573 [DEBUG] [Thread-128118] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:29.573 [DEBUG] [Thread-128118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:29.573 [DEBUG] [Thread-128118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:29.573 [DEBUG] [Thread-128118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:12:29.573 [DEBUG] [Thread-128118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:29.598 [INFO] [Thread-128118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:29.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:30.337 [DEBUG] [Thread-128118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:30.338 [DEBUG] [Thread-128118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:30.338 [DEBUG] [Thread-128118] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:12:30.378 [DEBUG] [Thread-128118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:30.379 [DEBUG] [Thread-128118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:30.381 [DEBUG] [Thread-128118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:30.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:30.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:12:30.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:12:30.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:12:30.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:30.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:12:30.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:30.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:30.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:12:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.549735 -999.00  +19.10  14.59     37   +4.10 1 1 1 1 1   888    0 15.19 -10.12 ----- 14.6 14.6 200.0 17.8 24.6 -26.3 23.9 -25.4 25.2 -24.9 26.1 -27.3
2025-09-28T15:12:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:12:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:12:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.549735
2025-09-28T15:12:30.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:12:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:12:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:12:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:12:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:12:30.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:12:25', tmtdew=17.13, humidity=32.15, cloud=0.0, wind=18.33, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:11:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:12:30.410 [DEBUG] [Thread-128118] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:30.495 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:12:30.506 [DEBUG] [Thread-128121] [transport.py] [_log()] starting thread (client mode): 0x2e349270
2025-09-28T15:12:30.506 [DEBUG] [Thread-128121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:30.521 [DEBUG] [Thread-128121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:12:30.521 [INFO] [Thread-128121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:12:30.528 [DEBUG] [Thread-128121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:30.529 [DEBUG] [Thread-128121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:30.530 [DEBUG] [Thread-128121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:30.531 [DEBUG] [Thread-128121] [transport.py] [_log()] Compression: none
2025-09-28T15:12:30.531 [DEBUG] [Thread-128121] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:30.589 [DEBUG] [Thread-128121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:30.589 [DEBUG] [Thread-128121] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:30.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:12:30.590 [DEBUG] [Thread-128121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:12:30.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:30.651 [DEBUG] [Thread-128121] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:30.652 [DEBUG] [Thread-128121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:30.652 [DEBUG] [Thread-128121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:30.652 [DEBUG] [Thread-128121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:12:30.652 [DEBUG] [Thread-128121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:30.671 [INFO] [Thread-128121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:30.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-28T15:12:30.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:31.683 [DEBUG] [Thread-128121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:31.683 [DEBUG] [Thread-128121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:31.731 [DEBUG] [Thread-128121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:31.731 [DEBUG] [Thread-128121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:31.740 [DEBUG] [Thread-128121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:31.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:31.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-28T15:12:31.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T15:12:31.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:31.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:31.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:31.776 [DEBUG] [Thread-128121] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:33.392 [DEBUG] [Thread-128123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:12:41.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:12:41.779 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:12:41.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-28T15:12:42.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 12, 25), 17.13, 32.15, 0.0, 18.33, 18.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:12:42.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:12:25
2025-09-28T15:12:42.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:12:42.614 [DEBUG] [Thread-128124] [transport.py] [_log()] starting thread (client mode): 0x2e361120
2025-09-28T15:12:42.614 [DEBUG] [Thread-128124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:12:42.630 [DEBUG] [Thread-128124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:12:42.630 [INFO] [Thread-128124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] client lang: <none>
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] server lang: <none>
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] kex follows: False
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] Compression: none
2025-09-28T15:12:42.633 [DEBUG] [Thread-128124] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:12:42.652 [DEBUG] [Thread-128124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:12:42.652 [DEBUG] [Thread-128124] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:12:42.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:12:42.653 [DEBUG] [Thread-128124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:12:42.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:12:42.655 [DEBUG] [Thread-128124] [transport.py] [_log()] userauth is OK
2025-09-28T15:12:42.655 [DEBUG] [Thread-128124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:12:42.655 [DEBUG] [Thread-128124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:12:42.656 [DEBUG] [Thread-128124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:12:42.656 [DEBUG] [Thread-128124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:12:42.670 [INFO] [Thread-128124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:12:42.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:12:43.312 [DEBUG] [Thread-128124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:12:43.313 [DEBUG] [Thread-128124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:12:43.313 [DEBUG] [Thread-128124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:12:43.353 [DEBUG] [Thread-128124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:12:43.353 [DEBUG] [Thread-128124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:12:43.356 [DEBUG] [Thread-128124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:12:43.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:12:43.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:12:43.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:12:43.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:12:43.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:12:43.379 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:12:43.379 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:12:43.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:12:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:12:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.550082 -999.00  +19.40  12.23     36   +4.20 1 1 1 1 1   888    0 15.36 -12.70 ----- 12.2 12.2 230.3 24.0 24.6 -26.2 23.9 -26.4 25.2 -26.7 26.2 -26.7
2025-09-28T15:12:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:12:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:12:43.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.550082
2025-09-28T15:12:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:12:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:12:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:12:43.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:12:43.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:12:43.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:12:25', tmtdew=17.13, humidity=32.15, cloud=0.0, wind=18.33, temperature=18.76, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:12:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:12:43.382 [DEBUG] [Thread-128124] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:12:43.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-28T15:12:48.435 [DEBUG] [Thread-128127 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:03.477 [DEBUG] [Thread-128128 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:09.739 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:09.740 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:17.144 [DEBUG] [Thread-128129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:18.507 [DEBUG] [Thread-128130 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:33.534 [DEBUG] [Thread-128131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:13:48.565 [DEBUG] [Thread-128132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:03.594 [DEBUG] [Thread-128133 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:09.885 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:09.886 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:17.197 [DEBUG] [Thread-128134 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:18.625 [DEBUG] [Thread-128135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:33.656 [DEBUG] [Thread-128136 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:48.687 [DEBUG] [Thread-128137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:14:56.059 [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-28T15:15:03.714 [DEBUG] [Thread-128138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:06.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:15:06.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:15:06.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-28T15:15:06.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 14, 33), 16.55, 33.01, 0.0, 22.83, 18.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:15:06.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:14:33
2025-09-28T15:15:06.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:15:06.968 [DEBUG] [Thread-128139] [transport.py] [_log()] starting thread (client mode): 0x2b94f820
2025-09-28T15:15:06.968 [DEBUG] [Thread-128139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:15:06.989 [DEBUG] [Thread-128139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:15:06.989 [INFO] [Thread-128139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:15:06.992 [DEBUG] [Thread-128139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:15:06.992 [DEBUG] [Thread-128139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:15:06.992 [DEBUG] [Thread-128139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:15:06.992 [DEBUG] [Thread-128139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:06.992 [DEBUG] [Thread-128139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] client lang: <none>
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] server lang: <none>
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] kex follows: False
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] Compression: none
2025-09-28T15:15:06.993 [DEBUG] [Thread-128139] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:15:07.008 [DEBUG] [Thread-128139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:15:07.008 [DEBUG] [Thread-128139] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:15:07.008 [DEBUG] [Thread-128139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:15:07.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:15:07.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:15:07.009 [DEBUG] [Thread-128139] [transport.py] [_log()] userauth is OK
2025-09-28T15:15:07.009 [DEBUG] [Thread-128139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:15:07.009 [DEBUG] [Thread-128139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:15:07.009 [DEBUG] [Thread-128139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:15:07.009 [DEBUG] [Thread-128139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:15:07.018 [INFO] [Thread-128139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:15:07.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:15:10.025 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:10.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:15.773 [DEBUG] [Thread-128139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:15:15.774 [DEBUG] [Thread-128139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:15:15.774 [DEBUG] [Thread-128139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:15:15.814 [DEBUG] [Thread-128139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:15:15.814 [DEBUG] [Thread-128139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:15:15.817 [DEBUG] [Thread-128139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:15:15.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:15:15.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:15:15.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:15:15.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:15:15.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:15:15.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:15:15.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:15:15.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.551818 -999.00  +19.10  11.51     36   +4.10 1 1 1 1 1   888    0 14.54 -23.84 ----- 11.5 11.5 244.2 18.2 24.4 -27.8 23.6 -28.4 25.0 -25.3 26.0 -27.9
2025-09-28T15:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:15:15.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.551818
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:15:15.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:14:33', tmtdew=16.55, humidity=33.01, cloud=0.0, wind=22.83, temperature=18.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:14:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:15:15.909 [DEBUG] [Thread-128139] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:15:15.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-28T15:15:16.002 [DEBUG] [Thread-128142] [transport.py] [_log()] starting thread (client mode): 0x2b96d930
2025-09-28T15:15:16.002 [DEBUG] [Thread-128142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:15:16.017 [DEBUG] [Thread-128142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:15:16.017 [INFO] [Thread-128142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] client lang: <none>
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] server lang: <none>
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] kex follows: False
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:15:16.025 [DEBUG] [Thread-128142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:15:16.026 [DEBUG] [Thread-128142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:15:16.026 [DEBUG] [Thread-128142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:15:16.026 [DEBUG] [Thread-128142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:15:16.026 [DEBUG] [Thread-128142] [transport.py] [_log()] Compression: none
2025-09-28T15:15:16.026 [DEBUG] [Thread-128142] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:15:16.083 [DEBUG] [Thread-128142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:15:16.084 [DEBUG] [Thread-128142] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:15:16.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:15:16.085 [DEBUG] [Thread-128142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:15:16.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:15:16.140 [DEBUG] [Thread-128142] [transport.py] [_log()] userauth is OK
2025-09-28T15:15:16.140 [DEBUG] [Thread-128142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:15:16.140 [DEBUG] [Thread-128142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:15:16.140 [DEBUG] [Thread-128142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:15:16.140 [DEBUG] [Thread-128142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:15:16.159 [INFO] [Thread-128142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:15: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-28T15:15:16.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:15:17.163 [DEBUG] [Thread-128142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:15:17.163 [DEBUG] [Thread-128142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:15:17.211 [DEBUG] [Thread-128142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:15:17.211 [DEBUG] [Thread-128142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:15:17.221 [DEBUG] [Thread-128142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:15:17.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:15:17.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-28T15:15:17.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-28T15:15:17.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:15:17.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:15:17.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:15:17.252 [DEBUG] [Thread-128144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:17.255 [DEBUG] [Thread-128142] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:15:18.739 [DEBUG] [Thread-128145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:27.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:15:27.257 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:15:27.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-28T15:15:27.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 15, 5), 16.76, 32.58, 0.0, 19.85, 18.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:15:27.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:15:05
2025-09-28T15:15:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:15:28.124 [DEBUG] [Thread-128146] [transport.py] [_log()] starting thread (client mode): 0x28706080
2025-09-28T15:15:28.124 [DEBUG] [Thread-128146] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:15:28.145 [DEBUG] [Thread-128146] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:15:28.145 [INFO] [Thread-128146] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] client lang: <none>
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] server lang: <none>
2025-09-28T15:15:28.147 [DEBUG] [Thread-128146] [transport.py] [_log()] kex follows: False
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] Compression: none
2025-09-28T15:15:28.148 [DEBUG] [Thread-128146] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:15:28.169 [DEBUG] [Thread-128146] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:15:28.170 [DEBUG] [Thread-128146] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:15:28.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:15:28.171 [DEBUG] [Thread-128146] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:15:28.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:15:28.173 [DEBUG] [Thread-128146] [transport.py] [_log()] userauth is OK
2025-09-28T15:15:28.173 [DEBUG] [Thread-128146] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:15:28.173 [DEBUG] [Thread-128146] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:15:28.173 [DEBUG] [Thread-128146] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:15:28.173 [DEBUG] [Thread-128146] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:15:28.194 [INFO] [Thread-128146] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:15:28.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:15:28.776 [DEBUG] [Thread-128146] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:15:28.776 [DEBUG] [Thread-128146] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:15:28.777 [DEBUG] [Thread-128146] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:15:28.817 [DEBUG] [Thread-128146] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:15:28.818 [DEBUG] [Thread-128146] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:15:28.821 [DEBUG] [Thread-128146] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:15:28.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:15:28.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:15:28.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:15:28.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:15:28.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:15:28.842 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:15:28.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:15:28.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.552165 -999.00  +18.70  18.45     38   +4.20 1 1 1 1 1   888    0 14.42 -28.54 ----- 18.4 18.4 254.2 33.2 24.4 -27.6 23.5 -26.9 24.9 -25.7 26.0 -27.8
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.552165
2025-09-28T15:15:28.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:15:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:15:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:15:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:15:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:15:28.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:15:05', tmtdew=16.76, humidity=32.58, cloud=0.0, wind=19.85, temperature=18.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:15:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:15:28.845 [DEBUG] [Thread-128146] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:15:28.929 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:15:28.938 [DEBUG] [Thread-128149] [transport.py] [_log()] starting thread (client mode): 0x30dde4a0
2025-09-28T15:15:28.939 [DEBUG] [Thread-128149] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:15:28.954 [DEBUG] [Thread-128149] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:15:28.954 [INFO] [Thread-128149] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:15:28.961 [DEBUG] [Thread-128149] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] client lang: <none>
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] server lang: <none>
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] kex follows: False
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] Compression: none
2025-09-28T15:15:28.962 [DEBUG] [Thread-128149] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:15:29.019 [DEBUG] [Thread-128149] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:15:29.019 [DEBUG] [Thread-128149] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:15:29.020 [DEBUG] [Thread-128149] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:15:29.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:15:29.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:15:29.076 [DEBUG] [Thread-128149] [transport.py] [_log()] userauth is OK
2025-09-28T15:15:29.076 [DEBUG] [Thread-128149] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:15:29.076 [DEBUG] [Thread-128149] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:15:29.076 [DEBUG] [Thread-128149] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:15:29.076 [DEBUG] [Thread-128149] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:15:29.097 [INFO] [Thread-128149] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:15:29.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-28T15:15:29.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:15:30.092 [DEBUG] [Thread-128149] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:15:30.092 [DEBUG] [Thread-128149] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:15:30.141 [DEBUG] [Thread-128149] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:15:30.141 [DEBUG] [Thread-128149] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:15:30.151 [DEBUG] [Thread-128149] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:15:30.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:15:30.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-28T15:15:30.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-28T15:15:30.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:15:30.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:15:30.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:15:30.186 [DEBUG] [Thread-128149] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:15:33.784 [DEBUG] [Thread-128151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:15:40.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:15:40.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:15:40.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-28T15:15:40.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 15, 37), 16.33, 33.91, 0.0, 21.51, 18.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:15:40.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:15:37
2025-09-28T15:15:40.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:15:41.048 [DEBUG] [Thread-128152] [transport.py] [_log()] starting thread (client mode): 0x2e38ed10
2025-09-28T15:15:41.048 [DEBUG] [Thread-128152] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:15:41.071 [DEBUG] [Thread-128152] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:15:41.071 [INFO] [Thread-128152] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:15:41.074 [DEBUG] [Thread-128152] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] client lang: <none>
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] server lang: <none>
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] kex follows: False
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] Compression: none
2025-09-28T15:15:41.075 [DEBUG] [Thread-128152] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:15:41.092 [DEBUG] [Thread-128152] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:15:41.093 [DEBUG] [Thread-128152] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:15:41.093 [DEBUG] [Thread-128152] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:15:41.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:15:41.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:15:41.096 [DEBUG] [Thread-128152] [transport.py] [_log()] userauth is OK
2025-09-28T15:15:41.096 [DEBUG] [Thread-128152] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:15:41.096 [DEBUG] [Thread-128152] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:15:41.096 [DEBUG] [Thread-128152] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:15:41.096 [DEBUG] [Thread-128152] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:15:41.113 [INFO] [Thread-128152] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:15:41.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:15:41.898 [DEBUG] [Thread-128152] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:15:41.898 [DEBUG] [Thread-128152] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:15:41.898 [DEBUG] [Thread-128152] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:15:41.939 [DEBUG] [Thread-128152] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:15:41.940 [DEBUG] [Thread-128152] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:15:41.942 [DEBUG] [Thread-128152] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:15:41.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:15:41.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:15:41.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:15:41.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:15:41.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:15:41.964 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:15:41.965 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:15:41.965 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:15:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:15:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.552165 -999.00  +18.70  18.45     38   +4.20 1 1 1 1 1   888    0 14.42 -28.54 ----- 18.4 18.4 254.2 33.2 24.4 -27.6 23.5 -26.9 24.9 -25.7 26.0 -27.8
2025-09-28T15:15:41.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:15:41.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:15:41.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.552165
2025-09-28T15:15:41.966 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:15:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:15:41.967 [DEBUG] [Thread-128152] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:15:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:15:41.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:15:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:15:41.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:15:37', tmtdew=16.33, humidity=33.91, cloud=0.0, wind=21.51, temperature=18.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:15:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:15:42.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-28T15:15:48.838 [DEBUG] [Thread-128155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:03.880 [DEBUG] [Thread-128156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:10.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:10.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:17.307 [DEBUG] [Thread-128157 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:18.910 [DEBUG] [Thread-128158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:33.944 [DEBUG] [Thread-128159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:16:48.974 [DEBUG] [Thread-128160 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:04.004 [DEBUG] [Thread-128161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:10.329 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:10.331 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:17.354 [DEBUG] [Thread-128162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:19.036 [DEBUG] [Thread-128163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:34.071 [DEBUG] [Thread-128164 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:49.100 [DEBUG] [Thread-128165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:17:56.282 [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-28T15:18:04.128 [DEBUG] [Thread-128166 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:06.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:18:06.293 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:18:06.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-28T15:18:06.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 17, 45), 16.35, 33.51, 0.0, 25.85, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:18:06.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:17:45
2025-09-28T15:18:07.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:18:07.174 [DEBUG] [Thread-128167] [transport.py] [_log()] starting thread (client mode): 0x2b9cdf00
2025-09-28T15:18:07.174 [DEBUG] [Thread-128167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:07.189 [DEBUG] [Thread-128167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:18:07.189 [INFO] [Thread-128167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:07.191 [DEBUG] [Thread-128167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:07.192 [DEBUG] [Thread-128167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:07.192 [DEBUG] [Thread-128167] [transport.py] [_log()] Compression: none
2025-09-28T15:18:07.192 [DEBUG] [Thread-128167] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:07.202 [DEBUG] [Thread-128167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:07.202 [DEBUG] [Thread-128167] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:07.202 [DEBUG] [Thread-128167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:18:07.202 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:18:07.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:07.203 [DEBUG] [Thread-128167] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:07.204 [DEBUG] [Thread-128167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:07.204 [DEBUG] [Thread-128167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:07.204 [DEBUG] [Thread-128167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:18:07.204 [DEBUG] [Thread-128167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:07.217 [INFO] [Thread-128167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:07.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:07.828 [DEBUG] [Thread-128167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:07.828 [DEBUG] [Thread-128167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:07.829 [DEBUG] [Thread-128167] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:18:07.869 [DEBUG] [Thread-128167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:07.869 [DEBUG] [Thread-128167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:07.872 [DEBUG] [Thread-128167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:07.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:07.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:18:07.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:18:07.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:18:07.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:07.900 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:18:07.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:07.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:07.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:18:07.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.553902 -999.00  +19.30  10.94     38   +4.70 1 1 1 1 1   888    0 14.35 -33.09 ----- 10.9 10.9 194.4 22.6 24.4 -27.5 23.5 -26.0 25.0 -26.3 26.0 -28.1
2025-09-28T15:18:07.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:18:07.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:18:07.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.553902
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:18:07.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:17:45', tmtdew=16.35, humidity=33.51, cloud=0.0, wind=25.85, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:17:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:18:07.903 [DEBUG] [Thread-128167] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:07.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-28T15:18:08.002 [DEBUG] [Thread-128170] [transport.py] [_log()] starting thread (client mode): 0x2b96e7d0
2025-09-28T15:18:08.002 [DEBUG] [Thread-128170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:08.017 [DEBUG] [Thread-128170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:18:08.017 [INFO] [Thread-128170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:08.026 [DEBUG] [Thread-128170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:08.027 [DEBUG] [Thread-128170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:08.027 [DEBUG] [Thread-128170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:08.027 [DEBUG] [Thread-128170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:08.027 [DEBUG] [Thread-128170] [transport.py] [_log()] Compression: none
2025-09-28T15:18:08.027 [DEBUG] [Thread-128170] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:08.083 [DEBUG] [Thread-128170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:08.083 [DEBUG] [Thread-128170] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:08.084 [DEBUG] [Thread-128170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:18:08.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:18:08.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:08.139 [DEBUG] [Thread-128170] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:08.140 [DEBUG] [Thread-128170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:08.140 [DEBUG] [Thread-128170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:08.140 [DEBUG] [Thread-128170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:18:08.140 [DEBUG] [Thread-128170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:08.159 [INFO] [Thread-128170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:08.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-28T15:18:08.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:09.149 [DEBUG] [Thread-128170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:09.149 [DEBUG] [Thread-128170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:09.197 [DEBUG] [Thread-128170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:09.197 [DEBUG] [Thread-128170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:09.206 [DEBUG] [Thread-128170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:09.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:09.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')
2025-09-28T15:18:09.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-28T15:18:09.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:09.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:09.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:09.241 [DEBUG] [Thread-128170] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:10.481 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:10.482 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:17.408 [DEBUG] [Thread-128172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:19.157 [DEBUG] [Thread-128173 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:19.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:18:19.238 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:18:19.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-28T15:18:19.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 17, 45), 16.35, 33.51, 0.0, 25.85, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:18:19.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:17:45
2025-09-28T15:18:19.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:18:20.106 [DEBUG] [Thread-128174] [transport.py] [_log()] starting thread (client mode): 0x2e34a4d0
2025-09-28T15:18:20.106 [DEBUG] [Thread-128174] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:20.127 [DEBUG] [Thread-128174] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:18:20.127 [INFO] [Thread-128174] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:20.131 [DEBUG] [Thread-128174] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] Compression: none
2025-09-28T15:18:20.132 [DEBUG] [Thread-128174] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:20.148 [DEBUG] [Thread-128174] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:20.148 [DEBUG] [Thread-128174] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:20.149 [DEBUG] [Thread-128174] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:18:20.149 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:18:20.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:20.151 [DEBUG] [Thread-128174] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:20.151 [DEBUG] [Thread-128174] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:20.151 [DEBUG] [Thread-128174] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:20.151 [DEBUG] [Thread-128174] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:18:20.151 [DEBUG] [Thread-128174] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:20.175 [INFO] [Thread-128174] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:20.175 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:20.789 [DEBUG] [Thread-128174] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:20.789 [DEBUG] [Thread-128174] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:20.790 [DEBUG] [Thread-128174] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:18:20.830 [DEBUG] [Thread-128174] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:20.830 [DEBUG] [Thread-128174] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:20.833 [DEBUG] [Thread-128174] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:20.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:20.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:18:20.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:18:20.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:18:20.855 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:20.856 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:18:20.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.553902 -999.00  +19.30  10.94     38   +4.70 1 1 1 1 1   888    0 14.35 -33.09 ----- 10.9 10.9 194.4 22.6 24.4 -27.5 23.5 -26.0 25.0 -26.3 26.0 -28.1
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:18:20.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.553902
2025-09-28T15:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:18:20.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:18:20.859 [DEBUG] [Thread-128174] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:18:20.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:17:45', tmtdew=16.35, humidity=33.51, cloud=0.0, wind=25.85, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:17:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:18:20.946 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:18:20.955 [DEBUG] [Thread-128177] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-28T15:18:20.956 [DEBUG] [Thread-128177] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:20.972 [DEBUG] [Thread-128177] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:18:20.972 [INFO] [Thread-128177] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:20.980 [DEBUG] [Thread-128177] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:20.981 [DEBUG] [Thread-128177] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:20.982 [DEBUG] [Thread-128177] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:20.982 [DEBUG] [Thread-128177] [transport.py] [_log()] Compression: none
2025-09-28T15:18:20.982 [DEBUG] [Thread-128177] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:21.039 [DEBUG] [Thread-128177] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:21.039 [DEBUG] [Thread-128177] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:21.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:18:21.041 [DEBUG] [Thread-128177] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:18:21.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:21.095 [DEBUG] [Thread-128177] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:21.095 [DEBUG] [Thread-128177] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:21.095 [DEBUG] [Thread-128177] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:21.095 [DEBUG] [Thread-128177] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:18:21.095 [DEBUG] [Thread-128177] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:21.114 [INFO] [Thread-128177] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18: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-28T15:18:21.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:22.079 [DEBUG] [Thread-128177] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:22.080 [DEBUG] [Thread-128177] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:22.127 [DEBUG] [Thread-128177] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:22.127 [DEBUG] [Thread-128177] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:22.136 [DEBUG] [Thread-128177] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:22.144 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:22.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-28T15:18:22.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-28T15:18:22.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:22.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:22.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:22.171 [DEBUG] [Thread-128177] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:32.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:18:32.174 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:18:32.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-28T15:18:32.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 18, 17), 16.35, 33.51, 0.0, 27.38, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:18:32.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:18:17
2025-09-28T15:18:32.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:18:33.027 [DEBUG] [Thread-128179] [transport.py] [_log()] starting thread (client mode): 0x2b91ca30
2025-09-28T15:18:33.027 [DEBUG] [Thread-128179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:33.047 [DEBUG] [Thread-128179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:18:33.047 [INFO] [Thread-128179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:18:33.050 [DEBUG] [Thread-128179] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:33.050 [DEBUG] [Thread-128179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:33.051 [DEBUG] [Thread-128179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:33.052 [DEBUG] [Thread-128179] [transport.py] [_log()] Compression: none
2025-09-28T15:18:33.052 [DEBUG] [Thread-128179] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:33.070 [DEBUG] [Thread-128179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:33.070 [DEBUG] [Thread-128179] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:33.071 [DEBUG] [Thread-128179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:18:33.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:18:33.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:33.073 [DEBUG] [Thread-128179] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:33.073 [DEBUG] [Thread-128179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:33.073 [DEBUG] [Thread-128179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:33.073 [DEBUG] [Thread-128179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:18:33.074 [DEBUG] [Thread-128179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:33.097 [INFO] [Thread-128179] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:33.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:33.724 [DEBUG] [Thread-128179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:33.725 [DEBUG] [Thread-128179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:33.725 [DEBUG] [Thread-128179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:18:33.765 [DEBUG] [Thread-128179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:33.766 [DEBUG] [Thread-128179] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:33.769 [DEBUG] [Thread-128179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:33.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:33.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:18:33.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:18:33.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:18:33.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:33.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:18:33.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.553902 -999.00  +19.30  10.94     38   +4.70 1 1 1 1 1   888    0 14.35 -33.09 ----- 10.9 10.9 194.4 22.6 24.4 -27.5 23.5 -26.0 25.0 -26.3 26.0 -28.1
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:18:33.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.553902
2025-09-28T15:18:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:18:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:18:33.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:18:33.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:18:33.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:18:33.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:18:17', tmtdew=16.35, humidity=33.51, cloud=0.0, wind=27.38, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:17:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:18:33.794 [DEBUG] [Thread-128179] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:33.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:18:33.889 [DEBUG] [Thread-128182] [transport.py] [_log()] starting thread (client mode): 0x2e3fa3b0
2025-09-28T15:18:33.889 [DEBUG] [Thread-128182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:33.905 [DEBUG] [Thread-128182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:18:33.905 [INFO] [Thread-128182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:18:33.912 [DEBUG] [Thread-128182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:33.913 [DEBUG] [Thread-128182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:33.914 [DEBUG] [Thread-128182] [transport.py] [_log()] Compression: none
2025-09-28T15:18:33.915 [DEBUG] [Thread-128182] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:33.970 [DEBUG] [Thread-128182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:33.970 [DEBUG] [Thread-128182] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:33.970 [DEBUG] [Thread-128182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:18:33.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:18:33.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:34.027 [DEBUG] [Thread-128182] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:34.027 [DEBUG] [Thread-128182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:34.027 [DEBUG] [Thread-128182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:34.027 [DEBUG] [Thread-128182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:18:34.027 [DEBUG] [Thread-128182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:34.044 [INFO] [Thread-128182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:34.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:18:34.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:34.199 [DEBUG] [Thread-128184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:34.995 [DEBUG] [Thread-128182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:34.996 [DEBUG] [Thread-128182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:35.043 [DEBUG] [Thread-128182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:35.044 [DEBUG] [Thread-128182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:35.053 [DEBUG] [Thread-128182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:35.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:35.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')
2025-09-28T15:18:35.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') -> 00000000
2025-09-28T15:18:35.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:35.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:35.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:35.087 [DEBUG] [Thread-128182] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:45.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:18:45.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:18:45.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-28T15:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 18, 17), 16.35, 33.51, 0.0, 27.38, 18.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:18:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:18:17
2025-09-28T15:18:45.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:18:45.954 [DEBUG] [Thread-128185] [transport.py] [_log()] starting thread (client mode): 0x2e38ee30
2025-09-28T15:18:45.954 [DEBUG] [Thread-128185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:45.975 [DEBUG] [Thread-128185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:18:45.975 [INFO] [Thread-128185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] Compression: none
2025-09-28T15:18:45.978 [DEBUG] [Thread-128185] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:45.988 [DEBUG] [Thread-128185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:45.988 [DEBUG] [Thread-128185] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:45.988 [DEBUG] [Thread-128185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:18:45.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:18:45.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:45.990 [DEBUG] [Thread-128185] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:45.990 [DEBUG] [Thread-128185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:45.990 [DEBUG] [Thread-128185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:45.991 [DEBUG] [Thread-128185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:18:45.991 [DEBUG] [Thread-128185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:46.025 [INFO] [Thread-128185] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:46.026 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:46.683 [DEBUG] [Thread-128185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:46.683 [DEBUG] [Thread-128185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:46.683 [DEBUG] [Thread-128185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:18:46.725 [DEBUG] [Thread-128185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:46.725 [DEBUG] [Thread-128185] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:46.728 [DEBUG] [Thread-128185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:46.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:46.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:18:46.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:18:46.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:18:46.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:46.750 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:18:46.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.554596 -999.00  +19.00  23.76     38   +4.30 1 1 1 1 1   888    0 14.19 -35.77 ----- 23.8 23.8 248.9 36.2 24.1 -30.2 23.4 -27.8 24.8 -26.9 25.8 -30.7
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:18:46.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.554596
2025-09-28T15:18:46.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:18:46.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:18:46.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:18:46.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:18:46.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:18:46.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:18:17', tmtdew=16.35, humidity=33.51, cloud=0.0, wind=27.38, temperature=18.55, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:18:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:18:46.753 [DEBUG] [Thread-128185] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:46.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-28T15:18:46.848 [DEBUG] [Thread-128188] [transport.py] [_log()] starting thread (client mode): 0x2b9ceb60
2025-09-28T15:18:46.848 [DEBUG] [Thread-128188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:46.863 [DEBUG] [Thread-128188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:18:46.863 [INFO] [Thread-128188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:46.871 [DEBUG] [Thread-128188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:46.872 [DEBUG] [Thread-128188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:46.873 [DEBUG] [Thread-128188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:46.873 [DEBUG] [Thread-128188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:46.873 [DEBUG] [Thread-128188] [transport.py] [_log()] Compression: none
2025-09-28T15:18:46.873 [DEBUG] [Thread-128188] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:46.931 [DEBUG] [Thread-128188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:46.932 [DEBUG] [Thread-128188] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:46.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:18:46.933 [DEBUG] [Thread-128188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:18:46.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:46.987 [DEBUG] [Thread-128188] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:46.987 [DEBUG] [Thread-128188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:46.988 [DEBUG] [Thread-128188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:46.988 [DEBUG] [Thread-128188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:18:46.988 [DEBUG] [Thread-128188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:47.008 [INFO] [Thread-128188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:47.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-28T15:18:47.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:47.980 [DEBUG] [Thread-128188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:47.981 [DEBUG] [Thread-128188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:48.028 [DEBUG] [Thread-128188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:48.029 [DEBUG] [Thread-128188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:48.038 [DEBUG] [Thread-128188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:48.046 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:48.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')
2025-09-28T15:18:48.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-28T15:18:48.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:48.064 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:48.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:48.072 [DEBUG] [Thread-128188] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:49.243 [DEBUG] [Thread-128190 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:18:58.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:18:58.074 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:18:58.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-28T15:18:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 18, 49), 16.16, 33.77, 0.0, 29.78, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:18:58.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:18:49
2025-09-28T15:18:58.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:18:58.933 [DEBUG] [Thread-128191] [transport.py] [_log()] starting thread (client mode): 0x2e38ef80
2025-09-28T15:18:58.934 [DEBUG] [Thread-128191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:58.946 [DEBUG] [Thread-128191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:18:58.946 [INFO] [Thread-128191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:58.948 [DEBUG] [Thread-128191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:58.949 [DEBUG] [Thread-128191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:58.949 [DEBUG] [Thread-128191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:58.949 [DEBUG] [Thread-128191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:58.949 [DEBUG] [Thread-128191] [transport.py] [_log()] Compression: none
2025-09-28T15:18:58.949 [DEBUG] [Thread-128191] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:58.958 [DEBUG] [Thread-128191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:58.959 [DEBUG] [Thread-128191] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:58.959 [DEBUG] [Thread-128191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:18:58.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:18:58.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:58.961 [DEBUG] [Thread-128191] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:58.961 [DEBUG] [Thread-128191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:58.961 [DEBUG] [Thread-128191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:58.961 [DEBUG] [Thread-128191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:18:58.961 [DEBUG] [Thread-128191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:58.987 [INFO] [Thread-128191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:58.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:18:59.588 [DEBUG] [Thread-128191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:18:59.588 [DEBUG] [Thread-128191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:18:59.589 [DEBUG] [Thread-128191] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:18:59.629 [DEBUG] [Thread-128191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:18:59.630 [DEBUG] [Thread-128191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:18:59.633 [DEBUG] [Thread-128191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:18:59.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:18:59.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:18:59.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:18:59.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:18:59.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:18:59.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:18:59.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:18:59.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.554596 -999.00  +19.00  23.76     38   +4.30 1 1 1 1 1   888    0 14.19 -35.77 ----- 23.8 23.8 248.9 36.2 24.1 -30.2 23.4 -27.8 24.8 -26.9 25.8 -30.7
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.554596
2025-09-28T15:18:59.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:18:59.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:18:59.656 [DEBUG] [Thread-128191] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:18:59.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:18:59.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:18:59.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:18:59.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:18:49', tmtdew=16.16, humidity=33.77, cloud=0.0, wind=29.78, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:18:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:18:59.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-28T15:18:59.751 [DEBUG] [Thread-128194] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T15:18:59.751 [DEBUG] [Thread-128194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:18:59.766 [DEBUG] [Thread-128194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:18:59.766 [INFO] [Thread-128194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:18:59.774 [DEBUG] [Thread-128194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:18:59.775 [DEBUG] [Thread-128194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:18:59.775 [DEBUG] [Thread-128194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:18:59.775 [DEBUG] [Thread-128194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:59.775 [DEBUG] [Thread-128194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:18:59.775 [DEBUG] [Thread-128194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] client lang: <none>
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] server lang: <none>
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] kex follows: False
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] Compression: none
2025-09-28T15:18:59.776 [DEBUG] [Thread-128194] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:18:59.831 [DEBUG] [Thread-128194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:18:59.832 [DEBUG] [Thread-128194] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:18:59.832 [DEBUG] [Thread-128194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:18:59.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:18:59.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:18:59.887 [DEBUG] [Thread-128194] [transport.py] [_log()] userauth is OK
2025-09-28T15:18:59.887 [DEBUG] [Thread-128194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:18:59.888 [DEBUG] [Thread-128194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:18:59.888 [DEBUG] [Thread-128194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:18:59.888 [DEBUG] [Thread-128194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:18:59.907 [INFO] [Thread-128194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:18:59.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-28T15:18:59.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:19:00.891 [DEBUG] [Thread-128194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:19:00.891 [DEBUG] [Thread-128194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:19:00.939 [DEBUG] [Thread-128194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:19:00.940 [DEBUG] [Thread-128194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:19:00.949 [DEBUG] [Thread-128194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:19:00.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:19:00.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-28T15:19:00.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-28T15:19:00.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:19:00.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:19:00.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:19:00.989 [DEBUG] [Thread-128194] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:19:04.286 [DEBUG] [Thread-128196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:10.621 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:10.622 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:10.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:19:10.989 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:19:10.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:19:11.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 18, 49), 16.16, 33.77, 0.0, 29.78, 18.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:19:11.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:18:49
2025-09-28T15:19:11.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:19:11.837 [DEBUG] [Thread-128197] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-28T15:19:11.837 [DEBUG] [Thread-128197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:19:11.853 [DEBUG] [Thread-128197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:19:11.853 [INFO] [Thread-128197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] client lang: <none>
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] server lang: <none>
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] kex follows: False
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] Compression: none
2025-09-28T15:19:11.856 [DEBUG] [Thread-128197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:19:11.873 [DEBUG] [Thread-128197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:19:11.873 [DEBUG] [Thread-128197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:19:11.873 [DEBUG] [Thread-128197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:19:11.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:19:11.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:19:11.874 [DEBUG] [Thread-128197] [transport.py] [_log()] userauth is OK
2025-09-28T15:19:11.874 [DEBUG] [Thread-128197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:19:11.874 [DEBUG] [Thread-128197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:19:11.874 [DEBUG] [Thread-128197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:19:11.874 [DEBUG] [Thread-128197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:19:11.883 [INFO] [Thread-128197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:19:11.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:19:12.467 [DEBUG] [Thread-128197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:19:12.467 [DEBUG] [Thread-128197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:19:12.467 [DEBUG] [Thread-128197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:19:12.507 [DEBUG] [Thread-128197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:19:12.508 [DEBUG] [Thread-128197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:19:12.511 [DEBUG] [Thread-128197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:19:12.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:19:12.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:19:12.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:19:12.528 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:19:12.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:19:12.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:19:12.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:19:12.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:19:12.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:19:12.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.554596 -999.00  +19.00  23.76     38   +4.30 1 1 1 1 1   888    0 14.19 -35.77 ----- 23.8 23.8 248.9 36.2 24.1 -30.2 23.4 -27.8 24.8 -26.9 25.8 -30.7
2025-09-28T15:19:12.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:19:12.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:19:12.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.554596
2025-09-28T15:19:12.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:19:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:19:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:19:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:19:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:19:12.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:18:49', tmtdew=16.16, humidity=33.77, cloud=0.0, wind=29.78, temperature=18.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:18:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:19:12.537 [DEBUG] [Thread-128197] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:19:12.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-28T15:19:17.464 [DEBUG] [Thread-128200 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:19.330 [DEBUG] [Thread-128201 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:34.359 [DEBUG] [Thread-128202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:19:49.389 [DEBUG] [Thread-128203 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:04.418 [DEBUG] [Thread-128204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:10.763 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:10.764 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:17.512 [DEBUG] [Thread-128205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:19.444 [DEBUG] [Thread-128206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:34.475 [DEBUG] [Thread-128207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:20:49.504 [DEBUG] [Thread-128208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:04.530 [DEBUG] [Thread-128209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:10.904 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:10.905 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:17.561 [DEBUG] [Thread-128210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:19.561 [DEBUG] [Thread-128211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:25.178 [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-28T15:21:34.588 [DEBUG] [Thread-128212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:35.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:21:35.180 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:21:35.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-28T15:21:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 21, 29), 16.42, 33.39, 0.0, 17.77, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:21:35.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:21:29
2025-09-28T15:21:35.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:21:36.053 [DEBUG] [Thread-128213] [transport.py] [_log()] starting thread (client mode): 0x287051b0
2025-09-28T15:21:36.054 [DEBUG] [Thread-128213] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:21:36.076 [DEBUG] [Thread-128213] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:21:36.076 [INFO] [Thread-128213] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:21:36.078 [DEBUG] [Thread-128213] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:21:36.078 [DEBUG] [Thread-128213] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:21:36.078 [DEBUG] [Thread-128213] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:21:36.078 [DEBUG] [Thread-128213] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] client lang: <none>
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] server lang: <none>
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] kex follows: False
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] Compression: none
2025-09-28T15:21:36.079 [DEBUG] [Thread-128213] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:21:36.096 [DEBUG] [Thread-128213] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:21:36.096 [DEBUG] [Thread-128213] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:21:36.097 [DEBUG] [Thread-128213] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:21:36.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:21:36.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:21:36.099 [DEBUG] [Thread-128213] [transport.py] [_log()] userauth is OK
2025-09-28T15:21:36.100 [DEBUG] [Thread-128213] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:21:36.100 [DEBUG] [Thread-128213] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:21:36.100 [DEBUG] [Thread-128213] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:21:36.100 [DEBUG] [Thread-128213] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:21:36.124 [INFO] [Thread-128213] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:21:36.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:21:36.789 [DEBUG] [Thread-128213] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:21:36.789 [DEBUG] [Thread-128213] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:21:36.789 [DEBUG] [Thread-128213] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:21:36.829 [DEBUG] [Thread-128213] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:21:36.829 [DEBUG] [Thread-128213] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:21:36.832 [DEBUG] [Thread-128213] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:21:36.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:21:36.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:21:36.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:21:36.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:21:36.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:21:36.855 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:21:36.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:21:36.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:21:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:21:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.556332 -999.00  +18.40  15.93     38   +3.90 1 1 1 1 1   888    0 13.43 -54.97 ----- 15.9 15.9 223.4 20.6 23.9 -27.1 23.3 -25.6 24.7 -26.6 25.6 -27.4
2025-09-28T15:21:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:21:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:21:36.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.556332
2025-09-28T15:21:36.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:21:36.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:21:36.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:21:36.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:21:36.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:21:36.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:21:29', tmtdew=16.42, humidity=33.39, cloud=0.0, wind=17.77, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:21:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:21:36.858 [DEBUG] [Thread-128213] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:21:36.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-28T15:21:36.956 [DEBUG] [Thread-128216] [transport.py] [_log()] starting thread (client mode): 0x2e38f880
2025-09-28T15:21:36.956 [DEBUG] [Thread-128216] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:21:36.971 [DEBUG] [Thread-128216] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:21:36.971 [INFO] [Thread-128216] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:21:36.978 [DEBUG] [Thread-128216] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:21:36.979 [DEBUG] [Thread-128216] [transport.py] [_log()] client lang: <none>
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] server lang: <none>
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] kex follows: False
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:21:36.980 [DEBUG] [Thread-128216] [transport.py] [_log()] Compression: none
2025-09-28T15:21:36.981 [DEBUG] [Thread-128216] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:21:37.037 [DEBUG] [Thread-128216] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:21:37.038 [DEBUG] [Thread-128216] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:21:37.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:21:37.039 [DEBUG] [Thread-128216] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:21:37.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:21:37.094 [DEBUG] [Thread-128216] [transport.py] [_log()] userauth is OK
2025-09-28T15:21:37.094 [DEBUG] [Thread-128216] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:21:37.095 [DEBUG] [Thread-128216] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:21:37.095 [DEBUG] [Thread-128216] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:21:37.095 [DEBUG] [Thread-128216] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:21:37.113 [INFO] [Thread-128216] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:21:37.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-28T15:21:37.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:21:38.098 [DEBUG] [Thread-128216] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:21:38.098 [DEBUG] [Thread-128216] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:21:38.145 [DEBUG] [Thread-128216] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:21:38.146 [DEBUG] [Thread-128216] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:21:38.155 [DEBUG] [Thread-128216] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:21:38.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:21:38.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-28T15:21:38.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-28T15:21:38.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:21:38.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:21:38.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:21:38.190 [DEBUG] [Thread-128216] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:21:48.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:21:48.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:21:48.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:21:48.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 21, 29), 16.42, 33.39, 0.0, 17.77, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:21:48.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:21:29
2025-09-28T15:21:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:21:49.065 [DEBUG] [Thread-128218] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T15:21:49.065 [DEBUG] [Thread-128218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:21:49.085 [DEBUG] [Thread-128218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:21:49.086 [INFO] [Thread-128218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:21:49.088 [DEBUG] [Thread-128218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] client lang: <none>
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] server lang: <none>
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] kex follows: False
2025-09-28T15:21:49.089 [DEBUG] [Thread-128218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] Compression: none
2025-09-28T15:21:49.090 [DEBUG] [Thread-128218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:21:49.107 [DEBUG] [Thread-128218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:21:49.107 [DEBUG] [Thread-128218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:21:49.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:21:49.108 [DEBUG] [Thread-128218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:21:49.109 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:21:49.110 [DEBUG] [Thread-128218] [transport.py] [_log()] userauth is OK
2025-09-28T15:21:49.110 [DEBUG] [Thread-128218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:21:49.110 [DEBUG] [Thread-128218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:21:49.110 [DEBUG] [Thread-128218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:21:49.110 [DEBUG] [Thread-128218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:21:49.135 [INFO] [Thread-128218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:21:49.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:21:49.614 [DEBUG] [Thread-128220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:21:49.787 [DEBUG] [Thread-128218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:21:49.788 [DEBUG] [Thread-128218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:21:49.788 [DEBUG] [Thread-128218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:21:49.829 [DEBUG] [Thread-128218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:21:49.829 [DEBUG] [Thread-128218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:21:49.832 [DEBUG] [Thread-128218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:21:49.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:21:49.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:21:49.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:21:49.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:21:49.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:21:49.857 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:21:49.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:21:49.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:21:49.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:21:49.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.556332 -999.00  +18.40  15.93     38   +3.90 1 1 1 1 1   888    0 13.43 -54.97 ----- 15.9 15.9 223.4 20.6 23.9 -27.1 23.3 -25.6 24.7 -26.6 25.6 -27.4
2025-09-28T15:21:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:21:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:21:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.556332
2025-09-28T15:21:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:21:49.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:21:49.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:21:49.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:21:49.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:21:49.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:21:29', tmtdew=16.42, humidity=33.39, cloud=0.0, wind=17.77, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:21:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:21:49.860 [DEBUG] [Thread-128218] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:21:49.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-28T15:21:49.955 [DEBUG] [Thread-128222] [transport.py] [_log()] starting thread (client mode): 0x2b9ce7d0
2025-09-28T15:21:49.955 [DEBUG] [Thread-128222] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:21:49.971 [DEBUG] [Thread-128222] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:21:49.971 [INFO] [Thread-128222] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] client lang: <none>
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] server lang: <none>
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] kex follows: False
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] Compression: none
2025-09-28T15:21:49.979 [DEBUG] [Thread-128222] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:21:50.038 [DEBUG] [Thread-128222] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:21:50.039 [DEBUG] [Thread-128222] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:21:50.039 [DEBUG] [Thread-128222] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:21:50.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:21:50.040 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:21:50.102 [DEBUG] [Thread-128222] [transport.py] [_log()] userauth is OK
2025-09-28T15:21:50.102 [DEBUG] [Thread-128222] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:21:50.102 [DEBUG] [Thread-128222] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:21:50.102 [DEBUG] [Thread-128222] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:21:50.102 [DEBUG] [Thread-128222] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:21:50.121 [INFO] [Thread-128222] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:21:50.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-28T15:21:50.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:21:51.084 [DEBUG] [Thread-128222] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:21:51.084 [DEBUG] [Thread-128222] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:21:51.132 [DEBUG] [Thread-128222] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:21:51.132 [DEBUG] [Thread-128222] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:21:51.142 [DEBUG] [Thread-128222] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:21:51.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:21:51.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')
2025-09-28T15:21:51.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-28T15:21:51.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:21:51.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:21:51.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:21:51.176 [DEBUG] [Thread-128222] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:01.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:22:01.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:22:01.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-28T15:22:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 21, 29), 16.42, 33.39, 0.0, 17.77, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:22:01.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:21:29
2025-09-28T15:22:01.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:22:02.048 [DEBUG] [Thread-128224] [transport.py] [_log()] starting thread (client mode): 0x28707670
2025-09-28T15:22:02.048 [DEBUG] [Thread-128224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:02.070 [DEBUG] [Thread-128224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:22:02.070 [INFO] [Thread-128224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:22:02.072 [DEBUG] [Thread-128224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] Compression: none
2025-09-28T15:22:02.073 [DEBUG] [Thread-128224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:02.090 [DEBUG] [Thread-128224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:02.090 [DEBUG] [Thread-128224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:02.091 [DEBUG] [Thread-128224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:22:02.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:22:02.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:02.093 [DEBUG] [Thread-128224] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:02.093 [DEBUG] [Thread-128224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:02.093 [DEBUG] [Thread-128224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:02.093 [DEBUG] [Thread-128224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:22:02.093 [DEBUG] [Thread-128224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:02.112 [INFO] [Thread-128224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:02.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:02.741 [DEBUG] [Thread-128224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:02.741 [DEBUG] [Thread-128224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:02.741 [DEBUG] [Thread-128224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:22:02.782 [DEBUG] [Thread-128224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:02.782 [DEBUG] [Thread-128224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:02.785 [DEBUG] [Thread-128224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:02.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:02.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:22:02.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:22:02.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:22:02.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:02.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:22:02.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:02.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.556679 -999.00  +18.10  26.25     39   +4.10 1 1 1 1 1   888    0 13.62 -57.15 ----- 26.2 26.2 259.4 28.4 23.9 -28.1 23.2 -26.5 24.6 -26.2 25.5 -28.0
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.556679
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:22:02.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:21:29', tmtdew=16.42, humidity=33.39, cloud=0.0, wind=17.77, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:21:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:22:02.805 [DEBUG] [Thread-128224] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:02.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-28T15:22:02.917 [DEBUG] [Thread-128227] [transport.py] [_log()] starting thread (client mode): 0x2b91e2c0
2025-09-28T15:22:02.917 [DEBUG] [Thread-128227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:02.932 [DEBUG] [Thread-128227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:22:02.932 [INFO] [Thread-128227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] Compression: none
2025-09-28T15:22:02.941 [DEBUG] [Thread-128227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:02.995 [DEBUG] [Thread-128227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:02.995 [DEBUG] [Thread-128227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:02.995 [DEBUG] [Thread-128227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:22:02.995 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:22:02.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:03.053 [DEBUG] [Thread-128227] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:03.053 [DEBUG] [Thread-128227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:03.053 [DEBUG] [Thread-128227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:03.053 [DEBUG] [Thread-128227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:22:03.053 [DEBUG] [Thread-128227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:03.067 [INFO] [Thread-128227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:03.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-28T15:22:03.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:04.031 [DEBUG] [Thread-128227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:04.031 [DEBUG] [Thread-128227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:04.079 [DEBUG] [Thread-128227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:04.079 [DEBUG] [Thread-128227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:04.088 [DEBUG] [Thread-128227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:04.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:04.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-28T15:22:04.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-28T15:22:04.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:04.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:04.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:04.123 [DEBUG] [Thread-128227] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:04.660 [DEBUG] [Thread-128229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:11.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:11.047 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:14.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:22:14.126 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:22:14.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-28T15:22:14.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 22, 1), 16.22, 33.82, 0.0, 18.83, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:22:14.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:22:01
2025-09-28T15:22:14.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:22:14.989 [DEBUG] [Thread-128230] [transport.py] [_log()] starting thread (client mode): 0x2b94dfc0
2025-09-28T15:22:14.990 [DEBUG] [Thread-128230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:15.004 [DEBUG] [Thread-128230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:22:15.004 [INFO] [Thread-128230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:15.006 [DEBUG] [Thread-128230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:15.007 [DEBUG] [Thread-128230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:15.007 [DEBUG] [Thread-128230] [transport.py] [_log()] Compression: none
2025-09-28T15:22:15.007 [DEBUG] [Thread-128230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:15.023 [DEBUG] [Thread-128230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:15.023 [DEBUG] [Thread-128230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:15.024 [DEBUG] [Thread-128230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:22:15.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:22:15.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:15.025 [DEBUG] [Thread-128230] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:15.026 [DEBUG] [Thread-128230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:15.026 [DEBUG] [Thread-128230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:15.026 [DEBUG] [Thread-128230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:22:15.026 [DEBUG] [Thread-128230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:15.044 [INFO] [Thread-128230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:15.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:15.660 [DEBUG] [Thread-128230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:15.660 [DEBUG] [Thread-128230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:15.660 [DEBUG] [Thread-128230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:22:15.701 [DEBUG] [Thread-128230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:15.701 [DEBUG] [Thread-128230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:15.704 [DEBUG] [Thread-128230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:15.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:15.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:22:15.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:22:15.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:22:15.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:15.723 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:22:15.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:15.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:22:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.556679 -999.00  +18.10  26.25     39   +4.10 1 1 1 1 1   888    0 13.62 -57.15 ----- 26.2 26.2 259.4 28.4 23.9 -28.1 23.2 -26.5 24.6 -26.2 25.5 -28.0
2025-09-28T15:22:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:22:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:22:15.724 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.556679
2025-09-28T15:22:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:22:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:22:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:22:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:22:15.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:22:15.725 [DEBUG] [Thread-128230] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:15.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:22:01', tmtdew=16.22, humidity=33.82, cloud=0.0, wind=18.83, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:21:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:22:15.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-28T15:22:15.822 [DEBUG] [Thread-128233] [transport.py] [_log()] starting thread (client mode): 0x2b96ffd0
2025-09-28T15:22:15.822 [DEBUG] [Thread-128233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:15.837 [DEBUG] [Thread-128233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:22:15.837 [INFO] [Thread-128233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:22:15.845 [DEBUG] [Thread-128233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:15.845 [DEBUG] [Thread-128233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:22:15.845 [DEBUG] [Thread-128233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:15.845 [DEBUG] [Thread-128233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] Compression: none
2025-09-28T15:22:15.846 [DEBUG] [Thread-128233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:15.901 [DEBUG] [Thread-128233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:15.902 [DEBUG] [Thread-128233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:15.902 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:22:15.903 [DEBUG] [Thread-128233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:22:15.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:15.962 [DEBUG] [Thread-128233] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:15.962 [DEBUG] [Thread-128233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:15.962 [DEBUG] [Thread-128233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:15.962 [DEBUG] [Thread-128233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:22:15.962 [DEBUG] [Thread-128233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:15.981 [INFO] [Thread-128233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:15.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-28T15:22:15.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:16.980 [DEBUG] [Thread-128233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:16.980 [DEBUG] [Thread-128233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:17.031 [DEBUG] [Thread-128233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:17.031 [DEBUG] [Thread-128233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:17.044 [DEBUG] [Thread-128233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:17.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:17.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-28T15:22:17.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-28T15:22:17.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:17.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:17.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:17.091 [DEBUG] [Thread-128233] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:17.614 [DEBUG] [Thread-128235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:19.702 [DEBUG] [Thread-128236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:27.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:22:27.081 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:22:27.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-28T15:22:27.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 22, 1), 16.22, 33.82, 0.0, 18.83, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:22:27.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:22:01
2025-09-28T15:22:27.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:22:27.941 [DEBUG] [Thread-128237] [transport.py] [_log()] starting thread (client mode): 0x2e38f5b0
2025-09-28T15:22:27.941 [DEBUG] [Thread-128237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:27.959 [DEBUG] [Thread-128237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:22:27.959 [INFO] [Thread-128237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:27.961 [DEBUG] [Thread-128237] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] Compression: none
2025-09-28T15:22:27.962 [DEBUG] [Thread-128237] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:27.971 [DEBUG] [Thread-128237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:27.972 [DEBUG] [Thread-128237] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:27.972 [DEBUG] [Thread-128237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:22:27.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:22:27.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:27.973 [DEBUG] [Thread-128237] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:27.974 [DEBUG] [Thread-128237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:27.974 [DEBUG] [Thread-128237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:27.974 [DEBUG] [Thread-128237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:22:27.974 [DEBUG] [Thread-128237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:27.990 [INFO] [Thread-128237] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:27.991 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:28.604 [DEBUG] [Thread-128237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:28.604 [DEBUG] [Thread-128237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:28.605 [DEBUG] [Thread-128237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:22:28.645 [DEBUG] [Thread-128237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:28.646 [DEBUG] [Thread-128237] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:28.648 [DEBUG] [Thread-128237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:28.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:28.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:22:28.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:22:28.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:22:28.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:28.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:22:28.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:28.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:28.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:22:28.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.556679 -999.00  +18.10  26.25     39   +4.10 1 1 1 1 1   888    0 13.62 -57.15 ----- 26.2 26.2 259.4 28.4 23.9 -28.1 23.2 -26.5 24.6 -26.2 25.5 -28.0
2025-09-28T15:22:28.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:22:28.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:22:28.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.556679
2025-09-28T15:22:28.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:22:28.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:22:28.670 [DEBUG] [Thread-128237] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:28.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:22:28.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:22:28.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:22:28.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:22:01', tmtdew=16.22, humidity=33.82, cloud=0.0, wind=18.83, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:21:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:22:28.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-28T15:22:28.765 [DEBUG] [Thread-128240] [transport.py] [_log()] starting thread (client mode): 0x2e38e500
2025-09-28T15:22:28.765 [DEBUG] [Thread-128240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:28.780 [DEBUG] [Thread-128240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:22:28.780 [INFO] [Thread-128240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:22:28.787 [DEBUG] [Thread-128240] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:28.788 [DEBUG] [Thread-128240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:28.789 [DEBUG] [Thread-128240] [transport.py] [_log()] Compression: none
2025-09-28T15:22:28.790 [DEBUG] [Thread-128240] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:28.849 [DEBUG] [Thread-128240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:28.850 [DEBUG] [Thread-128240] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:28.850 [DEBUG] [Thread-128240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:22:28.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:22:28.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:28.905 [DEBUG] [Thread-128240] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:28.906 [DEBUG] [Thread-128240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:28.906 [DEBUG] [Thread-128240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:28.906 [DEBUG] [Thread-128240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:22:28.906 [DEBUG] [Thread-128240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:28.925 [INFO] [Thread-128240] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:28.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-28T15:22:28.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:29.909 [DEBUG] [Thread-128240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:29.909 [DEBUG] [Thread-128240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:29.956 [DEBUG] [Thread-128240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:29.956 [DEBUG] [Thread-128240] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:29.965 [DEBUG] [Thread-128240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:29.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:29.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-28T15:22:29.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-28T15:22:29.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:29.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:29.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:30.000 [DEBUG] [Thread-128240] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:34.754 [DEBUG] [Thread-128242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:40.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:22:40.003 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:22:40.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-28T15:22:40.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 22, 33), 16.03, 34.32, 0.0, 26.94, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:22:40.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:22:33
2025-09-28T15:22:40.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:22:40.862 [DEBUG] [Thread-128243] [transport.py] [_log()] starting thread (client mode): 0x28704c70
2025-09-28T15:22:40.862 [DEBUG] [Thread-128243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:40.882 [DEBUG] [Thread-128243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:22:40.882 [INFO] [Thread-128243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:22:40.885 [DEBUG] [Thread-128243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:40.886 [DEBUG] [Thread-128243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:40.887 [DEBUG] [Thread-128243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:40.887 [DEBUG] [Thread-128243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:40.887 [DEBUG] [Thread-128243] [transport.py] [_log()] Compression: none
2025-09-28T15:22:40.887 [DEBUG] [Thread-128243] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:40.905 [DEBUG] [Thread-128243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:40.905 [DEBUG] [Thread-128243] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:40.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:22:40.907 [DEBUG] [Thread-128243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:22:40.907 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:40.909 [DEBUG] [Thread-128243] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:40.910 [DEBUG] [Thread-128243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:40.910 [DEBUG] [Thread-128243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:40.910 [DEBUG] [Thread-128243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:22:40.910 [DEBUG] [Thread-128243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:40.925 [INFO] [Thread-128243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:40.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:41.577 [DEBUG] [Thread-128243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:41.577 [DEBUG] [Thread-128243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:41.577 [DEBUG] [Thread-128243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:22:41.618 [DEBUG] [Thread-128243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:41.618 [DEBUG] [Thread-128243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:41.621 [DEBUG] [Thread-128243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:41.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:41.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:22:41.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:22:41.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:22:41.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:41.642 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:22:41.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:41.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:41.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:22:41.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557027 -999.00  +17.90  13.87     40   +4.20 1 1 1 1 1   888    0 13.41 -53.01 ----- 13.9 13.9 209.3 24.4 23.8 -27.1 23.2 -25.9 24.6 -25.1 25.3 -28.2
2025-09-28T15:22:41.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:22:41.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:22:41.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557027
2025-09-28T15:22:41.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:22:41.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:22:41.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:22:41.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:22:41.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:22:41.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:22:33', tmtdew=16.03, humidity=34.32, cloud=0.0, wind=26.94, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:22:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:22:41.644 [DEBUG] [Thread-128243] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:41.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:22:41.742 [DEBUG] [Thread-128246] [transport.py] [_log()] starting thread (client mode): 0x2b9ccd30
2025-09-28T15:22:41.742 [DEBUG] [Thread-128246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:41.757 [DEBUG] [Thread-128246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:22:41.757 [INFO] [Thread-128246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:41.765 [DEBUG] [Thread-128246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] Compression: none
2025-09-28T15:22:41.766 [DEBUG] [Thread-128246] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:41.822 [DEBUG] [Thread-128246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:41.822 [DEBUG] [Thread-128246] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:41.823 [DEBUG] [Thread-128246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:22:41.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:22:41.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:41.882 [DEBUG] [Thread-128246] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:41.882 [DEBUG] [Thread-128246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:41.882 [DEBUG] [Thread-128246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:41.882 [DEBUG] [Thread-128246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:22:41.882 [DEBUG] [Thread-128246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:41.901 [INFO] [Thread-128246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:41.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-28T15:22:41.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:42.841 [DEBUG] [Thread-128246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:42.841 [DEBUG] [Thread-128246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:42.889 [DEBUG] [Thread-128246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:42.889 [DEBUG] [Thread-128246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:42.897 [DEBUG] [Thread-128246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:42.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:42.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-28T15:22:42.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-28T15:22:42.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:42.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:42.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:42.929 [DEBUG] [Thread-128246] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:49.783 [DEBUG] [Thread-128248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:22:52.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:22:52.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:22:52.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:22:53.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 22, 33), 16.03, 34.32, 0.0, 26.94, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:22:53.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:22:33
2025-09-28T15:22:53.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:22:53.804 [DEBUG] [Thread-128249] [transport.py] [_log()] starting thread (client mode): 0x2e38e650
2025-09-28T15:22:53.804 [DEBUG] [Thread-128249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:53.816 [DEBUG] [Thread-128249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:22:53.817 [INFO] [Thread-128249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:22:53.819 [DEBUG] [Thread-128249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:53.819 [DEBUG] [Thread-128249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] Compression: none
2025-09-28T15:22:53.820 [DEBUG] [Thread-128249] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:53.828 [DEBUG] [Thread-128249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:53.829 [DEBUG] [Thread-128249] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:53.829 [DEBUG] [Thread-128249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:22:53.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:22:53.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:53.831 [DEBUG] [Thread-128249] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:53.831 [DEBUG] [Thread-128249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:53.832 [DEBUG] [Thread-128249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:53.832 [DEBUG] [Thread-128249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:22:53.832 [DEBUG] [Thread-128249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:53.845 [INFO] [Thread-128249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:53.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:54.453 [DEBUG] [Thread-128249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:54.453 [DEBUG] [Thread-128249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:54.454 [DEBUG] [Thread-128249] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:22:54.494 [DEBUG] [Thread-128249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:54.495 [DEBUG] [Thread-128249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:54.497 [DEBUG] [Thread-128249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:54.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:54.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:22:54.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:22:54.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:22:54.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:54.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:22:54.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557027 -999.00  +17.90  13.87     40   +4.20 1 1 1 1 1   888    0 13.41 -53.01 ----- 13.9 13.9 209.3 24.4 23.8 -27.1 23.2 -25.9 24.6 -25.1 25.3 -28.2
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:22:54.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557027
2025-09-28T15:22:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:22:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:22:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:22:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:22:54.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:22:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:22:33', tmtdew=16.03, humidity=34.32, cloud=0.0, wind=26.94, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:22:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:22:54.525 [DEBUG] [Thread-128249] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:22:54.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:22:54.620 [DEBUG] [Thread-128252] [transport.py] [_log()] starting thread (client mode): 0x2b94f220
2025-09-28T15:22:54.620 [DEBUG] [Thread-128252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:22:54.635 [DEBUG] [Thread-128252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:22:54.635 [INFO] [Thread-128252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] client lang: <none>
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] server lang: <none>
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] kex follows: False
2025-09-28T15:22:54.643 [DEBUG] [Thread-128252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] Compression: none
2025-09-28T15:22:54.644 [DEBUG] [Thread-128252] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:22:54.702 [DEBUG] [Thread-128252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:22:54.702 [DEBUG] [Thread-128252] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:22:54.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:22:54.703 [DEBUG] [Thread-128252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:22:54.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:22:54.760 [DEBUG] [Thread-128252] [transport.py] [_log()] userauth is OK
2025-09-28T15:22:54.760 [DEBUG] [Thread-128252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:22:54.761 [DEBUG] [Thread-128252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:22:54.761 [DEBUG] [Thread-128252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:22:54.761 [DEBUG] [Thread-128252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:22:54.779 [INFO] [Thread-128252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:22:54.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-28T15:22:54.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:22:55.745 [DEBUG] [Thread-128252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:22:55.746 [DEBUG] [Thread-128252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:22:55.793 [DEBUG] [Thread-128252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:22:55.793 [DEBUG] [Thread-128252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:22:55.807 [DEBUG] [Thread-128252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:22:55.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:22:55.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-28T15:22:55.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-28T15:22:55.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:22:55.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:22:55.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:22:55.855 [DEBUG] [Thread-128252] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:04.824 [DEBUG] [Thread-128254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:05.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:23:05.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:23:05.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:23:06.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 22, 33), 16.03, 34.32, 0.0, 26.94, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:23:06.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:22:33
2025-09-28T15:23:06.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:23:06.764 [DEBUG] [Thread-128255] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-28T15:23:06.764 [DEBUG] [Thread-128255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:06.780 [DEBUG] [Thread-128255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:23:06.780 [INFO] [Thread-128255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:06.781 [DEBUG] [Thread-128255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] Compression: none
2025-09-28T15:23:06.782 [DEBUG] [Thread-128255] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:06.790 [DEBUG] [Thread-128255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:06.790 [DEBUG] [Thread-128255] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:06.790 [DEBUG] [Thread-128255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:23:06.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:23:06.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:06.791 [DEBUG] [Thread-128255] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:06.791 [DEBUG] [Thread-128255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:06.791 [DEBUG] [Thread-128255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:06.791 [DEBUG] [Thread-128255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:23:06.791 [DEBUG] [Thread-128255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:06.805 [INFO] [Thread-128255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:06.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:07.413 [DEBUG] [Thread-128255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:07.413 [DEBUG] [Thread-128255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:07.413 [DEBUG] [Thread-128255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:23:07.454 [DEBUG] [Thread-128255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:07.454 [DEBUG] [Thread-128255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:07.457 [DEBUG] [Thread-128255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:07.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:07.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:23:07.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:23:07.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:23:07.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:07.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:23:07.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557374 -999.00  +18.40  11.46     39   +4.30 1 1 1 1 1   888    0 13.38 -57.03 ----- 11.5 11.5 236.8 23.1 23.9 -27.3 23.2 -25.8 24.5 -25.3 25.4 -28.0
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557374
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:23:07.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:22:33', tmtdew=16.03, humidity=34.32, cloud=0.0, wind=26.94, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:22:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:23:07.477 [DEBUG] [Thread-128255] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:07.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-28T15:23:07.561 [DEBUG] [Thread-128258] [transport.py] [_log()] starting thread (client mode): 0x2b91fdf0
2025-09-28T15:23:07.561 [DEBUG] [Thread-128258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:07.576 [DEBUG] [Thread-128258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:23:07.576 [INFO] [Thread-128258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] Compression: none
2025-09-28T15:23:07.584 [DEBUG] [Thread-128258] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:07.640 [DEBUG] [Thread-128258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:07.640 [DEBUG] [Thread-128258] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:07.640 [DEBUG] [Thread-128258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:23:07.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:23:07.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:07.698 [DEBUG] [Thread-128258] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:07.698 [DEBUG] [Thread-128258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:07.698 [DEBUG] [Thread-128258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:07.698 [DEBUG] [Thread-128258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:23:07.698 [DEBUG] [Thread-128258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:07.713 [INFO] [Thread-128258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:07.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-28T15:23:07.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:08.658 [DEBUG] [Thread-128258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:08.659 [DEBUG] [Thread-128258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:08.706 [DEBUG] [Thread-128258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:08.706 [DEBUG] [Thread-128258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:08.719 [DEBUG] [Thread-128258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:08.728 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:08.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-28T15:23: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-28T15:23:08.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:08.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:08.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:08.756 [DEBUG] [Thread-128258] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:11.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:11.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:17.671 [DEBUG] [Thread-128260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:18.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:23:18.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:23:18.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-28T15:23:19.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 23, 5), 15.97, 34.46, 0.0, 23.01, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:23:19.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:23:05
2025-09-28T15:23:19.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:23:19.616 [DEBUG] [Thread-128261] [transport.py] [_log()] starting thread (client mode): 0x30ddf370
2025-09-28T15:23:19.616 [DEBUG] [Thread-128261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:19.635 [DEBUG] [Thread-128261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:23:19.635 [INFO] [Thread-128261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:23:19.637 [DEBUG] [Thread-128261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:19.637 [DEBUG] [Thread-128261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:23:19.637 [DEBUG] [Thread-128261] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:19.637 [DEBUG] [Thread-128261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:19.638 [DEBUG] [Thread-128261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] Compression: none
2025-09-28T15:23:19.639 [DEBUG] [Thread-128261] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:19.651 [DEBUG] [Thread-128261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:19.652 [DEBUG] [Thread-128261] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:19.652 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:23:19.653 [DEBUG] [Thread-128261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:23:19.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:19.655 [DEBUG] [Thread-128261] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:19.655 [DEBUG] [Thread-128261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:19.656 [DEBUG] [Thread-128261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:19.656 [DEBUG] [Thread-128261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:23:19.656 [DEBUG] [Thread-128261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:19.675 [INFO] [Thread-128261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:19.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:19.851 [DEBUG] [Thread-128263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:20.394 [DEBUG] [Thread-128261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:20.394 [DEBUG] [Thread-128261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:20.395 [DEBUG] [Thread-128261] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:23:20.435 [DEBUG] [Thread-128261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:20.436 [DEBUG] [Thread-128261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:20.439 [DEBUG] [Thread-128261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:20.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:20.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:23:20.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:23:20.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:23:20.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:20.462 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:23:20.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:20.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:20.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:23:20.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557374 -999.00  +18.40  11.46     39   +4.30 1 1 1 1 1   888    0 13.38 -57.03 ----- 11.5 11.5 236.8 23.1 23.9 -27.3 23.2 -25.8 24.5 -25.3 25.4 -28.0
2025-09-28T15:23:20.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:23:20.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:23:20.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557374
2025-09-28T15:23:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:23:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:23:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:23:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:23:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:23:20.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:23:05', tmtdew=15.97, humidity=34.46, cloud=0.0, wind=23.01, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:22:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:23:20.466 [DEBUG] [Thread-128261] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23: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-28T15:23:20.561 [DEBUG] [Thread-128265] [transport.py] [_log()] starting thread (client mode): 0x2e38cd00
2025-09-28T15:23:20.561 [DEBUG] [Thread-128265] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:20.575 [DEBUG] [Thread-128265] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:23:20.575 [INFO] [Thread-128265] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:20.583 [DEBUG] [Thread-128265] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] Compression: none
2025-09-28T15:23:20.584 [DEBUG] [Thread-128265] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:20.640 [DEBUG] [Thread-128265] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:20.641 [DEBUG] [Thread-128265] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:20.641 [DEBUG] [Thread-128265] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:23:20.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:23:20.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:20.698 [DEBUG] [Thread-128265] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:20.699 [DEBUG] [Thread-128265] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:20.699 [DEBUG] [Thread-128265] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:20.699 [DEBUG] [Thread-128265] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:23:20.699 [DEBUG] [Thread-128265] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:20.713 [INFO] [Thread-128265] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:20.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-28T15:23:20.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:21.664 [DEBUG] [Thread-128265] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:21.664 [DEBUG] [Thread-128265] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:21.713 [DEBUG] [Thread-128265] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:21.713 [DEBUG] [Thread-128265] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:21.721 [DEBUG] [Thread-128265] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:21.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:21.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-28T15:23:21.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-28T15:23:21.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:21.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:21.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:21.756 [DEBUG] [Thread-128265] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:31.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:23:31.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:23:31.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-28T15:23:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 23, 5), 15.97, 34.46, 0.0, 23.01, 18.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:23:32.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:23:05
2025-09-28T15:23:32.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:23:32.604 [DEBUG] [Thread-128267] [transport.py] [_log()] starting thread (client mode): 0x2b9bb8b0
2025-09-28T15:23:32.604 [DEBUG] [Thread-128267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:32.624 [DEBUG] [Thread-128267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:23:32.624 [INFO] [Thread-128267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] Compression: none
2025-09-28T15:23:32.625 [DEBUG] [Thread-128267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:32.643 [DEBUG] [Thread-128267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:32.644 [DEBUG] [Thread-128267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:32.644 [DEBUG] [Thread-128267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:23:32.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:23:32.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:32.646 [DEBUG] [Thread-128267] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:32.646 [DEBUG] [Thread-128267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:32.646 [DEBUG] [Thread-128267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:32.646 [DEBUG] [Thread-128267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:23:32.646 [DEBUG] [Thread-128267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:32.664 [INFO] [Thread-128267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:32.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:33.391 [DEBUG] [Thread-128267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:33.391 [DEBUG] [Thread-128267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:33.391 [DEBUG] [Thread-128267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:23:33.432 [DEBUG] [Thread-128267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:33.432 [DEBUG] [Thread-128267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:33.435 [DEBUG] [Thread-128267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:33.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:33.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:23:33.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:23:33.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:23:33.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:33.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:23:33.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557374 -999.00  +18.40  11.46     39   +4.30 1 1 1 1 1   888    0 13.38 -57.03 ----- 11.5 11.5 236.8 23.1 23.9 -27.3 23.2 -25.8 24.5 -25.3 25.4 -28.0
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:23:33.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557374
2025-09-28T15:23:33.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:23:33.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:23:33.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:23:33.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:23:33.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:23:33.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:23:05', tmtdew=15.97, humidity=34.46, cloud=0.0, wind=23.01, temperature=18.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:22:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:23:33.462 [DEBUG] [Thread-128267] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:33.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-28T15:23:33.766 [DEBUG] [Thread-128270] [transport.py] [_log()] starting thread (client mode): 0x2b91f2e0
2025-09-28T15:23:33.767 [DEBUG] [Thread-128270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:33.781 [DEBUG] [Thread-128270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:23:33.781 [INFO] [Thread-128270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:23:33.788 [DEBUG] [Thread-128270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:33.789 [DEBUG] [Thread-128270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:33.790 [DEBUG] [Thread-128270] [transport.py] [_log()] Compression: none
2025-09-28T15:23:33.790 [DEBUG] [Thread-128270] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:33.846 [DEBUG] [Thread-128270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:33.846 [DEBUG] [Thread-128270] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:33.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:23:33.847 [DEBUG] [Thread-128270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:23:33.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:33.902 [DEBUG] [Thread-128270] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:33.902 [DEBUG] [Thread-128270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:33.902 [DEBUG] [Thread-128270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:33.902 [DEBUG] [Thread-128270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:23:33.903 [DEBUG] [Thread-128270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:33.921 [INFO] [Thread-128270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:33.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-28T15:23:33.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:34.851 [DEBUG] [Thread-128270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:34.851 [DEBUG] [Thread-128270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:34.892 [DEBUG] [Thread-128272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:34.900 [DEBUG] [Thread-128270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:34.901 [DEBUG] [Thread-128270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:34.910 [DEBUG] [Thread-128270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:34.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:34.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-28T15:23:34.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-28T15:23:34.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:34.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:34.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:34.953 [DEBUG] [Thread-128270] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:44.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:23:44.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:23:44.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-28T15:23:45.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 23, 37), 16.0, 34.41, 0.0, 23.54, 18.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:23:45.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:23:37
2025-09-28T15:23:45.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:23:45.791 [DEBUG] [Thread-128273] [transport.py] [_log()] starting thread (client mode): 0x2b94e830
2025-09-28T15:23:45.791 [DEBUG] [Thread-128273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:45.813 [DEBUG] [Thread-128273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:23:45.813 [INFO] [Thread-128273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] Compression: none
2025-09-28T15:23:45.817 [DEBUG] [Thread-128273] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:45.833 [DEBUG] [Thread-128273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:45.833 [DEBUG] [Thread-128273] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:45.833 [DEBUG] [Thread-128273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:23:45.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:23:45.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:45.834 [DEBUG] [Thread-128273] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:45.834 [DEBUG] [Thread-128273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:45.834 [DEBUG] [Thread-128273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:45.834 [DEBUG] [Thread-128273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:23:45.834 [DEBUG] [Thread-128273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:45.851 [INFO] [Thread-128273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:45.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:46.428 [DEBUG] [Thread-128273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:46.428 [DEBUG] [Thread-128273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:46.428 [DEBUG] [Thread-128273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:23:46.469 [DEBUG] [Thread-128273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:46.469 [DEBUG] [Thread-128273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:46.473 [DEBUG] [Thread-128273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:46.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:46.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:23:46.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:23:46.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:23:46.493 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:46.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:23:46.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557721 -999.00  +18.20  19.42     39   +4.10 1 1 1 1 1   888    0 13.35 -60.85 ----- 19.4 19.4 235.0 30.0 23.7 -29.5 23.2 -26.5 24.4 -25.7 25.3 -28.6
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:23:46.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557721
2025-09-28T15:23:46.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:23:46.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:23:46.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:23:46.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:23:46.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:23:46.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:23:37', tmtdew=16.0, humidity=34.41, cloud=0.0, wind=23.54, temperature=18.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:23:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:23:46.498 [DEBUG] [Thread-128273] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:46.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-28T15:23:46.601 [DEBUG] [Thread-128276] [transport.py] [_log()] starting thread (client mode): 0x2b91e0e0
2025-09-28T15:23:46.601 [DEBUG] [Thread-128276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:46.616 [DEBUG] [Thread-128276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:23:46.616 [INFO] [Thread-128276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:23:46.625 [DEBUG] [Thread-128276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:46.626 [DEBUG] [Thread-128276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:46.627 [DEBUG] [Thread-128276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:46.628 [DEBUG] [Thread-128276] [transport.py] [_log()] Compression: none
2025-09-28T15:23:46.628 [DEBUG] [Thread-128276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:46.683 [DEBUG] [Thread-128276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:46.683 [DEBUG] [Thread-128276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:46.684 [DEBUG] [Thread-128276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:23:46.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:23:46.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:46.738 [DEBUG] [Thread-128276] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:46.738 [DEBUG] [Thread-128276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:46.739 [DEBUG] [Thread-128276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:46.739 [DEBUG] [Thread-128276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:23:46.739 [DEBUG] [Thread-128276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:46.758 [INFO] [Thread-128276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:46.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-28T15:23:46.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:47.726 [DEBUG] [Thread-128276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:47.726 [DEBUG] [Thread-128276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:47.774 [DEBUG] [Thread-128276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:47.774 [DEBUG] [Thread-128276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:47.783 [DEBUG] [Thread-128276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:47.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:47.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-28T15:23:47.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-28T15:23:47.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:47.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:47.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:47.818 [DEBUG] [Thread-128276] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:49.932 [DEBUG] [Thread-128278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:23:57.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:23:57.821 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:23:57.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-28T15:23:58.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 23, 37), 16.0, 34.41, 0.0, 23.54, 18.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:23:58.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:23:37
2025-09-28T15:23:58.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:23:58.661 [DEBUG] [Thread-128279] [transport.py] [_log()] starting thread (client mode): 0x2e38ebc0
2025-09-28T15:23:58.661 [DEBUG] [Thread-128279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:58.681 [DEBUG] [Thread-128279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:23:58.681 [INFO] [Thread-128279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:23:58.684 [DEBUG] [Thread-128279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:58.685 [DEBUG] [Thread-128279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:58.686 [DEBUG] [Thread-128279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:58.686 [DEBUG] [Thread-128279] [transport.py] [_log()] Compression: none
2025-09-28T15:23:58.686 [DEBUG] [Thread-128279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:58.703 [DEBUG] [Thread-128279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:58.704 [DEBUG] [Thread-128279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:58.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:23:58.705 [DEBUG] [Thread-128279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:23:58.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:58.708 [DEBUG] [Thread-128279] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:58.708 [DEBUG] [Thread-128279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:58.709 [DEBUG] [Thread-128279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:58.709 [DEBUG] [Thread-128279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:23:58.709 [DEBUG] [Thread-128279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:58.731 [INFO] [Thread-128279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:58.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:23:59.468 [DEBUG] [Thread-128279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:23:59.468 [DEBUG] [Thread-128279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:23:59.468 [DEBUG] [Thread-128279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:23:59.509 [DEBUG] [Thread-128279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:23:59.509 [DEBUG] [Thread-128279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:23:59.511 [DEBUG] [Thread-128279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:23:59.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:23:59.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:23:59.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:23:59.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:23:59.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:23:59.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:23:59.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.557721 -999.00  +18.20  19.42     39   +4.10 1 1 1 1 1   888    0 13.35 -60.85 ----- 19.4 19.4 235.0 30.0 23.7 -29.5 23.2 -26.5 24.4 -25.7 25.3 -28.6
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.557721
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:23:59.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:23:37', tmtdew=16.0, humidity=34.41, cloud=0.0, wind=23.54, temperature=18.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:23:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:23:59.525 [DEBUG] [Thread-128279] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:23:59.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-28T15:23:59.607 [DEBUG] [Thread-128282] [transport.py] [_log()] starting thread (client mode): 0x2b94e6e0
2025-09-28T15:23:59.607 [DEBUG] [Thread-128282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:23:59.621 [DEBUG] [Thread-128282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:23:59.621 [INFO] [Thread-128282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] client lang: <none>
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] server lang: <none>
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] kex follows: False
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] Compression: none
2025-09-28T15:23:59.629 [DEBUG] [Thread-128282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:23:59.685 [DEBUG] [Thread-128282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:23:59.685 [DEBUG] [Thread-128282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:23:59.685 [DEBUG] [Thread-128282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:23:59.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:23:59.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:23:59.742 [DEBUG] [Thread-128282] [transport.py] [_log()] userauth is OK
2025-09-28T15:23:59.742 [DEBUG] [Thread-128282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:23:59.742 [DEBUG] [Thread-128282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:23:59.742 [DEBUG] [Thread-128282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:23:59.742 [DEBUG] [Thread-128282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:23:59.756 [INFO] [Thread-128282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:23:59.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:23:59.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:00.723 [DEBUG] [Thread-128282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:00.723 [DEBUG] [Thread-128282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:00.771 [DEBUG] [Thread-128282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:00.771 [DEBUG] [Thread-128282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:00.779 [DEBUG] [Thread-128282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:00.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:00.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-28T15:24: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') -> 00000000
2025-09-28T15:24:00.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:00.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:00.802 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:00.811 [DEBUG] [Thread-128282] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:04.979 [DEBUG] [Thread-128284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:10.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:24:10.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:24:10.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:24:11.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:11.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 23, 37), 16.0, 34.41, 0.0, 23.54, 18.0, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:24:11.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:23:37
2025-09-28T15:24:11.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:24:11.699 [DEBUG] [Thread-128285] [transport.py] [_log()] starting thread (client mode): 0x2b96d4b0
2025-09-28T15:24:11.699 [DEBUG] [Thread-128285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:11.714 [DEBUG] [Thread-128285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:24:11.714 [INFO] [Thread-128285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] Compression: none
2025-09-28T15:24:11.716 [DEBUG] [Thread-128285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:11.724 [DEBUG] [Thread-128285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:11.724 [DEBUG] [Thread-128285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:11.724 [DEBUG] [Thread-128285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:24:11.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:24:11.725 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:11.725 [DEBUG] [Thread-128285] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:11.725 [DEBUG] [Thread-128285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:11.725 [DEBUG] [Thread-128285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:11.725 [DEBUG] [Thread-128285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:24:11.726 [DEBUG] [Thread-128285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:11.739 [INFO] [Thread-128285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:11.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:12.345 [DEBUG] [Thread-128285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:12.345 [DEBUG] [Thread-128285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:12.346 [DEBUG] [Thread-128285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:24:12.386 [DEBUG] [Thread-128285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:12.386 [DEBUG] [Thread-128285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:12.389 [DEBUG] [Thread-128285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:12.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:12.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:24:12.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:24:12.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:24:12.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:12.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:24:12.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.558416 -999.00  +18.50  12.72     38   +4.10 1 1 1 1 1   888    0 13.18 -70.35 ----- 12.7 12.7 248.7 20.2 23.6 -26.6 23.0 -26.6 24.4 -25.9 25.2 -27.0
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:24:12.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.558416
2025-09-28T15:24:12.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:24:12.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:24:12.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:24:12.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:23:37', tmtdew=16.0, humidity=34.41, cloud=0.0, wind=23.54, temperature=18.0, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:24:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:24:12.413 [DEBUG] [Thread-128285] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:12.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-28T15:24:12.510 [DEBUG] [Thread-128288] [transport.py] [_log()] starting thread (client mode): 0x2b96fee0
2025-09-28T15:24:12.510 [DEBUG] [Thread-128288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:12.525 [DEBUG] [Thread-128288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:24:12.525 [INFO] [Thread-128288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:24:12.532 [DEBUG] [Thread-128288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] Compression: none
2025-09-28T15:24:12.533 [DEBUG] [Thread-128288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:12.590 [DEBUG] [Thread-128288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:12.590 [DEBUG] [Thread-128288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:12.591 [DEBUG] [Thread-128288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:24:12.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:24:12.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:12.646 [DEBUG] [Thread-128288] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:12.647 [DEBUG] [Thread-128288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:12.647 [DEBUG] [Thread-128288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:12.647 [DEBUG] [Thread-128288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:24:12.647 [DEBUG] [Thread-128288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:12.666 [INFO] [Thread-128288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:12.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-28T15:24:12.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:13.733 [DEBUG] [Thread-128288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:13.734 [DEBUG] [Thread-128288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:13.781 [DEBUG] [Thread-128288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:13.781 [DEBUG] [Thread-128288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:13.790 [DEBUG] [Thread-128288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:13.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:13.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')
2025-09-28T15:24:13.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-28T15:24:13.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:13.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:13.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:13.824 [DEBUG] [Thread-128288] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:17.721 [DEBUG] [Thread-128290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:20.008 [DEBUG] [Thread-128291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:23.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:24:23.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:24:23.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-28T15:24:24.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 24, 9), 16.32, 33.71, 0.0, 22.99, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:24:24.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:24:09
2025-09-28T15:24:24.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:24:24.677 [DEBUG] [Thread-128292] [transport.py] [_log()] starting thread (client mode): 0x2e3496f0
2025-09-28T15:24:24.677 [DEBUG] [Thread-128292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:24.698 [DEBUG] [Thread-128292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:24:24.698 [INFO] [Thread-128292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:24.701 [DEBUG] [Thread-128292] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] Compression: none
2025-09-28T15:24:24.702 [DEBUG] [Thread-128292] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:24.721 [DEBUG] [Thread-128292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:24.721 [DEBUG] [Thread-128292] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:24.722 [DEBUG] [Thread-128292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:24:24.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:24:24.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:24.723 [DEBUG] [Thread-128292] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:24.723 [DEBUG] [Thread-128292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:24.723 [DEBUG] [Thread-128292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:24.724 [DEBUG] [Thread-128292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:24:24.724 [DEBUG] [Thread-128292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:24.747 [INFO] [Thread-128292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:24.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:25.497 [DEBUG] [Thread-128292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:25.497 [DEBUG] [Thread-128292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:25.497 [DEBUG] [Thread-128292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:24:25.538 [DEBUG] [Thread-128292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:25.538 [DEBUG] [Thread-128292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:25.541 [DEBUG] [Thread-128292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:25.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:25.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:24:25.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:24:25.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:24:25.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:25.559 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:24:25.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:25.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.558416 -999.00  +18.50  12.72     38   +4.10 1 1 1 1 1   888    0 13.18 -70.35 ----- 12.7 12.7 248.7 20.2 23.6 -26.6 23.0 -26.6 24.4 -25.9 25.2 -27.0
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.558416
2025-09-28T15:24:25.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:24:25.561 [DEBUG] [Thread-128292] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:25.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:24:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:24:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:24:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:24:25.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:24:09', tmtdew=16.32, humidity=33.71, cloud=0.0, wind=22.99, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:24:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:24:25.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-28T15:24:25.654 [DEBUG] [Thread-128295] [transport.py] [_log()] starting thread (client mode): 0x2b91fc10
2025-09-28T15:24:25.655 [DEBUG] [Thread-128295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:25.669 [DEBUG] [Thread-128295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:24:25.669 [INFO] [Thread-128295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:24:25.677 [DEBUG] [Thread-128295] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:25.677 [DEBUG] [Thread-128295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:24:25.677 [DEBUG] [Thread-128295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:25.678 [DEBUG] [Thread-128295] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] Compression: none
2025-09-28T15:24:25.679 [DEBUG] [Thread-128295] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:25.739 [DEBUG] [Thread-128295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:25.739 [DEBUG] [Thread-128295] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:25.740 [DEBUG] [Thread-128295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:24:25.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:24:25.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:25.794 [DEBUG] [Thread-128295] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:25.795 [DEBUG] [Thread-128295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:25.795 [DEBUG] [Thread-128295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:25.795 [DEBUG] [Thread-128295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:24:25.795 [DEBUG] [Thread-128295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:25.814 [INFO] [Thread-128295] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:25.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-28T15:24:25.815 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:26.874 [DEBUG] [Thread-128295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:26.875 [DEBUG] [Thread-128295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:26.923 [DEBUG] [Thread-128295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:26.923 [DEBUG] [Thread-128295] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:26.932 [DEBUG] [Thread-128295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:26.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:26.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')
2025-09-28T15:24:26.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-28T15:24:26.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:26.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:26.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:26.967 [DEBUG] [Thread-128295] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:35.059 [DEBUG] [Thread-128297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:36.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:24:36.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:24:36.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-28T15:24:37.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 24, 9), 16.32, 33.71, 0.0, 22.99, 18.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:24:37.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:24:09
2025-09-28T15:24:37.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:24:37.847 [DEBUG] [Thread-128298] [transport.py] [_log()] starting thread (client mode): 0x2b9bbbe0
2025-09-28T15:24:37.847 [DEBUG] [Thread-128298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:37.866 [DEBUG] [Thread-128298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:24:37.866 [INFO] [Thread-128298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:37.869 [DEBUG] [Thread-128298] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] Compression: none
2025-09-28T15:24:37.870 [DEBUG] [Thread-128298] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:37.884 [DEBUG] [Thread-128298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:37.885 [DEBUG] [Thread-128298] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:37.885 [DEBUG] [Thread-128298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:24:37.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:24:37.885 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:37.886 [DEBUG] [Thread-128298] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:37.886 [DEBUG] [Thread-128298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:37.886 [DEBUG] [Thread-128298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:37.886 [DEBUG] [Thread-128298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:24:37.886 [DEBUG] [Thread-128298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:37.899 [INFO] [Thread-128298] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:37.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:38.618 [DEBUG] [Thread-128298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:38.618 [DEBUG] [Thread-128298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:38.619 [DEBUG] [Thread-128298] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:24:38.660 [DEBUG] [Thread-128298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:38.660 [DEBUG] [Thread-128298] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:38.662 [DEBUG] [Thread-128298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:38.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:38.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:24:38.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:24:38.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:24:38.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:38.681 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:24:38.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.558416 -999.00  +18.50  12.72     38   +4.10 1 1 1 1 1   888    0 13.18 -70.35 ----- 12.7 12.7 248.7 20.2 23.6 -26.6 23.0 -26.6 24.4 -25.9 25.2 -27.0
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.558416
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:24:38.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:24:09', tmtdew=16.32, humidity=33.71, cloud=0.0, wind=22.99, temperature=18.17, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:24:07.142', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:24:38.683 [DEBUG] [Thread-128298] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:38.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-28T15:24:38.767 [DEBUG] [Thread-128301] [transport.py] [_log()] starting thread (client mode): 0x2b96d930
2025-09-28T15:24:38.767 [DEBUG] [Thread-128301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:38.782 [DEBUG] [Thread-128301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:24:38.782 [INFO] [Thread-128301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] Compression: none
2025-09-28T15:24:38.790 [DEBUG] [Thread-128301] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:38.845 [DEBUG] [Thread-128301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:38.845 [DEBUG] [Thread-128301] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:38.845 [DEBUG] [Thread-128301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:24:38.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:24:38.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:38.902 [DEBUG] [Thread-128301] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:38.902 [DEBUG] [Thread-128301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:38.902 [DEBUG] [Thread-128301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:38.903 [DEBUG] [Thread-128301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:24:38.903 [DEBUG] [Thread-128301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:38.916 [INFO] [Thread-128301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:38.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-28T15:24:38.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:39.882 [DEBUG] [Thread-128301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:39.882 [DEBUG] [Thread-128301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:39.930 [DEBUG] [Thread-128301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:39.930 [DEBUG] [Thread-128301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:39.938 [DEBUG] [Thread-128301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:39.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24: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-28T15:24: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-28T15:24:39.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:39.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:39.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:39.970 [DEBUG] [Thread-128301] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:49.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:24:49.972 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:24:49.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-28T15:24:50.088 [DEBUG] [Thread-128303 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:24:50.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 24, 41), 16.32, 33.81, 0.0, 26.18, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:24:50.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:24:41
2025-09-28T15:24:50.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:24:50.809 [DEBUG] [Thread-128304] [transport.py] [_log()] starting thread (client mode): 0x2b96efb0
2025-09-28T15:24:50.809 [DEBUG] [Thread-128304] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:50.830 [DEBUG] [Thread-128304] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:24:50.830 [INFO] [Thread-128304] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:24:50.831 [DEBUG] [Thread-128304] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:50.831 [DEBUG] [Thread-128304] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:24:50.831 [DEBUG] [Thread-128304] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:50.831 [DEBUG] [Thread-128304] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:50.831 [DEBUG] [Thread-128304] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] Compression: none
2025-09-28T15:24:50.832 [DEBUG] [Thread-128304] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:50.850 [DEBUG] [Thread-128304] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:50.851 [DEBUG] [Thread-128304] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:50.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:24:50.852 [DEBUG] [Thread-128304] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:24:50.853 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:50.854 [DEBUG] [Thread-128304] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:50.854 [DEBUG] [Thread-128304] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:50.855 [DEBUG] [Thread-128304] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:50.855 [DEBUG] [Thread-128304] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:24:50.855 [DEBUG] [Thread-128304] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:50.872 [INFO] [Thread-128304] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:50.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:51.459 [DEBUG] [Thread-128304] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:51.460 [DEBUG] [Thread-128304] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:51.460 [DEBUG] [Thread-128304] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:24:51.500 [DEBUG] [Thread-128304] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:51.500 [DEBUG] [Thread-128304] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:51.503 [DEBUG] [Thread-128304] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:51.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:51.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:24:51.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:24:51.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:24:51.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:51.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:24:51.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:51.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.558763 -999.00  +18.40  14.84     37   +3.80 1 1 1 1 1   888    0 12.80 -70.06 ----- 14.8 14.8 242.5 21.3 23.6 -27.2 23.0 -26.1 24.3 -27.1 25.2 -28.3
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.558763
2025-09-28T15:24:51.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:24:51.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:24:51.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:24:51.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:24:51.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:24:51.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:24:41', tmtdew=16.32, humidity=33.81, cloud=0.0, wind=26.18, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:24:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:24:51.528 [DEBUG] [Thread-128304] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:24:51.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-28T15:24:51.622 [DEBUG] [Thread-128307] [transport.py] [_log()] starting thread (client mode): 0x2e3dd8d0
2025-09-28T15:24:51.623 [DEBUG] [Thread-128307] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:24:51.641 [DEBUG] [Thread-128307] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:24:51.641 [INFO] [Thread-128307] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:24:51.649 [DEBUG] [Thread-128307] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:24:51.649 [DEBUG] [Thread-128307] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] client lang: <none>
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] server lang: <none>
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] kex follows: False
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] Compression: none
2025-09-28T15:24:51.650 [DEBUG] [Thread-128307] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:24:51.708 [DEBUG] [Thread-128307] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:24:51.708 [DEBUG] [Thread-128307] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:24:51.709 [DEBUG] [Thread-128307] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:24:51.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:24:51.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:24:51.767 [DEBUG] [Thread-128307] [transport.py] [_log()] userauth is OK
2025-09-28T15:24:51.767 [DEBUG] [Thread-128307] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:24:51.767 [DEBUG] [Thread-128307] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:24:51.776 [DEBUG] [Thread-128307] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:24:51.776 [DEBUG] [Thread-128307] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:24:51.800 [INFO] [Thread-128307] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:24:51.800 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:24:51.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:24:52.768 [DEBUG] [Thread-128307] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:24:52.769 [DEBUG] [Thread-128307] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:24:52.816 [DEBUG] [Thread-128307] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:24:52.816 [DEBUG] [Thread-128307] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:24:52.826 [DEBUG] [Thread-128307] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:24:52.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:24:52.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')
2025-09-28T15:24:52.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') -> 00000000
2025-09-28T15:24:52.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:24:52.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:24:52.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:24:52.864 [DEBUG] [Thread-128307] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:25:02.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:25:02.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:25:02.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-28T15:25:03.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 24, 41), 16.32, 33.81, 0.0, 26.18, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:25:03.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:24:41
2025-09-28T15:25:03.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:25:03.716 [DEBUG] [Thread-128309] [transport.py] [_log()] starting thread (client mode): 0x2b91ffd0
2025-09-28T15:25:03.716 [DEBUG] [Thread-128309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:25:03.736 [DEBUG] [Thread-128309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:25:03.736 [INFO] [Thread-128309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] client lang: <none>
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] server lang: <none>
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] kex follows: False
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] Compression: none
2025-09-28T15:25:03.740 [DEBUG] [Thread-128309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:25:03.756 [DEBUG] [Thread-128309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:25:03.756 [DEBUG] [Thread-128309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:25:03.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:25:03.757 [DEBUG] [Thread-128309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:25:03.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:25:03.759 [DEBUG] [Thread-128309] [transport.py] [_log()] userauth is OK
2025-09-28T15:25:03.759 [DEBUG] [Thread-128309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:25:03.759 [DEBUG] [Thread-128309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:25:03.760 [DEBUG] [Thread-128309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:25:03.760 [DEBUG] [Thread-128309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:25:03.782 [INFO] [Thread-128309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:25:03.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:25:05.119 [DEBUG] [Thread-128311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:10.811 [DEBUG] [Thread-128309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:25:10.811 [DEBUG] [Thread-128309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:25:10.812 [DEBUG] [Thread-128309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:25:10.853 [DEBUG] [Thread-128309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:25:10.853 [DEBUG] [Thread-128309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:25:10.855 [DEBUG] [Thread-128309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:25:10.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:25:10.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:25:10.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:25:10.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:25:10.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:25:10.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:25:10.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:25:10.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:25:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:25:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.558763 -999.00  +18.40  14.84     37   +3.80 1 1 1 1 1   888    0 12.80 -70.06 ----- 14.8 14.8 242.5 21.3 23.6 -27.2 23.0 -26.1 24.3 -27.1 25.2 -28.3
2025-09-28T15:25:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:25:10.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:25:10.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.558763
2025-09-28T15:25:10.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:25:10.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:25:10.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:25:10.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:25:10.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:25:10.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:24:41', tmtdew=16.32, humidity=33.81, cloud=0.0, wind=26.18, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:24:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:25:10.904 [DEBUG] [Thread-128309] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:25:10.990 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:25:11.002 [DEBUG] [Thread-128313] [transport.py] [_log()] starting thread (client mode): 0x2b94e2c0
2025-09-28T15:25:11.002 [DEBUG] [Thread-128313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:25:11.017 [DEBUG] [Thread-128313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:25:11.017 [INFO] [Thread-128313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:25:11.024 [DEBUG] [Thread-128313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] client lang: <none>
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] server lang: <none>
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] kex follows: False
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] Compression: none
2025-09-28T15:25:11.025 [DEBUG] [Thread-128313] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:25:11.084 [DEBUG] [Thread-128313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:25:11.085 [DEBUG] [Thread-128313] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:25:11.085 [DEBUG] [Thread-128313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:25:11.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:25:11.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:25:11.143 [DEBUG] [Thread-128313] [transport.py] [_log()] userauth is OK
2025-09-28T15:25:11.143 [DEBUG] [Thread-128313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:25:11.143 [DEBUG] [Thread-128313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:25:11.143 [DEBUG] [Thread-128313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:25:11.143 [DEBUG] [Thread-128313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:25:11.162 [INFO] [Thread-128313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:25:11.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-28T15:25:11.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:25:11.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:11.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:12.108 [DEBUG] [Thread-128313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:25:12.108 [DEBUG] [Thread-128313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:25:12.156 [DEBUG] [Thread-128313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:25:12.156 [DEBUG] [Thread-128313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:25:12.165 [DEBUG] [Thread-128313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:25:12.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:25:12.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-28T15:25:12.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-28T15:25:12.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:25:12.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:25:12.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:25:12.199 [DEBUG] [Thread-128313] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:25:17.773 [DEBUG] [Thread-128315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:20.162 [DEBUG] [Thread-128316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:22.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:25:22.198 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:25:22.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-28T15:25:22.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 25, 13), 16.2, 34.06, 0.0, 24.0, 17.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:25:22.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:25:13
2025-09-28T15:25:22.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:25:23.036 [DEBUG] [Thread-128317] [transport.py] [_log()] starting thread (client mode): 0x2b91fc10
2025-09-28T15:25:23.036 [DEBUG] [Thread-128317] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:25:23.056 [DEBUG] [Thread-128317] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:25:23.057 [INFO] [Thread-128317] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:25:23.060 [DEBUG] [Thread-128317] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] client lang: <none>
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] server lang: <none>
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] kex follows: False
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] Compression: none
2025-09-28T15:25:23.061 [DEBUG] [Thread-128317] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:25:23.078 [DEBUG] [Thread-128317] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:25:23.078 [DEBUG] [Thread-128317] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:25:23.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:25:23.079 [DEBUG] [Thread-128317] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:25:23.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:25:23.081 [DEBUG] [Thread-128317] [transport.py] [_log()] userauth is OK
2025-09-28T15:25:23.082 [DEBUG] [Thread-128317] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:25:23.082 [DEBUG] [Thread-128317] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:25:23.082 [DEBUG] [Thread-128317] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:25:23.082 [DEBUG] [Thread-128317] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:25:23.105 [INFO] [Thread-128317] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:25:23.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:25:23.689 [DEBUG] [Thread-128317] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:25:23.689 [DEBUG] [Thread-128317] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:25:23.690 [DEBUG] [Thread-128317] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:25:23.730 [DEBUG] [Thread-128317] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:25:23.730 [DEBUG] [Thread-128317] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:25:23.732 [DEBUG] [Thread-128317] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:25:23.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:25:23.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:25:23.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:25:23.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:25:23.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:25:23.757 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:25:23.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:25:23.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:25:23.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:25:23.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.559110 -999.00  +18.00  20.40     38   +3.60 1 1 1 1 1   888    0 13.06 -68.23 ----- 20.4 20.4 259.2 27.9 23.6 -27.5 23.0 -26.3 24.2 -25.8 25.1 -27.9
2025-09-28T15:25:23.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:25:23.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:25:23.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.559110
2025-09-28T15:25:23.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:25:23.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:25:23.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:25:23.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:25:23.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:25:23.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:25:13', tmtdew=16.2, humidity=34.06, cloud=0.0, wind=24.0, temperature=17.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:25:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:25:23.760 [DEBUG] [Thread-128317] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:25:23.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-28T15:25:35.191 [DEBUG] [Thread-128320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:25:50.232 [DEBUG] [Thread-128321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:05.261 [DEBUG] [Thread-128322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:11.616 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:11.617 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:17.825 [DEBUG] [Thread-128323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:20.291 [DEBUG] [Thread-128324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:35.319 [DEBUG] [Thread-128325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:26:50.351 [DEBUG] [Thread-128326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:05.376 [DEBUG] [Thread-128327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:11.756 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:11.757 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:17.874 [DEBUG] [Thread-128328 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:20.402 [DEBUG] [Thread-128329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:35.433 [DEBUG] [Thread-128330 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:37.914 [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-28T15:27:47.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:27:47.925 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:27:47.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-28T15:27:48.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 27, 21), 16.86, 32.38, 0.0, 17.15, 18.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:27:48.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:27:21
2025-09-28T15:27:48.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:27:48.789 [DEBUG] [Thread-128331] [transport.py] [_log()] starting thread (client mode): 0x2b91cac0
2025-09-28T15:27:48.789 [DEBUG] [Thread-128331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:27:48.809 [DEBUG] [Thread-128331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:27:48.809 [INFO] [Thread-128331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] client lang: <none>
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] server lang: <none>
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] kex follows: False
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] Compression: none
2025-09-28T15:27:48.811 [DEBUG] [Thread-128331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:27:48.823 [DEBUG] [Thread-128331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:27:48.823 [DEBUG] [Thread-128331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:27:48.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:27:48.824 [DEBUG] [Thread-128331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:27:48.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:27:48.826 [DEBUG] [Thread-128331] [transport.py] [_log()] userauth is OK
2025-09-28T15:27:48.826 [DEBUG] [Thread-128331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:27:48.827 [DEBUG] [Thread-128331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:27:48.827 [DEBUG] [Thread-128331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:27:48.827 [DEBUG] [Thread-128331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:27:48.850 [INFO] [Thread-128331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:27:48.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:27:49.501 [DEBUG] [Thread-128331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:27:49.502 [DEBUG] [Thread-128331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:27:49.502 [DEBUG] [Thread-128331] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:27:49.542 [DEBUG] [Thread-128331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:27:49.542 [DEBUG] [Thread-128331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:27:49.545 [DEBUG] [Thread-128331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:27:49.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:27:49.557 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:27:49.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:27:49.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:27:49.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:27:49.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:27:49.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:27:49.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:27:49.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:27:49.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.560499 -999.00  +18.90   7.48     37   +4.00 1 1 1 1 1   888    0 12.92 -64.90 ----- 7.5 7.5 209.1 15.1 23.9 -25.7 23.2 -25.4 24.6 -25.2 25.4 -25.8
2025-09-28T15:27:49.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:27:49.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:27:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.560499
2025-09-28T15:27:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:27:49.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:27:49.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:27:49.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:27:49.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:27:49.571 [DEBUG] [Thread-128331] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:27:49.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:27:21', tmtdew=16.86, humidity=32.38, cloud=0.0, wind=17.15, temperature=18.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:27:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:27:49.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-28T15:27:49.667 [DEBUG] [Thread-128334] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T15:27:49.667 [DEBUG] [Thread-128334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:27:49.682 [DEBUG] [Thread-128334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:27:49.682 [INFO] [Thread-128334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:27:49.689 [DEBUG] [Thread-128334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:27:49.689 [DEBUG] [Thread-128334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:27:49.689 [DEBUG] [Thread-128334] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:27:49.689 [DEBUG] [Thread-128334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:27:49.689 [DEBUG] [Thread-128334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] client lang: <none>
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] server lang: <none>
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] kex follows: False
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] Compression: none
2025-09-28T15:27:49.690 [DEBUG] [Thread-128334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:27:49.747 [DEBUG] [Thread-128334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:27:49.747 [DEBUG] [Thread-128334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:27:49.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:27:49.749 [DEBUG] [Thread-128334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:27:49.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:27:49.807 [DEBUG] [Thread-128334] [transport.py] [_log()] userauth is OK
2025-09-28T15:27:49.807 [DEBUG] [Thread-128334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:27:49.807 [DEBUG] [Thread-128334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:27:49.807 [DEBUG] [Thread-128334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:27:49.808 [DEBUG] [Thread-128334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:27:49.827 [INFO] [Thread-128334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:27:49.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-28T15:27:49.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:27:50.462 [DEBUG] [Thread-128336 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:27:50.792 [DEBUG] [Thread-128334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:27:50.792 [DEBUG] [Thread-128334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:27:50.840 [DEBUG] [Thread-128334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:27:50.840 [DEBUG] [Thread-128334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:27:50.849 [DEBUG] [Thread-128334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:27:50.858 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:27:50.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')
2025-09-28T15:27:50.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-28T15:27:50.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:27:50.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:27:50.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:27:50.884 [DEBUG] [Thread-128334] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:00.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:28:00.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:28:00.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-28T15:28:01.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 27, 53), 17.12, 31.75, 0.0, 21.39, 18.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:28:01.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:27:53
2025-09-28T15:28:01.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:28:01.752 [DEBUG] [Thread-128337] [transport.py] [_log()] starting thread (client mode): 0x30dddf00
2025-09-28T15:28:01.752 [DEBUG] [Thread-128337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:01.764 [DEBUG] [Thread-128337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:28:01.765 [INFO] [Thread-128337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] Compression: none
2025-09-28T15:28:01.766 [DEBUG] [Thread-128337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:01.774 [DEBUG] [Thread-128337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:01.774 [DEBUG] [Thread-128337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:01.775 [DEBUG] [Thread-128337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:28:01.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:28:01.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:01.776 [DEBUG] [Thread-128337] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:01.776 [DEBUG] [Thread-128337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:01.776 [DEBUG] [Thread-128337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:01.776 [DEBUG] [Thread-128337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:28:01.776 [DEBUG] [Thread-128337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:01.789 [INFO] [Thread-128337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:01.790 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:02.459 [DEBUG] [Thread-128337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:02.459 [DEBUG] [Thread-128337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:02.460 [DEBUG] [Thread-128337] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:28:02.500 [DEBUG] [Thread-128337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:02.501 [DEBUG] [Thread-128337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:02.503 [DEBUG] [Thread-128337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:02.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:02.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:28:02.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:28:02.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:28:02.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:02.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:28:02.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:02.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.560499 -999.00  +18.90   7.48     37   +4.00 1 1 1 1 1   888    0 12.92 -64.90 ----- 7.5 7.5 209.1 15.1 23.9 -25.7 23.2 -25.4 24.6 -25.2 25.4 -25.8
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.560499
2025-09-28T15:28:02.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:28:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:28:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:28:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:28:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:28:02.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:27:53', tmtdew=17.12, humidity=31.75, cloud=0.0, wind=21.39, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:27:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:28:02.528 [DEBUG] [Thread-128337] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:02.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-28T15:28:02.623 [DEBUG] [Thread-128340] [transport.py] [_log()] starting thread (client mode): 0x2b9ce2c0
2025-09-28T15:28:02.623 [DEBUG] [Thread-128340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:02.638 [DEBUG] [Thread-128340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:28:02.638 [INFO] [Thread-128340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:28:02.645 [DEBUG] [Thread-128340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:02.645 [DEBUG] [Thread-128340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:28:02.645 [DEBUG] [Thread-128340] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:02.645 [DEBUG] [Thread-128340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] Compression: none
2025-09-28T15:28:02.646 [DEBUG] [Thread-128340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:02.704 [DEBUG] [Thread-128340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:02.705 [DEBUG] [Thread-128340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:02.705 [DEBUG] [Thread-128340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:28:02.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:28:02.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:02.760 [DEBUG] [Thread-128340] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:02.760 [DEBUG] [Thread-128340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:02.760 [DEBUG] [Thread-128340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:02.760 [DEBUG] [Thread-128340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:28:02.760 [DEBUG] [Thread-128340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:02.782 [INFO] [Thread-128340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:02.782 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:28:02.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:03.755 [DEBUG] [Thread-128340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:03.755 [DEBUG] [Thread-128340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:03.803 [DEBUG] [Thread-128340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:03.803 [DEBUG] [Thread-128340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:03.812 [DEBUG] [Thread-128340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:03.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:03.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-28T15:28:03.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-28T15:28:03.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:03.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:03.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:03.847 [DEBUG] [Thread-128340] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:05.506 [DEBUG] [Thread-128342 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:11.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:11.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:13.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:28:13.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:28:13.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:28:14.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 27, 53), 17.12, 31.75, 0.0, 21.39, 18.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:28:14.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:27:53
2025-09-28T15:28:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:28:14.716 [DEBUG] [Thread-128343] [transport.py] [_log()] starting thread (client mode): 0x2e363a60
2025-09-28T15:28:14.717 [DEBUG] [Thread-128343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:14.730 [DEBUG] [Thread-128343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:28:14.730 [INFO] [Thread-128343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:28:14.731 [DEBUG] [Thread-128343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] Compression: none
2025-09-28T15:28:14.732 [DEBUG] [Thread-128343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:14.740 [DEBUG] [Thread-128343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:14.740 [DEBUG] [Thread-128343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:14.740 [DEBUG] [Thread-128343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:28:14.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:28:14.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:14.742 [DEBUG] [Thread-128343] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:14.742 [DEBUG] [Thread-128343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:14.742 [DEBUG] [Thread-128343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:14.742 [DEBUG] [Thread-128343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:28:14.742 [DEBUG] [Thread-128343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:14.761 [INFO] [Thread-128343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:14.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:15.423 [DEBUG] [Thread-128343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:15.423 [DEBUG] [Thread-128343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:15.423 [DEBUG] [Thread-128343] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:28:15.464 [DEBUG] [Thread-128343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:15.465 [DEBUG] [Thread-128343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:15.467 [DEBUG] [Thread-128343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:15.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:15.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:28:15.483 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:28:15.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:28:15.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:15.491 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:28:15.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:15.491 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:28:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.560846 -999.00  +19.00  11.64     36   +3.80 1 1 1 1 1   888    0 13.05 -65.16 ----- 11.6 11.6 254.4 24.8 24.0 -26.7 23.2 -26.4 24.3 -27.8 25.5 -27.1
2025-09-28T15:28:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:28:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:28:15.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.560846
2025-09-28T15:28:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:28:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:28:15.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:28:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:28:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:28:15.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:27:53', tmtdew=17.12, humidity=31.75, cloud=0.0, wind=21.39, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:27:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:28:15.494 [DEBUG] [Thread-128343] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:15.579 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:28:15.591 [DEBUG] [Thread-128346] [transport.py] [_log()] starting thread (client mode): 0x2e348130
2025-09-28T15:28:15.591 [DEBUG] [Thread-128346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:15.605 [DEBUG] [Thread-128346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:28:15.605 [INFO] [Thread-128346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:28:15.612 [DEBUG] [Thread-128346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:15.612 [DEBUG] [Thread-128346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] Compression: none
2025-09-28T15:28:15.613 [DEBUG] [Thread-128346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:15.672 [DEBUG] [Thread-128346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:15.672 [DEBUG] [Thread-128346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:15.673 [DEBUG] [Thread-128346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:28:15.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:28:15.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:15.728 [DEBUG] [Thread-128346] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:15.728 [DEBUG] [Thread-128346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:15.728 [DEBUG] [Thread-128346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:15.729 [DEBUG] [Thread-128346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:28:15.729 [DEBUG] [Thread-128346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:15.747 [INFO] [Thread-128346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:15.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-28T15:28:15.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:16.709 [DEBUG] [Thread-128346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:16.709 [DEBUG] [Thread-128346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:16.757 [DEBUG] [Thread-128346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:16.757 [DEBUG] [Thread-128346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:16.766 [DEBUG] [Thread-128346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:16.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:16.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-28T15:28:16.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-28T15:28:16.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:16.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:16.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:16.801 [DEBUG] [Thread-128346] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:17.918 [DEBUG] [Thread-128348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:20.549 [DEBUG] [Thread-128349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:26.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:28:26.803 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:28:26.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-28T15:28:27.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 27, 53), 17.12, 31.75, 0.0, 21.39, 18.5, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:28:27.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:27:53
2025-09-28T15:28:27.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:28:27.671 [DEBUG] [Thread-128350] [transport.py] [_log()] starting thread (client mode): 0x2e362530
2025-09-28T15:28:27.672 [DEBUG] [Thread-128350] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:27.692 [DEBUG] [Thread-128350] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:28:27.692 [INFO] [Thread-128350] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] Compression: none
2025-09-28T15:28:27.696 [DEBUG] [Thread-128350] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:27.715 [DEBUG] [Thread-128350] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:27.715 [DEBUG] [Thread-128350] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:27.716 [DEBUG] [Thread-128350] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:28:27.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:28:27.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:27.717 [DEBUG] [Thread-128350] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:27.718 [DEBUG] [Thread-128350] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:27.718 [DEBUG] [Thread-128350] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:27.718 [DEBUG] [Thread-128350] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:28:27.718 [DEBUG] [Thread-128350] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:27.735 [INFO] [Thread-128350] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:27.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:28.365 [DEBUG] [Thread-128350] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:28.366 [DEBUG] [Thread-128350] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:28.366 [DEBUG] [Thread-128350] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:28:28.406 [DEBUG] [Thread-128350] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:28.406 [DEBUG] [Thread-128350] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:28.409 [DEBUG] [Thread-128350] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:28.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:28.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:28:28.424 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:28:28.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:28:28.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:28.433 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:28:28.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:28.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:28.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:28:28.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.560846 -999.00  +19.00  11.64     36   +3.80 1 1 1 1 1   888    0 13.05 -65.16 ----- 11.6 11.6 254.4 24.8 24.0 -26.7 23.2 -26.4 24.3 -27.8 25.5 -27.1
2025-09-28T15:28:28.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:28:28.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:28:28.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.560846
2025-09-28T15:28:28.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:28:28.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:28:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:28:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:28:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:28:28.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:27:53', tmtdew=17.12, humidity=31.75, cloud=0.0, wind=21.39, temperature=18.5, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:27:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:28:28.435 [DEBUG] [Thread-128350] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:28.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-28T15:28:28.529 [DEBUG] [Thread-128353] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-28T15:28:28.529 [DEBUG] [Thread-128353] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:28.544 [DEBUG] [Thread-128353] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:28:28.544 [INFO] [Thread-128353] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:28:28.551 [DEBUG] [Thread-128353] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:28.551 [DEBUG] [Thread-128353] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] Compression: none
2025-09-28T15:28:28.552 [DEBUG] [Thread-128353] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:28.607 [DEBUG] [Thread-128353] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:28.608 [DEBUG] [Thread-128353] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:28.608 [DEBUG] [Thread-128353] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:28:28.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:28:28.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:28.663 [DEBUG] [Thread-128353] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:28.664 [DEBUG] [Thread-128353] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:28.664 [DEBUG] [Thread-128353] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:28.664 [DEBUG] [Thread-128353] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:28:28.664 [DEBUG] [Thread-128353] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:28.682 [INFO] [Thread-128353] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:28.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-28T15:28:28.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:29.679 [DEBUG] [Thread-128353] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:29.679 [DEBUG] [Thread-128353] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:29.727 [DEBUG] [Thread-128353] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:29.727 [DEBUG] [Thread-128353] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:29.736 [DEBUG] [Thread-128353] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:29.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:29.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-28T15:28:29.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-28T15:28:29.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:29.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:29.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:29.770 [DEBUG] [Thread-128353] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:35.583 [DEBUG] [Thread-128355 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:39.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:28:39.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:28:39.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-28T15:28:40.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 28, 24), 17.15, 31.7, 0.0, 25.83, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:28:40.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:28:24
2025-09-28T15:28:40.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:28:40.637 [DEBUG] [Thread-128356] [transport.py] [_log()] starting thread (client mode): 0x2b94ebc0
2025-09-28T15:28:40.637 [DEBUG] [Thread-128356] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:40.649 [DEBUG] [Thread-128356] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:28:40.649 [INFO] [Thread-128356] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] Compression: none
2025-09-28T15:28:40.651 [DEBUG] [Thread-128356] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:40.659 [DEBUG] [Thread-128356] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:40.659 [DEBUG] [Thread-128356] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:40.660 [DEBUG] [Thread-128356] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:28:40.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:28:40.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:40.661 [DEBUG] [Thread-128356] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:40.661 [DEBUG] [Thread-128356] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:40.661 [DEBUG] [Thread-128356] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:40.661 [DEBUG] [Thread-128356] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:28:40.661 [DEBUG] [Thread-128356] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:40.672 [INFO] [Thread-128356] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:40.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:41.296 [DEBUG] [Thread-128356] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:41.296 [DEBUG] [Thread-128356] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:41.297 [DEBUG] [Thread-128356] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:28:41.337 [DEBUG] [Thread-128356] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:41.337 [DEBUG] [Thread-128356] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:41.340 [DEBUG] [Thread-128356] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:41.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:41.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:28:41.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:28:41.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:28:41.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:41.359 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:28:41.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:41.359 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:41.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:28:41.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.561193 -999.00  +18.80  17.04     37   +3.80 1 1 1 1 1   888    0 13.10 -61.50 ----- 17.0 17.0 198.7 24.5 23.8 -30.1 23.0 -31.1 24.0 -29.7 25.4 -30.7
2025-09-28T15:28:41.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:28:41.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:28:41.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.561193
2025-09-28T15:28:41.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:28:41.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:28:41.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:28:41.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:28:41.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:28:41.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:28:24', tmtdew=17.15, humidity=31.7, cloud=0.0, wind=25.83, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:28:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:28:41.361 [DEBUG] [Thread-128356] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:41.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-28T15:28:41.458 [DEBUG] [Thread-128359] [transport.py] [_log()] starting thread (client mode): 0x2b9cf130
2025-09-28T15:28:41.459 [DEBUG] [Thread-128359] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:41.473 [DEBUG] [Thread-128359] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:28:41.473 [INFO] [Thread-128359] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:41.481 [DEBUG] [Thread-128359] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:41.482 [DEBUG] [Thread-128359] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:41.482 [DEBUG] [Thread-128359] [transport.py] [_log()] Compression: none
2025-09-28T15:28:41.482 [DEBUG] [Thread-128359] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:41.540 [DEBUG] [Thread-128359] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:41.540 [DEBUG] [Thread-128359] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:41.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:28:41.541 [DEBUG] [Thread-128359] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:28:41.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:41.596 [DEBUG] [Thread-128359] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:41.596 [DEBUG] [Thread-128359] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:41.596 [DEBUG] [Thread-128359] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:41.596 [DEBUG] [Thread-128359] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:28:41.596 [DEBUG] [Thread-128359] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:41.614 [INFO] [Thread-128359] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:41.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-28T15:28:41.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:42.564 [DEBUG] [Thread-128359] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:42.564 [DEBUG] [Thread-128359] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:42.612 [DEBUG] [Thread-128359] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:42.612 [DEBUG] [Thread-128359] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:42.621 [DEBUG] [Thread-128359] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:42.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:42.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-28T15:28: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') -> 00000000
2025-09-28T15:28:42.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:42.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:42.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:42.656 [DEBUG] [Thread-128359] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:50.615 [DEBUG] [Thread-128361 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:28:52.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:28:52.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:28:52.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-28T15:28:53.247 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 28, 24), 17.15, 31.7, 0.0, 25.83, 18.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:28:53.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:28:24
2025-09-28T15:28:53.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:28:53.518 [DEBUG] [Thread-128362] [transport.py] [_log()] starting thread (client mode): 0x2e3612a0
2025-09-28T15:28:53.518 [DEBUG] [Thread-128362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:53.538 [DEBUG] [Thread-128362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:28:53.539 [INFO] [Thread-128362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:53.542 [DEBUG] [Thread-128362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:53.543 [DEBUG] [Thread-128362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:53.543 [DEBUG] [Thread-128362] [transport.py] [_log()] Compression: none
2025-09-28T15:28:53.543 [DEBUG] [Thread-128362] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:53.559 [DEBUG] [Thread-128362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:53.559 [DEBUG] [Thread-128362] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:53.560 [DEBUG] [Thread-128362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:28:53.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:28:53.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:53.563 [DEBUG] [Thread-128362] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:53.563 [DEBUG] [Thread-128362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:53.563 [DEBUG] [Thread-128362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:53.563 [DEBUG] [Thread-128362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:28:53.563 [DEBUG] [Thread-128362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:53.588 [INFO] [Thread-128362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:53.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:54.340 [DEBUG] [Thread-128362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:54.340 [DEBUG] [Thread-128362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:54.340 [DEBUG] [Thread-128362] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:28:54.381 [DEBUG] [Thread-128362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:54.381 [DEBUG] [Thread-128362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:54.383 [DEBUG] [Thread-128362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:54.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:54.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:28:54.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:28:54.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:28:54.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:54.398 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:28:54.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:54.398 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:54.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.561193 -999.00  +18.80  17.04     37   +3.80 1 1 1 1 1   888    0 13.10 -61.50 ----- 17.0 17.0 198.7 24.5 23.8 -30.1 23.0 -31.1 24.0 -29.7 25.4 -30.7
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.561193
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:28:54.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:28:24', tmtdew=17.15, humidity=31.7, cloud=0.0, wind=25.83, temperature=18.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:28:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:28:54.400 [DEBUG] [Thread-128362] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:28:54.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-28T15:28:54.483 [DEBUG] [Thread-128365] [transport.py] [_log()] starting thread (client mode): 0x2e38f880
2025-09-28T15:28:54.483 [DEBUG] [Thread-128365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:28:54.498 [DEBUG] [Thread-128365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:28:54.498 [INFO] [Thread-128365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] client lang: <none>
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] server lang: <none>
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] kex follows: False
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:28:54.505 [DEBUG] [Thread-128365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:28:54.506 [DEBUG] [Thread-128365] [transport.py] [_log()] Compression: none
2025-09-28T15:28:54.506 [DEBUG] [Thread-128365] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:28:54.563 [DEBUG] [Thread-128365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:28:54.563 [DEBUG] [Thread-128365] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:28:54.563 [DEBUG] [Thread-128365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:28:54.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:28:54.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:28:54.620 [DEBUG] [Thread-128365] [transport.py] [_log()] userauth is OK
2025-09-28T15:28:54.620 [DEBUG] [Thread-128365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:28:54.620 [DEBUG] [Thread-128365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:28:54.620 [DEBUG] [Thread-128365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:28:54.620 [DEBUG] [Thread-128365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:28:54.634 [INFO] [Thread-128365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:28:54.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-28T15:28:54.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:28:55.559 [DEBUG] [Thread-128365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:28:55.560 [DEBUG] [Thread-128365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:28:55.608 [DEBUG] [Thread-128365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:28:55.608 [DEBUG] [Thread-128365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:28:55.616 [DEBUG] [Thread-128365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:28:55.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:28:55.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-28T15:28:55.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-28T15:28:55.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:28:55.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:28:55.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:28:55.648 [DEBUG] [Thread-128365] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:05.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:29:05.651 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:29:05.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-28T15:29:05.660 [DEBUG] [Thread-128367 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:06.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 28, 56), 17.0, 32.2, 0.0, 20.75, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:29:06.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:28:56
2025-09-28T15:29:06.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:29:06.527 [DEBUG] [Thread-128368] [transport.py] [_log()] starting thread (client mode): 0x2b94d3c0
2025-09-28T15:29:06.527 [DEBUG] [Thread-128368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:06.548 [DEBUG] [Thread-128368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:29:06.548 [INFO] [Thread-128368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:29:06.551 [DEBUG] [Thread-128368] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:06.551 [DEBUG] [Thread-128368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:29:06.551 [DEBUG] [Thread-128368] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] Compression: none
2025-09-28T15:29:06.552 [DEBUG] [Thread-128368] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:06.568 [DEBUG] [Thread-128368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:06.568 [DEBUG] [Thread-128368] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:06.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:29:06.569 [DEBUG] [Thread-128368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:29:06.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:06.571 [DEBUG] [Thread-128368] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:06.572 [DEBUG] [Thread-128368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:06.572 [DEBUG] [Thread-128368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:06.572 [DEBUG] [Thread-128368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:29:06.572 [DEBUG] [Thread-128368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:06.594 [INFO] [Thread-128368] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:06.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:07.344 [DEBUG] [Thread-128368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:07.345 [DEBUG] [Thread-128368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:07.345 [DEBUG] [Thread-128368] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:29:07.385 [DEBUG] [Thread-128368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:07.385 [DEBUG] [Thread-128368] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:07.388 [DEBUG] [Thread-128368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:07.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:07.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:29:07.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:29:07.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:29:07.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:07.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:29:07.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:07.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:29:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.561193 -999.00  +18.80  17.04     37   +3.80 1 1 1 1 1   888    0 13.10 -61.50 ----- 17.0 17.0 198.7 24.5 23.8 -30.1 23.0 -31.1 24.0 -29.7 25.4 -30.7
2025-09-28T15:29:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:29:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:29:07.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.561193
2025-09-28T15:29:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:29:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:29:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:29:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:29:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:29:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:28:56', tmtdew=17.0, humidity=32.2, cloud=0.0, wind=20.75, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:28:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:29:07.413 [DEBUG] [Thread-128368] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:07.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-28T15:29:07.512 [DEBUG] [Thread-128371] [transport.py] [_log()] starting thread (client mode): 0x2b94dff0
2025-09-28T15:29:07.512 [DEBUG] [Thread-128371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:07.527 [DEBUG] [Thread-128371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:29:07.527 [INFO] [Thread-128371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:07.535 [DEBUG] [Thread-128371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:07.536 [DEBUG] [Thread-128371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:07.536 [DEBUG] [Thread-128371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:07.536 [DEBUG] [Thread-128371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:07.536 [DEBUG] [Thread-128371] [transport.py] [_log()] Compression: none
2025-09-28T15:29:07.536 [DEBUG] [Thread-128371] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:07.597 [DEBUG] [Thread-128371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:07.597 [DEBUG] [Thread-128371] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:07.598 [DEBUG] [Thread-128371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:29:07.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:29:07.599 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:07.656 [DEBUG] [Thread-128371] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:07.656 [DEBUG] [Thread-128371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:07.656 [DEBUG] [Thread-128371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:07.656 [DEBUG] [Thread-128371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:29:07.656 [DEBUG] [Thread-128371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:07.676 [INFO] [Thread-128371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:07.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-28T15:29:07.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:08.619 [DEBUG] [Thread-128371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:08.619 [DEBUG] [Thread-128371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:08.671 [DEBUG] [Thread-128371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:08.671 [DEBUG] [Thread-128371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:08.680 [DEBUG] [Thread-128371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:08.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:08.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-28T15:29:08.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T15:29:08.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:08.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:08.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:08.715 [DEBUG] [Thread-128371] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:12.050 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:12.051 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:17.961 [DEBUG] [Thread-128373 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:18.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:29:18.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:29:18.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-28T15:29:19.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 28, 56), 17.0, 32.2, 0.0, 20.75, 18.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:29:19.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:28:56
2025-09-28T15:29:19.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:29:19.567 [DEBUG] [Thread-128374] [transport.py] [_log()] starting thread (client mode): 0x2e363460
2025-09-28T15:29:19.567 [DEBUG] [Thread-128374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:19.590 [DEBUG] [Thread-128374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:29:19.590 [INFO] [Thread-128374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:19.593 [DEBUG] [Thread-128374] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] Compression: none
2025-09-28T15:29:19.594 [DEBUG] [Thread-128374] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:19.609 [DEBUG] [Thread-128374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:19.609 [DEBUG] [Thread-128374] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:19.609 [DEBUG] [Thread-128374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:29:19.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:29:19.610 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:19.611 [DEBUG] [Thread-128374] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:19.611 [DEBUG] [Thread-128374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:19.611 [DEBUG] [Thread-128374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:19.611 [DEBUG] [Thread-128374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:29:19.611 [DEBUG] [Thread-128374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:19.621 [INFO] [Thread-128374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:19.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:20.242 [DEBUG] [Thread-128374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:20.242 [DEBUG] [Thread-128374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:20.242 [DEBUG] [Thread-128374] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:29:20.283 [DEBUG] [Thread-128374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:20.283 [DEBUG] [Thread-128374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:20.285 [DEBUG] [Thread-128374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:20.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:20.298 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:29:20.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:29:20.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:29:20.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:20.307 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:29:20.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:20.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:20.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:29:20.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.561888 -999.00  +18.30  10.73     38   +3.70 1 1 1 1 1   888    0 13.02 -62.99 ----- 10.7 10.7 196.7 23.8 23.6 -27.1 22.9 -27.0 24.2 -25.0 25.1 -26.4
2025-09-28T15:29:20.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:29:20.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:29:20.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.561888
2025-09-28T15:29:20.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:29:20.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:29:20.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:29:20.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:29:20.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:29:20.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:28:56', tmtdew=17.0, humidity=32.2, cloud=0.0, wind=20.75, temperature=18.38, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:29:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:29:20.310 [DEBUG] [Thread-128374] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:20.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-28T15:29:20.405 [DEBUG] [Thread-128377] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-28T15:29:20.405 [DEBUG] [Thread-128377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:20.419 [DEBUG] [Thread-128377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:29:20.419 [INFO] [Thread-128377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:20.427 [DEBUG] [Thread-128377] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] Compression: none
2025-09-28T15:29:20.428 [DEBUG] [Thread-128377] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:20.484 [DEBUG] [Thread-128377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:20.484 [DEBUG] [Thread-128377] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:20.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:29:20.485 [DEBUG] [Thread-128377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:29:20.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:20.540 [DEBUG] [Thread-128377] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:20.540 [DEBUG] [Thread-128377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:20.540 [DEBUG] [Thread-128377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:20.541 [DEBUG] [Thread-128377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:29:20.541 [DEBUG] [Thread-128377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:20.559 [INFO] [Thread-128377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:20.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-28T15:29:20.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:20.691 [DEBUG] [Thread-128379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:21.509 [DEBUG] [Thread-128377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:21.509 [DEBUG] [Thread-128377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:21.557 [DEBUG] [Thread-128377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:21.557 [DEBUG] [Thread-128377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:21.566 [DEBUG] [Thread-128377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:21.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:21.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-28T15:29:21.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-28T15:29:21.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:21.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:21.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:21.601 [DEBUG] [Thread-128377] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:31.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:29:31.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:29:31.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-28T15:29:32.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 29, 28), 16.72, 32.78, 0.0, 16.82, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:29:32.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:29:28
2025-09-28T15:29:32.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:29:32.516 [DEBUG] [Thread-128380] [transport.py] [_log()] starting thread (client mode): 0x2e34ad10
2025-09-28T15:29:32.516 [DEBUG] [Thread-128380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:32.536 [DEBUG] [Thread-128380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:29:32.537 [INFO] [Thread-128380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] Compression: none
2025-09-28T15:29:32.540 [DEBUG] [Thread-128380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:32.561 [DEBUG] [Thread-128380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:32.561 [DEBUG] [Thread-128380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:32.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:29:32.562 [DEBUG] [Thread-128380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:29:32.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:32.563 [DEBUG] [Thread-128380] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:32.563 [DEBUG] [Thread-128380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:32.563 [DEBUG] [Thread-128380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:32.563 [DEBUG] [Thread-128380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:29:32.563 [DEBUG] [Thread-128380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:32.578 [INFO] [Thread-128380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:32.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:33.308 [DEBUG] [Thread-128380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:33.308 [DEBUG] [Thread-128380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:33.308 [DEBUG] [Thread-128380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:29:33.349 [DEBUG] [Thread-128380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:33.349 [DEBUG] [Thread-128380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:33.350 [DEBUG] [Thread-128380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:33.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:33.359 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:29:33.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:29:33.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:29:33.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:33.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:29:33.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.561888 -999.00  +18.30  10.73     38   +3.70 1 1 1 1 1   888    0 13.02 -62.99 ----- 10.7 10.7 196.7 23.8 23.6 -27.1 22.9 -27.0 24.2 -25.0 25.1 -26.4
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.561888
2025-09-28T15:29:33.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:29:33.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:29:33.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:29:33.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:29:33.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:29:33.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:29:28', tmtdew=16.72, humidity=32.78, cloud=0.0, wind=16.82, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:29:07.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:29:33.365 [DEBUG] [Thread-128380] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:33.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-28T15:29:33.449 [DEBUG] [Thread-128383] [transport.py] [_log()] starting thread (client mode): 0x2e3de440
2025-09-28T15:29:33.449 [DEBUG] [Thread-128383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:33.464 [DEBUG] [Thread-128383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:29:33.464 [INFO] [Thread-128383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:33.471 [DEBUG] [Thread-128383] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] Compression: none
2025-09-28T15:29:33.472 [DEBUG] [Thread-128383] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:33.526 [DEBUG] [Thread-128383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:33.527 [DEBUG] [Thread-128383] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:33.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:29:33.527 [DEBUG] [Thread-128383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:29:33.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:33.584 [DEBUG] [Thread-128383] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:33.584 [DEBUG] [Thread-128383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:33.584 [DEBUG] [Thread-128383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:33.584 [DEBUG] [Thread-128383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:29:33.584 [DEBUG] [Thread-128383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:33.598 [INFO] [Thread-128383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:33.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-28T15:29:33.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:34.575 [DEBUG] [Thread-128383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:34.576 [DEBUG] [Thread-128383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:34.624 [DEBUG] [Thread-128383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:34.624 [DEBUG] [Thread-128383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:34.632 [DEBUG] [Thread-128383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:34.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:34.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-28T15:29:34.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-28T15:29:34.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:34.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:34.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:34.664 [DEBUG] [Thread-128383] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:35.747 [DEBUG] [Thread-128385 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:44.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:29:44.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:29:44.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-28T15:29:45.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 29, 28), 16.72, 32.78, 0.0, 16.82, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:29:45.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:29:28
2025-09-28T15:29:45.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:29:45.501 [DEBUG] [Thread-128386] [transport.py] [_log()] starting thread (client mode): 0x2e38cf40
2025-09-28T15:29:45.501 [DEBUG] [Thread-128386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:45.521 [DEBUG] [Thread-128386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:29:45.521 [INFO] [Thread-128386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:29:45.524 [DEBUG] [Thread-128386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:45.524 [DEBUG] [Thread-128386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:45.525 [DEBUG] [Thread-128386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:45.526 [DEBUG] [Thread-128386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:45.526 [DEBUG] [Thread-128386] [transport.py] [_log()] Compression: none
2025-09-28T15:29:45.526 [DEBUG] [Thread-128386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:45.545 [DEBUG] [Thread-128386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:45.546 [DEBUG] [Thread-128386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:45.546 [DEBUG] [Thread-128386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:29:45.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:29:45.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:45.548 [DEBUG] [Thread-128386] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:45.548 [DEBUG] [Thread-128386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:45.549 [DEBUG] [Thread-128386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:45.549 [DEBUG] [Thread-128386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:29:45.549 [DEBUG] [Thread-128386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:45.569 [INFO] [Thread-128386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:45.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:46.154 [DEBUG] [Thread-128386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:46.155 [DEBUG] [Thread-128386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:46.155 [DEBUG] [Thread-128386] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:29:46.195 [DEBUG] [Thread-128386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:46.195 [DEBUG] [Thread-128386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:46.198 [DEBUG] [Thread-128386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:46.209 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:46.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:29:46.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:29:46.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:29:46.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:46.219 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:29:46.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:46.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:46.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:29:46.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562235 -999.00  +18.30  19.04     38   +3.80 1 1 1 1 1   888    0 12.93 -66.78 ----- 19.0 19.0 201.4 23.5 23.7 -26.3 22.9 -29.1 24.2 -26.2 25.3 -26.0
2025-09-28T15:29:46.220 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:29:46.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:29:46.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562235
2025-09-28T15:29:46.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:29:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:29:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:29:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:29:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:29:46.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:29:28', tmtdew=16.72, humidity=32.78, cloud=0.0, wind=16.82, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:29:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:29:46.222 [DEBUG] [Thread-128386] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:46.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-28T15:29:46.320 [DEBUG] [Thread-128389] [transport.py] [_log()] starting thread (client mode): 0x2e348a00
2025-09-28T15:29:46.320 [DEBUG] [Thread-128389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:46.335 [DEBUG] [Thread-128389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:29:46.335 [INFO] [Thread-128389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:29:46.343 [DEBUG] [Thread-128389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:46.343 [DEBUG] [Thread-128389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:29:46.343 [DEBUG] [Thread-128389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:46.343 [DEBUG] [Thread-128389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:46.343 [DEBUG] [Thread-128389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:46.344 [DEBUG] [Thread-128389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:46.345 [DEBUG] [Thread-128389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:46.345 [DEBUG] [Thread-128389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:46.345 [DEBUG] [Thread-128389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:46.345 [DEBUG] [Thread-128389] [transport.py] [_log()] Compression: none
2025-09-28T15:29:46.345 [DEBUG] [Thread-128389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:46.405 [DEBUG] [Thread-128389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:46.405 [DEBUG] [Thread-128389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:46.406 [DEBUG] [Thread-128389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:29:46.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:29:46.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:46.460 [DEBUG] [Thread-128389] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:46.460 [DEBUG] [Thread-128389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:46.460 [DEBUG] [Thread-128389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:46.460 [DEBUG] [Thread-128389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:29:46.461 [DEBUG] [Thread-128389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:46.481 [INFO] [Thread-128389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:46.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-28T15:29:46.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:47.445 [DEBUG] [Thread-128389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:47.445 [DEBUG] [Thread-128389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:47.493 [DEBUG] [Thread-128389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:47.493 [DEBUG] [Thread-128389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:47.502 [DEBUG] [Thread-128389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:47.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:47.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-28T15:29:47.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-28T15:29:47.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:47.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:47.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:47.537 [DEBUG] [Thread-128389] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:50.783 [DEBUG] [Thread-128391 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:29:57.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:29:57.540 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:29:57.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-28T15:29:58.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 29, 28), 16.72, 32.78, 0.0, 16.82, 18.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:29:58.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:29:28
2025-09-28T15:29:58.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:29:58.374 [DEBUG] [Thread-128392] [transport.py] [_log()] starting thread (client mode): 0x2e38d8a0
2025-09-28T15:29:58.374 [DEBUG] [Thread-128392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:58.394 [DEBUG] [Thread-128392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:29:58.394 [INFO] [Thread-128392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] Compression: none
2025-09-28T15:29:58.397 [DEBUG] [Thread-128392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:58.415 [DEBUG] [Thread-128392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:58.416 [DEBUG] [Thread-128392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:58.416 [DEBUG] [Thread-128392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:29:58.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:29:58.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:58.418 [DEBUG] [Thread-128392] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:58.418 [DEBUG] [Thread-128392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:58.418 [DEBUG] [Thread-128392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:58.418 [DEBUG] [Thread-128392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:29:58.418 [DEBUG] [Thread-128392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:58.436 [INFO] [Thread-128392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:58.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:29:59.213 [DEBUG] [Thread-128392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:29:59.213 [DEBUG] [Thread-128392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:29:59.213 [DEBUG] [Thread-128392] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:29:59.254 [DEBUG] [Thread-128392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:29:59.254 [DEBUG] [Thread-128392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:29:59.257 [DEBUG] [Thread-128392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:29:59.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:29:59.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:29:59.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:29:59.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:29:59.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:29:59.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:29:59.275 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:29:59.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562235 -999.00  +18.30  19.04     38   +3.80 1 1 1 1 1   888    0 12.93 -66.78 ----- 19.0 19.0 201.4 23.5 23.7 -26.3 22.9 -29.1 24.2 -26.2 25.3 -26.0
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562235
2025-09-28T15:29:59.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:29:59.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:29:59.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:29:59.277 [DEBUG] [Thread-128392] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:29:59.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:29:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:29:59.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:29:28', tmtdew=16.72, humidity=32.78, cloud=0.0, wind=16.82, temperature=18.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:29:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:29:59.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-28T15:29:59.373 [DEBUG] [Thread-128395] [transport.py] [_log()] starting thread (client mode): 0x287076a0
2025-09-28T15:29:59.373 [DEBUG] [Thread-128395] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:29:59.388 [DEBUG] [Thread-128395] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:29:59.388 [INFO] [Thread-128395] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:29:59.396 [DEBUG] [Thread-128395] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] client lang: <none>
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] server lang: <none>
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] kex follows: False
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] Compression: none
2025-09-28T15:29:59.397 [DEBUG] [Thread-128395] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:29:59.452 [DEBUG] [Thread-128395] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:29:59.452 [DEBUG] [Thread-128395] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:29:59.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:29:59.453 [DEBUG] [Thread-128395] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:29:59.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:29:59.508 [DEBUG] [Thread-128395] [transport.py] [_log()] userauth is OK
2025-09-28T15:29:59.508 [DEBUG] [Thread-128395] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:29:59.509 [DEBUG] [Thread-128395] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:29:59.509 [DEBUG] [Thread-128395] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:29:59.509 [DEBUG] [Thread-128395] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:29:59.527 [INFO] [Thread-128395] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:29:59.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-28T15:29:59.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:00.540 [DEBUG] [Thread-128395] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:00.540 [DEBUG] [Thread-128395] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:00.588 [DEBUG] [Thread-128395] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:00.588 [DEBUG] [Thread-128395] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:00.597 [DEBUG] [Thread-128395] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:00.606 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:00.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-28T15:30:00.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-28T15:30:00.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:00.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:00.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:00.636 [DEBUG] [Thread-128395] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:05.827 [DEBUG] [Thread-128397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:10.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:30:10.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:30:10.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-28T15:30:11.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 30), 16.75, 32.41, 0.0, 17.61, 18.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:30:11.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:30:00
2025-09-28T15:30:11.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:30:11.536 [DEBUG] [Thread-128398] [transport.py] [_log()] starting thread (client mode): 0x2e34a080
2025-09-28T15:30:11.537 [DEBUG] [Thread-128398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:11.556 [DEBUG] [Thread-128398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:30:11.556 [INFO] [Thread-128398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:30:11.559 [DEBUG] [Thread-128398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] Compression: none
2025-09-28T15:30:11.560 [DEBUG] [Thread-128398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:11.577 [DEBUG] [Thread-128398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:11.577 [DEBUG] [Thread-128398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:11.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:30:11.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:30:11.578 [DEBUG] [Thread-128398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:11.587 [INFO] [Thread-128398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:11.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:12.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:12.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:18.011 [DEBUG] [Thread-128400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:19.694 [DEBUG] [Thread-128398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:19.695 [DEBUG] [Thread-128398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:19.695 [DEBUG] [Thread-128398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:30:19.735 [DEBUG] [Thread-128398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:19.735 [DEBUG] [Thread-128398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:19.739 [DEBUG] [Thread-128398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:19.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:19.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:30:19.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:30:19.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:30:19.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:19.865 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:30:19.865 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562235 -999.00  +18.30  19.04     38   +3.80 1 1 1 1 1   888    0 12.93 -66.78 ----- 19.0 19.0 201.4 23.5 23.7 -26.3 22.9 -29.1 24.2 -26.2 25.3 -26.0
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:30:19.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562235
2025-09-28T15:30:19.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:30:19.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:30:19.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:30:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:30:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:30:19.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:30:00', tmtdew=16.75, humidity=32.41, cloud=0.0, wind=17.61, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:29:37.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:30:19.868 [DEBUG] [Thread-128398] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:19.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:30:19.966 [DEBUG] [Thread-128402] [transport.py] [_log()] starting thread (client mode): 0x2b9bafe0
2025-09-28T15:30:19.966 [DEBUG] [Thread-128402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:19.981 [DEBUG] [Thread-128402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:30:19.981 [INFO] [Thread-128402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:19.989 [DEBUG] [Thread-128402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:19.990 [DEBUG] [Thread-128402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:19.990 [DEBUG] [Thread-128402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:19.990 [DEBUG] [Thread-128402] [transport.py] [_log()] Compression: none
2025-09-28T15:30:19.990 [DEBUG] [Thread-128402] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:20.048 [DEBUG] [Thread-128402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:20.048 [DEBUG] [Thread-128402] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:20.049 [DEBUG] [Thread-128402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:30:20.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:30:20.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:20.105 [DEBUG] [Thread-128402] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:20.105 [DEBUG] [Thread-128402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:20.105 [DEBUG] [Thread-128402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:20.106 [DEBUG] [Thread-128402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:30:20.106 [DEBUG] [Thread-128402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:20.124 [INFO] [Thread-128402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:20.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-28T15:30:20.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:20.862 [DEBUG] [Thread-128404 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:21.118 [DEBUG] [Thread-128402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:21.118 [DEBUG] [Thread-128402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:21.166 [DEBUG] [Thread-128402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:21.166 [DEBUG] [Thread-128402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:21.175 [DEBUG] [Thread-128402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:21.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:21.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-28T15:30:21.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-28T15:30:21.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:21.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:21.202 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:21.210 [DEBUG] [Thread-128402] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:31.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:30:31.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:30:31.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:30:31.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 30), 16.75, 32.41, 0.0, 17.61, 18.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:30:31.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:30:00
2025-09-28T15:30:31.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:30:32.073 [DEBUG] [Thread-128405] [transport.py] [_log()] starting thread (client mode): 0x2b9b9600
2025-09-28T15:30:32.074 [DEBUG] [Thread-128405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:32.101 [DEBUG] [Thread-128405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:30:32.101 [INFO] [Thread-128405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:32.105 [DEBUG] [Thread-128405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] Compression: none
2025-09-28T15:30:32.106 [DEBUG] [Thread-128405] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:32.123 [DEBUG] [Thread-128405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:32.123 [DEBUG] [Thread-128405] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:32.124 [DEBUG] [Thread-128405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:30:32.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:30:32.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:32.126 [DEBUG] [Thread-128405] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:32.126 [DEBUG] [Thread-128405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:32.126 [DEBUG] [Thread-128405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:32.126 [DEBUG] [Thread-128405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:30:32.126 [DEBUG] [Thread-128405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:32.146 [INFO] [Thread-128405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:32.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:32.727 [DEBUG] [Thread-128405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:32.727 [DEBUG] [Thread-128405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:32.727 [DEBUG] [Thread-128405] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:30:32.768 [DEBUG] [Thread-128405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:32.769 [DEBUG] [Thread-128405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:32.772 [DEBUG] [Thread-128405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:32.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:32.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:30:32.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:30:32.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:30:32.785 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:32.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:30:32.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562582 -999.00  +18.20  13.03     38   +3.90 1 1 1 1 1   888    0 12.74 -67.62 ----- 13.0 13.0 221.0 28.7 23.6 -27.7 22.8 -26.9 24.1 -26.4 25.3 -28.5
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:30:32.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562582
2025-09-28T15:30:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:30:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:30:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:30:32.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:30:32.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:30:32.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:30:00', tmtdew=16.75, humidity=32.41, cloud=0.0, wind=17.61, temperature=18.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:30:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:30:32.790 [DEBUG] [Thread-128405] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:32.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-28T15:30:32.887 [DEBUG] [Thread-128408] [transport.py] [_log()] starting thread (client mode): 0x2b96e530
2025-09-28T15:30:32.887 [DEBUG] [Thread-128408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:32.901 [DEBUG] [Thread-128408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:30:32.901 [INFO] [Thread-128408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] Compression: none
2025-09-28T15:30:32.909 [DEBUG] [Thread-128408] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:32.966 [DEBUG] [Thread-128408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:32.966 [DEBUG] [Thread-128408] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:32.967 [DEBUG] [Thread-128408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:30:32.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:30:32.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:33.024 [DEBUG] [Thread-128408] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:33.024 [DEBUG] [Thread-128408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:33.024 [DEBUG] [Thread-128408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:33.024 [DEBUG] [Thread-128408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:30:33.024 [DEBUG] [Thread-128408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:33.041 [INFO] [Thread-128408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:33.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-28T15:30:33.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:33.984 [DEBUG] [Thread-128408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:33.984 [DEBUG] [Thread-128408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:34.032 [DEBUG] [Thread-128408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:34.032 [DEBUG] [Thread-128408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:34.040 [DEBUG] [Thread-128408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:34.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:34.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')
2025-09-28T15:30:34.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-28T15:30:34.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:34.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:34.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:34.075 [DEBUG] [Thread-128408] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:35.905 [DEBUG] [Thread-128410 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:44.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:30:44.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:30:44.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-28T15:30:44.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 30, 32), 16.84, 32.23, 0.0, 13.96, 18.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:30:44.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:30:32
2025-09-28T15:30:44.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:30:44.969 [DEBUG] [Thread-128411] [transport.py] [_log()] starting thread (client mode): 0x2b96fee0
2025-09-28T15:30:44.969 [DEBUG] [Thread-128411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:44.988 [DEBUG] [Thread-128411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:30:44.988 [INFO] [Thread-128411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:44.992 [DEBUG] [Thread-128411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] Compression: none
2025-09-28T15:30:44.993 [DEBUG] [Thread-128411] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:45.011 [DEBUG] [Thread-128411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:45.011 [DEBUG] [Thread-128411] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:45.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:30:45.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:45.012 [DEBUG] [Thread-128411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:30:45.015 [DEBUG] [Thread-128411] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:45.015 [DEBUG] [Thread-128411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:45.015 [DEBUG] [Thread-128411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:45.015 [DEBUG] [Thread-128411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:30:45.015 [DEBUG] [Thread-128411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:45.031 [INFO] [Thread-128411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:45.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:45.822 [DEBUG] [Thread-128411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:45.822 [DEBUG] [Thread-128411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:45.823 [DEBUG] [Thread-128411] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:30:45.864 [DEBUG] [Thread-128411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:45.864 [DEBUG] [Thread-128411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:45.866 [DEBUG] [Thread-128411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:45.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:45.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:30:45.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:30:45.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:30:45.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:45.885 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:30:45.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562582 -999.00  +18.20  13.03     38   +3.90 1 1 1 1 1   888    0 12.74 -67.62 ----- 13.0 13.0 221.0 28.7 23.6 -27.7 22.8 -26.9 24.1 -26.4 25.3 -28.5
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562582
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:30:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:30:32', tmtdew=16.84, humidity=32.23, cloud=0.0, wind=13.96, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:30:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:30:45.887 [DEBUG] [Thread-128411] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:45.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-28T15:30:45.971 [DEBUG] [Thread-128414] [transport.py] [_log()] starting thread (client mode): 0x2b9b9180
2025-09-28T15:30:45.971 [DEBUG] [Thread-128414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:45.986 [DEBUG] [Thread-128414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:30:45.986 [INFO] [Thread-128414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] Compression: none
2025-09-28T15:30:45.994 [DEBUG] [Thread-128414] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:46.050 [DEBUG] [Thread-128414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:46.051 [DEBUG] [Thread-128414] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:46.051 [DEBUG] [Thread-128414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:30:46.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:30:46.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:46.108 [DEBUG] [Thread-128414] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:46.108 [DEBUG] [Thread-128414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:46.108 [DEBUG] [Thread-128414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:46.108 [DEBUG] [Thread-128414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:30:46.108 [DEBUG] [Thread-128414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:46.122 [INFO] [Thread-128414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:46.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-28T15:30:46.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:47.124 [DEBUG] [Thread-128414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:47.124 [DEBUG] [Thread-128414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:47.172 [DEBUG] [Thread-128414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:47.172 [DEBUG] [Thread-128414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:47.180 [DEBUG] [Thread-128414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:47.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:47.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-28T15:30:47.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-28T15:30:47.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:47.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:47.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:47.211 [DEBUG] [Thread-128414] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:50.937 [DEBUG] [Thread-128416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:30:57.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:30:57.214 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:30:57.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:30:57.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 30, 32), 16.84, 32.23, 0.0, 13.96, 18.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:30:57.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:30:32
2025-09-28T15:30:57.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:30:58.053 [DEBUG] [Thread-128417] [transport.py] [_log()] starting thread (client mode): 0x2e38dd80
2025-09-28T15:30:58.054 [DEBUG] [Thread-128417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:58.075 [DEBUG] [Thread-128417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:30:58.075 [INFO] [Thread-128417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:58.078 [DEBUG] [Thread-128417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:58.079 [DEBUG] [Thread-128417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:58.079 [DEBUG] [Thread-128417] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:58.079 [DEBUG] [Thread-128417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:58.079 [DEBUG] [Thread-128417] [transport.py] [_log()] Compression: none
2025-09-28T15:30:58.079 [DEBUG] [Thread-128417] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:58.095 [DEBUG] [Thread-128417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:58.096 [DEBUG] [Thread-128417] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:58.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:30:58.097 [DEBUG] [Thread-128417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:30:58.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:58.099 [DEBUG] [Thread-128417] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:58.099 [DEBUG] [Thread-128417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:58.099 [DEBUG] [Thread-128417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:58.099 [DEBUG] [Thread-128417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:30:58.099 [DEBUG] [Thread-128417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:58.122 [INFO] [Thread-128417] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:58.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:30:58.746 [DEBUG] [Thread-128417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:30:58.746 [DEBUG] [Thread-128417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:30:58.747 [DEBUG] [Thread-128417] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:30:58.787 [DEBUG] [Thread-128417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:30:58.788 [DEBUG] [Thread-128417] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:30:58.791 [DEBUG] [Thread-128417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:30:58.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:30:58.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:30:58.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:30:58.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:30:58.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:30:58.816 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:30:58.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:30:58.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:30:58.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:30:58.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562929 -999.00  +18.20  10.54     38   +3.90 1 1 1 1 1   888    0 12.73 -66.25 ----- 10.5 10.5 218.5 17.7 23.5 -27.6 22.8 -27.2 24.2 -25.8 25.2 -27.9
2025-09-28T15:30:58.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:30:58.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:30:58.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562929
2025-09-28T15:30:58.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:30:58.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:30:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:30:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:30:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:30:58.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:30:32', tmtdew=16.84, humidity=32.23, cloud=0.0, wind=13.96, temperature=18.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:30:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:30:58.818 [DEBUG] [Thread-128417] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:30:58.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-28T15:30:58.914 [DEBUG] [Thread-128420] [transport.py] [_log()] starting thread (client mode): 0x2e3491e0
2025-09-28T15:30:58.914 [DEBUG] [Thread-128420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:30:58.936 [DEBUG] [Thread-128420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:30:58.936 [INFO] [Thread-128420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:30:58.944 [DEBUG] [Thread-128420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:30:58.945 [DEBUG] [Thread-128420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] client lang: <none>
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] server lang: <none>
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] kex follows: False
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:30:58.946 [DEBUG] [Thread-128420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:30:58.947 [DEBUG] [Thread-128420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:30:58.947 [DEBUG] [Thread-128420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:30:58.947 [DEBUG] [Thread-128420] [transport.py] [_log()] Compression: none
2025-09-28T15:30:58.947 [DEBUG] [Thread-128420] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:30:59.005 [DEBUG] [Thread-128420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:30:59.005 [DEBUG] [Thread-128420] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:30:59.006 [DEBUG] [Thread-128420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:30:59.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:30:59.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:30:59.066 [DEBUG] [Thread-128420] [transport.py] [_log()] userauth is OK
2025-09-28T15:30:59.066 [DEBUG] [Thread-128420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:30:59.066 [DEBUG] [Thread-128420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:30:59.066 [DEBUG] [Thread-128420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:30:59.067 [DEBUG] [Thread-128420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:30:59.087 [INFO] [Thread-128420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:30:59.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-28T15:30:59.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:00.043 [DEBUG] [Thread-128420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:00.043 [DEBUG] [Thread-128420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:00.090 [DEBUG] [Thread-128420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:00.090 [DEBUG] [Thread-128420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:00.100 [DEBUG] [Thread-128420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:00.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:00.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')
2025-09-28T15:31:00.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') -> 00000000
2025-09-28T15:31:00.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:00.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:00.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:00.136 [DEBUG] [Thread-128420] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:05.975 [DEBUG] [Thread-128422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:10.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:31:10.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:31: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-28T15:31:10.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 31, 5), 16.76, 32.43, 0.0, 21.75, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:31:10.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:31:05
2025-09-28T15:31:10.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:31:10.970 [DEBUG] [Thread-128423] [transport.py] [_log()] starting thread (client mode): 0x2e38f5b0
2025-09-28T15:31:10.970 [DEBUG] [Thread-128423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:31:10.991 [DEBUG] [Thread-128423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:31:10.991 [INFO] [Thread-128423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] client lang: <none>
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] server lang: <none>
2025-09-28T15:31:10.994 [DEBUG] [Thread-128423] [transport.py] [_log()] kex follows: False
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] Compression: none
2025-09-28T15:31:10.995 [DEBUG] [Thread-128423] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:31:11.012 [DEBUG] [Thread-128423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:31:11.012 [DEBUG] [Thread-128423] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:31:11.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:31:11.013 [DEBUG] [Thread-128423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:31:11.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:31:11.015 [DEBUG] [Thread-128423] [transport.py] [_log()] userauth is OK
2025-09-28T15:31:11.015 [DEBUG] [Thread-128423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:31:11.015 [DEBUG] [Thread-128423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:31:11.016 [DEBUG] [Thread-128423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:31:11.016 [DEBUG] [Thread-128423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:31:11.037 [INFO] [Thread-128423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:31:11.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:11.787 [DEBUG] [Thread-128423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:11.787 [DEBUG] [Thread-128423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:11.788 [DEBUG] [Thread-128423] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:31:11.828 [DEBUG] [Thread-128423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:11.828 [DEBUG] [Thread-128423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:11.831 [DEBUG] [Thread-128423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:11.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:11.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:31:11.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:31:11.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:31:11.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:11.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:31:11.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:11.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:11.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:31:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562929 -999.00  +18.20  10.54     38   +3.90 1 1 1 1 1   888    0 12.73 -66.25 ----- 10.5 10.5 218.5 17.7 23.5 -27.6 22.8 -27.2 24.2 -25.8 25.2 -27.9
2025-09-28T15:31:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:31:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:31:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562929
2025-09-28T15:31:11.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:31:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:31:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:31:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:31:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:31:11.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:31:05', tmtdew=16.76, humidity=32.43, cloud=0.0, wind=21.75, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:30:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:31:11.853 [DEBUG] [Thread-128423] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:11.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-28T15:31:11.950 [DEBUG] [Thread-128426] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-28T15:31:11.950 [DEBUG] [Thread-128426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:31:11.965 [DEBUG] [Thread-128426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:31:11.965 [INFO] [Thread-128426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:31:11.972 [DEBUG] [Thread-128426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] client lang: <none>
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] server lang: <none>
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] kex follows: False
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:31:11.973 [DEBUG] [Thread-128426] [transport.py] [_log()] Compression: none
2025-09-28T15:31:11.974 [DEBUG] [Thread-128426] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:31:12.033 [DEBUG] [Thread-128426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:31:12.033 [DEBUG] [Thread-128426] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:31:12.034 [DEBUG] [Thread-128426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:31:12.034 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:31:12.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:31:12.089 [DEBUG] [Thread-128426] [transport.py] [_log()] userauth is OK
2025-09-28T15:31:12.089 [DEBUG] [Thread-128426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:31:12.089 [DEBUG] [Thread-128426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:31:12.089 [DEBUG] [Thread-128426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:31:12.089 [DEBUG] [Thread-128426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:31:12.109 [INFO] [Thread-128426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:31:12.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-28T15:31:12.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:12.331 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:12.332 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:13.074 [DEBUG] [Thread-128426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:13.074 [DEBUG] [Thread-128426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:13.122 [DEBUG] [Thread-128426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:13.122 [DEBUG] [Thread-128426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:13.131 [DEBUG] [Thread-128426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:13.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:13.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-28T15:31:13.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-28T15:31:13.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:13.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:13.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:13.168 [DEBUG] [Thread-128426] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:18.062 [DEBUG] [Thread-128428 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:21.011 [DEBUG] [Thread-128429 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:23.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:31:23.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:31:23.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-28T15:31:23.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 31, 5), 16.76, 32.43, 0.0, 21.75, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:31:23.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:31:05
2025-09-28T15:31:23.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:31:24.031 [DEBUG] [Thread-128430] [transport.py] [_log()] starting thread (client mode): 0x2e34b760
2025-09-28T15:31:24.031 [DEBUG] [Thread-128430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:31:24.051 [DEBUG] [Thread-128430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:31:24.051 [INFO] [Thread-128430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:24.054 [DEBUG] [Thread-128430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] client lang: <none>
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] server lang: <none>
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] kex follows: False
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] Compression: none
2025-09-28T15:31:24.055 [DEBUG] [Thread-128430] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:31:24.070 [DEBUG] [Thread-128430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:31:24.070 [DEBUG] [Thread-128430] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:31:24.071 [DEBUG] [Thread-128430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:31:24.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:31:24.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:31:24.112 [DEBUG] [Thread-128430] [transport.py] [_log()] userauth is OK
2025-09-28T15:31:24.112 [DEBUG] [Thread-128430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:31:24.112 [DEBUG] [Thread-128430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:31:24.112 [DEBUG] [Thread-128430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:31:24.112 [DEBUG] [Thread-128430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:31:24.139 [INFO] [Thread-128430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:31:24.139 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:24.914 [DEBUG] [Thread-128430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:24.914 [DEBUG] [Thread-128430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:24.914 [DEBUG] [Thread-128430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:31:24.955 [DEBUG] [Thread-128430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:24.955 [DEBUG] [Thread-128430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:24.957 [DEBUG] [Thread-128430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:24.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:24.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:31:24.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:31:24.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:31:24.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:24.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:31:24.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.562929 -999.00  +18.20  10.54     38   +3.90 1 1 1 1 1   888    0 12.73 -66.25 ----- 10.5 10.5 218.5 17.7 23.5 -27.6 22.8 -27.2 24.2 -25.8 25.2 -27.9
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.562929
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:31:24.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:31:05', tmtdew=16.76, humidity=32.43, cloud=0.0, wind=21.75, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:30:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:31:24.974 [DEBUG] [Thread-128430] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:25.048 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:31:25.057 [DEBUG] [Thread-128433] [transport.py] [_log()] starting thread (client mode): 0x2e348cd0
2025-09-28T15:31:25.057 [DEBUG] [Thread-128433] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:31:25.072 [DEBUG] [Thread-128433] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:31:25.072 [INFO] [Thread-128433] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:31:25.079 [DEBUG] [Thread-128433] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] client lang: <none>
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] server lang: <none>
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] kex follows: False
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] Compression: none
2025-09-28T15:31:25.080 [DEBUG] [Thread-128433] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:31:25.134 [DEBUG] [Thread-128433] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:31:25.135 [DEBUG] [Thread-128433] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:31:25.135 [DEBUG] [Thread-128433] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:31:25.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:31:25.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:31:25.192 [DEBUG] [Thread-128433] [transport.py] [_log()] userauth is OK
2025-09-28T15:31:25.192 [DEBUG] [Thread-128433] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:31:25.192 [DEBUG] [Thread-128433] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:31:25.192 [DEBUG] [Thread-128433] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:31:25.192 [DEBUG] [Thread-128433] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:31:25.207 [INFO] [Thread-128433] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:31:25.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-28T15:31:25.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:26.169 [DEBUG] [Thread-128433] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:26.169 [DEBUG] [Thread-128433] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:26.217 [DEBUG] [Thread-128433] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:26.217 [DEBUG] [Thread-128433] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:26.225 [DEBUG] [Thread-128433] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:26.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:26.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-28T15:31:26.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-28T15:31:26.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:26.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:26.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:26.258 [DEBUG] [Thread-128433] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:36.050 [DEBUG] [Thread-128435 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:31:36.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:31:36.251 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:31:36.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-28T15:31:36.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 31, 5), 16.76, 32.43, 0.0, 21.75, 18.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:31:36.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:31:05
2025-09-28T15:31:36.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:31:37.092 [DEBUG] [Thread-128436] [transport.py] [_log()] starting thread (client mode): 0x2b91c310
2025-09-28T15:31:37.093 [DEBUG] [Thread-128436] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:31:37.113 [DEBUG] [Thread-128436] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:31:37.113 [INFO] [Thread-128436] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:31:37.116 [DEBUG] [Thread-128436] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:31:37.116 [DEBUG] [Thread-128436] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:31:37.116 [DEBUG] [Thread-128436] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] client lang: <none>
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] server lang: <none>
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] kex follows: False
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:31:37.117 [DEBUG] [Thread-128436] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:31:37.118 [DEBUG] [Thread-128436] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:31:37.118 [DEBUG] [Thread-128436] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:31:37.118 [DEBUG] [Thread-128436] [transport.py] [_log()] Compression: none
2025-09-28T15:31:37.118 [DEBUG] [Thread-128436] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:31:37.136 [DEBUG] [Thread-128436] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:31:37.137 [DEBUG] [Thread-128436] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:31:37.137 [DEBUG] [Thread-128436] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:31:37.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:31:37.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:31:37.139 [DEBUG] [Thread-128436] [transport.py] [_log()] userauth is OK
2025-09-28T15:31:37.140 [DEBUG] [Thread-128436] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:31:37.140 [DEBUG] [Thread-128436] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:31:37.140 [DEBUG] [Thread-128436] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:31:37.140 [DEBUG] [Thread-128436] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:31:37.163 [INFO] [Thread-128436] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:31:37.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:31:37.748 [DEBUG] [Thread-128436] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:31:37.748 [DEBUG] [Thread-128436] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:31:37.748 [DEBUG] [Thread-128436] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:31:37.789 [DEBUG] [Thread-128436] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:31:37.789 [DEBUG] [Thread-128436] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:31:37.791 [DEBUG] [Thread-128436] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:31:37.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:31:37.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:31:37.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:31:37.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:31:37.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:31:37.808 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:31:37.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.563277 -999.00  +18.30  10.10     38   +4.00 1 1 1 1 1   888    0 12.48 -73.10 ----- 10.1 10.1 205.0 17.5 23.6 -26.6 22.8 -26.4 24.3 -26.1 25.4 -26.6
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.563277
2025-09-28T15:31:37.808 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:31:37.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:31:37.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:31:37.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:31:37.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:31:37.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:31:05', tmtdew=16.76, humidity=32.43, cloud=0.0, wind=21.75, temperature=18.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:31:07.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:31:37.809 [DEBUG] [Thread-128436] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:31:37.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-28T15:31:51.080 [DEBUG] [Thread-128439 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:06.124 [DEBUG] [Thread-128440 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:12.473 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:12.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:18.117 [DEBUG] [Thread-128441 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:21.157 [DEBUG] [Thread-128442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:36.189 [DEBUG] [Thread-128443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:32:51.218 [DEBUG] [Thread-128444 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:06.251 [DEBUG] [Thread-128445 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:12.614 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:12.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:18.170 [DEBUG] [Thread-128446 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:21.280 [DEBUG] [Thread-128447 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:36.315 [DEBUG] [Thread-128448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:33:50.650 [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-28T15:33:51.346 [DEBUG] [Thread-128449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:00.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:34:00.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:34:00.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-28T15:34:01.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 33, 45), 16.19, 33.54, 0.0, 23.27, 17.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:34:01.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:33:45
2025-09-28T15:34:01.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:34:01.532 [DEBUG] [Thread-128450] [transport.py] [_log()] starting thread (client mode): 0x2b9ba4d0
2025-09-28T15:34:01.532 [DEBUG] [Thread-128450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:01.555 [DEBUG] [Thread-128450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:34:01.555 [INFO] [Thread-128450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:34:01.557 [DEBUG] [Thread-128450] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:01.557 [DEBUG] [Thread-128450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:34:01.557 [DEBUG] [Thread-128450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:01.557 [DEBUG] [Thread-128450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:01.558 [DEBUG] [Thread-128450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:01.559 [DEBUG] [Thread-128450] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:01.559 [DEBUG] [Thread-128450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:01.559 [DEBUG] [Thread-128450] [transport.py] [_log()] Compression: none
2025-09-28T15:34:01.559 [DEBUG] [Thread-128450] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:01.576 [DEBUG] [Thread-128450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:01.577 [DEBUG] [Thread-128450] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:01.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:34:01.578 [DEBUG] [Thread-128450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:34:01.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:01.579 [DEBUG] [Thread-128450] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:01.580 [DEBUG] [Thread-128450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:01.580 [DEBUG] [Thread-128450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:01.580 [DEBUG] [Thread-128450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:34:01.580 [DEBUG] [Thread-128450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:01.603 [INFO] [Thread-128450] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:01.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:02.328 [DEBUG] [Thread-128450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:02.328 [DEBUG] [Thread-128450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:02.328 [DEBUG] [Thread-128450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:34:02.368 [DEBUG] [Thread-128450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:02.369 [DEBUG] [Thread-128450] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:02.373 [DEBUG] [Thread-128450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:02.385 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:02.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:34:02.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:34:02.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:34:02.391 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:02.392 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:34:02.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:02.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:34:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565013 -999.00  +18.70   6.49     38   +4.10 1 1 1 1 1   888    0 12.08 -79.33 ----- 6.5 6.5 194.6 22.5 23.6 -27.1 22.9 -26.1 24.4 -25.4 25.4 -26.0
2025-09-28T15:34:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:34:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:34:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565013
2025-09-28T15:34:02.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:34:02.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:34:02.394 [DEBUG] [Thread-128450] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:02.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:34:02.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:34:02.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:34:02.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:33:45', tmtdew=16.19, humidity=33.54, cloud=0.0, wind=23.27, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:33:37.123', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:34:02.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-28T15:34:02.494 [DEBUG] [Thread-128453] [transport.py] [_log()] starting thread (client mode): 0x2b9bb940
2025-09-28T15:34:02.494 [DEBUG] [Thread-128453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:02.508 [DEBUG] [Thread-128453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:34:02.509 [INFO] [Thread-128453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:34:02.516 [DEBUG] [Thread-128453] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:02.516 [DEBUG] [Thread-128453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] Compression: none
2025-09-28T15:34:02.517 [DEBUG] [Thread-128453] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:02.572 [DEBUG] [Thread-128453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:02.573 [DEBUG] [Thread-128453] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:02.573 [DEBUG] [Thread-128453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:34:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:34:02.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:02.628 [DEBUG] [Thread-128453] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:02.629 [DEBUG] [Thread-128453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:02.629 [DEBUG] [Thread-128453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:02.629 [DEBUG] [Thread-128453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:34:02.629 [DEBUG] [Thread-128453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:02.647 [INFO] [Thread-128453] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:02.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-28T15:34:02.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:03.633 [DEBUG] [Thread-128453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:03.633 [DEBUG] [Thread-128453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:03.680 [DEBUG] [Thread-128453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:03.680 [DEBUG] [Thread-128453] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:03.690 [DEBUG] [Thread-128453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:03.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:03.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-28T15:34:03.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-28T15:34:03.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:03.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:03.718 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:03.726 [DEBUG] [Thread-128453] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:06.375 [DEBUG] [Thread-128455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:12.757 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:12.758 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:13.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:34:13.728 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:34:13.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:34:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 33, 45), 16.19, 33.54, 0.0, 23.27, 17.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:34:14.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:33:45
2025-09-28T15:34:14.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:34:14.572 [DEBUG] [Thread-128456] [transport.py] [_log()] starting thread (client mode): 0x2b91f6d0
2025-09-28T15:34:14.572 [DEBUG] [Thread-128456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:14.591 [DEBUG] [Thread-128456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:34:14.591 [INFO] [Thread-128456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:34:14.594 [DEBUG] [Thread-128456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:14.595 [DEBUG] [Thread-128456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:14.596 [DEBUG] [Thread-128456] [transport.py] [_log()] Compression: none
2025-09-28T15:34:14.596 [DEBUG] [Thread-128456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:14.608 [DEBUG] [Thread-128456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:14.609 [DEBUG] [Thread-128456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:14.609 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:34:14.610 [DEBUG] [Thread-128456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:34:14.611 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:14.612 [DEBUG] [Thread-128456] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:14.612 [DEBUG] [Thread-128456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:14.612 [DEBUG] [Thread-128456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:14.612 [DEBUG] [Thread-128456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:34:14.613 [DEBUG] [Thread-128456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:14.638 [INFO] [Thread-128456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:14.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:15.305 [DEBUG] [Thread-128456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:15.305 [DEBUG] [Thread-128456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:15.305 [DEBUG] [Thread-128456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:34:15.346 [DEBUG] [Thread-128456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:15.347 [DEBUG] [Thread-128456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:15.349 [DEBUG] [Thread-128456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:15.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:15.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:34:15.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:34:15.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:34:15.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:15.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:34:15.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:15.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565360 -999.00  +19.00  10.57     37   +4.20 1 1 1 1 1   888    0 12.25 -80.23 ----- 10.6 10.6 208.0 19.9 23.8 -26.3 23.0 -26.0 24.6 -25.3 25.6 -26.1
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565360
2025-09-28T15:34:15.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:34:15.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:34:15.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:34:15.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:34:15.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:34:15.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:33:45', tmtdew=16.19, humidity=33.54, cloud=0.0, wind=23.27, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:34:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:34:15.378 [DEBUG] [Thread-128456] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:15.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-28T15:34:15.473 [DEBUG] [Thread-128459] [transport.py] [_log()] starting thread (client mode): 0x2b96cd60
2025-09-28T15:34:15.473 [DEBUG] [Thread-128459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:15.489 [DEBUG] [Thread-128459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:34:15.489 [INFO] [Thread-128459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:15.497 [DEBUG] [Thread-128459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:15.498 [DEBUG] [Thread-128459] [transport.py] [_log()] Compression: none
2025-09-28T15:34:15.498 [DEBUG] [Thread-128459] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:15.556 [DEBUG] [Thread-128459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:15.557 [DEBUG] [Thread-128459] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:15.557 [DEBUG] [Thread-128459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:34:15.557 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:34:15.558 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:15.612 [DEBUG] [Thread-128459] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:15.612 [DEBUG] [Thread-128459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:15.612 [DEBUG] [Thread-128459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:15.612 [DEBUG] [Thread-128459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:34:15.612 [DEBUG] [Thread-128459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:15.627 [INFO] [Thread-128459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:15.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-28T15:34:15.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:16.584 [DEBUG] [Thread-128459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:16.584 [DEBUG] [Thread-128459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:16.632 [DEBUG] [Thread-128459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:16.632 [DEBUG] [Thread-128459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:16.641 [DEBUG] [Thread-128459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:16.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:16.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-28T15:34:16.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-28T15:34:16.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:16.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:16.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:16.675 [DEBUG] [Thread-128459] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:18.231 [DEBUG] [Thread-128461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:21.419 [DEBUG] [Thread-128462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:26.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:34:26.676 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:34:26.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-28T15:34:27.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 34, 17), 16.1, 33.72, 0.0, 22.66, 17.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:34:27.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:34:17
2025-09-28T15:34:27.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:34:27.570 [DEBUG] [Thread-128463] [transport.py] [_log()] starting thread (client mode): 0x2b9bb940
2025-09-28T15:34:27.570 [DEBUG] [Thread-128463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:27.592 [DEBUG] [Thread-128463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:34:27.592 [INFO] [Thread-128463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:27.595 [DEBUG] [Thread-128463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:27.596 [DEBUG] [Thread-128463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:27.596 [DEBUG] [Thread-128463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:27.596 [DEBUG] [Thread-128463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:27.596 [DEBUG] [Thread-128463] [transport.py] [_log()] Compression: none
2025-09-28T15:34:27.596 [DEBUG] [Thread-128463] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:27.611 [DEBUG] [Thread-128463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:27.611 [DEBUG] [Thread-128463] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:27.612 [DEBUG] [Thread-128463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:34:27.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:34:27.612 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:27.612 [DEBUG] [Thread-128463] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:27.613 [DEBUG] [Thread-128463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:27.613 [DEBUG] [Thread-128463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:27.613 [DEBUG] [Thread-128463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:34:27.613 [DEBUG] [Thread-128463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:27.628 [INFO] [Thread-128463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:27.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:28.423 [DEBUG] [Thread-128463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:28.423 [DEBUG] [Thread-128463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:28.423 [DEBUG] [Thread-128463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:34:28.464 [DEBUG] [Thread-128463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:28.464 [DEBUG] [Thread-128463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:28.466 [DEBUG] [Thread-128463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:28.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:28.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:34:28.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:34:28.473 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:34:28.475 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:28.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:34:28.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565360 -999.00  +19.00  10.57     37   +4.20 1 1 1 1 1   888    0 12.25 -80.23 ----- 10.6 10.6 208.0 19.9 23.8 -26.3 23.0 -26.0 24.6 -25.3 25.6 -26.1
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565360
2025-09-28T15:34:28.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:34:28.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:34:28.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:34:28.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:34:28.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:34:28.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:34:17', tmtdew=16.1, humidity=33.72, cloud=0.0, wind=22.66, temperature=17.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:34:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:34:28.478 [DEBUG] [Thread-128463] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:28.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-28T15:34:28.562 [DEBUG] [Thread-128466] [transport.py] [_log()] starting thread (client mode): 0x2b91e830
2025-09-28T15:34:28.563 [DEBUG] [Thread-128466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:28.577 [DEBUG] [Thread-128466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:34:28.577 [INFO] [Thread-128466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] Compression: none
2025-09-28T15:34:28.585 [DEBUG] [Thread-128466] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:28.643 [DEBUG] [Thread-128466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:28.644 [DEBUG] [Thread-128466] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:28.644 [DEBUG] [Thread-128466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:34:28.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:34:28.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:28.700 [DEBUG] [Thread-128466] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:28.700 [DEBUG] [Thread-128466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:28.700 [DEBUG] [Thread-128466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:28.700 [DEBUG] [Thread-128466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:34:28.700 [DEBUG] [Thread-128466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:28.714 [INFO] [Thread-128466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:28.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-28T15:34:28.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:29.711 [DEBUG] [Thread-128466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:29.711 [DEBUG] [Thread-128466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:29.760 [DEBUG] [Thread-128466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:29.760 [DEBUG] [Thread-128466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:29.768 [DEBUG] [Thread-128466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:29.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:29.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-28T15:34:29.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-28T15:34:29.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:29.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:29.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:29.800 [DEBUG] [Thread-128466] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:36.464 [DEBUG] [Thread-128468 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:39.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:34:39.797 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:34:39.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-28T15:34:40.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 34, 17), 16.1, 33.72, 0.0, 22.66, 17.69, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:34:40.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:34:17
2025-09-28T15:34:40.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:34:40.663 [DEBUG] [Thread-128469] [transport.py] [_log()] starting thread (client mode): 0x2b9559c0
2025-09-28T15:34:40.663 [DEBUG] [Thread-128469] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:40.683 [DEBUG] [Thread-128469] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:34:40.683 [INFO] [Thread-128469] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:40.686 [DEBUG] [Thread-128469] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] Compression: none
2025-09-28T15:34:40.687 [DEBUG] [Thread-128469] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:40.704 [DEBUG] [Thread-128469] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:40.705 [DEBUG] [Thread-128469] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:40.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:34:40.706 [DEBUG] [Thread-128469] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:34:40.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:40.708 [DEBUG] [Thread-128469] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:40.708 [DEBUG] [Thread-128469] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:40.709 [DEBUG] [Thread-128469] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:40.709 [DEBUG] [Thread-128469] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:34:40.709 [DEBUG] [Thread-128469] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:40.732 [INFO] [Thread-128469] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:40.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:41.468 [DEBUG] [Thread-128469] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:41.469 [DEBUG] [Thread-128469] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:41.469 [DEBUG] [Thread-128469] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:34:41.509 [DEBUG] [Thread-128469] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:41.510 [DEBUG] [Thread-128469] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:41.513 [DEBUG] [Thread-128469] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:41.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:41.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:34:41.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:34:41.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:34:41.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:41.535 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:34:41.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:41.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:34:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565360 -999.00  +19.00  10.57     37   +4.20 1 1 1 1 1   888    0 12.25 -80.23 ----- 10.6 10.6 208.0 19.9 23.8 -26.3 23.0 -26.0 24.6 -25.3 25.6 -26.1
2025-09-28T15:34:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:34:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:34:41.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565360
2025-09-28T15:34:41.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:34:41.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:34:41.538 [DEBUG] [Thread-128469] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:41.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:34:41.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:34:41.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:34:41.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:34:17', tmtdew=16.1, humidity=33.72, cloud=0.0, wind=22.66, temperature=17.69, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:34:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:34:41.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-28T15:34:41.639 [DEBUG] [Thread-128472] [transport.py] [_log()] starting thread (client mode): 0x2b954310
2025-09-28T15:34:41.639 [DEBUG] [Thread-128472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:41.654 [DEBUG] [Thread-128472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:34:41.654 [INFO] [Thread-128472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:34:41.661 [DEBUG] [Thread-128472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:41.662 [DEBUG] [Thread-128472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:41.663 [DEBUG] [Thread-128472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:41.664 [DEBUG] [Thread-128472] [transport.py] [_log()] Compression: none
2025-09-28T15:34:41.664 [DEBUG] [Thread-128472] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:41.721 [DEBUG] [Thread-128472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:41.721 [DEBUG] [Thread-128472] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:41.722 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:34:41.722 [DEBUG] [Thread-128472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:34:41.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:41.781 [DEBUG] [Thread-128472] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:41.781 [DEBUG] [Thread-128472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:41.781 [DEBUG] [Thread-128472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:41.781 [DEBUG] [Thread-128472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:34:41.781 [DEBUG] [Thread-128472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:41.801 [INFO] [Thread-128472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:41.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-28T15:34:41.801 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:42.785 [DEBUG] [Thread-128472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:42.785 [DEBUG] [Thread-128472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:42.833 [DEBUG] [Thread-128472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:42.833 [DEBUG] [Thread-128472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:42.842 [DEBUG] [Thread-128472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:42.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:42.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-28T15:34:42.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') -> 00000000
2025-09-28T15:34:42.875 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:42.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:42.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:42.884 [DEBUG] [Thread-128472] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:51.506 [DEBUG] [Thread-128474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:34:52.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:34:52.887 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:34:52.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-28T15:34:53.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 34, 48), 15.84, 34.39, 0.0, 22.46, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:34:53.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:34:48
2025-09-28T15:34:53.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:34:53.768 [DEBUG] [Thread-128475] [transport.py] [_log()] starting thread (client mode): 0x2b956320
2025-09-28T15:34:53.768 [DEBUG] [Thread-128475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:53.788 [DEBUG] [Thread-128475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:34:53.788 [INFO] [Thread-128475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] Compression: none
2025-09-28T15:34:53.790 [DEBUG] [Thread-128475] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:53.803 [DEBUG] [Thread-128475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:53.803 [DEBUG] [Thread-128475] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:53.804 [DEBUG] [Thread-128475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:34:53.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:34:53.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:53.805 [DEBUG] [Thread-128475] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:53.806 [DEBUG] [Thread-128475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:53.806 [DEBUG] [Thread-128475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:53.806 [DEBUG] [Thread-128475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:34:53.806 [DEBUG] [Thread-128475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:53.836 [INFO] [Thread-128475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:53.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:54.459 [DEBUG] [Thread-128475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:54.460 [DEBUG] [Thread-128475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:54.460 [DEBUG] [Thread-128475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:34:54.500 [DEBUG] [Thread-128475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:54.500 [DEBUG] [Thread-128475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:54.503 [DEBUG] [Thread-128475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:54.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:54.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:34:54.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:34:54.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:34:54.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:54.524 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:34:54.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:54.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565707 -999.00  +19.00   8.35     37   +4.00 1 1 1 1 1   888    0 12.55 -76.10 ----- 8.3 8.3 185.0 22.8 23.8 -27.2 23.1 -27.1 24.5 -26.1 25.6 -27.9
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565707
2025-09-28T15:34:54.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:34:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:34:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:34:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:34:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:34:54.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:34:48', tmtdew=15.84, humidity=34.39, cloud=0.0, wind=22.46, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:34:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:34:54.527 [DEBUG] [Thread-128475] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:34:54.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-28T15:34:54.621 [DEBUG] [Thread-128478] [transport.py] [_log()] starting thread (client mode): 0x2b96c2b0
2025-09-28T15:34:54.622 [DEBUG] [Thread-128478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:34:54.636 [DEBUG] [Thread-128478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:34:54.636 [INFO] [Thread-128478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:34:54.643 [DEBUG] [Thread-128478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] client lang: <none>
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] server lang: <none>
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] kex follows: False
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] Compression: none
2025-09-28T15:34:54.644 [DEBUG] [Thread-128478] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:34:54.700 [DEBUG] [Thread-128478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:34:54.701 [DEBUG] [Thread-128478] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:34:54.701 [DEBUG] [Thread-128478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:34:54.701 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:34:54.702 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:34:54.756 [DEBUG] [Thread-128478] [transport.py] [_log()] userauth is OK
2025-09-28T15:34:54.757 [DEBUG] [Thread-128478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:34:54.757 [DEBUG] [Thread-128478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:34:54.757 [DEBUG] [Thread-128478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:34:54.757 [DEBUG] [Thread-128478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:34:54.775 [INFO] [Thread-128478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:34:54.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-28T15:34:54.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:34:55.738 [DEBUG] [Thread-128478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:34:55.738 [DEBUG] [Thread-128478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:34:55.786 [DEBUG] [Thread-128478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:34:55.786 [DEBUG] [Thread-128478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:34:55.796 [DEBUG] [Thread-128478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:34:55.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:34:55.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-28T15:34:55.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-28T15:34:55.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:34:55.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:34:55.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:34:55.840 [DEBUG] [Thread-128478] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:05.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:35:05.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:35:05.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-28T15:35:06.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 34, 48), 15.84, 34.39, 0.0, 22.46, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:35:06.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:34:48
2025-09-28T15:35:06.538 [DEBUG] [Thread-128480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:06.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:35:06.712 [DEBUG] [Thread-128481] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T15:35:06.712 [DEBUG] [Thread-128481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:06.733 [DEBUG] [Thread-128481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:35:06.733 [INFO] [Thread-128481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] Compression: none
2025-09-28T15:35:06.736 [DEBUG] [Thread-128481] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:06.751 [DEBUG] [Thread-128481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:06.751 [DEBUG] [Thread-128481] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:06.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:35:06.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:35:06.752 [DEBUG] [Thread-128481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:06.782 [INFO] [Thread-128481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:06.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:12.902 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:12.903 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:17.783 [DEBUG] [Thread-128481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:17.784 [DEBUG] [Thread-128481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:17.784 [DEBUG] [Thread-128481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:35:17.824 [DEBUG] [Thread-128481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:17.825 [DEBUG] [Thread-128481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:17.827 [DEBUG] [Thread-128481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:17.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:17.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:35:17.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:35:17.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:35:17.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:17.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:35:17.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:17.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:35:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.565707 -999.00  +19.00   8.35     37   +4.00 1 1 1 1 1   888    0 12.55 -76.10 ----- 8.3 8.3 185.0 22.8 23.8 -27.2 23.1 -27.1 24.5 -26.1 25.6 -27.9
2025-09-28T15:35:17.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:35:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:35:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.565707
2025-09-28T15:35:17.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:35:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:35:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:35:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:35:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:35:17.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:34:48', tmtdew=15.84, humidity=34.39, cloud=0.0, wind=22.46, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:34:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:35:17.990 [DEBUG] [Thread-128481] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:18.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-28T15:35:18.091 [DEBUG] [Thread-128484] [transport.py] [_log()] starting thread (client mode): 0x2b96e260
2025-09-28T15:35:18.091 [DEBUG] [Thread-128484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:18.110 [DEBUG] [Thread-128484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:35:18.110 [INFO] [Thread-128484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:35:18.120 [DEBUG] [Thread-128484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:18.121 [DEBUG] [Thread-128484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:18.122 [DEBUG] [Thread-128484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:18.122 [DEBUG] [Thread-128484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:18.122 [DEBUG] [Thread-128484] [transport.py] [_log()] Compression: none
2025-09-28T15:35:18.122 [DEBUG] [Thread-128484] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:18.183 [DEBUG] [Thread-128484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:18.184 [DEBUG] [Thread-128484] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:18.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:35:18.185 [DEBUG] [Thread-128484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:35:18.186 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:18.241 [DEBUG] [Thread-128484] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:18.241 [DEBUG] [Thread-128484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:18.241 [DEBUG] [Thread-128484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:18.241 [DEBUG] [Thread-128484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:35:18.241 [DEBUG] [Thread-128484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:18.259 [INFO] [Thread-128484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:18.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-28T15:35:18.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:18.286 [DEBUG] [Thread-128486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:19.199 [DEBUG] [Thread-128484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:19.199 [DEBUG] [Thread-128484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:19.247 [DEBUG] [Thread-128484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:19.247 [DEBUG] [Thread-128484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:19.256 [DEBUG] [Thread-128484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:19.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:19.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-28T15:35:19.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-28T15:35:19.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:19.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:19.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:19.289 [DEBUG] [Thread-128484] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:21.574 [DEBUG] [Thread-128487 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:29.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:35:29.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:35:29.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-28T15:35:29.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 35, 20), 15.88, 34.3, 0.0, 21.91, 17.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:35:29.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:35:20
2025-09-28T15:35:30.016 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:35:30.165 [DEBUG] [Thread-128488] [transport.py] [_log()] starting thread (client mode): 0x2b96e380
2025-09-28T15:35:30.165 [DEBUG] [Thread-128488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:30.186 [DEBUG] [Thread-128488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:35:30.186 [INFO] [Thread-128488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:35:30.189 [DEBUG] [Thread-128488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:30.189 [DEBUG] [Thread-128488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:35:30.189 [DEBUG] [Thread-128488] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] Compression: none
2025-09-28T15:35:30.190 [DEBUG] [Thread-128488] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:30.204 [DEBUG] [Thread-128488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:30.204 [DEBUG] [Thread-128488] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:30.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:35:30.205 [DEBUG] [Thread-128488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:35:30.206 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:30.207 [DEBUG] [Thread-128488] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:30.208 [DEBUG] [Thread-128488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:30.208 [DEBUG] [Thread-128488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:30.208 [DEBUG] [Thread-128488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:35:30.208 [DEBUG] [Thread-128488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:30.226 [INFO] [Thread-128488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:30.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:30.847 [DEBUG] [Thread-128488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:30.847 [DEBUG] [Thread-128488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:30.847 [DEBUG] [Thread-128488] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:35:30.888 [DEBUG] [Thread-128488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:30.888 [DEBUG] [Thread-128488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:30.890 [DEBUG] [Thread-128488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:30.895 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:30.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:35:30.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:35:30.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:35:30.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:30.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:35:30.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566054 -999.00  +18.50  25.88     37   +3.80 1 1 1 1 1   888    0 12.79 -67.29 ----- 25.9 25.9 190.6 35.7 23.7 -27.4 22.8 -27.7 24.3 -28.9 25.4 -29.2
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:35:30.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566054
2025-09-28T15:35:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:35:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:35:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:35:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:35:30.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:35:30.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:35:20', tmtdew=15.88, humidity=34.3, cloud=0.0, wind=21.91, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:35:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:35:30.909 [DEBUG] [Thread-128488] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:30.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-28T15:35:31.004 [DEBUG] [Thread-128491] [transport.py] [_log()] starting thread (client mode): 0x2b96e740
2025-09-28T15:35:31.004 [DEBUG] [Thread-128491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:31.020 [DEBUG] [Thread-128491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:35:31.020 [INFO] [Thread-128491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:35:31.029 [DEBUG] [Thread-128491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:31.029 [DEBUG] [Thread-128491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:35:31.029 [DEBUG] [Thread-128491] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] Compression: none
2025-09-28T15:35:31.030 [DEBUG] [Thread-128491] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:31.088 [DEBUG] [Thread-128491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:31.088 [DEBUG] [Thread-128491] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:31.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:35:31.089 [DEBUG] [Thread-128491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:35:31.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:31.145 [DEBUG] [Thread-128491] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:31.145 [DEBUG] [Thread-128491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:31.145 [DEBUG] [Thread-128491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:31.145 [DEBUG] [Thread-128491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:35:31.145 [DEBUG] [Thread-128491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:31.159 [INFO] [Thread-128491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:31.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-28T15:35:31.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:32.177 [DEBUG] [Thread-128491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:32.177 [DEBUG] [Thread-128491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:32.224 [DEBUG] [Thread-128491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:32.224 [DEBUG] [Thread-128491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:32.233 [DEBUG] [Thread-128491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:32.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:32.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-28T15:35:32.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-28T15:35:32.262 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:32.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:32.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:32.270 [DEBUG] [Thread-128491] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:36.602 [DEBUG] [Thread-128493 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:42.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:35:42.273 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:35:42.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-28T15:35:42.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 35, 20), 15.88, 34.3, 0.0, 21.91, 17.54, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:35:42.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:35:20
2025-09-28T15:35:43.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:35:43.168 [DEBUG] [Thread-128494] [transport.py] [_log()] starting thread (client mode): 0x2b957be0
2025-09-28T15:35:43.168 [DEBUG] [Thread-128494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:43.188 [DEBUG] [Thread-128494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:35:43.188 [INFO] [Thread-128494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] Compression: none
2025-09-28T15:35:43.192 [DEBUG] [Thread-128494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:43.208 [DEBUG] [Thread-128494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:43.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:35:43.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:35:43.209 [DEBUG] [Thread-128494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:43.218 [INFO] [Thread-128494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:43.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:43.976 [DEBUG] [Thread-128494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:43.976 [DEBUG] [Thread-128494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:43.976 [DEBUG] [Thread-128494] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:35:44.017 [DEBUG] [Thread-128494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:44.017 [DEBUG] [Thread-128494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:44.019 [DEBUG] [Thread-128494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:44.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:44.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:35:44.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:35:44.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:35:44.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:44.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:35:44.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566054 -999.00  +18.50  25.88     37   +3.80 1 1 1 1 1   888    0 12.79 -67.29 ----- 25.9 25.9 190.6 35.7 23.7 -27.4 22.8 -27.7 24.3 -28.9 25.4 -29.2
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566054
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:35:44.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:35:20', tmtdew=15.88, humidity=34.3, cloud=0.0, wind=21.91, temperature=17.54, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:35:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:35:44.030 [DEBUG] [Thread-128494] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:44.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-28T15:35:44.117 [DEBUG] [Thread-128497] [transport.py] [_log()] starting thread (client mode): 0x2b956dd0
2025-09-28T15:35:44.117 [DEBUG] [Thread-128497] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:44.131 [DEBUG] [Thread-128497] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:35:44.132 [INFO] [Thread-128497] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:44.139 [DEBUG] [Thread-128497] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] Compression: none
2025-09-28T15:35:44.140 [DEBUG] [Thread-128497] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:44.195 [DEBUG] [Thread-128497] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:44.195 [DEBUG] [Thread-128497] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:44.195 [DEBUG] [Thread-128497] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:35:44.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:35:44.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:44.252 [DEBUG] [Thread-128497] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:44.252 [DEBUG] [Thread-128497] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:44.252 [DEBUG] [Thread-128497] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:44.252 [DEBUG] [Thread-128497] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:35:44.252 [DEBUG] [Thread-128497] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:44.266 [INFO] [Thread-128497] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:44.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-28T15:35:44.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:45.223 [DEBUG] [Thread-128497] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:45.223 [DEBUG] [Thread-128497] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:45.271 [DEBUG] [Thread-128497] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:45.271 [DEBUG] [Thread-128497] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:45.280 [DEBUG] [Thread-128497] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:45.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:45.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T15:35:45.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') -> 00000000
2025-09-28T15:35:45.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:45.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:45.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:45.315 [DEBUG] [Thread-128497] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:51.643 [DEBUG] [Thread-128499 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:35:55.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:35:55.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:35:55.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-28T15:35:55.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 35, 52), 15.88, 34.59, 0.0, 23.91, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:35:55.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:35:52
2025-09-28T15:35:56.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:35:56.177 [DEBUG] [Thread-128500] [transport.py] [_log()] starting thread (client mode): 0x2b94c9d0
2025-09-28T15:35:56.177 [DEBUG] [Thread-128500] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:56.197 [DEBUG] [Thread-128500] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:35:56.197 [INFO] [Thread-128500] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:56.200 [DEBUG] [Thread-128500] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] Compression: none
2025-09-28T15:35:56.201 [DEBUG] [Thread-128500] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:56.209 [DEBUG] [Thread-128500] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:56.209 [DEBUG] [Thread-128500] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:56.210 [DEBUG] [Thread-128500] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:35:56.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:35:56.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:56.211 [DEBUG] [Thread-128500] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:56.211 [DEBUG] [Thread-128500] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:56.211 [DEBUG] [Thread-128500] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:56.211 [DEBUG] [Thread-128500] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:35:56.211 [DEBUG] [Thread-128500] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:56.228 [INFO] [Thread-128500] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35:56.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:56.822 [DEBUG] [Thread-128500] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:56.823 [DEBUG] [Thread-128500] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:56.823 [DEBUG] [Thread-128500] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:35:56.863 [DEBUG] [Thread-128500] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:56.863 [DEBUG] [Thread-128500] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:56.868 [DEBUG] [Thread-128500] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:56.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:56.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:35:56.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:35:56.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:35:56.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:56.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:35:56.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:56.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566402 -999.00  +17.90  18.30     39   +3.70 1 1 1 1 1   888    0 12.93 -61.47 ----- 18.3 18.3 216.1 31.4 23.4 -28.5 22.3 -28.4 24.2 -27.3 25.1 -29.7
2025-09-28T15:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:35:56.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566402
2025-09-28T15:35:56.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:35:56.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:35:56.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:35:56.893 [DEBUG] [Thread-128500] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:35:56.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:35:56.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:35:56.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:35:52', tmtdew=15.88, humidity=34.59, cloud=0.0, wind=23.91, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:35:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:35:56.976 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:35:56.987 [DEBUG] [Thread-128503] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-28T15:35:56.987 [DEBUG] [Thread-128503] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:35:57.001 [DEBUG] [Thread-128503] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:35:57.002 [INFO] [Thread-128503] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:35:57.009 [DEBUG] [Thread-128503] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:35:57.009 [DEBUG] [Thread-128503] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] client lang: <none>
2025-09-28T15:35:57.010 [DEBUG] [Thread-128503] [transport.py] [_log()] server lang: <none>
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] kex follows: False
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] Compression: none
2025-09-28T15:35:57.011 [DEBUG] [Thread-128503] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:35:57.070 [DEBUG] [Thread-128503] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:35:57.071 [DEBUG] [Thread-128503] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:35:57.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:35:57.072 [DEBUG] [Thread-128503] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:35:57.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:35:57.132 [DEBUG] [Thread-128503] [transport.py] [_log()] userauth is OK
2025-09-28T15:35:57.132 [DEBUG] [Thread-128503] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:35:57.132 [DEBUG] [Thread-128503] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:35:57.132 [DEBUG] [Thread-128503] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:35:57.133 [DEBUG] [Thread-128503] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:35:57.154 [INFO] [Thread-128503] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:35: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-28T15:35:57.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:35:58.076 [DEBUG] [Thread-128503] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:35:58.076 [DEBUG] [Thread-128503] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:35:58.124 [DEBUG] [Thread-128503] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:35:58.124 [DEBUG] [Thread-128503] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:35:58.133 [DEBUG] [Thread-128503] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:35:58.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:35:58.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-28T15:35:58.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-28T15:35:58.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:35:58.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:35:58.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:35:58.168 [DEBUG] [Thread-128503] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:06.676 [DEBUG] [Thread-128505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:08.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:36:08.171 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:36:08.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:36:08.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 35, 52), 15.88, 34.59, 0.0, 23.91, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:36:08.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:35:52
2025-09-28T15:36:08.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:36:09.021 [DEBUG] [Thread-128506] [transport.py] [_log()] starting thread (client mode): 0x2b91cf70
2025-09-28T15:36:09.021 [DEBUG] [Thread-128506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:09.042 [DEBUG] [Thread-128506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:36:09.042 [INFO] [Thread-128506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] Compression: none
2025-09-28T15:36:09.045 [DEBUG] [Thread-128506] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:09.062 [DEBUG] [Thread-128506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:09.063 [DEBUG] [Thread-128506] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:09.063 [DEBUG] [Thread-128506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:36:09.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:36:09.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:09.065 [DEBUG] [Thread-128506] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:09.065 [DEBUG] [Thread-128506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:09.065 [DEBUG] [Thread-128506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:09.065 [DEBUG] [Thread-128506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:36:09.065 [DEBUG] [Thread-128506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:09.089 [INFO] [Thread-128506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:09.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:09.870 [DEBUG] [Thread-128506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:09.870 [DEBUG] [Thread-128506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:09.870 [DEBUG] [Thread-128506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:36:09.910 [DEBUG] [Thread-128506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:09.910 [DEBUG] [Thread-128506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:09.913 [DEBUG] [Thread-128506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:09.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:09.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:36:09.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:36:09.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:36:09.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:09.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:36:09.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:09.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566402 -999.00  +17.90  18.30     39   +3.70 1 1 1 1 1   888    0 12.93 -61.47 ----- 18.3 18.3 216.1 31.4 23.4 -28.5 22.3 -28.4 24.2 -27.3 25.1 -29.7
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566402
2025-09-28T15:36:09.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:36:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:36:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:36:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:36:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:36:09.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:35:52', tmtdew=15.88, humidity=34.59, cloud=0.0, wind=23.91, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:35:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:36:09.938 [DEBUG] [Thread-128506] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:10.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-28T15:36:10.034 [DEBUG] [Thread-128509] [transport.py] [_log()] starting thread (client mode): 0x2b91ce20
2025-09-28T15:36:10.034 [DEBUG] [Thread-128509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:10.048 [DEBUG] [Thread-128509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:36:10.049 [INFO] [Thread-128509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:36:10.056 [DEBUG] [Thread-128509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:10.056 [DEBUG] [Thread-128509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:36:10.056 [DEBUG] [Thread-128509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:10.056 [DEBUG] [Thread-128509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] Compression: none
2025-09-28T15:36:10.057 [DEBUG] [Thread-128509] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:10.112 [DEBUG] [Thread-128509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:10.112 [DEBUG] [Thread-128509] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:10.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:36:10.113 [DEBUG] [Thread-128509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:36:10.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:10.169 [DEBUG] [Thread-128509] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:10.169 [DEBUG] [Thread-128509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:10.169 [DEBUG] [Thread-128509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:10.169 [DEBUG] [Thread-128509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:36:10.170 [DEBUG] [Thread-128509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:10.189 [INFO] [Thread-128509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:10.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-28T15:36:10.189 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:11.153 [DEBUG] [Thread-128509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:11.154 [DEBUG] [Thread-128509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:11.202 [DEBUG] [Thread-128509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:11.202 [DEBUG] [Thread-128509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:11.211 [DEBUG] [Thread-128509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:11.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:11.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')
2025-09-28T15:36:11.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-28T15:36:11.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:11.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:11.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:11.247 [DEBUG] [Thread-128509] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:13.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:13.046 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:18.336 [DEBUG] [Thread-128511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:21.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:36:21.249 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:36:21.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-28T15:36:21.719 [DEBUG] [Thread-128512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:21.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 35, 52), 15.88, 34.59, 0.0, 23.91, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:36:21.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:35:52
2025-09-28T15:36:21.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:36:22.109 [DEBUG] [Thread-128513] [transport.py] [_log()] starting thread (client mode): 0x30ddf370
2025-09-28T15:36:22.109 [DEBUG] [Thread-128513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:22.129 [DEBUG] [Thread-128513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:36:22.129 [INFO] [Thread-128513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:36:22.132 [DEBUG] [Thread-128513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:22.132 [DEBUG] [Thread-128513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:36:22.132 [DEBUG] [Thread-128513] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:22.132 [DEBUG] [Thread-128513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] Compression: none
2025-09-28T15:36:22.133 [DEBUG] [Thread-128513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:22.151 [DEBUG] [Thread-128513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:22.151 [DEBUG] [Thread-128513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:22.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:36:22.152 [DEBUG] [Thread-128513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:36:22.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:22.154 [DEBUG] [Thread-128513] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:22.154 [DEBUG] [Thread-128513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:22.154 [DEBUG] [Thread-128513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:22.155 [DEBUG] [Thread-128513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:36:22.155 [DEBUG] [Thread-128513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:22.172 [INFO] [Thread-128513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:22.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:22.928 [DEBUG] [Thread-128513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:22.928 [DEBUG] [Thread-128513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:22.929 [DEBUG] [Thread-128513] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:36:22.969 [DEBUG] [Thread-128513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:22.969 [DEBUG] [Thread-128513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:22.972 [DEBUG] [Thread-128513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:22.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:22.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:36:22.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:36:22.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:36:22.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:22.994 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:36:22.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566402 -999.00  +17.90  18.30     39   +3.70 1 1 1 1 1   888    0 12.93 -61.47 ----- 18.3 18.3 216.1 31.4 23.4 -28.5 22.3 -28.4 24.2 -27.3 25.1 -29.7
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:36:22.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566402
2025-09-28T15:36:22.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:36:22.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:36:22.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:36:22.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:36:22.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:36:22.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:35:52', tmtdew=15.88, humidity=34.59, cloud=0.0, wind=23.91, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:35:37.133', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:36:22.997 [DEBUG] [Thread-128513] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:23.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-28T15:36:23.091 [DEBUG] [Thread-128516] [transport.py] [_log()] starting thread (client mode): 0x2b96e740
2025-09-28T15:36:23.091 [DEBUG] [Thread-128516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:23.105 [DEBUG] [Thread-128516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:36:23.105 [INFO] [Thread-128516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:36:23.112 [DEBUG] [Thread-128516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] Compression: none
2025-09-28T15:36:23.113 [DEBUG] [Thread-128516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:23.172 [DEBUG] [Thread-128516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:23.173 [DEBUG] [Thread-128516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:23.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:36:23.174 [DEBUG] [Thread-128516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:36:23.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:23.229 [DEBUG] [Thread-128516] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:23.229 [DEBUG] [Thread-128516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:23.229 [DEBUG] [Thread-128516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:23.229 [DEBUG] [Thread-128516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:36:23.229 [DEBUG] [Thread-128516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:23.250 [INFO] [Thread-128516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:23.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-28T15:36:23.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:24.182 [DEBUG] [Thread-128516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:24.182 [DEBUG] [Thread-128516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:24.230 [DEBUG] [Thread-128516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:24.230 [DEBUG] [Thread-128516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:24.239 [DEBUG] [Thread-128516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:24.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:24.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')
2025-09-28T15:36:24.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') -> 00000000
2025-09-28T15:36:24.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:24.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:24.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:24.274 [DEBUG] [Thread-128516] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:34.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:36:34.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:36:34.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-28T15:36:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 36, 24), 15.88, 34.57, 0.0, 21.46, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:36:34.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:36:24
2025-09-28T15:36:34.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:36:35.133 [DEBUG] [Thread-128518] [transport.py] [_log()] starting thread (client mode): 0x2b94d360
2025-09-28T15:36:35.134 [DEBUG] [Thread-128518] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:35.152 [DEBUG] [Thread-128518] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:36:35.153 [INFO] [Thread-128518] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:35.154 [DEBUG] [Thread-128518] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:35.155 [DEBUG] [Thread-128518] [transport.py] [_log()] Compression: none
2025-09-28T15:36:35.155 [DEBUG] [Thread-128518] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:35.170 [DEBUG] [Thread-128518] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:35.171 [DEBUG] [Thread-128518] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:35.171 [DEBUG] [Thread-128518] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:36:35.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:36:35.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:35.173 [DEBUG] [Thread-128518] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:35.173 [DEBUG] [Thread-128518] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:35.173 [DEBUG] [Thread-128518] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:35.173 [DEBUG] [Thread-128518] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:36:35.174 [DEBUG] [Thread-128518] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:35.191 [INFO] [Thread-128518] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:35.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:35.830 [DEBUG] [Thread-128518] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:35.830 [DEBUG] [Thread-128518] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:35.830 [DEBUG] [Thread-128518] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:36:35.871 [DEBUG] [Thread-128518] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:35.871 [DEBUG] [Thread-128518] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:35.874 [DEBUG] [Thread-128518] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:35.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:35.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:36:35.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:36:35.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:36:35.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:35.894 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:36:35.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:35.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:35.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:36:35.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566749 -999.00  +17.80  11.12     39   +3.80 1 1 1 1 1   888    0 13.05 -56.45 ----- 11.1 11.1 206.8 14.1 23.5 -26.7 22.6 -27.1 24.3 -26.2 25.3 -26.3
2025-09-28T15:36:35.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:36:35.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:36:35.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566749
2025-09-28T15:36:35.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:36:35.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:36:35.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:36:35.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:36:35.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:36:35.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:36:24', tmtdew=15.88, humidity=34.57, cloud=0.0, wind=21.46, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:36:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:36:35.896 [DEBUG] [Thread-128518] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:35.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-28T15:36:35.990 [DEBUG] [Thread-128521] [transport.py] [_log()] starting thread (client mode): 0x2b96eb90
2025-09-28T15:36:35.990 [DEBUG] [Thread-128521] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:36.005 [DEBUG] [Thread-128521] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:36:36.005 [INFO] [Thread-128521] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:36:36.012 [DEBUG] [Thread-128521] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:36.012 [DEBUG] [Thread-128521] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] Compression: none
2025-09-28T15:36:36.013 [DEBUG] [Thread-128521] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:36.072 [DEBUG] [Thread-128521] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:36.072 [DEBUG] [Thread-128521] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:36.073 [DEBUG] [Thread-128521] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:36:36.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:36:36.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:36.129 [DEBUG] [Thread-128521] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:36.129 [DEBUG] [Thread-128521] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:36.129 [DEBUG] [Thread-128521] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:36.129 [DEBUG] [Thread-128521] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:36:36.129 [DEBUG] [Thread-128521] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:36.149 [INFO] [Thread-128521] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:36.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:36:36.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:36.750 [DEBUG] [Thread-128523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:36:37.131 [DEBUG] [Thread-128521] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:37.132 [DEBUG] [Thread-128521] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:37.179 [DEBUG] [Thread-128521] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:37.180 [DEBUG] [Thread-128521] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:37.189 [DEBUG] [Thread-128521] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:37.198 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:37.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-28T15:36:37.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-28T15:36:37.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:37.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:37.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:37.227 [DEBUG] [Thread-128521] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:47.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:36:47.227 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:36:47.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-28T15:36:47.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 36, 24), 15.88, 34.57, 0.0, 21.46, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:36:47.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:36:24
2025-09-28T15:36:47.921 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:36:48.069 [DEBUG] [Thread-128524] [transport.py] [_log()] starting thread (client mode): 0x2b956650
2025-09-28T15:36:48.069 [DEBUG] [Thread-128524] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:36:48.089 [DEBUG] [Thread-128524] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:36:48.089 [INFO] [Thread-128524] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:48.092 [DEBUG] [Thread-128524] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] client lang: <none>
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] server lang: <none>
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] kex follows: False
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] Compression: none
2025-09-28T15:36:48.093 [DEBUG] [Thread-128524] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:36:48.112 [DEBUG] [Thread-128524] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:36:48.112 [DEBUG] [Thread-128524] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:36:48.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:36:48.113 [DEBUG] [Thread-128524] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:36:48.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:36:48.115 [DEBUG] [Thread-128524] [transport.py] [_log()] userauth is OK
2025-09-28T15:36:48.115 [DEBUG] [Thread-128524] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:36:48.115 [DEBUG] [Thread-128524] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:36:48.115 [DEBUG] [Thread-128524] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:36:48.115 [DEBUG] [Thread-128524] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:36:48.139 [INFO] [Thread-128524] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:36:48.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:36:48.928 [DEBUG] [Thread-128524] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:36:48.929 [DEBUG] [Thread-128524] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:36:48.929 [DEBUG] [Thread-128524] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:36:48.969 [DEBUG] [Thread-128524] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:36:48.969 [DEBUG] [Thread-128524] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:36:48.971 [DEBUG] [Thread-128524] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:36:48.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:36:48.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:36:48.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:36:48.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:36:48.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:36:48.987 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:36:48.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:36:48.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:36:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:36:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.566749 -999.00  +17.80  11.12     39   +3.80 1 1 1 1 1   888    0 13.05 -56.45 ----- 11.1 11.1 206.8 14.1 23.5 -26.7 22.6 -27.1 24.3 -26.2 25.3 -26.3
2025-09-28T15:36:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:36:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:36:48.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.566749
2025-09-28T15:36:48.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:36:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:36:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:36:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:36:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:36:48.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:36:24', tmtdew=15.88, humidity=34.57, cloud=0.0, wind=21.46, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:36:07.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:36:48.990 [DEBUG] [Thread-128524] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:36:49.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-28T15:36:51.796 [DEBUG] [Thread-128527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:06.825 [DEBUG] [Thread-128528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:13.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:13.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:18.381 [DEBUG] [Thread-128529 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:21.855 [DEBUG] [Thread-128530 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:36.885 [DEBUG] [Thread-128531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:37:51.916 [DEBUG] [Thread-128532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:06.945 [DEBUG] [Thread-128533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:13.331 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:13.332 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:18.436 [DEBUG] [Thread-128534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:21.972 [DEBUG] [Thread-128535 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:37.001 [DEBUG] [Thread-128536 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:38:52.027 [DEBUG] [Thread-128537 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:01.946 [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-28T15:39:07.058 [DEBUG] [Thread-128538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:11.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:39:11.957 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:39:11.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-28T15:39:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 39, 4), 16.19, 33.67, 0.0, 23.63, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:39:12.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:39:04
2025-09-28T15:39:12.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:39:12.830 [DEBUG] [Thread-128539] [transport.py] [_log()] starting thread (client mode): 0x2b955fc0
2025-09-28T15:39:12.830 [DEBUG] [Thread-128539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:12.842 [DEBUG] [Thread-128539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:39:12.842 [INFO] [Thread-128539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:39:12.845 [DEBUG] [Thread-128539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] Compression: none
2025-09-28T15:39:12.846 [DEBUG] [Thread-128539] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:12.855 [DEBUG] [Thread-128539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:12.855 [DEBUG] [Thread-128539] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:12.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:39:12.856 [DEBUG] [Thread-128539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:39:12.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:12.857 [DEBUG] [Thread-128539] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:12.857 [DEBUG] [Thread-128539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:12.857 [DEBUG] [Thread-128539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:12.857 [DEBUG] [Thread-128539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:39:12.857 [DEBUG] [Thread-128539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:12.879 [INFO] [Thread-128539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:12.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:13.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:13.473 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:13.524 [DEBUG] [Thread-128539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:13.525 [DEBUG] [Thread-128539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:13.525 [DEBUG] [Thread-128539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:39:13.565 [DEBUG] [Thread-128539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:13.565 [DEBUG] [Thread-128539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:13.568 [DEBUG] [Thread-128539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:13.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:13.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:39:13.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:39:13.588 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:39:13.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:13.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:39:13.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.568832 -999.00  +18.60  12.08     37   +3.90 1 1 1 1 1   888    0 13.75 -28.42 ----- 12.1 12.1 232.5 22.2 23.6 -27.6 22.9 -25.9 24.5 -27.4 25.5 -28.2
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:39:13.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.568832
2025-09-28T15:39:13.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:39:13.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:39:13.596 [DEBUG] [Thread-128539] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:13.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:39:13.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:39:13.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:39:13.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:39:04', tmtdew=16.19, humidity=33.67, cloud=0.0, wind=23.63, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:39:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:39:13.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-28T15:39:13.694 [DEBUG] [Thread-128542] [transport.py] [_log()] starting thread (client mode): 0x2b96ece0
2025-09-28T15:39:13.695 [DEBUG] [Thread-128542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:13.709 [DEBUG] [Thread-128542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:39:13.709 [INFO] [Thread-128542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:39:13.716 [DEBUG] [Thread-128542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:13.717 [DEBUG] [Thread-128542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:13.718 [DEBUG] [Thread-128542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:13.718 [DEBUG] [Thread-128542] [transport.py] [_log()] Compression: none
2025-09-28T15:39:13.718 [DEBUG] [Thread-128542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:13.777 [DEBUG] [Thread-128542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:13.778 [DEBUG] [Thread-128542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:13.778 [DEBUG] [Thread-128542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:39:13.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:39:13.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:13.832 [DEBUG] [Thread-128542] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:13.833 [DEBUG] [Thread-128542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:13.833 [DEBUG] [Thread-128542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:13.833 [DEBUG] [Thread-128542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:39:13.833 [DEBUG] [Thread-128542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:13.851 [INFO] [Thread-128542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:13.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-28T15:39:13.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:14.799 [DEBUG] [Thread-128542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:14.799 [DEBUG] [Thread-128542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:14.847 [DEBUG] [Thread-128542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:14.847 [DEBUG] [Thread-128542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:14.855 [DEBUG] [Thread-128542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:14.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:14.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-28T15:39:14.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-28T15:39:14.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:14.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:14.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:14.887 [DEBUG] [Thread-128542] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:18.491 [DEBUG] [Thread-128544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:22.087 [DEBUG] [Thread-128545 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:24.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:39:24.888 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:39:24.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-28T15:39:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 39, 4), 16.19, 33.67, 0.0, 23.63, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:39:25.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:39:04
2025-09-28T15:39:25.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:39:25.759 [DEBUG] [Thread-128546] [transport.py] [_log()] starting thread (client mode): 0x2b91feb0
2025-09-28T15:39:25.759 [DEBUG] [Thread-128546] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:25.780 [DEBUG] [Thread-128546] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:39:25.780 [INFO] [Thread-128546] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:25.783 [DEBUG] [Thread-128546] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] Compression: none
2025-09-28T15:39:25.784 [DEBUG] [Thread-128546] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:25.801 [DEBUG] [Thread-128546] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:25.801 [DEBUG] [Thread-128546] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:25.802 [DEBUG] [Thread-128546] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:39:25.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:39:25.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:25.804 [DEBUG] [Thread-128546] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:25.804 [DEBUG] [Thread-128546] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:25.804 [DEBUG] [Thread-128546] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:25.804 [DEBUG] [Thread-128546] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:39:25.804 [DEBUG] [Thread-128546] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:25.828 [INFO] [Thread-128546] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:25.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:26.613 [DEBUG] [Thread-128546] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:26.614 [DEBUG] [Thread-128546] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:26.614 [DEBUG] [Thread-128546] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:39:26.654 [DEBUG] [Thread-128546] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:26.654 [DEBUG] [Thread-128546] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:26.657 [DEBUG] [Thread-128546] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:26.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:26.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:39:26.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:39:26.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:39:26.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:26.679 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:39:26.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:26.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:39:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.568832 -999.00  +18.60  12.08     37   +3.90 1 1 1 1 1   888    0 13.75 -28.42 ----- 12.1 12.1 232.5 22.2 23.6 -27.6 22.9 -25.9 24.5 -27.4 25.5 -28.2
2025-09-28T15:39:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:39:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:39:26.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.568832
2025-09-28T15:39:26.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:39:26.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:39:26.681 [DEBUG] [Thread-128546] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:26.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:39:26.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:39:26.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:39:26.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:39:04', tmtdew=16.19, humidity=33.67, cloud=0.0, wind=23.63, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:39:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:39:26.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-28T15:39:26.774 [DEBUG] [Thread-128549] [transport.py] [_log()] starting thread (client mode): 0x2b91fc10
2025-09-28T15:39:26.774 [DEBUG] [Thread-128549] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:26.788 [DEBUG] [Thread-128549] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:39:26.788 [INFO] [Thread-128549] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] Compression: none
2025-09-28T15:39:26.796 [DEBUG] [Thread-128549] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:26.856 [DEBUG] [Thread-128549] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:26.857 [DEBUG] [Thread-128549] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:26.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:39:26.858 [DEBUG] [Thread-128549] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:39:26.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:26.917 [DEBUG] [Thread-128549] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:26.917 [DEBUG] [Thread-128549] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:26.917 [DEBUG] [Thread-128549] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:26.917 [DEBUG] [Thread-128549] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:39:26.917 [DEBUG] [Thread-128549] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:26.939 [INFO] [Thread-128549] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:26.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-28T15:39:26.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:27.911 [DEBUG] [Thread-128549] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:27.911 [DEBUG] [Thread-128549] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:27.958 [DEBUG] [Thread-128549] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:27.959 [DEBUG] [Thread-128549] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:27.968 [DEBUG] [Thread-128549] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:27.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:27.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-28T15:39:27.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-28T15:39:27.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:27.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:27.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:28.002 [DEBUG] [Thread-128549] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:37.124 [DEBUG] [Thread-128551 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:38.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:39:38.005 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:39:38.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-28T15:39:38.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 39, 4), 16.19, 33.67, 0.0, 23.63, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:39:38.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:39:04
2025-09-28T15:39:38.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:39:38.876 [DEBUG] [Thread-128552] [transport.py] [_log()] starting thread (client mode): 0x2b954760
2025-09-28T15:39:38.876 [DEBUG] [Thread-128552] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:38.896 [DEBUG] [Thread-128552] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:39:38.896 [INFO] [Thread-128552] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:38.899 [DEBUG] [Thread-128552] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] Compression: none
2025-09-28T15:39:38.900 [DEBUG] [Thread-128552] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:38.917 [DEBUG] [Thread-128552] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:38.918 [DEBUG] [Thread-128552] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:38.918 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:39:38.918 [DEBUG] [Thread-128552] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:39:38.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:38.920 [DEBUG] [Thread-128552] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:38.920 [DEBUG] [Thread-128552] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:38.921 [DEBUG] [Thread-128552] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:38.921 [DEBUG] [Thread-128552] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:39:38.921 [DEBUG] [Thread-128552] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:38.955 [INFO] [Thread-128552] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:38.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:39.764 [DEBUG] [Thread-128552] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:39.765 [DEBUG] [Thread-128552] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:39.765 [DEBUG] [Thread-128552] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:39:39.805 [DEBUG] [Thread-128552] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:39.805 [DEBUG] [Thread-128552] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:39.808 [DEBUG] [Thread-128552] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:39.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:39.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:39:39.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:39:39.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:39:39.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:39.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:39:39.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:39.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:39.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:39:39.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.568832 -999.00  +18.60  12.08     37   +3.90 1 1 1 1 1   888    0 13.75 -28.42 ----- 12.1 12.1 232.5 22.2 23.6 -27.6 22.9 -25.9 24.5 -27.4 25.5 -28.2
2025-09-28T15:39:39.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:39:39.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:39:39.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.568832
2025-09-28T15:39:39.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:39:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:39:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:39:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:39:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:39:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:39:04', tmtdew=16.19, humidity=33.67, cloud=0.0, wind=23.63, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:39:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:39:39.833 [DEBUG] [Thread-128552] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:39.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-28T15:39:39.922 [DEBUG] [Thread-128555] [transport.py] [_log()] starting thread (client mode): 0x2e3f8af0
2025-09-28T15:39:39.922 [DEBUG] [Thread-128555] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:39.937 [DEBUG] [Thread-128555] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:39:39.938 [INFO] [Thread-128555] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:39.945 [DEBUG] [Thread-128555] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] Compression: none
2025-09-28T15:39:39.946 [DEBUG] [Thread-128555] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:40.003 [DEBUG] [Thread-128555] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:40.003 [DEBUG] [Thread-128555] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:40.004 [DEBUG] [Thread-128555] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:39:40.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:39:40.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:40.060 [DEBUG] [Thread-128555] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:40.060 [DEBUG] [Thread-128555] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:40.060 [DEBUG] [Thread-128555] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:40.061 [DEBUG] [Thread-128555] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:39:40.061 [DEBUG] [Thread-128555] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:40.074 [INFO] [Thread-128555] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:40.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-28T15:39:40.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:41.034 [DEBUG] [Thread-128555] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:41.035 [DEBUG] [Thread-128555] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:41.082 [DEBUG] [Thread-128555] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:41.083 [DEBUG] [Thread-128555] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:41.092 [DEBUG] [Thread-128555] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:41.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:41.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-28T15:39:41.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-28T15:39:41.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:41.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:41.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:41.128 [DEBUG] [Thread-128555] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:51.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:39:51.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:39:51.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:39:51.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 39, 36), 16.05, 33.93, 0.0, 20.29, 17.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:39:51.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:39:36
2025-09-28T15:39:51.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:39:52.013 [DEBUG] [Thread-128557] [transport.py] [_log()] starting thread (client mode): 0x2b94ed10
2025-09-28T15:39:52.013 [DEBUG] [Thread-128557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:52.033 [DEBUG] [Thread-128557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:39:52.033 [INFO] [Thread-128557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] Compression: none
2025-09-28T15:39:52.036 [DEBUG] [Thread-128557] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:52.054 [DEBUG] [Thread-128557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:52.054 [DEBUG] [Thread-128557] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:52.055 [DEBUG] [Thread-128557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:39:52.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:39:52.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:52.057 [DEBUG] [Thread-128557] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:52.057 [DEBUG] [Thread-128557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:52.057 [DEBUG] [Thread-128557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:52.058 [DEBUG] [Thread-128557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:39:52.058 [DEBUG] [Thread-128557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:52.076 [INFO] [Thread-128557] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:52.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:52.153 [DEBUG] [Thread-128559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:39:52.721 [DEBUG] [Thread-128557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:52.721 [DEBUG] [Thread-128557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:52.722 [DEBUG] [Thread-128557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:39:52.763 [DEBUG] [Thread-128557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:52.763 [DEBUG] [Thread-128557] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:52.765 [DEBUG] [Thread-128557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:52.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:52.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:39:52.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:39:52.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:39:52.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:52.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:39:52.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:52.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:39:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.569179 -999.00  +18.30   8.53     38   +3.80 1 1 1 1 1   888    0 13.68 -25.18 ----- 8.5 8.5 225.9 14.0 23.6 -28.3 22.9 -26.1 24.6 -26.5 25.5 -29.3
2025-09-28T15:39:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:39:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:39:52.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.569179
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:39:52.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:39:36', tmtdew=16.05, humidity=33.93, cloud=0.0, wind=20.29, temperature=17.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:39:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:39:52.790 [DEBUG] [Thread-128557] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:39:52.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-28T15:39:52.891 [DEBUG] [Thread-128561] [transport.py] [_log()] starting thread (client mode): 0x2b9579d0
2025-09-28T15:39:52.891 [DEBUG] [Thread-128561] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:39:52.906 [DEBUG] [Thread-128561] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:39:52.907 [INFO] [Thread-128561] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:39:52.914 [DEBUG] [Thread-128561] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:39:52.914 [DEBUG] [Thread-128561] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] client lang: <none>
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] server lang: <none>
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] kex follows: False
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] Compression: none
2025-09-28T15:39:52.915 [DEBUG] [Thread-128561] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:39:52.972 [DEBUG] [Thread-128561] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:39:52.973 [DEBUG] [Thread-128561] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:39:52.973 [DEBUG] [Thread-128561] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:39:52.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:39:52.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:39:53.029 [DEBUG] [Thread-128561] [transport.py] [_log()] userauth is OK
2025-09-28T15:39:53.029 [DEBUG] [Thread-128561] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:39:53.029 [DEBUG] [Thread-128561] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:39:53.029 [DEBUG] [Thread-128561] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:39:53.029 [DEBUG] [Thread-128561] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:39:53.048 [INFO] [Thread-128561] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:39:53.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-28T15:39:53.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:39:53.999 [DEBUG] [Thread-128561] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:39:54.000 [DEBUG] [Thread-128561] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:39:54.047 [DEBUG] [Thread-128561] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:39:54.048 [DEBUG] [Thread-128561] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:39:54.056 [DEBUG] [Thread-128561] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:39:54.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:39:54.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-28T15:39:54.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-28T15:39:54.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:39:54.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:39:54.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:39:54.092 [DEBUG] [Thread-128561] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:40:04.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:40:04.095 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:40:04.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-28T15:40:04.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 39, 36), 16.05, 33.93, 0.0, 20.29, 17.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:40:04.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:39:36
2025-09-28T15:40:04.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:40:04.976 [DEBUG] [Thread-128563] [transport.py] [_log()] starting thread (client mode): 0x2b91cd60
2025-09-28T15:40:04.977 [DEBUG] [Thread-128563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:40:04.996 [DEBUG] [Thread-128563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:40:04.997 [INFO] [Thread-128563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:05.000 [DEBUG] [Thread-128563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] client lang: <none>
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] server lang: <none>
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] kex follows: False
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] Compression: none
2025-09-28T15:40:05.001 [DEBUG] [Thread-128563] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:40:05.019 [DEBUG] [Thread-128563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:40:05.019 [DEBUG] [Thread-128563] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:40:05.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:40:05.021 [DEBUG] [Thread-128563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:40:05.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:40:05.022 [DEBUG] [Thread-128563] [transport.py] [_log()] userauth is OK
2025-09-28T15:40:05.022 [DEBUG] [Thread-128563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:40:05.023 [DEBUG] [Thread-128563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:40:05.023 [DEBUG] [Thread-128563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:40:05.023 [DEBUG] [Thread-128563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:40:05.046 [INFO] [Thread-128563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:40:05.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:40:07.186 [DEBUG] [Thread-128565 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:12.392 [DEBUG] [Thread-128563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:40:12.393 [DEBUG] [Thread-128563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:40:12.393 [DEBUG] [Thread-128563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:40:12.433 [DEBUG] [Thread-128563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:40:12.433 [DEBUG] [Thread-128563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:40:12.436 [DEBUG] [Thread-128563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:40:12.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:40:12.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:40:12.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:40:12.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:40:12.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:40:12.498 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:40:12.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:40:12.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.569179 -999.00  +18.30   8.53     38   +3.80 1 1 1 1 1   888    0 13.68 -25.18 ----- 8.5 8.5 225.9 14.0 23.6 -28.3 22.9 -26.1 24.6 -26.5 25.5 -29.3
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.569179
2025-09-28T15:40:12.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:40:12.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:40:12.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:40:12.500 [DEBUG] [Thread-128563] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:40:12.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:40:12.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:40:12.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:39:36', tmtdew=16.05, humidity=33.93, cloud=0.0, wind=20.29, temperature=17.65, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:39:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:40:12.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-28T15:40:12.598 [DEBUG] [Thread-128567] [transport.py] [_log()] starting thread (client mode): 0x2b954d90
2025-09-28T15:40:12.598 [DEBUG] [Thread-128567] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:40:12.613 [DEBUG] [Thread-128567] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:40:12.613 [INFO] [Thread-128567] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:40:12.621 [DEBUG] [Thread-128567] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:40:12.621 [DEBUG] [Thread-128567] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] client lang: <none>
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] server lang: <none>
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] kex follows: False
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] Compression: none
2025-09-28T15:40:12.622 [DEBUG] [Thread-128567] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:40:12.681 [DEBUG] [Thread-128567] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:40:12.681 [DEBUG] [Thread-128567] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:40:12.682 [DEBUG] [Thread-128567] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:40:12.682 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:40:12.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:40:12.737 [DEBUG] [Thread-128567] [transport.py] [_log()] userauth is OK
2025-09-28T15:40:12.737 [DEBUG] [Thread-128567] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:40:12.737 [DEBUG] [Thread-128567] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:40:12.737 [DEBUG] [Thread-128567] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:40:12.737 [DEBUG] [Thread-128567] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:40:12.756 [INFO] [Thread-128567] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:40:12.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:40:12.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:40:13.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:13.614 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:13.743 [DEBUG] [Thread-128567] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:40:13.743 [DEBUG] [Thread-128567] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:40:13.791 [DEBUG] [Thread-128567] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:40:13.791 [DEBUG] [Thread-128567] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:40:13.800 [DEBUG] [Thread-128567] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:40:13.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:40:13.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-28T15:40:13.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-28T15:40:13.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:40:13.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:40:13.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:40:13.834 [DEBUG] [Thread-128567] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:40:18.524 [DEBUG] [Thread-128569 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:22.235 [DEBUG] [Thread-128570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:23.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:40:23.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:40:23.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-28T15:40:24.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 40, 7), 16.12, 33.79, 0.0, 19.41, 17.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:40:24.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:40:07
2025-09-28T15:40:24.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:40:24.694 [DEBUG] [Thread-128571] [transport.py] [_log()] starting thread (client mode): 0x2e38ed10
2025-09-28T15:40:24.694 [DEBUG] [Thread-128571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:40:24.712 [DEBUG] [Thread-128571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:40:24.712 [INFO] [Thread-128571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:24.714 [DEBUG] [Thread-128571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] client lang: <none>
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] server lang: <none>
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] kex follows: False
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] Compression: none
2025-09-28T15:40:24.715 [DEBUG] [Thread-128571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:40:24.731 [DEBUG] [Thread-128571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:40:24.732 [DEBUG] [Thread-128571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:40:24.732 [DEBUG] [Thread-128571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:40:24.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:40:24.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:40:24.735 [DEBUG] [Thread-128571] [transport.py] [_log()] userauth is OK
2025-09-28T15:40:24.735 [DEBUG] [Thread-128571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:40:24.735 [DEBUG] [Thread-128571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:40:24.735 [DEBUG] [Thread-128571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:40:24.735 [DEBUG] [Thread-128571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:40:24.759 [INFO] [Thread-128571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:40:24.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:40:25.347 [DEBUG] [Thread-128571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:40:25.347 [DEBUG] [Thread-128571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:40:25.348 [DEBUG] [Thread-128571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:40:25.388 [DEBUG] [Thread-128571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:40:25.388 [DEBUG] [Thread-128571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:40:25.391 [DEBUG] [Thread-128571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:40:25.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:40:25.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:40:25.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:40:25.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:40:25.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:40:25.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:40:25.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:40:25.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:40:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:40:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.569526 -999.00  +18.60  12.39     38   +4.10 1 1 1 1 1   888    0 13.88 -20.73 ----- 12.4 12.4 186.2 18.8 23.7 -27.4 23.0 -25.9 24.6 -25.5 25.6 -27.5
2025-09-28T15:40:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:40:25.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:40:25.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.569526
2025-09-28T15:40:25.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:40:25.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:40:25.416 [DEBUG] [Thread-128571] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:40:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:40:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:40:25.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:40:25.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:40:07', tmtdew=16.12, humidity=33.79, cloud=0.0, wind=19.41, temperature=17.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:40:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:40: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-28T15:40:37.263 [DEBUG] [Thread-128574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:40:52.297 [DEBUG] [Thread-128575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:07.326 [DEBUG] [Thread-128576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:13.758 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:13.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:18.583 [DEBUG] [Thread-128577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:22.361 [DEBUG] [Thread-128578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:37.392 [DEBUG] [Thread-128579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:41:52.418 [DEBUG] [Thread-128580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:07.446 [DEBUG] [Thread-128581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:13.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:13.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:18.641 [DEBUG] [Thread-128582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:22.477 [DEBUG] [Thread-128583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:37.508 [DEBUG] [Thread-128584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:42:39.035 [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-28T15:42:49.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:42:49.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:42:49.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:42:49.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 42, 15), 16.75, 32.51, 0.0, 21.88, 18.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:42:49.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:42:15
2025-09-28T15:42:49.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:42:49.950 [DEBUG] [Thread-128585] [transport.py] [_log()] starting thread (client mode): 0x2e362fe0
2025-09-28T15:42:49.950 [DEBUG] [Thread-128585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:42:49.971 [DEBUG] [Thread-128585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:42:49.971 [INFO] [Thread-128585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:42:49.973 [DEBUG] [Thread-128585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] client lang: <none>
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] server lang: <none>
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] kex follows: False
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] Compression: none
2025-09-28T15:42:49.974 [DEBUG] [Thread-128585] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:42:49.984 [DEBUG] [Thread-128585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:42:49.985 [DEBUG] [Thread-128585] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:42:49.985 [DEBUG] [Thread-128585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:42:49.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:42:49.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:42:49.989 [DEBUG] [Thread-128585] [transport.py] [_log()] userauth is OK
2025-09-28T15:42:49.990 [DEBUG] [Thread-128585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:42:49.990 [DEBUG] [Thread-128585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:42:49.990 [DEBUG] [Thread-128585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:42:49.990 [DEBUG] [Thread-128585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:42:50.013 [INFO] [Thread-128585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:42:50.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:42:50.643 [DEBUG] [Thread-128585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:42:50.643 [DEBUG] [Thread-128585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:42:50.644 [DEBUG] [Thread-128585] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:42:50.684 [DEBUG] [Thread-128585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:42:50.684 [DEBUG] [Thread-128585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:42:50.688 [DEBUG] [Thread-128585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:42:50.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:42:50.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:42:50.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:42:50.698 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:42:50.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:42:50.705 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:42:50.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:42:50.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:42:50.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:42:50.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.570915 -999.00  +19.00  12.59     37   +4.00 1 1 1 1 1   888    0 14.24 -7.46 ----- 12.6 12.6 211.4 17.5 23.9 -26.5 23.2 -25.5 24.8 -26.0 25.8 -27.6
2025-09-28T15:42:50.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:42:50.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:42:50.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.570915
2025-09-28T15:42:50.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:42:50.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:42:50.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:42:50.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:42:50.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:42:50.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:42:15', tmtdew=16.75, humidity=32.51, cloud=0.0, wind=21.88, temperature=18.2, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:42:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:42:50.707 [DEBUG] [Thread-128585] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:42:50.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-28T15:42:50.806 [DEBUG] [Thread-128588] [transport.py] [_log()] starting thread (client mode): 0x2e38d360
2025-09-28T15:42:50.806 [DEBUG] [Thread-128588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:42:50.822 [DEBUG] [Thread-128588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:42:50.822 [INFO] [Thread-128588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:42:50.829 [DEBUG] [Thread-128588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:42:50.830 [DEBUG] [Thread-128588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:42:50.830 [DEBUG] [Thread-128588] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:42:50.830 [DEBUG] [Thread-128588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:42:50.830 [DEBUG] [Thread-128588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:42:50.830 [DEBUG] [Thread-128588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] client lang: <none>
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] server lang: <none>
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] kex follows: False
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] Compression: none
2025-09-28T15:42:50.831 [DEBUG] [Thread-128588] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:42:50.889 [DEBUG] [Thread-128588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:42:50.889 [DEBUG] [Thread-128588] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:42:50.890 [DEBUG] [Thread-128588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:42:50.890 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:42:50.891 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:42:50.945 [DEBUG] [Thread-128588] [transport.py] [_log()] userauth is OK
2025-09-28T15:42:50.945 [DEBUG] [Thread-128588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:42:50.945 [DEBUG] [Thread-128588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:42:50.945 [DEBUG] [Thread-128588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:42:50.946 [DEBUG] [Thread-128588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:42:50.965 [INFO] [Thread-128588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:42:50.965 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:42:50.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:42:51.926 [DEBUG] [Thread-128588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:42:51.926 [DEBUG] [Thread-128588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:42:51.974 [DEBUG] [Thread-128588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:42:51.974 [DEBUG] [Thread-128588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:42:51.982 [DEBUG] [Thread-128588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:42:51.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:42:51.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T15:42:51.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') -> 00000000
2025-09-28T15:42:52.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:42:52.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:42:52.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:42:52.014 [DEBUG] [Thread-128588] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:42:52.539 [DEBUG] [Thread-128590 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:02.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:43:02.013 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:43:02.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-28T15:43:02.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 42, 47), 16.63, 32.73, 0.0, 19.39, 18.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:43:02.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:42:47
2025-09-28T15:43:02.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:43:02.947 [DEBUG] [Thread-128591] [transport.py] [_log()] starting thread (client mode): 0x2e3fa620
2025-09-28T15:43:02.947 [DEBUG] [Thread-128591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:43:02.963 [DEBUG] [Thread-128591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:43:02.963 [INFO] [Thread-128591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:43:02.966 [DEBUG] [Thread-128591] [transport.py] [_log()] client lang: <none>
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] server lang: <none>
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] kex follows: False
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] Compression: none
2025-09-28T15:43:02.967 [DEBUG] [Thread-128591] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:43:02.974 [DEBUG] [Thread-128591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:43:02.974 [DEBUG] [Thread-128591] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:43:02.974 [DEBUG] [Thread-128591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:43:02.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:43:02.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:43:02.975 [DEBUG] [Thread-128591] [transport.py] [_log()] userauth is OK
2025-09-28T15:43:02.975 [DEBUG] [Thread-128591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:43:02.975 [DEBUG] [Thread-128591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:43:02.975 [DEBUG] [Thread-128591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:43:02.975 [DEBUG] [Thread-128591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:43:02.985 [INFO] [Thread-128591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:43:02.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:43:03.615 [DEBUG] [Thread-128591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:43:03.615 [DEBUG] [Thread-128591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:43:03.615 [DEBUG] [Thread-128591] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:43:03.656 [DEBUG] [Thread-128591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:43:03.656 [DEBUG] [Thread-128591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:43:03.658 [DEBUG] [Thread-128591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:43:03.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:43:03.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:43:03.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:43:03.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:43:03.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:43:03.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:43:03.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.570915 -999.00  +19.00  12.59     37   +4.00 1 1 1 1 1   888    0 14.24 -7.46 ----- 12.6 12.6 211.4 17.5 23.9 -26.5 23.2 -25.5 24.8 -26.0 25.8 -27.6
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.570915
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:43:03.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:42:47', tmtdew=16.63, humidity=32.73, cloud=0.0, wind=19.39, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:42:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:43:03.678 [DEBUG] [Thread-128591] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:43: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-28T15:43:03.761 [DEBUG] [Thread-128594] [transport.py] [_log()] starting thread (client mode): 0x2b9bba60
2025-09-28T15:43:03.761 [DEBUG] [Thread-128594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:43:03.776 [DEBUG] [Thread-128594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:43:03.776 [INFO] [Thread-128594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:43:03.783 [DEBUG] [Thread-128594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] client lang: <none>
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] server lang: <none>
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] kex follows: False
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] Compression: none
2025-09-28T15:43:03.784 [DEBUG] [Thread-128594] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:43:03.840 [DEBUG] [Thread-128594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:43:03.840 [DEBUG] [Thread-128594] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:43:03.840 [DEBUG] [Thread-128594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:43:03.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:43:03.840 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:43:03.897 [DEBUG] [Thread-128594] [transport.py] [_log()] userauth is OK
2025-09-28T15:43:03.897 [DEBUG] [Thread-128594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:43:03.897 [DEBUG] [Thread-128594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:43:03.897 [DEBUG] [Thread-128594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:43:03.897 [DEBUG] [Thread-128594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:43:03.913 [INFO] [Thread-128594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:43:03.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-28T15:43:03.913 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:43:04.898 [DEBUG] [Thread-128594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:43:04.898 [DEBUG] [Thread-128594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:43:04.946 [DEBUG] [Thread-128594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:43:04.946 [DEBUG] [Thread-128594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:43:04.954 [DEBUG] [Thread-128594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:43:04.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:43:04.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-28T15:43:04.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-28T15:43:04.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:43:04.978 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:43:04.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:43:04.985 [DEBUG] [Thread-128594] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:43:07.593 [DEBUG] [Thread-128596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:14.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:14.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:14.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:43:14.988 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:43:14.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-28T15:43:15.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 42, 47), 16.63, 32.73, 0.0, 19.39, 18.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:43:15.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:42:47
2025-09-28T15:43:15.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:43:15.851 [DEBUG] [Thread-128597] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-28T15:43:15.851 [DEBUG] [Thread-128597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:43:15.865 [DEBUG] [Thread-128597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:43:15.865 [INFO] [Thread-128597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:15.868 [DEBUG] [Thread-128597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] client lang: <none>
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] server lang: <none>
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] kex follows: False
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] Compression: none
2025-09-28T15:43:15.869 [DEBUG] [Thread-128597] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:43:15.879 [DEBUG] [Thread-128597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:43:15.879 [DEBUG] [Thread-128597] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:43:15.879 [DEBUG] [Thread-128597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:43:15.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:43:15.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:43:15.881 [DEBUG] [Thread-128597] [transport.py] [_log()] userauth is OK
2025-09-28T15:43:15.881 [DEBUG] [Thread-128597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:43:15.881 [DEBUG] [Thread-128597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:43:15.881 [DEBUG] [Thread-128597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:43:15.881 [DEBUG] [Thread-128597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:43:15.897 [INFO] [Thread-128597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:43:15.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:43:16.482 [DEBUG] [Thread-128597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:43:16.483 [DEBUG] [Thread-128597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:43:16.483 [DEBUG] [Thread-128597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:43:16.523 [DEBUG] [Thread-128597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:43:16.524 [DEBUG] [Thread-128597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:43:16.527 [DEBUG] [Thread-128597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:43:16.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:43:16.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:43:16.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:43:16.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:43:16.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:43:16.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:43:16.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:43:16.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.571262 -999.00  +18.90  10.96     37   +4.10 1 1 1 1 1   888    0 14.44 -2.44 ----- 11.0 11.0 185.8 24.8 23.9 -27.9 23.1 -28.2 24.8 -26.4 25.9 -29.9
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.571262
2025-09-28T15:43:16.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:43:16.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:43:16.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:43:16.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:43:16.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:43:16.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:42:47', tmtdew=16.63, humidity=32.73, cloud=0.0, wind=19.39, temperature=18.15, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:42:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:43:16.553 [DEBUG] [Thread-128597] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:43:16.642 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:43:16.653 [DEBUG] [Thread-128600] [transport.py] [_log()] starting thread (client mode): 0x2b954ee0
2025-09-28T15:43:16.653 [DEBUG] [Thread-128600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:43:16.668 [DEBUG] [Thread-128600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:43:16.668 [INFO] [Thread-128600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:43:16.675 [DEBUG] [Thread-128600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:43:16.675 [DEBUG] [Thread-128600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] client lang: <none>
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] server lang: <none>
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] kex follows: False
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] Compression: none
2025-09-28T15:43:16.676 [DEBUG] [Thread-128600] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:43:16.733 [DEBUG] [Thread-128600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:43:16.733 [DEBUG] [Thread-128600] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:43:16.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:43:16.735 [DEBUG] [Thread-128600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:43:16.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:43:16.793 [DEBUG] [Thread-128600] [transport.py] [_log()] userauth is OK
2025-09-28T15:43:16.793 [DEBUG] [Thread-128600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:43:16.793 [DEBUG] [Thread-128600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:43:16.793 [DEBUG] [Thread-128600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:43:16.794 [DEBUG] [Thread-128600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:43:16.819 [INFO] [Thread-128600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:43:16.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-28T15:43:16.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:43:17.779 [DEBUG] [Thread-128600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:43:17.780 [DEBUG] [Thread-128600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:43:17.827 [DEBUG] [Thread-128600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:43:17.827 [DEBUG] [Thread-128600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:43:17.836 [DEBUG] [Thread-128600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:43:17.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:43:17.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-28T15:43:17.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-28T15:43:17.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:43:17.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:43:17.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:43:17.871 [DEBUG] [Thread-128600] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:43:18.695 [DEBUG] [Thread-128602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:22.647 [DEBUG] [Thread-128603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:27.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:43:27.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:43:27.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-28T15:43:28.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 43, 19), 16.41, 33.19, 0.0, 20.22, 18.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:43:28.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:43:19
2025-09-28T15:43:28.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:43:28.737 [DEBUG] [Thread-128604] [transport.py] [_log()] starting thread (client mode): 0x2e363ac0
2025-09-28T15:43:28.737 [DEBUG] [Thread-128604] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:43:28.757 [DEBUG] [Thread-128604] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:43:28.757 [INFO] [Thread-128604] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] client lang: <none>
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] server lang: <none>
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] kex follows: False
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] Compression: none
2025-09-28T15:43:28.760 [DEBUG] [Thread-128604] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:43:28.779 [DEBUG] [Thread-128604] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:43:28.779 [DEBUG] [Thread-128604] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:43:28.780 [DEBUG] [Thread-128604] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:43:28.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:43:28.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:43:28.782 [DEBUG] [Thread-128604] [transport.py] [_log()] userauth is OK
2025-09-28T15:43:28.782 [DEBUG] [Thread-128604] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:43:28.782 [DEBUG] [Thread-128604] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:43:28.782 [DEBUG] [Thread-128604] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:43:28.782 [DEBUG] [Thread-128604] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:43:28.805 [INFO] [Thread-128604] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:43:28.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:43:29.534 [DEBUG] [Thread-128604] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:43:29.534 [DEBUG] [Thread-128604] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:43:29.534 [DEBUG] [Thread-128604] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:43:29.575 [DEBUG] [Thread-128604] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:43:29.575 [DEBUG] [Thread-128604] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:43:29.578 [DEBUG] [Thread-128604] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:43:29.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:43:29.592 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:43:29.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:43:29.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:43:29.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:43:29.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:43:29.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:43:29.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:43:29.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:43:29.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.571262 -999.00  +18.90  10.96     37   +4.10 1 1 1 1 1   888    0 14.44 -2.44 ----- 11.0 11.0 185.8 24.8 23.9 -27.9 23.1 -28.2 24.8 -26.4 25.9 -29.9
2025-09-28T15:43:29.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:43:29.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:43:29.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.571262
2025-09-28T15:43:29.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:43:29.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:43:29.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:43:29.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:43:29.605 [DEBUG] [Thread-128604] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:43:29.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:43:29.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:43:19', tmtdew=16.41, humidity=33.19, cloud=0.0, wind=20.22, temperature=18.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:42:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:43:29.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-28T15:43:37.690 [DEBUG] [Thread-128607 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:43:52.729 [DEBUG] [Thread-128608 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:07.757 [DEBUG] [Thread-128609 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:14.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:14.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:18.743 [DEBUG] [Thread-128610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:22.784 [DEBUG] [Thread-128611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:37.815 [DEBUG] [Thread-128612 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:44:52.844 [DEBUG] [Thread-128613 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:07.869 [DEBUG] [Thread-128614 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:14.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:14.331 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:18.796 [DEBUG] [Thread-128615 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:22.902 [DEBUG] [Thread-128616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:37.931 [DEBUG] [Thread-128617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:43.355 [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-28T15:45:52.966 [DEBUG] [Thread-128618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:45:53.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:45:53.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:45: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-28T15:45:53.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 45, 26), 16.38, 33.37, 0.0, 24.72, 18.05, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:45:53.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:45:26
2025-09-28T15:45:54.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:45:54.235 [DEBUG] [Thread-128619] [transport.py] [_log()] starting thread (client mode): 0x2e360430
2025-09-28T15:45:54.235 [DEBUG] [Thread-128619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:45:54.255 [DEBUG] [Thread-128619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:45:54.255 [INFO] [Thread-128619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:45:54.258 [DEBUG] [Thread-128619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:45:54.258 [DEBUG] [Thread-128619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] client lang: <none>
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] server lang: <none>
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] kex follows: False
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] Compression: none
2025-09-28T15:45:54.259 [DEBUG] [Thread-128619] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:45:54.274 [DEBUG] [Thread-128619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:45:54.275 [DEBUG] [Thread-128619] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:45:54.275 [DEBUG] [Thread-128619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:45:54.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:45:54.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:45:54.317 [DEBUG] [Thread-128619] [transport.py] [_log()] userauth is OK
2025-09-28T15:45:54.317 [DEBUG] [Thread-128619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:45:54.317 [DEBUG] [Thread-128619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:45:54.317 [DEBUG] [Thread-128619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:45:54.317 [DEBUG] [Thread-128619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:45:54.342 [INFO] [Thread-128619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:45:54.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:45:54.980 [DEBUG] [Thread-128619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:45:54.980 [DEBUG] [Thread-128619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:45:54.981 [DEBUG] [Thread-128619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:45:55.021 [DEBUG] [Thread-128619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:45:55.021 [DEBUG] [Thread-128619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:45:55.024 [DEBUG] [Thread-128619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:45:55.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:45:55.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:45:55.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:45:55.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:45:55.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:45:55.047 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:45:55.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.572998 -999.00  +19.10   8.82     37   +4.30 1 1 1 1 1   888    0 15.05 14.45 ----- 8.8 8.8 213.7 17.6 23.9 -27.2 23.1 -26.5 24.8 -25.6 25.8 -28.2
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:45:55.048 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.572998
2025-09-28T15:45:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:45:55.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:45:55.050 [DEBUG] [Thread-128619] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:45:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:45:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:45:55.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:45:55.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:45:26', tmtdew=16.38, humidity=33.37, cloud=0.0, wind=24.72, temperature=18.05, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:45:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:45:55.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:45:55.139 [DEBUG] [Thread-128622] [transport.py] [_log()] starting thread (client mode): 0x2e362fe0
2025-09-28T15:45:55.140 [DEBUG] [Thread-128622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:45:55.154 [DEBUG] [Thread-128622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:45:55.154 [INFO] [Thread-128622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:45:55.161 [DEBUG] [Thread-128622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] client lang: <none>
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] server lang: <none>
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] kex follows: False
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] Compression: none
2025-09-28T15:45:55.162 [DEBUG] [Thread-128622] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:45:55.221 [DEBUG] [Thread-128622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:45:55.221 [DEBUG] [Thread-128622] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:45:55.222 [DEBUG] [Thread-128622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:45:55.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:45:55.223 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:45:55.277 [DEBUG] [Thread-128622] [transport.py] [_log()] userauth is OK
2025-09-28T15:45:55.277 [DEBUG] [Thread-128622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:45:55.277 [DEBUG] [Thread-128622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:45:55.277 [DEBUG] [Thread-128622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:45:55.277 [DEBUG] [Thread-128622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:45:55.295 [INFO] [Thread-128622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:45:55.296 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:45:55.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:45:56.243 [DEBUG] [Thread-128622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:45:56.244 [DEBUG] [Thread-128622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:45:56.291 [DEBUG] [Thread-128622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:45:56.291 [DEBUG] [Thread-128622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:45:56.300 [DEBUG] [Thread-128622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:45:56.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:45:56.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-28T15:45:56.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-28T15:45:56.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:45:56.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:45:56.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:45:56.335 [DEBUG] [Thread-128622] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:06.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:46:06.337 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:46:06.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:46:06.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 45, 58), 16.1, 33.64, 0.0, 20.54, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:46:06.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:45:58
2025-09-28T15:46:07.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:46:07.216 [DEBUG] [Thread-128624] [transport.py] [_log()] starting thread (client mode): 0x2b9bbb80
2025-09-28T15:46:07.216 [DEBUG] [Thread-128624] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:07.235 [DEBUG] [Thread-128624] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:46:07.235 [INFO] [Thread-128624] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] Compression: none
2025-09-28T15:46:07.239 [DEBUG] [Thread-128624] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:07.247 [DEBUG] [Thread-128624] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:07.247 [DEBUG] [Thread-128624] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:07.247 [DEBUG] [Thread-128624] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:46:07.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:46:07.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:07.248 [DEBUG] [Thread-128624] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:07.248 [DEBUG] [Thread-128624] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:07.248 [DEBUG] [Thread-128624] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:07.249 [DEBUG] [Thread-128624] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:46:07.249 [DEBUG] [Thread-128624] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:07.259 [INFO] [Thread-128624] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:07.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:07.890 [DEBUG] [Thread-128624] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:07.890 [DEBUG] [Thread-128624] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:07.891 [DEBUG] [Thread-128624] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:46:07.932 [DEBUG] [Thread-128624] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:07.932 [DEBUG] [Thread-128624] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:07.935 [DEBUG] [Thread-128624] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:07.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:07.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:46:07.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:46:07.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:46:07.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:07.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:46:07.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.573346 -999.00  +19.00  14.22     37   +4.10 1 1 1 1 1   888    0 15.15 14.89 ----- 14.2 14.2 226.4 24.8 23.9 -28.5 23.2 -26.6 24.8 -26.3 25.8 -28.8
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.573346
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:46:07.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:45:58', tmtdew=16.1, humidity=33.64, cloud=0.0, wind=20.54, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:45:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:46:07.953 [DEBUG] [Thread-128624] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:07.994 [DEBUG] [Thread-128627 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:08.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-28T15:46:08.036 [DEBUG] [Thread-128628] [transport.py] [_log()] starting thread (client mode): 0x2e3fae90
2025-09-28T15:46:08.036 [DEBUG] [Thread-128628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:08.052 [DEBUG] [Thread-128628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:46:08.052 [INFO] [Thread-128628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:08.059 [DEBUG] [Thread-128628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:08.060 [DEBUG] [Thread-128628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:08.060 [DEBUG] [Thread-128628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:08.060 [DEBUG] [Thread-128628] [transport.py] [_log()] Compression: none
2025-09-28T15:46:08.060 [DEBUG] [Thread-128628] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:08.115 [DEBUG] [Thread-128628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:08.116 [DEBUG] [Thread-128628] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:08.116 [DEBUG] [Thread-128628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:46:08.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:46:08.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:08.173 [DEBUG] [Thread-128628] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:08.173 [DEBUG] [Thread-128628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:08.173 [DEBUG] [Thread-128628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:08.173 [DEBUG] [Thread-128628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:46:08.173 [DEBUG] [Thread-128628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:08.187 [INFO] [Thread-128628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:08.187 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:46:08.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:09.112 [DEBUG] [Thread-128628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:09.112 [DEBUG] [Thread-128628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:09.160 [DEBUG] [Thread-128628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:09.160 [DEBUG] [Thread-128628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:09.168 [DEBUG] [Thread-128628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:09.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:09.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-28T15:46:09.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') -> 00000000
2025-09-28T15:46:09.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:09.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:09.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:09.204 [DEBUG] [Thread-128628] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:14.475 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:14.476 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:18.855 [DEBUG] [Thread-128630 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:19.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:46:19.204 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:46:19.206 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:46:19.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 45, 58), 16.1, 33.64, 0.0, 20.54, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:46:19.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:45:58
2025-09-28T15:46:19.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:46:20.064 [DEBUG] [Thread-128631] [transport.py] [_log()] starting thread (client mode): 0x30dde4a0
2025-09-28T15:46:20.064 [DEBUG] [Thread-128631] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:20.084 [DEBUG] [Thread-128631] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:46:20.084 [INFO] [Thread-128631] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:46:20.087 [DEBUG] [Thread-128631] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:20.087 [DEBUG] [Thread-128631] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:20.088 [DEBUG] [Thread-128631] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:20.089 [DEBUG] [Thread-128631] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:20.089 [DEBUG] [Thread-128631] [transport.py] [_log()] Compression: none
2025-09-28T15:46:20.089 [DEBUG] [Thread-128631] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:20.107 [DEBUG] [Thread-128631] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:20.107 [DEBUG] [Thread-128631] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:20.108 [DEBUG] [Thread-128631] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:46:20.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:46:20.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:20.109 [DEBUG] [Thread-128631] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:20.110 [DEBUG] [Thread-128631] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:20.110 [DEBUG] [Thread-128631] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:20.110 [DEBUG] [Thread-128631] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:46:20.110 [DEBUG] [Thread-128631] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:20.128 [INFO] [Thread-128631] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:20.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:20.753 [DEBUG] [Thread-128631] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:20.753 [DEBUG] [Thread-128631] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:20.753 [DEBUG] [Thread-128631] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:46:20.794 [DEBUG] [Thread-128631] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:20.794 [DEBUG] [Thread-128631] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:20.797 [DEBUG] [Thread-128631] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:20.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:20.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:46:20.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:46:20.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:46:20.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:20.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:46:20.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:20.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:20.820 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:46:20.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.573346 -999.00  +19.00  14.22     37   +4.10 1 1 1 1 1   888    0 15.15 14.89 ----- 14.2 14.2 226.4 24.8 23.9 -28.5 23.2 -26.6 24.8 -26.3 25.8 -28.8
2025-09-28T15:46:20.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:46:20.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:46:20.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.573346
2025-09-28T15:46:20.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:46:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:46:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:46:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:46:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:46:20.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:45:58', tmtdew=16.1, humidity=33.64, cloud=0.0, wind=20.54, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:45:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:46:20.822 [DEBUG] [Thread-128631] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:20.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-28T15:46:20.918 [DEBUG] [Thread-128634] [transport.py] [_log()] starting thread (client mode): 0x2e34a500
2025-09-28T15:46:20.918 [DEBUG] [Thread-128634] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:20.933 [DEBUG] [Thread-128634] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:46:20.933 [INFO] [Thread-128634] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:46:20.940 [DEBUG] [Thread-128634] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] Compression: none
2025-09-28T15:46:20.941 [DEBUG] [Thread-128634] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:20.996 [DEBUG] [Thread-128634] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:20.997 [DEBUG] [Thread-128634] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:20.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:46:20.998 [DEBUG] [Thread-128634] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:46:20.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:21.053 [DEBUG] [Thread-128634] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:21.053 [DEBUG] [Thread-128634] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:21.053 [DEBUG] [Thread-128634] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:21.053 [DEBUG] [Thread-128634] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:46:21.053 [DEBUG] [Thread-128634] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:21.071 [INFO] [Thread-128634] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:21.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-28T15:46:21.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:21.997 [DEBUG] [Thread-128634] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:21.998 [DEBUG] [Thread-128634] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:22.045 [DEBUG] [Thread-128634] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:22.045 [DEBUG] [Thread-128634] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:22.054 [DEBUG] [Thread-128634] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:22.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46: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')
2025-09-28T15:46:22.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-28T15:46:22.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:22.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:22.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:22.090 [DEBUG] [Thread-128634] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:23.031 [DEBUG] [Thread-128636 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:32.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:46:32.092 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:46:32.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-28T15:46:32.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 45, 58), 16.1, 33.64, 0.0, 20.54, 17.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:46:32.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:45:58
2025-09-28T15:46:32.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:46:33.003 [DEBUG] [Thread-128637] [transport.py] [_log()] starting thread (client mode): 0x2e3488e0
2025-09-28T15:46:33.003 [DEBUG] [Thread-128637] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:33.022 [DEBUG] [Thread-128637] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:46:33.022 [INFO] [Thread-128637] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:33.025 [DEBUG] [Thread-128637] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] Compression: none
2025-09-28T15:46:33.026 [DEBUG] [Thread-128637] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:33.035 [DEBUG] [Thread-128637] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:33.036 [DEBUG] [Thread-128637] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:33.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:46:33.037 [DEBUG] [Thread-128637] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:46:33.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:33.039 [DEBUG] [Thread-128637] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:33.040 [DEBUG] [Thread-128637] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:33.040 [DEBUG] [Thread-128637] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:33.040 [DEBUG] [Thread-128637] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:46:33.040 [DEBUG] [Thread-128637] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:33.079 [INFO] [Thread-128637] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:33.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:33.744 [DEBUG] [Thread-128637] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:33.744 [DEBUG] [Thread-128637] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:33.744 [DEBUG] [Thread-128637] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:46:33.785 [DEBUG] [Thread-128637] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:33.786 [DEBUG] [Thread-128637] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:33.789 [DEBUG] [Thread-128637] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:33.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:33.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:46:33.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:46:33.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:46:33.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:33.813 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:46:33.813 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:33.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:46:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.573693 -999.00  +18.80  13.05     38   +4.20 1 1 1 1 1   888    0 15.15 16.17 ----- 13.1 13.1 202.5 21.4 23.8 -27.7 23.2 -26.7 24.7 -27.0 25.7 -28.1
2025-09-28T15:46:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:46:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:46:33.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.573693
2025-09-28T15:46:33.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:46:33.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:46:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:46:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:46:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:46:33.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:45:58', tmtdew=16.1, humidity=33.64, cloud=0.0, wind=20.54, temperature=17.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:46:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:46:33.816 [DEBUG] [Thread-128637] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:33.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-28T15:46:33.911 [DEBUG] [Thread-128640] [transport.py] [_log()] starting thread (client mode): 0x2e363640
2025-09-28T15:46:33.911 [DEBUG] [Thread-128640] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:33.926 [DEBUG] [Thread-128640] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:46:33.926 [INFO] [Thread-128640] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:46:33.933 [DEBUG] [Thread-128640] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:33.933 [DEBUG] [Thread-128640] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:46:33.933 [DEBUG] [Thread-128640] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] Compression: none
2025-09-28T15:46:33.934 [DEBUG] [Thread-128640] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:33.992 [DEBUG] [Thread-128640] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:33.992 [DEBUG] [Thread-128640] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:33.993 [DEBUG] [Thread-128640] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:46:33.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:46:33.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:34.049 [DEBUG] [Thread-128640] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:34.049 [DEBUG] [Thread-128640] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:34.049 [DEBUG] [Thread-128640] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:34.049 [DEBUG] [Thread-128640] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:46:34.049 [DEBUG] [Thread-128640] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:34.068 [INFO] [Thread-128640] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:34.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-28T15:46:34.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:35.013 [DEBUG] [Thread-128640] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:35.013 [DEBUG] [Thread-128640] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:35.061 [DEBUG] [Thread-128640] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:35.061 [DEBUG] [Thread-128640] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:35.070 [DEBUG] [Thread-128640] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:35.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:35.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-28T15:46:35.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-28T15:46:35.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:35.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:35.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:35.104 [DEBUG] [Thread-128640] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:38.057 [DEBUG] [Thread-128642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:45.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:46:45.106 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:46:45.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-28T15:46:45.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 46, 30), 16.04, 33.8, 0.0, 21.05, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:46:45.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:46:30
2025-09-28T15:46:45.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:46:46.012 [DEBUG] [Thread-128643] [transport.py] [_log()] starting thread (client mode): 0x2e3dded0
2025-09-28T15:46:46.012 [DEBUG] [Thread-128643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:46.033 [DEBUG] [Thread-128643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:46:46.033 [INFO] [Thread-128643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:46.036 [DEBUG] [Thread-128643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] Compression: none
2025-09-28T15:46:46.037 [DEBUG] [Thread-128643] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:46.048 [DEBUG] [Thread-128643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:46:46.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:46:46.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:46:46.049 [DEBUG] [Thread-128643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:46.065 [INFO] [Thread-128643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:46.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:46.698 [DEBUG] [Thread-128643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:46.698 [DEBUG] [Thread-128643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:46.698 [DEBUG] [Thread-128643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:46:46.739 [DEBUG] [Thread-128643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:46.739 [DEBUG] [Thread-128643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:46.741 [DEBUG] [Thread-128643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:46.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:46.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:46:46.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:46:46.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:46:46.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:46.760 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:46:46.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.573693 -999.00  +18.80  13.05     38   +4.20 1 1 1 1 1   888    0 15.15 16.17 ----- 13.1 13.1 202.5 21.4 23.8 -27.7 23.2 -26.7 24.7 -27.0 25.7 -28.1
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.573693
2025-09-28T15:46:46.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:46:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:46:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:46:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:46:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:46:46.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:46:30', tmtdew=16.04, humidity=33.8, cloud=0.0, wind=21.05, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:46:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:46:46.761 [DEBUG] [Thread-128643] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:46.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-28T15:46:46.847 [DEBUG] [Thread-128646] [transport.py] [_log()] starting thread (client mode): 0x2e3dfca0
2025-09-28T15:46:46.848 [DEBUG] [Thread-128646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:46.862 [DEBUG] [Thread-128646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:46:46.862 [INFO] [Thread-128646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] Compression: none
2025-09-28T15:46:46.870 [DEBUG] [Thread-128646] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:46.927 [DEBUG] [Thread-128646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:46.927 [DEBUG] [Thread-128646] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:46.927 [DEBUG] [Thread-128646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:46:46.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:46:46.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:46.984 [DEBUG] [Thread-128646] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:46.984 [DEBUG] [Thread-128646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:46.984 [DEBUG] [Thread-128646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:46.984 [DEBUG] [Thread-128646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:46:46.985 [DEBUG] [Thread-128646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:46.998 [INFO] [Thread-128646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:46.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-28T15:46:46.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:47.952 [DEBUG] [Thread-128646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:47.952 [DEBUG] [Thread-128646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:48.000 [DEBUG] [Thread-128646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:48.000 [DEBUG] [Thread-128646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:48.008 [DEBUG] [Thread-128646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:48.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:48.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-28T15:46:48.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-28T15:46:48.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:48.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:48.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:48.039 [DEBUG] [Thread-128646] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:53.104 [DEBUG] [Thread-128648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:46:58.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:46:58.042 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:46:58.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-28T15:46:58.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 46, 30), 16.04, 33.8, 0.0, 21.05, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:46:58.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:46:30
2025-09-28T15:46:58.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:46:58.903 [DEBUG] [Thread-128649] [transport.py] [_log()] starting thread (client mode): 0x2e3fb640
2025-09-28T15:46:58.904 [DEBUG] [Thread-128649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:58.922 [DEBUG] [Thread-128649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:46:58.922 [INFO] [Thread-128649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:58.925 [DEBUG] [Thread-128649] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] Compression: none
2025-09-28T15:46:58.926 [DEBUG] [Thread-128649] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:58.944 [DEBUG] [Thread-128649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:58.944 [DEBUG] [Thread-128649] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:58.944 [DEBUG] [Thread-128649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:46:58.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:46:58.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:58.946 [DEBUG] [Thread-128649] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:58.947 [DEBUG] [Thread-128649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:58.947 [DEBUG] [Thread-128649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:58.947 [DEBUG] [Thread-128649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:46:58.947 [DEBUG] [Thread-128649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:58.982 [INFO] [Thread-128649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:58.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:46:59.647 [DEBUG] [Thread-128649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:46:59.647 [DEBUG] [Thread-128649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:46:59.648 [DEBUG] [Thread-128649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:46:59.688 [DEBUG] [Thread-128649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:46:59.688 [DEBUG] [Thread-128649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:46:59.691 [DEBUG] [Thread-128649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:46:59.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:46:59.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:46:59.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:46:59.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:46:59.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:46:59.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:46:59.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.573693 -999.00  +18.80  13.05     38   +4.20 1 1 1 1 1   888    0 15.15 16.17 ----- 13.1 13.1 202.5 21.4 23.8 -27.7 23.2 -26.7 24.7 -27.0 25.7 -28.1
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:46:59.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.573693
2025-09-28T15:46:59.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:46:59.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:46:59.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:46:59.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:46:59.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:46:59.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:46:30', tmtdew=16.04, humidity=33.8, cloud=0.0, wind=21.05, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:46:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:46:59.720 [DEBUG] [Thread-128649] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:46:59.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-28T15:46:59.815 [DEBUG] [Thread-128652] [transport.py] [_log()] starting thread (client mode): 0x2b94d3c0
2025-09-28T15:46:59.815 [DEBUG] [Thread-128652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:46:59.828 [DEBUG] [Thread-128652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:46:59.828 [INFO] [Thread-128652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:46:59.836 [DEBUG] [Thread-128652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] client lang: <none>
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] server lang: <none>
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] kex follows: False
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:46:59.837 [DEBUG] [Thread-128652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:46:59.838 [DEBUG] [Thread-128652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:46:59.838 [DEBUG] [Thread-128652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:46:59.838 [DEBUG] [Thread-128652] [transport.py] [_log()] Compression: none
2025-09-28T15:46:59.838 [DEBUG] [Thread-128652] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:46:59.892 [DEBUG] [Thread-128652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:46:59.893 [DEBUG] [Thread-128652] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:46:59.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:46:59.894 [DEBUG] [Thread-128652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:46:59.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:46:59.949 [DEBUG] [Thread-128652] [transport.py] [_log()] userauth is OK
2025-09-28T15:46:59.949 [DEBUG] [Thread-128652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:46:59.949 [DEBUG] [Thread-128652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:46:59.949 [DEBUG] [Thread-128652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:46:59.949 [DEBUG] [Thread-128652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:46:59.968 [INFO] [Thread-128652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:46:59.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-28T15:46:59.968 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:00.907 [DEBUG] [Thread-128652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:00.907 [DEBUG] [Thread-128652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:00.954 [DEBUG] [Thread-128652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:00.954 [DEBUG] [Thread-128652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:00.963 [DEBUG] [Thread-128652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:00.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47: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')
2025-09-28T15:47:00.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-28T15:47:00.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:00.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:00.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:00.999 [DEBUG] [Thread-128652] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:08.158 [DEBUG] [Thread-128654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:11.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:47:11.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:47:11.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-28T15:47:11.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 47, 2), 16.17, 33.54, 0.0, 19.99, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:47:11.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:47:02
2025-09-28T15:47:11.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:47:11.861 [DEBUG] [Thread-128655] [transport.py] [_log()] starting thread (client mode): 0x2e363430
2025-09-28T15:47:11.861 [DEBUG] [Thread-128655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:11.886 [DEBUG] [Thread-128655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:47:11.886 [INFO] [Thread-128655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] Compression: none
2025-09-28T15:47:11.889 [DEBUG] [Thread-128655] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:11.898 [DEBUG] [Thread-128655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:11.899 [DEBUG] [Thread-128655] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:11.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:47:11.900 [DEBUG] [Thread-128655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:47:11.900 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:11.901 [DEBUG] [Thread-128655] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:11.902 [DEBUG] [Thread-128655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:11.902 [DEBUG] [Thread-128655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:11.902 [DEBUG] [Thread-128655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:47:11.902 [DEBUG] [Thread-128655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:11.926 [INFO] [Thread-128655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:11.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:12.544 [DEBUG] [Thread-128655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:12.544 [DEBUG] [Thread-128655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:12.545 [DEBUG] [Thread-128655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:47:12.585 [DEBUG] [Thread-128655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:12.585 [DEBUG] [Thread-128655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:12.588 [DEBUG] [Thread-128655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:12.600 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:12.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:47:12.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:47:12.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:47:12.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:12.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:47:12.612 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:12.612 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:12.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:47:12.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.574040 -999.00  +19.00  14.31     38   +4.40 1 1 1 1 1   888    0 15.03 18.59 ----- 14.3 14.3 218.4 26.4 23.8 -27.8 23.1 -29.2 24.7 -27.6 25.8 -27.6
2025-09-28T15:47:12.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:47:12.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:47:12.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.574040
2025-09-28T15:47:12.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:47:12.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:47:12.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:47:12.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:47:12.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:47:12.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:47:02', tmtdew=16.17, humidity=33.54, cloud=0.0, wind=19.99, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:46:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:47:12.614 [DEBUG] [Thread-128655] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:12.699 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:47:12.710 [DEBUG] [Thread-128658] [transport.py] [_log()] starting thread (client mode): 0x2e38e650
2025-09-28T15:47:12.710 [DEBUG] [Thread-128658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:12.725 [DEBUG] [Thread-128658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:47:12.725 [INFO] [Thread-128658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:47:12.733 [DEBUG] [Thread-128658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:12.733 [DEBUG] [Thread-128658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:47:12.733 [DEBUG] [Thread-128658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] Compression: none
2025-09-28T15:47:12.734 [DEBUG] [Thread-128658] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:12.793 [DEBUG] [Thread-128658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:12.793 [DEBUG] [Thread-128658] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:12.794 [DEBUG] [Thread-128658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:47:12.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:47:12.795 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:12.849 [DEBUG] [Thread-128658] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:12.849 [DEBUG] [Thread-128658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:12.849 [DEBUG] [Thread-128658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:12.849 [DEBUG] [Thread-128658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:47:12.849 [DEBUG] [Thread-128658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:12.868 [INFO] [Thread-128658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:12.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-28T15:47:12.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:13.803 [DEBUG] [Thread-128658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:13.803 [DEBUG] [Thread-128658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:13.851 [DEBUG] [Thread-128658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:13.851 [DEBUG] [Thread-128658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:13.860 [DEBUG] [Thread-128658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:13.869 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:13.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-28T15:47:13.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-28T15:47:13.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:13.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:13.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:13.898 [DEBUG] [Thread-128658] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:14.619 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:14.620 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:18.906 [DEBUG] [Thread-128660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:23.188 [DEBUG] [Thread-128661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:23.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:47:23.898 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:47:23.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:47:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 47, 2), 16.17, 33.54, 0.0, 19.99, 18.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:47:24.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:47:02
2025-09-28T15:47:24.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:47:24.801 [DEBUG] [Thread-128662] [transport.py] [_log()] starting thread (client mode): 0x2e3fa4d0
2025-09-28T15:47:24.801 [DEBUG] [Thread-128662] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:24.821 [DEBUG] [Thread-128662] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:47:24.822 [INFO] [Thread-128662] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] Compression: none
2025-09-28T15:47:24.825 [DEBUG] [Thread-128662] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:24.841 [DEBUG] [Thread-128662] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:24.841 [DEBUG] [Thread-128662] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:24.841 [DEBUG] [Thread-128662] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:47:24.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:47:24.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:24.842 [DEBUG] [Thread-128662] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:24.842 [DEBUG] [Thread-128662] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:24.842 [DEBUG] [Thread-128662] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:24.842 [DEBUG] [Thread-128662] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:47:24.842 [DEBUG] [Thread-128662] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:24.852 [INFO] [Thread-128662] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:24.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:25.496 [DEBUG] [Thread-128662] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:25.496 [DEBUG] [Thread-128662] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:25.497 [DEBUG] [Thread-128662] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:47:25.537 [DEBUG] [Thread-128662] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:25.538 [DEBUG] [Thread-128662] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:25.541 [DEBUG] [Thread-128662] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:25.553 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:25.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:47:25.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:47:25.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:47:25.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:25.563 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:47:25.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:25.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.574040 -999.00  +19.00  14.31     38   +4.40 1 1 1 1 1   888    0 15.03 18.59 ----- 14.3 14.3 218.4 26.4 23.8 -27.8 23.1 -29.2 24.7 -27.6 25.8 -27.6
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.574040
2025-09-28T15:47:25.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:47:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:47:25.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:47:25.565 [DEBUG] [Thread-128662] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:25.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:47:25.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:47:25.566 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:47:02', tmtdew=16.17, humidity=33.54, cloud=0.0, wind=19.99, temperature=18.1, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:46:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:47:25.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-28T15:47:25.660 [DEBUG] [Thread-128665] [transport.py] [_log()] starting thread (client mode): 0x2b94c430
2025-09-28T15:47:25.661 [DEBUG] [Thread-128665] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:25.675 [DEBUG] [Thread-128665] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:47:25.676 [INFO] [Thread-128665] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:47:25.683 [DEBUG] [Thread-128665] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:25.683 [DEBUG] [Thread-128665] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] Compression: none
2025-09-28T15:47:25.684 [DEBUG] [Thread-128665] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:25.740 [DEBUG] [Thread-128665] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:25.741 [DEBUG] [Thread-128665] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:25.742 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:47:25.742 [DEBUG] [Thread-128665] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:47:25.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:25.797 [DEBUG] [Thread-128665] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:25.797 [DEBUG] [Thread-128665] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:25.797 [DEBUG] [Thread-128665] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:25.797 [DEBUG] [Thread-128665] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:47:25.797 [DEBUG] [Thread-128665] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:25.817 [INFO] [Thread-128665] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:25.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-28T15:47:25.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:26.782 [DEBUG] [Thread-128665] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:26.783 [DEBUG] [Thread-128665] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:26.830 [DEBUG] [Thread-128665] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:26.830 [DEBUG] [Thread-128665] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:26.839 [DEBUG] [Thread-128665] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:26.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:26.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-28T15:47:26.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-28T15:47:26.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:26.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:26.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:26.874 [DEBUG] [Thread-128665] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:36.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:47:36.876 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:47:36.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-28T15:47:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 47, 34), 15.87, 34.46, 0.0, 20.43, 17.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:47:37.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:47:34
2025-09-28T15:47:37.595 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:47:37.748 [DEBUG] [Thread-128667] [transport.py] [_log()] starting thread (client mode): 0x2e360a30
2025-09-28T15:47:37.749 [DEBUG] [Thread-128667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:37.768 [DEBUG] [Thread-128667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:47:37.768 [INFO] [Thread-128667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:37.771 [DEBUG] [Thread-128667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:37.772 [DEBUG] [Thread-128667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:37.772 [DEBUG] [Thread-128667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:37.772 [DEBUG] [Thread-128667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:37.772 [DEBUG] [Thread-128667] [transport.py] [_log()] Compression: none
2025-09-28T15:47:37.772 [DEBUG] [Thread-128667] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:37.788 [DEBUG] [Thread-128667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:37.788 [DEBUG] [Thread-128667] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:37.789 [DEBUG] [Thread-128667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:47:37.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:47:37.789 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:37.790 [DEBUG] [Thread-128667] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:37.791 [DEBUG] [Thread-128667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:37.791 [DEBUG] [Thread-128667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:37.791 [DEBUG] [Thread-128667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:47:37.791 [DEBUG] [Thread-128667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:37.816 [INFO] [Thread-128667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:37.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:38.227 [DEBUG] [Thread-128669 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:47:38.392 [DEBUG] [Thread-128667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:38.393 [DEBUG] [Thread-128667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:38.393 [DEBUG] [Thread-128667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:47:38.433 [DEBUG] [Thread-128667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:38.433 [DEBUG] [Thread-128667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:38.436 [DEBUG] [Thread-128667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:38.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:38.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:47:38.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:47:38.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:47:38.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:38.448 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:47:38.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:38.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:38.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:47:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.574387 -999.00  +18.60  17.41     38   +4.20 1 1 1 1 1   888    0 14.89 19.73 ----- 17.4 17.4 220.3 23.0 23.7 -28.8 22.9 -27.4 24.5 -27.8 25.6 -30.4
2025-09-28T15:47:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:47:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:47:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.574387
2025-09-28T15:47:38.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:47:38.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:47:38.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:47:38.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:47:38.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:47:38.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:47:34', tmtdew=15.87, humidity=34.46, cloud=0.0, wind=20.43, temperature=17.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:47:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:47:38.450 [DEBUG] [Thread-128667] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:38.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-28T15:47:38.546 [DEBUG] [Thread-128671] [transport.py] [_log()] starting thread (client mode): 0x2b94ca00
2025-09-28T15:47:38.546 [DEBUG] [Thread-128671] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:38.560 [DEBUG] [Thread-128671] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:47:38.560 [INFO] [Thread-128671] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:47:38.567 [DEBUG] [Thread-128671] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:38.567 [DEBUG] [Thread-128671] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] Compression: none
2025-09-28T15:47:38.568 [DEBUG] [Thread-128671] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:38.624 [DEBUG] [Thread-128671] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:38.624 [DEBUG] [Thread-128671] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:38.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:47:38.625 [DEBUG] [Thread-128671] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:47:38.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:38.681 [DEBUG] [Thread-128671] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:38.681 [DEBUG] [Thread-128671] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:38.681 [DEBUG] [Thread-128671] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:38.681 [DEBUG] [Thread-128671] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:47:38.681 [DEBUG] [Thread-128671] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:38.704 [INFO] [Thread-128671] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:38.705 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:47:38.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:39.636 [DEBUG] [Thread-128671] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:39.636 [DEBUG] [Thread-128671] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:39.685 [DEBUG] [Thread-128671] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:39.685 [DEBUG] [Thread-128671] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:39.694 [DEBUG] [Thread-128671] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:39.703 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:39.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-28T15:47:39.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-28T15:47:39.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:39.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:39.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:39.728 [DEBUG] [Thread-128671] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:49.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:47:49.731 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:47:49.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-28T15:47:50.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 47, 34), 15.87, 34.46, 0.0, 20.43, 17.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:47:50.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:47:34
2025-09-28T15:47:50.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:47:50.583 [DEBUG] [Thread-128673] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-28T15:47:50.583 [DEBUG] [Thread-128673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:50.604 [DEBUG] [Thread-128673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:47:50.604 [INFO] [Thread-128673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:47:50.607 [DEBUG] [Thread-128673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:50.607 [DEBUG] [Thread-128673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:47:50.607 [DEBUG] [Thread-128673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:50.608 [DEBUG] [Thread-128673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:50.609 [DEBUG] [Thread-128673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:50.609 [DEBUG] [Thread-128673] [transport.py] [_log()] Compression: none
2025-09-28T15:47:50.609 [DEBUG] [Thread-128673] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:50.627 [DEBUG] [Thread-128673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:50.628 [DEBUG] [Thread-128673] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:50.629 [DEBUG] [Thread-128673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:47:50.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:47:50.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:50.631 [DEBUG] [Thread-128673] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:50.632 [DEBUG] [Thread-128673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:50.632 [DEBUG] [Thread-128673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:50.632 [DEBUG] [Thread-128673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:47:50.632 [DEBUG] [Thread-128673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:50.650 [INFO] [Thread-128673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:50.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:51.261 [DEBUG] [Thread-128673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:51.262 [DEBUG] [Thread-128673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:51.262 [DEBUG] [Thread-128673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:47:51.302 [DEBUG] [Thread-128673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:51.302 [DEBUG] [Thread-128673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:51.305 [DEBUG] [Thread-128673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:51.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47:51.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:47:51.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:47:51.322 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:47:51.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:51.330 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:47:51.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:51.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:51.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:47:51.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.574387 -999.00  +18.60  17.41     38   +4.20 1 1 1 1 1   888    0 14.89 19.73 ----- 17.4 17.4 220.3 23.0 23.7 -28.8 22.9 -27.4 24.5 -27.8 25.6 -30.4
2025-09-28T15:47:51.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:47:51.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:47:51.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.574387
2025-09-28T15:47:51.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:47:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:47:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:47:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:47:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:47:51.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:47:34', tmtdew=15.87, humidity=34.46, cloud=0.0, wind=20.43, temperature=17.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:47:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:47:51.332 [DEBUG] [Thread-128673] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:51.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-28T15:47:51.426 [DEBUG] [Thread-128676] [transport.py] [_log()] starting thread (client mode): 0x2e360f70
2025-09-28T15:47:51.426 [DEBUG] [Thread-128676] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:47:51.441 [DEBUG] [Thread-128676] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:47:51.441 [INFO] [Thread-128676] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] client lang: <none>
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] server lang: <none>
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] kex follows: False
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] Compression: none
2025-09-28T15:47:51.449 [DEBUG] [Thread-128676] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:47:51.508 [DEBUG] [Thread-128676] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:47:51.509 [DEBUG] [Thread-128676] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:47:51.509 [DEBUG] [Thread-128676] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:47:51.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:47:51.510 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:47:51.565 [DEBUG] [Thread-128676] [transport.py] [_log()] userauth is OK
2025-09-28T15:47:51.565 [DEBUG] [Thread-128676] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:47:51.566 [DEBUG] [Thread-128676] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:47:51.566 [DEBUG] [Thread-128676] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:47:51.566 [DEBUG] [Thread-128676] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:47:51.585 [INFO] [Thread-128676] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:47:51.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-28T15:47:51.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:47:52.545 [DEBUG] [Thread-128676] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:47:52.545 [DEBUG] [Thread-128676] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:47:52.593 [DEBUG] [Thread-128676] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:47:52.593 [DEBUG] [Thread-128676] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:47:52.603 [DEBUG] [Thread-128676] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:47:52.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:47: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-28T15:47:52.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-28T15:47:52.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:47:52.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:47:52.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:47:52.637 [DEBUG] [Thread-128676] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:47:53.259 [DEBUG] [Thread-128678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:02.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:48:02.640 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:48:02.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:48:03.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 47, 34), 15.87, 34.46, 0.0, 20.43, 17.8, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:48:03.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:47:34
2025-09-28T15:48:03.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:48:03.514 [DEBUG] [Thread-128679] [transport.py] [_log()] starting thread (client mode): 0x2e348700
2025-09-28T15:48:03.514 [DEBUG] [Thread-128679] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:03.534 [DEBUG] [Thread-128679] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:48:03.534 [INFO] [Thread-128679] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:03.537 [DEBUG] [Thread-128679] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] Compression: none
2025-09-28T15:48:03.538 [DEBUG] [Thread-128679] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:03.558 [DEBUG] [Thread-128679] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:03.558 [DEBUG] [Thread-128679] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:03.559 [DEBUG] [Thread-128679] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:48:03.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:48:03.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:03.560 [DEBUG] [Thread-128679] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:03.561 [DEBUG] [Thread-128679] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:03.561 [DEBUG] [Thread-128679] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:03.561 [DEBUG] [Thread-128679] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:48:03.561 [DEBUG] [Thread-128679] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:03.579 [INFO] [Thread-128679] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:03.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:04.234 [DEBUG] [Thread-128679] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:04.235 [DEBUG] [Thread-128679] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:04.235 [DEBUG] [Thread-128679] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:48:04.277 [DEBUG] [Thread-128679] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:04.277 [DEBUG] [Thread-128679] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:04.280 [DEBUG] [Thread-128679] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:04.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:04.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:48:04.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:48:04.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:48:04.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:04.303 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:48:04.303 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:04.303 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:04.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:48:04.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.574387 -999.00  +18.60  17.41     38   +4.20 1 1 1 1 1   888    0 14.89 19.73 ----- 17.4 17.4 220.3 23.0 23.7 -28.8 22.9 -27.4 24.5 -27.8 25.6 -30.4
2025-09-28T15:48:04.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:48:04.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:48:04.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.574387
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:48:04.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:47:34', tmtdew=15.87, humidity=34.46, cloud=0.0, wind=20.43, temperature=17.8, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:47:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:48:04.306 [DEBUG] [Thread-128679] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:04.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-28T15:48:04.401 [DEBUG] [Thread-128682] [transport.py] [_log()] starting thread (client mode): 0x2e3602e0
2025-09-28T15:48:04.401 [DEBUG] [Thread-128682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:04.416 [DEBUG] [Thread-128682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:48:04.416 [INFO] [Thread-128682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:04.427 [DEBUG] [Thread-128682] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] Compression: none
2025-09-28T15:48:04.428 [DEBUG] [Thread-128682] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:04.481 [DEBUG] [Thread-128682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:04.482 [DEBUG] [Thread-128682] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:04.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:48:04.483 [DEBUG] [Thread-128682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:48:04.483 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:04.542 [DEBUG] [Thread-128682] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:04.542 [DEBUG] [Thread-128682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:04.542 [DEBUG] [Thread-128682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:04.542 [DEBUG] [Thread-128682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:48:04.542 [DEBUG] [Thread-128682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:04.567 [INFO] [Thread-128682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:04.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-28T15:48:04.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:05.495 [DEBUG] [Thread-128682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:05.495 [DEBUG] [Thread-128682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:05.547 [DEBUG] [Thread-128682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:05.547 [DEBUG] [Thread-128682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:05.557 [DEBUG] [Thread-128682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:05.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:05.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-28T15:48:05.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-28T15:48:05.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:05.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:05.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:05.604 [DEBUG] [Thread-128682] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:08.300 [DEBUG] [Thread-128684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:14.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:14.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:15.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:48:15.606 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:48:15.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-28T15:48:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 48, 6), 15.96, 34.27, 0.0, 17.61, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:48:16.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:48:06
2025-09-28T15:48:16.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:48:16.457 [DEBUG] [Thread-128685] [transport.py] [_log()] starting thread (client mode): 0x2e3dd7e0
2025-09-28T15:48:16.457 [DEBUG] [Thread-128685] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:16.477 [DEBUG] [Thread-128685] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:48:16.477 [INFO] [Thread-128685] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:48:16.480 [DEBUG] [Thread-128685] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:16.480 [DEBUG] [Thread-128685] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:48:16.480 [DEBUG] [Thread-128685] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:16.480 [DEBUG] [Thread-128685] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] Compression: none
2025-09-28T15:48:16.481 [DEBUG] [Thread-128685] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:16.500 [DEBUG] [Thread-128685] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:16.500 [DEBUG] [Thread-128685] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:16.500 [DEBUG] [Thread-128685] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:48:16.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:48:16.501 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:16.503 [DEBUG] [Thread-128685] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:16.503 [DEBUG] [Thread-128685] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:16.503 [DEBUG] [Thread-128685] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:16.503 [DEBUG] [Thread-128685] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:48:16.503 [DEBUG] [Thread-128685] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:16.527 [INFO] [Thread-128685] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:16.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:17.171 [DEBUG] [Thread-128685] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:17.171 [DEBUG] [Thread-128685] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:17.171 [DEBUG] [Thread-128685] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:48:17.212 [DEBUG] [Thread-128685] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:17.212 [DEBUG] [Thread-128685] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:17.214 [DEBUG] [Thread-128685] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:17.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:17.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:48:17.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:48:17.230 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:48:17.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:17.236 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:48:17.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575082 -999.00  +18.10   1.90     39   +4.20 1 1 1 1 1   888    0 15.05 13.24 ----- 1.9 1.9 276.7 20.3 23.5 -27.2 22.9 -27.7 24.6 -26.0 25.4 -28.0
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:48:17.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575082
2025-09-28T15:48:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:48:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:48:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:48:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:48:17.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:48:17.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:48:06', tmtdew=15.96, humidity=34.27, cloud=0.0, wind=17.61, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:48:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:48:17.239 [DEBUG] [Thread-128685] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:17.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-28T15:48:17.333 [DEBUG] [Thread-128688] [transport.py] [_log()] starting thread (client mode): 0x2b94d5a0
2025-09-28T15:48:17.333 [DEBUG] [Thread-128688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:17.347 [DEBUG] [Thread-128688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:48:17.347 [INFO] [Thread-128688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:48:17.355 [DEBUG] [Thread-128688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:17.355 [DEBUG] [Thread-128688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] Compression: none
2025-09-28T15:48:17.356 [DEBUG] [Thread-128688] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:17.414 [DEBUG] [Thread-128688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:17.415 [DEBUG] [Thread-128688] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:17.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:48:17.416 [DEBUG] [Thread-128688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:48:17.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:17.475 [DEBUG] [Thread-128688] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:17.475 [DEBUG] [Thread-128688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:17.475 [DEBUG] [Thread-128688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:17.475 [DEBUG] [Thread-128688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:48:17.475 [DEBUG] [Thread-128688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:17.489 [INFO] [Thread-128688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:17.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-28T15:48:17.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:18.502 [DEBUG] [Thread-128688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:18.502 [DEBUG] [Thread-128688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:18.550 [DEBUG] [Thread-128688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:18.550 [DEBUG] [Thread-128688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:18.559 [DEBUG] [Thread-128688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:18.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:18.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-28T15:48:18.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-28T15:48:18.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:18.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:18.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:18.593 [DEBUG] [Thread-128688] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:18.960 [DEBUG] [Thread-128690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:23.330 [DEBUG] [Thread-128691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:28.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:48:28.593 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:48:28.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-28T15:48:29.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 48, 6), 15.96, 34.27, 0.0, 17.61, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:48:29.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:48:06
2025-09-28T15:48:29.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:48:29.446 [DEBUG] [Thread-128692] [transport.py] [_log()] starting thread (client mode): 0x2e349c30
2025-09-28T15:48:29.446 [DEBUG] [Thread-128692] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:29.461 [DEBUG] [Thread-128692] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:48:29.461 [INFO] [Thread-128692] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:48:29.464 [DEBUG] [Thread-128692] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:29.464 [DEBUG] [Thread-128692] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:48:29.464 [DEBUG] [Thread-128692] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:29.464 [DEBUG] [Thread-128692] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:29.464 [DEBUG] [Thread-128692] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] Compression: none
2025-09-28T15:48:29.465 [DEBUG] [Thread-128692] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:29.483 [DEBUG] [Thread-128692] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:29.484 [DEBUG] [Thread-128692] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:29.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:48:29.485 [DEBUG] [Thread-128692] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:48:29.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:29.487 [DEBUG] [Thread-128692] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:29.487 [DEBUG] [Thread-128692] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:29.488 [DEBUG] [Thread-128692] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:29.488 [DEBUG] [Thread-128692] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:48:29.488 [DEBUG] [Thread-128692] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:29.506 [INFO] [Thread-128692] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:29.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:30.163 [DEBUG] [Thread-128692] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:30.164 [DEBUG] [Thread-128692] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:30.164 [DEBUG] [Thread-128692] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:48:30.204 [DEBUG] [Thread-128692] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:30.204 [DEBUG] [Thread-128692] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:30.207 [DEBUG] [Thread-128692] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:30.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:30.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:48:30.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:48:30.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:48:30.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:30.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:48:30.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:30.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575082 -999.00  +18.10   1.90     39   +4.20 1 1 1 1 1   888    0 15.05 13.24 ----- 1.9 1.9 276.7 20.3 23.5 -27.2 22.9 -27.7 24.6 -26.0 25.4 -28.0
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575082
2025-09-28T15:48:30.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:48:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:48:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:48:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:48:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:48:30.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:48:06', tmtdew=15.96, humidity=34.27, cloud=0.0, wind=17.61, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:48:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:48:30.233 [DEBUG] [Thread-128692] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:30.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-28T15:48:30.329 [DEBUG] [Thread-128695] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e20
2025-09-28T15:48:30.329 [DEBUG] [Thread-128695] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:30.344 [DEBUG] [Thread-128695] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:48:30.344 [INFO] [Thread-128695] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:30.351 [DEBUG] [Thread-128695] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] Compression: none
2025-09-28T15:48:30.352 [DEBUG] [Thread-128695] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:30.408 [DEBUG] [Thread-128695] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:30.409 [DEBUG] [Thread-128695] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:30.409 [DEBUG] [Thread-128695] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:48:30.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:48:30.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:30.466 [DEBUG] [Thread-128695] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:30.466 [DEBUG] [Thread-128695] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:30.466 [DEBUG] [Thread-128695] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:30.466 [DEBUG] [Thread-128695] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:48:30.466 [DEBUG] [Thread-128695] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:30.487 [INFO] [Thread-128695] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:30.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-28T15:48:30.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:31.484 [DEBUG] [Thread-128695] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:31.484 [DEBUG] [Thread-128695] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:31.532 [DEBUG] [Thread-128695] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:31.532 [DEBUG] [Thread-128695] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:31.541 [DEBUG] [Thread-128695] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:31.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:31.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')
2025-09-28T15:48:31.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') -> 00000000
2025-09-28T15:48:31.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:31.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:31.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:31.575 [DEBUG] [Thread-128695] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:38.375 [DEBUG] [Thread-128697 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:41.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:48:41.578 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:48:41.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-28T15:48:42.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 48, 38), 15.67, 35.37, 0.0, 19.64, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:48:42.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:48:38
2025-09-28T15:48:42.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:48:42.432 [DEBUG] [Thread-128698] [transport.py] [_log()] starting thread (client mode): 0x2b956920
2025-09-28T15:48:42.432 [DEBUG] [Thread-128698] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:42.451 [DEBUG] [Thread-128698] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:48:42.451 [INFO] [Thread-128698] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:48:42.454 [DEBUG] [Thread-128698] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] Compression: none
2025-09-28T15:48:42.455 [DEBUG] [Thread-128698] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:42.463 [DEBUG] [Thread-128698] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:42.463 [DEBUG] [Thread-128698] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:42.463 [DEBUG] [Thread-128698] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:48:42.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:48:42.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:42.465 [DEBUG] [Thread-128698] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:42.466 [DEBUG] [Thread-128698] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:42.466 [DEBUG] [Thread-128698] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:42.466 [DEBUG] [Thread-128698] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:48:42.466 [DEBUG] [Thread-128698] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:42.484 [INFO] [Thread-128698] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:42.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:43.061 [DEBUG] [Thread-128698] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:43.061 [DEBUG] [Thread-128698] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:43.061 [DEBUG] [Thread-128698] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:48:43.102 [DEBUG] [Thread-128698] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:43.103 [DEBUG] [Thread-128698] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:43.105 [DEBUG] [Thread-128698] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:43.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:43.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:48:43.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:48:43.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:48:43.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:43.128 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:48:43.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:43.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:43.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:48:43.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575429 -999.00  +18.10  23.00     39   +4.20 1 1 1 1 1   888    0 15.12 11.21 ----- 23.0 23.0 202.0 27.8 23.6 -27.6 22.8 -28.3 24.4 -26.7 25.5 -28.0
2025-09-28T15:48:43.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:48:43.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:48:43.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575429
2025-09-28T15:48:43.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:48:43.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:48:43.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:48:43.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:48:43.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:48:43.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:48:38', tmtdew=15.67, humidity=35.37, cloud=0.0, wind=19.64, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:48:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:48:43.131 [DEBUG] [Thread-128698] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:43.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-28T15:48:43.228 [DEBUG] [Thread-128701] [transport.py] [_log()] starting thread (client mode): 0x2b955d50
2025-09-28T15:48:43.228 [DEBUG] [Thread-128701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:43.243 [DEBUG] [Thread-128701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:48:43.243 [INFO] [Thread-128701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:43.251 [DEBUG] [Thread-128701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:43.252 [DEBUG] [Thread-128701] [transport.py] [_log()] Compression: none
2025-09-28T15:48:43.252 [DEBUG] [Thread-128701] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:43.308 [DEBUG] [Thread-128701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:43.309 [DEBUG] [Thread-128701] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:43.309 [DEBUG] [Thread-128701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:48:43.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:48:43.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:43.364 [DEBUG] [Thread-128701] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:43.365 [DEBUG] [Thread-128701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:43.365 [DEBUG] [Thread-128701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:43.365 [DEBUG] [Thread-128701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:48:43.365 [DEBUG] [Thread-128701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:43.387 [INFO] [Thread-128701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:43.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-28T15:48:43.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:44.310 [DEBUG] [Thread-128701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:44.310 [DEBUG] [Thread-128701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:44.358 [DEBUG] [Thread-128701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:44.358 [DEBUG] [Thread-128701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:44.367 [DEBUG] [Thread-128701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:44.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:44.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')
2025-09-28T15:48:44.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-28T15:48:44.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:44.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:44.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:44.403 [DEBUG] [Thread-128701] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:53.403 [DEBUG] [Thread-128703 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:48:54.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:48:54.405 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:48:54.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:48:54.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 48, 38), 15.67, 35.37, 0.0, 19.64, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:48:54.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:48:38
2025-09-28T15:48:55.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:48:55.253 [DEBUG] [Thread-128704] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a30
2025-09-28T15:48:55.254 [DEBUG] [Thread-128704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:55.274 [DEBUG] [Thread-128704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:48:55.274 [INFO] [Thread-128704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:55.278 [DEBUG] [Thread-128704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] Compression: none
2025-09-28T15:48:55.279 [DEBUG] [Thread-128704] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:55.295 [DEBUG] [Thread-128704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:55.296 [DEBUG] [Thread-128704] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:55.296 [DEBUG] [Thread-128704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:48:55.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:48:55.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:55.298 [DEBUG] [Thread-128704] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:55.299 [DEBUG] [Thread-128704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:55.299 [DEBUG] [Thread-128704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:55.299 [DEBUG] [Thread-128704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:48:55.299 [DEBUG] [Thread-128704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:55.321 [INFO] [Thread-128704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:55.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:55.969 [DEBUG] [Thread-128704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:55.969 [DEBUG] [Thread-128704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:55.970 [DEBUG] [Thread-128704] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:48:56.010 [DEBUG] [Thread-128704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:56.010 [DEBUG] [Thread-128704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:56.013 [DEBUG] [Thread-128704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:56.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:56.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:48:56.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:48:56.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:48:56.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:56.035 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:48:56.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:56.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:48:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575429 -999.00  +18.10  23.00     39   +4.20 1 1 1 1 1   888    0 15.12 11.21 ----- 23.0 23.0 202.0 27.8 23.6 -27.6 22.8 -28.3 24.4 -26.7 25.5 -28.0
2025-09-28T15:48:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:48:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:48:56.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575429
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:48:56.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:48:38', tmtdew=15.67, humidity=35.37, cloud=0.0, wind=19.64, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:48:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:48:56.038 [DEBUG] [Thread-128704] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:48:56.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-28T15:48:56.133 [DEBUG] [Thread-128707] [transport.py] [_log()] starting thread (client mode): 0x2e34b340
2025-09-28T15:48:56.134 [DEBUG] [Thread-128707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:48:56.148 [DEBUG] [Thread-128707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:48:56.148 [INFO] [Thread-128707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] client lang: <none>
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] server lang: <none>
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] kex follows: False
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:48:56.156 [DEBUG] [Thread-128707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:48:56.157 [DEBUG] [Thread-128707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:48:56.157 [DEBUG] [Thread-128707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:48:56.157 [DEBUG] [Thread-128707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:48:56.157 [DEBUG] [Thread-128707] [transport.py] [_log()] Compression: none
2025-09-28T15:48:56.157 [DEBUG] [Thread-128707] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:48:56.212 [DEBUG] [Thread-128707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:48:56.213 [DEBUG] [Thread-128707] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:48:56.213 [DEBUG] [Thread-128707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:48:56.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:48:56.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:48:56.269 [DEBUG] [Thread-128707] [transport.py] [_log()] userauth is OK
2025-09-28T15:48:56.269 [DEBUG] [Thread-128707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:48:56.269 [DEBUG] [Thread-128707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:48:56.269 [DEBUG] [Thread-128707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:48:56.269 [DEBUG] [Thread-128707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:48:56.288 [INFO] [Thread-128707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:48:56.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-28T15:48:56.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:48:57.235 [DEBUG] [Thread-128707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:48:57.235 [DEBUG] [Thread-128707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:48:57.283 [DEBUG] [Thread-128707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:48:57.283 [DEBUG] [Thread-128707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:48:57.291 [DEBUG] [Thread-128707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:48:57.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:48:57.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-28T15:48:57.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-28T15:48:57.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:48:57.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:48:57.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:48:57.322 [DEBUG] [Thread-128707] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:07.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:49:07.323 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:49:07.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-28T15:49:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 48, 38), 15.67, 35.37, 0.0, 19.64, 17.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:49:07.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:48:38
2025-09-28T15:49:08.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:49:08.175 [DEBUG] [Thread-128709] [transport.py] [_log()] starting thread (client mode): 0x2e38ea70
2025-09-28T15:49:08.176 [DEBUG] [Thread-128709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:08.197 [DEBUG] [Thread-128709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:49:08.197 [INFO] [Thread-128709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:08.201 [DEBUG] [Thread-128709] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] Compression: none
2025-09-28T15:49:08.202 [DEBUG] [Thread-128709] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:08.219 [DEBUG] [Thread-128709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:08.220 [DEBUG] [Thread-128709] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:08.220 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:49:08.221 [DEBUG] [Thread-128709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:49:08.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:08.222 [DEBUG] [Thread-128709] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:08.223 [DEBUG] [Thread-128709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:08.223 [DEBUG] [Thread-128709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:08.223 [DEBUG] [Thread-128709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:49:08.223 [DEBUG] [Thread-128709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:08.246 [INFO] [Thread-128709] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:08.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:08.440 [DEBUG] [Thread-128711 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:08.861 [DEBUG] [Thread-128709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:08.862 [DEBUG] [Thread-128709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:08.862 [DEBUG] [Thread-128709] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:49:08.902 [DEBUG] [Thread-128709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:08.902 [DEBUG] [Thread-128709] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:08.905 [DEBUG] [Thread-128709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:08.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:08.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:49:08.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:49:08.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:49:08.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:08.926 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:49:08.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:08.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:49:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575429 -999.00  +18.10  23.00     39   +4.20 1 1 1 1 1   888    0 15.12 11.21 ----- 23.0 23.0 202.0 27.8 23.6 -27.6 22.8 -28.3 24.4 -26.7 25.5 -28.0
2025-09-28T15:49:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:49:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:49:08.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575429
2025-09-28T15:49:08.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:49:08.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:49:08.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:49:08.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:49:08.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:49:08.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:48:38', tmtdew=15.67, humidity=35.37, cloud=0.0, wind=19.64, temperature=17.84, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:48:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:49:08.929 [DEBUG] [Thread-128709] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:09.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-28T15:49:09.024 [DEBUG] [Thread-128713] [transport.py] [_log()] starting thread (client mode): 0x2e349360
2025-09-28T15:49:09.025 [DEBUG] [Thread-128713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:09.039 [DEBUG] [Thread-128713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:49:09.040 [INFO] [Thread-128713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:49:09.047 [DEBUG] [Thread-128713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:09.047 [DEBUG] [Thread-128713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] Compression: none
2025-09-28T15:49:09.048 [DEBUG] [Thread-128713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:09.104 [DEBUG] [Thread-128713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:09.105 [DEBUG] [Thread-128713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:09.105 [DEBUG] [Thread-128713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:49:09.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:49:09.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:09.160 [DEBUG] [Thread-128713] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:09.161 [DEBUG] [Thread-128713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:09.161 [DEBUG] [Thread-128713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:09.161 [DEBUG] [Thread-128713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:49:09.161 [DEBUG] [Thread-128713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:09.181 [INFO] [Thread-128713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:09.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-28T15:49:09.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:10.189 [DEBUG] [Thread-128713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:10.189 [DEBUG] [Thread-128713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:10.238 [DEBUG] [Thread-128713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:10.238 [DEBUG] [Thread-128713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:10.247 [DEBUG] [Thread-128713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:10.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:10.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-28T15:49:10.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-28T15:49:10.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:10.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:10.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:10.282 [DEBUG] [Thread-128713] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:14.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:14.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:19.010 [DEBUG] [Thread-128715 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:49:20.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:49:20.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-28T15:49:20.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 49, 10), 15.8, 35.11, 0.0, 22.04, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:49:20.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:49:10
2025-09-28T15:49:20.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:49:21.132 [DEBUG] [Thread-128716] [transport.py] [_log()] starting thread (client mode): 0x2b91cf40
2025-09-28T15:49:21.132 [DEBUG] [Thread-128716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:21.153 [DEBUG] [Thread-128716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:49:21.153 [INFO] [Thread-128716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] Compression: none
2025-09-28T15:49:21.155 [DEBUG] [Thread-128716] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:21.172 [DEBUG] [Thread-128716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:21.172 [DEBUG] [Thread-128716] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:21.173 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:49:21.173 [DEBUG] [Thread-128716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:49:21.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:21.175 [DEBUG] [Thread-128716] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:21.175 [DEBUG] [Thread-128716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:21.175 [DEBUG] [Thread-128716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:21.176 [DEBUG] [Thread-128716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:49:21.176 [DEBUG] [Thread-128716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:21.200 [INFO] [Thread-128716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:21.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:21.864 [DEBUG] [Thread-128716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:21.864 [DEBUG] [Thread-128716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:21.864 [DEBUG] [Thread-128716] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:49:21.905 [DEBUG] [Thread-128716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:21.906 [DEBUG] [Thread-128716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:21.909 [DEBUG] [Thread-128716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:21.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:21.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:49:21.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:49:21.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:49:21.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:21.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:49:21.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:21.933 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:21.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:49:21.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575776 -999.00  +18.20  11.30     39   +4.30 1 1 1 1 1   888    0 14.82 8.30 ----- 11.3 11.3 197.6 24.3 23.5 -28.0 22.7 -27.8 24.5 -27.0 25.5 -29.4
2025-09-28T15:49:21.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:49:21.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:49:21.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575776
2025-09-28T15:49:21.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:49:21.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:49:21.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:49:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:49:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:49:21.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:49:10', tmtdew=15.8, humidity=35.11, cloud=0.0, wind=22.04, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:49:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:49:21.936 [DEBUG] [Thread-128716] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:22.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-28T15:49:22.025 [DEBUG] [Thread-128719] [transport.py] [_log()] starting thread (client mode): 0x2b94d5a0
2025-09-28T15:49:22.025 [DEBUG] [Thread-128719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:22.039 [DEBUG] [Thread-128719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:49:22.040 [INFO] [Thread-128719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:49:22.048 [DEBUG] [Thread-128719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:22.048 [DEBUG] [Thread-128719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:49:22.048 [DEBUG] [Thread-128719] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] Compression: none
2025-09-28T15:49:22.049 [DEBUG] [Thread-128719] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:22.104 [DEBUG] [Thread-128719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:22.105 [DEBUG] [Thread-128719] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:22.105 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:49:22.106 [DEBUG] [Thread-128719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:49:22.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:22.161 [DEBUG] [Thread-128719] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:22.161 [DEBUG] [Thread-128719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:22.161 [DEBUG] [Thread-128719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:22.161 [DEBUG] [Thread-128719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:49:22.161 [DEBUG] [Thread-128719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:22.179 [INFO] [Thread-128719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:22.180 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:49:22.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:23.109 [DEBUG] [Thread-128719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:23.109 [DEBUG] [Thread-128719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:23.161 [DEBUG] [Thread-128719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:23.161 [DEBUG] [Thread-128719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:23.170 [DEBUG] [Thread-128719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:23.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:23.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-28T15:49:23.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-28T15:49:23.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:23.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:23.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:23.205 [DEBUG] [Thread-128719] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:23.469 [DEBUG] [Thread-128721 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:33.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:49:33.208 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:49:33.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-28T15:49:33.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 49, 10), 15.8, 35.11, 0.0, 22.04, 17.95, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:49:33.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:49:10
2025-09-28T15:49:33.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:49:34.058 [DEBUG] [Thread-128722] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-28T15:49:34.058 [DEBUG] [Thread-128722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:34.077 [DEBUG] [Thread-128722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:49:34.077 [INFO] [Thread-128722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:49:34.080 [DEBUG] [Thread-128722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:34.081 [DEBUG] [Thread-128722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] Compression: none
2025-09-28T15:49:34.082 [DEBUG] [Thread-128722] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:34.099 [DEBUG] [Thread-128722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:34.100 [DEBUG] [Thread-128722] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:34.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:49:34.101 [DEBUG] [Thread-128722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:49:34.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:34.103 [DEBUG] [Thread-128722] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:34.103 [DEBUG] [Thread-128722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:34.104 [DEBUG] [Thread-128722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:34.104 [DEBUG] [Thread-128722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:49:34.104 [DEBUG] [Thread-128722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:34.127 [INFO] [Thread-128722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:34.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:34.762 [DEBUG] [Thread-128722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:34.762 [DEBUG] [Thread-128722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:34.762 [DEBUG] [Thread-128722] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:49:34.804 [DEBUG] [Thread-128722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:34.804 [DEBUG] [Thread-128722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:34.807 [DEBUG] [Thread-128722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:34.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:34.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:49:34.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:49:34.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:49:34.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:34.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:49:34.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:34.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:34.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:49:34.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575776 -999.00  +18.20  11.30     39   +4.30 1 1 1 1 1   888    0 14.82 8.30 ----- 11.3 11.3 197.6 24.3 23.5 -28.0 22.7 -27.8 24.5 -27.0 25.5 -29.4
2025-09-28T15:49:34.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:49:34.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:49:34.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575776
2025-09-28T15:49:34.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:49:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:49:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:49:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:49:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:49:34.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:49:10', tmtdew=15.8, humidity=35.11, cloud=0.0, wind=22.04, temperature=17.95, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:49:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:49:34.832 [DEBUG] [Thread-128722] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:34.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-28T15:49:34.929 [DEBUG] [Thread-128725] [transport.py] [_log()] starting thread (client mode): 0x2b9b8be0
2025-09-28T15:49:34.929 [DEBUG] [Thread-128725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:34.944 [DEBUG] [Thread-128725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:49:34.944 [INFO] [Thread-128725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:49:34.951 [DEBUG] [Thread-128725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:34.951 [DEBUG] [Thread-128725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] Compression: none
2025-09-28T15:49:34.952 [DEBUG] [Thread-128725] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:35.009 [DEBUG] [Thread-128725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:35.009 [DEBUG] [Thread-128725] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:35.010 [DEBUG] [Thread-128725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:49:35.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:49:35.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:35.065 [DEBUG] [Thread-128725] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:35.065 [DEBUG] [Thread-128725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:35.065 [DEBUG] [Thread-128725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:35.065 [DEBUG] [Thread-128725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:49:35.065 [DEBUG] [Thread-128725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:35.079 [INFO] [Thread-128725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:35.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-28T15:49:35.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:36.048 [DEBUG] [Thread-128725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:36.049 [DEBUG] [Thread-128725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:36.096 [DEBUG] [Thread-128725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:36.096 [DEBUG] [Thread-128725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:36.105 [DEBUG] [Thread-128725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:36.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:36.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T15:49:36.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-28T15:49:36.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:36.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:36.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:36.140 [DEBUG] [Thread-128725] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:38.515 [DEBUG] [Thread-128727 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:46.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:49:46.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:49:46.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:49:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 49, 42), 15.58, 35.21, 0.0, 19.57, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:49:46.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:49:42
2025-09-28T15:49:46.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:49:46.987 [DEBUG] [Thread-128728] [transport.py] [_log()] starting thread (client mode): 0x2b94fd00
2025-09-28T15:49:46.988 [DEBUG] [Thread-128728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:47.008 [DEBUG] [Thread-128728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:49:47.008 [INFO] [Thread-128728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:47.010 [DEBUG] [Thread-128728] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] Compression: none
2025-09-28T15:49:47.011 [DEBUG] [Thread-128728] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:47.020 [DEBUG] [Thread-128728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:47.021 [DEBUG] [Thread-128728] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:47.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:49:47.022 [DEBUG] [Thread-128728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:49:47.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:47.024 [DEBUG] [Thread-128728] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:47.025 [DEBUG] [Thread-128728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:47.025 [DEBUG] [Thread-128728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:47.025 [DEBUG] [Thread-128728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:49:47.025 [DEBUG] [Thread-128728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:47.060 [INFO] [Thread-128728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:47.060 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:47.700 [DEBUG] [Thread-128728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:47.700 [DEBUG] [Thread-128728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:47.700 [DEBUG] [Thread-128728] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:49:47.741 [DEBUG] [Thread-128728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:47.741 [DEBUG] [Thread-128728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:47.743 [DEBUG] [Thread-128728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:47.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:47.755 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:49:47.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:49:47.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:49:47.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:47.761 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:49:47.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.575776 -999.00  +18.20  11.30     39   +4.30 1 1 1 1 1   888    0 14.82 8.30 ----- 11.3 11.3 197.6 24.3 23.5 -28.0 22.7 -27.8 24.5 -27.0 25.5 -29.4
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.575776
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:49:47.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:49:42', tmtdew=15.58, humidity=35.21, cloud=0.0, wind=19.57, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:49:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:49:47.762 [DEBUG] [Thread-128728] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:47.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-28T15:49:47.845 [DEBUG] [Thread-128731] [transport.py] [_log()] starting thread (client mode): 0x2b9bac80
2025-09-28T15:49:47.845 [DEBUG] [Thread-128731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:47.860 [DEBUG] [Thread-128731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:49:47.860 [INFO] [Thread-128731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] Compression: none
2025-09-28T15:49:47.867 [DEBUG] [Thread-128731] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:47.923 [DEBUG] [Thread-128731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:47.924 [DEBUG] [Thread-128731] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:47.924 [DEBUG] [Thread-128731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:49:47.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:49:47.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:49:47.980 [DEBUG] [Thread-128731] [transport.py] [_log()] userauth is OK
2025-09-28T15:49:47.980 [DEBUG] [Thread-128731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:49:47.981 [DEBUG] [Thread-128731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:49:47.981 [DEBUG] [Thread-128731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:49:47.981 [DEBUG] [Thread-128731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:49:47.998 [INFO] [Thread-128731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:49:47.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-28T15:49:47.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:49:48.988 [DEBUG] [Thread-128731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:49:48.988 [DEBUG] [Thread-128731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:49:49.036 [DEBUG] [Thread-128731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:49:49.036 [DEBUG] [Thread-128731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:49:49.044 [DEBUG] [Thread-128731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:49:49.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:49:49.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T15:49:49.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-28T15:49:49.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:49:49.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:49:49.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:49:49.075 [DEBUG] [Thread-128731] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:49:53.542 [DEBUG] [Thread-128733 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:49:59.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:49:59.073 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:49:59.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-28T15:49:59.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 49, 42), 15.58, 35.21, 0.0, 19.57, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:49:59.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:49:42
2025-09-28T15:49:59.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:49:59.919 [DEBUG] [Thread-128734] [transport.py] [_log()] starting thread (client mode): 0x2b91df00
2025-09-28T15:49:59.919 [DEBUG] [Thread-128734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:49:59.939 [DEBUG] [Thread-128734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:49:59.939 [INFO] [Thread-128734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] client lang: <none>
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] server lang: <none>
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] kex follows: False
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] Compression: none
2025-09-28T15:49:59.943 [DEBUG] [Thread-128734] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:49:59.960 [DEBUG] [Thread-128734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:49:59.961 [DEBUG] [Thread-128734] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:49:59.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:49:59.962 [DEBUG] [Thread-128734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:49:59.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:00.004 [DEBUG] [Thread-128734] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:00.005 [DEBUG] [Thread-128734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:00.005 [DEBUG] [Thread-128734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:00.005 [DEBUG] [Thread-128734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:50:00.005 [DEBUG] [Thread-128734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:00.030 [INFO] [Thread-128734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:00.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:00.654 [DEBUG] [Thread-128734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:00.654 [DEBUG] [Thread-128734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:00.654 [DEBUG] [Thread-128734] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:50:00.696 [DEBUG] [Thread-128734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:00.696 [DEBUG] [Thread-128734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:00.699 [DEBUG] [Thread-128734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:00.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:00.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:50:00.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:50:00.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:50:00.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:00.724 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:50:00.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576124 -999.00  +18.20  14.92     39   +4.30 1 1 1 1 1   888    0 14.46 5.64 ----- 14.9 14.9 197.1 18.4 23.6 -27.0 22.8 -27.1 24.6 -26.7 25.6 -28.0
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:50:00.725 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576124
2025-09-28T15:50:00.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:50:00.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:50:00.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:50:00.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:50:00.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:50:00.727 [DEBUG] [Thread-128734] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:00.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:49:42', tmtdew=15.58, humidity=35.21, cloud=0.0, wind=19.57, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:49:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:50:00.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-28T15:50:00.824 [DEBUG] [Thread-128737] [transport.py] [_log()] starting thread (client mode): 0x2b91d120
2025-09-28T15:50:00.824 [DEBUG] [Thread-128737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:00.840 [DEBUG] [Thread-128737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:50:00.840 [INFO] [Thread-128737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:50:00.848 [DEBUG] [Thread-128737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:00.848 [DEBUG] [Thread-128737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:50:00.848 [DEBUG] [Thread-128737] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] Compression: none
2025-09-28T15:50:00.849 [DEBUG] [Thread-128737] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:00.904 [DEBUG] [Thread-128737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:00.905 [DEBUG] [Thread-128737] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:00.905 [DEBUG] [Thread-128737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:50:00.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:50:00.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:00.965 [DEBUG] [Thread-128737] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:00.965 [DEBUG] [Thread-128737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:00.965 [DEBUG] [Thread-128737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:00.965 [DEBUG] [Thread-128737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:50:00.965 [DEBUG] [Thread-128737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:00.984 [INFO] [Thread-128737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:00.984 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:50:00.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:01.949 [DEBUG] [Thread-128737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:01.949 [DEBUG] [Thread-128737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:01.997 [DEBUG] [Thread-128737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:01.997 [DEBUG] [Thread-128737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:02.006 [DEBUG] [Thread-128737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:02.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:02.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-28T15:50:02.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-28T15:50:02.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:02.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:02.032 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:02.040 [DEBUG] [Thread-128737] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:08.579 [DEBUG] [Thread-128739 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:12.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:50:12.040 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:50:12.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-28T15:50:12.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 49, 42), 15.58, 35.21, 0.0, 19.57, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:50:12.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:49:42
2025-09-28T15:50:12.743 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:50:12.892 [DEBUG] [Thread-128740] [transport.py] [_log()] starting thread (client mode): 0x2e38e6e0
2025-09-28T15:50:12.893 [DEBUG] [Thread-128740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:12.912 [DEBUG] [Thread-128740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:50:12.912 [INFO] [Thread-128740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] Compression: none
2025-09-28T15:50:12.915 [DEBUG] [Thread-128740] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:12.930 [DEBUG] [Thread-128740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:12.931 [DEBUG] [Thread-128740] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:12.931 [DEBUG] [Thread-128740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:50:12.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:50:12.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:12.933 [DEBUG] [Thread-128740] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:12.933 [DEBUG] [Thread-128740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:12.933 [DEBUG] [Thread-128740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:12.933 [DEBUG] [Thread-128740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:50:12.933 [DEBUG] [Thread-128740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:12.957 [INFO] [Thread-128740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:12.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:15.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:15.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:19.054 [DEBUG] [Thread-128742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:19.567 [DEBUG] [Thread-128740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:19.567 [DEBUG] [Thread-128740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:19.567 [DEBUG] [Thread-128740] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:50:19.607 [DEBUG] [Thread-128740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:19.607 [DEBUG] [Thread-128740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:19.610 [DEBUG] [Thread-128740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:19.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:19.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:50:19.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:50:19.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:50:19.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:19.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:50:19.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:19.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:19.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:50:19.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576124 -999.00  +18.20  14.92     39   +4.30 1 1 1 1 1   888    0 14.46 5.64 ----- 14.9 14.9 197.1 18.4 23.6 -27.0 22.8 -27.1 24.6 -26.7 25.6 -28.0
2025-09-28T15:50:19.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:50:19.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:50:19.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576124
2025-09-28T15:50:19.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:50:19.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:50:19.646 [DEBUG] [Thread-128740] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:19.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:50:19.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:50:19.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:50:19.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:49:42', tmtdew=15.58, humidity=35.21, cloud=0.0, wind=19.57, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:49:37.114', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:50:19.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-28T15:50:19.740 [DEBUG] [Thread-128744] [transport.py] [_log()] starting thread (client mode): 0x2e3613f0
2025-09-28T15:50:19.740 [DEBUG] [Thread-128744] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:19.755 [DEBUG] [Thread-128744] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:50:19.755 [INFO] [Thread-128744] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:19.763 [DEBUG] [Thread-128744] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:19.764 [DEBUG] [Thread-128744] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:19.765 [DEBUG] [Thread-128744] [transport.py] [_log()] Compression: none
2025-09-28T15:50:19.765 [DEBUG] [Thread-128744] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:19.821 [DEBUG] [Thread-128744] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:19.821 [DEBUG] [Thread-128744] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:19.822 [DEBUG] [Thread-128744] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:50:19.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:50:19.823 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:19.876 [DEBUG] [Thread-128744] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:19.877 [DEBUG] [Thread-128744] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:19.877 [DEBUG] [Thread-128744] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:19.877 [DEBUG] [Thread-128744] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:50:19.877 [DEBUG] [Thread-128744] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:19.895 [INFO] [Thread-128744] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:19.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-28T15:50:19.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:20.831 [DEBUG] [Thread-128744] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:20.831 [DEBUG] [Thread-128744] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:20.879 [DEBUG] [Thread-128744] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:20.879 [DEBUG] [Thread-128744] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:20.892 [DEBUG] [Thread-128744] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:20.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:20.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')
2025-09-28T15:50:20.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') -> 00000000
2025-09-28T15:50:20.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:20.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:20.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:20.926 [DEBUG] [Thread-128744] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:23.625 [DEBUG] [Thread-128746 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:30.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:50:30.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:50:30.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-28T15:50:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 50, 14), 15.4, 35.61, 0.0, 15.49, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:50:31.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:50:14
2025-09-28T15:50:31.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:50:31.780 [DEBUG] [Thread-128747] [transport.py] [_log()] starting thread (client mode): 0x2b9ba8f0
2025-09-28T15:50:31.780 [DEBUG] [Thread-128747] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:31.800 [DEBUG] [Thread-128747] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:50:31.800 [INFO] [Thread-128747] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:31.803 [DEBUG] [Thread-128747] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:31.804 [DEBUG] [Thread-128747] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:31.804 [DEBUG] [Thread-128747] [transport.py] [_log()] Compression: none
2025-09-28T15:50:31.804 [DEBUG] [Thread-128747] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:31.820 [DEBUG] [Thread-128747] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:31.820 [DEBUG] [Thread-128747] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:31.821 [DEBUG] [Thread-128747] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:50:31.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:50:31.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:31.823 [DEBUG] [Thread-128747] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:31.823 [DEBUG] [Thread-128747] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:31.823 [DEBUG] [Thread-128747] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:31.823 [DEBUG] [Thread-128747] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:50:31.823 [DEBUG] [Thread-128747] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:31.847 [INFO] [Thread-128747] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:31.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:32.475 [DEBUG] [Thread-128747] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:32.475 [DEBUG] [Thread-128747] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:32.475 [DEBUG] [Thread-128747] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:50:32.516 [DEBUG] [Thread-128747] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:32.516 [DEBUG] [Thread-128747] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:32.521 [DEBUG] [Thread-128747] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:32.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:32.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:50:32.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:50:32.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:50:32.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:32.539 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:50:32.539 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:32.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576470 -999.00  +18.00  12.60     39   +4.20 1 1 1 1 1   888    0 14.62 2.87 ----- 12.6 12.6 199.4 18.6 23.6 -27.6 22.8 -29.8 24.6 -26.8 25.6 -28.7
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576470
2025-09-28T15:50:32.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:50:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:50:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:50:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:50:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:50:32.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:50:14', tmtdew=15.4, humidity=35.61, cloud=0.0, wind=15.49, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:50:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:50:32.542 [DEBUG] [Thread-128747] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:32.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-28T15:50:32.635 [DEBUG] [Thread-128750] [transport.py] [_log()] starting thread (client mode): 0x2b9cf190
2025-09-28T15:50:32.635 [DEBUG] [Thread-128750] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:32.649 [DEBUG] [Thread-128750] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:50:32.649 [INFO] [Thread-128750] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:50:32.657 [DEBUG] [Thread-128750] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:32.657 [DEBUG] [Thread-128750] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:50:32.657 [DEBUG] [Thread-128750] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] Compression: none
2025-09-28T15:50:32.658 [DEBUG] [Thread-128750] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:32.716 [DEBUG] [Thread-128750] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:32.717 [DEBUG] [Thread-128750] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:32.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:50:32.718 [DEBUG] [Thread-128750] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:50:32.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:32.773 [DEBUG] [Thread-128750] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:32.773 [DEBUG] [Thread-128750] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:32.773 [DEBUG] [Thread-128750] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:32.773 [DEBUG] [Thread-128750] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:50:32.773 [DEBUG] [Thread-128750] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:32.792 [INFO] [Thread-128750] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:32.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:50:32.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:33.742 [DEBUG] [Thread-128750] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:33.742 [DEBUG] [Thread-128750] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:33.790 [DEBUG] [Thread-128750] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:33.790 [DEBUG] [Thread-128750] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:33.799 [DEBUG] [Thread-128750] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:33.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:33.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-28T15:50:33.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-28T15:50:33.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:33.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:33.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:33.834 [DEBUG] [Thread-128750] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:38.654 [DEBUG] [Thread-128752 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:43.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:50:43.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:50:43.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-28T15:50:44.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 50, 14), 15.4, 35.61, 0.0, 15.49, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:50:44.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:50:14
2025-09-28T15:50:44.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:50:44.678 [DEBUG] [Thread-128753] [transport.py] [_log()] starting thread (client mode): 0x2b91fd90
2025-09-28T15:50:44.678 [DEBUG] [Thread-128753] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:44.700 [DEBUG] [Thread-128753] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:50:44.700 [INFO] [Thread-128753] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:50:44.704 [DEBUG] [Thread-128753] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] Compression: none
2025-09-28T15:50:44.705 [DEBUG] [Thread-128753] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:44.723 [DEBUG] [Thread-128753] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:44.723 [DEBUG] [Thread-128753] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:44.724 [DEBUG] [Thread-128753] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:50:44.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:50:44.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:44.725 [DEBUG] [Thread-128753] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:44.726 [DEBUG] [Thread-128753] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:44.726 [DEBUG] [Thread-128753] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:44.726 [DEBUG] [Thread-128753] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:50:44.726 [DEBUG] [Thread-128753] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:44.741 [INFO] [Thread-128753] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:44.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:45.511 [DEBUG] [Thread-128753] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:45.512 [DEBUG] [Thread-128753] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:45.512 [DEBUG] [Thread-128753] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:50:45.552 [DEBUG] [Thread-128753] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:45.552 [DEBUG] [Thread-128753] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:45.555 [DEBUG] [Thread-128753] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:45.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:45.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:50:45.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:50:45.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:50:45.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:45.573 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:50:45.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:45.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576470 -999.00  +18.00  12.60     39   +4.20 1 1 1 1 1   888    0 14.62 2.87 ----- 12.6 12.6 199.4 18.6 23.6 -27.6 22.8 -29.8 24.6 -26.8 25.6 -28.7
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576470
2025-09-28T15:50:45.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:50:45.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:50:45.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:50:45.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:50:45.575 [DEBUG] [Thread-128753] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:45.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:50:45.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:50:14', tmtdew=15.4, humidity=35.61, cloud=0.0, wind=15.49, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:50:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:50:45.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-28T15:50:45.673 [DEBUG] [Thread-128756] [transport.py] [_log()] starting thread (client mode): 0x2b91f3a0
2025-09-28T15:50:45.673 [DEBUG] [Thread-128756] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:45.689 [DEBUG] [Thread-128756] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:50:45.689 [INFO] [Thread-128756] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:50:45.696 [DEBUG] [Thread-128756] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:45.697 [DEBUG] [Thread-128756] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:45.698 [DEBUG] [Thread-128756] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:45.699 [DEBUG] [Thread-128756] [transport.py] [_log()] Compression: none
2025-09-28T15:50:45.699 [DEBUG] [Thread-128756] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:45.757 [DEBUG] [Thread-128756] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:45.757 [DEBUG] [Thread-128756] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:45.758 [DEBUG] [Thread-128756] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:50:45.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:50:45.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:45.813 [DEBUG] [Thread-128756] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:45.813 [DEBUG] [Thread-128756] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:45.813 [DEBUG] [Thread-128756] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:45.813 [DEBUG] [Thread-128756] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:50:45.813 [DEBUG] [Thread-128756] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:45.833 [INFO] [Thread-128756] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:45.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-28T15:50:45.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:46.800 [DEBUG] [Thread-128756] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:46.800 [DEBUG] [Thread-128756] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:46.848 [DEBUG] [Thread-128756] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:46.848 [DEBUG] [Thread-128756] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:46.856 [DEBUG] [Thread-128756] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:46.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:46.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-28T15:50:46.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-28T15:50:46.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:46.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:46.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:46.887 [DEBUG] [Thread-128756] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:53.695 [DEBUG] [Thread-128758 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:50:56.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:50:56.884 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:50:56.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-28T15:50:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 50, 46), 15.21, 36.06, 0.0, 13.94, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:50:57.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:50:46
2025-09-28T15:50:57.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:50:57.725 [DEBUG] [Thread-128759] [transport.py] [_log()] starting thread (client mode): 0x2b96c160
2025-09-28T15:50:57.725 [DEBUG] [Thread-128759] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:57.745 [DEBUG] [Thread-128759] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:50:57.745 [INFO] [Thread-128759] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:50:57.748 [DEBUG] [Thread-128759] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:57.749 [DEBUG] [Thread-128759] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:57.750 [DEBUG] [Thread-128759] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:57.750 [DEBUG] [Thread-128759] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:57.750 [DEBUG] [Thread-128759] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:57.750 [DEBUG] [Thread-128759] [transport.py] [_log()] Compression: none
2025-09-28T15:50:57.750 [DEBUG] [Thread-128759] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:57.758 [DEBUG] [Thread-128759] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:57.759 [DEBUG] [Thread-128759] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:57.759 [DEBUG] [Thread-128759] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:50:57.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:50:57.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:57.761 [DEBUG] [Thread-128759] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:57.761 [DEBUG] [Thread-128759] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:57.761 [DEBUG] [Thread-128759] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:57.761 [DEBUG] [Thread-128759] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:50:57.761 [DEBUG] [Thread-128759] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:57.785 [INFO] [Thread-128759] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:57.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:58.361 [DEBUG] [Thread-128759] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:58.361 [DEBUG] [Thread-128759] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:58.361 [DEBUG] [Thread-128759] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:50:58.402 [DEBUG] [Thread-128759] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:58.403 [DEBUG] [Thread-128759] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:58.405 [DEBUG] [Thread-128759] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:58.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:58.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:50:58.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:50:58.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:50:58.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:58.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:50:58.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:58.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576818 -999.00  +18.30  11.36     39   +4.30 1 1 1 1 1   888    0 14.52 0.41 ----- 11.4 11.4 215.8 17.2 23.7 -26.9 22.8 -26.4 24.8 -26.9 25.8 -27.0
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576818
2025-09-28T15:50:58.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:50:58.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:50:58.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:50:58.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:50:58.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:50:58.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:50:46', tmtdew=15.21, humidity=36.06, cloud=0.0, wind=13.94, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:50:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:50:58.424 [DEBUG] [Thread-128759] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:50:58.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-28T15:50:58.518 [DEBUG] [Thread-128762] [transport.py] [_log()] starting thread (client mode): 0x2b91c5e0
2025-09-28T15:50:58.518 [DEBUG] [Thread-128762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:50:58.532 [DEBUG] [Thread-128762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:50:58.533 [INFO] [Thread-128762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:50:58.540 [DEBUG] [Thread-128762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] client lang: <none>
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] server lang: <none>
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] kex follows: False
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] Compression: none
2025-09-28T15:50:58.541 [DEBUG] [Thread-128762] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:50:58.596 [DEBUG] [Thread-128762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:50:58.596 [DEBUG] [Thread-128762] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:50:58.597 [DEBUG] [Thread-128762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:50:58.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:50:58.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:50:58.653 [DEBUG] [Thread-128762] [transport.py] [_log()] userauth is OK
2025-09-28T15:50:58.653 [DEBUG] [Thread-128762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:50:58.653 [DEBUG] [Thread-128762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:50:58.653 [DEBUG] [Thread-128762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:50:58.653 [DEBUG] [Thread-128762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:50:58.677 [INFO] [Thread-128762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:50:58.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-28T15:50:58.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:50:59.644 [DEBUG] [Thread-128762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:50:59.645 [DEBUG] [Thread-128762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:50:59.692 [DEBUG] [Thread-128762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:50:59.693 [DEBUG] [Thread-128762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:50:59.702 [DEBUG] [Thread-128762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:50:59.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:50:59.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-28T15:50:59.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-28T15:50:59.726 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:50:59.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:50:59.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:50:59.734 [DEBUG] [Thread-128762] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:08.725 [DEBUG] [Thread-128764 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:09.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:51:09.732 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:51:09.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-28T15:51:10.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 50, 46), 15.21, 36.06, 0.0, 13.94, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:51:10.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:50:46
2025-09-28T15:51:10.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:51:10.573 [DEBUG] [Thread-128765] [transport.py] [_log()] starting thread (client mode): 0x2b91f5e0
2025-09-28T15:51:10.573 [DEBUG] [Thread-128765] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:10.594 [DEBUG] [Thread-128765] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:51:10.594 [INFO] [Thread-128765] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] Compression: none
2025-09-28T15:51:10.597 [DEBUG] [Thread-128765] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:10.617 [DEBUG] [Thread-128765] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:10.617 [DEBUG] [Thread-128765] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:10.617 [DEBUG] [Thread-128765] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:51:10.618 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:51:10.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:10.620 [DEBUG] [Thread-128765] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:10.620 [DEBUG] [Thread-128765] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:10.620 [DEBUG] [Thread-128765] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:10.620 [DEBUG] [Thread-128765] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:51:10.620 [DEBUG] [Thread-128765] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:10.644 [INFO] [Thread-128765] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:10.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:11.379 [DEBUG] [Thread-128765] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:11.379 [DEBUG] [Thread-128765] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:11.379 [DEBUG] [Thread-128765] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:51:11.420 [DEBUG] [Thread-128765] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:11.420 [DEBUG] [Thread-128765] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:11.423 [DEBUG] [Thread-128765] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:11.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:11.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:51:11.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:51:11.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:51:11.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:11.444 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:51:11.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576818 -999.00  +18.30  11.36     39   +4.30 1 1 1 1 1   888    0 14.52 0.41 ----- 11.4 11.4 215.8 17.2 23.7 -26.9 22.8 -26.4 24.8 -26.9 25.8 -27.0
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:51:11.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576818
2025-09-28T15:51:11.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:51:11.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:51:11.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:51:11.447 [DEBUG] [Thread-128765] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:11.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:51:11.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:51:11.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:50:46', tmtdew=15.21, humidity=36.06, cloud=0.0, wind=13.94, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:50:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:51:11.531 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:51:11.543 [DEBUG] [Thread-128768] [transport.py] [_log()] starting thread (client mode): 0x2b91f250
2025-09-28T15:51:11.543 [DEBUG] [Thread-128768] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:11.558 [DEBUG] [Thread-128768] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:51:11.558 [INFO] [Thread-128768] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:11.566 [DEBUG] [Thread-128768] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] Compression: none
2025-09-28T15:51:11.567 [DEBUG] [Thread-128768] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:11.624 [DEBUG] [Thread-128768] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:11.625 [DEBUG] [Thread-128768] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:11.625 [DEBUG] [Thread-128768] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:51:11.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:51:11.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:11.681 [DEBUG] [Thread-128768] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:11.681 [DEBUG] [Thread-128768] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:11.681 [DEBUG] [Thread-128768] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:11.681 [DEBUG] [Thread-128768] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:51:11.681 [DEBUG] [Thread-128768] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:11.701 [INFO] [Thread-128768] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:11.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-28T15:51:11.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:12.678 [DEBUG] [Thread-128768] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:12.678 [DEBUG] [Thread-128768] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:12.726 [DEBUG] [Thread-128768] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:12.727 [DEBUG] [Thread-128768] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:12.736 [DEBUG] [Thread-128768] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:12.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:12.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-28T15:51:12.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-28T15:51:12.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:12.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:12.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:12.770 [DEBUG] [Thread-128768] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:15.184 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:15.185 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:19.103 [DEBUG] [Thread-128770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:22.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:51:22.773 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:51:22.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:51:23.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 51, 17), 15.16, 36.17, 0.0, 13.39, 17.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:51:23.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:51:17
2025-09-28T15:51:23.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:51:23.610 [DEBUG] [Thread-128771] [transport.py] [_log()] starting thread (client mode): 0x2b96cf10
2025-09-28T15:51:23.611 [DEBUG] [Thread-128771] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:23.632 [DEBUG] [Thread-128771] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:51:23.633 [INFO] [Thread-128771] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:23.636 [DEBUG] [Thread-128771] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] Compression: none
2025-09-28T15:51:23.637 [DEBUG] [Thread-128771] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:23.655 [DEBUG] [Thread-128771] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:23.655 [DEBUG] [Thread-128771] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:23.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:51:23.656 [DEBUG] [Thread-128771] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:51:23.657 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:23.658 [DEBUG] [Thread-128771] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:23.658 [DEBUG] [Thread-128771] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:23.659 [DEBUG] [Thread-128771] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:23.659 [DEBUG] [Thread-128771] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:51:23.659 [DEBUG] [Thread-128771] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:23.676 [INFO] [Thread-128771] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:23.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:23.770 [DEBUG] [Thread-128773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:24.444 [DEBUG] [Thread-128771] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:24.444 [DEBUG] [Thread-128771] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:24.444 [DEBUG] [Thread-128771] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:51:24.485 [DEBUG] [Thread-128771] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:24.485 [DEBUG] [Thread-128771] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:24.488 [DEBUG] [Thread-128771] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:24.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:24.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:51:24.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:51:24.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:51:24.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:24.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:51:24.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:24.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:51:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.576818 -999.00  +18.30  11.36     39   +4.30 1 1 1 1 1   888    0 14.52 0.41 ----- 11.4 11.4 215.8 17.2 23.7 -26.9 22.8 -26.4 24.8 -26.9 25.8 -27.0
2025-09-28T15:51:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:51:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:51:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.576818
2025-09-28T15:51:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:51:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:51:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:51:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:51:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:51:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:51:17', tmtdew=15.16, humidity=36.17, cloud=0.0, wind=13.39, temperature=17.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:50:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:51:24.515 [DEBUG] [Thread-128771] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:24.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:51:24.609 [DEBUG] [Thread-128775] [transport.py] [_log()] starting thread (client mode): 0x2b96e260
2025-09-28T15:51:24.610 [DEBUG] [Thread-128775] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:24.624 [DEBUG] [Thread-128775] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:51:24.624 [INFO] [Thread-128775] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:24.631 [DEBUG] [Thread-128775] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] Compression: none
2025-09-28T15:51:24.632 [DEBUG] [Thread-128775] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:24.688 [DEBUG] [Thread-128775] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:24.688 [DEBUG] [Thread-128775] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:24.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:51:24.689 [DEBUG] [Thread-128775] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:51:24.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:24.745 [DEBUG] [Thread-128775] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:24.745 [DEBUG] [Thread-128775] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:24.745 [DEBUG] [Thread-128775] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:24.745 [DEBUG] [Thread-128775] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:51:24.745 [DEBUG] [Thread-128775] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:24.763 [INFO] [Thread-128775] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:24.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-28T15:51:24.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:25.695 [DEBUG] [Thread-128775] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:25.695 [DEBUG] [Thread-128775] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:25.742 [DEBUG] [Thread-128775] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:25.742 [DEBUG] [Thread-128775] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:25.751 [DEBUG] [Thread-128775] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:25.760 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:25.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-28T15:51:25.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-28T15:51:25.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:25.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:25.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:25.786 [DEBUG] [Thread-128775] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:35.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:51:35.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:51:35.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-28T15:51:36.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 51, 17), 15.16, 36.17, 0.0, 13.39, 17.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:51:36.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:51:17
2025-09-28T15:51:36.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:51:36.614 [DEBUG] [Thread-128777] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-28T15:51:36.614 [DEBUG] [Thread-128777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:36.635 [DEBUG] [Thread-128777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:51:36.636 [INFO] [Thread-128777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:51:36.639 [DEBUG] [Thread-128777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:36.639 [DEBUG] [Thread-128777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:51:36.639 [DEBUG] [Thread-128777] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:36.639 [DEBUG] [Thread-128777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:36.639 [DEBUG] [Thread-128777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] Compression: none
2025-09-28T15:51:36.640 [DEBUG] [Thread-128777] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:36.657 [DEBUG] [Thread-128777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:36.658 [DEBUG] [Thread-128777] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:36.658 [DEBUG] [Thread-128777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:51:36.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:51:36.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:36.660 [DEBUG] [Thread-128777] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:36.661 [DEBUG] [Thread-128777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:36.661 [DEBUG] [Thread-128777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:36.661 [DEBUG] [Thread-128777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:51:36.661 [DEBUG] [Thread-128777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:36.678 [INFO] [Thread-128777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:36.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:37.278 [DEBUG] [Thread-128777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:37.279 [DEBUG] [Thread-128777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:37.279 [DEBUG] [Thread-128777] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:51:37.319 [DEBUG] [Thread-128777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:37.319 [DEBUG] [Thread-128777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:37.322 [DEBUG] [Thread-128777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:37.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:37.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:51:37.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:51:37.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:51:37.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:37.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:51:37.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577165 -999.00  +18.50  17.55     39   +4.40 1 1 1 1 1   888    0 14.74 -1.83 ----- 17.6 17.6 222.3 24.0 23.7 -27.6 22.9 -25.9 24.6 -26.8 25.8 -27.0
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:51:37.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577165
2025-09-28T15:51:37.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:51:37.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:51:37.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:51:37.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:51:37.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:51:37.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:51:17', tmtdew=15.16, humidity=36.17, cloud=0.0, wind=13.39, temperature=17.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:51:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:51:37.348 [DEBUG] [Thread-128777] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:37.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-28T15:51:37.443 [DEBUG] [Thread-128780] [transport.py] [_log()] starting thread (client mode): 0x2b956890
2025-09-28T15:51:37.443 [DEBUG] [Thread-128780] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:37.458 [DEBUG] [Thread-128780] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:51:37.458 [INFO] [Thread-128780] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:51:37.466 [DEBUG] [Thread-128780] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:37.466 [DEBUG] [Thread-128780] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] Compression: none
2025-09-28T15:51:37.467 [DEBUG] [Thread-128780] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:37.524 [DEBUG] [Thread-128780] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:37.525 [DEBUG] [Thread-128780] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:37.525 [DEBUG] [Thread-128780] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:51:37.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:51:37.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:37.582 [DEBUG] [Thread-128780] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:37.582 [DEBUG] [Thread-128780] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:37.582 [DEBUG] [Thread-128780] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:37.582 [DEBUG] [Thread-128780] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:51:37.582 [DEBUG] [Thread-128780] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:37.601 [INFO] [Thread-128780] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51: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-28T15:51:37.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:38.529 [DEBUG] [Thread-128780] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:38.529 [DEBUG] [Thread-128780] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:38.577 [DEBUG] [Thread-128780] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:38.577 [DEBUG] [Thread-128780] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:38.585 [DEBUG] [Thread-128780] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:38.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:38.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-28T15:51:38.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-28T15:51:38.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:38.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:38.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:38.618 [DEBUG] [Thread-128780] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:38.799 [DEBUG] [Thread-128782 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:51:48.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:51:48.620 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:51:48.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-28T15:51:49.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 51, 17), 15.16, 36.17, 0.0, 13.39, 17.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:51:49.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:51:17
2025-09-28T15:51:49.322 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:51:49.469 [DEBUG] [Thread-128783] [transport.py] [_log()] starting thread (client mode): 0x2b96d930
2025-09-28T15:51:49.470 [DEBUG] [Thread-128783] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:49.485 [DEBUG] [Thread-128783] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:51:49.485 [INFO] [Thread-128783] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:51:49.488 [DEBUG] [Thread-128783] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:49.488 [DEBUG] [Thread-128783] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:51:49.488 [DEBUG] [Thread-128783] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:49.488 [DEBUG] [Thread-128783] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] Compression: none
2025-09-28T15:51:49.489 [DEBUG] [Thread-128783] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:49.508 [DEBUG] [Thread-128783] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:49.509 [DEBUG] [Thread-128783] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:49.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:51:49.510 [DEBUG] [Thread-128783] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:51:49.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:49.512 [DEBUG] [Thread-128783] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:49.512 [DEBUG] [Thread-128783] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:49.512 [DEBUG] [Thread-128783] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:49.512 [DEBUG] [Thread-128783] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:51:49.513 [DEBUG] [Thread-128783] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:49.538 [INFO] [Thread-128783] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:49.539 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:50.389 [DEBUG] [Thread-128783] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:50.389 [DEBUG] [Thread-128783] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:50.389 [DEBUG] [Thread-128783] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:51:50.430 [DEBUG] [Thread-128783] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:50.430 [DEBUG] [Thread-128783] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:50.433 [DEBUG] [Thread-128783] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:50.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:50.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:51:50.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:51:50.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:51:50.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:50.451 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:51:50.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577165 -999.00  +18.50  17.55     39   +4.40 1 1 1 1 1   888    0 14.74 -1.83 ----- 17.6 17.6 222.3 24.0 23.7 -27.6 22.9 -25.9 24.6 -26.8 25.8 -27.0
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577165
2025-09-28T15:51:50.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:51:50.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:51:50.452 [DEBUG] [Thread-128783] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:50.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:51:50.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:51:50.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:51:50.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:51:17', tmtdew=15.16, humidity=36.17, cloud=0.0, wind=13.39, temperature=17.35, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:51:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:51:50.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-28T15:51:50.542 [DEBUG] [Thread-128786] [transport.py] [_log()] starting thread (client mode): 0x2b96f760
2025-09-28T15:51:50.542 [DEBUG] [Thread-128786] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:51:50.556 [DEBUG] [Thread-128786] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:51:50.557 [INFO] [Thread-128786] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] client lang: <none>
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] server lang: <none>
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] kex follows: False
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] Compression: none
2025-09-28T15:51:50.564 [DEBUG] [Thread-128786] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:51:50.623 [DEBUG] [Thread-128786] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:51:50.623 [DEBUG] [Thread-128786] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:51:50.623 [DEBUG] [Thread-128786] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:51:50.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:51:50.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:51:50.681 [DEBUG] [Thread-128786] [transport.py] [_log()] userauth is OK
2025-09-28T15:51:50.681 [DEBUG] [Thread-128786] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:51:50.681 [DEBUG] [Thread-128786] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:51:50.681 [DEBUG] [Thread-128786] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:51:50.681 [DEBUG] [Thread-128786] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:51:50.695 [INFO] [Thread-128786] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:51:50.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-28T15:51:50.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:51:51.626 [DEBUG] [Thread-128786] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:51:51.626 [DEBUG] [Thread-128786] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:51:51.674 [DEBUG] [Thread-128786] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:51:51.674 [DEBUG] [Thread-128786] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:51:51.682 [DEBUG] [Thread-128786] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:51:51.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:51:51.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-28T15:51:51.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T15:51:51.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:51:51.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:51:51.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:51:51.712 [DEBUG] [Thread-128786] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:51:53.832 [DEBUG] [Thread-128788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:01.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:52:01.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:52:01.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-28T15:52:02.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 51, 49), 15.77, 34.66, 0.0, 22.64, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:52:02.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:51:49
2025-09-28T15:52:02.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:52:02.561 [DEBUG] [Thread-128789] [transport.py] [_log()] starting thread (client mode): 0x2b956380
2025-09-28T15:52:02.561 [DEBUG] [Thread-128789] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:02.581 [DEBUG] [Thread-128789] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:52:02.581 [INFO] [Thread-128789] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:02.583 [DEBUG] [Thread-128789] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] Compression: none
2025-09-28T15:52:02.584 [DEBUG] [Thread-128789] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:02.594 [DEBUG] [Thread-128789] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:02.594 [DEBUG] [Thread-128789] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:02.594 [DEBUG] [Thread-128789] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:52:02.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:52:02.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:02.596 [DEBUG] [Thread-128789] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:02.597 [DEBUG] [Thread-128789] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:02.597 [DEBUG] [Thread-128789] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:02.597 [DEBUG] [Thread-128789] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:52:02.597 [DEBUG] [Thread-128789] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:02.614 [INFO] [Thread-128789] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:02.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:03.224 [DEBUG] [Thread-128789] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:03.224 [DEBUG] [Thread-128789] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:03.225 [DEBUG] [Thread-128789] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:52:03.265 [DEBUG] [Thread-128789] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:03.265 [DEBUG] [Thread-128789] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:03.268 [DEBUG] [Thread-128789] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:03.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:03.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:52:03.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:52:03.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:52:03.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:03.290 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:52:03.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:03.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:03.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:52:03.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577512 -999.00  +18.70   8.55     38   +4.40 1 1 1 1 1   888    0 14.52 -4.49 ----- 8.6 8.6 181.3 22.6 23.6 -27.5 23.0 -26.3 24.8 -26.0 25.7 -27.0
2025-09-28T15:52:03.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:52:03.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:52:03.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577512
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:52:03.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:51:49', tmtdew=15.77, humidity=34.66, cloud=0.0, wind=22.64, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:51:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:52:03.293 [DEBUG] [Thread-128789] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:03.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-28T15:52:03.391 [DEBUG] [Thread-128792] [transport.py] [_log()] starting thread (client mode): 0x2b91ddb0
2025-09-28T15:52:03.392 [DEBUG] [Thread-128792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:03.409 [DEBUG] [Thread-128792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:52:03.409 [INFO] [Thread-128792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:52:03.416 [DEBUG] [Thread-128792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:03.417 [DEBUG] [Thread-128792] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:03.418 [DEBUG] [Thread-128792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:03.419 [DEBUG] [Thread-128792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:03.419 [DEBUG] [Thread-128792] [transport.py] [_log()] Compression: none
2025-09-28T15:52:03.419 [DEBUG] [Thread-128792] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:03.476 [DEBUG] [Thread-128792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:03.477 [DEBUG] [Thread-128792] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:03.477 [DEBUG] [Thread-128792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:52:03.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:52:03.478 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:03.532 [DEBUG] [Thread-128792] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:03.533 [DEBUG] [Thread-128792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:03.533 [DEBUG] [Thread-128792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:03.533 [DEBUG] [Thread-128792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:52:03.533 [DEBUG] [Thread-128792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:03.555 [INFO] [Thread-128792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:03.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-28T15:52:03.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:04.525 [DEBUG] [Thread-128792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:04.525 [DEBUG] [Thread-128792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:04.572 [DEBUG] [Thread-128792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:04.572 [DEBUG] [Thread-128792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:04.581 [DEBUG] [Thread-128792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:04.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:04.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-28T15:52:04.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-28T15:52:04.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:04.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:04.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:04.616 [DEBUG] [Thread-128792] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:08.863 [DEBUG] [Thread-128794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:14.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:52:14.618 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:52:14.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-28T15:52:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 51, 49), 15.77, 34.66, 0.0, 22.64, 17.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:52:15.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:51:49
2025-09-28T15:52:15.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:15.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:15.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:52:15.486 [DEBUG] [Thread-128795] [transport.py] [_log()] starting thread (client mode): 0x2b96c790
2025-09-28T15:52:15.486 [DEBUG] [Thread-128795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:15.507 [DEBUG] [Thread-128795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:52:15.507 [INFO] [Thread-128795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:52:15.510 [DEBUG] [Thread-128795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:15.510 [DEBUG] [Thread-128795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] Compression: none
2025-09-28T15:52:15.511 [DEBUG] [Thread-128795] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:15.526 [DEBUG] [Thread-128795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:15.526 [DEBUG] [Thread-128795] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:15.526 [DEBUG] [Thread-128795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:52:15.526 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:52:15.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:15.527 [DEBUG] [Thread-128795] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:15.527 [DEBUG] [Thread-128795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:15.527 [DEBUG] [Thread-128795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:15.527 [DEBUG] [Thread-128795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:52:15.527 [DEBUG] [Thread-128795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:15.542 [INFO] [Thread-128795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:15.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:16.365 [DEBUG] [Thread-128795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:16.365 [DEBUG] [Thread-128795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:16.365 [DEBUG] [Thread-128795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:52:16.406 [DEBUG] [Thread-128795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:16.406 [DEBUG] [Thread-128795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:16.408 [DEBUG] [Thread-128795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:16.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:16.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:52:16.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:52:16.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:52:16.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:16.425 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:52:16.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:16.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577512 -999.00  +18.70   8.55     38   +4.40 1 1 1 1 1   888    0 14.52 -4.49 ----- 8.6 8.6 181.3 22.6 23.6 -27.5 23.0 -26.3 24.8 -26.0 25.7 -27.0
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577512
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:52:16.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:51:49', tmtdew=15.77, humidity=34.66, cloud=0.0, wind=22.64, temperature=17.92, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:51:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:52:16.427 [DEBUG] [Thread-128795] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:16.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-28T15:52:16.509 [DEBUG] [Thread-128798] [transport.py] [_log()] starting thread (client mode): 0x2b955690
2025-09-28T15:52:16.509 [DEBUG] [Thread-128798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:16.523 [DEBUG] [Thread-128798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:52:16.523 [INFO] [Thread-128798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] Compression: none
2025-09-28T15:52:16.531 [DEBUG] [Thread-128798] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:16.587 [DEBUG] [Thread-128798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:16.587 [DEBUG] [Thread-128798] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:16.587 [DEBUG] [Thread-128798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:52:16.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:52:16.587 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:16.644 [DEBUG] [Thread-128798] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:16.644 [DEBUG] [Thread-128798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:16.644 [DEBUG] [Thread-128798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:16.644 [DEBUG] [Thread-128798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:52:16.644 [DEBUG] [Thread-128798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:16.658 [INFO] [Thread-128798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:16.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-28T15:52:16.659 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:17.615 [DEBUG] [Thread-128798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:17.615 [DEBUG] [Thread-128798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:17.663 [DEBUG] [Thread-128798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:17.663 [DEBUG] [Thread-128798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:17.671 [DEBUG] [Thread-128798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:17.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:17.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-28T15:52:17.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-28T15:52:17.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:17.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:17.695 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:17.703 [DEBUG] [Thread-128798] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:19.148 [DEBUG] [Thread-128800 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:23.905 [DEBUG] [Thread-128801 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:27.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:52:27.706 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:52:27.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-28T15:52:28.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 52, 21), 15.79, 34.62, 0.0, 20.42, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:52:28.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:52:21
2025-09-28T15:52:28.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:52:28.537 [DEBUG] [Thread-128802] [transport.py] [_log()] starting thread (client mode): 0x2e38e0e0
2025-09-28T15:52:28.537 [DEBUG] [Thread-128802] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:28.557 [DEBUG] [Thread-128802] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:52:28.557 [INFO] [Thread-128802] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:52:28.560 [DEBUG] [Thread-128802] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] Compression: none
2025-09-28T15:52:28.561 [DEBUG] [Thread-128802] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:28.575 [DEBUG] [Thread-128802] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:28.576 [DEBUG] [Thread-128802] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:28.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:52:28.577 [DEBUG] [Thread-128802] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:52:28.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:28.578 [DEBUG] [Thread-128802] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:28.579 [DEBUG] [Thread-128802] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:28.579 [DEBUG] [Thread-128802] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:28.579 [DEBUG] [Thread-128802] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:52:28.579 [DEBUG] [Thread-128802] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:28.604 [INFO] [Thread-128802] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:28.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:29.392 [DEBUG] [Thread-128802] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:29.392 [DEBUG] [Thread-128802] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:29.392 [DEBUG] [Thread-128802] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:52:29.433 [DEBUG] [Thread-128802] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:29.433 [DEBUG] [Thread-128802] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:29.435 [DEBUG] [Thread-128802] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:29.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:29.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:52:29.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:52:29.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:52:29.457 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:29.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:52:29.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577512 -999.00  +18.70   8.55     38   +4.40 1 1 1 1 1   888    0 14.52 -4.49 ----- 8.6 8.6 181.3 22.6 23.6 -27.5 23.0 -26.3 24.8 -26.0 25.7 -27.0
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:52:29.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577512
2025-09-28T15:52:29.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:52:29.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:52:29.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:52:29.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:52:29.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:52:29.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:52:21', tmtdew=15.79, humidity=34.62, cloud=0.0, wind=20.42, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:51:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:52:29.461 [DEBUG] [Thread-128802] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:29.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-28T15:52:29.556 [DEBUG] [Thread-128805] [transport.py] [_log()] starting thread (client mode): 0x2b956da0
2025-09-28T15:52:29.556 [DEBUG] [Thread-128805] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:29.571 [DEBUG] [Thread-128805] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:52:29.571 [INFO] [Thread-128805] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:52:29.578 [DEBUG] [Thread-128805] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:29.579 [DEBUG] [Thread-128805] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:29.580 [DEBUG] [Thread-128805] [transport.py] [_log()] Compression: none
2025-09-28T15:52:29.581 [DEBUG] [Thread-128805] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:29.641 [DEBUG] [Thread-128805] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:29.641 [DEBUG] [Thread-128805] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:29.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:52:29.643 [DEBUG] [Thread-128805] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:52:29.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:29.697 [DEBUG] [Thread-128805] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:29.697 [DEBUG] [Thread-128805] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:29.697 [DEBUG] [Thread-128805] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:29.697 [DEBUG] [Thread-128805] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:52:29.698 [DEBUG] [Thread-128805] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:29.717 [INFO] [Thread-128805] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52: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-28T15:52:29.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:30.683 [DEBUG] [Thread-128805] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:30.683 [DEBUG] [Thread-128805] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:30.731 [DEBUG] [Thread-128805] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:30.731 [DEBUG] [Thread-128805] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:30.740 [DEBUG] [Thread-128805] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:30.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:30.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')
2025-09-28T15:52:30.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') -> 00000000
2025-09-28T15:52:30.766 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:30.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:30.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:30.774 [DEBUG] [Thread-128805] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:38.939 [DEBUG] [Thread-128807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:40.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:52:40.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:52:40.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-28T15:52:41.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 52, 21), 15.79, 34.62, 0.0, 20.42, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:52:41.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:52:21
2025-09-28T15:52:41.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:52:41.599 [DEBUG] [Thread-128808] [transport.py] [_log()] starting thread (client mode): 0x2b91e200
2025-09-28T15:52:41.599 [DEBUG] [Thread-128808] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:41.619 [DEBUG] [Thread-128808] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:52:41.619 [INFO] [Thread-128808] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:41.622 [DEBUG] [Thread-128808] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] Compression: none
2025-09-28T15:52:41.623 [DEBUG] [Thread-128808] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:41.641 [DEBUG] [Thread-128808] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:41.642 [DEBUG] [Thread-128808] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:41.642 [DEBUG] [Thread-128808] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:52:41.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:52:41.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:41.645 [DEBUG] [Thread-128808] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:41.645 [DEBUG] [Thread-128808] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:41.645 [DEBUG] [Thread-128808] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:41.645 [DEBUG] [Thread-128808] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:52:41.645 [DEBUG] [Thread-128808] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:41.669 [INFO] [Thread-128808] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:41.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:42.327 [DEBUG] [Thread-128808] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:42.327 [DEBUG] [Thread-128808] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:42.327 [DEBUG] [Thread-128808] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:52:42.368 [DEBUG] [Thread-128808] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:42.369 [DEBUG] [Thread-128808] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:42.370 [DEBUG] [Thread-128808] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:42.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:42.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:52:42.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:52:42.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:52:42.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:42.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:52:42.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:42.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577860 -999.00  +19.00  14.66     38   +4.40 1 1 1 1 1   888    0 14.35 -7.78 ----- 14.7 14.7 224.9 19.3 23.7 -27.5 23.0 -26.4 24.8 -26.0 25.7 -28.8
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577860
2025-09-28T15:52:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:52:42.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:52:42.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:52:42.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:52:42.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:52:42.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:52:21', tmtdew=15.79, humidity=34.62, cloud=0.0, wind=20.42, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:52:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:52:42.396 [DEBUG] [Thread-128808] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:42.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-28T15:52:42.494 [DEBUG] [Thread-128811] [transport.py] [_log()] starting thread (client mode): 0x2b96c9a0
2025-09-28T15:52:42.494 [DEBUG] [Thread-128811] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:42.509 [DEBUG] [Thread-128811] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:52:42.509 [INFO] [Thread-128811] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:52:42.516 [DEBUG] [Thread-128811] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:42.516 [DEBUG] [Thread-128811] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:52:42.516 [DEBUG] [Thread-128811] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:42.516 [DEBUG] [Thread-128811] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:42.516 [DEBUG] [Thread-128811] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] Compression: none
2025-09-28T15:52:42.517 [DEBUG] [Thread-128811] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:42.576 [DEBUG] [Thread-128811] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:42.577 [DEBUG] [Thread-128811] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:42.577 [DEBUG] [Thread-128811] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:52:42.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:52:42.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:42.633 [DEBUG] [Thread-128811] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:42.633 [DEBUG] [Thread-128811] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:42.633 [DEBUG] [Thread-128811] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:42.633 [DEBUG] [Thread-128811] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:52:42.633 [DEBUG] [Thread-128811] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:42.652 [INFO] [Thread-128811] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:42.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-28T15:52:42.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:43.602 [DEBUG] [Thread-128811] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:43.602 [DEBUG] [Thread-128811] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:43.650 [DEBUG] [Thread-128811] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:43.650 [DEBUG] [Thread-128811] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:43.659 [DEBUG] [Thread-128811] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:43.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:43.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-28T15:52:43.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-28T15:52:43.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:43.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:43.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:43.693 [DEBUG] [Thread-128811] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:53.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:52:53.696 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:52:53.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-28T15:52:53.980 [DEBUG] [Thread-128813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:52:54.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 52, 21), 15.79, 34.62, 0.0, 20.42, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:52:54.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:52:21
2025-09-28T15:52:54.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:52:54.583 [DEBUG] [Thread-128814] [transport.py] [_log()] starting thread (client mode): 0x2b955090
2025-09-28T15:52:54.584 [DEBUG] [Thread-128814] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:54.603 [DEBUG] [Thread-128814] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:52:54.603 [INFO] [Thread-128814] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:54.606 [DEBUG] [Thread-128814] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] Compression: none
2025-09-28T15:52:54.607 [DEBUG] [Thread-128814] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:54.622 [DEBUG] [Thread-128814] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:54.622 [DEBUG] [Thread-128814] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:54.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:52:54.623 [DEBUG] [Thread-128814] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:52:54.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:54.623 [DEBUG] [Thread-128814] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:54.623 [DEBUG] [Thread-128814] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:54.623 [DEBUG] [Thread-128814] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:54.623 [DEBUG] [Thread-128814] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:52:54.624 [DEBUG] [Thread-128814] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:54.633 [INFO] [Thread-128814] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:54.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:55.445 [DEBUG] [Thread-128814] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:55.445 [DEBUG] [Thread-128814] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:55.445 [DEBUG] [Thread-128814] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:52:55.486 [DEBUG] [Thread-128814] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:55.486 [DEBUG] [Thread-128814] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:55.488 [DEBUG] [Thread-128814] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:55.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:55.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:52:55.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:52:55.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:52:55.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:55.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:52:55.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577860 -999.00  +19.00  14.66     38   +4.40 1 1 1 1 1   888    0 14.35 -7.78 ----- 14.7 14.7 224.9 19.3 23.7 -27.5 23.0 -26.4 24.8 -26.0 25.7 -28.8
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577860
2025-09-28T15:52:55.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:52:55.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:52:55.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:52:55.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:52:55.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:52:55.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:52:21', tmtdew=15.79, humidity=34.62, cloud=0.0, wind=20.42, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:52:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:52:55.507 [DEBUG] [Thread-128814] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:52:55.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-28T15:52:55.590 [DEBUG] [Thread-128817] [transport.py] [_log()] starting thread (client mode): 0x2b96d5a0
2025-09-28T15:52:55.590 [DEBUG] [Thread-128817] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:52:55.605 [DEBUG] [Thread-128817] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:52:55.605 [INFO] [Thread-128817] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] client lang: <none>
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] server lang: <none>
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] kex follows: False
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] Compression: none
2025-09-28T15:52:55.613 [DEBUG] [Thread-128817] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:52:55.671 [DEBUG] [Thread-128817] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:52:55.671 [DEBUG] [Thread-128817] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:52:55.671 [DEBUG] [Thread-128817] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:52:55.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:52:55.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:52:55.728 [DEBUG] [Thread-128817] [transport.py] [_log()] userauth is OK
2025-09-28T15:52:55.728 [DEBUG] [Thread-128817] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:52:55.728 [DEBUG] [Thread-128817] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:52:55.728 [DEBUG] [Thread-128817] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:52:55.728 [DEBUG] [Thread-128817] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:52:55.743 [INFO] [Thread-128817] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:52:55.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-28T15:52:55.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:52:56.749 [DEBUG] [Thread-128817] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:52:56.750 [DEBUG] [Thread-128817] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:52:56.797 [DEBUG] [Thread-128817] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:52:56.798 [DEBUG] [Thread-128817] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:52:56.806 [DEBUG] [Thread-128817] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:52:56.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:52:56.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-28T15:52:56.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-28T15:52:56.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:52:56.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:52:56.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:52:56.841 [DEBUG] [Thread-128817] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:06.842 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:53:06.842 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:53:06.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-28T15:53:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 52, 53), 16.02, 34.46, 0.0, 22.39, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:53:07.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:52:53
2025-09-28T15:53:07.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:53:07.671 [DEBUG] [Thread-128819] [transport.py] [_log()] starting thread (client mode): 0x30dde4a0
2025-09-28T15:53:07.671 [DEBUG] [Thread-128819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:07.691 [DEBUG] [Thread-128819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:53:07.691 [INFO] [Thread-128819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:07.694 [DEBUG] [Thread-128819] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] Compression: none
2025-09-28T15:53:07.695 [DEBUG] [Thread-128819] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:07.711 [DEBUG] [Thread-128819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:07.712 [DEBUG] [Thread-128819] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:07.712 [DEBUG] [Thread-128819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:53:07.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:53:07.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:07.756 [DEBUG] [Thread-128819] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:07.757 [DEBUG] [Thread-128819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:07.757 [DEBUG] [Thread-128819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:07.757 [DEBUG] [Thread-128819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:53:07.757 [DEBUG] [Thread-128819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:07.792 [INFO] [Thread-128819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:07.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:08.579 [DEBUG] [Thread-128819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:08.579 [DEBUG] [Thread-128819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:08.579 [DEBUG] [Thread-128819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:53:08.620 [DEBUG] [Thread-128819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:08.620 [DEBUG] [Thread-128819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:08.625 [DEBUG] [Thread-128819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:08.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:08.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:53:08.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:53:08.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:53:08.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:08.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:53:08.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:08.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:08.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:53:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.577860 -999.00  +19.00  14.66     38   +4.40 1 1 1 1 1   888    0 14.35 -7.78 ----- 14.7 14.7 224.9 19.3 23.7 -27.5 23.0 -26.4 24.8 -26.0 25.7 -28.8
2025-09-28T15:53:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:53:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:53:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.577860
2025-09-28T15:53:08.655 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:53:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:53:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:53:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:53:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:53:08.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:52:53', tmtdew=16.02, humidity=34.46, cloud=0.0, wind=22.39, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:52:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:53:08.656 [DEBUG] [Thread-128819] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:08.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:53:08.753 [DEBUG] [Thread-128822] [transport.py] [_log()] starting thread (client mode): 0x2b955cc0
2025-09-28T15:53:08.753 [DEBUG] [Thread-128822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:08.771 [DEBUG] [Thread-128822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:53:08.771 [INFO] [Thread-128822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:53:08.781 [DEBUG] [Thread-128822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:08.781 [DEBUG] [Thread-128822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:08.782 [DEBUG] [Thread-128822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:08.783 [DEBUG] [Thread-128822] [transport.py] [_log()] Compression: none
2025-09-28T15:53:08.783 [DEBUG] [Thread-128822] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:08.843 [DEBUG] [Thread-128822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:08.843 [DEBUG] [Thread-128822] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:08.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:53:08.844 [DEBUG] [Thread-128822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:53:08.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:08.907 [DEBUG] [Thread-128822] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:08.907 [DEBUG] [Thread-128822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:08.907 [DEBUG] [Thread-128822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:08.907 [DEBUG] [Thread-128822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:53:08.907 [DEBUG] [Thread-128822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:08.926 [INFO] [Thread-128822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:08.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-28T15:53:08.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:09.012 [DEBUG] [Thread-128824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:09.890 [DEBUG] [Thread-128822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:09.891 [DEBUG] [Thread-128822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:09.938 [DEBUG] [Thread-128822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:09.938 [DEBUG] [Thread-128822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:09.947 [DEBUG] [Thread-128822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:09.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:09.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-28T15:53:09.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-28T15:53:09.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:09.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:09.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:09.983 [DEBUG] [Thread-128822] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:15.482 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:15.483 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:19.194 [DEBUG] [Thread-128825 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:19.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:53:19.977 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:53:19.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-28T15:53:20.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 52, 53), 16.02, 34.46, 0.0, 22.39, 18.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:53:20.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:52:53
2025-09-28T15:53:20.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:53:20.808 [DEBUG] [Thread-128826] [transport.py] [_log()] starting thread (client mode): 0x2b9b9540
2025-09-28T15:53:20.808 [DEBUG] [Thread-128826] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:20.827 [DEBUG] [Thread-128826] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:53:20.828 [INFO] [Thread-128826] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:53:20.829 [DEBUG] [Thread-128826] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:20.829 [DEBUG] [Thread-128826] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:53:20.829 [DEBUG] [Thread-128826] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:20.829 [DEBUG] [Thread-128826] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:20.829 [DEBUG] [Thread-128826] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] Compression: none
2025-09-28T15:53:20.830 [DEBUG] [Thread-128826] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:20.849 [DEBUG] [Thread-128826] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:20.849 [DEBUG] [Thread-128826] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:20.850 [DEBUG] [Thread-128826] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:53:20.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:53:20.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:20.851 [DEBUG] [Thread-128826] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:20.851 [DEBUG] [Thread-128826] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:20.852 [DEBUG] [Thread-128826] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:20.852 [DEBUG] [Thread-128826] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:53:20.852 [DEBUG] [Thread-128826] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:20.875 [INFO] [Thread-128826] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:20.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:21.552 [DEBUG] [Thread-128826] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:21.553 [DEBUG] [Thread-128826] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:21.553 [DEBUG] [Thread-128826] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:53:21.593 [DEBUG] [Thread-128826] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:21.593 [DEBUG] [Thread-128826] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:21.595 [DEBUG] [Thread-128826] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:21.608 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:21.609 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:53:21.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:53:21.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:53:21.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:21.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:53:21.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.578207 -999.00  +18.90  11.92     38   +4.30 1 1 1 1 1   888    0 13.99 -8.90 ----- 11.9 11.9 242.3 21.8 23.8 -27.7 23.0 -26.5 24.7 -27.0 25.8 -27.4
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.578207
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:53:21.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:52:53', tmtdew=16.02, humidity=34.46, cloud=0.0, wind=22.39, temperature=18.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:52:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:53:21.616 [DEBUG] [Thread-128826] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:21.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-28T15:53:21.698 [DEBUG] [Thread-128829] [transport.py] [_log()] starting thread (client mode): 0x2b9b8730
2025-09-28T15:53:21.698 [DEBUG] [Thread-128829] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:21.713 [DEBUG] [Thread-128829] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:53:21.713 [INFO] [Thread-128829] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] Compression: none
2025-09-28T15:53:21.721 [DEBUG] [Thread-128829] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:21.776 [DEBUG] [Thread-128829] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:21.777 [DEBUG] [Thread-128829] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:21.777 [DEBUG] [Thread-128829] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:53:21.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:53:21.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:21.833 [DEBUG] [Thread-128829] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:21.833 [DEBUG] [Thread-128829] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:21.833 [DEBUG] [Thread-128829] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:21.833 [DEBUG] [Thread-128829] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:53:21.833 [DEBUG] [Thread-128829] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:21.856 [INFO] [Thread-128829] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:21.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-28T15:53:21.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:22.789 [DEBUG] [Thread-128829] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:22.789 [DEBUG] [Thread-128829] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:22.837 [DEBUG] [Thread-128829] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:22.837 [DEBUG] [Thread-128829] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:22.846 [DEBUG] [Thread-128829] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:22.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:22.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-28T15:53:22.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-28T15:53:22.876 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:22.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:22.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:22.884 [DEBUG] [Thread-128829] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:24.058 [DEBUG] [Thread-128831 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:32.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:53:32.886 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:53:32.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-28T15:53:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 53, 25), 16.02, 34.42, 0.0, 22.87, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:53:33.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:53:25
2025-09-28T15:53:33.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:53:33.693 [DEBUG] [Thread-128832] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-28T15:53:33.693 [DEBUG] [Thread-128832] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:33.714 [DEBUG] [Thread-128832] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:53:33.714 [INFO] [Thread-128832] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:33.718 [DEBUG] [Thread-128832] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] Compression: none
2025-09-28T15:53:33.719 [DEBUG] [Thread-128832] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:33.737 [DEBUG] [Thread-128832] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:33.737 [DEBUG] [Thread-128832] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:33.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:53:33.738 [DEBUG] [Thread-128832] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:53:33.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:33.740 [DEBUG] [Thread-128832] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:33.740 [DEBUG] [Thread-128832] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:33.740 [DEBUG] [Thread-128832] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:33.740 [DEBUG] [Thread-128832] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:53:33.740 [DEBUG] [Thread-128832] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:33.757 [INFO] [Thread-128832] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:33.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:34.571 [DEBUG] [Thread-128832] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:34.571 [DEBUG] [Thread-128832] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:34.571 [DEBUG] [Thread-128832] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:53:34.612 [DEBUG] [Thread-128832] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:34.612 [DEBUG] [Thread-128832] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:34.615 [DEBUG] [Thread-128832] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:34.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:34.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:53:34.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:53:34.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:53:34.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:34.632 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:53:34.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.578207 -999.00  +18.90  11.92     38   +4.30 1 1 1 1 1   888    0 13.99 -8.90 ----- 11.9 11.9 242.3 21.8 23.8 -27.7 23.0 -26.5 24.7 -27.0 25.8 -27.4
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.578207
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:53:34.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:53:34.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:53:34.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:53:34.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:53:34.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:53:25', tmtdew=16.02, humidity=34.42, cloud=0.0, wind=22.87, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:52:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:53:34.633 [DEBUG] [Thread-128832] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:34.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-28T15:53:34.714 [DEBUG] [Thread-128835] [transport.py] [_log()] starting thread (client mode): 0x2b9b9c00
2025-09-28T15:53:34.714 [DEBUG] [Thread-128835] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:34.729 [DEBUG] [Thread-128835] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:53:34.729 [INFO] [Thread-128835] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:53:34.737 [DEBUG] [Thread-128835] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:34.737 [DEBUG] [Thread-128835] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:53:34.737 [DEBUG] [Thread-128835] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:34.737 [DEBUG] [Thread-128835] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:34.738 [DEBUG] [Thread-128835] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:34.739 [DEBUG] [Thread-128835] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:34.739 [DEBUG] [Thread-128835] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:34.739 [DEBUG] [Thread-128835] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:34.739 [DEBUG] [Thread-128835] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:34.739 [DEBUG] [Thread-128835] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:34.740 [DEBUG] [Thread-128835] [transport.py] [_log()] Compression: none
2025-09-28T15:53:34.740 [DEBUG] [Thread-128835] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:34.793 [DEBUG] [Thread-128835] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:34.793 [DEBUG] [Thread-128835] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:34.794 [DEBUG] [Thread-128835] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:53:34.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:53:34.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:34.849 [DEBUG] [Thread-128835] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:34.849 [DEBUG] [Thread-128835] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:34.849 [DEBUG] [Thread-128835] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:34.849 [DEBUG] [Thread-128835] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:53:34.849 [DEBUG] [Thread-128835] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:34.869 [INFO] [Thread-128835] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:34.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-28T15:53:34.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:35.887 [DEBUG] [Thread-128835] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:35.887 [DEBUG] [Thread-128835] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:35.935 [DEBUG] [Thread-128835] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:35.935 [DEBUG] [Thread-128835] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:35.944 [DEBUG] [Thread-128835] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:35.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:35.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-28T15:53:35.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-28T15:53:35.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:35.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:35.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:35.978 [DEBUG] [Thread-128835] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:39.099 [DEBUG] [Thread-128837 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:45.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:53:45.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:53:45.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-28T15:53:46.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 53, 25), 16.02, 34.42, 0.0, 22.87, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:53:46.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:53:25
2025-09-28T15:53:46.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:53:46.793 [DEBUG] [Thread-128838] [transport.py] [_log()] starting thread (client mode): 0x2e34a080
2025-09-28T15:53:46.793 [DEBUG] [Thread-128838] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:46.812 [DEBUG] [Thread-128838] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:53:46.812 [INFO] [Thread-128838] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:53:46.815 [DEBUG] [Thread-128838] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:46.815 [DEBUG] [Thread-128838] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:53:46.815 [DEBUG] [Thread-128838] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:46.815 [DEBUG] [Thread-128838] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:46.815 [DEBUG] [Thread-128838] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] Compression: none
2025-09-28T15:53:46.816 [DEBUG] [Thread-128838] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:46.833 [DEBUG] [Thread-128838] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:46.833 [DEBUG] [Thread-128838] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:46.834 [DEBUG] [Thread-128838] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:53:46.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:53:46.834 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:46.834 [DEBUG] [Thread-128838] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:46.834 [DEBUG] [Thread-128838] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:46.835 [DEBUG] [Thread-128838] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:46.835 [DEBUG] [Thread-128838] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:53:46.835 [DEBUG] [Thread-128838] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:46.846 [INFO] [Thread-128838] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:46.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:47.475 [DEBUG] [Thread-128838] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:47.475 [DEBUG] [Thread-128838] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:47.475 [DEBUG] [Thread-128838] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:53:47.527 [DEBUG] [Thread-128838] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:47.528 [DEBUG] [Thread-128838] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:47.531 [DEBUG] [Thread-128838] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:47.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:47.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:53:47.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:53:47.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:53:47.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:47.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:53:47.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:47.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:47.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:53:47.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.578901 -999.00  +18.70  13.05     38   +4.30 1 1 1 1 1   888    0 14.28 -12.25 ----- 13.1 13.1 213.8 16.7 23.6 -28.2 23.0 -26.5 24.6 -27.1 25.6 -28.2
2025-09-28T15:53:47.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:53:47.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:53:47.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.578901
2025-09-28T15:53:47.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:53:47.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:53:47.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:53:47.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:53:47.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:53:47.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:53:25', tmtdew=16.02, humidity=34.42, cloud=0.0, wind=22.87, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:53:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:53:47.554 [DEBUG] [Thread-128838] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:47.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-28T15:53:47.652 [DEBUG] [Thread-128841] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-28T15:53:47.652 [DEBUG] [Thread-128841] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:47.667 [DEBUG] [Thread-128841] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:53:47.667 [INFO] [Thread-128841] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:47.674 [DEBUG] [Thread-128841] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] Compression: none
2025-09-28T15:53:47.675 [DEBUG] [Thread-128841] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:47.735 [DEBUG] [Thread-128841] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:47.736 [DEBUG] [Thread-128841] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:47.736 [DEBUG] [Thread-128841] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:53:47.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:53:47.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:47.793 [DEBUG] [Thread-128841] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:47.793 [DEBUG] [Thread-128841] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:47.793 [DEBUG] [Thread-128841] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:47.793 [DEBUG] [Thread-128841] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:53:47.793 [DEBUG] [Thread-128841] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:47.812 [INFO] [Thread-128841] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:47.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:53:47.813 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:53:48.771 [DEBUG] [Thread-128841] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:53:48.771 [DEBUG] [Thread-128841] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:53:48.820 [DEBUG] [Thread-128841] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:53:48.820 [DEBUG] [Thread-128841] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:53:48.832 [DEBUG] [Thread-128841] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:53:48.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:53:48.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-28T15:53:48.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') -> 00000000
2025-09-28T15:53:48.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:53:48.859 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:53:48.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:53:48.867 [DEBUG] [Thread-128841] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:53:54.146 [DEBUG] [Thread-128843 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:53:58.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:53:58.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:53:58.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:53:59.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 53, 25), 16.02, 34.42, 0.0, 22.87, 17.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:53:59.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:53:25
2025-09-28T15:53:59.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:53:59.751 [DEBUG] [Thread-128844] [transport.py] [_log()] starting thread (client mode): 0x2e349510
2025-09-28T15:53:59.751 [DEBUG] [Thread-128844] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:53:59.770 [DEBUG] [Thread-128844] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:53:59.770 [INFO] [Thread-128844] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] client lang: <none>
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] server lang: <none>
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] kex follows: False
2025-09-28T15:53:59.773 [DEBUG] [Thread-128844] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] Compression: none
2025-09-28T15:53:59.774 [DEBUG] [Thread-128844] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:53:59.789 [DEBUG] [Thread-128844] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:53:59.789 [DEBUG] [Thread-128844] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:53:59.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:53:59.790 [DEBUG] [Thread-128844] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:53:59.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:53:59.792 [DEBUG] [Thread-128844] [transport.py] [_log()] userauth is OK
2025-09-28T15:53:59.792 [DEBUG] [Thread-128844] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:53:59.792 [DEBUG] [Thread-128844] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:53:59.793 [DEBUG] [Thread-128844] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:53:59.793 [DEBUG] [Thread-128844] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:53:59.817 [INFO] [Thread-128844] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:53:59.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:00.566 [DEBUG] [Thread-128844] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:00.566 [DEBUG] [Thread-128844] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:00.567 [DEBUG] [Thread-128844] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:54:00.607 [DEBUG] [Thread-128844] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:00.607 [DEBUG] [Thread-128844] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:00.610 [DEBUG] [Thread-128844] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:00.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:00.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:54:00.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:54:00.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:54:00.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:00.631 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:54:00.631 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:00.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:00.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:54:00.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.578901 -999.00  +18.70  13.05     38   +4.30 1 1 1 1 1   888    0 14.28 -12.25 ----- 13.1 13.1 213.8 16.7 23.6 -28.2 23.0 -26.5 24.6 -27.1 25.6 -28.2
2025-09-28T15:54:00.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:54:00.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:54:00.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.578901
2025-09-28T15:54:00.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:54:00.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:54:00.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:54:00.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:54:00.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:54:00.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:53:25', tmtdew=16.02, humidity=34.42, cloud=0.0, wind=22.87, temperature=17.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:53:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:54:00.633 [DEBUG] [Thread-128844] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:00.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-28T15:54:00.727 [DEBUG] [Thread-128847] [transport.py] [_log()] starting thread (client mode): 0x2b91c970
2025-09-28T15:54:00.727 [DEBUG] [Thread-128847] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:00.742 [DEBUG] [Thread-128847] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:54:00.742 [INFO] [Thread-128847] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:54:00.749 [DEBUG] [Thread-128847] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:00.750 [DEBUG] [Thread-128847] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:00.751 [DEBUG] [Thread-128847] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:00.752 [DEBUG] [Thread-128847] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:00.752 [DEBUG] [Thread-128847] [transport.py] [_log()] Compression: none
2025-09-28T15:54:00.752 [DEBUG] [Thread-128847] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:00.809 [DEBUG] [Thread-128847] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:00.809 [DEBUG] [Thread-128847] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:00.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:54:00.811 [DEBUG] [Thread-128847] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:54:00.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:00.865 [DEBUG] [Thread-128847] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:00.865 [DEBUG] [Thread-128847] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:00.866 [DEBUG] [Thread-128847] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:00.866 [DEBUG] [Thread-128847] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:54:00.866 [DEBUG] [Thread-128847] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:00.892 [INFO] [Thread-128847] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:00.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-28T15:54:00.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:01.868 [DEBUG] [Thread-128847] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:01.868 [DEBUG] [Thread-128847] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:01.917 [DEBUG] [Thread-128847] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:01.917 [DEBUG] [Thread-128847] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:01.926 [DEBUG] [Thread-128847] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:01.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:01.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-28T15:54:01.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-28T15:54:01.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:01.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:01.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:01.964 [DEBUG] [Thread-128847] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:09.189 [DEBUG] [Thread-128849 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:11.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:54:11.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:54:11.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-28T15:54:12.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 53, 57), 15.61, 34.75, 0.0, 21.53, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:54:12.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:53:57
2025-09-28T15:54:12.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:54:12.785 [DEBUG] [Thread-128850] [transport.py] [_log()] starting thread (client mode): 0x2e3dfe20
2025-09-28T15:54:12.785 [DEBUG] [Thread-128850] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:12.804 [DEBUG] [Thread-128850] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:54:12.805 [INFO] [Thread-128850] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:54:12.807 [DEBUG] [Thread-128850] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] Compression: none
2025-09-28T15:54:12.808 [DEBUG] [Thread-128850] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:12.825 [DEBUG] [Thread-128850] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:12.826 [DEBUG] [Thread-128850] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:12.826 [DEBUG] [Thread-128850] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:54:12.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:54:12.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:12.828 [DEBUG] [Thread-128850] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:12.829 [DEBUG] [Thread-128850] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:12.829 [DEBUG] [Thread-128850] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:12.829 [DEBUG] [Thread-128850] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:54:12.829 [DEBUG] [Thread-128850] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:12.846 [INFO] [Thread-128850] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:12.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:13.610 [DEBUG] [Thread-128850] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:13.610 [DEBUG] [Thread-128850] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:13.611 [DEBUG] [Thread-128850] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:54:13.651 [DEBUG] [Thread-128850] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:13.651 [DEBUG] [Thread-128850] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:13.655 [DEBUG] [Thread-128850] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:13.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:13.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:54:13.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:54:13.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:54:13.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:13.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:54:13.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:13.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:54:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.578901 -999.00  +18.70  13.05     38   +4.30 1 1 1 1 1   888    0 14.28 -12.25 ----- 13.1 13.1 213.8 16.7 23.6 -28.2 23.0 -26.5 24.6 -27.1 25.6 -28.2
2025-09-28T15:54:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:54:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:54:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.578901
2025-09-28T15:54:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:54:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:54:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:54:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:54:13.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:54:13.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:53:57', tmtdew=15.61, humidity=34.75, cloud=0.0, wind=21.53, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:53:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:54:13.681 [DEBUG] [Thread-128850] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:13.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:54:13.776 [DEBUG] [Thread-128853] [transport.py] [_log()] starting thread (client mode): 0x2e360f40
2025-09-28T15:54:13.777 [DEBUG] [Thread-128853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:13.792 [DEBUG] [Thread-128853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:54:13.792 [INFO] [Thread-128853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:54:13.799 [DEBUG] [Thread-128853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:13.800 [DEBUG] [Thread-128853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:13.801 [DEBUG] [Thread-128853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:13.802 [DEBUG] [Thread-128853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:13.802 [DEBUG] [Thread-128853] [transport.py] [_log()] Compression: none
2025-09-28T15:54:13.802 [DEBUG] [Thread-128853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:13.858 [DEBUG] [Thread-128853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:13.859 [DEBUG] [Thread-128853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:13.859 [DEBUG] [Thread-128853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:54:13.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:54:13.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:13.913 [DEBUG] [Thread-128853] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:13.914 [DEBUG] [Thread-128853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:13.914 [DEBUG] [Thread-128853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:13.914 [DEBUG] [Thread-128853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:54:13.914 [DEBUG] [Thread-128853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:13.934 [INFO] [Thread-128853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:13.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-28T15:54:13.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:14.873 [DEBUG] [Thread-128853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:14.873 [DEBUG] [Thread-128853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:14.921 [DEBUG] [Thread-128853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:14.921 [DEBUG] [Thread-128853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:14.930 [DEBUG] [Thread-128853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:14.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:14.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-28T15:54:14.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-28T15:54:14.956 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:14.957 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:14.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:14.965 [DEBUG] [Thread-128853] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:15.624 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:15.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:19.245 [DEBUG] [Thread-128855 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:24.219 [DEBUG] [Thread-128856 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:24.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:54:24.968 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:54:24.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-28T15:54:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 53, 57), 15.61, 34.75, 0.0, 21.53, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:54:25.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:53:57
2025-09-28T15:54:25.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:54:25.793 [DEBUG] [Thread-128857] [transport.py] [_log()] starting thread (client mode): 0x2b91ff40
2025-09-28T15:54:25.793 [DEBUG] [Thread-128857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:25.813 [DEBUG] [Thread-128857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:54:25.813 [INFO] [Thread-128857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:25.816 [DEBUG] [Thread-128857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] Compression: none
2025-09-28T15:54:25.817 [DEBUG] [Thread-128857] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:25.835 [DEBUG] [Thread-128857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:25.836 [DEBUG] [Thread-128857] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:25.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:54:25.837 [DEBUG] [Thread-128857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:54:25.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:25.839 [DEBUG] [Thread-128857] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:25.839 [DEBUG] [Thread-128857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:25.839 [DEBUG] [Thread-128857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:25.839 [DEBUG] [Thread-128857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:54:25.839 [DEBUG] [Thread-128857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:25.862 [INFO] [Thread-128857] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:25.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:26.503 [DEBUG] [Thread-128857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:26.503 [DEBUG] [Thread-128857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:26.503 [DEBUG] [Thread-128857] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:54:26.543 [DEBUG] [Thread-128857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:26.543 [DEBUG] [Thread-128857] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:26.546 [DEBUG] [Thread-128857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:26.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:26.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:54:26.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:54:26.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:54:26.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:26.570 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:54:26.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:26.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:54:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579248 -999.00  +18.90  10.06     38   +4.40 1 1 1 1 1   888    0 14.08 -14.59 ----- 10.1 10.1 206.2 18.1 23.8 -27.4 23.0 -27.8 24.7 -26.0 25.7 -27.7
2025-09-28T15:54:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:54:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:54:26.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579248
2025-09-28T15:54:26.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:54:26.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:54:26.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:54:26.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:54:26.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:54:26.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:53:57', tmtdew=15.61, humidity=34.75, cloud=0.0, wind=21.53, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:54:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:54:26.573 [DEBUG] [Thread-128857] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:26.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-28T15:54:26.668 [DEBUG] [Thread-128860] [transport.py] [_log()] starting thread (client mode): 0x2b96e200
2025-09-28T15:54:26.668 [DEBUG] [Thread-128860] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:26.684 [DEBUG] [Thread-128860] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:54:26.684 [INFO] [Thread-128860] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:54:26.691 [DEBUG] [Thread-128860] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] Compression: none
2025-09-28T15:54:26.692 [DEBUG] [Thread-128860] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:26.749 [DEBUG] [Thread-128860] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:26.750 [DEBUG] [Thread-128860] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:26.751 [DEBUG] [Thread-128860] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:54:26.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:54:26.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:26.805 [DEBUG] [Thread-128860] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:26.806 [DEBUG] [Thread-128860] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:26.806 [DEBUG] [Thread-128860] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:26.806 [DEBUG] [Thread-128860] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:54:26.806 [DEBUG] [Thread-128860] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:26.825 [INFO] [Thread-128860] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:26.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-28T15:54:26.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:27.818 [DEBUG] [Thread-128860] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:27.818 [DEBUG] [Thread-128860] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:27.866 [DEBUG] [Thread-128860] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:27.866 [DEBUG] [Thread-128860] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:27.875 [DEBUG] [Thread-128860] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:27.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:27.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-28T15:54:27.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') -> 00000000
2025-09-28T15:54:27.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:27.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:27.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:27.909 [DEBUG] [Thread-128860] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:54:37.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:54:37.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-28T15:54:38.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 54, 29), 15.43, 35.17, 0.0, 22.18, 17.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:54:38.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:54:29
2025-09-28T15:54:38.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:54:38.753 [DEBUG] [Thread-128862] [transport.py] [_log()] starting thread (client mode): 0x2e3dc220
2025-09-28T15:54:38.753 [DEBUG] [Thread-128862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:38.772 [DEBUG] [Thread-128862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:54:38.773 [INFO] [Thread-128862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:54:38.775 [DEBUG] [Thread-128862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:38.776 [DEBUG] [Thread-128862] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] Compression: none
2025-09-28T15:54:38.777 [DEBUG] [Thread-128862] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:38.795 [DEBUG] [Thread-128862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:38.796 [DEBUG] [Thread-128862] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:38.796 [DEBUG] [Thread-128862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:54:38.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:54:38.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:38.799 [DEBUG] [Thread-128862] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:38.799 [DEBUG] [Thread-128862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:38.799 [DEBUG] [Thread-128862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:38.799 [DEBUG] [Thread-128862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:54:38.799 [DEBUG] [Thread-128862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:38.822 [INFO] [Thread-128862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:38.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:39.262 [DEBUG] [Thread-128864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:40.274 [DEBUG] [Thread-128862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:40.274 [DEBUG] [Thread-128862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:40.275 [DEBUG] [Thread-128862] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:54:40.315 [DEBUG] [Thread-128862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:40.315 [DEBUG] [Thread-128862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:40.317 [DEBUG] [Thread-128862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:40.331 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:40.331 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:54:40.332 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:54:40.333 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:54:40.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:40.336 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:54:40.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:40.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579248 -999.00  +18.90  10.06     38   +4.40 1 1 1 1 1   888    0 14.08 -14.59 ----- 10.1 10.1 206.2 18.1 23.8 -27.4 23.0 -27.8 24.7 -26.0 25.7 -27.7
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579248
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:54:40.337 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:54:29', tmtdew=15.43, humidity=35.17, cloud=0.0, wind=22.18, temperature=17.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:54:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:54:40.338 [DEBUG] [Thread-128862] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:40.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-28T15:54:40.421 [DEBUG] [Thread-128866] [transport.py] [_log()] starting thread (client mode): 0x2e3dc790
2025-09-28T15:54:40.421 [DEBUG] [Thread-128866] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:40.436 [DEBUG] [Thread-128866] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:54:40.436 [INFO] [Thread-128866] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:40.443 [DEBUG] [Thread-128866] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] Compression: none
2025-09-28T15:54:40.444 [DEBUG] [Thread-128866] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:40.501 [DEBUG] [Thread-128866] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:40.501 [DEBUG] [Thread-128866] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:40.502 [DEBUG] [Thread-128866] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:54:40.502 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:54:40.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:40.557 [DEBUG] [Thread-128866] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:40.557 [DEBUG] [Thread-128866] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:40.557 [DEBUG] [Thread-128866] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:40.557 [DEBUG] [Thread-128866] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:54:40.558 [DEBUG] [Thread-128866] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:40.576 [INFO] [Thread-128866] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:40.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-28T15:54:40.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:41.518 [DEBUG] [Thread-128866] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:41.518 [DEBUG] [Thread-128866] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:41.566 [DEBUG] [Thread-128866] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:41.566 [DEBUG] [Thread-128866] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:41.574 [DEBUG] [Thread-128866] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:41.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:41.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-28T15:54:41.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-28T15:54:41.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:41.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:41.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:41.606 [DEBUG] [Thread-128866] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:51.608 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:54:51.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:54:51.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-28T15:54:52.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 54, 29), 15.43, 35.17, 0.0, 22.18, 17.42, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:54:52.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:54:29
2025-09-28T15:54:52.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:54:52.429 [DEBUG] [Thread-128868] [transport.py] [_log()] starting thread (client mode): 0x2e3dd030
2025-09-28T15:54:52.429 [DEBUG] [Thread-128868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:52.450 [DEBUG] [Thread-128868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:54:52.450 [INFO] [Thread-128868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:52.453 [DEBUG] [Thread-128868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:52.454 [DEBUG] [Thread-128868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:52.454 [DEBUG] [Thread-128868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:52.454 [DEBUG] [Thread-128868] [transport.py] [_log()] Compression: none
2025-09-28T15:54:52.454 [DEBUG] [Thread-128868] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:52.472 [DEBUG] [Thread-128868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:52.472 [DEBUG] [Thread-128868] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:52.473 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:54:52.473 [DEBUG] [Thread-128868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:54:52.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:52.475 [DEBUG] [Thread-128868] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:52.475 [DEBUG] [Thread-128868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:52.475 [DEBUG] [Thread-128868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:52.475 [DEBUG] [Thread-128868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:54:52.475 [DEBUG] [Thread-128868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:52.500 [INFO] [Thread-128868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:52.502 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:53.157 [DEBUG] [Thread-128868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:53.157 [DEBUG] [Thread-128868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:53.157 [DEBUG] [Thread-128868] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:54:53.197 [DEBUG] [Thread-128868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:53.197 [DEBUG] [Thread-128868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:53.200 [DEBUG] [Thread-128868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:53.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54:53.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:54:53.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:54:53.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:54:53.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:53.222 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:54:53.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579596 -999.00  +18.90  13.95     38   +4.30 1 1 1 1 1   888    0 14.11 -14.28 ----- 13.9 13.9 194.0 19.9 23.7 -28.4 23.1 -27.2 24.7 -26.8 25.7 -30.1
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:54:53.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579596
2025-09-28T15:54:53.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:54:53.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:54:53.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:54:53.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:54:53.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:54:53.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:54:29', tmtdew=15.43, humidity=35.17, cloud=0.0, wind=22.18, temperature=17.42, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:54:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:54:53.225 [DEBUG] [Thread-128868] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:54:53.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-28T15:54:53.319 [DEBUG] [Thread-128871] [transport.py] [_log()] starting thread (client mode): 0x2b929750
2025-09-28T15:54:53.319 [DEBUG] [Thread-128871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:54:53.334 [DEBUG] [Thread-128871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:54:53.334 [INFO] [Thread-128871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:54:53.341 [DEBUG] [Thread-128871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:54:53.342 [DEBUG] [Thread-128871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] client lang: <none>
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] server lang: <none>
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] kex follows: False
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:54:53.343 [DEBUG] [Thread-128871] [transport.py] [_log()] Compression: none
2025-09-28T15:54:53.344 [DEBUG] [Thread-128871] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:54:53.401 [DEBUG] [Thread-128871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:54:53.402 [DEBUG] [Thread-128871] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:54:53.402 [DEBUG] [Thread-128871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:54:53.402 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:54:53.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:54:53.457 [DEBUG] [Thread-128871] [transport.py] [_log()] userauth is OK
2025-09-28T15:54:53.457 [DEBUG] [Thread-128871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:54:53.457 [DEBUG] [Thread-128871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:54:53.458 [DEBUG] [Thread-128871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:54:53.458 [DEBUG] [Thread-128871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:54:53.475 [INFO] [Thread-128871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:54:53.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-28T15:54:53.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:54:54.309 [DEBUG] [Thread-128873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:54:54.491 [DEBUG] [Thread-128871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:54:54.491 [DEBUG] [Thread-128871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:54:54.539 [DEBUG] [Thread-128871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:54:54.539 [DEBUG] [Thread-128871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:54:54.548 [DEBUG] [Thread-128871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:54:54.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:54: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-28T15:54:54.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-28T15:54:54.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:54:54.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:54:54.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:54:54.583 [DEBUG] [Thread-128871] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:55:04.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:55: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-28T15:55:05.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 55, 1), 15.57, 35.09, 0.0, 20.96, 17.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:55:05.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:55:01
2025-09-28T15:55:05.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:55:05.426 [DEBUG] [Thread-128874] [transport.py] [_log()] starting thread (client mode): 0x2b94e2c0
2025-09-28T15:55:05.426 [DEBUG] [Thread-128874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:05.448 [DEBUG] [Thread-128874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:55:05.448 [INFO] [Thread-128874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:55:05.451 [DEBUG] [Thread-128874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:05.451 [DEBUG] [Thread-128874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:55:05.451 [DEBUG] [Thread-128874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] Compression: none
2025-09-28T15:55:05.452 [DEBUG] [Thread-128874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:05.467 [DEBUG] [Thread-128874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:05.467 [DEBUG] [Thread-128874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:05.467 [DEBUG] [Thread-128874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:55:05.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:55:05.467 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:05.468 [DEBUG] [Thread-128874] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:05.468 [DEBUG] [Thread-128874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:05.468 [DEBUG] [Thread-128874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:05.468 [DEBUG] [Thread-128874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:55:05.468 [DEBUG] [Thread-128874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:05.476 [INFO] [Thread-128874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:05.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:09.353 [DEBUG] [Thread-128876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:15.765 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:15.766 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:17.523 [DEBUG] [Thread-128874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:17.523 [DEBUG] [Thread-128874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:17.523 [DEBUG] [Thread-128874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:55:17.564 [DEBUG] [Thread-128874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:17.565 [DEBUG] [Thread-128874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:17.568 [DEBUG] [Thread-128874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:17.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:17.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:55:17.727 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:55:17.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:55:17.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:17.735 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:55:17.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:17.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:17.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:55:17.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579596 -999.00  +18.90  13.95     38   +4.30 1 1 1 1 1   888    0 14.11 -14.28 ----- 13.9 13.9 194.0 19.9 23.7 -28.4 23.1 -27.2 24.7 -26.8 25.7 -30.1
2025-09-28T15:55:17.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:55:17.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:55:17.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579596
2025-09-28T15:55:17.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:55:17.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:55:17.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:55:17.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:55:17.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:55:17.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:55:01', tmtdew=15.57, humidity=35.09, cloud=0.0, wind=20.96, temperature=17.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:54:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:55:17.737 [DEBUG] [Thread-128874] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:17.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-28T15:55:17.831 [DEBUG] [Thread-128878] [transport.py] [_log()] starting thread (client mode): 0x2b92b970
2025-09-28T15:55:17.831 [DEBUG] [Thread-128878] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:17.845 [DEBUG] [Thread-128878] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:55:17.845 [INFO] [Thread-128878] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] Compression: none
2025-09-28T15:55:17.853 [DEBUG] [Thread-128878] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:17.910 [DEBUG] [Thread-128878] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:17.910 [DEBUG] [Thread-128878] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:17.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:55:17.911 [DEBUG] [Thread-128878] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:55:17.911 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:17.969 [DEBUG] [Thread-128878] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:17.969 [DEBUG] [Thread-128878] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:17.969 [DEBUG] [Thread-128878] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:17.969 [DEBUG] [Thread-128878] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:55:17.969 [DEBUG] [Thread-128878] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:17.983 [INFO] [Thread-128878] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:17.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-28T15:55:17.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:19.027 [DEBUG] [Thread-128878] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:19.027 [DEBUG] [Thread-128878] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:19.075 [DEBUG] [Thread-128878] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:19.075 [DEBUG] [Thread-128878] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:19.083 [DEBUG] [Thread-128878] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:19.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:19.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-28T15:55:19.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-28T15:55:19.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:19.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:19.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:19.118 [DEBUG] [Thread-128878] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:19.289 [DEBUG] [Thread-128880 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:24.385 [DEBUG] [Thread-128881 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:29.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:55:29.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:55:29.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-28T15:55:29.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 55, 1), 15.57, 35.09, 0.0, 20.96, 17.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:55:29.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:55:01
2025-09-28T15:55:29.781 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:55:29.930 [DEBUG] [Thread-128882] [transport.py] [_log()] starting thread (client mode): 0x2e3de170
2025-09-28T15:55:29.931 [DEBUG] [Thread-128882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:29.950 [DEBUG] [Thread-128882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:55:29.950 [INFO] [Thread-128882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:29.953 [DEBUG] [Thread-128882] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] Compression: none
2025-09-28T15:55:29.954 [DEBUG] [Thread-128882] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:29.971 [DEBUG] [Thread-128882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:29.972 [DEBUG] [Thread-128882] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:29.972 [DEBUG] [Thread-128882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:55:29.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:55:29.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:29.974 [DEBUG] [Thread-128882] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:29.975 [DEBUG] [Thread-128882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:29.975 [DEBUG] [Thread-128882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:29.975 [DEBUG] [Thread-128882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:55:29.975 [DEBUG] [Thread-128882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:29.999 [INFO] [Thread-128882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:29.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:30.572 [DEBUG] [Thread-128882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:30.572 [DEBUG] [Thread-128882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:30.572 [DEBUG] [Thread-128882] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:55:30.613 [DEBUG] [Thread-128882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:30.613 [DEBUG] [Thread-128882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:30.616 [DEBUG] [Thread-128882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:30.626 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:30.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:55:30.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:55:30.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:55:30.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:30.638 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:55:30.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579943 -999.00  +18.60  10.40     38   +4.10 1 1 1 1 1   888    0 13.94 -13.95 ----- 10.4 10.4 237.8 28.1 23.5 -29.1 22.9 -28.4 24.6 -28.1 25.5 -30.2
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:55:30.639 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579943
2025-09-28T15:55:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:55:30.640 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:55:30.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:55:30.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:55:30.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:55:30.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:55:01', tmtdew=15.57, humidity=35.09, cloud=0.0, wind=20.96, temperature=17.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:55:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:55:30.641 [DEBUG] [Thread-128882] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:30.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-28T15:55:30.732 [DEBUG] [Thread-128885] [transport.py] [_log()] starting thread (client mode): 0x2e3def80
2025-09-28T15:55:30.733 [DEBUG] [Thread-128885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:30.747 [DEBUG] [Thread-128885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:55:30.747 [INFO] [Thread-128885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] Compression: none
2025-09-28T15:55:30.755 [DEBUG] [Thread-128885] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:30.812 [DEBUG] [Thread-128885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:30.812 [DEBUG] [Thread-128885] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:30.812 [DEBUG] [Thread-128885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:55:30.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:55:30.812 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:30.869 [DEBUG] [Thread-128885] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:30.869 [DEBUG] [Thread-128885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:30.870 [DEBUG] [Thread-128885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:30.870 [DEBUG] [Thread-128885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:55:30.870 [DEBUG] [Thread-128885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:30.888 [INFO] [Thread-128885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:30.889 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:55:30.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:31.835 [DEBUG] [Thread-128885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:31.835 [DEBUG] [Thread-128885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:31.883 [DEBUG] [Thread-128885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:31.883 [DEBUG] [Thread-128885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:31.893 [DEBUG] [Thread-128885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:31.901 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:31.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-28T15:55:31.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') -> 00000000
2025-09-28T15:55:31.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:31.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:31.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:31.930 [DEBUG] [Thread-128885] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:39.428 [DEBUG] [Thread-128887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:41.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:55:41.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:55:41.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-28T15:55:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 55, 33), 15.49, 35.23, 0.0, 18.05, 17.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:55:42.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:55:33
2025-09-28T15:55:42.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:55:42.772 [DEBUG] [Thread-128888] [transport.py] [_log()] starting thread (client mode): 0x2e361db0
2025-09-28T15:55:42.772 [DEBUG] [Thread-128888] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:42.793 [DEBUG] [Thread-128888] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:55:42.793 [INFO] [Thread-128888] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:42.796 [DEBUG] [Thread-128888] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:42.797 [DEBUG] [Thread-128888] [transport.py] [_log()] Compression: none
2025-09-28T15:55:42.797 [DEBUG] [Thread-128888] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:42.814 [DEBUG] [Thread-128888] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:42.814 [DEBUG] [Thread-128888] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:42.815 [DEBUG] [Thread-128888] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:55:42.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:55:42.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:42.816 [DEBUG] [Thread-128888] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:42.817 [DEBUG] [Thread-128888] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:42.817 [DEBUG] [Thread-128888] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:42.817 [DEBUG] [Thread-128888] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:55:42.817 [DEBUG] [Thread-128888] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:42.833 [INFO] [Thread-128888] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:42.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:43.604 [DEBUG] [Thread-128888] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:43.604 [DEBUG] [Thread-128888] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:43.605 [DEBUG] [Thread-128888] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:55:43.645 [DEBUG] [Thread-128888] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:43.645 [DEBUG] [Thread-128888] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:43.648 [DEBUG] [Thread-128888] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:43.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:43.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:55:43.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:55:43.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:55:43.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:43.670 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:55:43.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:43.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:43.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:55:43.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.579943 -999.00  +18.60  10.40     38   +4.10 1 1 1 1 1   888    0 13.94 -13.95 ----- 10.4 10.4 237.8 28.1 23.5 -29.1 22.9 -28.4 24.6 -28.1 25.5 -30.2
2025-09-28T15:55:43.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:55:43.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:55:43.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.579943
2025-09-28T15:55:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:55:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:55:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:55:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:55:43.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:55:43.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:55:33', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=18.05, temperature=17.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:55:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:55:43.673 [DEBUG] [Thread-128888] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:43.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-28T15:55:43.771 [DEBUG] [Thread-128891] [transport.py] [_log()] starting thread (client mode): 0x2b94dff0
2025-09-28T15:55:43.771 [DEBUG] [Thread-128891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:43.785 [DEBUG] [Thread-128891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:55:43.785 [INFO] [Thread-128891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:43.793 [DEBUG] [Thread-128891] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] Compression: none
2025-09-28T15:55:43.794 [DEBUG] [Thread-128891] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:43.850 [DEBUG] [Thread-128891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:43.850 [DEBUG] [Thread-128891] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:43.851 [DEBUG] [Thread-128891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:55:43.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:55:43.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:43.905 [DEBUG] [Thread-128891] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:43.906 [DEBUG] [Thread-128891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:43.906 [DEBUG] [Thread-128891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:43.906 [DEBUG] [Thread-128891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:55:43.906 [DEBUG] [Thread-128891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:43.925 [INFO] [Thread-128891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:43.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-28T15:55:43.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:44.855 [DEBUG] [Thread-128891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:44.855 [DEBUG] [Thread-128891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:44.903 [DEBUG] [Thread-128891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:44.903 [DEBUG] [Thread-128891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:44.912 [DEBUG] [Thread-128891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:44.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:44.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-28T15:55:44.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-28T15:55:44.938 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:44.938 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:44.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:44.947 [DEBUG] [Thread-128891] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:54.470 [DEBUG] [Thread-128893 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:55:54.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:55:54.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:55:54.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-28T15:55:55.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 55, 33), 15.49, 35.23, 0.0, 18.05, 17.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:55:55.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:55:33
2025-09-28T15:55:55.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:55:55.781 [DEBUG] [Thread-128894] [transport.py] [_log()] starting thread (client mode): 0x2b929000
2025-09-28T15:55:55.781 [DEBUG] [Thread-128894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:55:55.801 [DEBUG] [Thread-128894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:55:55.801 [INFO] [Thread-128894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] client lang: <none>
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] server lang: <none>
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] kex follows: False
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] Compression: none
2025-09-28T15:55:55.804 [DEBUG] [Thread-128894] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:55:55.819 [DEBUG] [Thread-128894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:55:55.819 [DEBUG] [Thread-128894] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:55:55.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:55:55.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] userauth is OK
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:55:55.820 [DEBUG] [Thread-128894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:55:55.835 [INFO] [Thread-128894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:55:55.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:55:56.400 [DEBUG] [Thread-128894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:55:56.400 [DEBUG] [Thread-128894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:55:56.400 [DEBUG] [Thread-128894] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:55:56.441 [DEBUG] [Thread-128894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:55:56.441 [DEBUG] [Thread-128894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:55:56.444 [DEBUG] [Thread-128894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:55:56.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:55:56.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:55:56.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:55:56.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:55:56.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:55:56.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:55:56.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.580290 -999.00  +18.30  15.00     38   +4.00 1 1 1 1 1   888    0 14.07 -15.99 ----- 15.0 15.0 201.8 24.1 23.5 -28.9 22.8 -26.7 24.5 -27.5 25.6 -29.2
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.580290
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:55:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:55:33', tmtdew=15.49, humidity=35.23, cloud=0.0, wind=18.05, temperature=17.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:55:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:55:56.460 [DEBUG] [Thread-128894] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:55:56.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-28T15:56:09.503 [DEBUG] [Thread-128897 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:15.907 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:15.909 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:19.340 [DEBUG] [Thread-128899 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:24.555 [DEBUG] [Thread-128900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:39.581 [DEBUG] [Thread-128902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:53.905 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:56:54.613 [DEBUG] [Thread-128903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:09.641 [DEBUG] [Thread-128904 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:16.051 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:16.052 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:19.404 [DEBUG] [Thread-128905 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:24.664 [DEBUG] [Thread-128906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:33.333 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:39.691 [DEBUG] [Thread-128907 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:57:54.716 [DEBUG] [Thread-128908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:07.007 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:08.827 [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-28T15:58:09.752 [DEBUG] [Thread-128909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:16.199 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:16.200 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:18.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:58:18.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:58:18.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-28T15:58:19.453 [DEBUG] [Thread-128910 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:19.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 58, 13), 15.35, 35.75, 0.0, 18.14, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:58:19.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:58:13
2025-09-28T15:58:19.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:58:19.719 [DEBUG] [Thread-128911] [transport.py] [_log()] starting thread (client mode): 0x2b928ac0
2025-09-28T15:58:19.720 [DEBUG] [Thread-128911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:19.734 [DEBUG] [Thread-128911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:58:19.735 [INFO] [Thread-128911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:19.736 [DEBUG] [Thread-128911] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] Compression: none
2025-09-28T15:58:19.737 [DEBUG] [Thread-128911] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:19.756 [DEBUG] [Thread-128911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:19.756 [DEBUG] [Thread-128911] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:19.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:58:19.757 [DEBUG] [Thread-128911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:58:19.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:19.759 [DEBUG] [Thread-128911] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:19.759 [DEBUG] [Thread-128911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:19.759 [DEBUG] [Thread-128911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:19.759 [DEBUG] [Thread-128911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:58:19.759 [DEBUG] [Thread-128911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:19.784 [INFO] [Thread-128911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:19.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:20.457 [DEBUG] [Thread-128911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:20.457 [DEBUG] [Thread-128911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:20.458 [DEBUG] [Thread-128911] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:58:20.498 [DEBUG] [Thread-128911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:20.499 [DEBUG] [Thread-128911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:20.501 [DEBUG] [Thread-128911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:20.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:20.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:58:20.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:58:20.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:58:20.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:20.525 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:58:20.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:20.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.581679 -999.00  +18.10  12.91     38   +3.90 1 1 1 1 1   888    0 13.94 -19.09 ----- 12.9 12.9 203.6 19.0 23.3 -27.9 22.6 -26.7 24.2 -27.7 25.4 -29.1
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.581679
2025-09-28T15:58:20.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:58:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:58:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:58:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:58:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:58:20.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:58:13', tmtdew=15.35, humidity=35.75, cloud=0.0, wind=18.14, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:57:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:58:20.528 [DEBUG] [Thread-128911] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:20.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-28T15:58:20.626 [DEBUG] [Thread-128914] [transport.py] [_log()] starting thread (client mode): 0x2e361c30
2025-09-28T15:58:20.626 [DEBUG] [Thread-128914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:20.641 [DEBUG] [Thread-128914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:58:20.641 [INFO] [Thread-128914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:58:20.648 [DEBUG] [Thread-128914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] Compression: none
2025-09-28T15:58:20.649 [DEBUG] [Thread-128914] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:20.708 [DEBUG] [Thread-128914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:20.709 [DEBUG] [Thread-128914] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:20.709 [DEBUG] [Thread-128914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:58:20.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:58:20.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:20.765 [DEBUG] [Thread-128914] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:20.765 [DEBUG] [Thread-128914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:20.765 [DEBUG] [Thread-128914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:20.765 [DEBUG] [Thread-128914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:58:20.765 [DEBUG] [Thread-128914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:20.779 [INFO] [Thread-128914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:20.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-28T15:58:20.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:21.697 [DEBUG] [Thread-128914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:21.698 [DEBUG] [Thread-128914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:21.745 [DEBUG] [Thread-128914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:21.745 [DEBUG] [Thread-128914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:21.754 [DEBUG] [Thread-128914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:21.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:21.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-28T15:58:21.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-28T15:58:21.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:21.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:21.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:21.787 [DEBUG] [Thread-128914] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:24.784 [DEBUG] [Thread-128916 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:31.501 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:31.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:58:31.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:58:31.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-28T15:58:32.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 58, 13), 15.35, 35.75, 0.0, 18.14, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:58:32.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:58:13
2025-09-28T15:58:32.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:58:32.651 [DEBUG] [Thread-128917] [transport.py] [_log()] starting thread (client mode): 0x2e349a80
2025-09-28T15:58:32.651 [DEBUG] [Thread-128917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:32.671 [DEBUG] [Thread-128917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:58:32.671 [INFO] [Thread-128917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:32.673 [DEBUG] [Thread-128917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] Compression: none
2025-09-28T15:58:32.674 [DEBUG] [Thread-128917] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:32.688 [DEBUG] [Thread-128917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:32.689 [DEBUG] [Thread-128917] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:32.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:58:32.690 [DEBUG] [Thread-128917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:58:32.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:32.692 [DEBUG] [Thread-128917] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:32.693 [DEBUG] [Thread-128917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:32.693 [DEBUG] [Thread-128917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:32.693 [DEBUG] [Thread-128917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:58:32.693 [DEBUG] [Thread-128917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:32.719 [INFO] [Thread-128917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:32.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:33.567 [DEBUG] [Thread-128917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:33.567 [DEBUG] [Thread-128917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:33.568 [DEBUG] [Thread-128917] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:58:33.608 [DEBUG] [Thread-128917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:33.609 [DEBUG] [Thread-128917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:33.612 [DEBUG] [Thread-128917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:33.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:33.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:58:33.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:58:33.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:58:33.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:33.633 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:58:33.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.581679 -999.00  +18.10  12.91     38   +3.90 1 1 1 1 1   888    0 13.94 -19.09 ----- 12.9 12.9 203.6 19.0 23.3 -27.9 22.6 -26.7 24.2 -27.7 25.4 -29.1
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:58:33.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.581679
2025-09-28T15:58:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:58:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:58:33.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:58:33.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:58:33.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:58:33.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:58:13', tmtdew=15.35, humidity=35.75, cloud=0.0, wind=18.14, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:57:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:58:33.636 [DEBUG] [Thread-128917] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:33.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:58:33.738 [DEBUG] [Thread-128920] [transport.py] [_log()] starting thread (client mode): 0x2e34a350
2025-09-28T15:58:33.738 [DEBUG] [Thread-128920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:33.752 [DEBUG] [Thread-128920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:58:33.752 [INFO] [Thread-128920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:33.760 [DEBUG] [Thread-128920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] Compression: none
2025-09-28T15:58:33.761 [DEBUG] [Thread-128920] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:33.818 [DEBUG] [Thread-128920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:33.818 [DEBUG] [Thread-128920] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:33.819 [DEBUG] [Thread-128920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:58:33.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:58:33.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:33.874 [DEBUG] [Thread-128920] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:33.874 [DEBUG] [Thread-128920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:33.874 [DEBUG] [Thread-128920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:33.874 [DEBUG] [Thread-128920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:58:33.875 [DEBUG] [Thread-128920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:33.893 [INFO] [Thread-128920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:33.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-28T15:58:33.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:34.841 [DEBUG] [Thread-128920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:34.841 [DEBUG] [Thread-128920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:34.889 [DEBUG] [Thread-128920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:34.889 [DEBUG] [Thread-128920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:34.898 [DEBUG] [Thread-128920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:34.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:34.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-28T15:58:34.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-28T15:58:34.925 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:34.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:34.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:34.933 [DEBUG] [Thread-128920] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:39.831 [DEBUG] [Thread-128922 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:58:44.936 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:58:44.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-28T15:58:45.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 58, 13), 15.35, 35.75, 0.0, 18.14, 16.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:58:45.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:58:13
2025-09-28T15:58:45.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:58:45.826 [DEBUG] [Thread-128923] [transport.py] [_log()] starting thread (client mode): 0x2b928d90
2025-09-28T15:58:45.826 [DEBUG] [Thread-128923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:45.845 [DEBUG] [Thread-128923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:58:45.845 [INFO] [Thread-128923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:45.848 [DEBUG] [Thread-128923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:45.849 [DEBUG] [Thread-128923] [transport.py] [_log()] Compression: none
2025-09-28T15:58:45.849 [DEBUG] [Thread-128923] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:45.864 [DEBUG] [Thread-128923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:45.864 [DEBUG] [Thread-128923] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:45.864 [DEBUG] [Thread-128923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:58:45.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:58:45.864 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:45.864 [DEBUG] [Thread-128923] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:45.865 [DEBUG] [Thread-128923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:45.865 [DEBUG] [Thread-128923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:45.865 [DEBUG] [Thread-128923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:58:45.865 [DEBUG] [Thread-128923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:45.890 [INFO] [Thread-128923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:45.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:46.520 [DEBUG] [Thread-128923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:46.520 [DEBUG] [Thread-128923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:46.520 [DEBUG] [Thread-128923] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:58:46.561 [DEBUG] [Thread-128923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:46.561 [DEBUG] [Thread-128923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:46.563 [DEBUG] [Thread-128923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:46.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:46.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:58:46.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:58:46.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:58:46.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:46.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:58:46.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.582373 -999.00  +18.30  12.68     38   +3.80 1 1 1 1 1   888    0 14.12 -15.08 ----- 12.7 12.7 211.6 19.3 23.4 -27.7 22.7 -27.6 24.3 -26.5 25.3 -28.0
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.582373
2025-09-28T15:58:46.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:58:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:58:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:58:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:58:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:58:46.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:58:13', tmtdew=15.35, humidity=35.75, cloud=0.0, wind=18.14, temperature=16.99, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:58:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:58:46.581 [DEBUG] [Thread-128923] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:46.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-28T15:58:46.669 [DEBUG] [Thread-128926] [transport.py] [_log()] starting thread (client mode): 0x2b928640
2025-09-28T15:58:46.669 [DEBUG] [Thread-128926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:46.683 [DEBUG] [Thread-128926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:58:46.683 [INFO] [Thread-128926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:58:46.690 [DEBUG] [Thread-128926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] Compression: none
2025-09-28T15:58:46.691 [DEBUG] [Thread-128926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:46.748 [DEBUG] [Thread-128926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:46.748 [DEBUG] [Thread-128926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:46.748 [DEBUG] [Thread-128926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:58:46.748 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:58:46.749 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:46.805 [DEBUG] [Thread-128926] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:46.805 [DEBUG] [Thread-128926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:46.805 [DEBUG] [Thread-128926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:46.805 [DEBUG] [Thread-128926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:58:46.805 [DEBUG] [Thread-128926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:46.819 [INFO] [Thread-128926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:46.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-28T15:58:46.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:47.765 [DEBUG] [Thread-128926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:47.766 [DEBUG] [Thread-128926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:47.813 [DEBUG] [Thread-128926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:47.813 [DEBUG] [Thread-128926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:47.822 [DEBUG] [Thread-128926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:47.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:47.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-28T15:58:47.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-28T15:58:47.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:47.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:47.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:47.856 [DEBUG] [Thread-128926] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:53.965 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:54.861 [DEBUG] [Thread-128928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:58:57.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:58:57.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:58:57.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-28T15:58:58.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 58, 44), 15.52, 35.09, 0.0, 16.55, 17.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:58:58.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:58:44
2025-09-28T15:58:58.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:58:58.741 [DEBUG] [Thread-128929] [transport.py] [_log()] starting thread (client mode): 0x2e360e50
2025-09-28T15:58:58.741 [DEBUG] [Thread-128929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:58.761 [DEBUG] [Thread-128929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:58:58.761 [INFO] [Thread-128929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:58.764 [DEBUG] [Thread-128929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:58.765 [DEBUG] [Thread-128929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:58.765 [DEBUG] [Thread-128929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:58.765 [DEBUG] [Thread-128929] [transport.py] [_log()] Compression: none
2025-09-28T15:58:58.765 [DEBUG] [Thread-128929] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:58.780 [DEBUG] [Thread-128929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:58.780 [DEBUG] [Thread-128929] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:58.780 [DEBUG] [Thread-128929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:58:58.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:58:58.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:58.781 [DEBUG] [Thread-128929] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:58.782 [DEBUG] [Thread-128929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:58.782 [DEBUG] [Thread-128929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:58.782 [DEBUG] [Thread-128929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:58:58.782 [DEBUG] [Thread-128929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:58.794 [INFO] [Thread-128929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:58.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:58:59.609 [DEBUG] [Thread-128929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:58:59.609 [DEBUG] [Thread-128929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:58:59.609 [DEBUG] [Thread-128929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:58:59.650 [DEBUG] [Thread-128929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:58:59.650 [DEBUG] [Thread-128929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:58:59.652 [DEBUG] [Thread-128929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:58:59.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:58:59.664 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:58:59.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:58:59.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:58:59.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:58:59.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:58:59.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:58:59.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.582373 -999.00  +18.30  12.68     38   +3.80 1 1 1 1 1   888    0 14.12 -15.08 ----- 12.7 12.7 211.6 19.3 23.4 -27.7 22.7 -27.6 24.3 -26.5 25.3 -28.0
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.582373
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:58:59.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:58:44', tmtdew=15.52, humidity=35.09, cloud=0.0, wind=16.55, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:58:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:58:59.669 [DEBUG] [Thread-128929] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:58:59.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-28T15:58:59.753 [DEBUG] [Thread-128932] [transport.py] [_log()] starting thread (client mode): 0x2e3df9d0
2025-09-28T15:58:59.753 [DEBUG] [Thread-128932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:58:59.768 [DEBUG] [Thread-128932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:58:59.768 [INFO] [Thread-128932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] client lang: <none>
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] server lang: <none>
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] kex follows: False
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] Compression: none
2025-09-28T15:58:59.776 [DEBUG] [Thread-128932] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:58:59.832 [DEBUG] [Thread-128932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:58:59.833 [DEBUG] [Thread-128932] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:58:59.833 [DEBUG] [Thread-128932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:58:59.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:58:59.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:58:59.890 [DEBUG] [Thread-128932] [transport.py] [_log()] userauth is OK
2025-09-28T15:58:59.890 [DEBUG] [Thread-128932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:58:59.890 [DEBUG] [Thread-128932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:58:59.890 [DEBUG] [Thread-128932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:58:59.890 [DEBUG] [Thread-128932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:58:59.904 [INFO] [Thread-128932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:58:59.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-28T15:58:59.904 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:00.837 [DEBUG] [Thread-128932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:00.837 [DEBUG] [Thread-128932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:00.885 [DEBUG] [Thread-128932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:00.885 [DEBUG] [Thread-128932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:00.894 [DEBUG] [Thread-128932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:00.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:00.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-28T15:59: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') -> 00000000
2025-09-28T15:59:00.918 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:00.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:00.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:00.925 [DEBUG] [Thread-128932] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:09.905 [DEBUG] [Thread-128934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:10.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:59:10.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:59:10.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:59:11.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 58, 44), 15.52, 35.09, 0.0, 16.55, 17.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:59:11.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:58:44
2025-09-28T15:59:11.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:59:11.780 [DEBUG] [Thread-128935] [transport.py] [_log()] starting thread (client mode): 0x2b9b9960
2025-09-28T15:59:11.780 [DEBUG] [Thread-128935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:11.800 [DEBUG] [Thread-128935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:59:11.800 [INFO] [Thread-128935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:11.803 [DEBUG] [Thread-128935] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] Compression: none
2025-09-28T15:59:11.804 [DEBUG] [Thread-128935] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:11.821 [DEBUG] [Thread-128935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:11.821 [DEBUG] [Thread-128935] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:11.822 [DEBUG] [Thread-128935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:59:11.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:59:11.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:11.824 [DEBUG] [Thread-128935] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:11.824 [DEBUG] [Thread-128935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:11.824 [DEBUG] [Thread-128935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:11.824 [DEBUG] [Thread-128935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:59:11.824 [DEBUG] [Thread-128935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:11.848 [INFO] [Thread-128935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:11.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:12.647 [DEBUG] [Thread-128935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:12.648 [DEBUG] [Thread-128935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:12.648 [DEBUG] [Thread-128935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:59:12.689 [DEBUG] [Thread-128935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:12.689 [DEBUG] [Thread-128935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:12.692 [DEBUG] [Thread-128935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:12.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:12.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:59:12.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:59:12.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:59:12.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:12.715 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:59:12.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:12.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:12.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:59:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.582373 -999.00  +18.30  12.68     38   +3.80 1 1 1 1 1   888    0 14.12 -15.08 ----- 12.7 12.7 211.6 19.3 23.4 -27.7 22.7 -27.6 24.3 -26.5 25.3 -28.0
2025-09-28T15:59:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:59:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:59:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.582373
2025-09-28T15:59:12.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:59:12.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:59:12.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:59:12.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:59:12.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:59:12.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:58:44', tmtdew=15.52, humidity=35.09, cloud=0.0, wind=16.55, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:58:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:59:12.717 [DEBUG] [Thread-128935] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:12.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-28T15:59:12.813 [DEBUG] [Thread-128938] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T15:59:12.814 [DEBUG] [Thread-128938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:12.828 [DEBUG] [Thread-128938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:59:12.828 [INFO] [Thread-128938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:59:12.835 [DEBUG] [Thread-128938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:12.836 [DEBUG] [Thread-128938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:59:12.836 [DEBUG] [Thread-128938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:12.836 [DEBUG] [Thread-128938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:12.837 [DEBUG] [Thread-128938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:12.837 [DEBUG] [Thread-128938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:12.837 [DEBUG] [Thread-128938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:12.837 [DEBUG] [Thread-128938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:12.837 [DEBUG] [Thread-128938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] Compression: none
2025-09-28T15:59:12.838 [DEBUG] [Thread-128938] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:12.893 [DEBUG] [Thread-128938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:12.894 [DEBUG] [Thread-128938] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:12.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:59:12.894 [DEBUG] [Thread-128938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:59:12.895 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:12.950 [DEBUG] [Thread-128938] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:12.950 [DEBUG] [Thread-128938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:12.950 [DEBUG] [Thread-128938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:12.950 [DEBUG] [Thread-128938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:59:12.950 [DEBUG] [Thread-128938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:12.969 [INFO] [Thread-128938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:12.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-28T15:59:12.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:13.897 [DEBUG] [Thread-128938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:13.898 [DEBUG] [Thread-128938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:13.945 [DEBUG] [Thread-128938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:13.945 [DEBUG] [Thread-128938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:13.954 [DEBUG] [Thread-128938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:13.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:13.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')
2025-09-28T15:59:13.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-28T15:59:13.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:13.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:13.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:13.989 [DEBUG] [Thread-128938] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:16.342 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:16.343 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:16.476 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:19.488 [DEBUG] [Thread-128940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:23.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:59:23.983 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:59:23.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:59:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 59, 16), 15.52, 35.06, 0.0, 15.37, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:59:24.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:59:16
2025-09-28T15:59:24.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:59:24.842 [DEBUG] [Thread-128941] [transport.py] [_log()] starting thread (client mode): 0x2b9baad0
2025-09-28T15:59:24.842 [DEBUG] [Thread-128941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:24.855 [DEBUG] [Thread-128941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:59:24.855 [INFO] [Thread-128941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:24.856 [DEBUG] [Thread-128941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] Compression: none
2025-09-28T15:59:24.857 [DEBUG] [Thread-128941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:24.864 [DEBUG] [Thread-128941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:24.865 [DEBUG] [Thread-128941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:24.865 [DEBUG] [Thread-128941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:59:24.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:59:24.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:24.866 [DEBUG] [Thread-128941] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:24.866 [DEBUG] [Thread-128941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:24.866 [DEBUG] [Thread-128941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:24.866 [DEBUG] [Thread-128941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:59:24.866 [DEBUG] [Thread-128941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:24.878 [INFO] [Thread-128941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:24.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:24.951 [DEBUG] [Thread-128943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:25.458 [DEBUG] [Thread-128941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:25.458 [DEBUG] [Thread-128941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:25.458 [DEBUG] [Thread-128941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:59:25.499 [DEBUG] [Thread-128941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:25.499 [DEBUG] [Thread-128941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:25.502 [DEBUG] [Thread-128941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:25.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:25.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:59:25.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:59:25.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:59:25.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:25.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:59:25.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.582721 -999.00  +18.20  10.99     38   +3.80 1 1 1 1 1   888    0 14.09 -13.15 ----- 11.0 11.0 197.7 18.1 23.4 -27.6 22.7 -26.4 24.3 -27.2 25.4 -27.1
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:59:25.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.582721
2025-09-28T15:59:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:59:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:59:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:59:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:59:25.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:59:25.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:59:16', tmtdew=15.52, humidity=35.06, cloud=0.0, wind=15.37, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:59:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:59:25.526 [DEBUG] [Thread-128941] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:25.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T15:59:25.619 [DEBUG] [Thread-128945] [transport.py] [_log()] starting thread (client mode): 0x2e361360
2025-09-28T15:59:25.620 [DEBUG] [Thread-128945] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:25.634 [DEBUG] [Thread-128945] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:59:25.634 [INFO] [Thread-128945] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] Compression: none
2025-09-28T15:59:25.642 [DEBUG] [Thread-128945] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:25.702 [DEBUG] [Thread-128945] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:25.702 [DEBUG] [Thread-128945] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:25.703 [DEBUG] [Thread-128945] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:59:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:59:25.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:25.758 [DEBUG] [Thread-128945] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:25.758 [DEBUG] [Thread-128945] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:25.758 [DEBUG] [Thread-128945] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:25.758 [DEBUG] [Thread-128945] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:59:25.758 [DEBUG] [Thread-128945] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:25.777 [INFO] [Thread-128945] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:25.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-28T15:59:25.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:26.766 [DEBUG] [Thread-128945] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:26.766 [DEBUG] [Thread-128945] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:26.814 [DEBUG] [Thread-128945] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:26.814 [DEBUG] [Thread-128945] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:26.822 [DEBUG] [Thread-128945] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:26.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:26.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-28T15:59:26.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-28T15:59:26.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:26.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:26.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:26.857 [DEBUG] [Thread-128945] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:36.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:59:36.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:59:36.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T15:59:37.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 59, 16), 15.52, 35.06, 0.0, 15.37, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:59:37.471 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:59:16
2025-09-28T15:59:37.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:59:37.741 [DEBUG] [Thread-128947] [transport.py] [_log()] starting thread (client mode): 0x2e348040
2025-09-28T15:59:37.741 [DEBUG] [Thread-128947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:37.768 [DEBUG] [Thread-128947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:59:37.768 [INFO] [Thread-128947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:37.772 [DEBUG] [Thread-128947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:37.773 [DEBUG] [Thread-128947] [transport.py] [_log()] Compression: none
2025-09-28T15:59:37.773 [DEBUG] [Thread-128947] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:37.784 [DEBUG] [Thread-128947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:37.784 [DEBUG] [Thread-128947] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:37.784 [DEBUG] [Thread-128947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:59:37.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:59:37.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:37.785 [DEBUG] [Thread-128947] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:37.785 [DEBUG] [Thread-128947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:37.785 [DEBUG] [Thread-128947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:37.785 [DEBUG] [Thread-128947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:59:37.785 [DEBUG] [Thread-128947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:37.794 [INFO] [Thread-128947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:37.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:38.593 [DEBUG] [Thread-128947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:38.593 [DEBUG] [Thread-128947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:38.593 [DEBUG] [Thread-128947] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:59:38.634 [DEBUG] [Thread-128947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:38.634 [DEBUG] [Thread-128947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:38.637 [DEBUG] [Thread-128947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:38.648 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:38.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:59:38.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:59:38.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:59:38.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:38.654 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:59:38.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.582721 -999.00  +18.20  10.99     38   +3.80 1 1 1 1 1   888    0 14.09 -13.15 ----- 11.0 11.0 197.7 18.1 23.4 -27.6 22.7 -26.4 24.3 -27.2 25.4 -27.1
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.582721
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:59:38.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:59:16', tmtdew=15.52, humidity=35.06, cloud=0.0, wind=15.37, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:59:07.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:59:38.655 [DEBUG] [Thread-128947] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:38.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-28T15:59:38.740 [DEBUG] [Thread-128950] [transport.py] [_log()] starting thread (client mode): 0x2e3633a0
2025-09-28T15:59:38.740 [DEBUG] [Thread-128950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:38.756 [DEBUG] [Thread-128950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:59:38.756 [INFO] [Thread-128950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] Compression: none
2025-09-28T15:59:38.763 [DEBUG] [Thread-128950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:38.820 [DEBUG] [Thread-128950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:38.820 [DEBUG] [Thread-128950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:38.820 [DEBUG] [Thread-128950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:59:38.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:59:38.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:38.878 [DEBUG] [Thread-128950] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:38.878 [DEBUG] [Thread-128950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:38.878 [DEBUG] [Thread-128950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:38.878 [DEBUG] [Thread-128950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:59:38.878 [DEBUG] [Thread-128950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:38.892 [INFO] [Thread-128950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:38.892 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T15:59:38.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:38.990 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:39.893 [DEBUG] [Thread-128950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:39.893 [DEBUG] [Thread-128950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:39.941 [DEBUG] [Thread-128950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:39.941 [DEBUG] [Thread-128950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:39.949 [DEBUG] [Thread-128950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:39.957 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:39.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-28T15:59:39.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-28T15:59:39.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:39.972 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:39.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:39.979 [DEBUG] [Thread-128952 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T15:59:39.980 [DEBUG] [Thread-128950] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:49.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T15:59:49.982 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T15:59:49.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-28T15:59:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 59, 16), 15.52, 35.06, 0.0, 15.37, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T15:59:50.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:59:16
2025-09-28T15:59:50.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T15:59:50.878 [DEBUG] [Thread-128953] [transport.py] [_log()] starting thread (client mode): 0x2e38e830
2025-09-28T15:59:50.878 [DEBUG] [Thread-128953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:50.899 [DEBUG] [Thread-128953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T15:59:50.899 [INFO] [Thread-128953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:50.902 [DEBUG] [Thread-128953] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] Compression: none
2025-09-28T15:59:50.903 [DEBUG] [Thread-128953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:50.919 [DEBUG] [Thread-128953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:50.919 [DEBUG] [Thread-128953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:50.919 [DEBUG] [Thread-128953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T15:59:50.919 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T15:59:50.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:50.920 [DEBUG] [Thread-128953] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:50.920 [DEBUG] [Thread-128953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:50.920 [DEBUG] [Thread-128953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:50.921 [DEBUG] [Thread-128953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T15:59:50.921 [DEBUG] [Thread-128953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:50.930 [INFO] [Thread-128953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:50.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:51.597 [DEBUG] [Thread-128953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:51.598 [DEBUG] [Thread-128953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:51.598 [DEBUG] [Thread-128953] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T15:59:51.638 [DEBUG] [Thread-128953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:51.638 [DEBUG] [Thread-128953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:51.641 [DEBUG] [Thread-128953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:51.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:51.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T15:59:51.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T15:59:51.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T15:59:51.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:51.662 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T15:59:51.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583068 -999.00  +18.30  10.04     38   +3.80 1 1 1 1 1   888    0 14.11 -14.42 ----- 10.0 10.0 200.6 24.9 23.4 -28.0 22.6 -29.2 24.4 -27.7 25.4 -29.2
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T15:59:51.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583068
2025-09-28T15:59:51.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T15:59:51.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T15:59:51.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T15:59:51.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T15:59:51.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T15:59:51.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:59:16', tmtdew=15.52, humidity=35.06, cloud=0.0, wind=15.37, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:59:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T15:59:51.665 [DEBUG] [Thread-128953] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:51.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-28T15:59:51.761 [DEBUG] [Thread-128956] [transport.py] [_log()] starting thread (client mode): 0x2b96e260
2025-09-28T15:59:51.761 [DEBUG] [Thread-128956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T15:59:51.777 [DEBUG] [Thread-128956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T15:59:51.777 [INFO] [Thread-128956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T15:59:51.784 [DEBUG] [Thread-128956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T15:59:51.785 [DEBUG] [Thread-128956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] client lang: <none>
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] server lang: <none>
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] kex follows: False
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T15:59:51.786 [DEBUG] [Thread-128956] [transport.py] [_log()] Compression: none
2025-09-28T15:59:51.787 [DEBUG] [Thread-128956] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T15:59:51.847 [DEBUG] [Thread-128956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T15:59:51.847 [DEBUG] [Thread-128956] [transport.py] [_log()] Switch to new keys ...
2025-09-28T15:59:51.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T15:59:51.849 [DEBUG] [Thread-128956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T15:59:51.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T15:59:51.902 [DEBUG] [Thread-128956] [transport.py] [_log()] userauth is OK
2025-09-28T15:59:51.902 [DEBUG] [Thread-128956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T15:59:51.902 [DEBUG] [Thread-128956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T15:59:51.902 [DEBUG] [Thread-128956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T15:59:51.903 [DEBUG] [Thread-128956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T15:59:51.925 [INFO] [Thread-128956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T15:59:51.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-28T15:59:51.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T15:59:52.902 [DEBUG] [Thread-128956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T15:59:52.902 [DEBUG] [Thread-128956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T15:59:52.951 [DEBUG] [Thread-128956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T15:59:52.952 [DEBUG] [Thread-128956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T15:59:52.961 [DEBUG] [Thread-128956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T15:59:52.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T15:59:52.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-28T15:59:52.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-28T15:59:52.987 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T15:59:52.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T15:59:52.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T15:59:52.996 [DEBUG] [Thread-128956] [transport.py] [_log()] EOF in transport thread
2025-09-28T15:59:55.015 [DEBUG] [Thread-128958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:01.463 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:02.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:00:02.999 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:00:03.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-28T16:00:03.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 15, 59, 48), 15.75, 34.85, 0.0, 19.99, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:00:03.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 15:59:48
2025-09-28T16:00:03.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:00:03.857 [DEBUG] [Thread-128959] [transport.py] [_log()] starting thread (client mode): 0x2b92bd90
2025-09-28T16:00:03.857 [DEBUG] [Thread-128959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:03.874 [DEBUG] [Thread-128959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:00:03.874 [INFO] [Thread-128959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:03.877 [DEBUG] [Thread-128959] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] Compression: none
2025-09-28T16:00:03.878 [DEBUG] [Thread-128959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:03.895 [DEBUG] [Thread-128959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:03.896 [DEBUG] [Thread-128959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:03.896 [DEBUG] [Thread-128959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:00:03.896 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:00:03.897 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:03.898 [DEBUG] [Thread-128959] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:03.898 [DEBUG] [Thread-128959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:03.898 [DEBUG] [Thread-128959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:03.899 [DEBUG] [Thread-128959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:00:03.899 [DEBUG] [Thread-128959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:03.934 [INFO] [Thread-128959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:03.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:10.056 [DEBUG] [Thread-128961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:12.981 [DEBUG] [Thread-128959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:12.981 [DEBUG] [Thread-128959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:12.981 [DEBUG] [Thread-128959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:00:13.022 [DEBUG] [Thread-128959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:13.022 [DEBUG] [Thread-128959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:13.025 [DEBUG] [Thread-128959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:13.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:13.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:00:13.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:00:13.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:00:13.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:13.051 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:00:13.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583068 -999.00  +18.30  10.04     38   +3.80 1 1 1 1 1   888    0 14.11 -14.42 ----- 10.0 10.0 200.6 24.9 23.4 -28.0 22.6 -29.2 24.4 -27.7 25.4 -29.2
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583068
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:00:13.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T15:59:48', tmtdew=15.75, humidity=34.85, cloud=0.0, wind=19.99, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T13:59:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:00:13.052 [DEBUG] [Thread-128959] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:13.126 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:00:13.139 [DEBUG] [Thread-128963] [transport.py] [_log()] starting thread (client mode): 0x2b9baaa0
2025-09-28T16:00:13.139 [DEBUG] [Thread-128963] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:13.153 [DEBUG] [Thread-128963] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:00:13.153 [INFO] [Thread-128963] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] Compression: none
2025-09-28T16:00:13.161 [DEBUG] [Thread-128963] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:13.217 [DEBUG] [Thread-128963] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:13.217 [DEBUG] [Thread-128963] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:13.217 [DEBUG] [Thread-128963] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:00:13.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:00:13.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:13.274 [DEBUG] [Thread-128963] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:13.274 [DEBUG] [Thread-128963] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:13.274 [DEBUG] [Thread-128963] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:13.274 [DEBUG] [Thread-128963] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:00:13.274 [DEBUG] [Thread-128963] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:13.290 [INFO] [Thread-128963] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:13.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:00:13.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:14.229 [DEBUG] [Thread-128963] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:14.229 [DEBUG] [Thread-128963] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:14.277 [DEBUG] [Thread-128963] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:14.277 [DEBUG] [Thread-128963] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:14.285 [DEBUG] [Thread-128963] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:14.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:14.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-28T16:00:14.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-28T16:00:14.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:14.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:14.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:14.316 [DEBUG] [Thread-128963] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:16.482 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:16.483 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:19.527 [DEBUG] [Thread-128965 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:24.026 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:24.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:00:24.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:00:24.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-28T16:00:24.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 0, 20), 15.94, 34.42, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:00:24.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:00:20
2025-09-28T16:00:25.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:00:25.084 [DEBUG] [Thread-128966 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:25.171 [DEBUG] [Thread-128967] [transport.py] [_log()] starting thread (client mode): 0x2e3df8e0
2025-09-28T16:00:25.172 [DEBUG] [Thread-128967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:25.191 [DEBUG] [Thread-128967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:00:25.191 [INFO] [Thread-128967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:25.194 [DEBUG] [Thread-128967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:25.195 [DEBUG] [Thread-128967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:25.196 [DEBUG] [Thread-128967] [transport.py] [_log()] Compression: none
2025-09-28T16:00:25.196 [DEBUG] [Thread-128967] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:25.212 [DEBUG] [Thread-128967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:25.213 [DEBUG] [Thread-128967] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:25.213 [DEBUG] [Thread-128967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:00:25.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:00:25.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:25.215 [DEBUG] [Thread-128967] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:25.216 [DEBUG] [Thread-128967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:25.216 [DEBUG] [Thread-128967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:25.216 [DEBUG] [Thread-128967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:00:25.216 [DEBUG] [Thread-128967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:25.233 [INFO] [Thread-128967] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:25.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:25.818 [DEBUG] [Thread-128967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:25.818 [DEBUG] [Thread-128967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:25.818 [DEBUG] [Thread-128967] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:00:25.858 [DEBUG] [Thread-128967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:25.858 [DEBUG] [Thread-128967] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:25.861 [DEBUG] [Thread-128967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:25.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:25.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:00:25.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:00:25.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:00:25.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:25.881 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:00:25.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:25.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583415 -999.00  +18.30   8.40     38   +3.90 1 1 1 1 1   888    0 14.18 -14.04 ----- 8.4 8.4 180.8 18.4 23.4 -28.4 22.7 -26.8 24.3 -28.0 25.3 -28.2
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583415
2025-09-28T16:00:25.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:00:25.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:00:25.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:00:25.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:00:25.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:00:25.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:00:20', tmtdew=15.94, humidity=34.42, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:00:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:00:25.883 [DEBUG] [Thread-128967] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:25.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-28T16:00:25.978 [DEBUG] [Thread-128970] [transport.py] [_log()] starting thread (client mode): 0x2b929000
2025-09-28T16:00:25.978 [DEBUG] [Thread-128970] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:25.993 [DEBUG] [Thread-128970] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:00:25.993 [INFO] [Thread-128970] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:26.001 [DEBUG] [Thread-128970] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] Compression: none
2025-09-28T16:00:26.002 [DEBUG] [Thread-128970] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:26.062 [DEBUG] [Thread-128970] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:26.062 [DEBUG] [Thread-128970] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:26.063 [DEBUG] [Thread-128970] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:00:26.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:00:26.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:26.118 [DEBUG] [Thread-128970] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:26.118 [DEBUG] [Thread-128970] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:26.118 [DEBUG] [Thread-128970] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:26.118 [DEBUG] [Thread-128970] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:00:26.118 [DEBUG] [Thread-128970] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:26.144 [INFO] [Thread-128970] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:26.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:00:26.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:27.131 [DEBUG] [Thread-128970] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:27.131 [DEBUG] [Thread-128970] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:27.179 [DEBUG] [Thread-128970] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:27.179 [DEBUG] [Thread-128970] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:27.187 [DEBUG] [Thread-128970] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:27.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:27.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-28T16:00:27.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-28T16:00:27.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:27.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:27.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:27.220 [DEBUG] [Thread-128970] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:37.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:00:37.222 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:00:37.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-28T16:00:37.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 0, 20), 15.94, 34.42, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:00:37.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:00:20
2025-09-28T16:00:37.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:00:38.073 [DEBUG] [Thread-128972] [transport.py] [_log()] starting thread (client mode): 0x2b9b9d80
2025-09-28T16:00:38.073 [DEBUG] [Thread-128972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:38.089 [DEBUG] [Thread-128972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:00:38.089 [INFO] [Thread-128972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:38.093 [DEBUG] [Thread-128972] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] Compression: none
2025-09-28T16:00:38.094 [DEBUG] [Thread-128972] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:38.111 [DEBUG] [Thread-128972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:38.112 [DEBUG] [Thread-128972] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:38.113 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:00:38.113 [DEBUG] [Thread-128972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:00:38.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:38.115 [DEBUG] [Thread-128972] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:38.115 [DEBUG] [Thread-128972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:38.116 [DEBUG] [Thread-128972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:38.116 [DEBUG] [Thread-128972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:00:38.116 [DEBUG] [Thread-128972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:38.152 [INFO] [Thread-128972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:38.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:38.926 [DEBUG] [Thread-128972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:38.926 [DEBUG] [Thread-128972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:38.926 [DEBUG] [Thread-128972] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:00:38.968 [DEBUG] [Thread-128972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:38.968 [DEBUG] [Thread-128972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:38.971 [DEBUG] [Thread-128972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:38.975 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:38.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:00:38.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:00:38.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:00:38.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:38.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:00:38.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:38.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:38.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:00:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583415 -999.00  +18.30   8.40     38   +3.90 1 1 1 1 1   888    0 14.18 -14.04 ----- 8.4 8.4 180.8 18.4 23.4 -28.4 22.7 -26.8 24.3 -28.0 25.3 -28.2
2025-09-28T16:00:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:00:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:00:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583415
2025-09-28T16:00:38.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:00:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:00:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:00:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:00:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:00:38.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:00:20', tmtdew=15.94, humidity=34.42, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:00:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:00:38.986 [DEBUG] [Thread-128972] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:39.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-28T16:00:39.084 [DEBUG] [Thread-128975] [transport.py] [_log()] starting thread (client mode): 0x2b96e560
2025-09-28T16:00:39.084 [DEBUG] [Thread-128975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:39.099 [DEBUG] [Thread-128975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:00:39.099 [INFO] [Thread-128975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:39.107 [DEBUG] [Thread-128975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:39.108 [DEBUG] [Thread-128975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:39.108 [DEBUG] [Thread-128975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:39.108 [DEBUG] [Thread-128975] [transport.py] [_log()] Compression: none
2025-09-28T16:00:39.108 [DEBUG] [Thread-128975] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:39.165 [DEBUG] [Thread-128975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:39.166 [DEBUG] [Thread-128975] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:39.166 [DEBUG] [Thread-128975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:00:39.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:00:39.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:39.222 [DEBUG] [Thread-128975] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:39.222 [DEBUG] [Thread-128975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:39.222 [DEBUG] [Thread-128975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:39.222 [DEBUG] [Thread-128975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:00:39.222 [DEBUG] [Thread-128975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:39.241 [INFO] [Thread-128975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:39.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-28T16:00:39.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:40.122 [DEBUG] [Thread-128977 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:40.197 [DEBUG] [Thread-128975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:40.197 [DEBUG] [Thread-128975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:40.245 [DEBUG] [Thread-128975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:40.246 [DEBUG] [Thread-128975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:40.255 [DEBUG] [Thread-128975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:40.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:40.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')
2025-09-28T16:00:40.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-28T16:00:40.281 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:40.281 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:40.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:40.289 [DEBUG] [Thread-128975] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:46.577 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:00:50.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:00:50.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:00:50.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-28T16:00:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 0, 20), 15.94, 34.42, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:00:50.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:00:20
2025-09-28T16:00:51.007 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:00:51.158 [DEBUG] [Thread-128978] [transport.py] [_log()] starting thread (client mode): 0x2e38d450
2025-09-28T16:00:51.159 [DEBUG] [Thread-128978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:51.178 [DEBUG] [Thread-128978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:00:51.178 [INFO] [Thread-128978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:51.181 [DEBUG] [Thread-128978] [transport.py] [_log()] Compression: none
2025-09-28T16:00:51.182 [DEBUG] [Thread-128978] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:51.198 [DEBUG] [Thread-128978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:51.198 [DEBUG] [Thread-128978] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:51.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:00:51.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:51.198 [DEBUG] [Thread-128978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:00:51.199 [DEBUG] [Thread-128978] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:51.199 [DEBUG] [Thread-128978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:51.199 [DEBUG] [Thread-128978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:51.199 [DEBUG] [Thread-128978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:00:51.199 [DEBUG] [Thread-128978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:51.212 [INFO] [Thread-128978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:51.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:51.996 [DEBUG] [Thread-128978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:51.996 [DEBUG] [Thread-128978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:51.996 [DEBUG] [Thread-128978] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:00:52.037 [DEBUG] [Thread-128978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:52.037 [DEBUG] [Thread-128978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:52.038 [DEBUG] [Thread-128978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:52.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:52.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:00:52.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:00:52.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:52.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:00:52.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583415 -999.00  +18.30   8.40     38   +3.90 1 1 1 1 1   888    0 14.18 -14.04 ----- 8.4 8.4 180.8 18.4 23.4 -28.4 22.7 -26.8 24.3 -28.0 25.3 -28.2
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:00:52.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583415
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:00:52.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:00:20', tmtdew=15.94, humidity=34.42, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:00:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:00:52.055 [DEBUG] [Thread-128978] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:52.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-28T16:00:52.139 [DEBUG] [Thread-128981] [transport.py] [_log()] starting thread (client mode): 0x2b928640
2025-09-28T16:00:52.139 [DEBUG] [Thread-128981] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:00:52.154 [DEBUG] [Thread-128981] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:00:52.154 [INFO] [Thread-128981] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] client lang: <none>
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] server lang: <none>
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] kex follows: False
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:00:52.161 [DEBUG] [Thread-128981] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:00:52.162 [DEBUG] [Thread-128981] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:00:52.162 [DEBUG] [Thread-128981] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:00:52.162 [DEBUG] [Thread-128981] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:00:52.162 [DEBUG] [Thread-128981] [transport.py] [_log()] Compression: none
2025-09-28T16:00:52.162 [DEBUG] [Thread-128981] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:00:52.216 [DEBUG] [Thread-128981] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:00:52.217 [DEBUG] [Thread-128981] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:00:52.217 [DEBUG] [Thread-128981] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:00:52.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:00:52.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:00:52.274 [DEBUG] [Thread-128981] [transport.py] [_log()] userauth is OK
2025-09-28T16:00:52.274 [DEBUG] [Thread-128981] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:00:52.274 [DEBUG] [Thread-128981] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:00:52.274 [DEBUG] [Thread-128981] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:00:52.274 [DEBUG] [Thread-128981] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:00:52.292 [INFO] [Thread-128981] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:00:52.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-28T16:00:52.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:00:53.219 [DEBUG] [Thread-128981] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:00:53.219 [DEBUG] [Thread-128981] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:00:53.267 [DEBUG] [Thread-128981] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:00:53.267 [DEBUG] [Thread-128981] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:00:53.275 [DEBUG] [Thread-128981] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:00:53.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:00:53.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-28T16:00:53.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-28T16:00:53.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:00:53.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:00:53.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:00:53.307 [DEBUG] [Thread-128981] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:00:55.163 [DEBUG] [Thread-128983 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:03.304 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:01:03.304 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:01:03.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-28T16:01:03.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 0, 52), 15.79, 34.64, 0.0, 24.93, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:01:03.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:00:52
2025-09-28T16:01:04.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:01:04.152 [DEBUG] [Thread-128984] [transport.py] [_log()] starting thread (client mode): 0x2b9ba350
2025-09-28T16:01:04.152 [DEBUG] [Thread-128984] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:04.173 [DEBUG] [Thread-128984] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:01:04.173 [INFO] [Thread-128984] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:01:04.176 [DEBUG] [Thread-128984] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:04.176 [DEBUG] [Thread-128984] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:01:04.176 [DEBUG] [Thread-128984] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:04.176 [DEBUG] [Thread-128984] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] Compression: none
2025-09-28T16:01:04.177 [DEBUG] [Thread-128984] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:04.194 [DEBUG] [Thread-128984] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:04.195 [DEBUG] [Thread-128984] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:04.195 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:01:04.195 [DEBUG] [Thread-128984] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:01:04.196 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:04.197 [DEBUG] [Thread-128984] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:04.197 [DEBUG] [Thread-128984] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:04.197 [DEBUG] [Thread-128984] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:04.197 [DEBUG] [Thread-128984] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:01:04.198 [DEBUG] [Thread-128984] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:04.221 [INFO] [Thread-128984] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:04.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:04.801 [DEBUG] [Thread-128984] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:04.801 [DEBUG] [Thread-128984] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:04.801 [DEBUG] [Thread-128984] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:01:04.842 [DEBUG] [Thread-128984] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:04.842 [DEBUG] [Thread-128984] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:04.849 [DEBUG] [Thread-128984] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:04.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:04.862 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:01:04.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:01:04.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:01:04.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:04.872 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:01:04.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:04.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:04.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:01:04.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583762 -999.00  +18.40  13.07     38   +3.80 1 1 1 1 1   887    0 14.32 -15.18 ----- 13.1 13.1 209.3 21.1 23.3 -28.8 22.7 -26.7 24.4 -27.1 25.4 -29.7
2025-09-28T16:01:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:01:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:01:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583762
2025-09-28T16:01:04.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:01:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:01:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:01:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:01:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:01:04.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:00:52', tmtdew=15.79, humidity=34.64, cloud=0.0, wind=24.93, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:00:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:01:04.874 [DEBUG] [Thread-128984] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:04.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-28T16:01:04.969 [DEBUG] [Thread-128987] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T16:01:04.969 [DEBUG] [Thread-128987] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:04.984 [DEBUG] [Thread-128987] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:01:04.984 [INFO] [Thread-128987] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:01:04.992 [DEBUG] [Thread-128987] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:04.992 [DEBUG] [Thread-128987] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:04.993 [DEBUG] [Thread-128987] [transport.py] [_log()] Compression: none
2025-09-28T16:01:04.994 [DEBUG] [Thread-128987] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:05.050 [DEBUG] [Thread-128987] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:05.050 [DEBUG] [Thread-128987] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:05.051 [DEBUG] [Thread-128987] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:01:05.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:01:05.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:05.106 [DEBUG] [Thread-128987] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:05.106 [DEBUG] [Thread-128987] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:05.106 [DEBUG] [Thread-128987] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:05.106 [DEBUG] [Thread-128987] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:01:05.106 [DEBUG] [Thread-128987] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:05.125 [INFO] [Thread-128987] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:05.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-28T16:01:05.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:06.110 [DEBUG] [Thread-128987] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:06.110 [DEBUG] [Thread-128987] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:06.158 [DEBUG] [Thread-128987] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:06.158 [DEBUG] [Thread-128987] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:06.167 [DEBUG] [Thread-128987] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:06.176 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:06.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-28T16:01:06.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-28T16:01:06.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:06.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:06.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:06.202 [DEBUG] [Thread-128987] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:09.051 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:10.191 [DEBUG] [Thread-128989 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:16.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:01:16.205 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:01:16.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-28T16:01:16.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:16.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:16.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 0, 52), 15.79, 34.64, 0.0, 24.93, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:01:16.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:00:52
2025-09-28T16:01:16.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:01:17.051 [DEBUG] [Thread-128990] [transport.py] [_log()] starting thread (client mode): 0x2e34baf0
2025-09-28T16:01:17.051 [DEBUG] [Thread-128990] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:17.075 [DEBUG] [Thread-128990] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:01:17.075 [INFO] [Thread-128990] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:01:17.079 [DEBUG] [Thread-128990] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:17.079 [DEBUG] [Thread-128990] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:01:17.079 [DEBUG] [Thread-128990] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:17.079 [DEBUG] [Thread-128990] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:17.079 [DEBUG] [Thread-128990] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] Compression: none
2025-09-28T16:01:17.080 [DEBUG] [Thread-128990] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:17.097 [DEBUG] [Thread-128990] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:17.098 [DEBUG] [Thread-128990] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:17.098 [DEBUG] [Thread-128990] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:01:17.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:01:17.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:17.100 [DEBUG] [Thread-128990] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:17.100 [DEBUG] [Thread-128990] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:17.100 [DEBUG] [Thread-128990] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:17.100 [DEBUG] [Thread-128990] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:01:17.100 [DEBUG] [Thread-128990] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:17.111 [INFO] [Thread-128990] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:17.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:17.886 [DEBUG] [Thread-128990] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:17.886 [DEBUG] [Thread-128990] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:17.887 [DEBUG] [Thread-128990] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:01:17.927 [DEBUG] [Thread-128990] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:17.928 [DEBUG] [Thread-128990] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:17.930 [DEBUG] [Thread-128990] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:17.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:17.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:01:17.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:01:17.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:01:17.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:17.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:01:17.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:17.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:17.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:01:17.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.583762 -999.00  +18.40  13.07     38   +3.80 1 1 1 1 1   887    0 14.32 -15.18 ----- 13.1 13.1 209.3 21.1 23.3 -28.8 22.7 -26.7 24.4 -27.1 25.4 -29.7
2025-09-28T16:01:17.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:01:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:01:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.583762
2025-09-28T16:01:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:01:17.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:01:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:01:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:01:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:01:17.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:00:52', tmtdew=15.79, humidity=34.64, cloud=0.0, wind=24.93, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:00:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:01:17.957 [DEBUG] [Thread-128990] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:18.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-28T16:01:18.051 [DEBUG] [Thread-128993] [transport.py] [_log()] starting thread (client mode): 0x2e349990
2025-09-28T16:01:18.051 [DEBUG] [Thread-128993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:18.066 [DEBUG] [Thread-128993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:01:18.066 [INFO] [Thread-128993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:18.074 [DEBUG] [Thread-128993] [transport.py] [_log()] Compression: none
2025-09-28T16:01:18.075 [DEBUG] [Thread-128993] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:18.129 [DEBUG] [Thread-128993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:18.130 [DEBUG] [Thread-128993] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:18.130 [DEBUG] [Thread-128993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:01:18.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:01:18.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:18.190 [DEBUG] [Thread-128993] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:18.190 [DEBUG] [Thread-128993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:18.190 [DEBUG] [Thread-128993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:18.191 [DEBUG] [Thread-128993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:01:18.191 [DEBUG] [Thread-128993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:18.210 [INFO] [Thread-128993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:18.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-28T16:01:18.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:19.169 [DEBUG] [Thread-128993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:19.170 [DEBUG] [Thread-128993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:19.217 [DEBUG] [Thread-128993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:19.217 [DEBUG] [Thread-128993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:19.226 [DEBUG] [Thread-128993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:19.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:19.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-28T16:01:19.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-28T16:01:19.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:19.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:19.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:19.261 [DEBUG] [Thread-128993] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:19.580 [DEBUG] [Thread-128995 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:25.237 [DEBUG] [Thread-128996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:29.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:01:29.263 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:01:29.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-28T16:01:29.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 1, 24), 15.79, 34.64, 0.0, 25.78, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:01:29.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:01:24
2025-09-28T16:01:29.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:01:30.123 [DEBUG] [Thread-128997] [transport.py] [_log()] starting thread (client mode): 0x2e349270
2025-09-28T16:01:30.124 [DEBUG] [Thread-128997] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:30.144 [DEBUG] [Thread-128997] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:01:30.144 [INFO] [Thread-128997] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:30.147 [DEBUG] [Thread-128997] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] Compression: none
2025-09-28T16:01:30.148 [DEBUG] [Thread-128997] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:30.166 [DEBUG] [Thread-128997] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:30.166 [DEBUG] [Thread-128997] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:30.166 [DEBUG] [Thread-128997] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:01:30.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:01:30.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:30.167 [DEBUG] [Thread-128997] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:30.167 [DEBUG] [Thread-128997] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:30.167 [DEBUG] [Thread-128997] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:30.167 [DEBUG] [Thread-128997] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:01:30.167 [DEBUG] [Thread-128997] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:30.177 [INFO] [Thread-128997] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:30.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:30.763 [DEBUG] [Thread-128997] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:30.763 [DEBUG] [Thread-128997] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:30.763 [DEBUG] [Thread-128997] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:01:30.803 [DEBUG] [Thread-128997] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:30.803 [DEBUG] [Thread-128997] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:30.806 [DEBUG] [Thread-128997] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:30.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:30.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:01:30.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:01:30.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:01:30.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:30.828 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:01:30.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584110 -999.00  +18.40  13.25     38   +3.90 1 1 1 1 1   887    0 13.88 -14.65 ----- 13.2 13.2 200.0 19.2 23.3 -27.1 22.6 -27.2 24.2 -28.1 25.4 -27.3
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:01:30.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584110
2025-09-28T16:01:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:01:30.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:01:30.830 [DEBUG] [Thread-128997] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:30.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:01:30.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:01:30.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:01:30.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:01:24', tmtdew=15.79, humidity=34.64, cloud=0.0, wind=25.78, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:01:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:01:30.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-28T16:01:30.921 [DEBUG] [Thread-129000] [transport.py] [_log()] starting thread (client mode): 0x2b91cee0
2025-09-28T16:01:30.921 [DEBUG] [Thread-129000] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:30.940 [DEBUG] [Thread-129000] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:01:30.940 [INFO] [Thread-129000] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:01:30.947 [DEBUG] [Thread-129000] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:30.948 [DEBUG] [Thread-129000] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:30.949 [DEBUG] [Thread-129000] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:30.950 [DEBUG] [Thread-129000] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:30.950 [DEBUG] [Thread-129000] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:30.950 [DEBUG] [Thread-129000] [transport.py] [_log()] Compression: none
2025-09-28T16:01:30.950 [DEBUG] [Thread-129000] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:31.008 [DEBUG] [Thread-129000] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:31.008 [DEBUG] [Thread-129000] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:31.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:01:31.010 [DEBUG] [Thread-129000] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:01:31.010 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:31.066 [DEBUG] [Thread-129000] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:31.066 [DEBUG] [Thread-129000] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:31.067 [DEBUG] [Thread-129000] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:31.067 [DEBUG] [Thread-129000] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:01:31.067 [DEBUG] [Thread-129000] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:31.088 [INFO] [Thread-129000] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:31.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-28T16:01:31.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:31.580 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:32.051 [DEBUG] [Thread-129000] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:32.051 [DEBUG] [Thread-129000] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:32.099 [DEBUG] [Thread-129000] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:32.099 [DEBUG] [Thread-129000] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:32.108 [DEBUG] [Thread-129000] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:32.117 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:32.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-28T16:01:32.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-28T16:01:32.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:32.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:32.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:32.142 [DEBUG] [Thread-129000] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:40.264 [DEBUG] [Thread-129002 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:42.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:01:42.145 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:01:42.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-28T16:01:42.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 1, 24), 15.79, 34.64, 0.0, 25.78, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:01:42.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:01:24
2025-09-28T16:01:42.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:01:42.987 [DEBUG] [Thread-129003] [transport.py] [_log()] starting thread (client mode): 0x2e34a350
2025-09-28T16:01:42.987 [DEBUG] [Thread-129003] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:43.007 [DEBUG] [Thread-129003] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:01:43.008 [INFO] [Thread-129003] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:43.011 [DEBUG] [Thread-129003] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] Compression: none
2025-09-28T16:01:43.012 [DEBUG] [Thread-129003] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:43.021 [DEBUG] [Thread-129003] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:43.021 [DEBUG] [Thread-129003] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:43.022 [DEBUG] [Thread-129003] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:01:43.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:01:43.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:43.064 [DEBUG] [Thread-129003] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:43.065 [DEBUG] [Thread-129003] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:43.065 [DEBUG] [Thread-129003] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:43.065 [DEBUG] [Thread-129003] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:01:43.065 [DEBUG] [Thread-129003] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:43.089 [INFO] [Thread-129003] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:43.089 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:43.816 [DEBUG] [Thread-129003] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:43.817 [DEBUG] [Thread-129003] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:43.817 [DEBUG] [Thread-129003] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:01:43.857 [DEBUG] [Thread-129003] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:43.858 [DEBUG] [Thread-129003] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:43.861 [DEBUG] [Thread-129003] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:43.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:43.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:01:43.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:01:43.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:01:43.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:43.884 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:01:43.885 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:43.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:43.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:01:43.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584110 -999.00  +18.40  13.25     38   +3.90 1 1 1 1 1   887    0 13.88 -14.65 ----- 13.2 13.2 200.0 19.2 23.3 -27.1 22.6 -27.2 24.2 -28.1 25.4 -27.3
2025-09-28T16:01:43.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:01:43.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:01:43.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584110
2025-09-28T16:01:43.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:01:43.886 [DEBUG] [Thread-129003] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:43.887 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:01:43.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:01:43.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:01:43.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:01:43.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:01:24', tmtdew=15.79, humidity=34.64, cloud=0.0, wind=25.78, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:01:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:01:43.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-28T16:01:43.985 [DEBUG] [Thread-129006] [transport.py] [_log()] starting thread (client mode): 0x2b9b8bb0
2025-09-28T16:01:43.985 [DEBUG] [Thread-129006] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:44.001 [DEBUG] [Thread-129006] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:01:44.001 [INFO] [Thread-129006] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:01:44.008 [DEBUG] [Thread-129006] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:44.008 [DEBUG] [Thread-129006] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:01:44.008 [DEBUG] [Thread-129006] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:44.008 [DEBUG] [Thread-129006] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] Compression: none
2025-09-28T16:01:44.009 [DEBUG] [Thread-129006] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:44.069 [DEBUG] [Thread-129006] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:44.070 [DEBUG] [Thread-129006] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:44.070 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:01:44.071 [DEBUG] [Thread-129006] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:01:44.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:44.126 [DEBUG] [Thread-129006] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:44.126 [DEBUG] [Thread-129006] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:44.126 [DEBUG] [Thread-129006] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:44.126 [DEBUG] [Thread-129006] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:01:44.126 [DEBUG] [Thread-129006] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:44.145 [INFO] [Thread-129006] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01: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-28T16:01:44.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:45.099 [DEBUG] [Thread-129006] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:45.100 [DEBUG] [Thread-129006] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:45.147 [DEBUG] [Thread-129006] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:45.147 [DEBUG] [Thread-129006] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:45.156 [DEBUG] [Thread-129006] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:45.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:45.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')
2025-09-28T16:01:45.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-28T16:01:45.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:45.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:45.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:45.190 [DEBUG] [Thread-129006] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:54.105 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:54.780 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:55.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:01:55.193 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:01:55.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:01:55.304 [DEBUG] [Thread-129008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:55.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 1, 24), 15.79, 34.64, 0.0, 25.78, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:01:55.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:01:24
2025-09-28T16:01:55.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:01:56.021 [DEBUG] [Thread-129009] [transport.py] [_log()] starting thread (client mode): 0x2e3fa3b0
2025-09-28T16:01:56.021 [DEBUG] [Thread-129009] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:56.037 [DEBUG] [Thread-129009] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:01:56.037 [INFO] [Thread-129009] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:01:56.040 [DEBUG] [Thread-129009] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] Compression: none
2025-09-28T16:01:56.041 [DEBUG] [Thread-129009] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:56.059 [DEBUG] [Thread-129009] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:56.060 [DEBUG] [Thread-129009] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:56.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:01:56.061 [DEBUG] [Thread-129009] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:01:56.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:56.062 [DEBUG] [Thread-129009] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:56.063 [DEBUG] [Thread-129009] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:56.063 [DEBUG] [Thread-129009] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:56.063 [DEBUG] [Thread-129009] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:01:56.063 [DEBUG] [Thread-129009] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:56.081 [INFO] [Thread-129009] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:56.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:56.897 [DEBUG] [Thread-129009] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:56.897 [DEBUG] [Thread-129009] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:56.898 [DEBUG] [Thread-129009] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:01:56.939 [DEBUG] [Thread-129009] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:56.939 [DEBUG] [Thread-129009] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:56.941 [DEBUG] [Thread-129009] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:56.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:56.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:01:56.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:01:56.955 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:01:56.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:56.958 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:01:56.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:56.958 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584110 -999.00  +18.40  13.25     38   +3.90 1 1 1 1 1   887    0 13.88 -14.65 ----- 13.2 13.2 200.0 19.2 23.3 -27.1 22.6 -27.2 24.2 -28.1 25.4 -27.3
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584110
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:01:56.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:01:24', tmtdew=15.79, humidity=34.64, cloud=0.0, wind=25.78, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:01:07.104', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:01:56.960 [DEBUG] [Thread-129009] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:57.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-28T16:01:57.043 [DEBUG] [Thread-129012] [transport.py] [_log()] starting thread (client mode): 0x2e3def80
2025-09-28T16:01:57.043 [DEBUG] [Thread-129012] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:01:57.058 [DEBUG] [Thread-129012] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:01:57.058 [INFO] [Thread-129012] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:01:57.065 [DEBUG] [Thread-129012] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:01:57.065 [DEBUG] [Thread-129012] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] client lang: <none>
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] server lang: <none>
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] kex follows: False
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] Compression: none
2025-09-28T16:01:57.066 [DEBUG] [Thread-129012] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:01:57.120 [DEBUG] [Thread-129012] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:01:57.121 [DEBUG] [Thread-129012] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:01:57.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:01:57.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:01:57.121 [DEBUG] [Thread-129012] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:01:57.178 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:57.178 [DEBUG] [Thread-129012] [transport.py] [_log()] userauth is OK
2025-09-28T16:01:57.178 [DEBUG] [Thread-129012] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:01:57.178 [DEBUG] [Thread-129012] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:01:57.178 [DEBUG] [Thread-129012] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:01:57.178 [DEBUG] [Thread-129012] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:01:57.195 [INFO] [Thread-129012] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:01:57.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-28T16:01:57.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:01:57.536 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:01:58.132 [DEBUG] [Thread-129012] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:01:58.132 [DEBUG] [Thread-129012] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:01:58.180 [DEBUG] [Thread-129012] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:01:58.180 [DEBUG] [Thread-129012] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:01:58.189 [DEBUG] [Thread-129012] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:01:58.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:01:58.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-28T16:01:58.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-28T16:01:58.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:01:58.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:01:58.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:01:58.220 [DEBUG] [Thread-129012] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:01:58.920 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:00.332 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:00.699 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:02.092 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:03.496 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:03.897 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:05.271 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:06.665 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:07.295 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:08.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:02:08.223 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:02:08.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:02:08.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 1, 56), 15.53, 35.27, 0.0, 20.64, 17.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:02:08.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:01:56
2025-09-28T16:02:08.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:02:09.074 [DEBUG] [Thread-129014] [transport.py] [_log()] starting thread (client mode): 0x2e3f9960
2025-09-28T16:02:09.074 [DEBUG] [Thread-129014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:09.095 [DEBUG] [Thread-129014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:02:09.095 [INFO] [Thread-129014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] Compression: none
2025-09-28T16:02:09.098 [DEBUG] [Thread-129014] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:09.117 [DEBUG] [Thread-129014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:09.118 [DEBUG] [Thread-129014] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:09.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:02:09.119 [DEBUG] [Thread-129014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:02:09.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:09.120 [DEBUG] [Thread-129014] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:09.121 [DEBUG] [Thread-129014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:09.121 [DEBUG] [Thread-129014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:09.121 [DEBUG] [Thread-129014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:02:09.121 [DEBUG] [Thread-129014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:09.145 [INFO] [Thread-129014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:09.146 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:09.761 [DEBUG] [Thread-129014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:09.761 [DEBUG] [Thread-129014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:09.761 [DEBUG] [Thread-129014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:02:09.802 [DEBUG] [Thread-129014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:09.802 [DEBUG] [Thread-129014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:09.805 [DEBUG] [Thread-129014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:09.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:09.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:02:09.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:02:09.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:02:09.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:09.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:02:09.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:09.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:02:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584457 -999.00  +18.50  11.28     38   +3.90 1 1 1 1 1   887    0 14.06 -14.02 ----- 11.3 11.3 210.4 18.8 23.4 -27.2 22.6 -28.0 24.4 -27.1 25.4 -27.8
2025-09-28T16:02:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:02:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:02:09.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584457
2025-09-28T16:02:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:02:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:02:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:02:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:02:09.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:02:09.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:01:56', tmtdew=15.53, humidity=35.27, cloud=0.0, wind=20.64, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:01:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:02:09.833 [DEBUG] [Thread-129014] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:09.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-28T16:02:09.929 [DEBUG] [Thread-129017] [transport.py] [_log()] starting thread (client mode): 0x2e3df5b0
2025-09-28T16:02:09.929 [DEBUG] [Thread-129017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:09.945 [DEBUG] [Thread-129017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:02:09.945 [INFO] [Thread-129017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:02:09.952 [DEBUG] [Thread-129017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:09.953 [DEBUG] [Thread-129017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:09.954 [DEBUG] [Thread-129017] [transport.py] [_log()] Compression: none
2025-09-28T16:02:09.954 [DEBUG] [Thread-129017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:10.010 [DEBUG] [Thread-129017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:10.010 [DEBUG] [Thread-129017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:10.011 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:02:10.011 [DEBUG] [Thread-129017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:02:10.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:10.066 [DEBUG] [Thread-129017] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:10.066 [DEBUG] [Thread-129017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:10.066 [DEBUG] [Thread-129017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:10.067 [DEBUG] [Thread-129017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:02:10.067 [DEBUG] [Thread-129017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:10.086 [INFO] [Thread-129017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:10.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-28T16:02:10.086 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:10.328 [DEBUG] [Thread-129019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:11.065 [DEBUG] [Thread-129017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:11.065 [DEBUG] [Thread-129017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:11.113 [DEBUG] [Thread-129017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:11.113 [DEBUG] [Thread-129017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:11.123 [DEBUG] [Thread-129017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:11.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:11.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-28T16:02:11.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-28T16:02:11.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:11.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:11.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:11.158 [DEBUG] [Thread-129017] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:15.689 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:16.769 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:16.771 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:19.613 [DEBUG] [Thread-129020 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:21.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:02:21.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:02:21.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:02:21.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 1, 56), 15.53, 35.27, 0.0, 20.64, 17.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:02:21.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:01:56
2025-09-28T16:02:21.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:02:22.015 [DEBUG] [Thread-129021] [transport.py] [_log()] starting thread (client mode): 0x2b91d750
2025-09-28T16:02:22.015 [DEBUG] [Thread-129021] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:22.035 [DEBUG] [Thread-129021] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:02:22.035 [INFO] [Thread-129021] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] Compression: none
2025-09-28T16:02:22.039 [DEBUG] [Thread-129021] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:22.048 [DEBUG] [Thread-129021] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:22.048 [DEBUG] [Thread-129021] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:22.049 [DEBUG] [Thread-129021] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:02:22.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:02:22.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:22.049 [DEBUG] [Thread-129021] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:22.049 [DEBUG] [Thread-129021] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:22.049 [DEBUG] [Thread-129021] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:22.049 [DEBUG] [Thread-129021] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:02:22.050 [DEBUG] [Thread-129021] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:22.059 [INFO] [Thread-129021] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:22.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:22.118 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:22.839 [DEBUG] [Thread-129021] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:22.839 [DEBUG] [Thread-129021] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:22.840 [DEBUG] [Thread-129021] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:02:22.880 [DEBUG] [Thread-129021] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:22.880 [DEBUG] [Thread-129021] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:22.883 [DEBUG] [Thread-129021] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:22.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:22.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:02:22.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:02:22.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:02:22.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:22.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:02:22.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:22.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584457 -999.00  +18.50  11.28     38   +3.90 1 1 1 1 1   887    0 14.06 -14.02 ----- 11.3 11.3 210.4 18.8 23.4 -27.2 22.6 -28.0 24.4 -27.1 25.4 -27.8
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584457
2025-09-28T16:02:22.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:02:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:02:22.907 [DEBUG] [Thread-129021] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:22.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:02:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:02:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:02:22.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:01:56', tmtdew=15.53, humidity=35.27, cloud=0.0, wind=20.64, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:01:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:02:22.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-28T16:02:23.001 [DEBUG] [Thread-129024] [transport.py] [_log()] starting thread (client mode): 0x2b91d6f0
2025-09-28T16:02:23.001 [DEBUG] [Thread-129024] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:23.015 [DEBUG] [Thread-129024] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:02:23.016 [INFO] [Thread-129024] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:02:23.023 [DEBUG] [Thread-129024] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:23.023 [DEBUG] [Thread-129024] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:02:23.023 [DEBUG] [Thread-129024] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:23.023 [DEBUG] [Thread-129024] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:23.023 [DEBUG] [Thread-129024] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:23.024 [DEBUG] [Thread-129024] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:23.025 [DEBUG] [Thread-129024] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:23.025 [DEBUG] [Thread-129024] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:23.025 [DEBUG] [Thread-129024] [transport.py] [_log()] Compression: none
2025-09-28T16:02:23.025 [DEBUG] [Thread-129024] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:23.082 [DEBUG] [Thread-129024] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:23.082 [DEBUG] [Thread-129024] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:23.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:02:23.083 [DEBUG] [Thread-129024] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:02:23.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:23.138 [DEBUG] [Thread-129024] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:23.138 [DEBUG] [Thread-129024] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:23.139 [DEBUG] [Thread-129024] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:23.139 [DEBUG] [Thread-129024] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:02:23.139 [DEBUG] [Thread-129024] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:23.157 [INFO] [Thread-129024] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:23.157 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:02:23.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:24.135 [DEBUG] [Thread-129024] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:24.136 [DEBUG] [Thread-129024] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:24.183 [DEBUG] [Thread-129024] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:24.183 [DEBUG] [Thread-129024] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:24.192 [DEBUG] [Thread-129024] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:24.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:24.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-28T16:02:24.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-28T16:02:24.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:24.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:24.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:24.227 [DEBUG] [Thread-129024] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:25.377 [DEBUG] [Thread-129026 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:28.542 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:34.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:02:34.229 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:02:34.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:02:34.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 2, 28), 15.48, 35.39, 0.0, 21.58, 17.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:02:34.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:02:28
2025-09-28T16:02:34.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:02:34.960 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:35.079 [DEBUG] [Thread-129027] [transport.py] [_log()] starting thread (client mode): 0x2e38ee00
2025-09-28T16:02:35.079 [DEBUG] [Thread-129027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:35.095 [DEBUG] [Thread-129027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:02:35.095 [INFO] [Thread-129027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] Compression: none
2025-09-28T16:02:35.098 [DEBUG] [Thread-129027] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:35.109 [DEBUG] [Thread-129027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:35.109 [DEBUG] [Thread-129027] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:35.110 [DEBUG] [Thread-129027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:02:35.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:02:35.110 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:35.112 [DEBUG] [Thread-129027] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:35.112 [DEBUG] [Thread-129027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:35.112 [DEBUG] [Thread-129027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:35.112 [DEBUG] [Thread-129027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:02:35.112 [DEBUG] [Thread-129027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:35.135 [INFO] [Thread-129027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:35.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:35.719 [DEBUG] [Thread-129027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:35.719 [DEBUG] [Thread-129027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:35.719 [DEBUG] [Thread-129027] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:02:35.761 [DEBUG] [Thread-129027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:35.761 [DEBUG] [Thread-129027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:35.763 [DEBUG] [Thread-129027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:35.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:35.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:02:35.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:02:35.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:02:35.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:35.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:02:35.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584804 -999.00  +18.50  21.19     37   +3.90 1 1 1 1 1   887    0 14.03 -13.64 ----- 21.2 21.2 197.2 23.7 23.5 -28.1 22.8 -27.4 24.4 -25.9 25.5 -28.3
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:02:35.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584804
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:02:35.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:02:28', tmtdew=15.48, humidity=35.39, cloud=0.0, wind=21.58, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:02:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:02:35.780 [DEBUG] [Thread-129027] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:35.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-28T16:02:35.864 [DEBUG] [Thread-129030] [transport.py] [_log()] starting thread (client mode): 0x2b96c310
2025-09-28T16:02:35.864 [DEBUG] [Thread-129030] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:35.879 [DEBUG] [Thread-129030] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:02:35.879 [INFO] [Thread-129030] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:35.886 [DEBUG] [Thread-129030] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] Compression: none
2025-09-28T16:02:35.887 [DEBUG] [Thread-129030] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:35.946 [DEBUG] [Thread-129030] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:35.947 [DEBUG] [Thread-129030] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:35.948 [DEBUG] [Thread-129030] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:02:35.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:02:35.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:36.002 [DEBUG] [Thread-129030] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:36.002 [DEBUG] [Thread-129030] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:36.002 [DEBUG] [Thread-129030] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:36.003 [DEBUG] [Thread-129030] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:02:36.003 [DEBUG] [Thread-129030] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:36.022 [INFO] [Thread-129030] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:36.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-28T16:02:36.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:36.999 [DEBUG] [Thread-129030] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:36.999 [DEBUG] [Thread-129030] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:37.047 [DEBUG] [Thread-129030] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:37.047 [DEBUG] [Thread-129030] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:37.056 [DEBUG] [Thread-129030] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:37.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:37.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-28T16:02:37.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-28T16:02:37.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:37.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:37.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:37.090 [DEBUG] [Thread-129030] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:40.405 [DEBUG] [Thread-129032 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:41.401 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:47.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:02:47.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:02:47.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-28T16:02:47.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 2, 28), 15.48, 35.39, 0.0, 21.58, 17.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:02:47.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:02:28
2025-09-28T16:02:47.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:02:47.795 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:47.922 [DEBUG] [Thread-129033] [transport.py] [_log()] starting thread (client mode): 0x2b91ece0
2025-09-28T16:02:47.922 [DEBUG] [Thread-129033] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:47.941 [DEBUG] [Thread-129033] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:02:47.941 [INFO] [Thread-129033] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:02:47.944 [DEBUG] [Thread-129033] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:47.944 [DEBUG] [Thread-129033] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] Compression: none
2025-09-28T16:02:47.945 [DEBUG] [Thread-129033] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:47.963 [DEBUG] [Thread-129033] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:47.963 [DEBUG] [Thread-129033] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:47.964 [DEBUG] [Thread-129033] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:02:47.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:02:47.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:47.965 [DEBUG] [Thread-129033] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:47.966 [DEBUG] [Thread-129033] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:47.966 [DEBUG] [Thread-129033] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:47.966 [DEBUG] [Thread-129033] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:02:47.966 [DEBUG] [Thread-129033] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:47.984 [INFO] [Thread-129033] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:47.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:48.764 [DEBUG] [Thread-129033] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:48.765 [DEBUG] [Thread-129033] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:48.765 [DEBUG] [Thread-129033] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:02:48.805 [DEBUG] [Thread-129033] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:48.805 [DEBUG] [Thread-129033] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:48.807 [DEBUG] [Thread-129033] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:48.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:48.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:02:48.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:02:48.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:02:48.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:48.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:02:48.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:48.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584804 -999.00  +18.50  21.19     37   +3.90 1 1 1 1 1   887    0 14.03 -13.64 ----- 21.2 21.2 197.2 23.7 23.5 -28.1 22.8 -27.4 24.4 -25.9 25.5 -28.3
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584804
2025-09-28T16:02:48.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:02:48.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:02:48.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:02:48.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:02:48.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:02:48.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:02:28', tmtdew=15.48, humidity=35.39, cloud=0.0, wind=21.58, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:02:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:02:48.834 [DEBUG] [Thread-129033] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:48.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-28T16:02:48.932 [DEBUG] [Thread-129036] [transport.py] [_log()] starting thread (client mode): 0x2b91df60
2025-09-28T16:02:48.932 [DEBUG] [Thread-129036] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:02:48.950 [DEBUG] [Thread-129036] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:02:48.950 [INFO] [Thread-129036] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:02:48.957 [DEBUG] [Thread-129036] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:02:48.958 [DEBUG] [Thread-129036] [transport.py] [_log()] client lang: <none>
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] server lang: <none>
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] kex follows: False
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:02:48.959 [DEBUG] [Thread-129036] [transport.py] [_log()] Compression: none
2025-09-28T16:02:48.960 [DEBUG] [Thread-129036] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:02:49.019 [DEBUG] [Thread-129036] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:02:49.019 [DEBUG] [Thread-129036] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:02:49.020 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:02:49.020 [DEBUG] [Thread-129036] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:02:49.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:02:49.077 [DEBUG] [Thread-129036] [transport.py] [_log()] userauth is OK
2025-09-28T16:02:49.078 [DEBUG] [Thread-129036] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:02:49.078 [DEBUG] [Thread-129036] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:02:49.078 [DEBUG] [Thread-129036] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:02:49.078 [DEBUG] [Thread-129036] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:02:49.097 [INFO] [Thread-129036] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:02:49.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-28T16:02:49.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:02:50.138 [DEBUG] [Thread-129036] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:02:50.138 [DEBUG] [Thread-129036] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:02:50.186 [DEBUG] [Thread-129036] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:02:50.186 [DEBUG] [Thread-129036] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:02:50.195 [DEBUG] [Thread-129036] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:02:50.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:02:50.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-28T16:02:50.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-28T16:02:50.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:02:50.222 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:02:50.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:02:50.230 [DEBUG] [Thread-129036] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:02:54.178 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:02:55.441 [DEBUG] [Thread-129038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:00.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:03:00.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:03:00.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-28T16:03:00.569 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:00.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 2, 28), 15.48, 35.39, 0.0, 21.58, 17.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:03:00.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:02:28
2025-09-28T16:03:00.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:03:01.081 [DEBUG] [Thread-129039] [transport.py] [_log()] starting thread (client mode): 0x2e3dce20
2025-09-28T16:03:01.081 [DEBUG] [Thread-129039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:01.101 [DEBUG] [Thread-129039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:03:01.101 [INFO] [Thread-129039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] Compression: none
2025-09-28T16:03:01.104 [DEBUG] [Thread-129039] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:01.120 [DEBUG] [Thread-129039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:01.120 [DEBUG] [Thread-129039] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:01.120 [DEBUG] [Thread-129039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:03:01.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:03:01.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:01.121 [DEBUG] [Thread-129039] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:01.121 [DEBUG] [Thread-129039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:01.121 [DEBUG] [Thread-129039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:01.121 [DEBUG] [Thread-129039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:03:01.121 [DEBUG] [Thread-129039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:01.130 [INFO] [Thread-129039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:01.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:01.961 [DEBUG] [Thread-129039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:01.961 [DEBUG] [Thread-129039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:01.961 [DEBUG] [Thread-129039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:03:02.002 [DEBUG] [Thread-129039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:02.002 [DEBUG] [Thread-129039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:02.004 [DEBUG] [Thread-129039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:02.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:02.017 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:03:02.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:03:02.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:03:02.022 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:02.023 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:03:02.023 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.584804 -999.00  +18.50  21.19     37   +3.90 1 1 1 1 1   887    0 14.03 -13.64 ----- 21.2 21.2 197.2 23.7 23.5 -28.1 22.8 -27.4 24.4 -25.9 25.5 -28.3
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.584804
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:03:02.023 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:02:28', tmtdew=15.48, humidity=35.39, cloud=0.0, wind=21.58, temperature=17.06, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:02:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:03:02.024 [DEBUG] [Thread-129039] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:02.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-28T16:03:02.109 [DEBUG] [Thread-129042] [transport.py] [_log()] starting thread (client mode): 0x2e38cac0
2025-09-28T16:03:02.109 [DEBUG] [Thread-129042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:02.124 [DEBUG] [Thread-129042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:03:02.124 [INFO] [Thread-129042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:02.131 [DEBUG] [Thread-129042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:02.132 [DEBUG] [Thread-129042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:02.132 [DEBUG] [Thread-129042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:02.132 [DEBUG] [Thread-129042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:02.132 [DEBUG] [Thread-129042] [transport.py] [_log()] Compression: none
2025-09-28T16:03:02.132 [DEBUG] [Thread-129042] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:02.190 [DEBUG] [Thread-129042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:02.190 [DEBUG] [Thread-129042] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:02.190 [DEBUG] [Thread-129042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:03:02.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:03:02.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:02.246 [DEBUG] [Thread-129042] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:02.246 [DEBUG] [Thread-129042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:02.246 [DEBUG] [Thread-129042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:02.246 [DEBUG] [Thread-129042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:03:02.246 [DEBUG] [Thread-129042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:02.262 [INFO] [Thread-129042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:02.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-28T16:03:02.262 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:03.296 [DEBUG] [Thread-129042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:03.297 [DEBUG] [Thread-129042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:03.344 [DEBUG] [Thread-129042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:03.344 [DEBUG] [Thread-129042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:03.353 [DEBUG] [Thread-129042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:03.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:03.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-28T16:03:03.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-28T16:03:03.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:03.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:03.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:03.390 [DEBUG] [Thread-129042] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:06.966 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:10.473 [DEBUG] [Thread-129044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:13.361 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:13.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:03:13.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:03:13.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:03:13.900 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:13.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 2, 28), 15.63, 34.89, 0.0, 21.58, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:03:13.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:02:28
2025-09-28T16:03:14.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:03:14.230 [DEBUG] [Thread-129045] [transport.py] [_log()] starting thread (client mode): 0x2b96f430
2025-09-28T16:03:14.230 [DEBUG] [Thread-129045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:14.250 [DEBUG] [Thread-129045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:03:14.250 [INFO] [Thread-129045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:14.253 [DEBUG] [Thread-129045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] Compression: none
2025-09-28T16:03:14.254 [DEBUG] [Thread-129045] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:14.271 [DEBUG] [Thread-129045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:14.272 [DEBUG] [Thread-129045] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:14.273 [DEBUG] [Thread-129045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:03:14.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:03:14.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:14.275 [DEBUG] [Thread-129045] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:14.275 [DEBUG] [Thread-129045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:14.275 [DEBUG] [Thread-129045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:14.275 [DEBUG] [Thread-129045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:03:14.275 [DEBUG] [Thread-129045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:14.293 [INFO] [Thread-129045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:14.294 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:14.911 [DEBUG] [Thread-129045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:14.912 [DEBUG] [Thread-129045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:14.912 [DEBUG] [Thread-129045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:03:14.952 [DEBUG] [Thread-129045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:14.952 [DEBUG] [Thread-129045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:14.956 [DEBUG] [Thread-129045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:14.968 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:14.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:03:14.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:03:14.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:03:14.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:14.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:03:14.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:14.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.585151 -999.00  +17.90  14.78     38   +3.70 1 1 1 1 1   887    0 14.21 -13.58 ----- 14.8 14.8 208.4 22.6 23.3 -28.5 22.4 -29.0 24.4 -26.6 25.3 -29.4
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.585151
2025-09-28T16:03:14.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:03:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:03:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:03:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:03:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:03:14.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:02:28', tmtdew=15.63, humidity=34.89, cloud=0.0, wind=21.58, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:02:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:03:14.981 [DEBUG] [Thread-129045] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:15.059 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:03:15.068 [DEBUG] [Thread-129048] [transport.py] [_log()] starting thread (client mode): 0x2e3dc820
2025-09-28T16:03:15.068 [DEBUG] [Thread-129048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:15.082 [DEBUG] [Thread-129048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:03:15.083 [INFO] [Thread-129048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:03:15.090 [DEBUG] [Thread-129048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:15.090 [DEBUG] [Thread-129048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:03:15.090 [DEBUG] [Thread-129048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] Compression: none
2025-09-28T16:03:15.091 [DEBUG] [Thread-129048] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:15.152 [DEBUG] [Thread-129048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:15.153 [DEBUG] [Thread-129048] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:15.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:03:15.154 [DEBUG] [Thread-129048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:03:15.154 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:15.210 [DEBUG] [Thread-129048] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:15.210 [DEBUG] [Thread-129048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:15.210 [DEBUG] [Thread-129048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:15.210 [DEBUG] [Thread-129048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:03:15.210 [DEBUG] [Thread-129048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:15.229 [INFO] [Thread-129048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:15.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-28T16:03:15.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:15.305 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:15.687 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:16.073 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:16.159 [DEBUG] [Thread-129048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:16.159 [DEBUG] [Thread-129048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:16.206 [DEBUG] [Thread-129048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:16.207 [DEBUG] [Thread-129048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:16.214 [DEBUG] [Thread-129048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:16.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:16.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-28T16:03:16.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-28T16:03:16.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:16.237 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:16.237 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:16.245 [DEBUG] [Thread-129048] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:16.473 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:16.843 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:16.914 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:16.915 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:17.238 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:17.642 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:18.014 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:18.403 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:18.776 [DEBUG] [Thread-128901 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:19.661 [DEBUG] [Thread-129050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:25.500 [DEBUG] [Thread-129051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:26.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:03:26.248 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:03:26.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-28T16:03:26.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 2, 28), 15.63, 34.89, 0.0, 21.58, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:03:26.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:02:28
2025-09-28T16:03:26.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:03:27.065 [DEBUG] [Thread-129052] [transport.py] [_log()] starting thread (client mode): 0x2b96cf10
2025-09-28T16:03:27.065 [DEBUG] [Thread-129052] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:27.085 [DEBUG] [Thread-129052] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:03:27.085 [INFO] [Thread-129052] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:03:27.088 [DEBUG] [Thread-129052] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:27.088 [DEBUG] [Thread-129052] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:27.089 [DEBUG] [Thread-129052] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:27.090 [DEBUG] [Thread-129052] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:27.090 [DEBUG] [Thread-129052] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:27.090 [DEBUG] [Thread-129052] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:27.090 [DEBUG] [Thread-129052] [transport.py] [_log()] Compression: none
2025-09-28T16:03:27.090 [DEBUG] [Thread-129052] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:27.106 [DEBUG] [Thread-129052] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:27.107 [DEBUG] [Thread-129052] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:27.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:03:27.108 [DEBUG] [Thread-129052] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:03:27.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:27.109 [DEBUG] [Thread-129052] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:27.110 [DEBUG] [Thread-129052] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:27.110 [DEBUG] [Thread-129052] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:27.110 [DEBUG] [Thread-129052] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:03:27.110 [DEBUG] [Thread-129052] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:27.130 [INFO] [Thread-129052] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:27.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:27.910 [DEBUG] [Thread-129052] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:27.911 [DEBUG] [Thread-129052] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:27.911 [DEBUG] [Thread-129052] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:03:27.952 [DEBUG] [Thread-129052] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:27.952 [DEBUG] [Thread-129052] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:27.956 [DEBUG] [Thread-129052] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:27.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:27.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:03:27.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:03:27.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:03:27.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:27.978 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:03:27.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.585151 -999.00  +17.90  14.78     38   +3.70 1 1 1 1 1   887    0 14.21 -13.58 ----- 14.8 14.8 208.4 22.6 23.3 -28.5 22.4 -29.0 24.4 -26.6 25.3 -29.4
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:03:27.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.585151
2025-09-28T16:03:27.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:03:27.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:03:27.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:03:27.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:03:27.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:03:27.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:02:28', tmtdew=15.63, humidity=34.89, cloud=0.0, wind=21.58, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:02:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:03:27.981 [DEBUG] [Thread-129052] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:28.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-28T16:03:28.078 [DEBUG] [Thread-129055] [transport.py] [_log()] starting thread (client mode): 0x2b91c8b0
2025-09-28T16:03:28.078 [DEBUG] [Thread-129055] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:28.096 [DEBUG] [Thread-129055] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:03:28.096 [INFO] [Thread-129055] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:03:28.103 [DEBUG] [Thread-129055] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:28.104 [DEBUG] [Thread-129055] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:28.105 [DEBUG] [Thread-129055] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:28.105 [DEBUG] [Thread-129055] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:28.105 [DEBUG] [Thread-129055] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:28.105 [DEBUG] [Thread-129055] [transport.py] [_log()] Compression: none
2025-09-28T16:03:28.105 [DEBUG] [Thread-129055] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:28.166 [DEBUG] [Thread-129055] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:28.167 [DEBUG] [Thread-129055] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:28.167 [DEBUG] [Thread-129055] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:03:28.167 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:03:28.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:28.226 [DEBUG] [Thread-129055] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:28.227 [DEBUG] [Thread-129055] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:28.227 [DEBUG] [Thread-129055] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:28.227 [DEBUG] [Thread-129055] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:03:28.227 [DEBUG] [Thread-129055] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:28.245 [INFO] [Thread-129055] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:28.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-28T16:03:28.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:29.180 [DEBUG] [Thread-129055] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:29.180 [DEBUG] [Thread-129055] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:29.228 [DEBUG] [Thread-129055] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:29.228 [DEBUG] [Thread-129055] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:29.236 [DEBUG] [Thread-129055] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:29.244 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:29.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-28T16:03:29.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-28T16:03:29.264 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:29.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:29.264 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:29.271 [DEBUG] [Thread-129055] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:39.273 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:03:39.274 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:03:39.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-28T16:03:39.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 3, 32), 15.54, 35.05, 0.0, 20.91, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:03:39.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:03:32
2025-09-28T16:03:39.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:03:40.124 [DEBUG] [Thread-129057] [transport.py] [_log()] starting thread (client mode): 0x2e3f8e20
2025-09-28T16:03:40.124 [DEBUG] [Thread-129057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:40.145 [DEBUG] [Thread-129057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:03:40.145 [INFO] [Thread-129057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:03:40.147 [DEBUG] [Thread-129057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:40.147 [DEBUG] [Thread-129057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:40.148 [DEBUG] [Thread-129057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:40.149 [DEBUG] [Thread-129057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:40.149 [DEBUG] [Thread-129057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:40.149 [DEBUG] [Thread-129057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:40.149 [DEBUG] [Thread-129057] [transport.py] [_log()] Compression: none
2025-09-28T16:03:40.149 [DEBUG] [Thread-129057] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:40.163 [DEBUG] [Thread-129057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:40.163 [DEBUG] [Thread-129057] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:40.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:03:40.164 [DEBUG] [Thread-129057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:03:40.165 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:40.166 [DEBUG] [Thread-129057] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:40.166 [DEBUG] [Thread-129057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:40.167 [DEBUG] [Thread-129057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:40.167 [DEBUG] [Thread-129057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:03:40.167 [DEBUG] [Thread-129057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:40.184 [INFO] [Thread-129057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:40.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:40.545 [DEBUG] [Thread-129059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:03:40.774 [DEBUG] [Thread-129057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:40.774 [DEBUG] [Thread-129057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:40.775 [DEBUG] [Thread-129057] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:03:40.815 [DEBUG] [Thread-129057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:40.815 [DEBUG] [Thread-129057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:40.818 [DEBUG] [Thread-129057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:40.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:40.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:03:40.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:03:40.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:03:40.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:40.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:03:40.831 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:40.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.585846 -999.00  +18.10  10.25     38   +3.70 1 1 1 1 1   887    0 14.10 -14.78 ----- 10.2 10.2 188.0 18.2 23.2 -27.9 22.5 -28.0 24.3 -27.2 25.3 -28.2
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.585846
2025-09-28T16:03:40.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:03:40.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:03:40.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:03:40.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:03:40.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:03:40.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:03:32', tmtdew=15.54, humidity=35.05, cloud=0.0, wind=20.91, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:03:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:03:40.833 [DEBUG] [Thread-129057] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:40.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-28T16:03:40.930 [DEBUG] [Thread-129061] [transport.py] [_log()] starting thread (client mode): 0x2b929000
2025-09-28T16:03:40.931 [DEBUG] [Thread-129061] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:40.947 [DEBUG] [Thread-129061] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:03:40.948 [INFO] [Thread-129061] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:03:40.955 [DEBUG] [Thread-129061] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:40.955 [DEBUG] [Thread-129061] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:40.956 [DEBUG] [Thread-129061] [transport.py] [_log()] Compression: none
2025-09-28T16:03:40.957 [DEBUG] [Thread-129061] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:41.014 [DEBUG] [Thread-129061] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:41.014 [DEBUG] [Thread-129061] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:41.015 [DEBUG] [Thread-129061] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:03:41.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:03:41.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:41.070 [DEBUG] [Thread-129061] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:41.070 [DEBUG] [Thread-129061] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:41.070 [DEBUG] [Thread-129061] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:41.071 [DEBUG] [Thread-129061] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:03:41.071 [DEBUG] [Thread-129061] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:41.089 [INFO] [Thread-129061] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:41.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-28T16:03:41.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:42.069 [DEBUG] [Thread-129061] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:42.070 [DEBUG] [Thread-129061] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:42.117 [DEBUG] [Thread-129061] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:42.118 [DEBUG] [Thread-129061] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:42.126 [DEBUG] [Thread-129061] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:42.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:42.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-28T16:03:42.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-28T16:03:42.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:42.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:42.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:42.160 [DEBUG] [Thread-129061] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:52.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:03:52.162 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:03:52.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-28T16:03:52.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 3, 32), 15.54, 35.05, 0.0, 20.91, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:03:52.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:03:32
2025-09-28T16:03:52.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:03:52.986 [DEBUG] [Thread-129063] [transport.py] [_log()] starting thread (client mode): 0x2b9ba800
2025-09-28T16:03:52.986 [DEBUG] [Thread-129063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:53.007 [DEBUG] [Thread-129063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:03:53.007 [INFO] [Thread-129063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:53.010 [DEBUG] [Thread-129063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:53.011 [DEBUG] [Thread-129063] [transport.py] [_log()] Compression: none
2025-09-28T16:03:53.011 [DEBUG] [Thread-129063] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:53.027 [DEBUG] [Thread-129063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:53.027 [DEBUG] [Thread-129063] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:53.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:03:53.028 [DEBUG] [Thread-129063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:03:53.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:53.030 [DEBUG] [Thread-129063] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:53.030 [DEBUG] [Thread-129063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:53.030 [DEBUG] [Thread-129063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:53.031 [DEBUG] [Thread-129063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:03:53.031 [DEBUG] [Thread-129063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:53.055 [INFO] [Thread-129063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:53.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:53.832 [DEBUG] [Thread-129063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:53.832 [DEBUG] [Thread-129063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:53.832 [DEBUG] [Thread-129063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:03:53.873 [DEBUG] [Thread-129063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:53.873 [DEBUG] [Thread-129063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:53.875 [DEBUG] [Thread-129063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:53.887 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:53.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:03:53.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:03:53.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:03:53.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:53.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:03:53.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.585846 -999.00  +18.10  10.25     38   +3.70 1 1 1 1 1   887    0 14.10 -14.78 ----- 10.2 10.2 188.0 18.2 23.2 -27.9 22.5 -28.0 24.3 -27.2 25.3 -28.2
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.585846
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:03:53.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:03:32', tmtdew=15.54, humidity=35.05, cloud=0.0, wind=20.91, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:03:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:03:53.894 [DEBUG] [Thread-129063] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:53.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-28T16:03:53.977 [DEBUG] [Thread-129066] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-28T16:03:53.978 [DEBUG] [Thread-129066] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:03:53.993 [DEBUG] [Thread-129066] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:03:53.993 [INFO] [Thread-129066] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] client lang: <none>
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] server lang: <none>
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] kex follows: False
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:03:54.000 [DEBUG] [Thread-129066] [transport.py] [_log()] Compression: none
2025-09-28T16:03:54.001 [DEBUG] [Thread-129066] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:03:54.057 [DEBUG] [Thread-129066] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:03:54.057 [DEBUG] [Thread-129066] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:03:54.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:03:54.057 [DEBUG] [Thread-129066] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:03:54.057 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:03:54.114 [DEBUG] [Thread-129066] [transport.py] [_log()] userauth is OK
2025-09-28T16:03:54.114 [DEBUG] [Thread-129066] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:03:54.114 [DEBUG] [Thread-129066] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:03:54.114 [DEBUG] [Thread-129066] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:03:54.114 [DEBUG] [Thread-129066] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:03:54.131 [INFO] [Thread-129066] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:03:54.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-28T16:03:54.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:03:55.068 [DEBUG] [Thread-129066] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:03:55.068 [DEBUG] [Thread-129066] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:03:55.116 [DEBUG] [Thread-129066] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:03:55.116 [DEBUG] [Thread-129066] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:03:55.124 [DEBUG] [Thread-129066] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:03:55.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:03:55.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-28T16:03:55.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-28T16:03:55.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:03:55.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:03:55.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:03:55.155 [DEBUG] [Thread-129066] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:03:55.570 [DEBUG] [Thread-129068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:05.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:04:05.157 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:04:05.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:04:05.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 3, 32), 15.54, 35.05, 0.0, 20.91, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:04:05.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:03:32
2025-09-28T16:04:05.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:04:06.031 [DEBUG] [Thread-129069] [transport.py] [_log()] starting thread (client mode): 0x2e3df550
2025-09-28T16:04:06.031 [DEBUG] [Thread-129069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:04:06.051 [DEBUG] [Thread-129069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:04:06.051 [INFO] [Thread-129069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] client lang: <none>
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] server lang: <none>
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] kex follows: False
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] Compression: none
2025-09-28T16:04:06.054 [DEBUG] [Thread-129069] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:04:06.062 [DEBUG] [Thread-129069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:04:06.062 [DEBUG] [Thread-129069] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:04:06.062 [DEBUG] [Thread-129069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:04:06.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:04:06.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:04:06.104 [DEBUG] [Thread-129069] [transport.py] [_log()] userauth is OK
2025-09-28T16:04:06.104 [DEBUG] [Thread-129069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:04:06.104 [DEBUG] [Thread-129069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:04:06.104 [DEBUG] [Thread-129069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:04:06.104 [DEBUG] [Thread-129069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:04:06.131 [INFO] [Thread-129069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:04:06.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:04:06.878 [DEBUG] [Thread-129069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:04:06.879 [DEBUG] [Thread-129069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:04:06.879 [DEBUG] [Thread-129069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:04:06.919 [DEBUG] [Thread-129069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:04:06.919 [DEBUG] [Thread-129069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:04:06.922 [DEBUG] [Thread-129069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:04:06.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:04:06.936 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:04:06.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:04:06.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:04:06.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:04:06.946 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:04:06.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.585846 -999.00  +18.10  10.25     38   +3.70 1 1 1 1 1   887    0 14.10 -14.78 ----- 10.2 10.2 188.0 18.2 23.2 -27.9 22.5 -28.0 24.3 -27.2 25.3 -28.2
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:04:06.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.585846
2025-09-28T16:04:06.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:04:06.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:04:06.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:04:06.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:04:06.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:04:06.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:03:32', tmtdew=15.54, humidity=35.05, cloud=0.0, wind=20.91, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:03:37.094', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:04:06.949 [DEBUG] [Thread-129069] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:04:07.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-28T16:04:07.043 [DEBUG] [Thread-129072] [transport.py] [_log()] starting thread (client mode): 0x2b94e830
2025-09-28T16:04:07.043 [DEBUG] [Thread-129072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:04:07.059 [DEBUG] [Thread-129072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:04:07.059 [INFO] [Thread-129072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] client lang: <none>
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] server lang: <none>
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] kex follows: False
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:04:07.066 [DEBUG] [Thread-129072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:04:07.067 [DEBUG] [Thread-129072] [transport.py] [_log()] Compression: none
2025-09-28T16:04:07.067 [DEBUG] [Thread-129072] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:04:07.129 [DEBUG] [Thread-129072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:04:07.130 [DEBUG] [Thread-129072] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:04:07.130 [DEBUG] [Thread-129072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:04:07.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:04:07.131 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:04:07.186 [DEBUG] [Thread-129072] [transport.py] [_log()] userauth is OK
2025-09-28T16:04:07.186 [DEBUG] [Thread-129072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:04:07.187 [DEBUG] [Thread-129072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:04:07.187 [DEBUG] [Thread-129072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:04:07.187 [DEBUG] [Thread-129072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:04:07.207 [INFO] [Thread-129072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:04:07.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-28T16:04:07.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:04:08.192 [DEBUG] [Thread-129072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:04:08.192 [DEBUG] [Thread-129072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:04:08.244 [DEBUG] [Thread-129072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:04:08.244 [DEBUG] [Thread-129072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:04:08.257 [DEBUG] [Thread-129072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:04:08.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:04:08.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-28T16:04:08.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-28T16:04:08.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:04:08.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:04:08.286 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:04:08.293 [DEBUG] [Thread-129072] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:04:10.606 [DEBUG] [Thread-129074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:17.055 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:17.057 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:18.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:04:18.292 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:04:18.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-28T16:04:18.872 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 4, 4), 15.53, 35.12, 0.0, 20.34, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:04:18.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:04:04
2025-09-28T16:04:18.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:04:19.130 [DEBUG] [Thread-129075] [transport.py] [_log()] starting thread (client mode): 0x2b91c640
2025-09-28T16:04:19.131 [DEBUG] [Thread-129075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:04:19.151 [DEBUG] [Thread-129075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:04:19.151 [INFO] [Thread-129075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:19.152 [DEBUG] [Thread-129075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] client lang: <none>
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] server lang: <none>
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] kex follows: False
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] Compression: none
2025-09-28T16:04:19.153 [DEBUG] [Thread-129075] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:04:19.161 [DEBUG] [Thread-129075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:04:19.161 [DEBUG] [Thread-129075] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:04:19.161 [DEBUG] [Thread-129075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:04:19.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:04:19.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:04:19.163 [DEBUG] [Thread-129075] [transport.py] [_log()] userauth is OK
2025-09-28T16:04:19.163 [DEBUG] [Thread-129075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:04:19.163 [DEBUG] [Thread-129075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:04:19.163 [DEBUG] [Thread-129075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:04:19.164 [DEBUG] [Thread-129075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:04:19.181 [INFO] [Thread-129075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:04:19.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:04:19.707 [DEBUG] [Thread-129077 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:19.824 [DEBUG] [Thread-129075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:04:19.825 [DEBUG] [Thread-129075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:04:19.825 [DEBUG] [Thread-129075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:04:19.865 [DEBUG] [Thread-129075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:04:19.865 [DEBUG] [Thread-129075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:04:19.868 [DEBUG] [Thread-129075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:04:19.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:04:19.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:04:19.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:04:19.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:04:19.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:04:19.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:04:19.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:04:19.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:04:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:04:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.586193 -999.00  +18.00  21.38     38   +3.50 1 1 1 1 1   887    0 13.84 -14.04 ----- 21.4 21.4 197.0 25.6 23.2 -29.0 22.3 -29.5 24.4 -27.1 25.2 -29.4
2025-09-28T16:04:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:04:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:04:19.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.586193
2025-09-28T16:04:19.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:04:19.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:04:19.892 [DEBUG] [Thread-129075] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:04:19.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:04:19.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:04:19.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:04:19.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:04:04', tmtdew=15.53, humidity=35.12, cloud=0.0, wind=20.34, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:04:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:04:19.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-28T16:04:19.985 [DEBUG] [Thread-129079] [transport.py] [_log()] starting thread (client mode): 0x2b9b83a0
2025-09-28T16:04:19.985 [DEBUG] [Thread-129079] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:04:20.000 [DEBUG] [Thread-129079] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:04:20.000 [INFO] [Thread-129079] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:04:20.007 [DEBUG] [Thread-129079] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] client lang: <none>
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] server lang: <none>
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] kex follows: False
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] Compression: none
2025-09-28T16:04:20.008 [DEBUG] [Thread-129079] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:04:20.066 [DEBUG] [Thread-129079] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:04:20.067 [DEBUG] [Thread-129079] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:04:20.067 [DEBUG] [Thread-129079] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:04:20.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:04:20.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:04:20.122 [DEBUG] [Thread-129079] [transport.py] [_log()] userauth is OK
2025-09-28T16:04:20.123 [DEBUG] [Thread-129079] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:04:20.123 [DEBUG] [Thread-129079] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:04:20.123 [DEBUG] [Thread-129079] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:04:20.123 [DEBUG] [Thread-129079] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:04:20.142 [INFO] [Thread-129079] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:04:20.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-28T16:04:20.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:04:21.088 [DEBUG] [Thread-129079] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:04:21.088 [DEBUG] [Thread-129079] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:04:21.139 [DEBUG] [Thread-129079] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:04:21.140 [DEBUG] [Thread-129079] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:04:21.148 [DEBUG] [Thread-129079] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:04:21.157 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:04: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')
2025-09-28T16:04:21.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-28T16:04:21.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:04:21.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:04:21.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:04:21.183 [DEBUG] [Thread-129079] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:04:25.637 [DEBUG] [Thread-129081 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:31.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:04:31.185 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:04:31.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:04:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 4, 4), 15.53, 35.12, 0.0, 20.34, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:04:31.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:04:04
2025-09-28T16:04:31.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:04:32.029 [DEBUG] [Thread-129082] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ca0
2025-09-28T16:04:32.029 [DEBUG] [Thread-129082] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:04:32.049 [DEBUG] [Thread-129082] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:04:32.049 [INFO] [Thread-129082] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:04:32.052 [DEBUG] [Thread-129082] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] client lang: <none>
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] server lang: <none>
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] kex follows: False
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] Compression: none
2025-09-28T16:04:32.053 [DEBUG] [Thread-129082] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:04:32.068 [DEBUG] [Thread-129082] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:04:32.068 [DEBUG] [Thread-129082] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:04:32.068 [DEBUG] [Thread-129082] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:04:32.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:04:32.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:04:32.069 [DEBUG] [Thread-129082] [transport.py] [_log()] userauth is OK
2025-09-28T16:04:32.069 [DEBUG] [Thread-129082] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:04:32.069 [DEBUG] [Thread-129082] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:04:32.069 [DEBUG] [Thread-129082] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:04:32.069 [DEBUG] [Thread-129082] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:04:32.078 [INFO] [Thread-129082] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:04:32.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:04:32.845 [DEBUG] [Thread-129082] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:04:32.845 [DEBUG] [Thread-129082] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:04:32.845 [DEBUG] [Thread-129082] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:04:32.886 [DEBUG] [Thread-129082] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:04:32.886 [DEBUG] [Thread-129082] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:04:32.888 [DEBUG] [Thread-129082] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:04:32.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:04:32.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:04:32.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:04:32.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:04:32.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:04:32.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:04:32.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.586193 -999.00  +18.00  21.38     38   +3.50 1 1 1 1 1   887    0 13.84 -14.04 ----- 21.4 21.4 197.0 25.6 23.2 -29.0 22.3 -29.5 24.4 -27.1 25.2 -29.4
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.586193
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:04:32.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:04:04', tmtdew=15.53, humidity=35.12, cloud=0.0, wind=20.34, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:04:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:04:32.908 [DEBUG] [Thread-129082] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:04:32.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-28T16:04:40.691 [DEBUG] [Thread-129085 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:04:55.722 [DEBUG] [Thread-129086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:10.749 [DEBUG] [Thread-129087 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:17.200 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:17.202 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:19.755 [DEBUG] [Thread-129088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:25.774 [DEBUG] [Thread-129089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:40.800 [DEBUG] [Thread-129090 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:05:55.828 [DEBUG] [Thread-129091 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:10.861 [DEBUG] [Thread-129092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:17.341 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:17.343 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:19.787 [DEBUG] [Thread-129093 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:25.891 [DEBUG] [Thread-129094 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:40.922 [DEBUG] [Thread-129095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:44.922 [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-28T16:06:54.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:06:54.929 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:06:54.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:06:55.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 6, 44), 15.46, 35.2, 0.0, 18.65, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:06:55.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:06:44
2025-09-28T16:06:55.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:06:55.796 [DEBUG] [Thread-129096] [transport.py] [_log()] starting thread (client mode): 0x2b96fee0
2025-09-28T16:06:55.797 [DEBUG] [Thread-129096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:06:55.815 [DEBUG] [Thread-129096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:06:55.815 [INFO] [Thread-129096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:06:55.818 [DEBUG] [Thread-129096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:06:55.818 [DEBUG] [Thread-129096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:06:55.818 [DEBUG] [Thread-129096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:06:55.818 [DEBUG] [Thread-129096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] client lang: <none>
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] server lang: <none>
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] kex follows: False
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] Compression: none
2025-09-28T16:06:55.819 [DEBUG] [Thread-129096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:06:55.829 [DEBUG] [Thread-129096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:06:55.830 [DEBUG] [Thread-129096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:06:55.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:06:55.831 [DEBUG] [Thread-129096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:06:55.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:06:55.833 [DEBUG] [Thread-129096] [transport.py] [_log()] userauth is OK
2025-09-28T16:06:55.834 [DEBUG] [Thread-129096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:06:55.834 [DEBUG] [Thread-129096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:06:55.834 [DEBUG] [Thread-129096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:06:55.834 [DEBUG] [Thread-129096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:06:55.859 [INFO] [Thread-129096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:06:55.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:06:55.958 [DEBUG] [Thread-129098 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:06:56.513 [DEBUG] [Thread-129096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:06:56.513 [DEBUG] [Thread-129096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:06:56.513 [DEBUG] [Thread-129096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:06:56.553 [DEBUG] [Thread-129096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:06:56.554 [DEBUG] [Thread-129096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:06:56.557 [DEBUG] [Thread-129096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:06:56.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:06:56.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:06:56.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:06:56.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:06:56.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:06:56.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:06:56.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:06:56.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:06:56.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:06:56.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.587582 -999.00  +18.10   4.00     38   +3.80 1 1 1 1 1   887    0 14.14 -13.86 ----- 4.0 4.0 72.1 16.9 23.2 -27.3 22.4 -26.5 24.2 -27.0 25.2 -27.7
2025-09-28T16:06:56.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:06:56.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:06:56.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.587582
2025-09-28T16:06:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:06:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:06:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:06:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:06:56.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:06:56.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:06:44', tmtdew=15.46, humidity=35.2, cloud=0.0, wind=18.65, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:06:07.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:06:56.583 [DEBUG] [Thread-129096] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:06:56.668 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:06:56.681 [DEBUG] [Thread-129100] [transport.py] [_log()] starting thread (client mode): 0x2e3fa500
2025-09-28T16:06:56.681 [DEBUG] [Thread-129100] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:06:56.696 [DEBUG] [Thread-129100] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:06:56.696 [INFO] [Thread-129100] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] client lang: <none>
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] server lang: <none>
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] kex follows: False
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:06:56.704 [DEBUG] [Thread-129100] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:06:56.705 [DEBUG] [Thread-129100] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:06:56.705 [DEBUG] [Thread-129100] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:06:56.705 [DEBUG] [Thread-129100] [transport.py] [_log()] Compression: none
2025-09-28T16:06:56.705 [DEBUG] [Thread-129100] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:06:56.762 [DEBUG] [Thread-129100] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:06:56.763 [DEBUG] [Thread-129100] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:06:56.763 [DEBUG] [Thread-129100] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:06:56.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:06:56.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:06:56.818 [DEBUG] [Thread-129100] [transport.py] [_log()] userauth is OK
2025-09-28T16:06:56.819 [DEBUG] [Thread-129100] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:06:56.819 [DEBUG] [Thread-129100] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:06:56.819 [DEBUG] [Thread-129100] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:06:56.819 [DEBUG] [Thread-129100] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:06:56.838 [INFO] [Thread-129100] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:06:56.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:06:56.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:06:57.867 [DEBUG] [Thread-129100] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:06:57.868 [DEBUG] [Thread-129100] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:06:57.916 [DEBUG] [Thread-129100] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:06:57.916 [DEBUG] [Thread-129100] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:06:57.925 [DEBUG] [Thread-129100] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:06:57.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:06: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-28T16:06:57.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-28T16:06:57.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:06:57.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:06:57.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:06:57.959 [DEBUG] [Thread-129100] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:07.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:07:07.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:07: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-28T16:07:08.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 6, 44), 15.46, 35.2, 0.0, 18.65, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:07:08.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:06:44
2025-09-28T16:07:08.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:07:08.816 [DEBUG] [Thread-129102] [transport.py] [_log()] starting thread (client mode): 0x2e38cfa0
2025-09-28T16:07:08.816 [DEBUG] [Thread-129102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:08.832 [DEBUG] [Thread-129102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:07:08.832 [INFO] [Thread-129102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] Compression: none
2025-09-28T16:07:08.835 [DEBUG] [Thread-129102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:08.851 [DEBUG] [Thread-129102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:08.851 [DEBUG] [Thread-129102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:08.852 [DEBUG] [Thread-129102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:07:08.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:07:08.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:08.853 [DEBUG] [Thread-129102] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:08.853 [DEBUG] [Thread-129102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:08.854 [DEBUG] [Thread-129102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:08.854 [DEBUG] [Thread-129102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:07:08.854 [DEBUG] [Thread-129102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:08.868 [INFO] [Thread-129102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:08.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:09.527 [DEBUG] [Thread-129102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:09.528 [DEBUG] [Thread-129102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:09.528 [DEBUG] [Thread-129102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:07:09.568 [DEBUG] [Thread-129102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:09.569 [DEBUG] [Thread-129102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:09.572 [DEBUG] [Thread-129102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:09.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:09.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:07:09.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:07:09.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:07:09.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:09.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:07:09.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.587929 -999.00  +18.30   8.12     38   +3.70 1 1 1 1 1   887    0 13.73 -16.08 ----- 8.1 8.1 205.2 17.9 23.2 -27.5 22.5 -28.3 24.2 -26.0 25.3 -28.7
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:07:09.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.587929
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:07:09.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:06:44', tmtdew=15.46, humidity=35.2, cloud=0.0, wind=18.65, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:06:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:07:09.592 [DEBUG] [Thread-129102] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:09.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-28T16:07:09.674 [DEBUG] [Thread-129105] [transport.py] [_log()] starting thread (client mode): 0x2b9bb7c0
2025-09-28T16:07:09.674 [DEBUG] [Thread-129105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:09.690 [DEBUG] [Thread-129105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:07:09.690 [INFO] [Thread-129105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] Compression: none
2025-09-28T16:07:09.697 [DEBUG] [Thread-129105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:09.754 [DEBUG] [Thread-129105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:09.754 [DEBUG] [Thread-129105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:09.755 [DEBUG] [Thread-129105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:07:09.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:07:09.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:09.810 [DEBUG] [Thread-129105] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:09.810 [DEBUG] [Thread-129105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:09.811 [DEBUG] [Thread-129105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:09.811 [DEBUG] [Thread-129105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:07:09.811 [DEBUG] [Thread-129105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:09.830 [INFO] [Thread-129105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:09.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-28T16:07:09.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:10.797 [DEBUG] [Thread-129105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:10.797 [DEBUG] [Thread-129105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:10.845 [DEBUG] [Thread-129105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:10.845 [DEBUG] [Thread-129105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:10.854 [DEBUG] [Thread-129105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:10.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:10.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-28T16:07:10.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-28T16:07:10.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:10.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:10.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:10.889 [DEBUG] [Thread-129105] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:10.989 [DEBUG] [Thread-129107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:17.483 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:17.483 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:19.842 [DEBUG] [Thread-129108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:20.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:07:20.893 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:07:20.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-28T16:07:21.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 7, 15), 15.47, 35.17, 0.0, 18.35, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:07:21.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:07:15
2025-09-28T16:07:21.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:07:21.759 [DEBUG] [Thread-129109] [transport.py] [_log()] starting thread (client mode): 0x2b91fa30
2025-09-28T16:07:21.759 [DEBUG] [Thread-129109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:21.779 [DEBUG] [Thread-129109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:07:21.779 [INFO] [Thread-129109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:21.782 [DEBUG] [Thread-129109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] Compression: none
2025-09-28T16:07:21.783 [DEBUG] [Thread-129109] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:21.802 [DEBUG] [Thread-129109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:21.802 [DEBUG] [Thread-129109] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:21.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:07:21.803 [DEBUG] [Thread-129109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:07:21.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:21.844 [DEBUG] [Thread-129109] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:21.845 [DEBUG] [Thread-129109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:21.845 [DEBUG] [Thread-129109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:21.845 [DEBUG] [Thread-129109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:07:21.845 [DEBUG] [Thread-129109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:21.877 [INFO] [Thread-129109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:21.877 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:22.506 [DEBUG] [Thread-129109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:22.507 [DEBUG] [Thread-129109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:22.507 [DEBUG] [Thread-129109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:07:22.547 [DEBUG] [Thread-129109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:22.548 [DEBUG] [Thread-129109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:22.551 [DEBUG] [Thread-129109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:22.563 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:22.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:07:22.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:07:22.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:07:22.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:22.574 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:07:22.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:22.575 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:22.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:07:22.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.587929 -999.00  +18.30   8.12     38   +3.70 1 1 1 1 1   887    0 13.73 -16.08 ----- 8.1 8.1 205.2 17.9 23.2 -27.5 22.5 -28.3 24.2 -26.0 25.3 -28.7
2025-09-28T16:07:22.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:07:22.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:07:22.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.587929
2025-09-28T16:07:22.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:07:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:07:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:07:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:07:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:07:22.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:07:15', tmtdew=15.47, humidity=35.17, cloud=0.0, wind=18.35, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:06:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:07:22.577 [DEBUG] [Thread-129109] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:22.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-28T16:07:22.673 [DEBUG] [Thread-129112] [transport.py] [_log()] starting thread (client mode): 0x2b91e4a0
2025-09-28T16:07:22.673 [DEBUG] [Thread-129112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:22.688 [DEBUG] [Thread-129112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:07:22.688 [INFO] [Thread-129112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:22.696 [DEBUG] [Thread-129112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] Compression: none
2025-09-28T16:07:22.697 [DEBUG] [Thread-129112] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:22.763 [DEBUG] [Thread-129112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:22.763 [DEBUG] [Thread-129112] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:22.764 [DEBUG] [Thread-129112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:07:22.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:07:22.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:22.819 [DEBUG] [Thread-129112] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:22.819 [DEBUG] [Thread-129112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:22.819 [DEBUG] [Thread-129112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:22.819 [DEBUG] [Thread-129112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:07:22.819 [DEBUG] [Thread-129112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:22.838 [INFO] [Thread-129112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:22.838 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:07:22.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:23.781 [DEBUG] [Thread-129112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:23.781 [DEBUG] [Thread-129112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:23.829 [DEBUG] [Thread-129112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:23.829 [DEBUG] [Thread-129112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:23.838 [DEBUG] [Thread-129112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:23.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:23.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-28T16:07:23.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-28T16:07:23.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:23.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:23.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:23.871 [DEBUG] [Thread-129112] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:26.035 [DEBUG] [Thread-129114 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:33.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:07:33.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:07:33.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-28T16:07:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 7, 15), 15.47, 35.17, 0.0, 18.35, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:07:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:07:15
2025-09-28T16:07:34.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:07:34.741 [DEBUG] [Thread-129115] [transport.py] [_log()] starting thread (client mode): 0x2b96c040
2025-09-28T16:07:34.741 [DEBUG] [Thread-129115] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:34.757 [DEBUG] [Thread-129115] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:07:34.757 [INFO] [Thread-129115] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] Compression: none
2025-09-28T16:07:34.761 [DEBUG] [Thread-129115] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:34.777 [DEBUG] [Thread-129115] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:34.777 [DEBUG] [Thread-129115] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:34.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:07:34.778 [DEBUG] [Thread-129115] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:07:34.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:34.778 [DEBUG] [Thread-129115] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:34.779 [DEBUG] [Thread-129115] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:34.779 [DEBUG] [Thread-129115] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:34.779 [DEBUG] [Thread-129115] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:07:34.779 [DEBUG] [Thread-129115] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:34.806 [INFO] [Thread-129115] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:34.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:35.410 [DEBUG] [Thread-129115] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:35.410 [DEBUG] [Thread-129115] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:35.411 [DEBUG] [Thread-129115] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:07:35.451 [DEBUG] [Thread-129115] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:35.451 [DEBUG] [Thread-129115] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:35.454 [DEBUG] [Thread-129115] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:35.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:35.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:07:35.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:07:35.471 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:07:35.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:35.477 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:07:35.478 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.587929 -999.00  +18.30   8.12     38   +3.70 1 1 1 1 1   887    0 13.73 -16.08 ----- 8.1 8.1 205.2 17.9 23.2 -27.5 22.5 -28.3 24.2 -26.0 25.3 -28.7
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:07:35.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.587929
2025-09-28T16:07:35.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:07:35.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:07:35.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:07:35.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:07:35.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:07:35.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:07:15', tmtdew=15.47, humidity=35.17, cloud=0.0, wind=18.35, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:06:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:07:35.480 [DEBUG] [Thread-129115] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:35.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-28T16:07:35.577 [DEBUG] [Thread-129118] [transport.py] [_log()] starting thread (client mode): 0x2b96e7d0
2025-09-28T16:07:35.577 [DEBUG] [Thread-129118] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:35.594 [DEBUG] [Thread-129118] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:07:35.594 [INFO] [Thread-129118] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:07:35.601 [DEBUG] [Thread-129118] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:35.602 [DEBUG] [Thread-129118] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:35.603 [DEBUG] [Thread-129118] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:35.603 [DEBUG] [Thread-129118] [transport.py] [_log()] Compression: none
2025-09-28T16:07:35.603 [DEBUG] [Thread-129118] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:35.658 [DEBUG] [Thread-129118] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:35.658 [DEBUG] [Thread-129118] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:35.658 [DEBUG] [Thread-129118] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:07:35.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:07:35.659 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:35.714 [DEBUG] [Thread-129118] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:35.714 [DEBUG] [Thread-129118] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:35.714 [DEBUG] [Thread-129118] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:35.714 [DEBUG] [Thread-129118] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:07:35.714 [DEBUG] [Thread-129118] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:35.729 [INFO] [Thread-129118] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:35.729 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:07:35.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:36.749 [DEBUG] [Thread-129118] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:36.749 [DEBUG] [Thread-129118] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:36.797 [DEBUG] [Thread-129118] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:36.797 [DEBUG] [Thread-129118] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:36.806 [DEBUG] [Thread-129118] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:36.815 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:36.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-28T16:07:36.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-28T16:07:36.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:36.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:36.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:36.841 [DEBUG] [Thread-129118] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:41.089 [DEBUG] [Thread-129120 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:46.843 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:07:46.844 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:07:46.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-28T16:07:47.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 7, 15), 15.47, 35.17, 0.0, 18.35, 16.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:07:47.439 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:07:15
2025-09-28T16:07:47.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:07:47.697 [DEBUG] [Thread-129121] [transport.py] [_log()] starting thread (client mode): 0x2e3fa7a0
2025-09-28T16:07:47.697 [DEBUG] [Thread-129121] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:47.716 [DEBUG] [Thread-129121] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:07:47.716 [INFO] [Thread-129121] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:07:47.717 [DEBUG] [Thread-129121] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:47.717 [DEBUG] [Thread-129121] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:07:47.717 [DEBUG] [Thread-129121] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:47.717 [DEBUG] [Thread-129121] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:47.717 [DEBUG] [Thread-129121] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] Compression: none
2025-09-28T16:07:47.718 [DEBUG] [Thread-129121] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:47.726 [DEBUG] [Thread-129121] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:47.727 [DEBUG] [Thread-129121] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:47.727 [DEBUG] [Thread-129121] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:07:47.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:07:47.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:47.728 [DEBUG] [Thread-129121] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:47.728 [DEBUG] [Thread-129121] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:47.729 [DEBUG] [Thread-129121] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:47.729 [DEBUG] [Thread-129121] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:07:47.729 [DEBUG] [Thread-129121] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:47.750 [INFO] [Thread-129121] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:47.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:48.347 [DEBUG] [Thread-129121] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:48.347 [DEBUG] [Thread-129121] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:48.347 [DEBUG] [Thread-129121] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:07:48.388 [DEBUG] [Thread-129121] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:48.388 [DEBUG] [Thread-129121] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:48.390 [DEBUG] [Thread-129121] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:48.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:48.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:07:48.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:07:48.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:07:48.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:48.407 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:07:48.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.588276 -999.00  +18.00  15.31     38   +3.50 1 1 1 1 1   887    0 13.92 -18.58 ----- 15.3 15.3 199.3 27.9 23.2 -28.4 22.4 -26.8 24.2 -27.1 25.2 -28.4
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.588276
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:07:48.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:07:15', tmtdew=15.47, humidity=35.17, cloud=0.0, wind=18.35, temperature=16.96, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:07:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:07:48.408 [DEBUG] [Thread-129121] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:48.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-28T16:07:48.493 [DEBUG] [Thread-129124] [transport.py] [_log()] starting thread (client mode): 0x2e361ba0
2025-09-28T16:07:48.494 [DEBUG] [Thread-129124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:07:48.508 [DEBUG] [Thread-129124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:07:48.508 [INFO] [Thread-129124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] client lang: <none>
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] server lang: <none>
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] kex follows: False
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:07:48.516 [DEBUG] [Thread-129124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:07:48.517 [DEBUG] [Thread-129124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:07:48.517 [DEBUG] [Thread-129124] [transport.py] [_log()] Compression: none
2025-09-28T16:07:48.517 [DEBUG] [Thread-129124] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:07:48.577 [DEBUG] [Thread-129124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:07:48.577 [DEBUG] [Thread-129124] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:07:48.577 [DEBUG] [Thread-129124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:07:48.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:07:48.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:07:48.638 [DEBUG] [Thread-129124] [transport.py] [_log()] userauth is OK
2025-09-28T16:07:48.638 [DEBUG] [Thread-129124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:07:48.638 [DEBUG] [Thread-129124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:07:48.638 [DEBUG] [Thread-129124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:07:48.638 [DEBUG] [Thread-129124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:07:48.656 [INFO] [Thread-129124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:07:48.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-28T16:07:48.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:07:49.665 [DEBUG] [Thread-129124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:07:49.665 [DEBUG] [Thread-129124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:07:49.713 [DEBUG] [Thread-129124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:07:49.713 [DEBUG] [Thread-129124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:07:49.721 [DEBUG] [Thread-129124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:07:49.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:07:49.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-28T16:07:49.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-28T16:07:49.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:07:49.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:07:49.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:07:49.753 [DEBUG] [Thread-129124] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:07:56.118 [DEBUG] [Thread-129126 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:07:59.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:07:59.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:07:59.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-28T16:08:00.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 7, 47), 16.03, 33.82, 0.0, 22.89, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:08:00.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:07:47
2025-09-28T16:08:00.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:08:00.613 [DEBUG] [Thread-129127] [transport.py] [_log()] starting thread (client mode): 0x2e3def80
2025-09-28T16:08:00.613 [DEBUG] [Thread-129127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:08:00.628 [DEBUG] [Thread-129127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:08:00.628 [INFO] [Thread-129127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] client lang: <none>
2025-09-28T16:08:00.631 [DEBUG] [Thread-129127] [transport.py] [_log()] server lang: <none>
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] kex follows: False
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] Compression: none
2025-09-28T16:08:00.632 [DEBUG] [Thread-129127] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:08:00.646 [DEBUG] [Thread-129127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:08:00.647 [DEBUG] [Thread-129127] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:08:00.647 [DEBUG] [Thread-129127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:08:00.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:08:00.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:08:00.649 [DEBUG] [Thread-129127] [transport.py] [_log()] userauth is OK
2025-09-28T16:08:00.649 [DEBUG] [Thread-129127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:08:00.649 [DEBUG] [Thread-129127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:08:00.649 [DEBUG] [Thread-129127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:08:00.649 [DEBUG] [Thread-129127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:08:00.673 [INFO] [Thread-129127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:08:00.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:08:01.270 [DEBUG] [Thread-129127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:08:01.271 [DEBUG] [Thread-129127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:08:01.271 [DEBUG] [Thread-129127] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:08:01.311 [DEBUG] [Thread-129127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:08:01.311 [DEBUG] [Thread-129127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:08:01.314 [DEBUG] [Thread-129127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:08:01.325 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:08:01.326 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:08:01.328 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:08:01.329 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:08:01.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:08:01.337 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:08:01.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:08:01.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:08:01.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:08:01.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.588276 -999.00  +18.00  15.31     38   +3.50 1 1 1 1 1   887    0 13.92 -18.58 ----- 15.3 15.3 199.3 27.9 23.2 -28.4 22.4 -26.8 24.2 -27.1 25.2 -28.4
2025-09-28T16:08:01.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:08:01.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:08:01.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.588276
2025-09-28T16:08:01.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:08:01.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:08:01.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:08:01.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:08:01.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:08:01.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:07:47', tmtdew=16.03, humidity=33.82, cloud=0.0, wind=22.89, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:07:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:08:01.340 [DEBUG] [Thread-129127] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:08: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-28T16:08:01.436 [DEBUG] [Thread-129130] [transport.py] [_log()] starting thread (client mode): 0x2e3de980
2025-09-28T16:08:01.436 [DEBUG] [Thread-129130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:08:01.450 [DEBUG] [Thread-129130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:08:01.450 [INFO] [Thread-129130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:08:01.458 [DEBUG] [Thread-129130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:08:01.458 [DEBUG] [Thread-129130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:08:01.458 [DEBUG] [Thread-129130] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:08:01.458 [DEBUG] [Thread-129130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] client lang: <none>
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] server lang: <none>
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] kex follows: False
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] Compression: none
2025-09-28T16:08:01.459 [DEBUG] [Thread-129130] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:08:01.514 [DEBUG] [Thread-129130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:08:01.514 [DEBUG] [Thread-129130] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:08:01.515 [DEBUG] [Thread-129130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:08:01.515 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:08:01.516 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:08:01.570 [DEBUG] [Thread-129130] [transport.py] [_log()] userauth is OK
2025-09-28T16:08:01.570 [DEBUG] [Thread-129130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:08:01.571 [DEBUG] [Thread-129130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:08:01.571 [DEBUG] [Thread-129130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:08:01.571 [DEBUG] [Thread-129130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:08:01.590 [INFO] [Thread-129130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:08:01.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-28T16:08:01.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:08:02.590 [DEBUG] [Thread-129130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:08:02.591 [DEBUG] [Thread-129130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:08:02.638 [DEBUG] [Thread-129130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:08:02.638 [DEBUG] [Thread-129130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:08:02.647 [DEBUG] [Thread-129130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:08:02.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:08:02.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-28T16:08:02.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-28T16:08:02.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:08:02.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:08:02.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:08:02.681 [DEBUG] [Thread-129130] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:08:11.161 [DEBUG] [Thread-129132 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:12.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:08:12.685 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:08:12.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:08:13.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 7, 47), 16.03, 33.82, 0.0, 22.89, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:08:13.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:07:47
2025-09-28T16:08:13.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:08:13.535 [DEBUG] [Thread-129133] [transport.py] [_log()] starting thread (client mode): 0x2e34abf0
2025-09-28T16:08:13.536 [DEBUG] [Thread-129133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:08:13.555 [DEBUG] [Thread-129133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:08:13.555 [INFO] [Thread-129133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:08:13.558 [DEBUG] [Thread-129133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:08:13.558 [DEBUG] [Thread-129133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:08:13.558 [DEBUG] [Thread-129133] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] client lang: <none>
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] server lang: <none>
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] kex follows: False
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:08:13.559 [DEBUG] [Thread-129133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:08:13.560 [DEBUG] [Thread-129133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:08:13.560 [DEBUG] [Thread-129133] [transport.py] [_log()] Compression: none
2025-09-28T16:08:13.560 [DEBUG] [Thread-129133] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:08:13.576 [DEBUG] [Thread-129133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:08:13.576 [DEBUG] [Thread-129133] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:08:13.577 [DEBUG] [Thread-129133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:08:13.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:08:13.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:08:13.579 [DEBUG] [Thread-129133] [transport.py] [_log()] userauth is OK
2025-09-28T16:08:13.579 [DEBUG] [Thread-129133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:08:13.579 [DEBUG] [Thread-129133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:08:13.579 [DEBUG] [Thread-129133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:08:13.579 [DEBUG] [Thread-129133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:08:13.597 [INFO] [Thread-129133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:08:13.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:08:14.204 [DEBUG] [Thread-129133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:08:14.204 [DEBUG] [Thread-129133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:08:14.204 [DEBUG] [Thread-129133] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:08:14.245 [DEBUG] [Thread-129133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:08:14.245 [DEBUG] [Thread-129133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:08:14.247 [DEBUG] [Thread-129133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:08:14.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:08:14.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:08:14.260 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:08:14.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:08:14.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:08:14.266 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:08:14.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.588972 -999.00  +18.30  11.88     37   +3.70 1 1 1 1 1   887    0 13.95 -16.09 ----- 11.9 11.9 198.3 17.9 23.2 -27.4 22.5 -26.1 24.2 -26.4 25.4 -27.7
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:08:14.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.588972
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:08:14.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:07:47', tmtdew=16.03, humidity=33.82, cloud=0.0, wind=22.89, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:08:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:08:14.268 [DEBUG] [Thread-129133] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:08:14.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-28T16:08:14.350 [DEBUG] [Thread-129136] [transport.py] [_log()] starting thread (client mode): 0x2e3ded40
2025-09-28T16:08:14.350 [DEBUG] [Thread-129136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:08:14.364 [DEBUG] [Thread-129136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:08:14.364 [INFO] [Thread-129136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:08:14.372 [DEBUG] [Thread-129136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:08:14.372 [DEBUG] [Thread-129136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:08:14.372 [DEBUG] [Thread-129136] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] client lang: <none>
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] server lang: <none>
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] kex follows: False
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] Compression: none
2025-09-28T16:08:14.373 [DEBUG] [Thread-129136] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:08:14.430 [DEBUG] [Thread-129136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:08:14.430 [DEBUG] [Thread-129136] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:08:14.431 [DEBUG] [Thread-129136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:08:14.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:08:14.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:08:14.486 [DEBUG] [Thread-129136] [transport.py] [_log()] userauth is OK
2025-09-28T16:08:14.487 [DEBUG] [Thread-129136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:08:14.487 [DEBUG] [Thread-129136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:08:14.487 [DEBUG] [Thread-129136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:08:14.487 [DEBUG] [Thread-129136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:08:14.511 [INFO] [Thread-129136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:08:14.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-28T16:08:14.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:08:15.457 [DEBUG] [Thread-129136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:08:15.457 [DEBUG] [Thread-129136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:08:15.505 [DEBUG] [Thread-129136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:08:15.505 [DEBUG] [Thread-129136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:08:15.514 [DEBUG] [Thread-129136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:08:15.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:08:15.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-28T16:08:15.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-28T16:08:15.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:08:15.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:08:15.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:08:15.550 [DEBUG] [Thread-129136] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:08:17.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:17.625 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:19.889 [DEBUG] [Thread-129138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:25.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:08:25.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:08:25.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:08:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 8, 19), 16.18, 33.51, 0.0, 23.75, 17.39, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:08:26.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:08:19
2025-09-28T16:08:26.212 [DEBUG] [Thread-129139 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:26.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:08:26.408 [DEBUG] [Thread-129140] [transport.py] [_log()] starting thread (client mode): 0x2e3dc820
2025-09-28T16:08:26.408 [DEBUG] [Thread-129140] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:08:26.429 [DEBUG] [Thread-129140] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:08:26.429 [INFO] [Thread-129140] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:08:26.432 [DEBUG] [Thread-129140] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:08:26.432 [DEBUG] [Thread-129140] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:08:26.432 [DEBUG] [Thread-129140] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:08:26.432 [DEBUG] [Thread-129140] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:26.432 [DEBUG] [Thread-129140] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] client lang: <none>
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] server lang: <none>
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] kex follows: False
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] Compression: none
2025-09-28T16:08:26.433 [DEBUG] [Thread-129140] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:08:26.450 [DEBUG] [Thread-129140] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:08:26.450 [DEBUG] [Thread-129140] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:08:26.451 [DEBUG] [Thread-129140] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:08:26.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:08:26.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:08:26.453 [DEBUG] [Thread-129140] [transport.py] [_log()] userauth is OK
2025-09-28T16:08:26.453 [DEBUG] [Thread-129140] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:08:26.453 [DEBUG] [Thread-129140] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:08:26.453 [DEBUG] [Thread-129140] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:08:26.453 [DEBUG] [Thread-129140] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:08:26.473 [INFO] [Thread-129140] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:08:26.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:08:27.180 [DEBUG] [Thread-129140] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:08:27.181 [DEBUG] [Thread-129140] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:08:27.181 [DEBUG] [Thread-129140] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:08:27.221 [DEBUG] [Thread-129140] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:08:27.222 [DEBUG] [Thread-129140] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:08:27.224 [DEBUG] [Thread-129140] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:08:27.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:08:27.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:08:27.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:08:27.242 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:08:27.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:08:27.249 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:08:27.249 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:08:27.249 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:08:27.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:08:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.588972 -999.00  +18.30  11.88     37   +3.70 1 1 1 1 1   887    0 13.95 -16.09 ----- 11.9 11.9 198.3 17.9 23.2 -27.4 22.5 -26.1 24.2 -26.4 25.4 -27.7
2025-09-28T16:08:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:08:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:08:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.588972
2025-09-28T16:08:27.250 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:08:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:08:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:08:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:08:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:08:27.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:08:19', tmtdew=16.18, humidity=33.51, cloud=0.0, wind=23.75, temperature=17.39, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:08:07.181', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:08:27.251 [DEBUG] [Thread-129140] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:08:27.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-28T16:08:41.260 [DEBUG] [Thread-129143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:08:56.305 [DEBUG] [Thread-129144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:11.334 [DEBUG] [Thread-129145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:17.767 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:17.770 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:19.939 [DEBUG] [Thread-129146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:26.368 [DEBUG] [Thread-129147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:41.398 [DEBUG] [Thread-129148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:09:56.428 [DEBUG] [Thread-129149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:11.454 [DEBUG] [Thread-129150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:17.920 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:17.921 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:19.993 [DEBUG] [Thread-129151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:26.480 [DEBUG] [Thread-129152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:41.510 [DEBUG] [Thread-129153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:10:42.490 [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-28T16:10:52.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:10:52.500 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:10:52.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-28T16:10:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 10, 27), 16.36, 33.36, 0.0, 20.93, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:10:53.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:10:27
2025-09-28T16:10:53.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:10:53.398 [DEBUG] [Thread-129154] [transport.py] [_log()] starting thread (client mode): 0x2b91f250
2025-09-28T16:10:53.398 [DEBUG] [Thread-129154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:10:53.418 [DEBUG] [Thread-129154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:10:53.418 [INFO] [Thread-129154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] client lang: <none>
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] server lang: <none>
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] kex follows: False
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:10:53.421 [DEBUG] [Thread-129154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:10:53.422 [DEBUG] [Thread-129154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:10:53.422 [DEBUG] [Thread-129154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:10:53.422 [DEBUG] [Thread-129154] [transport.py] [_log()] Compression: none
2025-09-28T16:10:53.422 [DEBUG] [Thread-129154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:10:53.437 [DEBUG] [Thread-129154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:10:53.437 [DEBUG] [Thread-129154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:10:53.437 [DEBUG] [Thread-129154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:10:53.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:10:53.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:10:53.438 [DEBUG] [Thread-129154] [transport.py] [_log()] userauth is OK
2025-09-28T16:10:53.438 [DEBUG] [Thread-129154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:10:53.438 [DEBUG] [Thread-129154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:10:53.438 [DEBUG] [Thread-129154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:10:53.438 [DEBUG] [Thread-129154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:10:53.457 [INFO] [Thread-129154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:10:53.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:10:54.094 [DEBUG] [Thread-129154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:10:54.094 [DEBUG] [Thread-129154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:10:54.094 [DEBUG] [Thread-129154] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:10:54.135 [DEBUG] [Thread-129154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:10:54.135 [DEBUG] [Thread-129154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:10:54.137 [DEBUG] [Thread-129154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:10:54.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:10:54.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:10:54.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:10:54.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:10:54.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:10:54.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:10:54.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.590359 -999.00  +18.10   7.68     38   +3.80 1 1 1 1 1   887    0 14.30 -12.17 ----- 7.7 7.7 224.5 20.2 23.1 -27.9 22.4 -26.8 24.1 -27.2 25.1 -28.8
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.590359
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:10:54.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:10:27', tmtdew=16.36, humidity=33.36, cloud=0.0, wind=20.93, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:10:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:10:54.155 [DEBUG] [Thread-129154] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:10:54.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-28T16:10:54.241 [DEBUG] [Thread-129157] [transport.py] [_log()] starting thread (client mode): 0x2e38cfd0
2025-09-28T16:10:54.241 [DEBUG] [Thread-129157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:10:54.254 [DEBUG] [Thread-129157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:10:54.255 [INFO] [Thread-129157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:10:54.262 [DEBUG] [Thread-129157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:10:54.262 [DEBUG] [Thread-129157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:10:54.262 [DEBUG] [Thread-129157] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:10:54.262 [DEBUG] [Thread-129157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:10:54.262 [DEBUG] [Thread-129157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] client lang: <none>
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] server lang: <none>
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] kex follows: False
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] Compression: none
2025-09-28T16:10:54.263 [DEBUG] [Thread-129157] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:10:54.317 [DEBUG] [Thread-129157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:10:54.317 [DEBUG] [Thread-129157] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:10:54.317 [DEBUG] [Thread-129157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:10:54.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:10:54.317 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:10:54.374 [DEBUG] [Thread-129157] [transport.py] [_log()] userauth is OK
2025-09-28T16:10:54.374 [DEBUG] [Thread-129157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:10:54.374 [DEBUG] [Thread-129157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:10:54.374 [DEBUG] [Thread-129157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:10:54.374 [DEBUG] [Thread-129157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:10:54.388 [INFO] [Thread-129157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:10:54.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-28T16:10:54.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:10:55.322 [DEBUG] [Thread-129157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:10:55.323 [DEBUG] [Thread-129157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:10:55.370 [DEBUG] [Thread-129157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:10:55.370 [DEBUG] [Thread-129157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:10:55.379 [DEBUG] [Thread-129157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:10:55.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:10:55.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-28T16:10:55.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-28T16:10:55.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:10:55.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:10:55.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:10:55.414 [DEBUG] [Thread-129157] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:10:56.539 [DEBUG] [Thread-129159 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:11:05.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:11:05.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-28T16:11:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 10, 59), 16.4, 33.01, 0.0, 18.83, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:11:06.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:10:59
2025-09-28T16:11:06.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:11:06.272 [DEBUG] [Thread-129160] [transport.py] [_log()] starting thread (client mode): 0x2e34acb0
2025-09-28T16:11:06.272 [DEBUG] [Thread-129160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:06.292 [DEBUG] [Thread-129160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:11:06.292 [INFO] [Thread-129160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] Compression: none
2025-09-28T16:11:06.295 [DEBUG] [Thread-129160] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:06.312 [DEBUG] [Thread-129160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:06.312 [DEBUG] [Thread-129160] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:06.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:11:06.313 [DEBUG] [Thread-129160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:11:06.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:06.315 [DEBUG] [Thread-129160] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:06.316 [DEBUG] [Thread-129160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:06.316 [DEBUG] [Thread-129160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:06.316 [DEBUG] [Thread-129160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:11:06.316 [DEBUG] [Thread-129160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:06.340 [INFO] [Thread-129160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:06.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:06.943 [DEBUG] [Thread-129160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:06.943 [DEBUG] [Thread-129160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:06.943 [DEBUG] [Thread-129160] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:11:06.984 [DEBUG] [Thread-129160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:06.985 [DEBUG] [Thread-129160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:06.988 [DEBUG] [Thread-129160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:07.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:07.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:11:07.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:11:07.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:11:07.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:07.012 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:11:07.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:07.012 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:07.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:11:07.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.590707 -999.00  +18.20  12.34     38   +3.70 1 1 1 1 1   887    0 13.97 -11.86 ----- 12.3 12.3 202.9 21.4 23.1 -28.7 22.4 -29.7 24.1 -26.9 25.1 -28.2
2025-09-28T16:11:07.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:11:07.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:11:07.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.590707
2025-09-28T16:11:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:11:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:11:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:11:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:11:07.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:11:07.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:10:59', tmtdew=16.4, humidity=33.01, cloud=0.0, wind=18.83, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:10:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:11:07.015 [DEBUG] [Thread-129160] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:07.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-28T16:11:07.107 [DEBUG] [Thread-129163] [transport.py] [_log()] starting thread (client mode): 0x2e3dc9d0
2025-09-28T16:11:07.107 [DEBUG] [Thread-129163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:07.122 [DEBUG] [Thread-129163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:11:07.122 [INFO] [Thread-129163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] Compression: none
2025-09-28T16:11:07.130 [DEBUG] [Thread-129163] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:07.186 [DEBUG] [Thread-129163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:07.186 [DEBUG] [Thread-129163] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:07.186 [DEBUG] [Thread-129163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:11:07.187 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:11:07.188 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:07.242 [DEBUG] [Thread-129163] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:07.242 [DEBUG] [Thread-129163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:07.243 [DEBUG] [Thread-129163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:07.243 [DEBUG] [Thread-129163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:11:07.243 [DEBUG] [Thread-129163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:07.260 [INFO] [Thread-129163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:07.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-28T16:11:07.261 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:08.256 [DEBUG] [Thread-129163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:08.256 [DEBUG] [Thread-129163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:08.305 [DEBUG] [Thread-129163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:08.305 [DEBUG] [Thread-129163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:08.314 [DEBUG] [Thread-129163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:08.323 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11: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-28T16:11: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-28T16:11:08.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:08.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:08.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:08.349 [DEBUG] [Thread-129163] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:11.579 [DEBUG] [Thread-129165 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:18.064 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:18.065 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:18.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:11:18.352 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:11:18.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-28T16:11:18.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 10, 59), 16.4, 33.01, 0.0, 18.83, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:11:18.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:10:59
2025-09-28T16:11:19.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:11:19.216 [DEBUG] [Thread-129166] [transport.py] [_log()] starting thread (client mode): 0x2e363fa0
2025-09-28T16:11:19.216 [DEBUG] [Thread-129166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:19.236 [DEBUG] [Thread-129166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:11:19.236 [INFO] [Thread-129166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:11:19.239 [DEBUG] [Thread-129166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:19.240 [DEBUG] [Thread-129166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:19.241 [DEBUG] [Thread-129166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:19.241 [DEBUG] [Thread-129166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:19.241 [DEBUG] [Thread-129166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:19.241 [DEBUG] [Thread-129166] [transport.py] [_log()] Compression: none
2025-09-28T16:11:19.241 [DEBUG] [Thread-129166] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:19.261 [DEBUG] [Thread-129166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:19.262 [DEBUG] [Thread-129166] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:19.263 [DEBUG] [Thread-129166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:11:19.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:11:19.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:19.265 [DEBUG] [Thread-129166] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:19.265 [DEBUG] [Thread-129166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:19.265 [DEBUG] [Thread-129166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:19.265 [DEBUG] [Thread-129166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:11:19.265 [DEBUG] [Thread-129166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:19.289 [INFO] [Thread-129166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:19.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:19.936 [DEBUG] [Thread-129166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:19.936 [DEBUG] [Thread-129166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:19.936 [DEBUG] [Thread-129166] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:11:19.977 [DEBUG] [Thread-129166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:19.978 [DEBUG] [Thread-129166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:19.980 [DEBUG] [Thread-129166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:19.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:19.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:11:19.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:11:19.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:11:20.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:20.002 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:11:20.002 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:20.002 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:11:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.590707 -999.00  +18.20  12.34     38   +3.70 1 1 1 1 1   887    0 13.97 -11.86 ----- 12.3 12.3 202.9 21.4 23.1 -28.7 22.4 -29.7 24.1 -26.9 25.1 -28.2
2025-09-28T16:11:20.002 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:11:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:11:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.590707
2025-09-28T16:11:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:11:20.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:11:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:11:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:11:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:11:20.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:10:59', tmtdew=16.4, humidity=33.01, cloud=0.0, wind=18.83, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:10:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:11:20.004 [DEBUG] [Thread-129166] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:20.044 [DEBUG] [Thread-129169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:20.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-28T16:11:20.101 [DEBUG] [Thread-129170] [transport.py] [_log()] starting thread (client mode): 0x2b94f0a0
2025-09-28T16:11:20.101 [DEBUG] [Thread-129170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:20.116 [DEBUG] [Thread-129170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:11:20.116 [INFO] [Thread-129170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:11:20.124 [DEBUG] [Thread-129170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:20.124 [DEBUG] [Thread-129170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:11:20.124 [DEBUG] [Thread-129170] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] Compression: none
2025-09-28T16:11:20.125 [DEBUG] [Thread-129170] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:20.183 [DEBUG] [Thread-129170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:20.183 [DEBUG] [Thread-129170] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:20.183 [DEBUG] [Thread-129170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:11:20.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:11:20.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:20.238 [DEBUG] [Thread-129170] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:20.239 [DEBUG] [Thread-129170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:20.239 [DEBUG] [Thread-129170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:20.239 [DEBUG] [Thread-129170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:11:20.239 [DEBUG] [Thread-129170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:20.258 [INFO] [Thread-129170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:20.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-28T16:11:20.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:21.220 [DEBUG] [Thread-129170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:21.220 [DEBUG] [Thread-129170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:21.268 [DEBUG] [Thread-129170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:21.268 [DEBUG] [Thread-129170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:21.277 [DEBUG] [Thread-129170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:21.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:21.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-28T16:11: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-28T16:11:21.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:21.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:21.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:21.313 [DEBUG] [Thread-129170] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:26.624 [DEBUG] [Thread-129172 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:31.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:11:31.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:11:31.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-28T16:11:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 10, 59), 16.4, 33.01, 0.0, 18.83, 17.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:11:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:10:59
2025-09-28T16:11:32.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:11:32.230 [DEBUG] [Thread-129173] [transport.py] [_log()] starting thread (client mode): 0x2e363fd0
2025-09-28T16:11:32.230 [DEBUG] [Thread-129173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:32.249 [DEBUG] [Thread-129173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:11:32.249 [INFO] [Thread-129173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] Compression: none
2025-09-28T16:11:32.253 [DEBUG] [Thread-129173] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:32.261 [DEBUG] [Thread-129173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:32.261 [DEBUG] [Thread-129173] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:32.262 [DEBUG] [Thread-129173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:11:32.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:11:32.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:32.263 [DEBUG] [Thread-129173] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:32.263 [DEBUG] [Thread-129173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:32.263 [DEBUG] [Thread-129173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:32.263 [DEBUG] [Thread-129173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:11:32.263 [DEBUG] [Thread-129173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:32.282 [INFO] [Thread-129173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:32.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:32.916 [DEBUG] [Thread-129173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:32.916 [DEBUG] [Thread-129173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:32.916 [DEBUG] [Thread-129173] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:11:32.957 [DEBUG] [Thread-129173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:32.957 [DEBUG] [Thread-129173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:32.959 [DEBUG] [Thread-129173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:32.971 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:32.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:11:32.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:11:32.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:11:32.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:32.977 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:11:32.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591054 -999.00  +18.20  12.96     38   +3.80 1 1 1 1 1   887    0 14.08 -8.60 ----- 13.0 13.0 212.6 22.7 23.2 -27.5 22.5 -26.7 24.1 -26.6 25.2 -28.2
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591054
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:11:32.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:11:32.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:11:32.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:10:59', tmtdew=16.4, humidity=33.01, cloud=0.0, wind=18.83, temperature=17.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:11:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:11:32.978 [DEBUG] [Thread-129173] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:33.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-28T16:11:33.064 [DEBUG] [Thread-129176] [transport.py] [_log()] starting thread (client mode): 0x2e361330
2025-09-28T16:11:33.064 [DEBUG] [Thread-129176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:33.082 [DEBUG] [Thread-129176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:11:33.082 [INFO] [Thread-129176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:33.093 [DEBUG] [Thread-129176] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] Compression: none
2025-09-28T16:11:33.094 [DEBUG] [Thread-129176] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:33.150 [DEBUG] [Thread-129176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:33.150 [DEBUG] [Thread-129176] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:33.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:11:33.151 [DEBUG] [Thread-129176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:11:33.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:33.206 [DEBUG] [Thread-129176] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:33.206 [DEBUG] [Thread-129176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:33.206 [DEBUG] [Thread-129176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:33.206 [DEBUG] [Thread-129176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:11:33.206 [DEBUG] [Thread-129176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:33.224 [INFO] [Thread-129176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:33.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-28T16:11:33.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:34.140 [DEBUG] [Thread-129176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:34.140 [DEBUG] [Thread-129176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:34.187 [DEBUG] [Thread-129176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:34.187 [DEBUG] [Thread-129176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:34.195 [DEBUG] [Thread-129176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:34.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:34.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-28T16:11:34.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-28T16:11:34.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:34.219 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:34.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:34.227 [DEBUG] [Thread-129176] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:41.655 [DEBUG] [Thread-129178 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:44.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:11:44.230 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:11:44.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:11:44.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 11, 31), 16.37, 33.04, 0.0, 19.09, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:11:44.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:11:31
2025-09-28T16:11:44.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:11:45.095 [DEBUG] [Thread-129179] [transport.py] [_log()] starting thread (client mode): 0x2e38ef80
2025-09-28T16:11:45.095 [DEBUG] [Thread-129179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:45.115 [DEBUG] [Thread-129179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:11:45.115 [INFO] [Thread-129179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:11:45.118 [DEBUG] [Thread-129179] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:45.118 [DEBUG] [Thread-129179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:11:45.118 [DEBUG] [Thread-129179] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:45.119 [DEBUG] [Thread-129179] [transport.py] [_log()] Compression: none
2025-09-28T16:11:45.120 [DEBUG] [Thread-129179] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:45.140 [DEBUG] [Thread-129179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:45.141 [DEBUG] [Thread-129179] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:45.141 [DEBUG] [Thread-129179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:11:45.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:11:45.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:45.185 [DEBUG] [Thread-129179] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:45.185 [DEBUG] [Thread-129179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:45.185 [DEBUG] [Thread-129179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:45.185 [DEBUG] [Thread-129179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:11:45.185 [DEBUG] [Thread-129179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:45.217 [INFO] [Thread-129179] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:45.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:45.863 [DEBUG] [Thread-129179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:45.863 [DEBUG] [Thread-129179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:45.863 [DEBUG] [Thread-129179] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:11:45.904 [DEBUG] [Thread-129179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:45.905 [DEBUG] [Thread-129179] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:45.910 [DEBUG] [Thread-129179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:45.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:45.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:11:45.919 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:11:45.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:11:45.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:45.928 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:11:45.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:45.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591054 -999.00  +18.20  12.96     38   +3.80 1 1 1 1 1   887    0 14.08 -8.60 ----- 13.0 13.0 212.6 22.7 23.2 -27.5 22.5 -26.7 24.1 -26.6 25.2 -28.2
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591054
2025-09-28T16:11:45.929 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:11:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:11:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:11:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:11:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:11:45.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:11:31', tmtdew=16.37, humidity=33.04, cloud=0.0, wind=19.09, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:11:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:11:45.930 [DEBUG] [Thread-129179] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:46.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-28T16:11:46.027 [DEBUG] [Thread-129182] [transport.py] [_log()] starting thread (client mode): 0x2e3dded0
2025-09-28T16:11:46.027 [DEBUG] [Thread-129182] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:46.042 [DEBUG] [Thread-129182] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:11:46.042 [INFO] [Thread-129182] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:11:46.049 [DEBUG] [Thread-129182] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:46.049 [DEBUG] [Thread-129182] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:11:46.049 [DEBUG] [Thread-129182] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:46.050 [DEBUG] [Thread-129182] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] Compression: none
2025-09-28T16:11:46.051 [DEBUG] [Thread-129182] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:46.106 [DEBUG] [Thread-129182] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:46.107 [DEBUG] [Thread-129182] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:46.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:11:46.108 [DEBUG] [Thread-129182] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:11:46.108 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:46.162 [DEBUG] [Thread-129182] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:46.162 [DEBUG] [Thread-129182] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:46.163 [DEBUG] [Thread-129182] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:46.163 [DEBUG] [Thread-129182] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:11:46.163 [DEBUG] [Thread-129182] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:46.181 [INFO] [Thread-129182] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:46.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-28T16:11:46.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:47.138 [DEBUG] [Thread-129182] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:47.139 [DEBUG] [Thread-129182] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:47.186 [DEBUG] [Thread-129182] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:47.186 [DEBUG] [Thread-129182] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:47.195 [DEBUG] [Thread-129182] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:47.204 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:47.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-28T16:11:47.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-28T16:11:47.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:47.221 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:47.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:47.229 [DEBUG] [Thread-129182] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:56.700 [DEBUG] [Thread-129184 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:11:57.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:11:57.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:11:57.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-28T16:11:57.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 11, 31), 16.37, 33.04, 0.0, 19.09, 17.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:11:57.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:11:31
2025-09-28T16:11:57.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:11:58.098 [DEBUG] [Thread-129185] [transport.py] [_log()] starting thread (client mode): 0x2b92a830
2025-09-28T16:11:58.098 [DEBUG] [Thread-129185] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:58.118 [DEBUG] [Thread-129185] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:11:58.118 [INFO] [Thread-129185] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:11:58.121 [DEBUG] [Thread-129185] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:58.127 [DEBUG] [Thread-129185] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] Compression: none
2025-09-28T16:11:58.128 [DEBUG] [Thread-129185] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:58.145 [DEBUG] [Thread-129185] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:58.146 [DEBUG] [Thread-129185] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:58.146 [DEBUG] [Thread-129185] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:11:58.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:11:58.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:58.148 [DEBUG] [Thread-129185] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:58.148 [DEBUG] [Thread-129185] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:58.149 [DEBUG] [Thread-129185] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:58.149 [DEBUG] [Thread-129185] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:11:58.149 [DEBUG] [Thread-129185] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:58.183 [INFO] [Thread-129185] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:58.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:11:58.823 [DEBUG] [Thread-129185] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:11:58.824 [DEBUG] [Thread-129185] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:11:58.824 [DEBUG] [Thread-129185] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:11:58.864 [DEBUG] [Thread-129185] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:11:58.864 [DEBUG] [Thread-129185] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:11:58.867 [DEBUG] [Thread-129185] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:11:58.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:11:58.879 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:11:58.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:11:58.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:11:58.888 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:11:58.890 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:11:58.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:11:58.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:11:58.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:11:58.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591054 -999.00  +18.20  12.96     38   +3.80 1 1 1 1 1   887    0 14.08 -8.60 ----- 13.0 13.0 212.6 22.7 23.2 -27.5 22.5 -26.7 24.1 -26.6 25.2 -28.2
2025-09-28T16:11:58.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:11:58.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:11:58.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591054
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:11:58.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:11:31', tmtdew=16.37, humidity=33.04, cloud=0.0, wind=19.09, temperature=17.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:11:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:11:58.893 [DEBUG] [Thread-129185] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:11:58.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:11:58.986 [DEBUG] [Thread-129188] [transport.py] [_log()] starting thread (client mode): 0x2e3df9a0
2025-09-28T16:11:58.987 [DEBUG] [Thread-129188] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:11:59.001 [DEBUG] [Thread-129188] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:11:59.001 [INFO] [Thread-129188] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] client lang: <none>
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] server lang: <none>
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] kex follows: False
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] Compression: none
2025-09-28T16:11:59.009 [DEBUG] [Thread-129188] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:11:59.066 [DEBUG] [Thread-129188] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:11:59.066 [DEBUG] [Thread-129188] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:11:59.067 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:11:59.067 [DEBUG] [Thread-129188] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:11:59.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:11:59.122 [DEBUG] [Thread-129188] [transport.py] [_log()] userauth is OK
2025-09-28T16:11:59.123 [DEBUG] [Thread-129188] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:11:59.123 [DEBUG] [Thread-129188] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:11:59.123 [DEBUG] [Thread-129188] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:11:59.123 [DEBUG] [Thread-129188] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:11:59.142 [INFO] [Thread-129188] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:11:59.142 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:11:59.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:00.098 [DEBUG] [Thread-129188] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:00.098 [DEBUG] [Thread-129188] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:00.146 [DEBUG] [Thread-129188] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:00.146 [DEBUG] [Thread-129188] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:00.155 [DEBUG] [Thread-129188] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:00.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:00.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-28T16:12:00.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-28T16:12:00.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:00.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:00.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:00.190 [DEBUG] [Thread-129188] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:10.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:12:10.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:12:10.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-28T16:12:10.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 12, 3), 16.33, 33.13, 0.0, 18.35, 17.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:12:10.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:12:03
2025-09-28T16:12:10.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:12:11.047 [DEBUG] [Thread-129190] [transport.py] [_log()] starting thread (client mode): 0x2b94f7f0
2025-09-28T16:12:11.047 [DEBUG] [Thread-129190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:12:11.063 [DEBUG] [Thread-129190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:12:11.063 [INFO] [Thread-129190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] client lang: <none>
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] server lang: <none>
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] kex follows: False
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] Compression: none
2025-09-28T16:12:11.066 [DEBUG] [Thread-129190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:12:11.085 [DEBUG] [Thread-129190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:12:11.086 [DEBUG] [Thread-129190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:12:11.086 [DEBUG] [Thread-129190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:12:11.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:12:11.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:12:11.088 [DEBUG] [Thread-129190] [transport.py] [_log()] userauth is OK
2025-09-28T16:12:11.089 [DEBUG] [Thread-129190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:12:11.089 [DEBUG] [Thread-129190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:12:11.089 [DEBUG] [Thread-129190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:12:11.089 [DEBUG] [Thread-129190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:12:11.125 [INFO] [Thread-129190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:12:11.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:11.730 [DEBUG] [Thread-129190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:11.730 [DEBUG] [Thread-129190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:11.731 [DEBUG] [Thread-129190] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:12:11.742 [DEBUG] [Thread-129192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:11.771 [DEBUG] [Thread-129190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:11.771 [DEBUG] [Thread-129190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:11.775 [DEBUG] [Thread-129190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:11.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:11.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:12:11.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:12:11.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:12:11.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:11.797 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:12:11.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:11.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:11.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:12:11.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591401 -999.00  +18.10  13.54     38   +3.70 1 1 1 1 1   887    0 14.22 -5.54 ----- 13.5 13.5 210.3 24.3 23.1 -27.3 22.4 -28.5 24.1 -26.8 25.1 -29.3
2025-09-28T16:12:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:12:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:12:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591401
2025-09-28T16:12:11.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:12:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:12:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:12:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:12:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:12:11.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:12:03', tmtdew=16.33, humidity=33.13, cloud=0.0, wind=18.35, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:11:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:12:11.799 [DEBUG] [Thread-129190] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:11.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-28T16:12:11.896 [DEBUG] [Thread-129194] [transport.py] [_log()] starting thread (client mode): 0x2e3629e0
2025-09-28T16:12:11.896 [DEBUG] [Thread-129194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:12:11.911 [DEBUG] [Thread-129194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:12:11.911 [INFO] [Thread-129194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:11.918 [DEBUG] [Thread-129194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] client lang: <none>
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] server lang: <none>
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] kex follows: False
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] Compression: none
2025-09-28T16:12:11.919 [DEBUG] [Thread-129194] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:12:11.972 [DEBUG] [Thread-129194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:12:11.973 [DEBUG] [Thread-129194] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:12:11.973 [DEBUG] [Thread-129194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:12:11.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:12:11.973 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:12:12.030 [DEBUG] [Thread-129194] [transport.py] [_log()] userauth is OK
2025-09-28T16:12:12.030 [DEBUG] [Thread-129194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:12:12.030 [DEBUG] [Thread-129194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:12:12.030 [DEBUG] [Thread-129194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:12:12.030 [DEBUG] [Thread-129194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:12:12.044 [INFO] [Thread-129194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:12:12.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-28T16:12:12.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:12.981 [DEBUG] [Thread-129194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:12.981 [DEBUG] [Thread-129194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:13.029 [DEBUG] [Thread-129194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:13.029 [DEBUG] [Thread-129194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:13.038 [DEBUG] [Thread-129194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:13.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:13.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-28T16:12:13.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-28T16:12:13.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:13.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:13.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:13.073 [DEBUG] [Thread-129194] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:18.206 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:18.207 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:20.098 [DEBUG] [Thread-129196 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:23.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:12:23.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:12:23.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-28T16:12:23.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 12, 3), 16.33, 33.13, 0.0, 18.35, 17.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:12:23.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:12:03
2025-09-28T16:12:23.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:12:23.940 [DEBUG] [Thread-129197] [transport.py] [_log()] starting thread (client mode): 0x2b9b9510
2025-09-28T16:12:23.940 [DEBUG] [Thread-129197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:12:23.962 [DEBUG] [Thread-129197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:12:23.963 [INFO] [Thread-129197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:12:23.966 [DEBUG] [Thread-129197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:12:23.966 [DEBUG] [Thread-129197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] client lang: <none>
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] server lang: <none>
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] kex follows: False
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:12:23.967 [DEBUG] [Thread-129197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:12:23.968 [DEBUG] [Thread-129197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:12:23.968 [DEBUG] [Thread-129197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:12:23.968 [DEBUG] [Thread-129197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:12:23.968 [DEBUG] [Thread-129197] [transport.py] [_log()] Compression: none
2025-09-28T16:12:23.968 [DEBUG] [Thread-129197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:12:23.984 [DEBUG] [Thread-129197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:12:23.984 [DEBUG] [Thread-129197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:12:23.985 [DEBUG] [Thread-129197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:12:23.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:12:23.986 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:12:23.987 [DEBUG] [Thread-129197] [transport.py] [_log()] userauth is OK
2025-09-28T16:12:23.987 [DEBUG] [Thread-129197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:12:23.987 [DEBUG] [Thread-129197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:12:23.987 [DEBUG] [Thread-129197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:12:23.987 [DEBUG] [Thread-129197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:12:24.021 [INFO] [Thread-129197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:12:24.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:24.664 [DEBUG] [Thread-129197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:24.665 [DEBUG] [Thread-129197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:24.665 [DEBUG] [Thread-129197] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:12:24.706 [DEBUG] [Thread-129197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:24.706 [DEBUG] [Thread-129197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:24.709 [DEBUG] [Thread-129197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:24.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:24.720 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:12:24.722 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:12:24.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:12:24.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:24.730 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:12:24.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:24.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591401 -999.00  +18.10  13.54     38   +3.70 1 1 1 1 1   887    0 14.22 -5.54 ----- 13.5 13.5 210.3 24.3 23.1 -27.3 22.4 -28.5 24.1 -26.8 25.1 -29.3
2025-09-28T16:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:12:24.731 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591401
2025-09-28T16:12:24.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:12:24.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:12:24.732 [DEBUG] [Thread-129197] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:12:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:12:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:12:24.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:12:03', tmtdew=16.33, humidity=33.13, cloud=0.0, wind=18.35, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:11:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:12:24.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-28T16:12:24.824 [DEBUG] [Thread-129200] [transport.py] [_log()] starting thread (client mode): 0x2b9b89a0
2025-09-28T16:12:24.824 [DEBUG] [Thread-129200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:12:24.839 [DEBUG] [Thread-129200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:12:24.839 [INFO] [Thread-129200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] client lang: <none>
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] server lang: <none>
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] kex follows: False
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] Compression: none
2025-09-28T16:12:24.847 [DEBUG] [Thread-129200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:12:24.907 [DEBUG] [Thread-129200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:12:24.907 [DEBUG] [Thread-129200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:12:24.908 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:12:24.908 [DEBUG] [Thread-129200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:12:24.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:12:24.962 [DEBUG] [Thread-129200] [transport.py] [_log()] userauth is OK
2025-09-28T16:12:24.963 [DEBUG] [Thread-129200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:12:24.963 [DEBUG] [Thread-129200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:12:24.963 [DEBUG] [Thread-129200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:12:24.963 [DEBUG] [Thread-129200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:12:24.981 [INFO] [Thread-129200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:12:24.982 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:12:24.982 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:25.974 [DEBUG] [Thread-129200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:25.975 [DEBUG] [Thread-129200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:26.022 [DEBUG] [Thread-129200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:26.022 [DEBUG] [Thread-129200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:26.031 [DEBUG] [Thread-129200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:26.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:26.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-28T16:12:26.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-28T16:12:26.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:26.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:26.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:26.065 [DEBUG] [Thread-129200] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:26.774 [DEBUG] [Thread-129202 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:36.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:12:36.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:12:36.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-28T16:12:36.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 12, 3), 16.33, 33.13, 0.0, 18.35, 17.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:12:36.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:12:03
2025-09-28T16:12:36.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:12:36.949 [DEBUG] [Thread-129203] [transport.py] [_log()] starting thread (client mode): 0x2b9b86a0
2025-09-28T16:12:36.949 [DEBUG] [Thread-129203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:12:36.965 [DEBUG] [Thread-129203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:12:36.965 [INFO] [Thread-129203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] client lang: <none>
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] server lang: <none>
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] kex follows: False
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:12:36.968 [DEBUG] [Thread-129203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:12:36.969 [DEBUG] [Thread-129203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:12:36.969 [DEBUG] [Thread-129203] [transport.py] [_log()] Compression: none
2025-09-28T16:12:36.969 [DEBUG] [Thread-129203] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:12:36.984 [DEBUG] [Thread-129203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:12:36.984 [DEBUG] [Thread-129203] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:12:36.984 [DEBUG] [Thread-129203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:12:36.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:12:36.985 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:12:36.985 [DEBUG] [Thread-129203] [transport.py] [_log()] userauth is OK
2025-09-28T16:12:36.985 [DEBUG] [Thread-129203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:12:36.986 [DEBUG] [Thread-129203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:12:36.986 [DEBUG] [Thread-129203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:12:36.986 [DEBUG] [Thread-129203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:12:37.004 [INFO] [Thread-129203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:12:37.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:12:37.590 [DEBUG] [Thread-129203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:12:37.590 [DEBUG] [Thread-129203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:12:37.591 [DEBUG] [Thread-129203] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:12:37.631 [DEBUG] [Thread-129203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:12:37.631 [DEBUG] [Thread-129203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:12:37.633 [DEBUG] [Thread-129203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:12:37.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:12:37.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:12:37.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:12:37.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:12:37.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:12:37.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:12:37.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:12:37.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.591748 -999.00  +18.10  11.33     38   +3.70 1 1 1 1 1   887    0 14.40 -3.56 ----- 11.3 11.3 196.2 17.8 23.1 -28.1 22.4 -26.8 24.1 -26.3 25.1 -27.7
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.591748
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:12:37.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:12:03', tmtdew=16.33, humidity=33.13, cloud=0.0, wind=18.35, temperature=17.79, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:12:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:12:37.651 [DEBUG] [Thread-129203] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:12:37.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-28T16:12:41.819 [DEBUG] [Thread-129206 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:12:56.867 [DEBUG] [Thread-129207 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:11.899 [DEBUG] [Thread-129208 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:18.347 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:18.348 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:20.153 [DEBUG] [Thread-129209 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:26.927 [DEBUG] [Thread-129210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:41.957 [DEBUG] [Thread-129211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:13:56.990 [DEBUG] [Thread-129212 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:12.021 [DEBUG] [Thread-129213 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:18.493 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:18.494 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:20.204 [DEBUG] [Thread-129214 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:27.051 [DEBUG] [Thread-129215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:42.082 [DEBUG] [Thread-129216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:14:52.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-28T16:14:57.109 [DEBUG] [Thread-129217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:02.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:15:02.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:15:02.360 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:15:03.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 14, 43), 15.74, 34.66, 0.0, 19.2, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:15:03.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:14:43
2025-09-28T16:15:03.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:15:03.273 [DEBUG] [Thread-129218] [transport.py] [_log()] starting thread (client mode): 0x2b9b8340
2025-09-28T16:15:03.274 [DEBUG] [Thread-129218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:03.293 [DEBUG] [Thread-129218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:15:03.293 [INFO] [Thread-129218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:15:03.297 [DEBUG] [Thread-129218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:03.297 [DEBUG] [Thread-129218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:15:03.297 [DEBUG] [Thread-129218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:03.297 [DEBUG] [Thread-129218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] Compression: none
2025-09-28T16:15:03.298 [DEBUG] [Thread-129218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:03.306 [DEBUG] [Thread-129218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:03.306 [DEBUG] [Thread-129218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:03.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:15:03.307 [DEBUG] [Thread-129218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:15:03.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:03.309 [DEBUG] [Thread-129218] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:03.309 [DEBUG] [Thread-129218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:03.309 [DEBUG] [Thread-129218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:03.309 [DEBUG] [Thread-129218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:15:03.309 [DEBUG] [Thread-129218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:03.334 [INFO] [Thread-129218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:03.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:08.560 [DEBUG] [Thread-129218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:08.560 [DEBUG] [Thread-129218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:08.561 [DEBUG] [Thread-129218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:15:08.601 [DEBUG] [Thread-129218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:08.601 [DEBUG] [Thread-129218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:08.605 [DEBUG] [Thread-129218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:08.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:08.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:15:08.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:15:08.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:15:08.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:08.752 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:15:08.752 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:08.752 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.593484 -999.00  +18.00  15.38     38   +3.60 1 1 1 1 1   887    0 14.37 5.31 ----- 15.4 15.4 208.5 18.9 23.1 -27.9 22.5 -28.9 24.1 -27.1 24.9 -28.2
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.593484
2025-09-28T16:15:08.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:15:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:15:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:15:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:15:08.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:15:08.754 [DEBUG] [Thread-129218] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:08.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:14:43', tmtdew=15.74, humidity=34.66, cloud=0.0, wind=19.2, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:14:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:15:08.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-28T16:15:08.853 [DEBUG] [Thread-129221] [transport.py] [_log()] starting thread (client mode): 0x2e3dea10
2025-09-28T16:15:08.853 [DEBUG] [Thread-129221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:08.868 [DEBUG] [Thread-129221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:15:08.868 [INFO] [Thread-129221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:15:08.877 [DEBUG] [Thread-129221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:08.877 [DEBUG] [Thread-129221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:15:08.877 [DEBUG] [Thread-129221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:08.877 [DEBUG] [Thread-129221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:08.877 [DEBUG] [Thread-129221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] Compression: none
2025-09-28T16:15:08.878 [DEBUG] [Thread-129221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:08.934 [DEBUG] [Thread-129221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:08.934 [DEBUG] [Thread-129221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:08.935 [DEBUG] [Thread-129221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:15:08.935 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:15:08.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:08.991 [DEBUG] [Thread-129221] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:08.991 [DEBUG] [Thread-129221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:08.991 [DEBUG] [Thread-129221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:08.992 [DEBUG] [Thread-129221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:15:08.992 [DEBUG] [Thread-129221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:09.014 [INFO] [Thread-129221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:09.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-28T16:15:09.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:10.066 [DEBUG] [Thread-129221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:10.066 [DEBUG] [Thread-129221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:10.116 [DEBUG] [Thread-129221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:10.117 [DEBUG] [Thread-129221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:10.125 [DEBUG] [Thread-129221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:10.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:10.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-28T16:15:10.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-28T16:15:10.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:10.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:10.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:10.160 [DEBUG] [Thread-129221] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:12.142 [DEBUG] [Thread-129223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:18.635 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:18.636 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:20.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:15:20.161 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:15:20.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-28T16:15:20.266 [DEBUG] [Thread-129224 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:20.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 15, 15), 15.85, 34.41, 0.0, 17.31, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:15:20.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:15:15
2025-09-28T16:15:20.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:15:21.011 [DEBUG] [Thread-129225] [transport.py] [_log()] starting thread (client mode): 0x2e349270
2025-09-28T16:15:21.012 [DEBUG] [Thread-129225] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:21.033 [DEBUG] [Thread-129225] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:15:21.033 [INFO] [Thread-129225] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] Compression: none
2025-09-28T16:15:21.036 [DEBUG] [Thread-129225] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:21.048 [DEBUG] [Thread-129225] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:21.048 [DEBUG] [Thread-129225] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:21.049 [DEBUG] [Thread-129225] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:15:21.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:15:21.049 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:21.049 [DEBUG] [Thread-129225] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:21.050 [DEBUG] [Thread-129225] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:21.050 [DEBUG] [Thread-129225] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:21.050 [DEBUG] [Thread-129225] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:15:21.050 [DEBUG] [Thread-129225] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:21.066 [INFO] [Thread-129225] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:21.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:21.679 [DEBUG] [Thread-129225] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:21.679 [DEBUG] [Thread-129225] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:21.679 [DEBUG] [Thread-129225] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:15:21.721 [DEBUG] [Thread-129225] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:21.721 [DEBUG] [Thread-129225] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:21.722 [DEBUG] [Thread-129225] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:21.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:21.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:15:21.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:15:21.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:15:21.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:21.736 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:15:21.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:21.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:15:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.593831 -999.00  +18.00   8.60     38   +3.60 1 1 1 1 1   887    0 14.64 7.93 ----- 8.6 8.6 194.9 18.5 23.1 -28.6 22.6 -27.0 24.1 -26.6 25.0 -28.5
2025-09-28T16:15:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:15:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:15:21.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.593831
2025-09-28T16:15:21.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:15:21.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:15:21.738 [DEBUG] [Thread-129225] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:21.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:15:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:15:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:15:21.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:15:15', tmtdew=15.85, humidity=34.41, cloud=0.0, wind=17.31, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:15:21.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-28T16:15:21.832 [DEBUG] [Thread-129228] [transport.py] [_log()] starting thread (client mode): 0x2e34a350
2025-09-28T16:15:21.833 [DEBUG] [Thread-129228] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:21.848 [DEBUG] [Thread-129228] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:15:21.848 [INFO] [Thread-129228] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:15:21.855 [DEBUG] [Thread-129228] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:21.856 [DEBUG] [Thread-129228] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:21.857 [DEBUG] [Thread-129228] [transport.py] [_log()] Compression: none
2025-09-28T16:15:21.858 [DEBUG] [Thread-129228] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:21.914 [DEBUG] [Thread-129228] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:21.915 [DEBUG] [Thread-129228] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:21.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:15:21.916 [DEBUG] [Thread-129228] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:15:21.917 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:21.970 [DEBUG] [Thread-129228] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:21.971 [DEBUG] [Thread-129228] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:21.971 [DEBUG] [Thread-129228] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:21.971 [DEBUG] [Thread-129228] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:15:21.971 [DEBUG] [Thread-129228] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:21.989 [INFO] [Thread-129228] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:21.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-28T16:15:21.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:22.920 [DEBUG] [Thread-129228] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:22.921 [DEBUG] [Thread-129228] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:22.968 [DEBUG] [Thread-129228] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:22.968 [DEBUG] [Thread-129228] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:22.980 [DEBUG] [Thread-129228] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:22.988 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:22.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')
2025-09-28T16:15:22.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') -> 00000000
2025-09-28T16:15:23.006 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:23.007 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:23.007 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:23.015 [DEBUG] [Thread-129228] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:27.188 [DEBUG] [Thread-129230 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:33.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:15:33.018 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:15:33.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:15:33.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 15, 15), 15.85, 34.41, 0.0, 17.31, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:15:33.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:15:15
2025-09-28T16:15:33.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:15:33.871 [DEBUG] [Thread-129231] [transport.py] [_log()] starting thread (client mode): 0x2b9b9030
2025-09-28T16:15:33.871 [DEBUG] [Thread-129231] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:33.894 [DEBUG] [Thread-129231] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:15:33.894 [INFO] [Thread-129231] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:15:33.898 [DEBUG] [Thread-129231] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:33.898 [DEBUG] [Thread-129231] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:15:33.898 [DEBUG] [Thread-129231] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:33.898 [DEBUG] [Thread-129231] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:33.899 [DEBUG] [Thread-129231] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:33.900 [DEBUG] [Thread-129231] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:33.900 [DEBUG] [Thread-129231] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:33.900 [DEBUG] [Thread-129231] [transport.py] [_log()] Compression: none
2025-09-28T16:15:33.900 [DEBUG] [Thread-129231] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:33.919 [DEBUG] [Thread-129231] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:33.919 [DEBUG] [Thread-129231] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:33.920 [DEBUG] [Thread-129231] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:15:33.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:15:33.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:33.922 [DEBUG] [Thread-129231] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:33.922 [DEBUG] [Thread-129231] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:33.922 [DEBUG] [Thread-129231] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:33.922 [DEBUG] [Thread-129231] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:15:33.922 [DEBUG] [Thread-129231] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:33.958 [INFO] [Thread-129231] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:33.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:34.605 [DEBUG] [Thread-129231] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:34.605 [DEBUG] [Thread-129231] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:34.605 [DEBUG] [Thread-129231] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:15:34.646 [DEBUG] [Thread-129231] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:34.646 [DEBUG] [Thread-129231] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:34.648 [DEBUG] [Thread-129231] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:34.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:34.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:15:34.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:15:34.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:15:34.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:34.668 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:15:34.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.593831 -999.00  +18.00   8.60     38   +3.60 1 1 1 1 1   887    0 14.64 7.93 ----- 8.6 8.6 194.9 18.5 23.1 -28.6 22.6 -27.0 24.1 -26.6 25.0 -28.5
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.593831
2025-09-28T16:15:34.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:15:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:15:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:15:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:15:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:15:34.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:15:15', tmtdew=15.85, humidity=34.41, cloud=0.0, wind=17.31, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:15:34.670 [DEBUG] [Thread-129231] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:34.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-28T16:15:34.766 [DEBUG] [Thread-129234] [transport.py] [_log()] starting thread (client mode): 0x2b9b9db0
2025-09-28T16:15:34.766 [DEBUG] [Thread-129234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:34.781 [DEBUG] [Thread-129234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:15:34.781 [INFO] [Thread-129234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:15:34.788 [DEBUG] [Thread-129234] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:34.788 [DEBUG] [Thread-129234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:34.789 [DEBUG] [Thread-129234] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:34.790 [DEBUG] [Thread-129234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:34.791 [DEBUG] [Thread-129234] [transport.py] [_log()] Compression: none
2025-09-28T16:15:34.791 [DEBUG] [Thread-129234] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:34.847 [DEBUG] [Thread-129234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:34.848 [DEBUG] [Thread-129234] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:34.848 [DEBUG] [Thread-129234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:15:34.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:15:34.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:34.907 [DEBUG] [Thread-129234] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:34.907 [DEBUG] [Thread-129234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:34.907 [DEBUG] [Thread-129234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:34.907 [DEBUG] [Thread-129234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:15:34.907 [DEBUG] [Thread-129234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:34.927 [INFO] [Thread-129234] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:34.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-28T16:15:34.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:35.865 [DEBUG] [Thread-129234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:35.865 [DEBUG] [Thread-129234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:35.914 [DEBUG] [Thread-129234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:35.915 [DEBUG] [Thread-129234] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:35.924 [DEBUG] [Thread-129234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:35.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:35.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-28T16:15:35.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-28T16:15:35.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:35.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:35.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:35.963 [DEBUG] [Thread-129234] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:42.236 [DEBUG] [Thread-129236 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:45.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:15:45.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:15:45.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-28T16:15:46.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 15, 15), 15.85, 34.41, 0.0, 17.31, 17.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:15:46.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:15:15
2025-09-28T16:15:46.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:15:46.828 [DEBUG] [Thread-129237] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-28T16:15:46.829 [DEBUG] [Thread-129237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:46.850 [DEBUG] [Thread-129237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:15:46.850 [INFO] [Thread-129237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:46.853 [DEBUG] [Thread-129237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] Compression: none
2025-09-28T16:15:46.854 [DEBUG] [Thread-129237] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:46.872 [DEBUG] [Thread-129237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:46.873 [DEBUG] [Thread-129237] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:46.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:15:46.874 [DEBUG] [Thread-129237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:15:46.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:46.875 [DEBUG] [Thread-129237] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:46.876 [DEBUG] [Thread-129237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:46.876 [DEBUG] [Thread-129237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:46.876 [DEBUG] [Thread-129237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:15:46.876 [DEBUG] [Thread-129237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:46.911 [INFO] [Thread-129237] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:46.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:47.522 [DEBUG] [Thread-129237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:47.522 [DEBUG] [Thread-129237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:47.522 [DEBUG] [Thread-129237] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:15:47.563 [DEBUG] [Thread-129237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:47.563 [DEBUG] [Thread-129237] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:47.565 [DEBUG] [Thread-129237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:47.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:47.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:15:47.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:15:47.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:15:47.586 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:47.588 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:15:47.588 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:47.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.593831 -999.00  +18.00   8.60     38   +3.60 1 1 1 1 1   887    0 14.64 7.93 ----- 8.6 8.6 194.9 18.5 23.1 -28.6 22.6 -27.0 24.1 -26.6 25.0 -28.5
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.593831
2025-09-28T16:15:47.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:15:47.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:15:47.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:15:47.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:15:47.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:15:47.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:15:15', tmtdew=15.85, humidity=34.41, cloud=0.0, wind=17.31, temperature=17.27, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:15:47.591 [DEBUG] [Thread-129237] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:47.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-28T16:15:47.677 [DEBUG] [Thread-129240] [transport.py] [_log()] starting thread (client mode): 0x2b94e7d0
2025-09-28T16:15:47.677 [DEBUG] [Thread-129240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:47.691 [DEBUG] [Thread-129240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:15:47.691 [INFO] [Thread-129240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:47.698 [DEBUG] [Thread-129240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:47.699 [DEBUG] [Thread-129240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:47.699 [DEBUG] [Thread-129240] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:47.699 [DEBUG] [Thread-129240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:47.699 [DEBUG] [Thread-129240] [transport.py] [_log()] Compression: none
2025-09-28T16:15:47.699 [DEBUG] [Thread-129240] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:47.761 [DEBUG] [Thread-129240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:47.762 [DEBUG] [Thread-129240] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:47.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:15:47.762 [DEBUG] [Thread-129240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:15:47.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:47.818 [DEBUG] [Thread-129240] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:47.818 [DEBUG] [Thread-129240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:47.818 [DEBUG] [Thread-129240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:47.818 [DEBUG] [Thread-129240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:15:47.818 [DEBUG] [Thread-129240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:47.831 [INFO] [Thread-129240] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:47.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-28T16:15:47.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:15:48.760 [DEBUG] [Thread-129240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:15:48.760 [DEBUG] [Thread-129240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:15:48.808 [DEBUG] [Thread-129240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:15:48.808 [DEBUG] [Thread-129240] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:15:48.816 [DEBUG] [Thread-129240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:15:48.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:15:48.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-28T16:15:48.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-28T16:15:48.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:15:48.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:15:48.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:15:48.848 [DEBUG] [Thread-129240] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:15:57.266 [DEBUG] [Thread-129242 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:15:58.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:15:58.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:15:58.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:15:59.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 15, 47), 15.9, 34.31, 0.0, 20.2, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:15:59.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:15:47
2025-09-28T16:15:59.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:15:59.712 [DEBUG] [Thread-129243] [transport.py] [_log()] starting thread (client mode): 0x2e348970
2025-09-28T16:15:59.712 [DEBUG] [Thread-129243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:15:59.732 [DEBUG] [Thread-129243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:15:59.732 [INFO] [Thread-129243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:15:59.735 [DEBUG] [Thread-129243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] client lang: <none>
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] server lang: <none>
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] kex follows: False
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] Compression: none
2025-09-28T16:15:59.736 [DEBUG] [Thread-129243] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:15:59.753 [DEBUG] [Thread-129243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:15:59.753 [DEBUG] [Thread-129243] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:15:59.754 [DEBUG] [Thread-129243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:15:59.754 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:15:59.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:15:59.755 [DEBUG] [Thread-129243] [transport.py] [_log()] userauth is OK
2025-09-28T16:15:59.756 [DEBUG] [Thread-129243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:15:59.756 [DEBUG] [Thread-129243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:15:59.756 [DEBUG] [Thread-129243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:15:59.756 [DEBUG] [Thread-129243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:15:59.770 [INFO] [Thread-129243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:15:59.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:00.391 [DEBUG] [Thread-129243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:00.391 [DEBUG] [Thread-129243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:00.392 [DEBUG] [Thread-129243] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:16:00.432 [DEBUG] [Thread-129243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:00.432 [DEBUG] [Thread-129243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:00.434 [DEBUG] [Thread-129243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:00.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:00.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:16:00.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:16:00.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:16:00.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:00.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:16:00.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:00.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594179 -999.00  +18.20   4.90     38   +3.70 1 1 1 1 1   887    0 15.16 12.56 ----- 4.9 4.9 182.6 16.8 23.2 -27.6 22.5 -26.5 24.1 -26.3 25.1 -26.7
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594179
2025-09-28T16:16:00.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:16:00.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:16:00.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:16:00.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:16:00.460 [DEBUG] [Thread-129243] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:00.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:16:00.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:15:47', tmtdew=15.9, humidity=34.31, cloud=0.0, wind=20.2, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:16:00.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-28T16:16:00.557 [DEBUG] [Thread-129246] [transport.py] [_log()] starting thread (client mode): 0x2b9ba890
2025-09-28T16:16:00.557 [DEBUG] [Thread-129246] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:00.571 [DEBUG] [Thread-129246] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:16:00.572 [INFO] [Thread-129246] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:16:00.579 [DEBUG] [Thread-129246] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:00.579 [DEBUG] [Thread-129246] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:16:00.579 [DEBUG] [Thread-129246] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:00.579 [DEBUG] [Thread-129246] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:00.579 [DEBUG] [Thread-129246] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:00.580 [DEBUG] [Thread-129246] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:00.581 [DEBUG] [Thread-129246] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:00.581 [DEBUG] [Thread-129246] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:00.581 [DEBUG] [Thread-129246] [transport.py] [_log()] Compression: none
2025-09-28T16:16:00.581 [DEBUG] [Thread-129246] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:00.639 [DEBUG] [Thread-129246] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:00.640 [DEBUG] [Thread-129246] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:00.640 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:16:00.641 [DEBUG] [Thread-129246] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:16:00.641 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:00.698 [DEBUG] [Thread-129246] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:00.698 [DEBUG] [Thread-129246] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:00.699 [DEBUG] [Thread-129246] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:00.699 [DEBUG] [Thread-129246] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:16:00.699 [DEBUG] [Thread-129246] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:00.718 [INFO] [Thread-129246] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:00.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-28T16:16:00.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:01.654 [DEBUG] [Thread-129246] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:01.655 [DEBUG] [Thread-129246] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:01.702 [DEBUG] [Thread-129246] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:01.702 [DEBUG] [Thread-129246] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:01.711 [DEBUG] [Thread-129246] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:01.720 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:01.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')
2025-09-28T16:16:01.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-28T16:16:01.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:01.738 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:01.739 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:01.746 [DEBUG] [Thread-129246] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:11.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:16:11.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:16:11.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-28T16:16:12.295 [DEBUG] [Thread-129248 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:12.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 15, 47), 15.9, 34.31, 0.0, 20.2, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:16:12.354 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:15:47
2025-09-28T16:16:12.463 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:16:12.612 [DEBUG] [Thread-129249] [transport.py] [_log()] starting thread (client mode): 0x2b94ca00
2025-09-28T16:16:12.612 [DEBUG] [Thread-129249] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:12.633 [DEBUG] [Thread-129249] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:16:12.633 [INFO] [Thread-129249] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] Compression: none
2025-09-28T16:16:12.636 [DEBUG] [Thread-129249] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:12.653 [DEBUG] [Thread-129249] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:12.654 [DEBUG] [Thread-129249] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:12.654 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:16:12.655 [DEBUG] [Thread-129249] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:16:12.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:12.657 [DEBUG] [Thread-129249] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:12.657 [DEBUG] [Thread-129249] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:12.657 [DEBUG] [Thread-129249] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:12.657 [DEBUG] [Thread-129249] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:16:12.657 [DEBUG] [Thread-129249] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:12.675 [INFO] [Thread-129249] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:12.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:13.311 [DEBUG] [Thread-129249] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:13.311 [DEBUG] [Thread-129249] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:13.311 [DEBUG] [Thread-129249] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:16:13.352 [DEBUG] [Thread-129249] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:13.352 [DEBUG] [Thread-129249] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:13.355 [DEBUG] [Thread-129249] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:13.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:13.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:16:13.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:16:13.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:16:13.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:13.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:16:13.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:13.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594179 -999.00  +18.20   4.90     38   +3.70 1 1 1 1 1   887    0 15.16 12.56 ----- 4.9 4.9 182.6 16.8 23.2 -27.6 22.5 -26.5 24.1 -26.3 25.1 -26.7
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594179
2025-09-28T16:16:13.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:16:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:16:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:16:13.378 [DEBUG] [Thread-129249] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:13.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:16:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:16:13.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:15:47', tmtdew=15.9, humidity=34.31, cloud=0.0, wind=20.2, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:16:13.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-28T16:16:13.472 [DEBUG] [Thread-129252] [transport.py] [_log()] starting thread (client mode): 0x2e362da0
2025-09-28T16:16:13.472 [DEBUG] [Thread-129252] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:13.486 [DEBUG] [Thread-129252] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:16:13.486 [INFO] [Thread-129252] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:13.494 [DEBUG] [Thread-129252] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:13.495 [DEBUG] [Thread-129252] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:13.495 [DEBUG] [Thread-129252] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:13.495 [DEBUG] [Thread-129252] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:13.495 [DEBUG] [Thread-129252] [transport.py] [_log()] Compression: none
2025-09-28T16:16:13.495 [DEBUG] [Thread-129252] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:13.550 [DEBUG] [Thread-129252] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:13.551 [DEBUG] [Thread-129252] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:13.551 [DEBUG] [Thread-129252] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:16:13.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:16:13.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:13.610 [DEBUG] [Thread-129252] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:13.611 [DEBUG] [Thread-129252] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:13.611 [DEBUG] [Thread-129252] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:13.611 [DEBUG] [Thread-129252] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:16:13.611 [DEBUG] [Thread-129252] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:13.629 [INFO] [Thread-129252] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16: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-28T16:16:13.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:14.558 [DEBUG] [Thread-129252] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:14.558 [DEBUG] [Thread-129252] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:14.609 [DEBUG] [Thread-129252] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:14.609 [DEBUG] [Thread-129252] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:14.621 [DEBUG] [Thread-129252] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:14.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:14.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-28T16:16:14.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-28T16:16:14.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:14.645 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:14.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:14.653 [DEBUG] [Thread-129252] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:18.778 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:18.779 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:20.314 [DEBUG] [Thread-129254 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:24.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:16:24.656 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:16:24.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-28T16:16:25.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 16, 19), 15.95, 34.18, 0.0, 21.35, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:16:25.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:16:19
2025-09-28T16:16:25.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:16:25.522 [DEBUG] [Thread-129255] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-28T16:16:25.522 [DEBUG] [Thread-129255] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:25.541 [DEBUG] [Thread-129255] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:16:25.541 [INFO] [Thread-129255] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:16:25.544 [DEBUG] [Thread-129255] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:25.544 [DEBUG] [Thread-129255] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] Compression: none
2025-09-28T16:16:25.545 [DEBUG] [Thread-129255] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:25.564 [DEBUG] [Thread-129255] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:25.564 [DEBUG] [Thread-129255] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:25.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:16:25.565 [DEBUG] [Thread-129255] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:16:25.566 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:25.567 [DEBUG] [Thread-129255] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:25.568 [DEBUG] [Thread-129255] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:25.568 [DEBUG] [Thread-129255] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:25.568 [DEBUG] [Thread-129255] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:16:25.568 [DEBUG] [Thread-129255] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:25.592 [INFO] [Thread-129255] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:25.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:26.220 [DEBUG] [Thread-129255] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:26.220 [DEBUG] [Thread-129255] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:26.221 [DEBUG] [Thread-129255] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:16:26.261 [DEBUG] [Thread-129255] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:26.262 [DEBUG] [Thread-129255] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:26.265 [DEBUG] [Thread-129255] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:26.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:26.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:16:26.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:16:26.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:16:26.284 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:26.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:16:26.286 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:26.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:26.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:16:26.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594179 -999.00  +18.20   4.90     38   +3.70 1 1 1 1 1   887    0 15.16 12.56 ----- 4.9 4.9 182.6 16.8 23.2 -27.6 22.5 -26.5 24.1 -26.3 25.1 -26.7
2025-09-28T16:16:26.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:16:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:16:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594179
2025-09-28T16:16:26.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:16:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:16:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:16:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:16:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:16:26.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:16:19', tmtdew=15.95, humidity=34.18, cloud=0.0, wind=21.35, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:15:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:16:26.288 [DEBUG] [Thread-129255] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:26.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-28T16:16:26.384 [DEBUG] [Thread-129258] [transport.py] [_log()] starting thread (client mode): 0x2b91d6f0
2025-09-28T16:16:26.384 [DEBUG] [Thread-129258] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:26.398 [DEBUG] [Thread-129258] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:16:26.398 [INFO] [Thread-129258] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:16:26.406 [DEBUG] [Thread-129258] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:26.406 [DEBUG] [Thread-129258] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:16:26.406 [DEBUG] [Thread-129258] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] Compression: none
2025-09-28T16:16:26.407 [DEBUG] [Thread-129258] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:26.462 [DEBUG] [Thread-129258] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:26.463 [DEBUG] [Thread-129258] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:26.463 [DEBUG] [Thread-129258] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:16:26.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:16:26.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:26.518 [DEBUG] [Thread-129258] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:26.519 [DEBUG] [Thread-129258] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:26.519 [DEBUG] [Thread-129258] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:26.519 [DEBUG] [Thread-129258] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:16:26.519 [DEBUG] [Thread-129258] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:26.543 [INFO] [Thread-129258] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:26.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-28T16:16:26.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:27.331 [DEBUG] [Thread-129260 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:27.506 [DEBUG] [Thread-129258] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:27.506 [DEBUG] [Thread-129258] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:27.554 [DEBUG] [Thread-129258] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:27.555 [DEBUG] [Thread-129258] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:27.564 [DEBUG] [Thread-129258] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:27.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16: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')
2025-09-28T16:16:27.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-28T16:16:27.590 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:27.590 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:27.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:27.599 [DEBUG] [Thread-129258] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:37.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:16:37.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:16:37.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-28T16:16:38.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 16, 19), 15.95, 34.18, 0.0, 21.35, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:16:38.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:16:19
2025-09-28T16:16:38.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:16:38.458 [DEBUG] [Thread-129261] [transport.py] [_log()] starting thread (client mode): 0x2b91e5c0
2025-09-28T16:16:38.458 [DEBUG] [Thread-129261] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:38.478 [DEBUG] [Thread-129261] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:16:38.478 [INFO] [Thread-129261] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:16:38.482 [DEBUG] [Thread-129261] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:38.482 [DEBUG] [Thread-129261] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:16:38.482 [DEBUG] [Thread-129261] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:38.482 [DEBUG] [Thread-129261] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:38.482 [DEBUG] [Thread-129261] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:38.483 [DEBUG] [Thread-129261] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:38.484 [DEBUG] [Thread-129261] [transport.py] [_log()] Compression: none
2025-09-28T16:16:38.484 [DEBUG] [Thread-129261] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:38.502 [DEBUG] [Thread-129261] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:38.503 [DEBUG] [Thread-129261] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:38.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:16:38.504 [DEBUG] [Thread-129261] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:16:38.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:38.506 [DEBUG] [Thread-129261] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:38.506 [DEBUG] [Thread-129261] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:38.506 [DEBUG] [Thread-129261] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:38.506 [DEBUG] [Thread-129261] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:16:38.506 [DEBUG] [Thread-129261] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:38.529 [INFO] [Thread-129261] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:38.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:39.173 [DEBUG] [Thread-129261] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:39.173 [DEBUG] [Thread-129261] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:39.173 [DEBUG] [Thread-129261] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:16:39.215 [DEBUG] [Thread-129261] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:39.215 [DEBUG] [Thread-129261] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:39.218 [DEBUG] [Thread-129261] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:39.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:39.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:16:39.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:16:39.235 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:16:39.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:39.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:16:39.242 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:39.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594526 -999.00  +18.30   7.21     37   +3.70 1 1 1 1 1   887    0 14.64 15.01 ----- 7.2 7.2 277.1 18.7 23.1 -28.4 22.5 -26.6 24.3 -27.3 25.1 -28.7
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594526
2025-09-28T16:16:39.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:16:39.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:16:39.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:16:39.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:16:39.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:16:39.244 [DEBUG] [Thread-129261] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:39.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:16:19', tmtdew=15.95, humidity=34.18, cloud=0.0, wind=21.35, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:16:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:16:39.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-28T16:16:39.339 [DEBUG] [Thread-129264] [transport.py] [_log()] starting thread (client mode): 0x2b954d60
2025-09-28T16:16:39.339 [DEBUG] [Thread-129264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:39.354 [DEBUG] [Thread-129264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:16:39.355 [INFO] [Thread-129264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:16:39.362 [DEBUG] [Thread-129264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:39.362 [DEBUG] [Thread-129264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:16:39.362 [DEBUG] [Thread-129264] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] Compression: none
2025-09-28T16:16:39.363 [DEBUG] [Thread-129264] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:39.422 [DEBUG] [Thread-129264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:39.423 [DEBUG] [Thread-129264] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:39.423 [DEBUG] [Thread-129264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:16:39.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:16:39.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:39.478 [DEBUG] [Thread-129264] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:39.478 [DEBUG] [Thread-129264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:39.479 [DEBUG] [Thread-129264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:39.479 [DEBUG] [Thread-129264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:16:39.479 [DEBUG] [Thread-129264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:39.497 [INFO] [Thread-129264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:39.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-28T16:16:39.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:40.414 [DEBUG] [Thread-129264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:40.415 [DEBUG] [Thread-129264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:40.462 [DEBUG] [Thread-129264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:40.463 [DEBUG] [Thread-129264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:40.472 [DEBUG] [Thread-129264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:40.480 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:40.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-28T16:16: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') -> 00000000
2025-09-28T16:16:40.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:40.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:40.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:40.506 [DEBUG] [Thread-129264] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:42.377 [DEBUG] [Thread-129266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:16:50.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:16:50.509 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:16:50.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-28T16:16:51.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 16, 19), 15.95, 34.18, 0.0, 21.35, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:16:51.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:16:19
2025-09-28T16:16:51.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:16:51.361 [DEBUG] [Thread-129267] [transport.py] [_log()] starting thread (client mode): 0x2b955b70
2025-09-28T16:16:51.361 [DEBUG] [Thread-129267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:51.382 [DEBUG] [Thread-129267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:16:51.382 [INFO] [Thread-129267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] Compression: none
2025-09-28T16:16:51.385 [DEBUG] [Thread-129267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:51.404 [DEBUG] [Thread-129267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:51.405 [DEBUG] [Thread-129267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:51.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:16:51.406 [DEBUG] [Thread-129267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:16:51.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:51.407 [DEBUG] [Thread-129267] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:51.408 [DEBUG] [Thread-129267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:51.408 [DEBUG] [Thread-129267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:51.408 [DEBUG] [Thread-129267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:16:51.408 [DEBUG] [Thread-129267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:51.424 [INFO] [Thread-129267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:51.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:52.049 [DEBUG] [Thread-129267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:52.049 [DEBUG] [Thread-129267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:52.049 [DEBUG] [Thread-129267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:16:52.090 [DEBUG] [Thread-129267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:52.090 [DEBUG] [Thread-129267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:52.092 [DEBUG] [Thread-129267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:52.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:52.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:16:52.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:16:52.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:16:52.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:52.111 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:16:52.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:52.111 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:52.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:16:52.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594526 -999.00  +18.30   7.21     37   +3.70 1 1 1 1 1   887    0 14.64 15.01 ----- 7.2 7.2 277.1 18.7 23.1 -28.4 22.5 -26.6 24.3 -27.3 25.1 -28.7
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594526
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:16:52.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:16:19', tmtdew=15.95, humidity=34.18, cloud=0.0, wind=21.35, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:16:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:16:52.113 [DEBUG] [Thread-129267] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:52.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-28T16:16:52.196 [DEBUG] [Thread-129270] [transport.py] [_log()] starting thread (client mode): 0x2b91e140
2025-09-28T16:16:52.196 [DEBUG] [Thread-129270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:16:52.211 [DEBUG] [Thread-129270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:16:52.211 [INFO] [Thread-129270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] client lang: <none>
2025-09-28T16:16:52.218 [DEBUG] [Thread-129270] [transport.py] [_log()] server lang: <none>
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] kex follows: False
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] Compression: none
2025-09-28T16:16:52.219 [DEBUG] [Thread-129270] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:16:52.278 [DEBUG] [Thread-129270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:16:52.278 [DEBUG] [Thread-129270] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:16:52.278 [DEBUG] [Thread-129270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:16:52.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:16:52.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:16:52.334 [DEBUG] [Thread-129270] [transport.py] [_log()] userauth is OK
2025-09-28T16:16:52.334 [DEBUG] [Thread-129270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:16:52.334 [DEBUG] [Thread-129270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:16:52.334 [DEBUG] [Thread-129270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:16:52.334 [DEBUG] [Thread-129270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:16:52.350 [INFO] [Thread-129270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:16:52.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-28T16:16:52.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:16:53.337 [DEBUG] [Thread-129270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:16:53.337 [DEBUG] [Thread-129270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:16:53.385 [DEBUG] [Thread-129270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:16:53.386 [DEBUG] [Thread-129270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:16:53.394 [DEBUG] [Thread-129270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:16:53.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:16:53.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-28T16:16:53.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-28T16:16:53.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:16:53.418 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:16:53.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:16:53.426 [DEBUG] [Thread-129270] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:16:57.419 [DEBUG] [Thread-129272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:03.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:17:03.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:17:03.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-28T16:17:04.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 16, 51), 15.96, 33.86, 0.0, 15.32, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:17:04.026 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:16:51
2025-09-28T16:17:04.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:17:04.284 [DEBUG] [Thread-129273] [transport.py] [_log()] starting thread (client mode): 0x2b94d6f0
2025-09-28T16:17:04.285 [DEBUG] [Thread-129273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:04.305 [DEBUG] [Thread-129273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:17:04.305 [INFO] [Thread-129273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:04.308 [DEBUG] [Thread-129273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:04.309 [DEBUG] [Thread-129273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:04.309 [DEBUG] [Thread-129273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:04.309 [DEBUG] [Thread-129273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:04.309 [DEBUG] [Thread-129273] [transport.py] [_log()] Compression: none
2025-09-28T16:17:04.309 [DEBUG] [Thread-129273] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:04.328 [DEBUG] [Thread-129273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:04.328 [DEBUG] [Thread-129273] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:04.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:17:04.330 [DEBUG] [Thread-129273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:17:04.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:04.331 [DEBUG] [Thread-129273] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:04.332 [DEBUG] [Thread-129273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:04.332 [DEBUG] [Thread-129273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:04.332 [DEBUG] [Thread-129273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:17:04.332 [DEBUG] [Thread-129273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:04.365 [INFO] [Thread-129273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:04.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:05.009 [DEBUG] [Thread-129273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:05.009 [DEBUG] [Thread-129273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:05.009 [DEBUG] [Thread-129273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:17:05.050 [DEBUG] [Thread-129273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:05.050 [DEBUG] [Thread-129273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:05.053 [DEBUG] [Thread-129273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:05.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:05.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:17:05.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:17:05.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:17:05.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:05.077 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:17:05.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594873 -999.00  +18.20   3.67     37   +3.50 1 1 1 1 1   887    0 14.95 19.78 ----- 3.7 3.7 172.5 13.9 23.1 -28.0 22.6 -26.8 24.2 -27.2 25.1 -28.5
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:17:05.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594873
2025-09-28T16:17:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:17:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:17:05.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:17:05.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:17:05.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:17:05.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:16:51', tmtdew=15.96, humidity=33.86, cloud=0.0, wind=15.32, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:16:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:17:05.080 [DEBUG] [Thread-129273] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:05.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-28T16:17:05.175 [DEBUG] [Thread-129276] [transport.py] [_log()] starting thread (client mode): 0x2e34be50
2025-09-28T16:17:05.175 [DEBUG] [Thread-129276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:05.189 [DEBUG] [Thread-129276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:17:05.189 [INFO] [Thread-129276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:17:05.197 [DEBUG] [Thread-129276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:05.197 [DEBUG] [Thread-129276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:17:05.197 [DEBUG] [Thread-129276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] Compression: none
2025-09-28T16:17:05.198 [DEBUG] [Thread-129276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:05.254 [DEBUG] [Thread-129276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:05.255 [DEBUG] [Thread-129276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:05.255 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:17:05.256 [DEBUG] [Thread-129276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:17:05.256 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:05.310 [DEBUG] [Thread-129276] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:05.310 [DEBUG] [Thread-129276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:05.310 [DEBUG] [Thread-129276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:05.311 [DEBUG] [Thread-129276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:17:05.311 [DEBUG] [Thread-129276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:05.329 [INFO] [Thread-129276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:05.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-28T16:17:05.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:06.268 [DEBUG] [Thread-129276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:06.268 [DEBUG] [Thread-129276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:06.316 [DEBUG] [Thread-129276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:06.316 [DEBUG] [Thread-129276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:06.325 [DEBUG] [Thread-129276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:06.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:06.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-28T16:17:06.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') -> 00000000
2025-09-28T16:17:06.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:06.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:06.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:06.361 [DEBUG] [Thread-129276] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:12.445 [DEBUG] [Thread-129278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:16.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:17:16.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:17:16.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-28T16:17:16.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 16, 51), 15.96, 33.86, 0.0, 15.32, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:17:16.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:16:51
2025-09-28T16:17:17.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:17:17.237 [DEBUG] [Thread-129279] [transport.py] [_log()] starting thread (client mode): 0x2e363490
2025-09-28T16:17:17.237 [DEBUG] [Thread-129279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:17.259 [DEBUG] [Thread-129279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:17:17.259 [INFO] [Thread-129279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] Compression: none
2025-09-28T16:17:17.263 [DEBUG] [Thread-129279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:17.283 [DEBUG] [Thread-129279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:17.283 [DEBUG] [Thread-129279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:17.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:17:17.284 [DEBUG] [Thread-129279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:17:17.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:17.286 [DEBUG] [Thread-129279] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:17.286 [DEBUG] [Thread-129279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:17.286 [DEBUG] [Thread-129279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:17.286 [DEBUG] [Thread-129279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:17:17.287 [DEBUG] [Thread-129279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:17.312 [INFO] [Thread-129279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:17.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:17.968 [DEBUG] [Thread-129279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:17.969 [DEBUG] [Thread-129279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:17.969 [DEBUG] [Thread-129279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:17:18.009 [DEBUG] [Thread-129279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:18.009 [DEBUG] [Thread-129279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:18.012 [DEBUG] [Thread-129279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:18.024 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:18.024 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:17:18.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:17:18.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:17:18.031 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:18.032 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:17:18.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594873 -999.00  +18.20   3.67     37   +3.50 1 1 1 1 1   887    0 14.95 19.78 ----- 3.7 3.7 172.5 13.9 23.1 -28.0 22.6 -26.8 24.2 -27.2 25.1 -28.5
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:17:18.033 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594873
2025-09-28T16:17:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:17:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:17:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:17:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:17:18.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:17:18.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:16:51', tmtdew=15.96, humidity=33.86, cloud=0.0, wind=15.32, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:16:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:17:18.035 [DEBUG] [Thread-129279] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:18.118 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:17:18.127 [DEBUG] [Thread-129282] [transport.py] [_log()] starting thread (client mode): 0x2b9b8220
2025-09-28T16:17:18.127 [DEBUG] [Thread-129282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:18.142 [DEBUG] [Thread-129282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:17:18.142 [INFO] [Thread-129282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:17:18.149 [DEBUG] [Thread-129282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:18.149 [DEBUG] [Thread-129282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:18.150 [DEBUG] [Thread-129282] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] Compression: none
2025-09-28T16:17:18.151 [DEBUG] [Thread-129282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:18.205 [DEBUG] [Thread-129282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:18.206 [DEBUG] [Thread-129282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:18.207 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:17:18.207 [DEBUG] [Thread-129282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:17:18.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:18.262 [DEBUG] [Thread-129282] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:18.263 [DEBUG] [Thread-129282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:18.263 [DEBUG] [Thread-129282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:18.263 [DEBUG] [Thread-129282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:17:18.263 [DEBUG] [Thread-129282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:18.281 [INFO] [Thread-129282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:18.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-28T16:17:18.282 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:18.917 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:18.918 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:19.167 [DEBUG] [Thread-129282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:19.167 [DEBUG] [Thread-129282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:19.216 [DEBUG] [Thread-129282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:19.216 [DEBUG] [Thread-129282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:19.225 [DEBUG] [Thread-129282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:19.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:19.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-28T16:17:19.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-28T16:17:19.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:19.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:19.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:19.258 [DEBUG] [Thread-129282] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:20.367 [DEBUG] [Thread-129284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:27.478 [DEBUG] [Thread-129285 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:29.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:17:29.261 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:17:29.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-28T16:17:29.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 17, 23), 15.98, 33.79, 0.0, 13.25, 17.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:17:29.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:17:23
2025-09-28T16:17:29.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:17:30.142 [DEBUG] [Thread-129286] [transport.py] [_log()] starting thread (client mode): 0x2b9547c0
2025-09-28T16:17:30.142 [DEBUG] [Thread-129286] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:30.163 [DEBUG] [Thread-129286] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:17:30.163 [INFO] [Thread-129286] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:30.166 [DEBUG] [Thread-129286] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:30.167 [DEBUG] [Thread-129286] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:30.167 [DEBUG] [Thread-129286] [transport.py] [_log()] Compression: none
2025-09-28T16:17:30.167 [DEBUG] [Thread-129286] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:30.180 [DEBUG] [Thread-129286] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:30.180 [DEBUG] [Thread-129286] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:30.180 [DEBUG] [Thread-129286] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:17:30.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:17:30.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:30.181 [DEBUG] [Thread-129286] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:30.181 [DEBUG] [Thread-129286] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:30.181 [DEBUG] [Thread-129286] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:30.181 [DEBUG] [Thread-129286] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:17:30.181 [DEBUG] [Thread-129286] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:30.197 [INFO] [Thread-129286] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:30.198 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:30.803 [DEBUG] [Thread-129286] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:30.804 [DEBUG] [Thread-129286] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:30.804 [DEBUG] [Thread-129286] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:17:30.845 [DEBUG] [Thread-129286] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:30.845 [DEBUG] [Thread-129286] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:30.848 [DEBUG] [Thread-129286] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:30.859 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:30.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:17:30.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:17:30.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:17:30.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:30.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:17:30.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:30.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.594873 -999.00  +18.20   3.67     37   +3.50 1 1 1 1 1   887    0 14.95 19.78 ----- 3.7 3.7 172.5 13.9 23.1 -28.0 22.6 -26.8 24.2 -27.2 25.1 -28.5
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.594873
2025-09-28T16:17:30.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:17:30.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:17:30.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:17:30.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:17:30.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:17:30.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:17:23', tmtdew=15.98, humidity=33.79, cloud=0.0, wind=13.25, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:16:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:17:30.870 [DEBUG] [Thread-129286] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:30.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-28T16:17:30.966 [DEBUG] [Thread-129289] [transport.py] [_log()] starting thread (client mode): 0x2b94db70
2025-09-28T16:17:30.966 [DEBUG] [Thread-129289] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:30.981 [DEBUG] [Thread-129289] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:17:30.981 [INFO] [Thread-129289] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:30.989 [DEBUG] [Thread-129289] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] Compression: none
2025-09-28T16:17:30.990 [DEBUG] [Thread-129289] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:31.050 [DEBUG] [Thread-129289] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:31.051 [DEBUG] [Thread-129289] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:31.051 [DEBUG] [Thread-129289] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:17:31.051 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:17:31.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:31.110 [DEBUG] [Thread-129289] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:31.110 [DEBUG] [Thread-129289] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:31.110 [DEBUG] [Thread-129289] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:31.110 [DEBUG] [Thread-129289] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:17:31.110 [DEBUG] [Thread-129289] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:31.129 [INFO] [Thread-129289] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:31.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-28T16:17:31.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:32.096 [DEBUG] [Thread-129289] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:32.097 [DEBUG] [Thread-129289] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:32.144 [DEBUG] [Thread-129289] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:32.144 [DEBUG] [Thread-129289] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:32.153 [DEBUG] [Thread-129289] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:32.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:32.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-28T16:17:32.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') -> 00000000
2025-09-28T16:17:32.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:32.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:32.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:32.187 [DEBUG] [Thread-129289] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:42.189 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:17:42.190 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:17:42.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-28T16:17:42.510 [DEBUG] [Thread-129291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:42.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 17, 23), 15.98, 33.79, 0.0, 13.25, 17.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:17:42.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:17:23
2025-09-28T16:17:42.902 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:17:43.050 [DEBUG] [Thread-129292] [transport.py] [_log()] starting thread (client mode): 0x2b91d810
2025-09-28T16:17:43.050 [DEBUG] [Thread-129292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:43.070 [DEBUG] [Thread-129292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:17:43.071 [INFO] [Thread-129292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:43.074 [DEBUG] [Thread-129292] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] Compression: none
2025-09-28T16:17:43.075 [DEBUG] [Thread-129292] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:43.093 [DEBUG] [Thread-129292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:43.094 [DEBUG] [Thread-129292] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:43.095 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:17:43.095 [DEBUG] [Thread-129292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:17:43.096 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:43.097 [DEBUG] [Thread-129292] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:43.098 [DEBUG] [Thread-129292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:43.098 [DEBUG] [Thread-129292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:43.098 [DEBUG] [Thread-129292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:17:43.098 [DEBUG] [Thread-129292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:43.119 [INFO] [Thread-129292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:43.119 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:43.735 [DEBUG] [Thread-129292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:43.736 [DEBUG] [Thread-129292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:43.736 [DEBUG] [Thread-129292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:17:43.776 [DEBUG] [Thread-129292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:43.776 [DEBUG] [Thread-129292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:43.779 [DEBUG] [Thread-129292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:43.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:43.792 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:17:43.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:17:43.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:17:43.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:43.803 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:17:43.803 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:43.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.595220 -999.00  +18.30   6.34     37   +3.60 1 1 1 1 1   887    0 15.08 21.78 ----- 6.3 6.3 249.6 9.4 23.2 -27.4 22.5 -26.7 24.2 -26.9 25.3 -26.8
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.595220
2025-09-28T16:17:43.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:17:43.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:17:43.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:17:43.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:17:43.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:17:43.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:17:23', tmtdew=15.98, humidity=33.79, cloud=0.0, wind=13.25, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:17:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:17:43.805 [DEBUG] [Thread-129292] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:43.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-28T16:17:43.903 [DEBUG] [Thread-129295] [transport.py] [_log()] starting thread (client mode): 0x2e3df640
2025-09-28T16:17:43.903 [DEBUG] [Thread-129295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:43.917 [DEBUG] [Thread-129295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:17:43.918 [INFO] [Thread-129295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:17:43.925 [DEBUG] [Thread-129295] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:43.925 [DEBUG] [Thread-129295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:17:43.925 [DEBUG] [Thread-129295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] Compression: none
2025-09-28T16:17:43.926 [DEBUG] [Thread-129295] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:43.981 [DEBUG] [Thread-129295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:43.982 [DEBUG] [Thread-129295] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:43.982 [DEBUG] [Thread-129295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:17:43.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:17:43.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:44.038 [DEBUG] [Thread-129295] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:44.038 [DEBUG] [Thread-129295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:44.039 [DEBUG] [Thread-129295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:44.039 [DEBUG] [Thread-129295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:17:44.039 [DEBUG] [Thread-129295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:44.063 [INFO] [Thread-129295] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:44.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-28T16:17:44.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:44.962 [DEBUG] [Thread-129295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:44.963 [DEBUG] [Thread-129295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:45.010 [DEBUG] [Thread-129295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:45.010 [DEBUG] [Thread-129295] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:45.020 [DEBUG] [Thread-129295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:45.030 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17: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')
2025-09-28T16:17:45.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-28T16:17:45.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:45.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:45.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:45.057 [DEBUG] [Thread-129295] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:55.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:17:55.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:17:55.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-28T16:17:55.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 17, 23), 15.98, 33.79, 0.0, 13.25, 17.07, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:17:55.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:17:23
2025-09-28T16:17:55.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:17:55.958 [DEBUG] [Thread-129297] [transport.py] [_log()] starting thread (client mode): 0x2e3decb0
2025-09-28T16:17:55.958 [DEBUG] [Thread-129297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:55.978 [DEBUG] [Thread-129297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:17:55.978 [INFO] [Thread-129297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:17:55.981 [DEBUG] [Thread-129297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:55.981 [DEBUG] [Thread-129297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:17:55.981 [DEBUG] [Thread-129297] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] Compression: none
2025-09-28T16:17:55.982 [DEBUG] [Thread-129297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:55.989 [DEBUG] [Thread-129297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:55.989 [DEBUG] [Thread-129297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:55.990 [DEBUG] [Thread-129297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:17:55.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:17:55.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:55.991 [DEBUG] [Thread-129297] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:55.991 [DEBUG] [Thread-129297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:55.991 [DEBUG] [Thread-129297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:55.991 [DEBUG] [Thread-129297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:17:55.991 [DEBUG] [Thread-129297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:56.003 [INFO] [Thread-129297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:56.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:56.633 [DEBUG] [Thread-129297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:56.633 [DEBUG] [Thread-129297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:56.634 [DEBUG] [Thread-129297] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:17:56.674 [DEBUG] [Thread-129297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:56.674 [DEBUG] [Thread-129297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:56.676 [DEBUG] [Thread-129297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:56.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:56.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:17:56.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:17:56.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:17:56.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:56.693 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:17:56.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.595220 -999.00  +18.30   6.34     37   +3.60 1 1 1 1 1   887    0 15.08 21.78 ----- 6.3 6.3 249.6 9.4 23.2 -27.4 22.5 -26.7 24.2 -26.9 25.3 -26.8
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:17:56.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.595220
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:17:56.694 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:17:23', tmtdew=15.98, humidity=33.79, cloud=0.0, wind=13.25, temperature=17.07, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:17:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:17:56.694 [DEBUG] [Thread-129297] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:17:56.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-28T16:17:56.777 [DEBUG] [Thread-129300] [transport.py] [_log()] starting thread (client mode): 0x2e3ddae0
2025-09-28T16:17:56.777 [DEBUG] [Thread-129300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:17:56.791 [DEBUG] [Thread-129300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:17:56.791 [INFO] [Thread-129300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] client lang: <none>
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] server lang: <none>
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] kex follows: False
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] Compression: none
2025-09-28T16:17:56.799 [DEBUG] [Thread-129300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:17:56.856 [DEBUG] [Thread-129300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:17:56.856 [DEBUG] [Thread-129300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:17:56.857 [DEBUG] [Thread-129300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:17:56.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:17:56.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:17:56.914 [DEBUG] [Thread-129300] [transport.py] [_log()] userauth is OK
2025-09-28T16:17:56.914 [DEBUG] [Thread-129300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:17:56.914 [DEBUG] [Thread-129300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:17:56.914 [DEBUG] [Thread-129300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:17:56.914 [DEBUG] [Thread-129300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:17:56.928 [INFO] [Thread-129300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:17:56.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-28T16:17:56.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:17:57.543 [DEBUG] [Thread-129302 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:17:57.866 [DEBUG] [Thread-129300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:17:57.866 [DEBUG] [Thread-129300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:17:57.913 [DEBUG] [Thread-129300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:17:57.913 [DEBUG] [Thread-129300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:17:57.922 [DEBUG] [Thread-129300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:17:57.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:17:57.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-28T16:17:57.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-28T16:17:57.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:17:57.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:17:57.949 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:17:57.957 [DEBUG] [Thread-129300] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:07.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:18:07.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:18:07.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-28T16:18:08.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 17, 55), 16.05, 34.06, 0.0, 14.22, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:18:08.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:17:55
2025-09-28T16:18:08.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:18:08.802 [DEBUG] [Thread-129303] [transport.py] [_log()] starting thread (client mode): 0x2b94dd20
2025-09-28T16:18:08.803 [DEBUG] [Thread-129303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:08.820 [DEBUG] [Thread-129303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:18:08.820 [INFO] [Thread-129303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:18:08.823 [DEBUG] [Thread-129303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:08.823 [DEBUG] [Thread-129303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:18:08.823 [DEBUG] [Thread-129303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] Compression: none
2025-09-28T16:18:08.824 [DEBUG] [Thread-129303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:08.832 [DEBUG] [Thread-129303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:08.832 [DEBUG] [Thread-129303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:08.832 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:18:08.832 [DEBUG] [Thread-129303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:18:08.833 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:08.834 [DEBUG] [Thread-129303] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:08.834 [DEBUG] [Thread-129303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:08.834 [DEBUG] [Thread-129303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:08.834 [DEBUG] [Thread-129303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:18:08.834 [DEBUG] [Thread-129303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:08.851 [INFO] [Thread-129303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:08.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:09.488 [DEBUG] [Thread-129303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:09.488 [DEBUG] [Thread-129303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:09.488 [DEBUG] [Thread-129303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:18:09.530 [DEBUG] [Thread-129303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:09.530 [DEBUG] [Thread-129303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:09.533 [DEBUG] [Thread-129303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:09.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:09.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:18:09.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:18:09.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:18:09.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:09.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:18:09.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.595568 -999.00  +18.40  12.64     37   +3.60 1 1 1 1 1   887    0 15.18 25.12 ----- 12.6 12.6 182.8 15.7 23.3 -27.6 22.7 -26.9 24.3 -25.9 25.2 -28.0
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:18:09.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.595568
2025-09-28T16:18:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:18:09.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:18:09.556 [DEBUG] [Thread-129303] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:18:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:18:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:18:09.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:17:55', tmtdew=16.05, humidity=34.06, cloud=0.0, wind=14.22, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:17:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:18:09.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-28T16:18:09.650 [DEBUG] [Thread-129306] [transport.py] [_log()] starting thread (client mode): 0x2b954ac0
2025-09-28T16:18:09.650 [DEBUG] [Thread-129306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:09.665 [DEBUG] [Thread-129306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:18:09.665 [INFO] [Thread-129306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:18:09.672 [DEBUG] [Thread-129306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] Compression: none
2025-09-28T16:18:09.673 [DEBUG] [Thread-129306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:09.732 [DEBUG] [Thread-129306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:09.732 [DEBUG] [Thread-129306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:09.733 [DEBUG] [Thread-129306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:18:09.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:18:09.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:09.790 [DEBUG] [Thread-129306] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:09.790 [DEBUG] [Thread-129306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:09.791 [DEBUG] [Thread-129306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:09.791 [DEBUG] [Thread-129306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:18:09.791 [DEBUG] [Thread-129306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:09.810 [INFO] [Thread-129306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:09.810 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:18:09.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:10.738 [DEBUG] [Thread-129306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:10.738 [DEBUG] [Thread-129306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:10.786 [DEBUG] [Thread-129306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:10.786 [DEBUG] [Thread-129306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:10.795 [DEBUG] [Thread-129306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:10.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:10.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-28T16:18:10.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-28T16:18:10.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:10.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:10.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:10.829 [DEBUG] [Thread-129306] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:12.589 [DEBUG] [Thread-129308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:19.059 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:19.061 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:20.419 [DEBUG] [Thread-129309 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:20.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:18:20.832 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:18:20.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-28T16:18:21.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 17, 55), 16.05, 34.06, 0.0, 14.22, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:18:21.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:17:55
2025-09-28T16:18:21.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:18:21.684 [DEBUG] [Thread-129310] [transport.py] [_log()] starting thread (client mode): 0x2b957a30
2025-09-28T16:18:21.685 [DEBUG] [Thread-129310] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:21.706 [DEBUG] [Thread-129310] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:18:21.706 [INFO] [Thread-129310] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:21.709 [DEBUG] [Thread-129310] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] Compression: none
2025-09-28T16:18:21.710 [DEBUG] [Thread-129310] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:21.728 [DEBUG] [Thread-129310] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:21.729 [DEBUG] [Thread-129310] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:21.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:18:21.730 [DEBUG] [Thread-129310] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:18:21.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:21.732 [DEBUG] [Thread-129310] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:21.732 [DEBUG] [Thread-129310] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:21.732 [DEBUG] [Thread-129310] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:21.732 [DEBUG] [Thread-129310] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:18:21.733 [DEBUG] [Thread-129310] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:21.753 [INFO] [Thread-129310] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:21.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:22.406 [DEBUG] [Thread-129310] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:22.406 [DEBUG] [Thread-129310] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:22.407 [DEBUG] [Thread-129310] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:18:22.447 [DEBUG] [Thread-129310] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:22.448 [DEBUG] [Thread-129310] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:22.450 [DEBUG] [Thread-129310] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:22.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:22.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:18:22.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:18:22.468 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:18:22.474 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:22.476 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:18:22.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:22.476 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:22.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:18:22.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.595568 -999.00  +18.40  12.64     37   +3.60 1 1 1 1 1   887    0 15.18 25.12 ----- 12.6 12.6 182.8 15.7 23.3 -27.6 22.7 -26.9 24.3 -25.9 25.2 -28.0
2025-09-28T16:18:22.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:18:22.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:18:22.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.595568
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:18:22.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:17:55', tmtdew=16.05, humidity=34.06, cloud=0.0, wind=14.22, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:17:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:18:22.479 [DEBUG] [Thread-129310] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:22.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-28T16:18:22.573 [DEBUG] [Thread-129313] [transport.py] [_log()] starting thread (client mode): 0x2b94d1b0
2025-09-28T16:18:22.573 [DEBUG] [Thread-129313] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:22.587 [DEBUG] [Thread-129313] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:18:22.587 [INFO] [Thread-129313] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:22.594 [DEBUG] [Thread-129313] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] Compression: none
2025-09-28T16:18:22.595 [DEBUG] [Thread-129313] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:22.653 [DEBUG] [Thread-129313] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:22.653 [DEBUG] [Thread-129313] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:22.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:18:22.653 [DEBUG] [Thread-129313] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:18:22.653 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:22.710 [DEBUG] [Thread-129313] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:22.710 [DEBUG] [Thread-129313] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:22.710 [DEBUG] [Thread-129313] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:22.710 [DEBUG] [Thread-129313] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:18:22.710 [DEBUG] [Thread-129313] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:22.729 [INFO] [Thread-129313] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:22.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-28T16:18:22.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:23.634 [DEBUG] [Thread-129313] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:23.634 [DEBUG] [Thread-129313] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:23.682 [DEBUG] [Thread-129313] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:23.682 [DEBUG] [Thread-129313] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:23.690 [DEBUG] [Thread-129313] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:23.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18: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-28T16:18: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-28T16:18:23.714 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:23.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:23.714 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:23.723 [DEBUG] [Thread-129313] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:27.626 [DEBUG] [Thread-129315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:33.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:18:33.716 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:18:33.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-28T16:18:34.306 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 18, 27), 15.88, 34.44, 0.0, 15.46, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:18:34.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:18:27
2025-09-28T16:18:34.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:18:34.562 [DEBUG] [Thread-129316] [transport.py] [_log()] starting thread (client mode): 0x2b956d70
2025-09-28T16:18:34.562 [DEBUG] [Thread-129316] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:34.581 [DEBUG] [Thread-129316] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:18:34.582 [INFO] [Thread-129316] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:34.585 [DEBUG] [Thread-129316] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] Compression: none
2025-09-28T16:18:34.586 [DEBUG] [Thread-129316] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:34.594 [DEBUG] [Thread-129316] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:34.594 [DEBUG] [Thread-129316] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:34.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:18:34.595 [DEBUG] [Thread-129316] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:18:34.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:34.596 [DEBUG] [Thread-129316] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:34.597 [DEBUG] [Thread-129316] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:34.597 [DEBUG] [Thread-129316] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:34.597 [DEBUG] [Thread-129316] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:18:34.597 [DEBUG] [Thread-129316] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:34.617 [INFO] [Thread-129316] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:34.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:35.278 [DEBUG] [Thread-129316] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:35.278 [DEBUG] [Thread-129316] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:35.278 [DEBUG] [Thread-129316] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:18:35.319 [DEBUG] [Thread-129316] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:35.319 [DEBUG] [Thread-129316] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:35.322 [DEBUG] [Thread-129316] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:35.335 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:35.335 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:18:35.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:18:35.339 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:18:35.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:35.345 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:18:35.345 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.595568 -999.00  +18.40  12.64     37   +3.60 1 1 1 1 1   887    0 15.18 25.12 ----- 12.6 12.6 182.8 15.7 23.3 -27.6 22.7 -26.9 24.3 -25.9 25.2 -28.0
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:18:35.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.595568
2025-09-28T16:18:35.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:18:35.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:18:35.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:18:35.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:18:35.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:18:35.348 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:18:27', tmtdew=15.88, humidity=34.44, cloud=0.0, wind=15.46, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:17:37.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:18:35.348 [DEBUG] [Thread-129316] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:35.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-28T16:18:35.444 [DEBUG] [Thread-129319] [transport.py] [_log()] starting thread (client mode): 0x2b94fd00
2025-09-28T16:18:35.444 [DEBUG] [Thread-129319] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:35.459 [DEBUG] [Thread-129319] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:18:35.459 [INFO] [Thread-129319] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:35.467 [DEBUG] [Thread-129319] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:35.468 [DEBUG] [Thread-129319] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:35.469 [DEBUG] [Thread-129319] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:35.469 [DEBUG] [Thread-129319] [transport.py] [_log()] Compression: none
2025-09-28T16:18:35.469 [DEBUG] [Thread-129319] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:35.526 [DEBUG] [Thread-129319] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:35.527 [DEBUG] [Thread-129319] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:35.527 [DEBUG] [Thread-129319] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:18:35.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:18:35.528 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:35.582 [DEBUG] [Thread-129319] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:35.582 [DEBUG] [Thread-129319] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:35.583 [DEBUG] [Thread-129319] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:35.583 [DEBUG] [Thread-129319] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:18:35.583 [DEBUG] [Thread-129319] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:35.602 [INFO] [Thread-129319] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:35.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-28T16:18:35.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:36.543 [DEBUG] [Thread-129319] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:36.543 [DEBUG] [Thread-129319] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:36.591 [DEBUG] [Thread-129319] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:36.591 [DEBUG] [Thread-129319] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:36.600 [DEBUG] [Thread-129319] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:36.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:36.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-28T16:18:36.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-28T16:18:36.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:36.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:36.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:36.635 [DEBUG] [Thread-129319] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:42.654 [DEBUG] [Thread-129321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:46.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:18:46.638 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:18:46.641 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:18:47.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 18, 27), 15.88, 34.44, 0.0, 15.46, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:18:47.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:18:27
2025-09-28T16:18:47.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:18:47.496 [DEBUG] [Thread-129322] [transport.py] [_log()] starting thread (client mode): 0x2e3df1c0
2025-09-28T16:18:47.496 [DEBUG] [Thread-129322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:47.518 [DEBUG] [Thread-129322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:18:47.518 [INFO] [Thread-129322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:47.522 [DEBUG] [Thread-129322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:47.523 [DEBUG] [Thread-129322] [transport.py] [_log()] Compression: none
2025-09-28T16:18:47.524 [DEBUG] [Thread-129322] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:47.543 [DEBUG] [Thread-129322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:47.544 [DEBUG] [Thread-129322] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:47.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:18:47.545 [DEBUG] [Thread-129322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:18:47.546 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:47.547 [DEBUG] [Thread-129322] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:47.547 [DEBUG] [Thread-129322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:47.548 [DEBUG] [Thread-129322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:47.548 [DEBUG] [Thread-129322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:18:47.548 [DEBUG] [Thread-129322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:47.572 [INFO] [Thread-129322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:47.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:48.188 [DEBUG] [Thread-129322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:48.189 [DEBUG] [Thread-129322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:48.189 [DEBUG] [Thread-129322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:18:48.229 [DEBUG] [Thread-129322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:48.229 [DEBUG] [Thread-129322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:48.232 [DEBUG] [Thread-129322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:48.245 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:48.245 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:18:48.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:18:48.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:18:48.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:48.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:18:48.257 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:48.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:48.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:18:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596262 -999.00  +18.20   8.15     37   +3.60 1 1 1 1 1   887    0 15.25 23.20 ----- 8.2 8.2 201.4 17.8 23.1 -28.3 22.6 -27.4 24.3 -27.4 25.2 -29.6
2025-09-28T16:18:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:18:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:18:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596262
2025-09-28T16:18:48.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:18:48.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:18:48.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:18:48.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:18:48.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:18:48.259 [DEBUG] [Thread-129322] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:48.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:18:27', tmtdew=15.88, humidity=34.44, cloud=0.0, wind=15.46, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:18:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:18:48.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-28T16:18:48.352 [DEBUG] [Thread-129325] [transport.py] [_log()] starting thread (client mode): 0x2b91c7c0
2025-09-28T16:18:48.352 [DEBUG] [Thread-129325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:18:48.367 [DEBUG] [Thread-129325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:18:48.367 [INFO] [Thread-129325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:18:48.375 [DEBUG] [Thread-129325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] client lang: <none>
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] server lang: <none>
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] kex follows: False
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:18:48.376 [DEBUG] [Thread-129325] [transport.py] [_log()] Compression: none
2025-09-28T16:18:48.377 [DEBUG] [Thread-129325] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:18:48.435 [DEBUG] [Thread-129325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:18:48.435 [DEBUG] [Thread-129325] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:18:48.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:18:48.437 [DEBUG] [Thread-129325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:18:48.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:18:48.490 [DEBUG] [Thread-129325] [transport.py] [_log()] userauth is OK
2025-09-28T16:18:48.490 [DEBUG] [Thread-129325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:18:48.490 [DEBUG] [Thread-129325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:18:48.491 [DEBUG] [Thread-129325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:18:48.491 [DEBUG] [Thread-129325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:18:48.515 [INFO] [Thread-129325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:18:48.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-28T16:18:48.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:18:49.594 [DEBUG] [Thread-129325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:18:49.594 [DEBUG] [Thread-129325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:18:49.642 [DEBUG] [Thread-129325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:18:49.642 [DEBUG] [Thread-129325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:18:49.651 [DEBUG] [Thread-129325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:18:49.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:18:49.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-28T16:18:49.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') -> 00000000
2025-09-28T16:18:49.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:18:49.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:18:49.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:18:49.685 [DEBUG] [Thread-129325] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:18:57.697 [DEBUG] [Thread-129327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:18:59.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:18:59.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:18:59.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-28T16:19:00.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 18, 27), 15.88, 34.44, 0.0, 15.46, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:19:00.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:18:27
2025-09-28T16:19:00.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:19:00.597 [DEBUG] [Thread-129328] [transport.py] [_log()] starting thread (client mode): 0x2b91eb30
2025-09-28T16:19:00.597 [DEBUG] [Thread-129328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:00.617 [DEBUG] [Thread-129328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:19:00.617 [INFO] [Thread-129328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:00.620 [DEBUG] [Thread-129328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:00.621 [DEBUG] [Thread-129328] [transport.py] [_log()] Compression: none
2025-09-28T16:19:00.621 [DEBUG] [Thread-129328] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:00.636 [DEBUG] [Thread-129328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:00.636 [DEBUG] [Thread-129328] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:00.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:19:00.636 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:19:00.637 [DEBUG] [Thread-129328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:00.647 [INFO] [Thread-129328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:00.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:01.296 [DEBUG] [Thread-129328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:01.296 [DEBUG] [Thread-129328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:01.297 [DEBUG] [Thread-129328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:19:01.337 [DEBUG] [Thread-129328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:01.337 [DEBUG] [Thread-129328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:01.339 [DEBUG] [Thread-129328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:01.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:01.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:19:01.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:19:01.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:19:01.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:01.356 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:19:01.356 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596262 -999.00  +18.20   8.15     37   +3.60 1 1 1 1 1   887    0 15.25 23.20 ----- 8.2 8.2 201.4 17.8 23.1 -28.3 22.6 -27.4 24.3 -27.4 25.2 -29.6
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596262
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:19:01.356 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:18:27', tmtdew=15.88, humidity=34.44, cloud=0.0, wind=15.46, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:18:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:19:01.357 [DEBUG] [Thread-129328] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:01.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-28T16:19:01.439 [DEBUG] [Thread-129331] [transport.py] [_log()] starting thread (client mode): 0x2b956890
2025-09-28T16:19:01.440 [DEBUG] [Thread-129331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:01.453 [DEBUG] [Thread-129331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:19:01.453 [INFO] [Thread-129331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:01.461 [DEBUG] [Thread-129331] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] Compression: none
2025-09-28T16:19:01.462 [DEBUG] [Thread-129331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:01.518 [DEBUG] [Thread-129331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:01.519 [DEBUG] [Thread-129331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:01.520 [DEBUG] [Thread-129331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:19:01.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:19:01.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:01.574 [DEBUG] [Thread-129331] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:01.574 [DEBUG] [Thread-129331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:01.575 [DEBUG] [Thread-129331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:01.575 [DEBUG] [Thread-129331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:19:01.575 [DEBUG] [Thread-129331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:01.597 [INFO] [Thread-129331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:01.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-28T16:19:01.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:02.582 [DEBUG] [Thread-129331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:02.582 [DEBUG] [Thread-129331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:02.632 [DEBUG] [Thread-129331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:02.632 [DEBUG] [Thread-129331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:02.641 [DEBUG] [Thread-129331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:02.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:02.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-28T16:19:02.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-28T16:19:02.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:02.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:02.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:02.675 [DEBUG] [Thread-129331] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:12.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:19:12.678 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:19:12.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-28T16:19:12.734 [DEBUG] [Thread-129333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:13.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 18, 58), 15.95, 33.89, 0.0, 13.09, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:19:13.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:18:58
2025-09-28T16:19:13.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:19:13.538 [DEBUG] [Thread-129334] [transport.py] [_log()] starting thread (client mode): 0x2b96eb90
2025-09-28T16:19:13.538 [DEBUG] [Thread-129334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:13.556 [DEBUG] [Thread-129334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:19:13.556 [INFO] [Thread-129334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] Compression: none
2025-09-28T16:19:13.558 [DEBUG] [Thread-129334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:13.573 [DEBUG] [Thread-129334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:13.574 [DEBUG] [Thread-129334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:13.574 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:19:13.575 [DEBUG] [Thread-129334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:19:13.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:13.576 [DEBUG] [Thread-129334] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:13.577 [DEBUG] [Thread-129334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:13.577 [DEBUG] [Thread-129334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:13.577 [DEBUG] [Thread-129334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:19:13.577 [DEBUG] [Thread-129334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:13.590 [INFO] [Thread-129334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:13.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:14.170 [DEBUG] [Thread-129334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:14.171 [DEBUG] [Thread-129334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:14.171 [DEBUG] [Thread-129334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:19:14.211 [DEBUG] [Thread-129334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:14.211 [DEBUG] [Thread-129334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:14.213 [DEBUG] [Thread-129334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:14.226 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:14.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:19:14.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:19:14.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:19:14.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:14.234 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:19:14.234 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596609 -999.00  +18.20  10.56     38   +3.60 1 1 1 1 1   887    0 15.18 20.66 ----- 10.6 10.6 206.6 16.5 23.2 -27.7 22.6 -26.8 24.3 -28.3 25.2 -28.8
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:19:14.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596609
2025-09-28T16:19:14.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:19:14.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:19:14.236 [DEBUG] [Thread-129334] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:14.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:19:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:19:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:19:14.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:18:58', tmtdew=15.95, humidity=33.89, cloud=0.0, wind=13.09, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:19:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:19:14.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-28T16:19:14.329 [DEBUG] [Thread-129337] [transport.py] [_log()] starting thread (client mode): 0x2b94fc40
2025-09-28T16:19:14.329 [DEBUG] [Thread-129337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:14.344 [DEBUG] [Thread-129337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:19:14.344 [INFO] [Thread-129337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:14.352 [DEBUG] [Thread-129337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:14.353 [DEBUG] [Thread-129337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:14.353 [DEBUG] [Thread-129337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:14.353 [DEBUG] [Thread-129337] [transport.py] [_log()] Compression: none
2025-09-28T16:19:14.353 [DEBUG] [Thread-129337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:14.410 [DEBUG] [Thread-129337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:14.410 [DEBUG] [Thread-129337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:14.411 [DEBUG] [Thread-129337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:19:14.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:19:14.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:14.467 [DEBUG] [Thread-129337] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:14.467 [DEBUG] [Thread-129337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:14.467 [DEBUG] [Thread-129337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:14.467 [DEBUG] [Thread-129337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:19:14.467 [DEBUG] [Thread-129337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:14.486 [INFO] [Thread-129337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:14.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-28T16:19:14.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:15.445 [DEBUG] [Thread-129337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:15.446 [DEBUG] [Thread-129337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:15.493 [DEBUG] [Thread-129337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:15.493 [DEBUG] [Thread-129337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:15.502 [DEBUG] [Thread-129337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:15.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:15.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-28T16:19:15.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-28T16:19:15.529 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:15.529 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:15.529 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:15.537 [DEBUG] [Thread-129337] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:19.202 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:19.203 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:20.453 [DEBUG] [Thread-129339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:25.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:19:25.540 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:19:25.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-28T16:19:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 18, 58), 15.95, 33.89, 0.0, 13.09, 17.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:19:26.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:18:58
2025-09-28T16:19:26.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:19:26.387 [DEBUG] [Thread-129340] [transport.py] [_log()] starting thread (client mode): 0x2b91d3c0
2025-09-28T16:19:26.387 [DEBUG] [Thread-129340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:26.412 [DEBUG] [Thread-129340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:19:26.412 [INFO] [Thread-129340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:19:26.415 [DEBUG] [Thread-129340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:26.416 [DEBUG] [Thread-129340] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] Compression: none
2025-09-28T16:19:26.417 [DEBUG] [Thread-129340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:26.434 [DEBUG] [Thread-129340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:26.434 [DEBUG] [Thread-129340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:26.435 [DEBUG] [Thread-129340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:19:26.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:19:26.436 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:26.437 [DEBUG] [Thread-129340] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:26.437 [DEBUG] [Thread-129340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:26.437 [DEBUG] [Thread-129340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:26.437 [DEBUG] [Thread-129340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:19:26.437 [DEBUG] [Thread-129340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:26.461 [INFO] [Thread-129340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:26.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:27.104 [DEBUG] [Thread-129340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:27.104 [DEBUG] [Thread-129340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:27.105 [DEBUG] [Thread-129340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:19:27.145 [DEBUG] [Thread-129340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:27.145 [DEBUG] [Thread-129340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:27.147 [DEBUG] [Thread-129340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:27.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:27.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:19:27.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:19:27.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:19:27.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:27.170 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:19:27.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:27.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:27.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:19:27.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596609 -999.00  +18.20  10.56     38   +3.60 1 1 1 1 1   887    0 15.18 20.66 ----- 10.6 10.6 206.6 16.5 23.2 -27.7 22.6 -26.8 24.3 -28.3 25.2 -28.8
2025-09-28T16:19:27.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:19:27.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:19:27.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596609
2025-09-28T16:19:27.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:19:27.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:19:27.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:19:27.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:19:27.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:19:27.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:18:58', tmtdew=15.95, humidity=33.89, cloud=0.0, wind=13.09, temperature=17.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:19:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:19:27.172 [DEBUG] [Thread-129340] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:27.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-28T16:19:27.270 [DEBUG] [Thread-129343] [transport.py] [_log()] starting thread (client mode): 0x2e3df640
2025-09-28T16:19:27.270 [DEBUG] [Thread-129343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:27.287 [DEBUG] [Thread-129343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:19:27.287 [INFO] [Thread-129343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:27.295 [DEBUG] [Thread-129343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:27.296 [DEBUG] [Thread-129343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:27.297 [DEBUG] [Thread-129343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:27.297 [DEBUG] [Thread-129343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:27.297 [DEBUG] [Thread-129343] [transport.py] [_log()] Compression: none
2025-09-28T16:19:27.297 [DEBUG] [Thread-129343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:27.355 [DEBUG] [Thread-129343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:27.355 [DEBUG] [Thread-129343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:27.356 [DEBUG] [Thread-129343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:19:27.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:19:27.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:27.410 [DEBUG] [Thread-129343] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:27.410 [DEBUG] [Thread-129343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:27.410 [DEBUG] [Thread-129343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:27.410 [DEBUG] [Thread-129343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:19:27.410 [DEBUG] [Thread-129343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:27.429 [INFO] [Thread-129343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:27.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-28T16:19:27.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:27.761 [DEBUG] [Thread-129345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:28.393 [DEBUG] [Thread-129343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:28.393 [DEBUG] [Thread-129343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:28.441 [DEBUG] [Thread-129343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:28.441 [DEBUG] [Thread-129343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:28.450 [DEBUG] [Thread-129343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:28.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:28.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-28T16:19:28.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-28T16:19:28.475 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:28.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:28.476 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:28.483 [DEBUG] [Thread-129343] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:38.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:19:38.486 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:19:38.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-28T16:19:39.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 19, 30), 16.13, 33.52, 0.0, 14.95, 17.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:19:39.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:19:30
2025-09-28T16:19:39.190 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:19:39.340 [DEBUG] [Thread-129346] [transport.py] [_log()] starting thread (client mode): 0x2b94db70
2025-09-28T16:19:39.340 [DEBUG] [Thread-129346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:39.359 [DEBUG] [Thread-129346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:19:39.359 [INFO] [Thread-129346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] Compression: none
2025-09-28T16:19:39.363 [DEBUG] [Thread-129346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:39.378 [DEBUG] [Thread-129346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:39.378 [DEBUG] [Thread-129346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:39.378 [DEBUG] [Thread-129346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:19:39.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:19:39.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:39.379 [DEBUG] [Thread-129346] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:39.379 [DEBUG] [Thread-129346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:39.379 [DEBUG] [Thread-129346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:39.379 [DEBUG] [Thread-129346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:19:39.379 [DEBUG] [Thread-129346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:39.399 [INFO] [Thread-129346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:39.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:40.027 [DEBUG] [Thread-129346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:40.027 [DEBUG] [Thread-129346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:40.027 [DEBUG] [Thread-129346] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:19:40.068 [DEBUG] [Thread-129346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:40.068 [DEBUG] [Thread-129346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:40.071 [DEBUG] [Thread-129346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:40.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:40.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:19:40.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:19:40.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:19:40.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:40.095 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:19:40.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:40.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596609 -999.00  +18.20  10.56     38   +3.60 1 1 1 1 1   887    0 15.18 20.66 ----- 10.6 10.6 206.6 16.5 23.2 -27.7 22.6 -26.8 24.3 -28.3 25.2 -28.8
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596609
2025-09-28T16:19:40.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:19:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:19:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:19:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:19:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:19:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:19:30', tmtdew=16.13, humidity=33.52, cloud=0.0, wind=14.95, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:19:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:19:40.097 [DEBUG] [Thread-129346] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:40.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-28T16:19:40.195 [DEBUG] [Thread-129349] [transport.py] [_log()] starting thread (client mode): 0x2b9bbfa0
2025-09-28T16:19:40.195 [DEBUG] [Thread-129349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:40.209 [DEBUG] [Thread-129349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:19:40.210 [INFO] [Thread-129349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:19:40.217 [DEBUG] [Thread-129349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:40.217 [DEBUG] [Thread-129349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] Compression: none
2025-09-28T16:19:40.218 [DEBUG] [Thread-129349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:40.278 [DEBUG] [Thread-129349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:40.279 [DEBUG] [Thread-129349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:40.279 [DEBUG] [Thread-129349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:19:40.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:19:40.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:40.334 [DEBUG] [Thread-129349] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:40.334 [DEBUG] [Thread-129349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:40.334 [DEBUG] [Thread-129349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:40.335 [DEBUG] [Thread-129349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:19:40.335 [DEBUG] [Thread-129349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:40.354 [INFO] [Thread-129349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:40.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-28T16:19:40.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:41.284 [DEBUG] [Thread-129349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:41.284 [DEBUG] [Thread-129349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:41.332 [DEBUG] [Thread-129349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:41.332 [DEBUG] [Thread-129349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:41.341 [DEBUG] [Thread-129349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:41.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:41.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')
2025-09-28T16:19:41.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-28T16:19:41.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:41.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:41.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:41.377 [DEBUG] [Thread-129349] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:42.807 [DEBUG] [Thread-129351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:19:51.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:19:51.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:19:51.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-28T16:19:51.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 19, 30), 16.13, 33.52, 0.0, 14.95, 17.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:19:51.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:19:30
2025-09-28T16:19:52.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:19:52.217 [DEBUG] [Thread-129352] [transport.py] [_log()] starting thread (client mode): 0x2b9b9060
2025-09-28T16:19:52.218 [DEBUG] [Thread-129352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:52.237 [DEBUG] [Thread-129352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:19:52.237 [INFO] [Thread-129352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:52.241 [DEBUG] [Thread-129352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:52.242 [DEBUG] [Thread-129352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:52.242 [DEBUG] [Thread-129352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:52.242 [DEBUG] [Thread-129352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:52.242 [DEBUG] [Thread-129352] [transport.py] [_log()] Compression: none
2025-09-28T16:19:52.242 [DEBUG] [Thread-129352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:52.259 [DEBUG] [Thread-129352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:52.259 [DEBUG] [Thread-129352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:52.260 [DEBUG] [Thread-129352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:19:52.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:19:52.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:52.262 [DEBUG] [Thread-129352] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:52.262 [DEBUG] [Thread-129352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:52.263 [DEBUG] [Thread-129352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:52.263 [DEBUG] [Thread-129352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:19:52.263 [DEBUG] [Thread-129352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:52.287 [INFO] [Thread-129352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:52.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:52.916 [DEBUG] [Thread-129352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:52.916 [DEBUG] [Thread-129352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:52.917 [DEBUG] [Thread-129352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:19:52.957 [DEBUG] [Thread-129352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:52.958 [DEBUG] [Thread-129352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:52.961 [DEBUG] [Thread-129352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:52.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:52.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:19:52.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:19:52.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:19:52.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:52.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:19:52.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:52.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:19:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596957 -999.00  +18.40   8.69     37   +3.70 1 1 1 1 1   887    0 14.94 19.54 ----- 8.7 8.7 233.6 17.1 23.2 -29.2 22.6 -27.7 24.3 -27.2 25.2 -28.4
2025-09-28T16:19:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:19:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:19:52.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596957
2025-09-28T16:19:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:19:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:19:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:19:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:19:52.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:19:52.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:19:30', tmtdew=16.13, humidity=33.52, cloud=0.0, wind=14.95, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:19:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:19:52.987 [DEBUG] [Thread-129352] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:53.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-28T16:19:53.079 [DEBUG] [Thread-129355] [transport.py] [_log()] starting thread (client mode): 0x2b955ab0
2025-09-28T16:19:53.080 [DEBUG] [Thread-129355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:19:53.097 [DEBUG] [Thread-129355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:19:53.097 [INFO] [Thread-129355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:19:53.104 [DEBUG] [Thread-129355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:19:53.104 [DEBUG] [Thread-129355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] client lang: <none>
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] server lang: <none>
2025-09-28T16:19:53.105 [DEBUG] [Thread-129355] [transport.py] [_log()] kex follows: False
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] Compression: none
2025-09-28T16:19:53.106 [DEBUG] [Thread-129355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:19:53.162 [DEBUG] [Thread-129355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:19:53.162 [DEBUG] [Thread-129355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:19:53.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:19:53.163 [DEBUG] [Thread-129355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:19:53.164 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:19:53.218 [DEBUG] [Thread-129355] [transport.py] [_log()] userauth is OK
2025-09-28T16:19:53.218 [DEBUG] [Thread-129355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:19:53.219 [DEBUG] [Thread-129355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:19:53.219 [DEBUG] [Thread-129355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:19:53.219 [DEBUG] [Thread-129355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:19:53.237 [INFO] [Thread-129355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:19:53.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-28T16:19:53.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:19:54.170 [DEBUG] [Thread-129355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:19:54.170 [DEBUG] [Thread-129355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:19:54.218 [DEBUG] [Thread-129355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:19:54.218 [DEBUG] [Thread-129355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:19:54.227 [DEBUG] [Thread-129355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:19:54.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:19:54.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-28T16:19:54.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-28T16:19:54.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:19:54.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:19:54.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:19:54.262 [DEBUG] [Thread-129355] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:19:57.850 [DEBUG] [Thread-129357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:04.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:20:04.264 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:20:04.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-28T16:20:04.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 19, 30), 16.13, 33.52, 0.0, 14.95, 17.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:20:04.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:19:30
2025-09-28T16:20:04.989 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:20:05.135 [DEBUG] [Thread-129358] [transport.py] [_log()] starting thread (client mode): 0x2b9b84c0
2025-09-28T16:20:05.135 [DEBUG] [Thread-129358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:05.155 [DEBUG] [Thread-129358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:20:05.155 [INFO] [Thread-129358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:20:05.159 [DEBUG] [Thread-129358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:05.159 [DEBUG] [Thread-129358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:20:05.159 [DEBUG] [Thread-129358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:05.159 [DEBUG] [Thread-129358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:05.160 [DEBUG] [Thread-129358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:05.161 [DEBUG] [Thread-129358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:05.161 [DEBUG] [Thread-129358] [transport.py] [_log()] Compression: none
2025-09-28T16:20:05.161 [DEBUG] [Thread-129358] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:05.180 [DEBUG] [Thread-129358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:05.180 [DEBUG] [Thread-129358] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:05.181 [DEBUG] [Thread-129358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:20:05.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:20:05.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:05.183 [DEBUG] [Thread-129358] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:05.183 [DEBUG] [Thread-129358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:05.183 [DEBUG] [Thread-129358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:05.183 [DEBUG] [Thread-129358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:20:05.183 [DEBUG] [Thread-129358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:05.207 [INFO] [Thread-129358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:05.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:12.893 [DEBUG] [Thread-129360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:13.440 [DEBUG] [Thread-129358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:13.440 [DEBUG] [Thread-129358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:13.441 [DEBUG] [Thread-129358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:20:13.481 [DEBUG] [Thread-129358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:13.481 [DEBUG] [Thread-129358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:13.483 [DEBUG] [Thread-129358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:13.623 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:13.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:20:13.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:20:13.627 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:20:13.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:13.794 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:20:13.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.596957 -999.00  +18.40   8.69     37   +3.70 1 1 1 1 1   887    0 14.94 19.54 ----- 8.7 8.7 233.6 17.1 23.2 -29.2 22.6 -27.7 24.3 -27.2 25.2 -28.4
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:20:13.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.596957
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:20:13.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:19:30', tmtdew=16.13, humidity=33.52, cloud=0.0, wind=14.95, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:19:37.085', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:20:13.796 [DEBUG] [Thread-129358] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:13.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-28T16:20:13.879 [DEBUG] [Thread-129362] [transport.py] [_log()] starting thread (client mode): 0x2b9b89a0
2025-09-28T16:20:13.880 [DEBUG] [Thread-129362] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:13.898 [DEBUG] [Thread-129362] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:20:13.898 [INFO] [Thread-129362] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:20:13.905 [DEBUG] [Thread-129362] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:13.906 [DEBUG] [Thread-129362] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:13.907 [DEBUG] [Thread-129362] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:13.908 [DEBUG] [Thread-129362] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:13.908 [DEBUG] [Thread-129362] [transport.py] [_log()] Compression: none
2025-09-28T16:20:13.908 [DEBUG] [Thread-129362] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:13.962 [DEBUG] [Thread-129362] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:13.962 [DEBUG] [Thread-129362] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:13.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:20:13.963 [DEBUG] [Thread-129362] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:20:13.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:14.020 [DEBUG] [Thread-129362] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:14.021 [DEBUG] [Thread-129362] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:14.021 [DEBUG] [Thread-129362] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:14.021 [DEBUG] [Thread-129362] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:20:14.021 [DEBUG] [Thread-129362] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:14.041 [INFO] [Thread-129362] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:14.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-28T16:20:14.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:15.001 [DEBUG] [Thread-129362] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:15.001 [DEBUG] [Thread-129362] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:15.049 [DEBUG] [Thread-129362] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:15.049 [DEBUG] [Thread-129362] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:15.058 [DEBUG] [Thread-129362] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:15.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:15.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')
2025-09-28T16:20:15.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-28T16:20:15.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:15.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:15.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:15.093 [DEBUG] [Thread-129362] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:19.345 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:19.346 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:20.500 [DEBUG] [Thread-129364 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:25.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:20:25.094 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:20:25.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-28T16:20:25.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 20, 2), 16.08, 33.66, 0.0, 15.02, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:20:25.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:20:02
2025-09-28T16:20:25.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:20:25.931 [DEBUG] [Thread-129365] [transport.py] [_log()] starting thread (client mode): 0x2b94d1b0
2025-09-28T16:20:25.932 [DEBUG] [Thread-129365] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:25.952 [DEBUG] [Thread-129365] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:20:25.953 [INFO] [Thread-129365] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:20:25.956 [DEBUG] [Thread-129365] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:25.956 [DEBUG] [Thread-129365] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:20:25.956 [DEBUG] [Thread-129365] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] Compression: none
2025-09-28T16:20:25.957 [DEBUG] [Thread-129365] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:25.974 [DEBUG] [Thread-129365] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:25.974 [DEBUG] [Thread-129365] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:25.975 [DEBUG] [Thread-129365] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:20:25.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:20:25.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:25.976 [DEBUG] [Thread-129365] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:25.977 [DEBUG] [Thread-129365] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:25.977 [DEBUG] [Thread-129365] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:25.977 [DEBUG] [Thread-129365] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:20:25.977 [DEBUG] [Thread-129365] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:26.000 [INFO] [Thread-129365] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:26.000 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:26.621 [DEBUG] [Thread-129365] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:26.621 [DEBUG] [Thread-129365] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:26.622 [DEBUG] [Thread-129365] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:20:26.662 [DEBUG] [Thread-129365] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:26.662 [DEBUG] [Thread-129365] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:26.665 [DEBUG] [Thread-129365] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:26.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:26.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:20:26.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:20:26.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:20:26.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:26.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:20:26.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:26.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597303 -999.00  +18.20  12.51     37   +3.50 1 1 1 1 1   887    0 14.88 17.99 ----- 12.5 12.5 235.4 17.9 23.0 -30.0 22.6 -26.9 24.2 -27.6 25.0 -30.3
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597303
2025-09-28T16:20:26.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:20:26.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:20:26.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:20:26.684 [DEBUG] [Thread-129365] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:26.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:20:26.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:20:26.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:20:02', tmtdew=16.08, humidity=33.66, cloud=0.0, wind=15.02, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:20:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:20:26.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-28T16:20:26.779 [DEBUG] [Thread-129368] [transport.py] [_log()] starting thread (client mode): 0x2b9ba980
2025-09-28T16:20:26.779 [DEBUG] [Thread-129368] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:26.793 [DEBUG] [Thread-129368] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:20:26.794 [INFO] [Thread-129368] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:20:26.801 [DEBUG] [Thread-129368] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:26.801 [DEBUG] [Thread-129368] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] Compression: none
2025-09-28T16:20:26.802 [DEBUG] [Thread-129368] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:26.858 [DEBUG] [Thread-129368] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:26.858 [DEBUG] [Thread-129368] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:26.859 [DEBUG] [Thread-129368] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:20:26.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:20:26.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:26.914 [DEBUG] [Thread-129368] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:26.914 [DEBUG] [Thread-129368] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:26.914 [DEBUG] [Thread-129368] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:26.914 [DEBUG] [Thread-129368] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:20:26.915 [DEBUG] [Thread-129368] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:26.933 [INFO] [Thread-129368] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:26.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-28T16:20:26.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:27.876 [DEBUG] [Thread-129368] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:27.876 [DEBUG] [Thread-129368] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:27.924 [DEBUG] [Thread-129368] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:27.924 [DEBUG] [Thread-129368] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:27.926 [DEBUG] [Thread-129370 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:27.934 [DEBUG] [Thread-129368] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:27.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:27.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-28T16:20:27.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-28T16:20:27.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:27.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:27.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:27.967 [DEBUG] [Thread-129368] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:37.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:20:37.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:20:37.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-28T16:20:38.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 20, 34), 16.03, 33.96, 0.0, 16.37, 17.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:20:38.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:20:34
2025-09-28T16:20:38.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:20:38.813 [DEBUG] [Thread-129371] [transport.py] [_log()] starting thread (client mode): 0x2b955ab0
2025-09-28T16:20:38.813 [DEBUG] [Thread-129371] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:38.833 [DEBUG] [Thread-129371] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:20:38.833 [INFO] [Thread-129371] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:38.835 [DEBUG] [Thread-129371] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] Compression: none
2025-09-28T16:20:38.836 [DEBUG] [Thread-129371] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:38.844 [DEBUG] [Thread-129371] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:38.845 [DEBUG] [Thread-129371] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:38.845 [DEBUG] [Thread-129371] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:20:38.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:20:38.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:38.847 [DEBUG] [Thread-129371] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:38.847 [DEBUG] [Thread-129371] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:38.847 [DEBUG] [Thread-129371] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:38.848 [DEBUG] [Thread-129371] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:20:38.848 [DEBUG] [Thread-129371] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:38.865 [INFO] [Thread-129371] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:38.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:40.690 [DEBUG] [Thread-129371] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:40.691 [DEBUG] [Thread-129371] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:40.691 [DEBUG] [Thread-129371] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:20:40.731 [DEBUG] [Thread-129371] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:40.731 [DEBUG] [Thread-129371] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:40.734 [DEBUG] [Thread-129371] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:40.747 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:40.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:20:40.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:20:40.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:20:40.757 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:40.759 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:20:40.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:40.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597303 -999.00  +18.20  12.51     37   +3.50 1 1 1 1 1   887    0 14.88 17.99 ----- 12.5 12.5 235.4 17.9 23.0 -30.0 22.6 -26.9 24.2 -27.6 25.0 -30.3
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597303
2025-09-28T16:20:40.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:20:40.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:20:40.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:20:40.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:20:40.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:20:40.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:20:34', tmtdew=16.03, humidity=33.96, cloud=0.0, wind=16.37, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:20:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:20:40.761 [DEBUG] [Thread-129371] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:40.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-28T16:20:40.858 [DEBUG] [Thread-129374] [transport.py] [_log()] starting thread (client mode): 0x2b92b7c0
2025-09-28T16:20:40.858 [DEBUG] [Thread-129374] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:40.875 [DEBUG] [Thread-129374] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:20:40.875 [INFO] [Thread-129374] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:20:40.883 [DEBUG] [Thread-129374] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:40.883 [DEBUG] [Thread-129374] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:40.884 [DEBUG] [Thread-129374] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] Compression: none
2025-09-28T16:20:40.885 [DEBUG] [Thread-129374] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:40.942 [DEBUG] [Thread-129374] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:40.942 [DEBUG] [Thread-129374] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:40.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:20:40.943 [DEBUG] [Thread-129374] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:20:40.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:40.998 [DEBUG] [Thread-129374] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:40.999 [DEBUG] [Thread-129374] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:40.999 [DEBUG] [Thread-129374] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:40.999 [DEBUG] [Thread-129374] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:20:40.999 [DEBUG] [Thread-129374] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:41.018 [INFO] [Thread-129374] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:41.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-28T16:20:41.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:41.942 [DEBUG] [Thread-129374] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:41.942 [DEBUG] [Thread-129374] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:41.990 [DEBUG] [Thread-129374] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:41.990 [DEBUG] [Thread-129374] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:41.999 [DEBUG] [Thread-129374] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:42.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:42.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-28T16:20:42.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-28T16:20:42.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:42.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:42.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:42.034 [DEBUG] [Thread-129374] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:42.968 [DEBUG] [Thread-129376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:20:52.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:20:52.032 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:20:52.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-28T16:20:52.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 20, 34), 16.03, 33.96, 0.0, 16.37, 17.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:20:52.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:20:34
2025-09-28T16:20:52.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:20:52.880 [DEBUG] [Thread-129377] [transport.py] [_log()] starting thread (client mode): 0x2b94d4b0
2025-09-28T16:20:52.880 [DEBUG] [Thread-129377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:52.898 [DEBUG] [Thread-129377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:20:52.898 [INFO] [Thread-129377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:52.900 [DEBUG] [Thread-129377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:52.901 [DEBUG] [Thread-129377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:52.901 [DEBUG] [Thread-129377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:52.901 [DEBUG] [Thread-129377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:52.901 [DEBUG] [Thread-129377] [transport.py] [_log()] Compression: none
2025-09-28T16:20:52.901 [DEBUG] [Thread-129377] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:52.914 [DEBUG] [Thread-129377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:52.915 [DEBUG] [Thread-129377] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:52.915 [DEBUG] [Thread-129377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:20:52.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:20:52.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:52.916 [DEBUG] [Thread-129377] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:52.917 [DEBUG] [Thread-129377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:52.917 [DEBUG] [Thread-129377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:52.917 [DEBUG] [Thread-129377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:20:52.917 [DEBUG] [Thread-129377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:52.931 [INFO] [Thread-129377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:52.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:53.505 [DEBUG] [Thread-129377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:53.506 [DEBUG] [Thread-129377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:53.506 [DEBUG] [Thread-129377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:20:53.546 [DEBUG] [Thread-129377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:53.546 [DEBUG] [Thread-129377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:53.547 [DEBUG] [Thread-129377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:53.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:53.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:20:53.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:20:53.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:20:53.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:53.557 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:20:53.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597651 -999.00  +18.00  10.04     38   +3.50 1 1 1 1 1   887    0 14.90 14.98 ----- 10.0 10.0 191.8 19.7 22.9 -27.8 22.5 -26.4 24.1 -27.6 24.9 -29.1
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597651
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:20:53.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:20:53.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:20:53.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:20:53.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:20:34', tmtdew=16.03, humidity=33.96, cloud=0.0, wind=16.37, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:20:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:20:53.558 [DEBUG] [Thread-129377] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:53.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-28T16:20:53.640 [DEBUG] [Thread-129380] [transport.py] [_log()] starting thread (client mode): 0x2e360c10
2025-09-28T16:20:53.641 [DEBUG] [Thread-129380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:20:53.656 [DEBUG] [Thread-129380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:20:53.656 [INFO] [Thread-129380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:20:53.663 [DEBUG] [Thread-129380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] client lang: <none>
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] server lang: <none>
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] kex follows: False
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] Compression: none
2025-09-28T16:20:53.664 [DEBUG] [Thread-129380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:20:53.722 [DEBUG] [Thread-129380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:20:53.722 [DEBUG] [Thread-129380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:20:53.723 [DEBUG] [Thread-129380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:20:53.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:20:53.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:20:53.778 [DEBUG] [Thread-129380] [transport.py] [_log()] userauth is OK
2025-09-28T16:20:53.778 [DEBUG] [Thread-129380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:20:53.778 [DEBUG] [Thread-129380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:20:53.778 [DEBUG] [Thread-129380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:20:53.778 [DEBUG] [Thread-129380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:20:53.797 [INFO] [Thread-129380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:20:53.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-28T16:20:53.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:20:54.717 [DEBUG] [Thread-129380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:20:54.717 [DEBUG] [Thread-129380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:20:54.767 [DEBUG] [Thread-129380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:20:54.767 [DEBUG] [Thread-129380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:20:54.778 [DEBUG] [Thread-129380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:20:54.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:20:54.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-28T16:20:54.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-28T16:20:54.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:20:54.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:20:54.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:20:54.810 [DEBUG] [Thread-129380] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:20:58.021 [DEBUG] [Thread-129382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:04.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:21:04.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:21:04.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-28T16:21:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 20, 34), 16.03, 33.96, 0.0, 16.37, 17.4, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:21:05.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:20:34
2025-09-28T16:21:05.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:21:05.641 [DEBUG] [Thread-129383] [transport.py] [_log()] starting thread (client mode): 0x2e3603d0
2025-09-28T16:21:05.641 [DEBUG] [Thread-129383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:05.658 [DEBUG] [Thread-129383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:21:05.658 [INFO] [Thread-129383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] Compression: none
2025-09-28T16:21:05.660 [DEBUG] [Thread-129383] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:05.669 [DEBUG] [Thread-129383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:05.669 [DEBUG] [Thread-129383] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:05.669 [DEBUG] [Thread-129383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:21:05.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:21:05.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:05.671 [DEBUG] [Thread-129383] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:05.671 [DEBUG] [Thread-129383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:05.671 [DEBUG] [Thread-129383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:05.671 [DEBUG] [Thread-129383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:21:05.671 [DEBUG] [Thread-129383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:05.694 [INFO] [Thread-129383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:05.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:06.513 [DEBUG] [Thread-129383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:06.513 [DEBUG] [Thread-129383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:06.513 [DEBUG] [Thread-129383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:21:06.554 [DEBUG] [Thread-129383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:06.555 [DEBUG] [Thread-129383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:06.558 [DEBUG] [Thread-129383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:06.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:06.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:21:06.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:21:06.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:21:06.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:06.581 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:21:06.582 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597651 -999.00  +18.00  10.04     38   +3.50 1 1 1 1 1   887    0 14.90 14.98 ----- 10.0 10.0 191.8 19.7 22.9 -27.8 22.5 -26.4 24.1 -27.6 24.9 -29.1
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:21:06.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597651
2025-09-28T16:21:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:21:06.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:21:06.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:21:06.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:21:06.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:21:06.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:20:34', tmtdew=16.03, humidity=33.96, cloud=0.0, wind=16.37, temperature=17.4, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:20:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:21:06.584 [DEBUG] [Thread-129383] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:06.668 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:21:06.679 [DEBUG] [Thread-129386] [transport.py] [_log()] starting thread (client mode): 0x2b9bb5b0
2025-09-28T16:21:06.679 [DEBUG] [Thread-129386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:06.693 [DEBUG] [Thread-129386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:21:06.694 [INFO] [Thread-129386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:21:06.701 [DEBUG] [Thread-129386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:06.701 [DEBUG] [Thread-129386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] Compression: none
2025-09-28T16:21:06.702 [DEBUG] [Thread-129386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:06.764 [DEBUG] [Thread-129386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:06.764 [DEBUG] [Thread-129386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:06.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:21:06.765 [DEBUG] [Thread-129386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:21:06.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:06.826 [DEBUG] [Thread-129386] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:06.826 [DEBUG] [Thread-129386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:06.827 [DEBUG] [Thread-129386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:06.827 [DEBUG] [Thread-129386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:21:06.827 [DEBUG] [Thread-129386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:06.845 [INFO] [Thread-129386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:06.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-28T16:21:06.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:07.829 [DEBUG] [Thread-129386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:07.829 [DEBUG] [Thread-129386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:07.877 [DEBUG] [Thread-129386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:07.877 [DEBUG] [Thread-129386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:07.885 [DEBUG] [Thread-129386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:07.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:07.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-28T16:21:07.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-28T16:21:07.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:07.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:07.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:07.917 [DEBUG] [Thread-129386] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:13.054 [DEBUG] [Thread-129388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:17.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:21:17.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:21:17.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-28T16:21:18.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 21, 6), 16.2, 33.59, 0.0, 16.82, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:21:18.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:21:06
2025-09-28T16:21:18.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:21:18.764 [DEBUG] [Thread-129389] [transport.py] [_log()] starting thread (client mode): 0x2e348040
2025-09-28T16:21:18.764 [DEBUG] [Thread-129389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:18.785 [DEBUG] [Thread-129389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:21:18.785 [INFO] [Thread-129389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:21:18.788 [DEBUG] [Thread-129389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:18.788 [DEBUG] [Thread-129389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:21:18.788 [DEBUG] [Thread-129389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:18.788 [DEBUG] [Thread-129389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:18.788 [DEBUG] [Thread-129389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] Compression: none
2025-09-28T16:21:18.789 [DEBUG] [Thread-129389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:18.806 [DEBUG] [Thread-129389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:18.806 [DEBUG] [Thread-129389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:18.807 [DEBUG] [Thread-129389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:21:18.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:21:18.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:18.809 [DEBUG] [Thread-129389] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:18.809 [DEBUG] [Thread-129389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:18.809 [DEBUG] [Thread-129389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:18.809 [DEBUG] [Thread-129389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:21:18.810 [DEBUG] [Thread-129389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:18.833 [INFO] [Thread-129389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:18.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:19.484 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:19.485 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:19.583 [DEBUG] [Thread-129389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:19.584 [DEBUG] [Thread-129389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:19.584 [DEBUG] [Thread-129389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:21:19.624 [DEBUG] [Thread-129389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:19.624 [DEBUG] [Thread-129389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:19.627 [DEBUG] [Thread-129389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:19.640 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:19.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:21:19.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:21:19.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:21:19.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:19.649 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:21:19.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:19.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:19.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:21:19.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597651 -999.00  +18.00  10.04     38   +3.50 1 1 1 1 1   887    0 14.90 14.98 ----- 10.0 10.0 191.8 19.7 22.9 -27.8 22.5 -26.4 24.1 -27.6 24.9 -29.1
2025-09-28T16:21:19.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:21:19.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:21:19.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597651
2025-09-28T16:21:19.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:21:19.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:21:19.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:21:19.651 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:21:19.651 [DEBUG] [Thread-129389] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:19.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:21:19.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:21:06', tmtdew=16.2, humidity=33.59, cloud=0.0, wind=16.82, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:20:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:21:19.737 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:21:19.746 [DEBUG] [Thread-129392] [transport.py] [_log()] starting thread (client mode): 0x2e360520
2025-09-28T16:21:19.747 [DEBUG] [Thread-129392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:19.765 [DEBUG] [Thread-129392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:21:19.765 [INFO] [Thread-129392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:21:19.772 [DEBUG] [Thread-129392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:19.772 [DEBUG] [Thread-129392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] Compression: none
2025-09-28T16:21:19.773 [DEBUG] [Thread-129392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:19.828 [DEBUG] [Thread-129392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:19.829 [DEBUG] [Thread-129392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:19.829 [DEBUG] [Thread-129392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:21:19.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:21:19.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:19.886 [DEBUG] [Thread-129392] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:19.886 [DEBUG] [Thread-129392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:19.886 [DEBUG] [Thread-129392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:19.886 [DEBUG] [Thread-129392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:21:19.886 [DEBUG] [Thread-129392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:19.901 [INFO] [Thread-129392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:19.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-28T16:21:19.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:20.560 [DEBUG] [Thread-129394 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:20.859 [DEBUG] [Thread-129392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:20.859 [DEBUG] [Thread-129392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:20.907 [DEBUG] [Thread-129392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:20.908 [DEBUG] [Thread-129392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:20.918 [DEBUG] [Thread-129392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:20.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:20.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-28T16:21:20.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-28T16:21:20.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:20.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:20.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:20.958 [DEBUG] [Thread-129392] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:28.085 [DEBUG] [Thread-129395 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:30.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:21:30.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:21:30.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-28T16:21:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 21, 6), 16.2, 33.59, 0.0, 16.82, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:21:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:21:06
2025-09-28T16:21:31.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:21:31.806 [DEBUG] [Thread-129396] [transport.py] [_log()] starting thread (client mode): 0x2e3635e0
2025-09-28T16:21:31.806 [DEBUG] [Thread-129396] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:31.825 [DEBUG] [Thread-129396] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:21:31.826 [INFO] [Thread-129396] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:31.829 [DEBUG] [Thread-129396] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] Compression: none
2025-09-28T16:21:31.830 [DEBUG] [Thread-129396] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:31.849 [DEBUG] [Thread-129396] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:31.850 [DEBUG] [Thread-129396] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:31.850 [DEBUG] [Thread-129396] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:21:31.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:21:31.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:31.852 [DEBUG] [Thread-129396] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:31.852 [DEBUG] [Thread-129396] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:31.853 [DEBUG] [Thread-129396] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:31.853 [DEBUG] [Thread-129396] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:21:31.853 [DEBUG] [Thread-129396] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:31.866 [INFO] [Thread-129396] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:31.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:32.449 [DEBUG] [Thread-129396] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:32.449 [DEBUG] [Thread-129396] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:32.449 [DEBUG] [Thread-129396] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:21:32.490 [DEBUG] [Thread-129396] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:32.490 [DEBUG] [Thread-129396] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:32.492 [DEBUG] [Thread-129396] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:32.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:32.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:21:32.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:21:32.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:21:32.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:32.510 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:21:32.510 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597998 -999.00  +17.90  21.73     38   +3.50 1 1 1 1 1   887    0 14.78 10.85 ----- 21.7 21.7 200.7 25.1 22.9 -29.0 22.4 -27.2 24.1 -27.9 24.9 -28.6
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597998
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:21:32.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:21:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:21:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:21:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:21:32.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:21:06', tmtdew=16.2, humidity=33.59, cloud=0.0, wind=16.82, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:21:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:21:32.511 [DEBUG] [Thread-129396] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:32.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-28T16:21:32.593 [DEBUG] [Thread-129399] [transport.py] [_log()] starting thread (client mode): 0x2e363a60
2025-09-28T16:21:32.593 [DEBUG] [Thread-129399] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:32.608 [DEBUG] [Thread-129399] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:21:32.608 [INFO] [Thread-129399] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] Compression: none
2025-09-28T16:21:32.616 [DEBUG] [Thread-129399] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:32.674 [DEBUG] [Thread-129399] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:32.674 [DEBUG] [Thread-129399] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:32.675 [DEBUG] [Thread-129399] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:21:32.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:21:32.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:32.730 [DEBUG] [Thread-129399] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:32.731 [DEBUG] [Thread-129399] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:32.731 [DEBUG] [Thread-129399] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:32.731 [DEBUG] [Thread-129399] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:21:32.731 [DEBUG] [Thread-129399] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:32.750 [INFO] [Thread-129399] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:32.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-28T16:21:32.751 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:33.682 [DEBUG] [Thread-129399] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:33.683 [DEBUG] [Thread-129399] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:33.730 [DEBUG] [Thread-129399] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:33.730 [DEBUG] [Thread-129399] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:33.739 [DEBUG] [Thread-129399] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:33.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:33.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-28T16:21:33.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T16:21:33.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:33.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:33.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:33.777 [DEBUG] [Thread-129399] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:43.129 [DEBUG] [Thread-129401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:43.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:21:43.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:21:43.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-28T16:21:44.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 21, 38), 16.09, 33.61, 0.0, 17.15, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:21:44.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:21:38
2025-09-28T16:21:44.474 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:21:44.624 [DEBUG] [Thread-129402] [transport.py] [_log()] starting thread (client mode): 0x2b92acb0
2025-09-28T16:21:44.624 [DEBUG] [Thread-129402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:44.645 [DEBUG] [Thread-129402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:21:44.645 [INFO] [Thread-129402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:21:44.648 [DEBUG] [Thread-129402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:44.648 [DEBUG] [Thread-129402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:21:44.648 [DEBUG] [Thread-129402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] Compression: none
2025-09-28T16:21:44.649 [DEBUG] [Thread-129402] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:44.666 [DEBUG] [Thread-129402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:44.666 [DEBUG] [Thread-129402] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:44.666 [DEBUG] [Thread-129402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:21:44.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:21:44.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:44.668 [DEBUG] [Thread-129402] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:44.668 [DEBUG] [Thread-129402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:44.668 [DEBUG] [Thread-129402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:44.668 [DEBUG] [Thread-129402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:21:44.669 [DEBUG] [Thread-129402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:44.689 [INFO] [Thread-129402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:44.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:45.484 [DEBUG] [Thread-129402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:45.484 [DEBUG] [Thread-129402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:45.485 [DEBUG] [Thread-129402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:21:45.525 [DEBUG] [Thread-129402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:45.526 [DEBUG] [Thread-129402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:45.528 [DEBUG] [Thread-129402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:45.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:45.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:21:45.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:21:45.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:21:45.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:45.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:21:45.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:45.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:21:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597998 -999.00  +17.90  21.73     38   +3.50 1 1 1 1 1   887    0 14.78 10.85 ----- 21.7 21.7 200.7 25.1 22.9 -29.0 22.4 -27.2 24.1 -27.9 24.9 -28.6
2025-09-28T16:21:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:21:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:21:45.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597998
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:21:45.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:21:38', tmtdew=16.09, humidity=33.61, cloud=0.0, wind=17.15, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:21:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:21:45.552 [DEBUG] [Thread-129402] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:45.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-28T16:21:45.650 [DEBUG] [Thread-129405] [transport.py] [_log()] starting thread (client mode): 0x2b96eb90
2025-09-28T16:21:45.650 [DEBUG] [Thread-129405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:45.665 [DEBUG] [Thread-129405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:21:45.665 [INFO] [Thread-129405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:21:45.672 [DEBUG] [Thread-129405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] Compression: none
2025-09-28T16:21:45.673 [DEBUG] [Thread-129405] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:45.730 [DEBUG] [Thread-129405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:45.730 [DEBUG] [Thread-129405] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:45.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:21:45.731 [DEBUG] [Thread-129405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:21:45.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:45.786 [DEBUG] [Thread-129405] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:45.786 [DEBUG] [Thread-129405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:45.787 [DEBUG] [Thread-129405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:45.787 [DEBUG] [Thread-129405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:21:45.787 [DEBUG] [Thread-129405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:45.805 [INFO] [Thread-129405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:45.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-28T16:21:45.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:46.757 [DEBUG] [Thread-129405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:46.757 [DEBUG] [Thread-129405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:46.805 [DEBUG] [Thread-129405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:46.805 [DEBUG] [Thread-129405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:46.814 [DEBUG] [Thread-129405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:46.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:46.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-28T16:21:46.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') -> 00000000
2025-09-28T16:21:46.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:46.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:46.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:46.849 [DEBUG] [Thread-129405] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:56.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:21:56.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:21:56.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-28T16:21:57.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 21, 38), 16.09, 33.61, 0.0, 17.15, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:21:57.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:21:38
2025-09-28T16:21:57.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:21:57.697 [DEBUG] [Thread-129407] [transport.py] [_log()] starting thread (client mode): 0x2e362530
2025-09-28T16:21:57.697 [DEBUG] [Thread-129407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:57.719 [DEBUG] [Thread-129407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:21:57.719 [INFO] [Thread-129407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:57.722 [DEBUG] [Thread-129407] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] Compression: none
2025-09-28T16:21:57.723 [DEBUG] [Thread-129407] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:57.738 [DEBUG] [Thread-129407] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:57.738 [DEBUG] [Thread-129407] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:57.738 [DEBUG] [Thread-129407] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:21:57.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:21:57.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:57.739 [DEBUG] [Thread-129407] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:57.739 [DEBUG] [Thread-129407] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:57.739 [DEBUG] [Thread-129407] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:57.739 [DEBUG] [Thread-129407] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:21:57.739 [DEBUG] [Thread-129407] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:57.748 [INFO] [Thread-129407] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:57.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:58.181 [DEBUG] [Thread-129409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:21:58.522 [DEBUG] [Thread-129407] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:58.523 [DEBUG] [Thread-129407] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:58.523 [DEBUG] [Thread-129407] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:21:58.563 [DEBUG] [Thread-129407] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:58.563 [DEBUG] [Thread-129407] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:58.565 [DEBUG] [Thread-129407] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:58.571 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:58.571 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:21:58.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:21:58.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:21:58.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:58.580 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:21:58.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:58.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.597998 -999.00  +17.90  21.73     38   +3.50 1 1 1 1 1   887    0 14.78 10.85 ----- 21.7 21.7 200.7 25.1 22.9 -29.0 22.4 -27.2 24.1 -27.9 24.9 -28.6
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.597998
2025-09-28T16:21:58.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:21:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:21:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:21:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:21:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:21:58.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:21:38', tmtdew=16.09, humidity=33.61, cloud=0.0, wind=17.15, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:21:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:21:58.582 [DEBUG] [Thread-129407] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:21:58.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-28T16:21:58.676 [DEBUG] [Thread-129411] [transport.py] [_log()] starting thread (client mode): 0x2e34ab60
2025-09-28T16:21:58.676 [DEBUG] [Thread-129411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:21:58.691 [DEBUG] [Thread-129411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:21:58.691 [INFO] [Thread-129411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:21:58.703 [DEBUG] [Thread-129411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] client lang: <none>
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] server lang: <none>
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] kex follows: False
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:21:58.704 [DEBUG] [Thread-129411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:21:58.705 [DEBUG] [Thread-129411] [transport.py] [_log()] Compression: none
2025-09-28T16:21:58.705 [DEBUG] [Thread-129411] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:21:58.762 [DEBUG] [Thread-129411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:21:58.763 [DEBUG] [Thread-129411] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:21:58.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:21:58.764 [DEBUG] [Thread-129411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:21:58.772 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:21:58.818 [DEBUG] [Thread-129411] [transport.py] [_log()] userauth is OK
2025-09-28T16:21:58.818 [DEBUG] [Thread-129411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:21:58.819 [DEBUG] [Thread-129411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:21:58.819 [DEBUG] [Thread-129411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:21:58.819 [DEBUG] [Thread-129411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:21:58.842 [INFO] [Thread-129411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:21:58.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-28T16:21:58.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:21:59.781 [DEBUG] [Thread-129411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:21:59.781 [DEBUG] [Thread-129411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:21:59.829 [DEBUG] [Thread-129411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:21:59.830 [DEBUG] [Thread-129411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:21:59.838 [DEBUG] [Thread-129411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:21:59.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:21:59.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-28T16:21:59.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-28T16:21:59.864 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:21:59.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:21:59.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:21:59.872 [DEBUG] [Thread-129411] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:09.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:22:09.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:22:09.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-28T16:22:10.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 21, 38), 16.09, 33.61, 0.0, 17.15, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:22:10.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:21:38
2025-09-28T16:22:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:22:10.726 [DEBUG] [Thread-129413] [transport.py] [_log()] starting thread (client mode): 0x2e38cfd0
2025-09-28T16:22:10.726 [DEBUG] [Thread-129413] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:10.743 [DEBUG] [Thread-129413] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:22:10.743 [INFO] [Thread-129413] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:10.746 [DEBUG] [Thread-129413] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:10.747 [DEBUG] [Thread-129413] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:10.747 [DEBUG] [Thread-129413] [transport.py] [_log()] Compression: none
2025-09-28T16:22:10.747 [DEBUG] [Thread-129413] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:10.762 [DEBUG] [Thread-129413] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:10.763 [DEBUG] [Thread-129413] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:10.764 [DEBUG] [Thread-129413] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:22:10.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:22:10.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:10.765 [DEBUG] [Thread-129413] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:10.765 [DEBUG] [Thread-129413] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:10.765 [DEBUG] [Thread-129413] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:10.765 [DEBUG] [Thread-129413] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:22:10.766 [DEBUG] [Thread-129413] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:10.781 [INFO] [Thread-129413] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:10.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:11.435 [DEBUG] [Thread-129413] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:11.436 [DEBUG] [Thread-129413] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:11.436 [DEBUG] [Thread-129413] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:22:11.477 [DEBUG] [Thread-129413] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:11.477 [DEBUG] [Thread-129413] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:11.479 [DEBUG] [Thread-129413] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:11.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:11.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:22:11.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:22:11.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:22:11.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:11.495 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:22:11.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.598345 -999.00  +17.80   9.75     38   +3.60 1 1 1 1 1   887    0 14.56 8.57 ----- 9.8 9.8 188.0 21.4 22.9 -28.0 22.3 -26.8 23.9 -27.2 24.9 -29.0
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.598345
2025-09-28T16:22:11.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:22:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:22:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:22:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:22:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:22:11.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:21:38', tmtdew=16.09, humidity=33.61, cloud=0.0, wind=17.15, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:21:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:22:11.496 [DEBUG] [Thread-129413] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:11.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-28T16:22:11.583 [DEBUG] [Thread-129416] [transport.py] [_log()] starting thread (client mode): 0x2e3c10c0
2025-09-28T16:22:11.584 [DEBUG] [Thread-129416] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:11.597 [DEBUG] [Thread-129416] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:22:11.597 [INFO] [Thread-129416] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] Compression: none
2025-09-28T16:22:11.605 [DEBUG] [Thread-129416] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:11.661 [DEBUG] [Thread-129416] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:11.661 [DEBUG] [Thread-129416] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:11.662 [DEBUG] [Thread-129416] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:22:11.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:22:11.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:11.718 [DEBUG] [Thread-129416] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:11.718 [DEBUG] [Thread-129416] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:11.718 [DEBUG] [Thread-129416] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:11.718 [DEBUG] [Thread-129416] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:22:11.718 [DEBUG] [Thread-129416] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:11.735 [INFO] [Thread-129416] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:11.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:22:11.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:12.697 [DEBUG] [Thread-129416] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:12.697 [DEBUG] [Thread-129416] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:12.745 [DEBUG] [Thread-129416] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:12.745 [DEBUG] [Thread-129416] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:12.754 [DEBUG] [Thread-129416] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:12.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:12.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-28T16:22:12.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-28T16:22:12.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:12.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:12.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:12.788 [DEBUG] [Thread-129416] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:13.234 [DEBUG] [Thread-129418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:19.629 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:19.630 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:20.616 [DEBUG] [Thread-129419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:22.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:22:22.790 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:22:22.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-28T16:22:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 22, 10), 16.17, 33.44, 0.0, 18.92, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:22:23.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:22:10
2025-09-28T16:22:23.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:22:23.621 [DEBUG] [Thread-129420] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-28T16:22:23.622 [DEBUG] [Thread-129420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:23.642 [DEBUG] [Thread-129420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:22:23.642 [INFO] [Thread-129420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:23.645 [DEBUG] [Thread-129420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] Compression: none
2025-09-28T16:22:23.646 [DEBUG] [Thread-129420] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:23.666 [DEBUG] [Thread-129420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:23.666 [DEBUG] [Thread-129420] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:23.676 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:22:23.676 [DEBUG] [Thread-129420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:22:23.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:23.678 [DEBUG] [Thread-129420] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:23.678 [DEBUG] [Thread-129420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:23.678 [DEBUG] [Thread-129420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:23.678 [DEBUG] [Thread-129420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:22:23.678 [DEBUG] [Thread-129420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:23.702 [INFO] [Thread-129420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:23.702 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:24.481 [DEBUG] [Thread-129420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:24.481 [DEBUG] [Thread-129420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:24.481 [DEBUG] [Thread-129420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:22:24.522 [DEBUG] [Thread-129420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:24.523 [DEBUG] [Thread-129420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:24.525 [DEBUG] [Thread-129420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:24.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:24.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:22:24.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:22:24.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:22:24.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:24.545 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:22:24.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:24.545 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:24.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:22:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.598345 -999.00  +17.80   9.75     38   +3.60 1 1 1 1 1   887    0 14.56 8.57 ----- 9.8 9.8 188.0 21.4 22.9 -28.0 22.3 -26.8 23.9 -27.2 24.9 -29.0
2025-09-28T16:22:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:22:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:22:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.598345
2025-09-28T16:22:24.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:22:24.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:22:24.547 [DEBUG] [Thread-129420] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:24.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:22:24.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:22:24.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:22:24.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:22:10', tmtdew=16.17, humidity=33.44, cloud=0.0, wind=18.92, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:21:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:22:24.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:22:24.638 [DEBUG] [Thread-129423] [transport.py] [_log()] starting thread (client mode): 0x2e3c3310
2025-09-28T16:22:24.639 [DEBUG] [Thread-129423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:24.654 [DEBUG] [Thread-129423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:22:24.654 [INFO] [Thread-129423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:22:24.661 [DEBUG] [Thread-129423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:24.661 [DEBUG] [Thread-129423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:22:24.661 [DEBUG] [Thread-129423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] Compression: none
2025-09-28T16:22:24.662 [DEBUG] [Thread-129423] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:24.722 [DEBUG] [Thread-129423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:24.722 [DEBUG] [Thread-129423] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:24.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:22:24.723 [DEBUG] [Thread-129423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:22:24.724 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:24.778 [DEBUG] [Thread-129423] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:24.778 [DEBUG] [Thread-129423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:24.778 [DEBUG] [Thread-129423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:24.778 [DEBUG] [Thread-129423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:22:24.779 [DEBUG] [Thread-129423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:24.797 [INFO] [Thread-129423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:24.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-28T16:22:24.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:25.773 [DEBUG] [Thread-129423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:25.773 [DEBUG] [Thread-129423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:25.821 [DEBUG] [Thread-129423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:25.821 [DEBUG] [Thread-129423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:25.830 [DEBUG] [Thread-129423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:25.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:25.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')
2025-09-28T16:22:25.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') -> 00000000
2025-09-28T16:22:25.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:25.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:25.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:25.865 [DEBUG] [Thread-129423] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:28.280 [DEBUG] [Thread-129425 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:35.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:22:35.859 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:22:35.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-28T16:22:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 22, 10), 16.17, 33.44, 0.0, 18.92, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:22:36.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:22:10
2025-09-28T16:22:36.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:22:36.684 [DEBUG] [Thread-129426] [transport.py] [_log()] starting thread (client mode): 0x2e3c3d90
2025-09-28T16:22:36.684 [DEBUG] [Thread-129426] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:36.704 [DEBUG] [Thread-129426] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:22:36.705 [INFO] [Thread-129426] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] Compression: none
2025-09-28T16:22:36.708 [DEBUG] [Thread-129426] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:36.726 [DEBUG] [Thread-129426] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:36.727 [DEBUG] [Thread-129426] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:36.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:22:36.728 [DEBUG] [Thread-129426] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:22:36.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:36.730 [DEBUG] [Thread-129426] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:36.730 [DEBUG] [Thread-129426] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:36.730 [DEBUG] [Thread-129426] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:36.730 [DEBUG] [Thread-129426] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:22:36.730 [DEBUG] [Thread-129426] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:36.742 [INFO] [Thread-129426] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:36.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:37.366 [DEBUG] [Thread-129426] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:37.366 [DEBUG] [Thread-129426] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:37.367 [DEBUG] [Thread-129426] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:22:37.407 [DEBUG] [Thread-129426] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:37.408 [DEBUG] [Thread-129426] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:37.410 [DEBUG] [Thread-129426] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:37.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:37.423 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:22:37.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:22:37.426 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:22:37.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:37.432 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:22:37.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:37.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.598693 -999.00  +17.90   7.23     38   +3.60 1 1 1 1 1   887    0 14.60 7.37 ----- 7.2 7.2 224.8 15.0 22.9 -27.7 22.4 -26.9 24.1 -27.3 24.8 -28.7
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.598693
2025-09-28T16:22:37.433 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:22:37.433 [DEBUG] [Thread-129426] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:37.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:22:37.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:22:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:22:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:22:37.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:22:10', tmtdew=16.17, humidity=33.44, cloud=0.0, wind=18.92, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:22:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:22:37.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-28T16:22:37.524 [DEBUG] [Thread-129429] [transport.py] [_log()] starting thread (client mode): 0x2e3c02b0
2025-09-28T16:22:37.524 [DEBUG] [Thread-129429] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:37.539 [DEBUG] [Thread-129429] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:22:37.539 [INFO] [Thread-129429] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:22:37.546 [DEBUG] [Thread-129429] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:37.547 [DEBUG] [Thread-129429] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:37.548 [DEBUG] [Thread-129429] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:37.548 [DEBUG] [Thread-129429] [transport.py] [_log()] Compression: none
2025-09-28T16:22:37.548 [DEBUG] [Thread-129429] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:37.606 [DEBUG] [Thread-129429] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:37.607 [DEBUG] [Thread-129429] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:37.607 [DEBUG] [Thread-129429] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:22:37.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:22:37.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:37.662 [DEBUG] [Thread-129429] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:37.662 [DEBUG] [Thread-129429] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:37.662 [DEBUG] [Thread-129429] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:37.663 [DEBUG] [Thread-129429] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:22:37.663 [DEBUG] [Thread-129429] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:37.681 [INFO] [Thread-129429] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:37.682 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:22:37.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:38.608 [DEBUG] [Thread-129429] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:38.608 [DEBUG] [Thread-129429] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:38.659 [DEBUG] [Thread-129429] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:38.659 [DEBUG] [Thread-129429] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:38.667 [DEBUG] [Thread-129429] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:38.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:38.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-28T16:22:38.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-28T16:22:38.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:38.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:38.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:38.702 [DEBUG] [Thread-129429] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:43.321 [DEBUG] [Thread-129431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:22:48.704 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:22:48.705 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:22:48.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:22:49.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 22, 42), 15.9, 34.19, 0.0, 11.08, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:22:49.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:22:42
2025-09-28T16:22:49.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:22:49.539 [DEBUG] [Thread-129432] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-28T16:22:49.539 [DEBUG] [Thread-129432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:49.559 [DEBUG] [Thread-129432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:22:49.559 [INFO] [Thread-129432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:22:49.562 [DEBUG] [Thread-129432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:49.562 [DEBUG] [Thread-129432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:22:49.562 [DEBUG] [Thread-129432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:49.562 [DEBUG] [Thread-129432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] Compression: none
2025-09-28T16:22:49.563 [DEBUG] [Thread-129432] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:49.579 [DEBUG] [Thread-129432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:49.580 [DEBUG] [Thread-129432] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:49.580 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:22:49.581 [DEBUG] [Thread-129432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:22:49.581 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:49.583 [DEBUG] [Thread-129432] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:49.583 [DEBUG] [Thread-129432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:49.583 [DEBUG] [Thread-129432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:49.583 [DEBUG] [Thread-129432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:22:49.583 [DEBUG] [Thread-129432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:49.607 [INFO] [Thread-129432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:49.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:50.438 [DEBUG] [Thread-129432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:50.438 [DEBUG] [Thread-129432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:50.439 [DEBUG] [Thread-129432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:22:50.480 [DEBUG] [Thread-129432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:50.480 [DEBUG] [Thread-129432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:50.483 [DEBUG] [Thread-129432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:50.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:50.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:22:50.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:22:50.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:22:50.503 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:50.505 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:22:50.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:50.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.598693 -999.00  +17.90   7.23     38   +3.60 1 1 1 1 1   887    0 14.60 7.37 ----- 7.2 7.2 224.8 15.0 22.9 -27.7 22.4 -26.9 24.1 -27.3 24.8 -28.7
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.598693
2025-09-28T16:22:50.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:22:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:22:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:22:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:22:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:22:50.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:22:42', tmtdew=15.9, humidity=34.19, cloud=0.0, wind=11.08, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:22:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:22:50.508 [DEBUG] [Thread-129432] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:50.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-28T16:22:50.601 [DEBUG] [Thread-129435] [transport.py] [_log()] starting thread (client mode): 0x2b92ae30
2025-09-28T16:22:50.601 [DEBUG] [Thread-129435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:22:50.617 [DEBUG] [Thread-129435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:22:50.617 [INFO] [Thread-129435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:50.624 [DEBUG] [Thread-129435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] client lang: <none>
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] server lang: <none>
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] kex follows: False
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] Compression: none
2025-09-28T16:22:50.625 [DEBUG] [Thread-129435] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:22:50.682 [DEBUG] [Thread-129435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:22:50.682 [DEBUG] [Thread-129435] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:22:50.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:22:50.683 [DEBUG] [Thread-129435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:22:50.684 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:22:50.738 [DEBUG] [Thread-129435] [transport.py] [_log()] userauth is OK
2025-09-28T16:22:50.738 [DEBUG] [Thread-129435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:22:50.738 [DEBUG] [Thread-129435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:22:50.738 [DEBUG] [Thread-129435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:22:50.738 [DEBUG] [Thread-129435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:22:50.752 [INFO] [Thread-129435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:22:50.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-28T16:22:50.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:22:51.686 [DEBUG] [Thread-129435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:22:51.686 [DEBUG] [Thread-129435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:22:51.734 [DEBUG] [Thread-129435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:22:51.734 [DEBUG] [Thread-129435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:22:51.743 [DEBUG] [Thread-129435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:22:51.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:22:51.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-28T16:22:51.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-28T16:22:51.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:22:51.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:22:51.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:22:51.775 [DEBUG] [Thread-129435] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:22:58.357 [DEBUG] [Thread-129437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:01.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:23:01.772 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:23:01.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-28T16:23:02.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 22, 42), 15.9, 34.19, 0.0, 11.08, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:23:02.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:22:42
2025-09-28T16:23:02.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:23:02.622 [DEBUG] [Thread-129438] [transport.py] [_log()] starting thread (client mode): 0x2e3c1bd0
2025-09-28T16:23:02.622 [DEBUG] [Thread-129438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:02.642 [DEBUG] [Thread-129438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:23:02.642 [INFO] [Thread-129438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] Compression: none
2025-09-28T16:23:02.646 [DEBUG] [Thread-129438] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:02.664 [DEBUG] [Thread-129438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:02.664 [DEBUG] [Thread-129438] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:02.665 [DEBUG] [Thread-129438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:23:02.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:23:02.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:02.666 [DEBUG] [Thread-129438] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:02.666 [DEBUG] [Thread-129438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:02.667 [DEBUG] [Thread-129438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:02.667 [DEBUG] [Thread-129438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:23:02.667 [DEBUG] [Thread-129438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:02.684 [INFO] [Thread-129438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:02.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:03.522 [DEBUG] [Thread-129438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:03.522 [DEBUG] [Thread-129438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:03.523 [DEBUG] [Thread-129438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:23:03.563 [DEBUG] [Thread-129438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:03.563 [DEBUG] [Thread-129438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:03.566 [DEBUG] [Thread-129438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:03.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:03.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:23:03.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:23:03.580 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:23:03.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:03.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:23:03.586 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:03.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.598693 -999.00  +17.90   7.23     38   +3.60 1 1 1 1 1   887    0 14.60 7.37 ----- 7.2 7.2 224.8 15.0 22.9 -27.7 22.4 -26.9 24.1 -27.3 24.8 -28.7
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.598693
2025-09-28T16:23:03.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:23:03.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:23:03.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:23:03.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:23:03.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:23:03.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:22:42', tmtdew=15.9, humidity=34.19, cloud=0.0, wind=11.08, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:22:07.075', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:23:03.588 [DEBUG] [Thread-129438] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:03.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-28T16:23:03.686 [DEBUG] [Thread-129441] [transport.py] [_log()] starting thread (client mode): 0x2e3c3ee0
2025-09-28T16:23:03.686 [DEBUG] [Thread-129441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:03.701 [DEBUG] [Thread-129441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:23:03.701 [INFO] [Thread-129441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] Compression: none
2025-09-28T16:23:03.709 [DEBUG] [Thread-129441] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:03.769 [DEBUG] [Thread-129441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:03.769 [DEBUG] [Thread-129441] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:03.769 [DEBUG] [Thread-129441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:23:03.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:23:03.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:03.826 [DEBUG] [Thread-129441] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:03.826 [DEBUG] [Thread-129441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:03.826 [DEBUG] [Thread-129441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:03.826 [DEBUG] [Thread-129441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:23:03.826 [DEBUG] [Thread-129441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:03.845 [INFO] [Thread-129441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:03.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-28T16:23:03.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:04.824 [DEBUG] [Thread-129441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:04.824 [DEBUG] [Thread-129441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:04.872 [DEBUG] [Thread-129441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:04.872 [DEBUG] [Thread-129441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:04.882 [DEBUG] [Thread-129441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:04.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:04.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-28T16:23:04.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T16:23:04.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:04.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:04.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:04.916 [DEBUG] [Thread-129441] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:13.398 [DEBUG] [Thread-129443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:14.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:23:14.918 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:23:14.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-28T16:23:15.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 22, 42), 15.9, 34.19, 0.0, 11.08, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:23:15.533 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:22:42
2025-09-28T16:23:15.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:23:15.798 [DEBUG] [Thread-129444] [transport.py] [_log()] starting thread (client mode): 0x2e3c09d0
2025-09-28T16:23:15.798 [DEBUG] [Thread-129444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:15.818 [DEBUG] [Thread-129444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:23:15.818 [INFO] [Thread-129444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] Compression: none
2025-09-28T16:23:15.821 [DEBUG] [Thread-129444] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:15.837 [DEBUG] [Thread-129444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:15.838 [DEBUG] [Thread-129444] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:15.838 [DEBUG] [Thread-129444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:23:15.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:23:15.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:15.838 [DEBUG] [Thread-129444] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:15.839 [DEBUG] [Thread-129444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:15.839 [DEBUG] [Thread-129444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:15.839 [DEBUG] [Thread-129444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:23:15.839 [DEBUG] [Thread-129444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:15.851 [INFO] [Thread-129444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:15.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:16.491 [DEBUG] [Thread-129444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:16.491 [DEBUG] [Thread-129444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:16.492 [DEBUG] [Thread-129444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:23:16.532 [DEBUG] [Thread-129444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:16.533 [DEBUG] [Thread-129444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:16.535 [DEBUG] [Thread-129444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:16.547 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:16.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:23:16.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:23:16.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:23:16.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:16.556 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:23:16.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.599040 -999.00  +18.00   7.76     38   +3.70 1 1 1 1 1   887    0 14.83 7.59 ----- 7.8 7.8 201.7 13.4 22.9 -28.2 22.4 -27.6 24.0 -26.6 24.8 -28.1
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:23:16.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.599040
2025-09-28T16:23:16.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:23:16.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:23:16.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:23:16.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:23:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:23:16.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:22:42', tmtdew=15.9, humidity=34.19, cloud=0.0, wind=11.08, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:22:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:23:16.559 [DEBUG] [Thread-129444] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:16.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:23:16.653 [DEBUG] [Thread-129447] [transport.py] [_log()] starting thread (client mode): 0x2e363c70
2025-09-28T16:23:16.653 [DEBUG] [Thread-129447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:16.667 [DEBUG] [Thread-129447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:23:16.667 [INFO] [Thread-129447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:16.675 [DEBUG] [Thread-129447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:16.676 [DEBUG] [Thread-129447] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:16.677 [DEBUG] [Thread-129447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:16.677 [DEBUG] [Thread-129447] [transport.py] [_log()] Compression: none
2025-09-28T16:23:16.677 [DEBUG] [Thread-129447] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:16.734 [DEBUG] [Thread-129447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:16.735 [DEBUG] [Thread-129447] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:16.736 [DEBUG] [Thread-129447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:23:16.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:23:16.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:16.791 [DEBUG] [Thread-129447] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:16.791 [DEBUG] [Thread-129447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:16.791 [DEBUG] [Thread-129447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:16.791 [DEBUG] [Thread-129447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:23:16.792 [DEBUG] [Thread-129447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:16.822 [INFO] [Thread-129447] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:16.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-28T16:23:16.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:17.772 [DEBUG] [Thread-129447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:17.773 [DEBUG] [Thread-129447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:17.820 [DEBUG] [Thread-129447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:17.820 [DEBUG] [Thread-129447] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:17.829 [DEBUG] [Thread-129447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:17.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:17.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-28T16:23:17.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-28T16:23:17.855 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:17.855 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:17.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:17.863 [DEBUG] [Thread-129447] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:19.770 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:19.771 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:20.671 [DEBUG] [Thread-129449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:27.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:23:27.866 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:23:27.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:23:28.425 [DEBUG] [Thread-129450 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 23, 14), 15.88, 34.22, 0.0, 11.49, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:23:28.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:23:14
2025-09-28T16:23:28.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:23:28.694 [DEBUG] [Thread-129451] [transport.py] [_log()] starting thread (client mode): 0x2e362860
2025-09-28T16:23:28.694 [DEBUG] [Thread-129451] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:28.716 [DEBUG] [Thread-129451] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:23:28.716 [INFO] [Thread-129451] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:23:28.719 [DEBUG] [Thread-129451] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:28.719 [DEBUG] [Thread-129451] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:23:28.719 [DEBUG] [Thread-129451] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] Compression: none
2025-09-28T16:23:28.720 [DEBUG] [Thread-129451] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:28.738 [DEBUG] [Thread-129451] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:28.738 [DEBUG] [Thread-129451] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:28.739 [DEBUG] [Thread-129451] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:23:28.739 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:23:28.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:28.741 [DEBUG] [Thread-129451] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:28.741 [DEBUG] [Thread-129451] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:28.741 [DEBUG] [Thread-129451] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:28.741 [DEBUG] [Thread-129451] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:23:28.741 [DEBUG] [Thread-129451] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:28.765 [INFO] [Thread-129451] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:28.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:29.569 [DEBUG] [Thread-129451] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:29.569 [DEBUG] [Thread-129451] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:29.569 [DEBUG] [Thread-129451] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:23:29.610 [DEBUG] [Thread-129451] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:29.610 [DEBUG] [Thread-129451] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:29.612 [DEBUG] [Thread-129451] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:29.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:29.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:23:29.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:23:29.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:23:29.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:29.629 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:23:29.629 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.599040 -999.00  +18.00   7.76     38   +3.70 1 1 1 1 1   887    0 14.83 7.59 ----- 7.8 7.8 201.7 13.4 22.9 -28.2 22.4 -27.6 24.0 -26.6 24.8 -28.1
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.599040
2025-09-28T16:23:29.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:23:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:23:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:23:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:23:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:23:29.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:23:14', tmtdew=15.88, humidity=34.22, cloud=0.0, wind=11.49, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:22:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:23:29.630 [DEBUG] [Thread-129451] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:29.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-28T16:23:29.715 [DEBUG] [Thread-129454] [transport.py] [_log()] starting thread (client mode): 0x2e361a20
2025-09-28T16:23:29.715 [DEBUG] [Thread-129454] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:29.729 [DEBUG] [Thread-129454] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:23:29.729 [INFO] [Thread-129454] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] Compression: none
2025-09-28T16:23:29.737 [DEBUG] [Thread-129454] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:29.792 [DEBUG] [Thread-129454] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:29.792 [DEBUG] [Thread-129454] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:29.792 [DEBUG] [Thread-129454] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:23:29.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:23:29.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:29.850 [DEBUG] [Thread-129454] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:29.850 [DEBUG] [Thread-129454] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:29.850 [DEBUG] [Thread-129454] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:29.850 [DEBUG] [Thread-129454] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:23:29.850 [DEBUG] [Thread-129454] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:29.868 [INFO] [Thread-129454] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:29.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-28T16:23:29.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:30.816 [DEBUG] [Thread-129454] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:30.816 [DEBUG] [Thread-129454] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:30.864 [DEBUG] [Thread-129454] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:30.864 [DEBUG] [Thread-129454] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:30.872 [DEBUG] [Thread-129454] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:30.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:30.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-28T16:23:30.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-28T16:23:30.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:30.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:30.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:30.904 [DEBUG] [Thread-129454] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:23:40.907 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:23:40.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-28T16:23:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 23, 14), 15.88, 34.22, 0.0, 11.49, 17.22, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:23:41.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:23:14
2025-09-28T16:23:41.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:23:41.739 [DEBUG] [Thread-129456] [transport.py] [_log()] starting thread (client mode): 0x2b92bc10
2025-09-28T16:23:41.739 [DEBUG] [Thread-129456] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:41.758 [DEBUG] [Thread-129456] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:23:41.759 [INFO] [Thread-129456] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:41.762 [DEBUG] [Thread-129456] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] Compression: none
2025-09-28T16:23:41.763 [DEBUG] [Thread-129456] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:41.779 [DEBUG] [Thread-129456] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:41.780 [DEBUG] [Thread-129456] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:41.780 [DEBUG] [Thread-129456] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:23:41.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:23:41.781 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:41.782 [DEBUG] [Thread-129456] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:41.782 [DEBUG] [Thread-129456] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:41.782 [DEBUG] [Thread-129456] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:41.782 [DEBUG] [Thread-129456] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:23:41.782 [DEBUG] [Thread-129456] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:41.817 [INFO] [Thread-129456] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:41.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:42.452 [DEBUG] [Thread-129456] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:42.452 [DEBUG] [Thread-129456] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:42.453 [DEBUG] [Thread-129456] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:23:42.493 [DEBUG] [Thread-129456] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:42.493 [DEBUG] [Thread-129456] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:42.496 [DEBUG] [Thread-129456] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:42.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:42.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:23:42.510 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:23:42.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:23:42.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:42.519 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:23:42.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:42.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:23:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.599387 -999.00  +18.10  24.32     38   +3.50 1 1 1 1 1   887    0 14.57 7.62 ----- 24.3 24.3 198.0 26.6 22.9 -28.5 22.3 -27.8 24.1 -26.8 24.9 -29.2
2025-09-28T16:23:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:23:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:23:42.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.599387
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:23:42.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:23:14', tmtdew=15.88, humidity=34.22, cloud=0.0, wind=11.49, temperature=17.22, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:23:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:23:42.522 [DEBUG] [Thread-129456] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:42.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-28T16:23:42.615 [DEBUG] [Thread-129459] [transport.py] [_log()] starting thread (client mode): 0x2b9297b0
2025-09-28T16:23:42.615 [DEBUG] [Thread-129459] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:42.630 [DEBUG] [Thread-129459] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:23:42.630 [INFO] [Thread-129459] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:23:42.637 [DEBUG] [Thread-129459] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] Compression: none
2025-09-28T16:23:42.638 [DEBUG] [Thread-129459] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:42.693 [DEBUG] [Thread-129459] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:42.694 [DEBUG] [Thread-129459] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:42.694 [DEBUG] [Thread-129459] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:23:42.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:23:42.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:42.750 [DEBUG] [Thread-129459] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:42.750 [DEBUG] [Thread-129459] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:42.750 [DEBUG] [Thread-129459] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:42.750 [DEBUG] [Thread-129459] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:23:42.750 [DEBUG] [Thread-129459] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:42.769 [INFO] [Thread-129459] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:42.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-28T16:23:42.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:43.464 [DEBUG] [Thread-129461 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:23:43.722 [DEBUG] [Thread-129459] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:43.722 [DEBUG] [Thread-129459] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:43.770 [DEBUG] [Thread-129459] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:43.770 [DEBUG] [Thread-129459] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:43.780 [DEBUG] [Thread-129459] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:43.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:43.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')
2025-09-28T16:23:43.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-28T16:23:43.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:43.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:43.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:43.813 [DEBUG] [Thread-129459] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:53.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:23:53.808 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:23:53.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-28T16:23:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 23, 46), 16.0, 33.77, 0.0, 22.96, 17.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:23:54.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:23:46
2025-09-28T16:23:54.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:23:54.648 [DEBUG] [Thread-129462] [transport.py] [_log()] starting thread (client mode): 0x2e3c0550
2025-09-28T16:23:54.649 [DEBUG] [Thread-129462] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:54.667 [DEBUG] [Thread-129462] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:23:54.667 [INFO] [Thread-129462] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:23:54.670 [DEBUG] [Thread-129462] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:54.671 [DEBUG] [Thread-129462] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:54.672 [DEBUG] [Thread-129462] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:54.672 [DEBUG] [Thread-129462] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:54.672 [DEBUG] [Thread-129462] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:54.672 [DEBUG] [Thread-129462] [transport.py] [_log()] Compression: none
2025-09-28T16:23:54.672 [DEBUG] [Thread-129462] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:54.688 [DEBUG] [Thread-129462] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:54.688 [DEBUG] [Thread-129462] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:54.688 [DEBUG] [Thread-129462] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:23:54.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:23:54.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:54.690 [DEBUG] [Thread-129462] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:54.691 [DEBUG] [Thread-129462] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:54.691 [DEBUG] [Thread-129462] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:54.691 [DEBUG] [Thread-129462] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:23:54.691 [DEBUG] [Thread-129462] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:54.716 [INFO] [Thread-129462] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:54.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:55.496 [DEBUG] [Thread-129462] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:55.496 [DEBUG] [Thread-129462] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:55.496 [DEBUG] [Thread-129462] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:23:55.537 [DEBUG] [Thread-129462] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:55.537 [DEBUG] [Thread-129462] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:55.540 [DEBUG] [Thread-129462] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:55.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:55.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:23:55.554 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:23:55.555 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:23:55.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:55.561 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:23:55.562 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.599387 -999.00  +18.10  24.32     38   +3.50 1 1 1 1 1   887    0 14.57 7.62 ----- 24.3 24.3 198.0 26.6 22.9 -28.5 22.3 -27.8 24.1 -26.8 24.9 -29.2
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:23:55.562 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.599387
2025-09-28T16:23:55.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:23:55.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:23:55.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:23:55.563 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:23:55.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:23:55.564 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:23:46', tmtdew=16.0, humidity=33.77, cloud=0.0, wind=22.96, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:23:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:23:55.564 [DEBUG] [Thread-129462] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:55.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-28T16:23:55.659 [DEBUG] [Thread-129465] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-28T16:23:55.659 [DEBUG] [Thread-129465] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:23:55.674 [DEBUG] [Thread-129465] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:23:55.674 [INFO] [Thread-129465] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:23:55.682 [DEBUG] [Thread-129465] [transport.py] [_log()] client lang: <none>
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] server lang: <none>
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] kex follows: False
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] Compression: none
2025-09-28T16:23:55.683 [DEBUG] [Thread-129465] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:23:55.741 [DEBUG] [Thread-129465] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:23:55.742 [DEBUG] [Thread-129465] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:23:55.742 [DEBUG] [Thread-129465] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:23:55.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:23:55.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:23:55.798 [DEBUG] [Thread-129465] [transport.py] [_log()] userauth is OK
2025-09-28T16:23:55.798 [DEBUG] [Thread-129465] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:23:55.798 [DEBUG] [Thread-129465] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:23:55.798 [DEBUG] [Thread-129465] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:23:55.799 [DEBUG] [Thread-129465] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:23:55.818 [INFO] [Thread-129465] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:23:55.818 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:23:55.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:23:56.774 [DEBUG] [Thread-129465] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:23:56.774 [DEBUG] [Thread-129465] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:23:56.822 [DEBUG] [Thread-129465] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:23:56.822 [DEBUG] [Thread-129465] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:23:56.831 [DEBUG] [Thread-129465] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:23:56.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:23:56.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-28T16:23:56.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-28T16:23:56.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:23:56.857 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:23:56.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:23:56.865 [DEBUG] [Thread-129465] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:23:58.508 [DEBUG] [Thread-129467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:06.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:24:06.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:24:06.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:24:07.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 23, 46), 16.0, 33.77, 0.0, 22.96, 17.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:24:07.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:23:46
2025-09-28T16:24:07.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:24:07.726 [DEBUG] [Thread-129468] [transport.py] [_log()] starting thread (client mode): 0x2e38d690
2025-09-28T16:24:07.726 [DEBUG] [Thread-129468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:07.745 [DEBUG] [Thread-129468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:24:07.745 [INFO] [Thread-129468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] Compression: none
2025-09-28T16:24:07.748 [DEBUG] [Thread-129468] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:07.764 [DEBUG] [Thread-129468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:07.764 [DEBUG] [Thread-129468] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:07.764 [DEBUG] [Thread-129468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:24:07.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:24:07.764 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:07.765 [DEBUG] [Thread-129468] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:07.765 [DEBUG] [Thread-129468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:07.765 [DEBUG] [Thread-129468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:07.765 [DEBUG] [Thread-129468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:24:07.765 [DEBUG] [Thread-129468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:07.774 [INFO] [Thread-129468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:07.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:08.616 [DEBUG] [Thread-129468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:08.616 [DEBUG] [Thread-129468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:08.616 [DEBUG] [Thread-129468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:24:08.657 [DEBUG] [Thread-129468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:08.657 [DEBUG] [Thread-129468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:08.659 [DEBUG] [Thread-129468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:08.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:08.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:24:08.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:24:08.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:24:08.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:08.678 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:24:08.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.599387 -999.00  +18.10  24.32     38   +3.50 1 1 1 1 1   887    0 14.57 7.62 ----- 24.3 24.3 198.0 26.6 22.9 -28.5 22.3 -27.8 24.1 -26.8 24.9 -29.2
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.599387
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:24:08.678 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:23:46', tmtdew=16.0, humidity=33.77, cloud=0.0, wind=22.96, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:23:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:24:08.679 [DEBUG] [Thread-129468] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:08.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-28T16:24:08.765 [DEBUG] [Thread-129471] [transport.py] [_log()] starting thread (client mode): 0x2e363f10
2025-09-28T16:24:08.766 [DEBUG] [Thread-129471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:08.780 [DEBUG] [Thread-129471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:24:08.780 [INFO] [Thread-129471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] Compression: none
2025-09-28T16:24:08.787 [DEBUG] [Thread-129471] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:08.844 [DEBUG] [Thread-129471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:08.844 [DEBUG] [Thread-129471] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:08.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:24:08.845 [DEBUG] [Thread-129471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:24:08.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:08.902 [DEBUG] [Thread-129471] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:08.902 [DEBUG] [Thread-129471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:08.902 [DEBUG] [Thread-129471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:08.902 [DEBUG] [Thread-129471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:24:08.902 [DEBUG] [Thread-129471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:08.916 [INFO] [Thread-129471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:08.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-28T16:24:08.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:09.873 [DEBUG] [Thread-129471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:09.873 [DEBUG] [Thread-129471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:09.921 [DEBUG] [Thread-129471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:09.921 [DEBUG] [Thread-129471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:09.929 [DEBUG] [Thread-129471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:09.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:09.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')
2025-09-28T16:24:09.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-28T16:24:09.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:09.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:09.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:09.961 [DEBUG] [Thread-129471] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:13.558 [DEBUG] [Thread-129473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:19.911 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:19.912 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:19.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:24:19.963 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:24:19.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-28T16:24:20.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 23, 46), 16.0, 33.77, 0.0, 22.96, 17.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:24:20.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:23:46
2025-09-28T16:24:20.664 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:24:20.722 [DEBUG] [Thread-129474 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:20.812 [DEBUG] [Thread-129475] [transport.py] [_log()] starting thread (client mode): 0x2e363f10
2025-09-28T16:24:20.813 [DEBUG] [Thread-129475] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:20.833 [DEBUG] [Thread-129475] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:24:20.833 [INFO] [Thread-129475] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:20.836 [DEBUG] [Thread-129475] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:20.837 [DEBUG] [Thread-129475] [transport.py] [_log()] Compression: none
2025-09-28T16:24:20.837 [DEBUG] [Thread-129475] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:20.853 [DEBUG] [Thread-129475] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:20.853 [DEBUG] [Thread-129475] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:20.854 [DEBUG] [Thread-129475] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:24:20.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:24:20.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:20.855 [DEBUG] [Thread-129475] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:20.855 [DEBUG] [Thread-129475] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:20.855 [DEBUG] [Thread-129475] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:20.856 [DEBUG] [Thread-129475] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:24:20.856 [DEBUG] [Thread-129475] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:20.874 [INFO] [Thread-129475] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:20.875 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:21.487 [DEBUG] [Thread-129475] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:21.487 [DEBUG] [Thread-129475] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:21.487 [DEBUG] [Thread-129475] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:24:21.528 [DEBUG] [Thread-129475] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:21.529 [DEBUG] [Thread-129475] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:21.532 [DEBUG] [Thread-129475] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:21.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:21.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:24:21.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:24:21.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:24:21.553 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:21.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:24:21.555 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600081 -999.00  +17.60  13.63     38   +3.40 1 1 1 1 1   887    0 14.53 7.54 ----- 13.6 13.6 179.0 20.6 22.8 -27.7 22.0 -27.4 23.9 -28.0 24.7 -28.5
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:24:21.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600081
2025-09-28T16:24:21.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:24:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:24:21.557 [DEBUG] [Thread-129475] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:24:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:24:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:24:21.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:23:46', tmtdew=16.0, humidity=33.77, cloud=0.0, wind=22.96, temperature=17.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:24:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:24:21.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:24:21.649 [DEBUG] [Thread-129478] [transport.py] [_log()] starting thread (client mode): 0x2e38d060
2025-09-28T16:24:21.649 [DEBUG] [Thread-129478] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:21.664 [DEBUG] [Thread-129478] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:24:21.664 [INFO] [Thread-129478] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:24:21.672 [DEBUG] [Thread-129478] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:21.672 [DEBUG] [Thread-129478] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:24:21.672 [DEBUG] [Thread-129478] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] Compression: none
2025-09-28T16:24:21.673 [DEBUG] [Thread-129478] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:21.730 [DEBUG] [Thread-129478] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:21.730 [DEBUG] [Thread-129478] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:21.731 [DEBUG] [Thread-129478] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:24:21.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:24:21.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:21.786 [DEBUG] [Thread-129478] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:21.786 [DEBUG] [Thread-129478] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:21.787 [DEBUG] [Thread-129478] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:21.787 [DEBUG] [Thread-129478] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:24:21.787 [DEBUG] [Thread-129478] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:21.806 [INFO] [Thread-129478] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:21.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-28T16:24:21.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:22.770 [DEBUG] [Thread-129478] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:22.771 [DEBUG] [Thread-129478] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:22.818 [DEBUG] [Thread-129478] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:22.818 [DEBUG] [Thread-129478] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:22.827 [DEBUG] [Thread-129478] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:22.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:22.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-28T16:24:22.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') -> 00000000
2025-09-28T16:24:22.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:22.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:22.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:22.861 [DEBUG] [Thread-129478] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:28.587 [DEBUG] [Thread-129480 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:32.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:24:32.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:24:32.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-28T16:24:33.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 24, 18), 15.95, 33.89, 0.0, 22.39, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:24:33.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:24:18
2025-09-28T16:24:33.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:24:33.714 [DEBUG] [Thread-129481] [transport.py] [_log()] starting thread (client mode): 0x2b92ae30
2025-09-28T16:24:33.714 [DEBUG] [Thread-129481] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:33.735 [DEBUG] [Thread-129481] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:24:33.735 [INFO] [Thread-129481] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:24:33.738 [DEBUG] [Thread-129481] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:33.738 [DEBUG] [Thread-129481] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:24:33.738 [DEBUG] [Thread-129481] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:33.738 [DEBUG] [Thread-129481] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] Compression: none
2025-09-28T16:24:33.739 [DEBUG] [Thread-129481] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:33.756 [DEBUG] [Thread-129481] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:33.756 [DEBUG] [Thread-129481] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:33.757 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:24:33.757 [DEBUG] [Thread-129481] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:24:33.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:33.759 [DEBUG] [Thread-129481] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:33.759 [DEBUG] [Thread-129481] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:33.759 [DEBUG] [Thread-129481] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:33.760 [DEBUG] [Thread-129481] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:24:33.760 [DEBUG] [Thread-129481] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:33.776 [INFO] [Thread-129481] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:33.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:34.585 [DEBUG] [Thread-129481] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:34.585 [DEBUG] [Thread-129481] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:34.585 [DEBUG] [Thread-129481] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:24:34.626 [DEBUG] [Thread-129481] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:34.627 [DEBUG] [Thread-129481] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:34.630 [DEBUG] [Thread-129481] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:34.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:34.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:24:34.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:24:34.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:24:34.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:34.653 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:24:34.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600081 -999.00  +17.60  13.63     38   +3.40 1 1 1 1 1   887    0 14.53 7.54 ----- 13.6 13.6 179.0 20.6 22.8 -27.7 22.0 -27.4 23.9 -28.0 24.7 -28.5
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:24:34.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600081
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:24:34.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:24:18', tmtdew=15.95, humidity=33.89, cloud=0.0, wind=22.39, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:24:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:24:34.654 [DEBUG] [Thread-129481] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:34.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-28T16:24:34.738 [DEBUG] [Thread-129484] [transport.py] [_log()] starting thread (client mode): 0x2e3482e0
2025-09-28T16:24:34.738 [DEBUG] [Thread-129484] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:34.753 [DEBUG] [Thread-129484] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:24:34.753 [INFO] [Thread-129484] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:34.761 [DEBUG] [Thread-129484] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:34.762 [DEBUG] [Thread-129484] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:34.763 [DEBUG] [Thread-129484] [transport.py] [_log()] Compression: none
2025-09-28T16:24:34.763 [DEBUG] [Thread-129484] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:34.818 [DEBUG] [Thread-129484] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:34.818 [DEBUG] [Thread-129484] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:34.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:24:34.819 [DEBUG] [Thread-129484] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:24:34.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:34.874 [DEBUG] [Thread-129484] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:34.874 [DEBUG] [Thread-129484] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:34.875 [DEBUG] [Thread-129484] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:34.875 [DEBUG] [Thread-129484] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:24:34.875 [DEBUG] [Thread-129484] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:34.892 [INFO] [Thread-129484] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:34.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-28T16:24:34.893 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:35.842 [DEBUG] [Thread-129484] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:35.842 [DEBUG] [Thread-129484] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:35.890 [DEBUG] [Thread-129484] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:35.890 [DEBUG] [Thread-129484] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:35.899 [DEBUG] [Thread-129484] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:35.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:35.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-28T16:24:35.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-28T16:24:35.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:35.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:35.925 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:35.932 [DEBUG] [Thread-129484] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:43.632 [DEBUG] [Thread-129486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:45.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:24:45.935 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:24:45.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-28T16:24:46.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 24, 18), 15.95, 33.89, 0.0, 22.39, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:24:46.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:24:18
2025-09-28T16:24:46.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:24:46.797 [DEBUG] [Thread-129487] [transport.py] [_log()] starting thread (client mode): 0x2b928820
2025-09-28T16:24:46.797 [DEBUG] [Thread-129487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:46.816 [DEBUG] [Thread-129487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:24:46.816 [INFO] [Thread-129487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:24:46.817 [DEBUG] [Thread-129487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] Compression: none
2025-09-28T16:24:46.818 [DEBUG] [Thread-129487] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:46.825 [DEBUG] [Thread-129487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:46.826 [DEBUG] [Thread-129487] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:46.826 [DEBUG] [Thread-129487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:24:46.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:24:46.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:46.827 [DEBUG] [Thread-129487] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:46.827 [DEBUG] [Thread-129487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:46.827 [DEBUG] [Thread-129487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:46.827 [DEBUG] [Thread-129487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:24:46.827 [DEBUG] [Thread-129487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:46.836 [INFO] [Thread-129487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:46.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:47.460 [DEBUG] [Thread-129487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:47.460 [DEBUG] [Thread-129487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:47.461 [DEBUG] [Thread-129487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:24:47.503 [DEBUG] [Thread-129487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:47.503 [DEBUG] [Thread-129487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:47.505 [DEBUG] [Thread-129487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:47.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:47.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:24:47.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:24:47.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:24:47.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:47.522 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:24:47.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600429 -999.00  +17.60   9.86     38   +3.40 1 1 1 1 1   887    0 14.70 6.97 ----- 9.9 9.9 182.6 18.5 22.8 -28.2 22.1 -26.5 23.9 -27.3 24.8 -28.2
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600429
2025-09-28T16:24:47.522 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:24:47.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:24:47.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:24:47.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:24:47.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:24:47.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:24:18', tmtdew=15.95, humidity=33.89, cloud=0.0, wind=22.39, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:24:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:24:47.523 [DEBUG] [Thread-129487] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:47.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-28T16:24:48.643 [DEBUG] [Thread-129490] [transport.py] [_log()] starting thread (client mode): 0x2b929720
2025-09-28T16:24:48.643 [DEBUG] [Thread-129490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:24:48.658 [DEBUG] [Thread-129490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:24:48.658 [INFO] [Thread-129490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] client lang: <none>
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] server lang: <none>
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] kex follows: False
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] Compression: none
2025-09-28T16:24:48.666 [DEBUG] [Thread-129490] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:24:48.721 [DEBUG] [Thread-129490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:24:48.721 [DEBUG] [Thread-129490] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:24:48.721 [DEBUG] [Thread-129490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:24:48.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:24:48.721 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:24:48.778 [DEBUG] [Thread-129490] [transport.py] [_log()] userauth is OK
2025-09-28T16:24:48.778 [DEBUG] [Thread-129490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:24:48.778 [DEBUG] [Thread-129490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:24:48.778 [DEBUG] [Thread-129490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:24:48.778 [DEBUG] [Thread-129490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:24:48.792 [INFO] [Thread-129490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:24:48.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-28T16:24:48.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:24:49.820 [DEBUG] [Thread-129490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:24:49.820 [DEBUG] [Thread-129490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:24:49.868 [DEBUG] [Thread-129490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:24:49.868 [DEBUG] [Thread-129490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:24:49.876 [DEBUG] [Thread-129490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:24:49.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:24:49.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-28T16:24:49.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') -> 00000000
2025-09-28T16:24:49.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:24:49.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:24:49.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:24:49.908 [DEBUG] [Thread-129490] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:24:58.676 [DEBUG] [Thread-129492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:24:59.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:24:59.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:24:59.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:25:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 24, 50), 15.84, 34.59, 0.0, 15.9, 17.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:25:00.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:24:50
2025-09-28T16:25:00.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:25:00.735 [DEBUG] [Thread-129493] [transport.py] [_log()] starting thread (client mode): 0x2e34b910
2025-09-28T16:25:00.736 [DEBUG] [Thread-129493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:00.751 [DEBUG] [Thread-129493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:25:00.751 [INFO] [Thread-129493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:25:00.754 [DEBUG] [Thread-129493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:00.754 [DEBUG] [Thread-129493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:25:00.754 [DEBUG] [Thread-129493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] Compression: none
2025-09-28T16:25:00.755 [DEBUG] [Thread-129493] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:00.773 [DEBUG] [Thread-129493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:00.773 [DEBUG] [Thread-129493] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:00.774 [DEBUG] [Thread-129493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:25:00.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:25:00.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:00.777 [DEBUG] [Thread-129493] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:00.777 [DEBUG] [Thread-129493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:00.777 [DEBUG] [Thread-129493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:00.777 [DEBUG] [Thread-129493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:25:00.778 [DEBUG] [Thread-129493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:00.802 [INFO] [Thread-129493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:00.803 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:01.565 [DEBUG] [Thread-129493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:01.565 [DEBUG] [Thread-129493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:01.566 [DEBUG] [Thread-129493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:25:01.606 [DEBUG] [Thread-129493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:01.607 [DEBUG] [Thread-129493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:01.609 [DEBUG] [Thread-129493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:01.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:01.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:25:01.617 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:25:01.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:25:01.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:01.626 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:25:01.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600429 -999.00  +17.60   9.86     38   +3.40 1 1 1 1 1   887    0 14.70 6.97 ----- 9.9 9.9 182.6 18.5 22.8 -28.2 22.1 -26.5 23.9 -27.3 24.8 -28.2
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:25:01.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600429
2025-09-28T16:25:01.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:25:01.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:25:01.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:25:01.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:25:01.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:25:01.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:24:50', tmtdew=15.84, humidity=34.59, cloud=0.0, wind=15.9, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:24:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:25:01.629 [DEBUG] [Thread-129493] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:01.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-28T16:25:01.729 [DEBUG] [Thread-129496] [transport.py] [_log()] starting thread (client mode): 0x2b9ba890
2025-09-28T16:25:01.729 [DEBUG] [Thread-129496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:01.744 [DEBUG] [Thread-129496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:25:01.744 [INFO] [Thread-129496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:25:01.751 [DEBUG] [Thread-129496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] Compression: none
2025-09-28T16:25:01.752 [DEBUG] [Thread-129496] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:01.817 [DEBUG] [Thread-129496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:01.817 [DEBUG] [Thread-129496] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:01.818 [DEBUG] [Thread-129496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:25:01.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:25:01.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:01.874 [DEBUG] [Thread-129496] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:01.874 [DEBUG] [Thread-129496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:01.875 [DEBUG] [Thread-129496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:01.875 [DEBUG] [Thread-129496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:25:01.875 [DEBUG] [Thread-129496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:01.894 [INFO] [Thread-129496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:01.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-28T16:25:01.895 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:02.912 [DEBUG] [Thread-129496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:02.912 [DEBUG] [Thread-129496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:02.960 [DEBUG] [Thread-129496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:02.960 [DEBUG] [Thread-129496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:02.968 [DEBUG] [Thread-129496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:02.977 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:02.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-28T16:25:02.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-28T16:25:02.992 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:02.992 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:02.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:03.000 [DEBUG] [Thread-129496] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:12.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:25:12.998 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:25:13.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-28T16:25:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 24, 50), 15.84, 34.59, 0.0, 15.9, 17.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:25:13.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:24:50
2025-09-28T16:25:13.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:25:13.723 [DEBUG] [Thread-129498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:13.828 [DEBUG] [Thread-129499] [transport.py] [_log()] starting thread (client mode): 0x2b9ba4a0
2025-09-28T16:25:13.828 [DEBUG] [Thread-129499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:13.845 [DEBUG] [Thread-129499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:25:13.845 [INFO] [Thread-129499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] Compression: none
2025-09-28T16:25:13.847 [DEBUG] [Thread-129499] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:13.861 [DEBUG] [Thread-129499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:13.862 [DEBUG] [Thread-129499] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:13.862 [DEBUG] [Thread-129499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:25:13.862 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:25:13.863 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:13.864 [DEBUG] [Thread-129499] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:13.864 [DEBUG] [Thread-129499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:13.864 [DEBUG] [Thread-129499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:13.864 [DEBUG] [Thread-129499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:25:13.864 [DEBUG] [Thread-129499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:13.881 [INFO] [Thread-129499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:13.882 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:20.052 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:20.053 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:20.202 [DEBUG] [Thread-129499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:20.202 [DEBUG] [Thread-129499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:20.202 [DEBUG] [Thread-129499] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:25:20.243 [DEBUG] [Thread-129499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:20.243 [DEBUG] [Thread-129499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:20.247 [DEBUG] [Thread-129499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:20.258 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:20.258 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:25:20.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:25:20.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:25:20.282 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:20.284 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:25:20.284 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:20.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:20.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600429 -999.00  +17.60   9.86     38   +3.40 1 1 1 1 1   887    0 14.70 6.97 ----- 9.9 9.9 182.6 18.5 22.8 -28.2 22.1 -26.5 23.9 -27.3 24.8 -28.2
2025-09-28T16:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600429
2025-09-28T16:25:20.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:25:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:25:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:25:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:25:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:25:20.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:24:50', tmtdew=15.84, humidity=34.59, cloud=0.0, wind=15.9, temperature=17.09, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:24:37.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:25:20.286 [DEBUG] [Thread-129499] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:20.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-28T16:25:20.379 [DEBUG] [Thread-129502] [transport.py] [_log()] starting thread (client mode): 0x2e3637c0
2025-09-28T16:25:20.379 [DEBUG] [Thread-129502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:20.394 [DEBUG] [Thread-129502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:25:20.394 [INFO] [Thread-129502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:25:20.401 [DEBUG] [Thread-129502] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:20.402 [DEBUG] [Thread-129502] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] Compression: none
2025-09-28T16:25:20.403 [DEBUG] [Thread-129502] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:20.459 [DEBUG] [Thread-129502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:20.460 [DEBUG] [Thread-129502] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:20.460 [DEBUG] [Thread-129502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:25:20.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:25:20.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:20.514 [DEBUG] [Thread-129502] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:20.514 [DEBUG] [Thread-129502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:20.514 [DEBUG] [Thread-129502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:20.514 [DEBUG] [Thread-129502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:25:20.514 [DEBUG] [Thread-129502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:20.528 [INFO] [Thread-129502] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:20.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-28T16:25:20.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:20.778 [DEBUG] [Thread-129504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:21.459 [DEBUG] [Thread-129502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:21.460 [DEBUG] [Thread-129502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:21.507 [DEBUG] [Thread-129502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:21.507 [DEBUG] [Thread-129502] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:21.515 [DEBUG] [Thread-129502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:21.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:21.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-28T16:25:21.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') -> 00000000
2025-09-28T16:25:21.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:21.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:21.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:21.548 [DEBUG] [Thread-129502] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:28.763 [DEBUG] [Thread-129505 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:25:31.551 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:25:31.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:25:32.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 25, 22), 15.75, 34.76, 0.0, 18.69, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:25:32.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:25:22
2025-09-28T16:25:32.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:25:32.374 [DEBUG] [Thread-129506] [transport.py] [_log()] starting thread (client mode): 0x2e3c1720
2025-09-28T16:25:32.374 [DEBUG] [Thread-129506] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:32.393 [DEBUG] [Thread-129506] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:25:32.394 [INFO] [Thread-129506] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:32.397 [DEBUG] [Thread-129506] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] Compression: none
2025-09-28T16:25:32.398 [DEBUG] [Thread-129506] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:32.416 [DEBUG] [Thread-129506] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:32.416 [DEBUG] [Thread-129506] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:32.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:25:32.417 [DEBUG] [Thread-129506] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:25:32.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:32.419 [DEBUG] [Thread-129506] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:32.420 [DEBUG] [Thread-129506] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:32.420 [DEBUG] [Thread-129506] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:32.420 [DEBUG] [Thread-129506] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:25:32.420 [DEBUG] [Thread-129506] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:32.444 [INFO] [Thread-129506] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:32.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:33.004 [DEBUG] [Thread-129506] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:33.005 [DEBUG] [Thread-129506] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:33.005 [DEBUG] [Thread-129506] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:25:33.045 [DEBUG] [Thread-129506] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:33.045 [DEBUG] [Thread-129506] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:33.048 [DEBUG] [Thread-129506] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:33.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:33.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:25:33.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:25:33.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:25:33.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:33.072 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:25:33.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:33.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600776 -999.00  +17.70  18.07     38   +3.40 1 1 1 1 1   887    0 14.76 6.17 ----- 18.1 18.1 187.2 23.3 22.7 -27.8 22.0 -29.0 23.9 -26.6 24.7 -28.4
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600776
2025-09-28T16:25:33.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:25:33.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:25:33.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:25:33.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:25:33.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:25:33.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:25:22', tmtdew=15.75, humidity=34.76, cloud=0.0, wind=18.69, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:25:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:25:33.074 [DEBUG] [Thread-129506] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:33.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-28T16:25:33.167 [DEBUG] [Thread-129509] [transport.py] [_log()] starting thread (client mode): 0x2b96ee00
2025-09-28T16:25:33.167 [DEBUG] [Thread-129509] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:33.182 [DEBUG] [Thread-129509] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:25:33.182 [INFO] [Thread-129509] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] Compression: none
2025-09-28T16:25:33.190 [DEBUG] [Thread-129509] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:33.250 [DEBUG] [Thread-129509] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:33.250 [DEBUG] [Thread-129509] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:33.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:25:33.251 [DEBUG] [Thread-129509] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:25:33.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:33.306 [DEBUG] [Thread-129509] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:33.306 [DEBUG] [Thread-129509] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:33.306 [DEBUG] [Thread-129509] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:33.306 [DEBUG] [Thread-129509] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:25:33.306 [DEBUG] [Thread-129509] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:33.329 [INFO] [Thread-129509] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:33.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-28T16:25:33.329 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:34.269 [DEBUG] [Thread-129509] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:34.269 [DEBUG] [Thread-129509] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:34.317 [DEBUG] [Thread-129509] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:34.317 [DEBUG] [Thread-129509] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:34.326 [DEBUG] [Thread-129509] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:34.334 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:34.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')
2025-09-28T16:25: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') -> 00000000
2025-09-28T16:25:34.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:34.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:34.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:34.360 [DEBUG] [Thread-129509] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:43.794 [DEBUG] [Thread-129511 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:25:44.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:25:44.363 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:25:44.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-28T16:25:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 25, 22), 15.75, 34.76, 0.0, 18.69, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:25:44.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:25:22
2025-09-28T16:25:45.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:25:45.194 [DEBUG] [Thread-129512] [transport.py] [_log()] starting thread (client mode): 0x2e3c3190
2025-09-28T16:25:45.194 [DEBUG] [Thread-129512] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:25:45.213 [DEBUG] [Thread-129512] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:25:45.213 [INFO] [Thread-129512] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:25:45.216 [DEBUG] [Thread-129512] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] client lang: <none>
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] server lang: <none>
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] kex follows: False
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] Compression: none
2025-09-28T16:25:45.217 [DEBUG] [Thread-129512] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:25:45.235 [DEBUG] [Thread-129512] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:25:45.235 [DEBUG] [Thread-129512] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:25:45.236 [DEBUG] [Thread-129512] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:25:45.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:25:45.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:25:45.238 [DEBUG] [Thread-129512] [transport.py] [_log()] userauth is OK
2025-09-28T16:25:45.238 [DEBUG] [Thread-129512] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:25:45.238 [DEBUG] [Thread-129512] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:25:45.238 [DEBUG] [Thread-129512] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:25:45.238 [DEBUG] [Thread-129512] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:25:45.262 [INFO] [Thread-129512] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:25:45.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:25:45.986 [DEBUG] [Thread-129512] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:25:45.986 [DEBUG] [Thread-129512] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:25:45.986 [DEBUG] [Thread-129512] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:25:46.027 [DEBUG] [Thread-129512] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:25:46.027 [DEBUG] [Thread-129512] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:25:46.030 [DEBUG] [Thread-129512] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:25:46.044 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:25:46.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:25:46.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:25:46.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:25:46.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:25:46.053 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:25:46.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:25:46.053 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:25:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:25:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.600776 -999.00  +17.70  18.07     38   +3.40 1 1 1 1 1   887    0 14.76 6.17 ----- 18.1 18.1 187.2 23.3 22.7 -27.8 22.0 -29.0 23.9 -26.6 24.7 -28.4
2025-09-28T16:25:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:25:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:25:46.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.600776
2025-09-28T16:25:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:25:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:25:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:25:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:25:46.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:25:46.055 [DEBUG] [Thread-129512] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:25:46.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:25:22', tmtdew=15.75, humidity=34.76, cloud=0.0, wind=18.69, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:25:07.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:25:46.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-28T16:25:58.836 [DEBUG] [Thread-129515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:13.867 [DEBUG] [Thread-129516 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:20.195 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:20.197 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:20.836 [DEBUG] [Thread-129517 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:28.896 [DEBUG] [Thread-129518 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:43.923 [DEBUG] [Thread-129519 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:26:58.953 [DEBUG] [Thread-129520 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:13.980 [DEBUG] [Thread-129521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:20.339 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:20.340 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:20.883 [DEBUG] [Thread-129522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:29.009 [DEBUG] [Thread-129523 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:44.036 [DEBUG] [Thread-129524 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:27:58.778 [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-28T16:27:59.069 [DEBUG] [Thread-129525 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:08.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:28:08.789 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:28:08.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-28T16:28:09.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 28, 2), 15.99, 34.31, 0.0, 18.58, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:28:09.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:28:02
2025-09-28T16:28:09.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:28:09.657 [DEBUG] [Thread-129526] [transport.py] [_log()] starting thread (client mode): 0x2e3c37f0
2025-09-28T16:28:09.657 [DEBUG] [Thread-129526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:09.677 [DEBUG] [Thread-129526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:28:09.677 [INFO] [Thread-129526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] Compression: none
2025-09-28T16:28:09.681 [DEBUG] [Thread-129526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:09.698 [DEBUG] [Thread-129526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:09.699 [DEBUG] [Thread-129526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:09.699 [DEBUG] [Thread-129526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:28:09.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:28:09.700 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:09.702 [DEBUG] [Thread-129526] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:09.702 [DEBUG] [Thread-129526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:09.702 [DEBUG] [Thread-129526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:09.702 [DEBUG] [Thread-129526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:28:09.702 [DEBUG] [Thread-129526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:09.726 [INFO] [Thread-129526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:09.726 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:10.371 [DEBUG] [Thread-129526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:10.371 [DEBUG] [Thread-129526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:10.372 [DEBUG] [Thread-129526] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:28:10.413 [DEBUG] [Thread-129526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:10.413 [DEBUG] [Thread-129526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:10.416 [DEBUG] [Thread-129526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:10.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:10.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:28:10.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:28:10.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:28:10.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:10.439 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:28:10.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:10.439 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.602512 -999.00  +16.90  13.05     40   +3.20 1 1 1 1 1   887    0 14.12 -7.44 ----- 13.1 13.1 194.0 14.5 22.3 -27.6 21.6 -27.4 23.5 -26.2 24.4 -29.2
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.602512
2025-09-28T16:28:10.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:28:10.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:28:10.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:28:10.441 [DEBUG] [Thread-129526] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:10.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:28:10.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:28:10.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:28:02', tmtdew=15.99, humidity=34.31, cloud=0.0, wind=18.58, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:27:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:28:10.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-28T16:28:10.536 [DEBUG] [Thread-129529] [transport.py] [_log()] starting thread (client mode): 0x2b9bb790
2025-09-28T16:28:10.536 [DEBUG] [Thread-129529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:10.550 [DEBUG] [Thread-129529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:28:10.551 [INFO] [Thread-129529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:28:10.558 [DEBUG] [Thread-129529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:10.558 [DEBUG] [Thread-129529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:28:10.558 [DEBUG] [Thread-129529] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:10.558 [DEBUG] [Thread-129529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] Compression: none
2025-09-28T16:28:10.559 [DEBUG] [Thread-129529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:10.617 [DEBUG] [Thread-129529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:10.618 [DEBUG] [Thread-129529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:10.618 [DEBUG] [Thread-129529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:28:10.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:28:10.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:10.674 [DEBUG] [Thread-129529] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:10.674 [DEBUG] [Thread-129529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:10.683 [DEBUG] [Thread-129529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:10.683 [DEBUG] [Thread-129529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:28:10.684 [DEBUG] [Thread-129529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:10.703 [INFO] [Thread-129529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:10.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-28T16:28:10.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:11.632 [DEBUG] [Thread-129529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:11.632 [DEBUG] [Thread-129529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:11.680 [DEBUG] [Thread-129529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:11.680 [DEBUG] [Thread-129529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:11.689 [DEBUG] [Thread-129529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:11.697 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:11.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-28T16:28:11.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-28T16:28:11.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:11.715 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:11.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:11.723 [DEBUG] [Thread-129529] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:14.095 [DEBUG] [Thread-129531 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:20.480 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:20.481 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:20.939 [DEBUG] [Thread-129532 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:21.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:28:21.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:28:21.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-28T16:28:22.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 28, 2), 15.99, 34.31, 0.0, 18.58, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:28:22.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:28:02
2025-09-28T16:28:22.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:28:22.581 [DEBUG] [Thread-129533] [transport.py] [_log()] starting thread (client mode): 0x2e3c0250
2025-09-28T16:28:22.581 [DEBUG] [Thread-129533] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:22.602 [DEBUG] [Thread-129533] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:28:22.602 [INFO] [Thread-129533] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:28:22.605 [DEBUG] [Thread-129533] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] Compression: none
2025-09-28T16:28:22.606 [DEBUG] [Thread-129533] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:22.622 [DEBUG] [Thread-129533] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:22.622 [DEBUG] [Thread-129533] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:22.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:28:22.623 [DEBUG] [Thread-129533] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:28:22.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:22.625 [DEBUG] [Thread-129533] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:22.625 [DEBUG] [Thread-129533] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:22.626 [DEBUG] [Thread-129533] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:22.626 [DEBUG] [Thread-129533] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:28:22.626 [DEBUG] [Thread-129533] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:22.649 [INFO] [Thread-129533] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:22.650 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:23.467 [DEBUG] [Thread-129533] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:23.468 [DEBUG] [Thread-129533] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:23.468 [DEBUG] [Thread-129533] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:28:23.508 [DEBUG] [Thread-129533] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:23.508 [DEBUG] [Thread-129533] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:23.511 [DEBUG] [Thread-129533] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:23.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:23.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:28:23.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:28:23.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:28:23.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:23.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:28:23.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:23.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.602512 -999.00  +16.90  13.05     40   +3.20 1 1 1 1 1   887    0 14.12 -7.44 ----- 13.1 13.1 194.0 14.5 22.3 -27.6 21.6 -27.4 23.5 -26.2 24.4 -29.2
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.602512
2025-09-28T16:28:23.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:28:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:28:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:28:23.535 [DEBUG] [Thread-129533] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:23.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:28:23.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:28:23.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:28:02', tmtdew=15.99, humidity=34.31, cloud=0.0, wind=18.58, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:27:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:28:23.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-28T16:28:23.626 [DEBUG] [Thread-129536] [transport.py] [_log()] starting thread (client mode): 0x2b96efb0
2025-09-28T16:28:23.626 [DEBUG] [Thread-129536] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:23.646 [DEBUG] [Thread-129536] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:28:23.646 [INFO] [Thread-129536] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:23.654 [DEBUG] [Thread-129536] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:23.655 [DEBUG] [Thread-129536] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:23.656 [DEBUG] [Thread-129536] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:23.656 [DEBUG] [Thread-129536] [transport.py] [_log()] Compression: none
2025-09-28T16:28:23.656 [DEBUG] [Thread-129536] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:23.711 [DEBUG] [Thread-129536] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:23.711 [DEBUG] [Thread-129536] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:23.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:28:23.712 [DEBUG] [Thread-129536] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:28:23.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:23.766 [DEBUG] [Thread-129536] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:23.766 [DEBUG] [Thread-129536] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:23.766 [DEBUG] [Thread-129536] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:23.767 [DEBUG] [Thread-129536] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:28:23.767 [DEBUG] [Thread-129536] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:23.785 [INFO] [Thread-129536] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:23.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-28T16:28:23.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:24.779 [DEBUG] [Thread-129536] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:24.779 [DEBUG] [Thread-129536] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:24.827 [DEBUG] [Thread-129536] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:24.827 [DEBUG] [Thread-129536] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:24.835 [DEBUG] [Thread-129536] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:24.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:24.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-28T16:28:24.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-28T16:28:24.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:24.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:24.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:24.868 [DEBUG] [Thread-129536] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:29.150 [DEBUG] [Thread-129538 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:34.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:28:34.869 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:28:34.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:28:35.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 28, 2), 15.99, 34.31, 0.0, 18.58, 17.25, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:28:35.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:28:02
2025-09-28T16:28:35.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:28:35.801 [DEBUG] [Thread-129539] [transport.py] [_log()] starting thread (client mode): 0x2b9544f0
2025-09-28T16:28:35.801 [DEBUG] [Thread-129539] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:35.821 [DEBUG] [Thread-129539] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:28:35.821 [INFO] [Thread-129539] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:35.824 [DEBUG] [Thread-129539] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:35.825 [DEBUG] [Thread-129539] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:35.825 [DEBUG] [Thread-129539] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:35.825 [DEBUG] [Thread-129539] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:35.825 [DEBUG] [Thread-129539] [transport.py] [_log()] Compression: none
2025-09-28T16:28:35.825 [DEBUG] [Thread-129539] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:35.840 [DEBUG] [Thread-129539] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:35.840 [DEBUG] [Thread-129539] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:35.841 [DEBUG] [Thread-129539] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:28:35.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:28:35.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:35.841 [DEBUG] [Thread-129539] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:35.842 [DEBUG] [Thread-129539] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:35.842 [DEBUG] [Thread-129539] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:35.842 [DEBUG] [Thread-129539] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:28:35.842 [DEBUG] [Thread-129539] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:35.852 [INFO] [Thread-129539] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:35.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:36.690 [DEBUG] [Thread-129539] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:36.691 [DEBUG] [Thread-129539] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:36.691 [DEBUG] [Thread-129539] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:28:36.731 [DEBUG] [Thread-129539] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:36.731 [DEBUG] [Thread-129539] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:36.735 [DEBUG] [Thread-129539] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:36.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:36.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:28:36.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:28:36.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:28:36.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:36.756 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:28:36.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:36.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:28:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.602512 -999.00  +16.90  13.05     40   +3.20 1 1 1 1 1   887    0 14.12 -7.44 ----- 13.1 13.1 194.0 14.5 22.3 -27.6 21.6 -27.4 23.5 -26.2 24.4 -29.2
2025-09-28T16:28:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:28:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:28:36.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.602512
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:28:36.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:28:02', tmtdew=15.99, humidity=34.31, cloud=0.0, wind=18.58, temperature=17.25, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:27:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:28:36.759 [DEBUG] [Thread-129539] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:36.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:28:36.852 [DEBUG] [Thread-129542] [transport.py] [_log()] starting thread (client mode): 0x2e3629e0
2025-09-28T16:28:36.852 [DEBUG] [Thread-129542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:36.866 [DEBUG] [Thread-129542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:28:36.866 [INFO] [Thread-129542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:28:36.874 [DEBUG] [Thread-129542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:36.874 [DEBUG] [Thread-129542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:28:36.874 [DEBUG] [Thread-129542] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] Compression: none
2025-09-28T16:28:36.875 [DEBUG] [Thread-129542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:36.936 [DEBUG] [Thread-129542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:36.937 [DEBUG] [Thread-129542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:36.937 [DEBUG] [Thread-129542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:28:36.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:28:36.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:36.994 [DEBUG] [Thread-129542] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:36.994 [DEBUG] [Thread-129542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:36.995 [DEBUG] [Thread-129542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:36.995 [DEBUG] [Thread-129542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:28:36.995 [DEBUG] [Thread-129542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:37.014 [INFO] [Thread-129542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:37.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-28T16:28:37.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:38.006 [DEBUG] [Thread-129542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:38.006 [DEBUG] [Thread-129542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:38.054 [DEBUG] [Thread-129542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:38.054 [DEBUG] [Thread-129542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:38.063 [DEBUG] [Thread-129542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:38.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:38.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-28T16:28:38.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T16:28:38.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:38.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:38.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:38.098 [DEBUG] [Thread-129542] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:44.183 [DEBUG] [Thread-129544 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:28:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:28:48.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:28:48.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-28T16:28:48.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 28, 34), 15.98, 34.22, 0.0, 13.62, 17.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:28:48.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:28:34
2025-09-28T16:28:48.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:28:49.033 [DEBUG] [Thread-129545] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9d0
2025-09-28T16:28:49.033 [DEBUG] [Thread-129545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:49.053 [DEBUG] [Thread-129545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:28:49.053 [INFO] [Thread-129545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:28:49.056 [DEBUG] [Thread-129545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] Compression: none
2025-09-28T16:28:49.057 [DEBUG] [Thread-129545] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:49.073 [DEBUG] [Thread-129545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:49.073 [DEBUG] [Thread-129545] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:49.074 [DEBUG] [Thread-129545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:28:49.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:28:49.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:49.074 [DEBUG] [Thread-129545] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:49.074 [DEBUG] [Thread-129545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:49.075 [DEBUG] [Thread-129545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:49.075 [DEBUG] [Thread-129545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:28:49.075 [DEBUG] [Thread-129545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:49.088 [INFO] [Thread-129545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:49.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:49.678 [DEBUG] [Thread-129545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:49.678 [DEBUG] [Thread-129545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:49.678 [DEBUG] [Thread-129545] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:28:49.719 [DEBUG] [Thread-129545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:49.719 [DEBUG] [Thread-129545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:49.722 [DEBUG] [Thread-129545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:49.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:49.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:28:49.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:28:49.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:28:49.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:49.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:28:49.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603206 -999.00  +17.00   7.60     40   +3.30 1 1 1 1 1   887    0 13.74 -15.29 ----- 7.6 7.6 199.1 25.2 22.2 -27.9 21.4 -28.5 23.4 -27.4 24.3 -28.4
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603206
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:28:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:28:34', tmtdew=15.98, humidity=34.22, cloud=0.0, wind=13.62, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:28:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:28:49.740 [DEBUG] [Thread-129545] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:49.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-28T16:28:49.844 [DEBUG] [Thread-129548] [transport.py] [_log()] starting thread (client mode): 0x2e3c1360
2025-09-28T16:28:49.845 [DEBUG] [Thread-129548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:28:49.859 [DEBUG] [Thread-129548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:28:49.859 [INFO] [Thread-129548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] client lang: <none>
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] server lang: <none>
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] kex follows: False
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] Compression: none
2025-09-28T16:28:49.867 [DEBUG] [Thread-129548] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:28:49.925 [DEBUG] [Thread-129548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:28:49.925 [DEBUG] [Thread-129548] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:28:49.926 [DEBUG] [Thread-129548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:28:49.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:28:49.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:28:49.986 [DEBUG] [Thread-129548] [transport.py] [_log()] userauth is OK
2025-09-28T16:28:49.986 [DEBUG] [Thread-129548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:28:49.986 [DEBUG] [Thread-129548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:28:49.986 [DEBUG] [Thread-129548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:28:49.986 [DEBUG] [Thread-129548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:28:50.003 [INFO] [Thread-129548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:28:50.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-28T16:28:50.004 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:28:50.995 [DEBUG] [Thread-129548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:28:50.995 [DEBUG] [Thread-129548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:28:51.043 [DEBUG] [Thread-129548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:28:51.043 [DEBUG] [Thread-129548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:28:51.051 [DEBUG] [Thread-129548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:28:51.059 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:28:51.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-28T16:28:51.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-28T16:28:51.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:28:51.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:28:51.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:28:51.083 [DEBUG] [Thread-129548] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:28:59.225 [DEBUG] [Thread-129550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:01.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:29:01.086 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:29:01.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-28T16:29:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 28, 34), 15.98, 34.22, 0.0, 13.62, 17.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:29:01.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:28:34
2025-09-28T16:29:01.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:29:01.959 [DEBUG] [Thread-129551] [transport.py] [_log()] starting thread (client mode): 0x2e38d060
2025-09-28T16:29:01.960 [DEBUG] [Thread-129551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:01.980 [DEBUG] [Thread-129551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:29:01.981 [INFO] [Thread-129551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:01.984 [DEBUG] [Thread-129551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:01.985 [DEBUG] [Thread-129551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:01.986 [DEBUG] [Thread-129551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:01.986 [DEBUG] [Thread-129551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:01.986 [DEBUG] [Thread-129551] [transport.py] [_log()] Compression: none
2025-09-28T16:29:01.986 [DEBUG] [Thread-129551] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:01.995 [DEBUG] [Thread-129551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:01.996 [DEBUG] [Thread-129551] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:01.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:29:01.997 [DEBUG] [Thread-129551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:29:01.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:01.999 [DEBUG] [Thread-129551] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:01.999 [DEBUG] [Thread-129551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:01.999 [DEBUG] [Thread-129551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:01.999 [DEBUG] [Thread-129551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:29:01.999 [DEBUG] [Thread-129551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:02.017 [INFO] [Thread-129551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:02.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:02.803 [DEBUG] [Thread-129551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:02.804 [DEBUG] [Thread-129551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:02.804 [DEBUG] [Thread-129551] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:29:02.844 [DEBUG] [Thread-129551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:02.844 [DEBUG] [Thread-129551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:02.847 [DEBUG] [Thread-129551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:02.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:02.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:29:02.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:29:02.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:29:02.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:02.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:29:02.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603206 -999.00  +17.00   7.60     40   +3.30 1 1 1 1 1   887    0 13.74 -15.29 ----- 7.6 7.6 199.1 25.2 22.2 -27.9 21.4 -28.5 23.4 -27.4 24.3 -28.4
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603206
2025-09-28T16:29:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:29:02.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:29:02.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:29:02.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:29:02.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:29:02.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:28:34', tmtdew=15.98, humidity=34.22, cloud=0.0, wind=13.62, temperature=17.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:28:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:29:02.869 [DEBUG] [Thread-129551] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:02.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-28T16:29:02.983 [DEBUG] [Thread-129554] [transport.py] [_log()] starting thread (client mode): 0x2b96efb0
2025-09-28T16:29:02.983 [DEBUG] [Thread-129554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:02.999 [DEBUG] [Thread-129554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:29:02.999 [INFO] [Thread-129554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:29:03.006 [DEBUG] [Thread-129554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:03.006 [DEBUG] [Thread-129554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] Compression: none
2025-09-28T16:29:03.007 [DEBUG] [Thread-129554] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:03.074 [DEBUG] [Thread-129554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:03.075 [DEBUG] [Thread-129554] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:03.075 [DEBUG] [Thread-129554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:29:03.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:29:03.076 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:03.130 [DEBUG] [Thread-129554] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:03.130 [DEBUG] [Thread-129554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:03.130 [DEBUG] [Thread-129554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:03.131 [DEBUG] [Thread-129554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:29:03.131 [DEBUG] [Thread-129554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:03.149 [INFO] [Thread-129554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:03.149 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:29:03.150 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:04.077 [DEBUG] [Thread-129554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:04.077 [DEBUG] [Thread-129554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:04.125 [DEBUG] [Thread-129554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:04.125 [DEBUG] [Thread-129554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:04.134 [DEBUG] [Thread-129554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:04.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:04.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-28T16:29:04.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-28T16:29:04.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:04.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:04.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:04.169 [DEBUG] [Thread-129554] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:14.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:29:14.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:29:14.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:29:14.289 [DEBUG] [Thread-129556 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:14.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 29, 6), 16.02, 34.14, 0.0, 15.14, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:29:14.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:29:06
2025-09-28T16:29:14.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:29:15.041 [DEBUG] [Thread-129557] [transport.py] [_log()] starting thread (client mode): 0x2b96f460
2025-09-28T16:29:15.041 [DEBUG] [Thread-129557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:15.062 [DEBUG] [Thread-129557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:29:15.062 [INFO] [Thread-129557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:29:15.065 [DEBUG] [Thread-129557] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:15.065 [DEBUG] [Thread-129557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] Compression: none
2025-09-28T16:29:15.066 [DEBUG] [Thread-129557] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:15.088 [DEBUG] [Thread-129557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:15.089 [DEBUG] [Thread-129557] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:15.090 [DEBUG] [Thread-129557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:29:15.090 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:29:15.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:15.092 [DEBUG] [Thread-129557] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:15.092 [DEBUG] [Thread-129557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:15.092 [DEBUG] [Thread-129557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:15.092 [DEBUG] [Thread-129557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:29:15.092 [DEBUG] [Thread-129557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:15.106 [INFO] [Thread-129557] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:15.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:15.749 [DEBUG] [Thread-129557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:15.749 [DEBUG] [Thread-129557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:15.749 [DEBUG] [Thread-129557] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:29:15.790 [DEBUG] [Thread-129557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:15.790 [DEBUG] [Thread-129557] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:15.792 [DEBUG] [Thread-129557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:15.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:15.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:29:15.805 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:29:15.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:29:15.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:15.812 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:29:15.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:15.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:15.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:29:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603554 -999.00  +17.20   9.30     39   +3.40 1 1 1 1 1   887    0 13.80 -17.89 ----- 9.3 9.3 208.7 18.0 22.3 -27.3 21.6 -26.4 23.5 -26.9 24.4 -27.5
2025-09-28T16:29:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:29:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:29:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603554
2025-09-28T16:29:15.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:29:15.813 [DEBUG] [Thread-129557] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:15.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:29:15.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:29:15.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:29:15.814 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:29:15.815 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:29:06', tmtdew=16.02, humidity=34.14, cloud=0.0, wind=15.14, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:29:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:29:15.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-28T16:29:15.922 [DEBUG] [Thread-129560] [transport.py] [_log()] starting thread (client mode): 0x2b9540d0
2025-09-28T16:29:15.922 [DEBUG] [Thread-129560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:15.936 [DEBUG] [Thread-129560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:29:15.937 [INFO] [Thread-129560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:15.944 [DEBUG] [Thread-129560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] Compression: none
2025-09-28T16:29:15.945 [DEBUG] [Thread-129560] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:16.002 [DEBUG] [Thread-129560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:16.003 [DEBUG] [Thread-129560] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:16.003 [DEBUG] [Thread-129560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:29:16.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:29:16.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:16.058 [DEBUG] [Thread-129560] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:16.058 [DEBUG] [Thread-129560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:16.059 [DEBUG] [Thread-129560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:16.059 [DEBUG] [Thread-129560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:29:16.059 [DEBUG] [Thread-129560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:16.077 [INFO] [Thread-129560] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:16.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-28T16:29:16.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:16.991 [DEBUG] [Thread-129560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:16.992 [DEBUG] [Thread-129560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:17.039 [DEBUG] [Thread-129560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:17.039 [DEBUG] [Thread-129560] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:17.048 [DEBUG] [Thread-129560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:17.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:17.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-28T16:29:17.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-28T16:29:17.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:17.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:17.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:17.083 [DEBUG] [Thread-129560] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:20.622 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:20.623 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:20.991 [DEBUG] [Thread-129562 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:27.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:29:27.085 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:29:27.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-28T16:29:27.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 29, 6), 16.02, 34.14, 0.0, 15.14, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:29:27.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:29:06
2025-09-28T16:29:27.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:29:27.969 [DEBUG] [Thread-129563] [transport.py] [_log()] starting thread (client mode): 0x2b9b97b0
2025-09-28T16:29:27.969 [DEBUG] [Thread-129563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:27.988 [DEBUG] [Thread-129563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:29:27.989 [INFO] [Thread-129563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] Compression: none
2025-09-28T16:29:27.992 [DEBUG] [Thread-129563] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:28.007 [DEBUG] [Thread-129563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:28.007 [DEBUG] [Thread-129563] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:28.007 [DEBUG] [Thread-129563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:29:28.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:29:28.008 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:28.008 [DEBUG] [Thread-129563] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:28.008 [DEBUG] [Thread-129563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:28.008 [DEBUG] [Thread-129563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:28.008 [DEBUG] [Thread-129563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:29:28.008 [DEBUG] [Thread-129563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:28.018 [INFO] [Thread-129563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:28.019 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:28.751 [DEBUG] [Thread-129563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:28.751 [DEBUG] [Thread-129563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:28.752 [DEBUG] [Thread-129563] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:29:28.793 [DEBUG] [Thread-129563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:28.793 [DEBUG] [Thread-129563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:28.795 [DEBUG] [Thread-129563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:28.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:28.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:29:28.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:29:28.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:29:28.810 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:28.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:29:28.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:28.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603554 -999.00  +17.20   9.30     39   +3.40 1 1 1 1 1   887    0 13.80 -17.89 ----- 9.3 9.3 208.7 18.0 22.3 -27.3 21.6 -26.4 23.5 -26.9 24.4 -27.5
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603554
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:29:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:29:06', tmtdew=16.02, humidity=34.14, cloud=0.0, wind=15.14, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:29:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:29:28.811 [DEBUG] [Thread-129563] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:28.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-28T16:29:28.903 [DEBUG] [Thread-129566] [transport.py] [_log()] starting thread (client mode): 0x2b9ba920
2025-09-28T16:29:28.903 [DEBUG] [Thread-129566] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:28.918 [DEBUG] [Thread-129566] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:29:28.918 [INFO] [Thread-129566] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:29:28.925 [DEBUG] [Thread-129566] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:28.925 [DEBUG] [Thread-129566] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:29:28.925 [DEBUG] [Thread-129566] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:28.925 [DEBUG] [Thread-129566] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] Compression: none
2025-09-28T16:29:28.926 [DEBUG] [Thread-129566] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:28.981 [DEBUG] [Thread-129566] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:28.981 [DEBUG] [Thread-129566] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:28.981 [DEBUG] [Thread-129566] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:29:28.981 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:29:28.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:29.038 [DEBUG] [Thread-129566] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:29.038 [DEBUG] [Thread-129566] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:29.038 [DEBUG] [Thread-129566] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:29.038 [DEBUG] [Thread-129566] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:29:29.038 [DEBUG] [Thread-129566] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:29.052 [INFO] [Thread-129566] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:29.052 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:29:29.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:29.321 [DEBUG] [Thread-129568 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:30.007 [DEBUG] [Thread-129566] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:30.007 [DEBUG] [Thread-129566] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:30.056 [DEBUG] [Thread-129566] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:30.056 [DEBUG] [Thread-129566] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:30.065 [DEBUG] [Thread-129566] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:30.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:30.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')
2025-09-28T16:29: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-28T16:29:30.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:30.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:30.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:30.103 [DEBUG] [Thread-129566] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:40.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:29:40.104 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:29:40.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-28T16:29:40.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 29, 6), 16.02, 34.14, 0.0, 15.14, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:29:40.696 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:29:06
2025-09-28T16:29:40.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:29:40.964 [DEBUG] [Thread-129569] [transport.py] [_log()] starting thread (client mode): 0x2e3ddf90
2025-09-28T16:29:40.964 [DEBUG] [Thread-129569] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:40.984 [DEBUG] [Thread-129569] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:29:40.984 [INFO] [Thread-129569] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:29:40.987 [DEBUG] [Thread-129569] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:40.987 [DEBUG] [Thread-129569] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:29:40.987 [DEBUG] [Thread-129569] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] Compression: none
2025-09-28T16:29:40.988 [DEBUG] [Thread-129569] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:41.006 [DEBUG] [Thread-129569] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:41.007 [DEBUG] [Thread-129569] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:41.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:29:41.008 [DEBUG] [Thread-129569] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:29:41.009 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:41.010 [DEBUG] [Thread-129569] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:41.010 [DEBUG] [Thread-129569] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:41.010 [DEBUG] [Thread-129569] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:41.011 [DEBUG] [Thread-129569] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:29:41.011 [DEBUG] [Thread-129569] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:41.035 [INFO] [Thread-129569] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:41.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:41.836 [DEBUG] [Thread-129569] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:41.836 [DEBUG] [Thread-129569] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:41.836 [DEBUG] [Thread-129569] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:29:41.877 [DEBUG] [Thread-129569] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:41.878 [DEBUG] [Thread-129569] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:41.880 [DEBUG] [Thread-129569] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:41.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:41.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:29:41.894 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:29:41.895 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:29:41.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:41.902 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:29:41.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:41.902 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603554 -999.00  +17.20   9.30     39   +3.40 1 1 1 1 1   887    0 13.80 -17.89 ----- 9.3 9.3 208.7 18.0 22.3 -27.3 21.6 -26.4 23.5 -26.9 24.4 -27.5
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603554
2025-09-28T16:29:41.903 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:29:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:29:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:29:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:29:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:29:41.904 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:29:06', tmtdew=16.02, humidity=34.14, cloud=0.0, wind=15.14, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:29:07.066', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:29:41.904 [DEBUG] [Thread-129569] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:41.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-28T16:29:42.009 [DEBUG] [Thread-129572] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-28T16:29:42.009 [DEBUG] [Thread-129572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:42.024 [DEBUG] [Thread-129572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:29:42.025 [INFO] [Thread-129572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:42.032 [DEBUG] [Thread-129572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:42.033 [DEBUG] [Thread-129572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:42.033 [DEBUG] [Thread-129572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:42.033 [DEBUG] [Thread-129572] [transport.py] [_log()] Compression: none
2025-09-28T16:29:42.033 [DEBUG] [Thread-129572] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:42.090 [DEBUG] [Thread-129572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:42.090 [DEBUG] [Thread-129572] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:42.090 [DEBUG] [Thread-129572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:29:42.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:29:42.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:42.146 [DEBUG] [Thread-129572] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:42.146 [DEBUG] [Thread-129572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:42.147 [DEBUG] [Thread-129572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:42.147 [DEBUG] [Thread-129572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:29:42.147 [DEBUG] [Thread-129572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:42.166 [INFO] [Thread-129572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:42.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-28T16:29:42.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:43.104 [DEBUG] [Thread-129572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:43.104 [DEBUG] [Thread-129572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:43.152 [DEBUG] [Thread-129572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:43.152 [DEBUG] [Thread-129572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:43.161 [DEBUG] [Thread-129572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:43.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:43.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-28T16:29:43.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-28T16:29:43.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:43.187 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:43.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:43.195 [DEBUG] [Thread-129572] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:44.371 [DEBUG] [Thread-129574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:29:53.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:29:53.198 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:29:53.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:29:53.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 29, 38), 16.16, 33.98, 0.0, 17.27, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:29:53.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:29:38
2025-09-28T16:29:53.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:29:54.076 [DEBUG] [Thread-129575] [transport.py] [_log()] starting thread (client mode): 0x2b9ba050
2025-09-28T16:29:54.076 [DEBUG] [Thread-129575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:54.096 [DEBUG] [Thread-129575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:29:54.097 [INFO] [Thread-129575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:29:54.099 [DEBUG] [Thread-129575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:54.099 [DEBUG] [Thread-129575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:29:54.099 [DEBUG] [Thread-129575] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:54.099 [DEBUG] [Thread-129575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:54.099 [DEBUG] [Thread-129575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] Compression: none
2025-09-28T16:29:54.100 [DEBUG] [Thread-129575] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:54.119 [DEBUG] [Thread-129575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:54.119 [DEBUG] [Thread-129575] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:54.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:29:54.120 [DEBUG] [Thread-129575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:29:54.121 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:54.122 [DEBUG] [Thread-129575] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:54.122 [DEBUG] [Thread-129575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:54.122 [DEBUG] [Thread-129575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:54.122 [DEBUG] [Thread-129575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:29:54.122 [DEBUG] [Thread-129575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:54.146 [INFO] [Thread-129575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:54.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:54.817 [DEBUG] [Thread-129575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:54.817 [DEBUG] [Thread-129575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:54.817 [DEBUG] [Thread-129575] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:29:54.858 [DEBUG] [Thread-129575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:54.858 [DEBUG] [Thread-129575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:54.861 [DEBUG] [Thread-129575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:54.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:54.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:29:54.874 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:29:54.876 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:29:54.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:54.883 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:29:54.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:54.884 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:54.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:29:54.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603901 -999.00  +17.40   7.23     39   +3.40 1 1 1 1 1   887    0 13.67 -18.66 ----- 7.2 7.2 220.6 18.3 22.3 -28.8 21.8 -26.5 23.5 -26.6 24.4 -28.2
2025-09-28T16:29:54.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:29:54.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:29:54.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603901
2025-09-28T16:29:54.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:29:54.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:29:54.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:29:54.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:29:54.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:29:54.886 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:29:38', tmtdew=16.16, humidity=33.98, cloud=0.0, wind=17.27, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:29:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:29:54.886 [DEBUG] [Thread-129575] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:54.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-28T16:29:54.988 [DEBUG] [Thread-129578] [transport.py] [_log()] starting thread (client mode): 0x2b9b8160
2025-09-28T16:29:54.988 [DEBUG] [Thread-129578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:29:55.002 [DEBUG] [Thread-129578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:29:55.003 [INFO] [Thread-129578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:29:55.010 [DEBUG] [Thread-129578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:29:55.010 [DEBUG] [Thread-129578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] client lang: <none>
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] server lang: <none>
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] kex follows: False
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:29:55.011 [DEBUG] [Thread-129578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:29:55.012 [DEBUG] [Thread-129578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:29:55.012 [DEBUG] [Thread-129578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:29:55.012 [DEBUG] [Thread-129578] [transport.py] [_log()] Compression: none
2025-09-28T16:29:55.012 [DEBUG] [Thread-129578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:29:55.070 [DEBUG] [Thread-129578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:29:55.070 [DEBUG] [Thread-129578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:29:55.071 [DEBUG] [Thread-129578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:29:55.071 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:29:55.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:29:55.126 [DEBUG] [Thread-129578] [transport.py] [_log()] userauth is OK
2025-09-28T16:29:55.127 [DEBUG] [Thread-129578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:29:55.127 [DEBUG] [Thread-129578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:29:55.127 [DEBUG] [Thread-129578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:29:55.127 [DEBUG] [Thread-129578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:29:55.146 [INFO] [Thread-129578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:29:55.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-28T16:29:55.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:29:56.091 [DEBUG] [Thread-129578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:29:56.091 [DEBUG] [Thread-129578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:29:56.139 [DEBUG] [Thread-129578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:29:56.139 [DEBUG] [Thread-129578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:29:56.147 [DEBUG] [Thread-129578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:29:56.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:29:56.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-28T16:29:56.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-28T16:29:56.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:29:56.172 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:29:56.173 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:29:56.180 [DEBUG] [Thread-129578] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:29:59.417 [DEBUG] [Thread-129580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:06.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:30:06.182 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:30:06.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-28T16:30:06.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 29, 38), 16.16, 33.98, 0.0, 17.27, 17.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:30:06.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:29:38
2025-09-28T16:30:06.915 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:30:07.075 [DEBUG] [Thread-129581] [transport.py] [_log()] starting thread (client mode): 0x2b954eb0
2025-09-28T16:30:07.075 [DEBUG] [Thread-129581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:07.097 [DEBUG] [Thread-129581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:30:07.097 [INFO] [Thread-129581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:07.100 [DEBUG] [Thread-129581] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] Compression: none
2025-09-28T16:30:07.101 [DEBUG] [Thread-129581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:07.118 [DEBUG] [Thread-129581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:07.118 [DEBUG] [Thread-129581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:07.119 [DEBUG] [Thread-129581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:30:07.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:30:07.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:07.119 [DEBUG] [Thread-129581] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:07.119 [DEBUG] [Thread-129581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:07.119 [DEBUG] [Thread-129581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:07.119 [DEBUG] [Thread-129581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:30:07.120 [DEBUG] [Thread-129581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:07.132 [INFO] [Thread-129581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:07.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:14.473 [DEBUG] [Thread-129583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:15.565 [DEBUG] [Thread-129581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:15.565 [DEBUG] [Thread-129581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:15.565 [DEBUG] [Thread-129581] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:30:15.605 [DEBUG] [Thread-129581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:15.605 [DEBUG] [Thread-129581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:15.609 [DEBUG] [Thread-129581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:15.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:15.622 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:30:15.624 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:30:15.626 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:30:15.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:15.655 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:30:15.655 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:15.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.603901 -999.00  +17.40   7.23     39   +3.40 1 1 1 1 1   887    0 13.67 -18.66 ----- 7.2 7.2 220.6 18.3 22.3 -28.8 21.8 -26.5 23.5 -26.6 24.4 -28.2
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.603901
2025-09-28T16:30:15.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:30:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:30:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:30:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:30:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:30:15.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:29:38', tmtdew=16.16, humidity=33.98, cloud=0.0, wind=17.27, temperature=17.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:29:37.046', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:30:15.657 [DEBUG] [Thread-129581] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:15.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-28T16:30:15.764 [DEBUG] [Thread-129585] [transport.py] [_log()] starting thread (client mode): 0x2b96c430
2025-09-28T16:30:15.764 [DEBUG] [Thread-129585] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:15.778 [DEBUG] [Thread-129585] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:30:15.778 [INFO] [Thread-129585] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:30:15.785 [DEBUG] [Thread-129585] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:15.786 [DEBUG] [Thread-129585] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:15.787 [DEBUG] [Thread-129585] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:15.787 [DEBUG] [Thread-129585] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:15.787 [DEBUG] [Thread-129585] [transport.py] [_log()] Compression: none
2025-09-28T16:30:15.787 [DEBUG] [Thread-129585] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:15.846 [DEBUG] [Thread-129585] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:15.846 [DEBUG] [Thread-129585] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:15.847 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:30:15.847 [DEBUG] [Thread-129585] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:30:15.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:15.902 [DEBUG] [Thread-129585] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:15.902 [DEBUG] [Thread-129585] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:15.903 [DEBUG] [Thread-129585] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:15.903 [DEBUG] [Thread-129585] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:30:15.903 [DEBUG] [Thread-129585] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:15.922 [INFO] [Thread-129585] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:15.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:30:15.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:16.879 [DEBUG] [Thread-129585] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:16.879 [DEBUG] [Thread-129585] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:16.927 [DEBUG] [Thread-129585] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:16.928 [DEBUG] [Thread-129585] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:16.936 [DEBUG] [Thread-129585] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:16.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:16.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-28T16:30:16.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-28T16:30:16.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:16.963 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:16.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:16.972 [DEBUG] [Thread-129585] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:20.766 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:20.767 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:21.043 [DEBUG] [Thread-129587 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:26.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:30:26.974 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:30:26.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-28T16:30:27.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 30, 10), 16.29, 33.68, 0.0, 14.54, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:30:27.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:30:10
2025-09-28T16:30:27.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:30:27.827 [DEBUG] [Thread-129588] [transport.py] [_log()] starting thread (client mode): 0x2e360220
2025-09-28T16:30:27.827 [DEBUG] [Thread-129588] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:27.849 [DEBUG] [Thread-129588] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:30:27.849 [INFO] [Thread-129588] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:27.852 [DEBUG] [Thread-129588] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:27.853 [DEBUG] [Thread-129588] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:27.853 [DEBUG] [Thread-129588] [transport.py] [_log()] Compression: none
2025-09-28T16:30:27.853 [DEBUG] [Thread-129588] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:27.870 [DEBUG] [Thread-129588] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:27.871 [DEBUG] [Thread-129588] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:27.871 [DEBUG] [Thread-129588] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:30:27.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:30:27.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:27.873 [DEBUG] [Thread-129588] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:27.873 [DEBUG] [Thread-129588] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:27.873 [DEBUG] [Thread-129588] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:27.873 [DEBUG] [Thread-129588] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:30:27.873 [DEBUG] [Thread-129588] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:27.905 [INFO] [Thread-129588] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:27.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:28.462 [DEBUG] [Thread-129588] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:28.462 [DEBUG] [Thread-129588] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:28.462 [DEBUG] [Thread-129588] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:30:28.503 [DEBUG] [Thread-129588] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:28.503 [DEBUG] [Thread-129588] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:28.506 [DEBUG] [Thread-129588] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:28.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:28.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:30:28.513 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:30:28.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:30:28.521 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:28.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:30:28.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604248 -999.00  +17.50  10.81     38   +3.30 1 1 1 1 1   887    0 13.77 -19.60 ----- 10.8 10.8 218.4 23.1 22.2 -28.7 21.7 -26.9 23.4 -27.6 24.3 -29.3
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:30:28.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604248
2025-09-28T16:30:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:30:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:30:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:30:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:30:28.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:30:28.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:30:10', tmtdew=16.29, humidity=33.68, cloud=0.0, wind=14.54, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:30:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:30:28.526 [DEBUG] [Thread-129588] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:28.610 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:30:28.627 [DEBUG] [Thread-129591] [transport.py] [_log()] starting thread (client mode): 0x2b92b340
2025-09-28T16:30:28.627 [DEBUG] [Thread-129591] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:28.642 [DEBUG] [Thread-129591] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:30:28.642 [INFO] [Thread-129591] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:30:28.649 [DEBUG] [Thread-129591] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:28.649 [DEBUG] [Thread-129591] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:28.650 [DEBUG] [Thread-129591] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:28.651 [DEBUG] [Thread-129591] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:28.651 [DEBUG] [Thread-129591] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:28.651 [DEBUG] [Thread-129591] [transport.py] [_log()] Compression: none
2025-09-28T16:30:28.651 [DEBUG] [Thread-129591] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:28.708 [DEBUG] [Thread-129591] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:28.708 [DEBUG] [Thread-129591] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:28.708 [DEBUG] [Thread-129591] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:30:28.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:30:28.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:28.767 [DEBUG] [Thread-129591] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:28.767 [DEBUG] [Thread-129591] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:28.767 [DEBUG] [Thread-129591] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:28.767 [DEBUG] [Thread-129591] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:30:28.767 [DEBUG] [Thread-129591] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:28.786 [INFO] [Thread-129591] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:28.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-28T16:30:28.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:29.509 [DEBUG] [Thread-129593 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:29.772 [DEBUG] [Thread-129591] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:29.772 [DEBUG] [Thread-129591] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:29.820 [DEBUG] [Thread-129591] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:29.820 [DEBUG] [Thread-129591] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:29.829 [DEBUG] [Thread-129591] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:29.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:29.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-28T16:30:29.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') -> 00000000
2025-09-28T16:30:29.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:29.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:29.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:29.864 [DEBUG] [Thread-129591] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:39.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:30:39.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:30:39.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:30:40.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 30, 10), 16.29, 33.68, 0.0, 14.54, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:30:40.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:30:10
2025-09-28T16:30:40.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:30:40.726 [DEBUG] [Thread-129594] [transport.py] [_log()] starting thread (client mode): 0x2e3627d0
2025-09-28T16:30:40.726 [DEBUG] [Thread-129594] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:40.746 [DEBUG] [Thread-129594] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:30:40.746 [INFO] [Thread-129594] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:40.756 [DEBUG] [Thread-129594] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] Compression: none
2025-09-28T16:30:40.757 [DEBUG] [Thread-129594] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:40.768 [DEBUG] [Thread-129594] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:40.768 [DEBUG] [Thread-129594] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:40.768 [DEBUG] [Thread-129594] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:30:40.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:30:40.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:40.770 [DEBUG] [Thread-129594] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:40.771 [DEBUG] [Thread-129594] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:40.771 [DEBUG] [Thread-129594] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:40.771 [DEBUG] [Thread-129594] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:30:40.771 [DEBUG] [Thread-129594] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:40.795 [INFO] [Thread-129594] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:40.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:41.546 [DEBUG] [Thread-129594] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:41.546 [DEBUG] [Thread-129594] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:41.546 [DEBUG] [Thread-129594] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:30:41.587 [DEBUG] [Thread-129594] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:41.587 [DEBUG] [Thread-129594] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:41.589 [DEBUG] [Thread-129594] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:41.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:41.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:30:41.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:30:41.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:30:41.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:41.604 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:30:41.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:41.604 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:41.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:30:41.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604248 -999.00  +17.50  10.81     38   +3.30 1 1 1 1 1   887    0 13.77 -19.60 ----- 10.8 10.8 218.4 23.1 22.2 -28.7 21.7 -26.9 23.4 -27.6 24.3 -29.3
2025-09-28T16:30:41.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:30:41.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:30:41.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604248
2025-09-28T16:30:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:30:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:30:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:30:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:30:41.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:30:41.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:30:10', tmtdew=16.29, humidity=33.68, cloud=0.0, wind=14.54, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:30:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:30:41.607 [DEBUG] [Thread-129594] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:41.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-28T16:30:41.700 [DEBUG] [Thread-129597] [transport.py] [_log()] starting thread (client mode): 0x2b96c2b0
2025-09-28T16:30:41.700 [DEBUG] [Thread-129597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:41.715 [DEBUG] [Thread-129597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:30:41.715 [INFO] [Thread-129597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:30:41.722 [DEBUG] [Thread-129597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:41.723 [DEBUG] [Thread-129597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:41.724 [DEBUG] [Thread-129597] [transport.py] [_log()] Compression: none
2025-09-28T16:30:41.725 [DEBUG] [Thread-129597] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:41.783 [DEBUG] [Thread-129597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:41.783 [DEBUG] [Thread-129597] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:41.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:30:41.784 [DEBUG] [Thread-129597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:30:41.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:41.841 [DEBUG] [Thread-129597] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:41.841 [DEBUG] [Thread-129597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:41.841 [DEBUG] [Thread-129597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:41.841 [DEBUG] [Thread-129597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:30:41.841 [DEBUG] [Thread-129597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:41.862 [INFO] [Thread-129597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:41.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-28T16:30:41.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:42.810 [DEBUG] [Thread-129597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:42.810 [DEBUG] [Thread-129597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:42.858 [DEBUG] [Thread-129597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:42.858 [DEBUG] [Thread-129597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:42.866 [DEBUG] [Thread-129597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:42.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:42.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-28T16:30:42.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-28T16:30:42.890 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:42.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:42.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:42.898 [DEBUG] [Thread-129597] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:44.564 [DEBUG] [Thread-129599 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:30:52.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:30:52.901 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:30:52.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-28T16:30:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 30, 41), 16.12, 33.94, 0.0, 18.49, 17.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:30:53.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:30:41
2025-09-28T16:30:53.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:30:53.762 [DEBUG] [Thread-129600] [transport.py] [_log()] starting thread (client mode): 0x2b96c8b0
2025-09-28T16:30:53.763 [DEBUG] [Thread-129600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:53.782 [DEBUG] [Thread-129600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:30:53.783 [INFO] [Thread-129600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:30:53.785 [DEBUG] [Thread-129600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:53.786 [DEBUG] [Thread-129600] [transport.py] [_log()] Compression: none
2025-09-28T16:30:53.787 [DEBUG] [Thread-129600] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:53.805 [DEBUG] [Thread-129600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:53.805 [DEBUG] [Thread-129600] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:53.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:30:53.806 [DEBUG] [Thread-129600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:30:53.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:53.808 [DEBUG] [Thread-129600] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:53.808 [DEBUG] [Thread-129600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:53.808 [DEBUG] [Thread-129600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:53.808 [DEBUG] [Thread-129600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:30:53.808 [DEBUG] [Thread-129600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:53.832 [INFO] [Thread-129600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:53.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:54.438 [DEBUG] [Thread-129600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:54.439 [DEBUG] [Thread-129600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:54.439 [DEBUG] [Thread-129600] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:30:54.479 [DEBUG] [Thread-129600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:54.480 [DEBUG] [Thread-129600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:54.482 [DEBUG] [Thread-129600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:54.495 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:54.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:30:54.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:30:54.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:30:54.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:54.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:30:54.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:54.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:30:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604595 -999.00  +17.60  10.93     38   +3.40 1 1 1 1 1   887    0 13.89 -21.04 ----- 10.9 10.9 189.5 18.6 22.3 -27.4 21.7 -26.4 23.4 -27.5 24.3 -28.5
2025-09-28T16:30:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:30:54.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:30:54.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604595
2025-09-28T16:30:54.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:30:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:30:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:30:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:30:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:30:54.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:30:41', tmtdew=16.12, humidity=33.94, cloud=0.0, wind=18.49, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:30:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:30:54.509 [DEBUG] [Thread-129600] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:54.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-28T16:30:54.607 [DEBUG] [Thread-129603] [transport.py] [_log()] starting thread (client mode): 0x2b96e740
2025-09-28T16:30:54.607 [DEBUG] [Thread-129603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:30:54.622 [DEBUG] [Thread-129603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:30:54.622 [INFO] [Thread-129603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:30:54.630 [DEBUG] [Thread-129603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:30:54.630 [DEBUG] [Thread-129603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:30:54.630 [DEBUG] [Thread-129603] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:30:54.630 [DEBUG] [Thread-129603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] client lang: <none>
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] server lang: <none>
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] kex follows: False
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] Compression: none
2025-09-28T16:30:54.631 [DEBUG] [Thread-129603] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:30:54.690 [DEBUG] [Thread-129603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:30:54.690 [DEBUG] [Thread-129603] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:30:54.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:30:54.691 [DEBUG] [Thread-129603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:30:54.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:30:54.746 [DEBUG] [Thread-129603] [transport.py] [_log()] userauth is OK
2025-09-28T16:30:54.746 [DEBUG] [Thread-129603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:30:54.746 [DEBUG] [Thread-129603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:30:54.747 [DEBUG] [Thread-129603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:30:54.747 [DEBUG] [Thread-129603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:30:54.766 [INFO] [Thread-129603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:30:54.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-28T16:30:54.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:30:55.739 [DEBUG] [Thread-129603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:30:55.739 [DEBUG] [Thread-129603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:30:55.787 [DEBUG] [Thread-129603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:30:55.787 [DEBUG] [Thread-129603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:30:55.796 [DEBUG] [Thread-129603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:30:55.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:30:55.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-28T16:30:55.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-28T16:30:55.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:30:55.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:30:55.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:30:55.828 [DEBUG] [Thread-129603] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:30:59.591 [DEBUG] [Thread-129605 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:05.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:31:05.831 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:31:05.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:31:06.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 30, 41), 16.12, 33.94, 0.0, 18.49, 17.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:31:06.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:30:41
2025-09-28T16:31:06.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:31:06.663 [DEBUG] [Thread-129606] [transport.py] [_log()] starting thread (client mode): 0x2e363220
2025-09-28T16:31:06.663 [DEBUG] [Thread-129606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:06.684 [DEBUG] [Thread-129606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:31:06.684 [INFO] [Thread-129606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:31:06.687 [DEBUG] [Thread-129606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:06.688 [DEBUG] [Thread-129606] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] Compression: none
2025-09-28T16:31:06.689 [DEBUG] [Thread-129606] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:06.706 [DEBUG] [Thread-129606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:06.706 [DEBUG] [Thread-129606] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:06.706 [DEBUG] [Thread-129606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:31:06.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:31:06.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:06.707 [DEBUG] [Thread-129606] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:06.707 [DEBUG] [Thread-129606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:06.707 [DEBUG] [Thread-129606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:06.707 [DEBUG] [Thread-129606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:31:06.707 [DEBUG] [Thread-129606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:06.716 [INFO] [Thread-129606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:06.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:07.481 [DEBUG] [Thread-129606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:07.482 [DEBUG] [Thread-129606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:07.482 [DEBUG] [Thread-129606] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:31:07.522 [DEBUG] [Thread-129606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:07.522 [DEBUG] [Thread-129606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:07.524 [DEBUG] [Thread-129606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:07.538 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:07.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:31:07.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:31:07.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:31:07.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:07.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:31:07.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:07.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604595 -999.00  +17.60  10.93     38   +3.40 1 1 1 1 1   887    0 13.89 -21.04 ----- 10.9 10.9 189.5 18.6 22.3 -27.4 21.7 -26.4 23.4 -27.5 24.3 -28.5
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604595
2025-09-28T16:31:07.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:31:07.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:31:07.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:31:07.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:31:07.550 [DEBUG] [Thread-129606] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:07.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:31:07.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:30:41', tmtdew=16.12, humidity=33.94, cloud=0.0, wind=18.49, temperature=17.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:30:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:31:07.629 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:31:07.646 [DEBUG] [Thread-129609] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-28T16:31:07.647 [DEBUG] [Thread-129609] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:07.663 [DEBUG] [Thread-129609] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:31:07.663 [INFO] [Thread-129609] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:07.671 [DEBUG] [Thread-129609] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] Compression: none
2025-09-28T16:31:07.672 [DEBUG] [Thread-129609] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:07.735 [DEBUG] [Thread-129609] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:07.736 [DEBUG] [Thread-129609] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:07.736 [DEBUG] [Thread-129609] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:31:07.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:31:07.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:07.794 [DEBUG] [Thread-129609] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:07.795 [DEBUG] [Thread-129609] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:07.795 [DEBUG] [Thread-129609] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:07.795 [DEBUG] [Thread-129609] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:31:07.795 [DEBUG] [Thread-129609] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:07.816 [INFO] [Thread-129609] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:07.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-28T16:31:07.817 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:08.735 [DEBUG] [Thread-129609] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:08.735 [DEBUG] [Thread-129609] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:08.783 [DEBUG] [Thread-129609] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:08.783 [DEBUG] [Thread-129609] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:08.793 [DEBUG] [Thread-129609] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:08.801 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:08.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-28T16:31:08.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-28T16:31:08.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:08.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:08.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:08.827 [DEBUG] [Thread-129609] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:14.648 [DEBUG] [Thread-129611 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:18.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:31:18.829 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:31:18.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-28T16:31:19.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 31, 13), 16.16, 33.84, 0.0, 17.54, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:31:19.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:31:13
2025-09-28T16:31:19.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:31:19.685 [DEBUG] [Thread-129612] [transport.py] [_log()] starting thread (client mode): 0x2b96f760
2025-09-28T16:31:19.685 [DEBUG] [Thread-129612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:19.704 [DEBUG] [Thread-129612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:31:19.705 [INFO] [Thread-129612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:31:19.708 [DEBUG] [Thread-129612] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:19.708 [DEBUG] [Thread-129612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:31:19.708 [DEBUG] [Thread-129612] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:19.708 [DEBUG] [Thread-129612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:19.709 [DEBUG] [Thread-129612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:19.710 [DEBUG] [Thread-129612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:19.710 [DEBUG] [Thread-129612] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:19.710 [DEBUG] [Thread-129612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:19.710 [DEBUG] [Thread-129612] [transport.py] [_log()] Compression: none
2025-09-28T16:31:19.710 [DEBUG] [Thread-129612] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:19.729 [DEBUG] [Thread-129612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:19.729 [DEBUG] [Thread-129612] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:19.730 [DEBUG] [Thread-129612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:31:19.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:31:19.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:19.732 [DEBUG] [Thread-129612] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:19.732 [DEBUG] [Thread-129612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:19.732 [DEBUG] [Thread-129612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:19.732 [DEBUG] [Thread-129612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:31:19.732 [DEBUG] [Thread-129612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:19.756 [INFO] [Thread-129612] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:19.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:20.494 [DEBUG] [Thread-129612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:20.495 [DEBUG] [Thread-129612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:20.495 [DEBUG] [Thread-129612] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:31:20.535 [DEBUG] [Thread-129612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:20.535 [DEBUG] [Thread-129612] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:20.537 [DEBUG] [Thread-129612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:20.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:20.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:31:20.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:31:20.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:31:20.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:20.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:31:20.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604595 -999.00  +17.60  10.93     38   +3.40 1 1 1 1 1   887    0 13.89 -21.04 ----- 10.9 10.9 189.5 18.6 22.3 -27.4 21.7 -26.4 23.4 -27.5 24.3 -28.5
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:31:20.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604595
2025-09-28T16:31:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:31:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:31:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:31:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:31:20.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:31:20.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:31:13', tmtdew=16.16, humidity=33.84, cloud=0.0, wind=17.54, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:30:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:31:20.561 [DEBUG] [Thread-129612] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:20.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-28T16:31:20.665 [DEBUG] [Thread-129615] [transport.py] [_log()] starting thread (client mode): 0x2b92b340
2025-09-28T16:31:20.665 [DEBUG] [Thread-129615] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:20.682 [DEBUG] [Thread-129615] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:31:20.683 [INFO] [Thread-129615] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:31:20.694 [DEBUG] [Thread-129615] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:20.694 [DEBUG] [Thread-129615] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:20.695 [DEBUG] [Thread-129615] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] Compression: none
2025-09-28T16:31:20.696 [DEBUG] [Thread-129615] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:20.750 [DEBUG] [Thread-129615] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:20.751 [DEBUG] [Thread-129615] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:20.751 [DEBUG] [Thread-129615] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:31:20.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:31:20.752 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:20.806 [DEBUG] [Thread-129615] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:20.807 [DEBUG] [Thread-129615] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:20.807 [DEBUG] [Thread-129615] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:20.807 [DEBUG] [Thread-129615] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:31:20.807 [DEBUG] [Thread-129615] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:20.832 [INFO] [Thread-129615] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:20.832 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:31:20.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:20.908 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:20.909 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:21.101 [DEBUG] [Thread-129617 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:21.751 [DEBUG] [Thread-129615] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:21.751 [DEBUG] [Thread-129615] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:21.799 [DEBUG] [Thread-129615] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:21.799 [DEBUG] [Thread-129615] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:21.808 [DEBUG] [Thread-129615] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:21.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:21.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-28T16:31:21.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-28T16:31:21.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:21.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:21.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:21.840 [DEBUG] [Thread-129615] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:29.682 [DEBUG] [Thread-129618 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:31.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:31:31.839 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:31:31.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-28T16:31:32.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 31, 13), 16.16, 33.84, 0.0, 17.54, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:31:32.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:31:13
2025-09-28T16:31:32.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:31:32.680 [DEBUG] [Thread-129619] [transport.py] [_log()] starting thread (client mode): 0x2e362aa0
2025-09-28T16:31:32.680 [DEBUG] [Thread-129619] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:32.695 [DEBUG] [Thread-129619] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:31:32.695 [INFO] [Thread-129619] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] Compression: none
2025-09-28T16:31:32.698 [DEBUG] [Thread-129619] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:32.715 [DEBUG] [Thread-129619] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:32.715 [DEBUG] [Thread-129619] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:32.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:31:32.716 [DEBUG] [Thread-129619] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:31:32.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:32.719 [DEBUG] [Thread-129619] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:32.719 [DEBUG] [Thread-129619] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:32.719 [DEBUG] [Thread-129619] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:32.719 [DEBUG] [Thread-129619] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:31:32.719 [DEBUG] [Thread-129619] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:32.734 [INFO] [Thread-129619] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:32.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:33.349 [DEBUG] [Thread-129619] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:33.349 [DEBUG] [Thread-129619] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:33.350 [DEBUG] [Thread-129619] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:31:33.390 [DEBUG] [Thread-129619] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:33.390 [DEBUG] [Thread-129619] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:33.393 [DEBUG] [Thread-129619] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:33.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:33.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:31:33.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:31:33.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:31:33.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:33.417 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:31:33.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:33.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:31:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604942 -999.00  +17.60   6.29     38   +3.30 1 1 1 1 1   887    0 13.76 -20.90 ----- 6.3 6.3 210.5 20.6 22.3 -28.0 21.8 -26.4 23.4 -26.5 24.4 -27.2
2025-09-28T16:31:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:31:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:31:33.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604942
2025-09-28T16:31:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:31:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:31:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:31:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:31:33.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:31:33.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:31:13', tmtdew=16.16, humidity=33.84, cloud=0.0, wind=17.54, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:31:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:31:33.420 [DEBUG] [Thread-129619] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:33.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-28T16:31:33.524 [DEBUG] [Thread-129622] [transport.py] [_log()] starting thread (client mode): 0x2e363e80
2025-09-28T16:31:33.524 [DEBUG] [Thread-129622] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:33.539 [DEBUG] [Thread-129622] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:31:33.539 [INFO] [Thread-129622] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:31:33.546 [DEBUG] [Thread-129622] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:33.546 [DEBUG] [Thread-129622] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:31:33.546 [DEBUG] [Thread-129622] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:33.547 [DEBUG] [Thread-129622] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] Compression: none
2025-09-28T16:31:33.548 [DEBUG] [Thread-129622] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:33.606 [DEBUG] [Thread-129622] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:33.606 [DEBUG] [Thread-129622] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:33.607 [DEBUG] [Thread-129622] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:31:33.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:31:33.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:33.662 [DEBUG] [Thread-129622] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:33.662 [DEBUG] [Thread-129622] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:33.662 [DEBUG] [Thread-129622] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:33.662 [DEBUG] [Thread-129622] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:31:33.662 [DEBUG] [Thread-129622] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:33.675 [INFO] [Thread-129622] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:33.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-28T16:31:33.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:34.599 [DEBUG] [Thread-129622] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:34.600 [DEBUG] [Thread-129622] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:34.647 [DEBUG] [Thread-129622] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:34.647 [DEBUG] [Thread-129622] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:34.656 [DEBUG] [Thread-129622] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:34.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31: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-28T16:31:34.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-28T16:31:34.680 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:34.680 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:34.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:34.688 [DEBUG] [Thread-129622] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:44.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:31:44.682 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:31:44.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-28T16:31:44.740 [DEBUG] [Thread-129624 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:31:45.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 31, 13), 16.16, 33.84, 0.0, 17.54, 17.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:31:45.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:31:13
2025-09-28T16:31:45.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:31:45.517 [DEBUG] [Thread-129625] [transport.py] [_log()] starting thread (client mode): 0x2e38d690
2025-09-28T16:31:45.517 [DEBUG] [Thread-129625] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:45.539 [DEBUG] [Thread-129625] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:31:45.539 [INFO] [Thread-129625] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:31:45.542 [DEBUG] [Thread-129625] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:45.542 [DEBUG] [Thread-129625] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:45.543 [DEBUG] [Thread-129625] [transport.py] [_log()] Compression: none
2025-09-28T16:31:45.544 [DEBUG] [Thread-129625] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:45.561 [DEBUG] [Thread-129625] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:45.562 [DEBUG] [Thread-129625] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:45.562 [DEBUG] [Thread-129625] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:31:45.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:31:45.563 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:45.564 [DEBUG] [Thread-129625] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:45.565 [DEBUG] [Thread-129625] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:45.565 [DEBUG] [Thread-129625] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:45.565 [DEBUG] [Thread-129625] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:31:45.565 [DEBUG] [Thread-129625] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:45.588 [INFO] [Thread-129625] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:45.588 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:46.392 [DEBUG] [Thread-129625] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:46.392 [DEBUG] [Thread-129625] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:46.392 [DEBUG] [Thread-129625] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:31:46.433 [DEBUG] [Thread-129625] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:46.433 [DEBUG] [Thread-129625] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:46.435 [DEBUG] [Thread-129625] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:46.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:46.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:31:46.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:31:46.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:31:46.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:46.454 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:31:46.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.604942 -999.00  +17.60   6.29     38   +3.30 1 1 1 1 1   887    0 13.76 -20.90 ----- 6.3 6.3 210.5 20.6 22.3 -28.0 21.8 -26.4 23.4 -26.5 24.4 -27.2
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.604942
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:31:46.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:31:13', tmtdew=16.16, humidity=33.84, cloud=0.0, wind=17.54, temperature=17.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:31:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:31:46.455 [DEBUG] [Thread-129625] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:46.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-28T16:31:46.546 [DEBUG] [Thread-129628] [transport.py] [_log()] starting thread (client mode): 0x2b9bb0a0
2025-09-28T16:31:46.546 [DEBUG] [Thread-129628] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:46.560 [DEBUG] [Thread-129628] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:31:46.560 [INFO] [Thread-129628] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] Compression: none
2025-09-28T16:31:46.568 [DEBUG] [Thread-129628] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:46.626 [DEBUG] [Thread-129628] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:46.626 [DEBUG] [Thread-129628] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:46.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:31:46.626 [DEBUG] [Thread-129628] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:31:46.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:46.682 [DEBUG] [Thread-129628] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:46.682 [DEBUG] [Thread-129628] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:46.682 [DEBUG] [Thread-129628] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:46.682 [DEBUG] [Thread-129628] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:31:46.682 [DEBUG] [Thread-129628] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:46.696 [INFO] [Thread-129628] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:46.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-28T16:31:46.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:47.680 [DEBUG] [Thread-129628] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:47.680 [DEBUG] [Thread-129628] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:47.728 [DEBUG] [Thread-129628] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:47.728 [DEBUG] [Thread-129628] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:47.736 [DEBUG] [Thread-129628] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:47.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:47.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-28T16:31:47.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-28T16:31:47.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:47.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:47.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:47.766 [DEBUG] [Thread-129628] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:57.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:31:57.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:31:57.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-28T16:31:58.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 31, 45), 16.44, 32.78, 0.0, 17.54, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:31:58.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:31:45
2025-09-28T16:31:58.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:31:58.617 [DEBUG] [Thread-129630] [transport.py] [_log()] starting thread (client mode): 0x2e3c2bf0
2025-09-28T16:31:58.617 [DEBUG] [Thread-129630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:58.636 [DEBUG] [Thread-129630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:31:58.637 [INFO] [Thread-129630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:31:58.638 [DEBUG] [Thread-129630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:58.638 [DEBUG] [Thread-129630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:31:58.638 [DEBUG] [Thread-129630] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:58.638 [DEBUG] [Thread-129630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:58.638 [DEBUG] [Thread-129630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:58.639 [DEBUG] [Thread-129630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:58.640 [DEBUG] [Thread-129630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:58.640 [DEBUG] [Thread-129630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:58.640 [DEBUG] [Thread-129630] [transport.py] [_log()] Compression: none
2025-09-28T16:31:58.640 [DEBUG] [Thread-129630] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:58.659 [DEBUG] [Thread-129630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:58.659 [DEBUG] [Thread-129630] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:58.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:31:58.660 [DEBUG] [Thread-129630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:31:58.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:58.662 [DEBUG] [Thread-129630] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:58.663 [DEBUG] [Thread-129630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:58.663 [DEBUG] [Thread-129630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:58.663 [DEBUG] [Thread-129630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:31:58.663 [DEBUG] [Thread-129630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:58.686 [INFO] [Thread-129630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:58.686 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:59.257 [DEBUG] [Thread-129630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:31:59.258 [DEBUG] [Thread-129630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:31:59.258 [DEBUG] [Thread-129630] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:31:59.299 [DEBUG] [Thread-129630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:31:59.299 [DEBUG] [Thread-129630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:31:59.301 [DEBUG] [Thread-129630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:31:59.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:31:59.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:31:59.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:31:59.311 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:31:59.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:31:59.314 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:31:59.314 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605290 -999.00  +17.70  10.66     38   +3.30 1 1 1 1 1   887    0 13.55 -20.93 ----- 10.7 10.7 232.5 17.3 22.3 -27.7 21.8 -26.5 23.5 -26.5 24.3 -27.8
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605290
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:31:59.314 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:31:45', tmtdew=16.44, humidity=32.78, cloud=0.0, wind=17.54, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:31:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:31:59.314 [DEBUG] [Thread-129630] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:31:59.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-28T16:31:59.409 [DEBUG] [Thread-129633] [transport.py] [_log()] starting thread (client mode): 0x2b928730
2025-09-28T16:31:59.409 [DEBUG] [Thread-129633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:31:59.428 [DEBUG] [Thread-129633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:31:59.428 [INFO] [Thread-129633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:31:59.438 [DEBUG] [Thread-129633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] client lang: <none>
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] server lang: <none>
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] kex follows: False
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] Compression: none
2025-09-28T16:31:59.439 [DEBUG] [Thread-129633] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:31:59.493 [DEBUG] [Thread-129633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:31:59.493 [DEBUG] [Thread-129633] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:31:59.493 [DEBUG] [Thread-129633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:31:59.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:31:59.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:31:59.551 [DEBUG] [Thread-129633] [transport.py] [_log()] userauth is OK
2025-09-28T16:31:59.551 [DEBUG] [Thread-129633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:31:59.551 [DEBUG] [Thread-129633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:31:59.551 [DEBUG] [Thread-129633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:31:59.551 [DEBUG] [Thread-129633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:31:59.569 [INFO] [Thread-129633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:31:59.569 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:31:59.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:31:59.792 [DEBUG] [Thread-129635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:00.482 [DEBUG] [Thread-129633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:00.483 [DEBUG] [Thread-129633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:00.531 [DEBUG] [Thread-129633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:00.531 [DEBUG] [Thread-129633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:00.539 [DEBUG] [Thread-129633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:00.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:00.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-28T16:32:00.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-28T16:32:00.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:00.567 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:00.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:00.575 [DEBUG] [Thread-129633] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:32:10.578 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:32:10.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-28T16:32:11.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 31, 45), 16.44, 32.78, 0.0, 17.54, 17.52, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:32:11.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:31:45
2025-09-28T16:32:11.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:32:11.428 [DEBUG] [Thread-129636] [transport.py] [_log()] starting thread (client mode): 0x2b9b8610
2025-09-28T16:32:11.429 [DEBUG] [Thread-129636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:11.449 [DEBUG] [Thread-129636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:32:11.449 [INFO] [Thread-129636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] Compression: none
2025-09-28T16:32:11.452 [DEBUG] [Thread-129636] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:11.470 [DEBUG] [Thread-129636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:11.470 [DEBUG] [Thread-129636] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:11.470 [DEBUG] [Thread-129636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:32:11.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:32:11.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:11.471 [DEBUG] [Thread-129636] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:11.471 [DEBUG] [Thread-129636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:11.471 [DEBUG] [Thread-129636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:11.471 [DEBUG] [Thread-129636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:32:11.471 [DEBUG] [Thread-129636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:11.481 [INFO] [Thread-129636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:11.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:12.115 [DEBUG] [Thread-129636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:12.115 [DEBUG] [Thread-129636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:12.116 [DEBUG] [Thread-129636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:32:12.157 [DEBUG] [Thread-129636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:12.157 [DEBUG] [Thread-129636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:12.159 [DEBUG] [Thread-129636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:12.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:12.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:32:12.174 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:32:12.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:32:12.178 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:12.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:32:12.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:12.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:12.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:32:12.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605290 -999.00  +17.70  10.66     38   +3.30 1 1 1 1 1   887    0 13.55 -20.93 ----- 10.7 10.7 232.5 17.3 22.3 -27.7 21.8 -26.5 23.5 -26.5 24.3 -27.8
2025-09-28T16:32:12.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:32:12.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:32:12.181 [DEBUG] [Thread-129636] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:12.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605290
2025-09-28T16:32:12.182 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:32:12.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:32:12.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:32:12.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:32:12.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:32:12.183 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:31:45', tmtdew=16.44, humidity=32.78, cloud=0.0, wind=17.54, temperature=17.52, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:31:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:32:12.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-28T16:32:12.283 [DEBUG] [Thread-129639] [transport.py] [_log()] starting thread (client mode): 0x2e38e650
2025-09-28T16:32:12.283 [DEBUG] [Thread-129639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:12.298 [DEBUG] [Thread-129639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:32:12.299 [INFO] [Thread-129639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:32:12.306 [DEBUG] [Thread-129639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:12.307 [DEBUG] [Thread-129639] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] Compression: none
2025-09-28T16:32:12.308 [DEBUG] [Thread-129639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:12.367 [DEBUG] [Thread-129639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:12.367 [DEBUG] [Thread-129639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:12.368 [DEBUG] [Thread-129639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:32:12.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:32:12.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:12.422 [DEBUG] [Thread-129639] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:12.423 [DEBUG] [Thread-129639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:12.423 [DEBUG] [Thread-129639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:12.423 [DEBUG] [Thread-129639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:32:12.423 [DEBUG] [Thread-129639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:12.442 [INFO] [Thread-129639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:12.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-28T16:32:12.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:13.394 [DEBUG] [Thread-129639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:13.394 [DEBUG] [Thread-129639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:13.442 [DEBUG] [Thread-129639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:13.442 [DEBUG] [Thread-129639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:13.451 [DEBUG] [Thread-129639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:13.460 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:13.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-28T16:32:13.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-28T16:32:13.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:13.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:13.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:13.485 [DEBUG] [Thread-129639] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:14.844 [DEBUG] [Thread-129641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:21.050 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:21.051 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:21.135 [DEBUG] [Thread-129642 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:23.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:32:23.491 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:32:23.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-28T16:32:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 32, 17), 16.4, 32.86, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:32:24.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:32:17
2025-09-28T16:32:24.173 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:32:24.325 [DEBUG] [Thread-129643] [transport.py] [_log()] starting thread (client mode): 0x2b929c00
2025-09-28T16:32:24.326 [DEBUG] [Thread-129643] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:24.347 [DEBUG] [Thread-129643] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:32:24.347 [INFO] [Thread-129643] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:32:24.350 [DEBUG] [Thread-129643] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:24.351 [DEBUG] [Thread-129643] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] Compression: none
2025-09-28T16:32:24.352 [DEBUG] [Thread-129643] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:24.376 [DEBUG] [Thread-129643] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:24.377 [DEBUG] [Thread-129643] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:24.377 [DEBUG] [Thread-129643] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:32:24.377 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:32:24.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:24.379 [DEBUG] [Thread-129643] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:24.380 [DEBUG] [Thread-129643] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:24.380 [DEBUG] [Thread-129643] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:24.380 [DEBUG] [Thread-129643] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:32:24.380 [DEBUG] [Thread-129643] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:24.403 [INFO] [Thread-129643] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:24.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:25.222 [DEBUG] [Thread-129643] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:25.223 [DEBUG] [Thread-129643] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:25.223 [DEBUG] [Thread-129643] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:32:25.263 [DEBUG] [Thread-129643] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:25.263 [DEBUG] [Thread-129643] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:25.266 [DEBUG] [Thread-129643] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:25.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:25.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:32:25.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:32:25.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:32:25.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:25.287 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:32:25.287 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:25.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605290 -999.00  +17.70  10.66     38   +3.30 1 1 1 1 1   887    0 13.55 -20.93 ----- 10.7 10.7 232.5 17.3 22.3 -27.7 21.8 -26.5 23.5 -26.5 24.3 -27.8
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605290
2025-09-28T16:32:25.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:32:25.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:32:25.289 [DEBUG] [Thread-129643] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:25.289 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:32:25.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:32:25.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:32:25.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:32:17', tmtdew=16.4, humidity=32.86, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:31:37.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:32:25.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-28T16:32:25.392 [DEBUG] [Thread-129646] [transport.py] [_log()] starting thread (client mode): 0x2b954ac0
2025-09-28T16:32:25.392 [DEBUG] [Thread-129646] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:25.408 [DEBUG] [Thread-129646] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:32:25.408 [INFO] [Thread-129646] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:32:25.415 [DEBUG] [Thread-129646] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:25.415 [DEBUG] [Thread-129646] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] Compression: none
2025-09-28T16:32:25.416 [DEBUG] [Thread-129646] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:25.474 [DEBUG] [Thread-129646] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:25.475 [DEBUG] [Thread-129646] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:25.475 [DEBUG] [Thread-129646] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:32:25.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:32:25.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:25.533 [DEBUG] [Thread-129646] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:25.533 [DEBUG] [Thread-129646] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:25.534 [DEBUG] [Thread-129646] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:25.534 [DEBUG] [Thread-129646] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:32:25.534 [DEBUG] [Thread-129646] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:25.552 [INFO] [Thread-129646] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:25.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-28T16:32:25.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:26.508 [DEBUG] [Thread-129646] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:26.508 [DEBUG] [Thread-129646] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:26.556 [DEBUG] [Thread-129646] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:26.557 [DEBUG] [Thread-129646] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:26.566 [DEBUG] [Thread-129646] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:26.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:26.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-28T16:32:26.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-28T16:32:26.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:26.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:26.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:26.601 [DEBUG] [Thread-129646] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:29.882 [DEBUG] [Thread-129648 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:36.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:32:36.602 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:32:36.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-28T16:32:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 32, 17), 16.4, 32.86, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:32:37.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:32:17
2025-09-28T16:32:37.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:32:37.451 [DEBUG] [Thread-129649] [transport.py] [_log()] starting thread (client mode): 0x2e3c12d0
2025-09-28T16:32:37.451 [DEBUG] [Thread-129649] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:37.471 [DEBUG] [Thread-129649] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:32:37.471 [INFO] [Thread-129649] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:37.474 [DEBUG] [Thread-129649] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] Compression: none
2025-09-28T16:32:37.475 [DEBUG] [Thread-129649] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:37.488 [DEBUG] [Thread-129649] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:37.488 [DEBUG] [Thread-129649] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:37.489 [DEBUG] [Thread-129649] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:32:37.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:32:37.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:37.490 [DEBUG] [Thread-129649] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:37.490 [DEBUG] [Thread-129649] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:37.490 [DEBUG] [Thread-129649] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:37.490 [DEBUG] [Thread-129649] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:32:37.490 [DEBUG] [Thread-129649] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:37.508 [INFO] [Thread-129649] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:37.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:38.163 [DEBUG] [Thread-129649] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:38.163 [DEBUG] [Thread-129649] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:38.163 [DEBUG] [Thread-129649] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:32:38.204 [DEBUG] [Thread-129649] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:38.204 [DEBUG] [Thread-129649] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:38.206 [DEBUG] [Thread-129649] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:38.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:38.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:32:38.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:32:38.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:38.223 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:32:38.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605637 -999.00  +17.80   4.33     38   +3.60 1 1 1 1 1   887    0 13.54 -20.11 ----- 4.3 4.3 236.5 16.7 22.4 -27.2 21.8 -26.7 23.4 -26.6 24.3 -27.6
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:32:38.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605637
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:32:38.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:32:17', tmtdew=16.4, humidity=32.86, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:32:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:32:38.224 [DEBUG] [Thread-129649] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:38.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:32:38.315 [DEBUG] [Thread-129652] [transport.py] [_log()] starting thread (client mode): 0x2b96fd90
2025-09-28T16:32:38.315 [DEBUG] [Thread-129652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:38.329 [DEBUG] [Thread-129652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:32:38.330 [INFO] [Thread-129652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] Compression: none
2025-09-28T16:32:38.337 [DEBUG] [Thread-129652] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:38.393 [DEBUG] [Thread-129652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:38.393 [DEBUG] [Thread-129652] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:38.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:32:38.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:38.394 [DEBUG] [Thread-129652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:32:38.450 [DEBUG] [Thread-129652] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:38.450 [DEBUG] [Thread-129652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:38.450 [DEBUG] [Thread-129652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:38.450 [DEBUG] [Thread-129652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:32:38.450 [DEBUG] [Thread-129652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:38.468 [INFO] [Thread-129652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32: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-28T16:32:38.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:39.410 [DEBUG] [Thread-129652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:39.410 [DEBUG] [Thread-129652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:39.458 [DEBUG] [Thread-129652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:39.458 [DEBUG] [Thread-129652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:39.466 [DEBUG] [Thread-129652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:39.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:39.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-28T16:32:39.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-28T16:32:39.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:39.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:39.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:39.497 [DEBUG] [Thread-129652] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:44.946 [DEBUG] [Thread-129654 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:32:49.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:32:49.500 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:32:49.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-28T16:32:50.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 32, 17), 16.4, 32.86, 0.0, 19.52, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:32:50.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:32:17
2025-09-28T16:32:50.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:32:50.381 [DEBUG] [Thread-129655] [transport.py] [_log()] starting thread (client mode): 0x2b91c190
2025-09-28T16:32:50.381 [DEBUG] [Thread-129655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:50.402 [DEBUG] [Thread-129655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:32:50.402 [INFO] [Thread-129655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:50.405 [DEBUG] [Thread-129655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:50.406 [DEBUG] [Thread-129655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:50.406 [DEBUG] [Thread-129655] [transport.py] [_log()] Compression: none
2025-09-28T16:32:50.406 [DEBUG] [Thread-129655] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:50.421 [DEBUG] [Thread-129655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:50.422 [DEBUG] [Thread-129655] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:50.422 [DEBUG] [Thread-129655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:32:50.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:32:50.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:50.422 [DEBUG] [Thread-129655] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:50.423 [DEBUG] [Thread-129655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:50.423 [DEBUG] [Thread-129655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:50.423 [DEBUG] [Thread-129655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:32:50.423 [DEBUG] [Thread-129655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:50.433 [INFO] [Thread-129655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:50.433 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:51.252 [DEBUG] [Thread-129655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:51.252 [DEBUG] [Thread-129655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:51.252 [DEBUG] [Thread-129655] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:32:51.293 [DEBUG] [Thread-129655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:51.293 [DEBUG] [Thread-129655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:51.295 [DEBUG] [Thread-129655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:51.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:51.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:32:51.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:32:51.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:32:51.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:51.313 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:32:51.313 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605637 -999.00  +17.80   4.33     38   +3.60 1 1 1 1 1   887    0 13.54 -20.11 ----- 4.3 4.3 236.5 16.7 22.4 -27.2 21.8 -26.7 23.4 -26.6 24.3 -27.6
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605637
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:32:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:32:17', tmtdew=16.4, humidity=32.86, cloud=0.0, wind=19.52, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:32:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:32:51.314 [DEBUG] [Thread-129655] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:32:51.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-28T16:32:51.408 [DEBUG] [Thread-129658] [transport.py] [_log()] starting thread (client mode): 0x2e362920
2025-09-28T16:32:51.409 [DEBUG] [Thread-129658] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:32:51.422 [DEBUG] [Thread-129658] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:32:51.422 [INFO] [Thread-129658] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] client lang: <none>
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] server lang: <none>
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] kex follows: False
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] Compression: none
2025-09-28T16:32:51.430 [DEBUG] [Thread-129658] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:32:51.484 [DEBUG] [Thread-129658] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:32:51.485 [DEBUG] [Thread-129658] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:32:51.485 [DEBUG] [Thread-129658] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:32:51.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:32:51.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:32:51.542 [DEBUG] [Thread-129658] [transport.py] [_log()] userauth is OK
2025-09-28T16:32:51.542 [DEBUG] [Thread-129658] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:32:51.542 [DEBUG] [Thread-129658] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:32:51.542 [DEBUG] [Thread-129658] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:32:51.542 [DEBUG] [Thread-129658] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:32:51.556 [INFO] [Thread-129658] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:32:51.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-28T16:32:51.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:32:52.492 [DEBUG] [Thread-129658] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:32:52.492 [DEBUG] [Thread-129658] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:32:52.540 [DEBUG] [Thread-129658] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:32:52.540 [DEBUG] [Thread-129658] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:32:52.549 [DEBUG] [Thread-129658] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:32:52.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:32:52.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-28T16:32:52.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-28T16:32:52.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:32:52.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:32:52.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:32:52.584 [DEBUG] [Thread-129658] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:00.007 [DEBUG] [Thread-129660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:02.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:33:02.586 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:33:02.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-28T16:33:03.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 32, 49), 15.97, 34.22, 0.0, 13.46, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:33:03.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:32:49
2025-09-28T16:33:03.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:33:03.440 [DEBUG] [Thread-129661] [transport.py] [_log()] starting thread (client mode): 0x2e360520
2025-09-28T16:33:03.440 [DEBUG] [Thread-129661] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:33:03.458 [DEBUG] [Thread-129661] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:33:03.459 [INFO] [Thread-129661] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] client lang: <none>
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] server lang: <none>
2025-09-28T16:33:03.462 [DEBUG] [Thread-129661] [transport.py] [_log()] kex follows: False
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] Compression: none
2025-09-28T16:33:03.463 [DEBUG] [Thread-129661] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:33:03.479 [DEBUG] [Thread-129661] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:33:03.479 [DEBUG] [Thread-129661] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:33:03.480 [DEBUG] [Thread-129661] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:33:03.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:33:03.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:33:03.481 [DEBUG] [Thread-129661] [transport.py] [_log()] userauth is OK
2025-09-28T16:33:03.481 [DEBUG] [Thread-129661] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:33:03.481 [DEBUG] [Thread-129661] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:33:03.482 [DEBUG] [Thread-129661] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:33:03.482 [DEBUG] [Thread-129661] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:33:03.501 [INFO] [Thread-129661] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:33:03.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:33:04.295 [DEBUG] [Thread-129661] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:33:04.296 [DEBUG] [Thread-129661] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:33:04.296 [DEBUG] [Thread-129661] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:33:04.336 [DEBUG] [Thread-129661] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:33:04.337 [DEBUG] [Thread-129661] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:33:04.340 [DEBUG] [Thread-129661] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:33:04.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:33:04.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:33:04.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:33:04.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:33:04.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:33:04.362 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:33:04.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:33:04.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:33:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:33:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605637 -999.00  +17.80   4.33     38   +3.60 1 1 1 1 1   887    0 13.54 -20.11 ----- 4.3 4.3 236.5 16.7 22.4 -27.2 21.8 -26.7 23.4 -26.6 24.3 -27.6
2025-09-28T16:33:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:33:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:33:04.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605637
2025-09-28T16:33:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:33:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:33:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:33:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:33:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:33:04.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:32:49', tmtdew=15.97, humidity=34.22, cloud=0.0, wind=13.46, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:32:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:33:04.365 [DEBUG] [Thread-129661] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:04.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-28T16:33:04.467 [DEBUG] [Thread-129664] [transport.py] [_log()] starting thread (client mode): 0x2b955870
2025-09-28T16:33:04.467 [DEBUG] [Thread-129664] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:33:04.481 [DEBUG] [Thread-129664] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:33:04.482 [INFO] [Thread-129664] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:33:04.489 [DEBUG] [Thread-129664] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:33:04.489 [DEBUG] [Thread-129664] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:33:04.489 [DEBUG] [Thread-129664] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] client lang: <none>
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] server lang: <none>
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] kex follows: False
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] Compression: none
2025-09-28T16:33:04.490 [DEBUG] [Thread-129664] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:33:04.547 [DEBUG] [Thread-129664] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:33:04.548 [DEBUG] [Thread-129664] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:33:04.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:33:04.549 [DEBUG] [Thread-129664] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:33:04.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:33:04.607 [DEBUG] [Thread-129664] [transport.py] [_log()] userauth is OK
2025-09-28T16:33:04.607 [DEBUG] [Thread-129664] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:33:04.608 [DEBUG] [Thread-129664] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:33:04.608 [DEBUG] [Thread-129664] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:33:04.608 [DEBUG] [Thread-129664] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:33:04.630 [INFO] [Thread-129664] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:33:04.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-28T16:33:04.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:33:05.594 [DEBUG] [Thread-129664] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:33:05.594 [DEBUG] [Thread-129664] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:33:05.646 [DEBUG] [Thread-129664] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:33:05.646 [DEBUG] [Thread-129664] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:33:05.655 [DEBUG] [Thread-129664] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:33:05.664 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:33:05.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-28T16:33:05.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-28T16:33:05.681 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:33:05.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:33:05.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:33:05.690 [DEBUG] [Thread-129664] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:15.050 [DEBUG] [Thread-129666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:15.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:33:15.692 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:33:15.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-28T16:33:16.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 32, 49), 15.97, 34.22, 0.0, 13.46, 17.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:33:16.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:32:49
2025-09-28T16:33:16.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:33:16.553 [DEBUG] [Thread-129667] [transport.py] [_log()] starting thread (client mode): 0x2e363220
2025-09-28T16:33:16.553 [DEBUG] [Thread-129667] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:33:16.573 [DEBUG] [Thread-129667] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:33:16.573 [INFO] [Thread-129667] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:16.576 [DEBUG] [Thread-129667] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] client lang: <none>
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] server lang: <none>
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] kex follows: False
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] Compression: none
2025-09-28T16:33:16.577 [DEBUG] [Thread-129667] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:33:16.594 [DEBUG] [Thread-129667] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:33:16.594 [DEBUG] [Thread-129667] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:33:16.594 [DEBUG] [Thread-129667] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:33:16.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:33:16.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:33:16.595 [DEBUG] [Thread-129667] [transport.py] [_log()] userauth is OK
2025-09-28T16:33:16.595 [DEBUG] [Thread-129667] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:33:16.595 [DEBUG] [Thread-129667] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:33:16.595 [DEBUG] [Thread-129667] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:33:16.596 [DEBUG] [Thread-129667] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:33:16.615 [INFO] [Thread-129667] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:33:16.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:33:17.286 [DEBUG] [Thread-129667] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:33:17.286 [DEBUG] [Thread-129667] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:33:17.286 [DEBUG] [Thread-129667] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:33:17.327 [DEBUG] [Thread-129667] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:33:17.327 [DEBUG] [Thread-129667] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:33:17.329 [DEBUG] [Thread-129667] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:33:17.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:33:17.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:33:17.342 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:33:17.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:33:17.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:33:17.346 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:33:17.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605984 -999.00  +17.80  11.05     38   +3.60 1 1 1 1 1   887    0 13.85 -18.25 ----- 11.1 11.1 209.6 15.9 22.3 -27.8 21.9 -26.4 23.6 -26.3 24.4 -28.5
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:33:17.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605984
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:33:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:32:49', tmtdew=15.97, humidity=34.22, cloud=0.0, wind=13.46, temperature=17.37, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:32:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:33:17.347 [DEBUG] [Thread-129667] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:17.420 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:33:17.437 [DEBUG] [Thread-129670] [transport.py] [_log()] starting thread (client mode): 0x2e3c1210
2025-09-28T16:33:17.437 [DEBUG] [Thread-129670] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:33:17.451 [DEBUG] [Thread-129670] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:33:17.451 [INFO] [Thread-129670] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] client lang: <none>
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] server lang: <none>
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] kex follows: False
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:33:17.459 [DEBUG] [Thread-129670] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:33:17.460 [DEBUG] [Thread-129670] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:33:17.460 [DEBUG] [Thread-129670] [transport.py] [_log()] Compression: none
2025-09-28T16:33:17.460 [DEBUG] [Thread-129670] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:33:17.520 [DEBUG] [Thread-129670] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:33:17.520 [DEBUG] [Thread-129670] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:33:17.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:33:17.520 [DEBUG] [Thread-129670] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:33:17.520 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:33:17.578 [DEBUG] [Thread-129670] [transport.py] [_log()] userauth is OK
2025-09-28T16:33:17.578 [DEBUG] [Thread-129670] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:33:17.578 [DEBUG] [Thread-129670] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:33:17.578 [DEBUG] [Thread-129670] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:33:17.578 [DEBUG] [Thread-129670] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:33:17.592 [INFO] [Thread-129670] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:33:17.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-28T16:33:17.593 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:33:18.523 [DEBUG] [Thread-129670] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:33:18.524 [DEBUG] [Thread-129670] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:33:18.571 [DEBUG] [Thread-129670] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:33:18.571 [DEBUG] [Thread-129670] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:33:18.579 [DEBUG] [Thread-129670] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:33:18.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:33:18.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')
2025-09-28T16:33:18.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-28T16:33:18.603 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:33:18.603 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:33:18.603 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:33:18.611 [DEBUG] [Thread-129670] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:21.191 [DEBUG] [Thread-129672 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:21.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:21.192 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:28.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:33:28.614 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:33:28.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-28T16:33:29.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 33, 21), 15.76, 34.7, 0.0, 12.21, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:33:29.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:33:21
2025-09-28T16:33:29.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:33:29.447 [DEBUG] [Thread-129673] [transport.py] [_log()] starting thread (client mode): 0x2b94c9d0
2025-09-28T16:33:29.447 [DEBUG] [Thread-129673] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:33:29.466 [DEBUG] [Thread-129673] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:33:29.466 [INFO] [Thread-129673] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:33:29.469 [DEBUG] [Thread-129673] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:33:29.469 [DEBUG] [Thread-129673] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] client lang: <none>
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] server lang: <none>
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] kex follows: False
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] Compression: none
2025-09-28T16:33:29.470 [DEBUG] [Thread-129673] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:33:29.486 [DEBUG] [Thread-129673] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:33:29.487 [DEBUG] [Thread-129673] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:33:29.487 [DEBUG] [Thread-129673] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:33:29.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:33:29.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:33:29.528 [DEBUG] [Thread-129673] [transport.py] [_log()] userauth is OK
2025-09-28T16:33:29.528 [DEBUG] [Thread-129673] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:33:29.529 [DEBUG] [Thread-129673] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:33:29.529 [DEBUG] [Thread-129673] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:33:29.529 [DEBUG] [Thread-129673] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:33:29.550 [INFO] [Thread-129673] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:33:29.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:33:30.103 [DEBUG] [Thread-129675 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:33:30.346 [DEBUG] [Thread-129673] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:33:30.346 [DEBUG] [Thread-129673] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:33:30.347 [DEBUG] [Thread-129673] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:33:30.387 [DEBUG] [Thread-129673] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:33:30.387 [DEBUG] [Thread-129673] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:33:30.390 [DEBUG] [Thread-129673] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:33:30.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:33:30.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:33:30.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:33:30.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:33:30.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:33:30.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:33:30.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:33:30.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:33:30.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:33:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.605984 -999.00  +17.80  11.05     38   +3.60 1 1 1 1 1   887    0 13.85 -18.25 ----- 11.1 11.1 209.6 15.9 22.3 -27.8 21.9 -26.4 23.6 -26.3 24.4 -28.5
2025-09-28T16:33:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:33:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:33:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.605984
2025-09-28T16:33:30.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:33:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:33:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:33:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:33:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:33:30.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:33:21', tmtdew=15.76, humidity=34.7, cloud=0.0, wind=12.21, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:32:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:33:30.417 [DEBUG] [Thread-129673] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:33:30.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-28T16:33:45.152 [DEBUG] [Thread-129677 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:00.208 [DEBUG] [Thread-129678 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:15.246 [DEBUG] [Thread-129679 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:21.246 [DEBUG] [Thread-129680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:21.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:21.335 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:30.283 [DEBUG] [Thread-129681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:34:45.320 [DEBUG] [Thread-129682 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:00.366 [DEBUG] [Thread-129683 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:15.408 [DEBUG] [Thread-129684 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:21.306 [DEBUG] [Thread-129685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:21.482 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:21.483 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:30.448 [DEBUG] [Thread-129686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:45.479 [DEBUG] [Thread-129687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:35:45.723 [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-28T16:35:55.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:35:55.733 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:35:55.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-28T16:35:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 35, 29), 15.78, 34.87, 0.0, 21.77, 17.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:35:56.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:35:29
2025-09-28T16:35:56.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:35:56.619 [DEBUG] [Thread-129688] [transport.py] [_log()] starting thread (client mode): 0x2e38ef50
2025-09-28T16:35:56.620 [DEBUG] [Thread-129688] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:35:56.639 [DEBUG] [Thread-129688] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:35:56.639 [INFO] [Thread-129688] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:35:56.642 [DEBUG] [Thread-129688] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] client lang: <none>
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] server lang: <none>
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] kex follows: False
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:35:56.643 [DEBUG] [Thread-129688] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:35:56.644 [DEBUG] [Thread-129688] [transport.py] [_log()] Compression: none
2025-09-28T16:35:56.644 [DEBUG] [Thread-129688] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:35:56.662 [DEBUG] [Thread-129688] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:35:56.663 [DEBUG] [Thread-129688] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:35:56.663 [DEBUG] [Thread-129688] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:35:56.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:35:56.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:35:56.665 [DEBUG] [Thread-129688] [transport.py] [_log()] userauth is OK
2025-09-28T16:35:56.666 [DEBUG] [Thread-129688] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:35:56.666 [DEBUG] [Thread-129688] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:35:56.666 [DEBUG] [Thread-129688] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:35:56.666 [DEBUG] [Thread-129688] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:35:56.691 [INFO] [Thread-129688] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:35:56.691 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:35:57.307 [DEBUG] [Thread-129688] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:35:57.307 [DEBUG] [Thread-129688] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:35:57.308 [DEBUG] [Thread-129688] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:35:57.348 [DEBUG] [Thread-129688] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:35:57.348 [DEBUG] [Thread-129688] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:35:57.351 [DEBUG] [Thread-129688] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:35:57.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:35:57.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:35:57.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:35:57.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:35:57.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:35:57.375 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:35:57.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:35:57.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:35:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:35:57.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608067 -999.00  +17.60  18.01     41   +4.30 1 1 1 1 1   887    0 13.20 -35.57 ----- 18.0 18.0 197.0 22.7 22.2 -28.4 21.5 -27.1 23.3 -26.8 24.1 -29.3
2025-09-28T16:35:57.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:35:57.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:35:57.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608067
2025-09-28T16:35:57.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:35:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:35:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:35:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:35:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:35:57.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:35:29', tmtdew=15.78, humidity=34.87, cloud=0.0, wind=21.77, temperature=17.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:35:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:35:57.378 [DEBUG] [Thread-129688] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:35:57.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-28T16:35:57.486 [DEBUG] [Thread-129691] [transport.py] [_log()] starting thread (client mode): 0x2b94fc40
2025-09-28T16:35:57.486 [DEBUG] [Thread-129691] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:35:57.502 [DEBUG] [Thread-129691] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:35:57.503 [INFO] [Thread-129691] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:35:57.510 [DEBUG] [Thread-129691] [transport.py] [_log()] client lang: <none>
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] server lang: <none>
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] kex follows: False
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] Compression: none
2025-09-28T16:35:57.511 [DEBUG] [Thread-129691] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:35:57.571 [DEBUG] [Thread-129691] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:35:57.571 [DEBUG] [Thread-129691] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:35:57.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:35:57.572 [DEBUG] [Thread-129691] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:35:57.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:35:57.627 [DEBUG] [Thread-129691] [transport.py] [_log()] userauth is OK
2025-09-28T16:35:57.627 [DEBUG] [Thread-129691] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:35:57.627 [DEBUG] [Thread-129691] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:35:57.627 [DEBUG] [Thread-129691] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:35:57.627 [DEBUG] [Thread-129691] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:35:57.648 [INFO] [Thread-129691] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:35:57.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-28T16:35:57.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:35:58.633 [DEBUG] [Thread-129691] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:35:58.633 [DEBUG] [Thread-129691] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:35:58.681 [DEBUG] [Thread-129691] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:35:58.681 [DEBUG] [Thread-129691] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:35:58.690 [DEBUG] [Thread-129691] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:35:58.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:35:58.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-28T16:35:58.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-28T16:35:58.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:35:58.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:35:58.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:35:58.725 [DEBUG] [Thread-129691] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:00.513 [DEBUG] [Thread-129693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:08.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:36:08.727 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:36: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-28T16:36:09.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 36, 1), 15.32, 36.0, 0.0, 21.76, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:36:09.344 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:36:01
2025-09-28T16:36:09.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:36:09.610 [DEBUG] [Thread-129694] [transport.py] [_log()] starting thread (client mode): 0x2e38cd00
2025-09-28T16:36:09.610 [DEBUG] [Thread-129694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:09.625 [DEBUG] [Thread-129694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:36:09.625 [INFO] [Thread-129694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] Compression: none
2025-09-28T16:36:09.628 [DEBUG] [Thread-129694] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:09.646 [DEBUG] [Thread-129694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:09.647 [DEBUG] [Thread-129694] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:09.647 [DEBUG] [Thread-129694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:36:09.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:36:09.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:09.649 [DEBUG] [Thread-129694] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:09.649 [DEBUG] [Thread-129694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:09.649 [DEBUG] [Thread-129694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:09.650 [DEBUG] [Thread-129694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:36:09.650 [DEBUG] [Thread-129694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:09.674 [INFO] [Thread-129694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:09.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:10.315 [DEBUG] [Thread-129694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:10.315 [DEBUG] [Thread-129694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:10.316 [DEBUG] [Thread-129694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:36:10.356 [DEBUG] [Thread-129694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:10.357 [DEBUG] [Thread-129694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:10.360 [DEBUG] [Thread-129694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:10.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:10.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:36:10.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:36:10.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:36:10.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:10.382 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:36:10.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:10.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:10.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:36:10.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608067 -999.00  +17.60  18.01     41   +4.30 1 1 1 1 1   887    0 13.20 -35.57 ----- 18.0 18.0 197.0 22.7 22.2 -28.4 21.5 -27.1 23.3 -26.8 24.1 -29.3
2025-09-28T16:36:10.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:36:10.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:36:10.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608067
2025-09-28T16:36:10.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:36:10.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:36:10.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:36:10.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:36:10.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:36:10.385 [DEBUG] [Thread-129694] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:10.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:36:01', tmtdew=15.32, humidity=36.0, cloud=0.0, wind=21.76, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:35:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:36:10.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-28T16:36:10.485 [DEBUG] [Thread-129697] [transport.py] [_log()] starting thread (client mode): 0x2b94d780
2025-09-28T16:36:10.485 [DEBUG] [Thread-129697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:10.499 [DEBUG] [Thread-129697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:36:10.500 [INFO] [Thread-129697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:36:10.507 [DEBUG] [Thread-129697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:10.507 [DEBUG] [Thread-129697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:10.508 [DEBUG] [Thread-129697] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] Compression: none
2025-09-28T16:36:10.509 [DEBUG] [Thread-129697] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:10.566 [DEBUG] [Thread-129697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:10.567 [DEBUG] [Thread-129697] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:10.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:36:10.568 [DEBUG] [Thread-129697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:36:10.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:10.623 [DEBUG] [Thread-129697] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:10.623 [DEBUG] [Thread-129697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:10.623 [DEBUG] [Thread-129697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:10.623 [DEBUG] [Thread-129697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:36:10.623 [DEBUG] [Thread-129697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:10.639 [INFO] [Thread-129697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:10.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-28T16:36:10.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:11.548 [DEBUG] [Thread-129697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:11.549 [DEBUG] [Thread-129697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:11.596 [DEBUG] [Thread-129697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:11.596 [DEBUG] [Thread-129697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:11.605 [DEBUG] [Thread-129697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:11.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:11.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-28T16:36:11.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-28T16:36:11.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:11.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:11.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:11.642 [DEBUG] [Thread-129697] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:15.575 [DEBUG] [Thread-129699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:21.361 [DEBUG] [Thread-129700 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:21.623 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:21.624 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:36:21.645 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:36:21.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-28T16:36:22.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 36, 1), 15.32, 36.0, 0.0, 21.76, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:36:22.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:36:01
2025-09-28T16:36:22.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:36:22.512 [DEBUG] [Thread-129701] [transport.py] [_log()] starting thread (client mode): 0x2b91ead0
2025-09-28T16:36:22.512 [DEBUG] [Thread-129701] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:22.532 [DEBUG] [Thread-129701] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:36:22.533 [INFO] [Thread-129701] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:36:22.536 [DEBUG] [Thread-129701] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:22.536 [DEBUG] [Thread-129701] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:36:22.536 [DEBUG] [Thread-129701] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:22.537 [DEBUG] [Thread-129701] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] Compression: none
2025-09-28T16:36:22.538 [DEBUG] [Thread-129701] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:22.559 [DEBUG] [Thread-129701] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:22.559 [DEBUG] [Thread-129701] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:22.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:36:22.560 [DEBUG] [Thread-129701] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:36:22.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:22.562 [DEBUG] [Thread-129701] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:22.562 [DEBUG] [Thread-129701] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:22.563 [DEBUG] [Thread-129701] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:22.563 [DEBUG] [Thread-129701] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:36:22.563 [DEBUG] [Thread-129701] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:22.598 [INFO] [Thread-129701] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:22.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:23.206 [DEBUG] [Thread-129701] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:23.206 [DEBUG] [Thread-129701] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:23.206 [DEBUG] [Thread-129701] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:36:23.247 [DEBUG] [Thread-129701] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:23.247 [DEBUG] [Thread-129701] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:23.249 [DEBUG] [Thread-129701] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:23.261 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:23.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:36:23.262 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:36:23.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:36:23.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:23.268 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:36:23.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608067 -999.00  +17.60  18.01     41   +4.30 1 1 1 1 1   887    0 13.20 -35.57 ----- 18.0 18.0 197.0 22.7 22.2 -28.4 21.5 -27.1 23.3 -26.8 24.1 -29.3
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608067
2025-09-28T16:36:23.268 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:36:23.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:36:23.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:36:23.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:36:23.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:36:23.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:36:01', tmtdew=15.32, humidity=36.0, cloud=0.0, wind=21.76, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:35:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:36:23.270 [DEBUG] [Thread-129701] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:23.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-28T16:36:23.361 [DEBUG] [Thread-129704] [transport.py] [_log()] starting thread (client mode): 0x2b91f910
2025-09-28T16:36:23.361 [DEBUG] [Thread-129704] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:23.379 [DEBUG] [Thread-129704] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:36:23.379 [INFO] [Thread-129704] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] Compression: none
2025-09-28T16:36:23.387 [DEBUG] [Thread-129704] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:23.446 [DEBUG] [Thread-129704] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:23.446 [DEBUG] [Thread-129704] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:23.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:36:23.447 [DEBUG] [Thread-129704] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:36:23.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:23.503 [DEBUG] [Thread-129704] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:23.503 [DEBUG] [Thread-129704] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:23.503 [DEBUG] [Thread-129704] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:23.503 [DEBUG] [Thread-129704] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:36:23.503 [DEBUG] [Thread-129704] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:23.523 [INFO] [Thread-129704] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:23.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-28T16:36:23.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:24.437 [DEBUG] [Thread-129704] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:24.437 [DEBUG] [Thread-129704] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:24.485 [DEBUG] [Thread-129704] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:24.485 [DEBUG] [Thread-129704] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:24.495 [DEBUG] [Thread-129704] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:24.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:24.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')
2025-09-28T16:36:24.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-28T16:36:24.521 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:24.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:24.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:24.530 [DEBUG] [Thread-129704] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:30.639 [DEBUG] [Thread-129706 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:34.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:36:34.532 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:36:34.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-28T16:36:35.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 36, 1), 15.32, 36.0, 0.0, 21.76, 17.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:36:35.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:36:01
2025-09-28T16:36:35.293 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:36:35.452 [DEBUG] [Thread-129707] [transport.py] [_log()] starting thread (client mode): 0x2b91ef50
2025-09-28T16:36:35.452 [DEBUG] [Thread-129707] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:35.471 [DEBUG] [Thread-129707] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:36:35.471 [INFO] [Thread-129707] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:36:35.474 [DEBUG] [Thread-129707] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] Compression: none
2025-09-28T16:36:35.475 [DEBUG] [Thread-129707] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:35.493 [DEBUG] [Thread-129707] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:35.493 [DEBUG] [Thread-129707] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:35.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:36:35.494 [DEBUG] [Thread-129707] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:36:35.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:35.496 [DEBUG] [Thread-129707] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:35.496 [DEBUG] [Thread-129707] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:35.496 [DEBUG] [Thread-129707] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:35.496 [DEBUG] [Thread-129707] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:36:35.496 [DEBUG] [Thread-129707] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:35.520 [INFO] [Thread-129707] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:35.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:36.165 [DEBUG] [Thread-129707] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:36.166 [DEBUG] [Thread-129707] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:36.166 [DEBUG] [Thread-129707] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:36:36.206 [DEBUG] [Thread-129707] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:36.206 [DEBUG] [Thread-129707] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:36.209 [DEBUG] [Thread-129707] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:36.221 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:36.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:36:36.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:36:36.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:36:36.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:36.231 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:36:36.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608415 -999.00  +17.40  15.32     41   +4.30 1 1 1 1 1   887    0 12.94 -43.11 ----- 15.3 15.3 220.6 21.4 22.1 -28.1 21.5 -26.6 23.3 -27.3 24.1 -27.9
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:36:36.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608415
2025-09-28T16:36:36.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:36:36.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:36:36.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:36:36.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:36:36.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:36:36.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:36:01', tmtdew=15.32, humidity=36.0, cloud=0.0, wind=21.76, temperature=17.47, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:36:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:36:36.233 [DEBUG] [Thread-129707] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:36.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-28T16:36:36.339 [DEBUG] [Thread-129710] [transport.py] [_log()] starting thread (client mode): 0x2b91ead0
2025-09-28T16:36:36.339 [DEBUG] [Thread-129710] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:36.354 [DEBUG] [Thread-129710] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:36:36.354 [INFO] [Thread-129710] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:36:36.361 [DEBUG] [Thread-129710] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:36.361 [DEBUG] [Thread-129710] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] Compression: none
2025-09-28T16:36:36.362 [DEBUG] [Thread-129710] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:36.418 [DEBUG] [Thread-129710] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:36.419 [DEBUG] [Thread-129710] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:36.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:36:36.420 [DEBUG] [Thread-129710] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:36:36.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:36.474 [DEBUG] [Thread-129710] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:36.475 [DEBUG] [Thread-129710] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:36.475 [DEBUG] [Thread-129710] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:36.475 [DEBUG] [Thread-129710] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:36:36.475 [DEBUG] [Thread-129710] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:36.493 [INFO] [Thread-129710] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:36.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-28T16:36:36.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:37.423 [DEBUG] [Thread-129710] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:37.424 [DEBUG] [Thread-129710] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:37.472 [DEBUG] [Thread-129710] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:37.472 [DEBUG] [Thread-129710] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:37.481 [DEBUG] [Thread-129710] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:37.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:37.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-28T16:36:37.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-28T16:36:37.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:37.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:37.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:37.513 [DEBUG] [Thread-129710] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:45.673 [DEBUG] [Thread-129712 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:36:47.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:36:47.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:36:47.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-28T16:36:48.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 36, 33), 15.23, 36.2, 0.0, 18.21, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:36:48.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:36:33
2025-09-28T16:36:48.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:36:48.393 [DEBUG] [Thread-129713] [transport.py] [_log()] starting thread (client mode): 0x2b91e200
2025-09-28T16:36:48.393 [DEBUG] [Thread-129713] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:48.408 [DEBUG] [Thread-129713] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:36:48.408 [INFO] [Thread-129713] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:48.411 [DEBUG] [Thread-129713] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] Compression: none
2025-09-28T16:36:48.412 [DEBUG] [Thread-129713] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:48.428 [DEBUG] [Thread-129713] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:48.428 [DEBUG] [Thread-129713] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:48.428 [DEBUG] [Thread-129713] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:36:48.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:36:48.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:48.429 [DEBUG] [Thread-129713] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:48.429 [DEBUG] [Thread-129713] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:48.429 [DEBUG] [Thread-129713] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:48.429 [DEBUG] [Thread-129713] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:36:48.429 [DEBUG] [Thread-129713] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:48.440 [INFO] [Thread-129713] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:48.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:49.049 [DEBUG] [Thread-129713] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:49.049 [DEBUG] [Thread-129713] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:49.050 [DEBUG] [Thread-129713] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:36:49.090 [DEBUG] [Thread-129713] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:49.091 [DEBUG] [Thread-129713] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:49.094 [DEBUG] [Thread-129713] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:49.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:49.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:36:49.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:36:49.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:36:49.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:49.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:36:49.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:49.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:49.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:36:49.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608415 -999.00  +17.40  15.32     41   +4.30 1 1 1 1 1   887    0 12.94 -43.11 ----- 15.3 15.3 220.6 21.4 22.1 -28.1 21.5 -26.6 23.3 -27.3 24.1 -27.9
2025-09-28T16:36:49.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:36:49.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:36:49.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608415
2025-09-28T16:36:49.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:36:49.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:36:49.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:36:49.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:36:49.117 [DEBUG] [Thread-129713] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:36:49.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:36:49.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:36:33', tmtdew=15.23, humidity=36.2, cloud=0.0, wind=18.21, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:36:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:36:49.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-28T16:36:49.221 [DEBUG] [Thread-129716] [transport.py] [_log()] starting thread (client mode): 0x2b94c3d0
2025-09-28T16:36:49.221 [DEBUG] [Thread-129716] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:36:49.237 [DEBUG] [Thread-129716] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:36:49.237 [INFO] [Thread-129716] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:36:49.244 [DEBUG] [Thread-129716] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] client lang: <none>
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] server lang: <none>
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] kex follows: False
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:36:49.245 [DEBUG] [Thread-129716] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:36:49.246 [DEBUG] [Thread-129716] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:36:49.246 [DEBUG] [Thread-129716] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:36:49.246 [DEBUG] [Thread-129716] [transport.py] [_log()] Compression: none
2025-09-28T16:36:49.246 [DEBUG] [Thread-129716] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:36:49.307 [DEBUG] [Thread-129716] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:36:49.307 [DEBUG] [Thread-129716] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:36:49.308 [DEBUG] [Thread-129716] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:36:49.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:36:49.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:36:49.362 [DEBUG] [Thread-129716] [transport.py] [_log()] userauth is OK
2025-09-28T16:36:49.363 [DEBUG] [Thread-129716] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:36:49.363 [DEBUG] [Thread-129716] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:36:49.363 [DEBUG] [Thread-129716] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:36:49.363 [DEBUG] [Thread-129716] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:36:49.381 [INFO] [Thread-129716] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:36:49.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-28T16:36:49.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:36:50.347 [DEBUG] [Thread-129716] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:36:50.347 [DEBUG] [Thread-129716] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:36:50.395 [DEBUG] [Thread-129716] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:36:50.395 [DEBUG] [Thread-129716] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:36:50.404 [DEBUG] [Thread-129716] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:36:50.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:36:50.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-28T16:36:50.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-28T16:36:50.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:36:50.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:36:50.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:36:50.439 [DEBUG] [Thread-129716] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:00.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:37:00.436 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:37:00.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-28T16:37:00.740 [DEBUG] [Thread-129718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:01.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 36, 33), 15.23, 36.2, 0.0, 18.21, 17.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:37:01.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:36:33
2025-09-28T16:37:01.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:37:01.309 [DEBUG] [Thread-129719] [transport.py] [_log()] starting thread (client mode): 0x2e38cb80
2025-09-28T16:37:01.309 [DEBUG] [Thread-129719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:01.329 [DEBUG] [Thread-129719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:37:01.329 [INFO] [Thread-129719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:37:01.331 [DEBUG] [Thread-129719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:01.332 [DEBUG] [Thread-129719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] Compression: none
2025-09-28T16:37:01.333 [DEBUG] [Thread-129719] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:01.353 [DEBUG] [Thread-129719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:01.353 [DEBUG] [Thread-129719] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:01.353 [DEBUG] [Thread-129719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:37:01.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:37:01.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:01.356 [DEBUG] [Thread-129719] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:01.356 [DEBUG] [Thread-129719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:01.356 [DEBUG] [Thread-129719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:01.356 [DEBUG] [Thread-129719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:37:01.356 [DEBUG] [Thread-129719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:01.392 [INFO] [Thread-129719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:01.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:02.055 [DEBUG] [Thread-129719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:02.055 [DEBUG] [Thread-129719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:02.056 [DEBUG] [Thread-129719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:37:02.096 [DEBUG] [Thread-129719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:02.096 [DEBUG] [Thread-129719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:02.100 [DEBUG] [Thread-129719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:02.111 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:02.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:37:02.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:37:02.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:37:02.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:02.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:37:02.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608762 -999.00  +17.30  16.17     41   +4.20 1 1 1 1 1   887    0 12.83 -45.72 ----- 16.2 16.2 215.9 23.2 22.1 -27.4 21.5 -29.0 23.2 -27.2 24.1 -28.0
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:37:02.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608762
2025-09-28T16:37:02.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:37:02.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:37:02.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:37:02.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:37:02.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:37:02.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:36:33', tmtdew=15.23, humidity=36.2, cloud=0.0, wind=18.21, temperature=17.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:36:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:37:02.125 [DEBUG] [Thread-129719] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:02.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-28T16:37:02.225 [DEBUG] [Thread-129722] [transport.py] [_log()] starting thread (client mode): 0x2b91e800
2025-09-28T16:37:02.225 [DEBUG] [Thread-129722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:02.241 [DEBUG] [Thread-129722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:37:02.241 [INFO] [Thread-129722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:02.248 [DEBUG] [Thread-129722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] Compression: none
2025-09-28T16:37:02.249 [DEBUG] [Thread-129722] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:02.311 [DEBUG] [Thread-129722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:02.311 [DEBUG] [Thread-129722] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:02.312 [DEBUG] [Thread-129722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:37:02.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:37:02.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:02.366 [DEBUG] [Thread-129722] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:02.367 [DEBUG] [Thread-129722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:02.367 [DEBUG] [Thread-129722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:02.367 [DEBUG] [Thread-129722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:37:02.367 [DEBUG] [Thread-129722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:02.385 [INFO] [Thread-129722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:02.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-28T16:37:02.386 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:03.365 [DEBUG] [Thread-129722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:03.366 [DEBUG] [Thread-129722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:03.413 [DEBUG] [Thread-129722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:03.414 [DEBUG] [Thread-129722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:03.423 [DEBUG] [Thread-129722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:03.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:03.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-28T16:37:03.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-28T16:37:03.448 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:03.448 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:03.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:03.456 [DEBUG] [Thread-129722] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:13.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:37:13.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:37:13.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-28T16:37:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 37, 5), 15.1, 36.48, 0.0, 21.67, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:37:14.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:37:05
2025-09-28T16:37:14.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:37:14.327 [DEBUG] [Thread-129724] [transport.py] [_log()] starting thread (client mode): 0x2e3c3070
2025-09-28T16:37:14.328 [DEBUG] [Thread-129724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:14.347 [DEBUG] [Thread-129724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:37:14.347 [INFO] [Thread-129724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:37:14.350 [DEBUG] [Thread-129724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:14.350 [DEBUG] [Thread-129724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:37:14.350 [DEBUG] [Thread-129724] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:14.350 [DEBUG] [Thread-129724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] Compression: none
2025-09-28T16:37:14.351 [DEBUG] [Thread-129724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:14.369 [DEBUG] [Thread-129724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:14.369 [DEBUG] [Thread-129724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:14.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:37:14.370 [DEBUG] [Thread-129724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:37:14.371 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:14.372 [DEBUG] [Thread-129724] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:14.373 [DEBUG] [Thread-129724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:14.373 [DEBUG] [Thread-129724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:14.373 [DEBUG] [Thread-129724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:37:14.373 [DEBUG] [Thread-129724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:14.391 [INFO] [Thread-129724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:14.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:15.021 [DEBUG] [Thread-129724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:15.021 [DEBUG] [Thread-129724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:15.021 [DEBUG] [Thread-129724] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:37:15.061 [DEBUG] [Thread-129724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:15.061 [DEBUG] [Thread-129724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:15.064 [DEBUG] [Thread-129724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:15.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:15.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:37:15.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:37:15.082 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:37:15.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:15.089 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:37:15.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:15.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:15.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:37:15.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608762 -999.00  +17.30  16.17     41   +4.20 1 1 1 1 1   887    0 12.83 -45.72 ----- 16.2 16.2 215.9 23.2 22.1 -27.4 21.5 -29.0 23.2 -27.2 24.1 -28.0
2025-09-28T16:37:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:37:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:37:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608762
2025-09-28T16:37:15.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:37:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:37:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:37:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:37:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:37:15.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:37:05', tmtdew=15.1, humidity=36.48, cloud=0.0, wind=21.67, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:36:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:37:15.092 [DEBUG] [Thread-129724] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:15.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-28T16:37:15.198 [DEBUG] [Thread-129727] [transport.py] [_log()] starting thread (client mode): 0x2e3c19c0
2025-09-28T16:37:15.198 [DEBUG] [Thread-129727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:15.213 [DEBUG] [Thread-129727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:37:15.213 [INFO] [Thread-129727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:37:15.220 [DEBUG] [Thread-129727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:15.220 [DEBUG] [Thread-129727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:37:15.220 [DEBUG] [Thread-129727] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] Compression: none
2025-09-28T16:37:15.221 [DEBUG] [Thread-129727] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:15.278 [DEBUG] [Thread-129727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:15.278 [DEBUG] [Thread-129727] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:15.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:37:15.279 [DEBUG] [Thread-129727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:37:15.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:15.334 [DEBUG] [Thread-129727] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:15.334 [DEBUG] [Thread-129727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:15.335 [DEBUG] [Thread-129727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:15.335 [DEBUG] [Thread-129727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:37:15.335 [DEBUG] [Thread-129727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:15.357 [INFO] [Thread-129727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:15.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-28T16:37:15.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:15.790 [DEBUG] [Thread-129729 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:16.283 [DEBUG] [Thread-129727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:16.284 [DEBUG] [Thread-129727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:16.332 [DEBUG] [Thread-129727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:16.332 [DEBUG] [Thread-129727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:16.343 [DEBUG] [Thread-129727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:16.351 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:16.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-28T16:37:16.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-28T16:37:16.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:16.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:16.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:16.377 [DEBUG] [Thread-129727] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:21.426 [DEBUG] [Thread-129730 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:21.766 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:21.767 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:26.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:37:26.379 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:37:26.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-28T16:37:26.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 37, 5), 15.1, 36.48, 0.0, 21.67, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:37:26.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:37:05
2025-09-28T16:37:27.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:37:27.226 [DEBUG] [Thread-129731] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T16:37:27.226 [DEBUG] [Thread-129731] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:27.247 [DEBUG] [Thread-129731] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:37:27.247 [INFO] [Thread-129731] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:27.250 [DEBUG] [Thread-129731] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] Compression: none
2025-09-28T16:37:27.251 [DEBUG] [Thread-129731] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:27.264 [DEBUG] [Thread-129731] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:27.264 [DEBUG] [Thread-129731] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:27.265 [DEBUG] [Thread-129731] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:37:27.265 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:37:27.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:27.268 [DEBUG] [Thread-129731] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:27.268 [DEBUG] [Thread-129731] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:27.268 [DEBUG] [Thread-129731] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:27.268 [DEBUG] [Thread-129731] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:37:27.268 [DEBUG] [Thread-129731] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:27.291 [INFO] [Thread-129731] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:27.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:27.862 [DEBUG] [Thread-129731] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:27.863 [DEBUG] [Thread-129731] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:27.863 [DEBUG] [Thread-129731] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:37:27.904 [DEBUG] [Thread-129731] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:27.904 [DEBUG] [Thread-129731] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:27.907 [DEBUG] [Thread-129731] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:27.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:27.920 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:37:27.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:37:27.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:37:27.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:27.930 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:37:27.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.608762 -999.00  +17.30  16.17     41   +4.20 1 1 1 1 1   887    0 12.83 -45.72 ----- 16.2 16.2 215.9 23.2 22.1 -27.4 21.5 -29.0 23.2 -27.2 24.1 -28.0
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:37:27.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.608762
2025-09-28T16:37:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:37:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:37:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:37:27.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:37:27.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:37:27.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:37:05', tmtdew=15.1, humidity=36.48, cloud=0.0, wind=21.67, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:36:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:37:27.933 [DEBUG] [Thread-129731] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:28.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-28T16:37:28.034 [DEBUG] [Thread-129734] [transport.py] [_log()] starting thread (client mode): 0x2b91fb20
2025-09-28T16:37:28.035 [DEBUG] [Thread-129734] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:28.049 [DEBUG] [Thread-129734] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:37:28.050 [INFO] [Thread-129734] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:28.058 [DEBUG] [Thread-129734] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:28.059 [DEBUG] [Thread-129734] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:28.059 [DEBUG] [Thread-129734] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:28.059 [DEBUG] [Thread-129734] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:28.059 [DEBUG] [Thread-129734] [transport.py] [_log()] Compression: none
2025-09-28T16:37:28.059 [DEBUG] [Thread-129734] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:28.114 [DEBUG] [Thread-129734] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:28.115 [DEBUG] [Thread-129734] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:28.115 [DEBUG] [Thread-129734] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:37:28.115 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:37:28.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:28.171 [DEBUG] [Thread-129734] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:28.171 [DEBUG] [Thread-129734] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:28.171 [DEBUG] [Thread-129734] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:28.171 [DEBUG] [Thread-129734] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:37:28.171 [DEBUG] [Thread-129734] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:28.190 [INFO] [Thread-129734] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:28.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-28T16:37:28.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:29.142 [DEBUG] [Thread-129734] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:29.142 [DEBUG] [Thread-129734] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:29.190 [DEBUG] [Thread-129734] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:29.190 [DEBUG] [Thread-129734] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:29.199 [DEBUG] [Thread-129734] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:29.207 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:29.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-28T16:37:29.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-28T16:37:29.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:29.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:29.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:29.233 [DEBUG] [Thread-129734] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:30.849 [DEBUG] [Thread-129736 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:39.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:37:39.235 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:37:39.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-28T16:37:39.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 37, 5), 15.1, 36.48, 0.0, 21.67, 17.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:37:39.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:37:05
2025-09-28T16:37:39.945 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:37:40.102 [DEBUG] [Thread-129737] [transport.py] [_log()] starting thread (client mode): 0x2b94cd60
2025-09-28T16:37:40.102 [DEBUG] [Thread-129737] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:40.119 [DEBUG] [Thread-129737] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:37:40.119 [INFO] [Thread-129737] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] Compression: none
2025-09-28T16:37:40.123 [DEBUG] [Thread-129737] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:40.140 [DEBUG] [Thread-129737] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:40.140 [DEBUG] [Thread-129737] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:40.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:37:40.141 [DEBUG] [Thread-129737] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:37:40.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:40.143 [DEBUG] [Thread-129737] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:40.143 [DEBUG] [Thread-129737] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:40.143 [DEBUG] [Thread-129737] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:40.144 [DEBUG] [Thread-129737] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:37:40.144 [DEBUG] [Thread-129737] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:40.165 [INFO] [Thread-129737] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:40.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:40.796 [DEBUG] [Thread-129737] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:40.796 [DEBUG] [Thread-129737] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:40.797 [DEBUG] [Thread-129737] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:37:40.837 [DEBUG] [Thread-129737] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:40.837 [DEBUG] [Thread-129737] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:40.839 [DEBUG] [Thread-129737] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:40.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:40.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:37:40.853 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:37:40.854 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:37:40.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:40.860 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:37:40.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.609109 -999.00  +17.30  10.90     41   +4.20 1 1 1 1 1   887    0 12.65 -52.36 ----- 10.9 10.9 197.6 18.8 22.1 -27.7 21.6 -26.8 23.3 -26.9 24.1 -27.6
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:37:40.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.609109
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:37:40.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:37:05', tmtdew=15.1, humidity=36.48, cloud=0.0, wind=21.67, temperature=17.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:37:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:37:40.862 [DEBUG] [Thread-129737] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:40.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-28T16:37:40.959 [DEBUG] [Thread-129740] [transport.py] [_log()] starting thread (client mode): 0x2b96e650
2025-09-28T16:37:40.960 [DEBUG] [Thread-129740] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:40.974 [DEBUG] [Thread-129740] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:37:40.974 [INFO] [Thread-129740] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:40.982 [DEBUG] [Thread-129740] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] Compression: none
2025-09-28T16:37:40.983 [DEBUG] [Thread-129740] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:41.038 [DEBUG] [Thread-129740] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:41.039 [DEBUG] [Thread-129740] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:41.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:37:41.040 [DEBUG] [Thread-129740] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:37:41.041 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:41.094 [DEBUG] [Thread-129740] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:41.095 [DEBUG] [Thread-129740] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:41.095 [DEBUG] [Thread-129740] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:41.095 [DEBUG] [Thread-129740] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:37:41.095 [DEBUG] [Thread-129740] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:41.113 [INFO] [Thread-129740] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16: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-28T16:37:41.114 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:42.036 [DEBUG] [Thread-129740] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:42.036 [DEBUG] [Thread-129740] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:42.084 [DEBUG] [Thread-129740] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:42.084 [DEBUG] [Thread-129740] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:42.092 [DEBUG] [Thread-129740] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:42.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:42.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-28T16:37:42.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-28T16:37:42.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:42.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:42.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:42.127 [DEBUG] [Thread-129740] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:45.882 [DEBUG] [Thread-129742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:37:52.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:37:52.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:37:52.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-28T16:37:52.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 37, 37), 14.64, 37.48, 0.0, 19.39, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:37:52.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:37:37
2025-09-28T16:37:52.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:37:52.986 [DEBUG] [Thread-129743] [transport.py] [_log()] starting thread (client mode): 0x2b94d4b0
2025-09-28T16:37:52.986 [DEBUG] [Thread-129743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:53.007 [DEBUG] [Thread-129743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:37:53.007 [INFO] [Thread-129743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:37:53.010 [DEBUG] [Thread-129743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:53.010 [DEBUG] [Thread-129743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] Compression: none
2025-09-28T16:37:53.011 [DEBUG] [Thread-129743] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:53.030 [DEBUG] [Thread-129743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:53.031 [DEBUG] [Thread-129743] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:53.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:37:53.032 [DEBUG] [Thread-129743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:37:53.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:53.034 [DEBUG] [Thread-129743] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:53.034 [DEBUG] [Thread-129743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:53.034 [DEBUG] [Thread-129743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:53.034 [DEBUG] [Thread-129743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:37:53.035 [DEBUG] [Thread-129743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:53.070 [INFO] [Thread-129743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:53.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:53.708 [DEBUG] [Thread-129743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:53.708 [DEBUG] [Thread-129743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:53.708 [DEBUG] [Thread-129743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:37:53.749 [DEBUG] [Thread-129743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:53.749 [DEBUG] [Thread-129743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:53.752 [DEBUG] [Thread-129743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:53.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:53.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:37:53.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:37:53.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:37:53.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:53.774 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:37:53.774 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:53.774 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.609109 -999.00  +17.30  10.90     41   +4.20 1 1 1 1 1   887    0 12.65 -52.36 ----- 10.9 10.9 197.6 18.8 22.1 -27.7 21.6 -26.8 23.3 -26.9 24.1 -27.6
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.609109
2025-09-28T16:37:53.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:37:53.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:37:53.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:37:53.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:37:53.776 [DEBUG] [Thread-129743] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:37:53.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:37:53.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:37:37', tmtdew=14.64, humidity=37.48, cloud=0.0, wind=19.39, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:37:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:37:53.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-28T16:37:53.878 [DEBUG] [Thread-129746] [transport.py] [_log()] starting thread (client mode): 0x2b94ed40
2025-09-28T16:37:53.878 [DEBUG] [Thread-129746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:37:53.894 [DEBUG] [Thread-129746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:37:53.894 [INFO] [Thread-129746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:37:53.901 [DEBUG] [Thread-129746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:37:53.901 [DEBUG] [Thread-129746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] client lang: <none>
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] server lang: <none>
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] kex follows: False
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:37:53.902 [DEBUG] [Thread-129746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:37:53.903 [DEBUG] [Thread-129746] [transport.py] [_log()] Compression: none
2025-09-28T16:37:53.903 [DEBUG] [Thread-129746] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:37:53.963 [DEBUG] [Thread-129746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:37:53.963 [DEBUG] [Thread-129746] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:37:53.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:37:53.964 [DEBUG] [Thread-129746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:37:53.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:37:54.019 [DEBUG] [Thread-129746] [transport.py] [_log()] userauth is OK
2025-09-28T16:37:54.019 [DEBUG] [Thread-129746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:37:54.019 [DEBUG] [Thread-129746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:37:54.019 [DEBUG] [Thread-129746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:37:54.019 [DEBUG] [Thread-129746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:37:54.038 [INFO] [Thread-129746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:37:54.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-28T16:37:54.039 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:37:55.004 [DEBUG] [Thread-129746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:37:55.004 [DEBUG] [Thread-129746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:37:55.052 [DEBUG] [Thread-129746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:37:55.052 [DEBUG] [Thread-129746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:37:55.061 [DEBUG] [Thread-129746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:37:55.070 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:37:55.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-28T16:37:55.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-28T16:37:55.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:37:55.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:37:55.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:37:55.097 [DEBUG] [Thread-129746] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:00.937 [DEBUG] [Thread-129748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:05.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:38:05.093 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:38:05.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-28T16:38:05.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 37, 37), 14.64, 37.48, 0.0, 19.39, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:38:05.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:37:37
2025-09-28T16:38:05.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:38:05.960 [DEBUG] [Thread-129749] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b80
2025-09-28T16:38:05.960 [DEBUG] [Thread-129749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:38:05.975 [DEBUG] [Thread-129749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:38:05.975 [INFO] [Thread-129749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] client lang: <none>
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] server lang: <none>
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] kex follows: False
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] Compression: none
2025-09-28T16:38:05.977 [DEBUG] [Thread-129749] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:38:05.988 [DEBUG] [Thread-129749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:38:05.989 [DEBUG] [Thread-129749] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:38:05.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:38:05.990 [DEBUG] [Thread-129749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:38:05.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:38:05.991 [DEBUG] [Thread-129749] [transport.py] [_log()] userauth is OK
2025-09-28T16:38:05.992 [DEBUG] [Thread-129749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:38:05.992 [DEBUG] [Thread-129749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:38:05.992 [DEBUG] [Thread-129749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:38:05.992 [DEBUG] [Thread-129749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:38:06.010 [INFO] [Thread-129749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:38:06.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:38:06.551 [DEBUG] [Thread-129749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:38:06.551 [DEBUG] [Thread-129749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:38:06.552 [DEBUG] [Thread-129749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:38:06.592 [DEBUG] [Thread-129749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:38:06.593 [DEBUG] [Thread-129749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:38:06.595 [DEBUG] [Thread-129749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:38:06.604 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:38:06.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:38:06.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:38:06.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:38:06.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:38:06.614 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:38:06.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:38:06.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.609456 -999.00  +17.30  15.74     42   +4.30 1 1 1 1 1   887    0 12.34 -56.45 ----- 15.7 15.7 199.9 20.4 22.1 -28.1 21.6 -27.9 23.2 -27.1 24.2 -28.9
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.609456
2025-09-28T16:38:06.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:38:06.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:38:06.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:38:06.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:38:06.616 [DEBUG] [Thread-129749] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:06.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:38:06.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:37:37', tmtdew=14.64, humidity=37.48, cloud=0.0, wind=19.39, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:37:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:38:06.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-28T16:38:06.721 [DEBUG] [Thread-129752] [transport.py] [_log()] starting thread (client mode): 0x2b91e410
2025-09-28T16:38:06.721 [DEBUG] [Thread-129752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:38:06.736 [DEBUG] [Thread-129752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:38:06.737 [INFO] [Thread-129752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:38:06.744 [DEBUG] [Thread-129752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] client lang: <none>
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] server lang: <none>
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] kex follows: False
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:38:06.745 [DEBUG] [Thread-129752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:38:06.746 [DEBUG] [Thread-129752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:38:06.746 [DEBUG] [Thread-129752] [transport.py] [_log()] Compression: none
2025-09-28T16:38:06.746 [DEBUG] [Thread-129752] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:38:06.803 [DEBUG] [Thread-129752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:38:06.803 [DEBUG] [Thread-129752] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:38:06.804 [DEBUG] [Thread-129752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:38:06.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:38:06.805 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:38:06.859 [DEBUG] [Thread-129752] [transport.py] [_log()] userauth is OK
2025-09-28T16:38:06.859 [DEBUG] [Thread-129752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:38:06.859 [DEBUG] [Thread-129752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:38:06.859 [DEBUG] [Thread-129752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:38:06.859 [DEBUG] [Thread-129752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:38:06.878 [INFO] [Thread-129752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:38:06.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-28T16:38:06.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:38:07.863 [DEBUG] [Thread-129752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:38:07.863 [DEBUG] [Thread-129752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:38:07.911 [DEBUG] [Thread-129752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:38:07.911 [DEBUG] [Thread-129752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:38:07.920 [DEBUG] [Thread-129752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:38:07.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:38:07.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-28T16:38:07.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-28T16:38:07.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:38:07.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:38:07.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:38:07.955 [DEBUG] [Thread-129752] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:15.988 [DEBUG] [Thread-129754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:17.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:38:17.958 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:38:17.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-28T16:38:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 38, 9), 14.51, 37.8, 0.0, 22.58, 16.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:38:18.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:38:09
2025-09-28T16:38:18.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:38:18.813 [DEBUG] [Thread-129755] [transport.py] [_log()] starting thread (client mode): 0x2b9b81c0
2025-09-28T16:38:18.813 [DEBUG] [Thread-129755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:38:18.833 [DEBUG] [Thread-129755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:38:18.833 [INFO] [Thread-129755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:38:18.836 [DEBUG] [Thread-129755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:38:18.836 [DEBUG] [Thread-129755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:38:18.836 [DEBUG] [Thread-129755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:38:18.836 [DEBUG] [Thread-129755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] client lang: <none>
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] server lang: <none>
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] kex follows: False
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] Compression: none
2025-09-28T16:38:18.837 [DEBUG] [Thread-129755] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:38:18.854 [DEBUG] [Thread-129755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:38:18.854 [DEBUG] [Thread-129755] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:38:18.855 [DEBUG] [Thread-129755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:38:18.855 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:38:18.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:38:18.857 [DEBUG] [Thread-129755] [transport.py] [_log()] userauth is OK
2025-09-28T16:38:18.857 [DEBUG] [Thread-129755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:38:18.857 [DEBUG] [Thread-129755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:38:18.857 [DEBUG] [Thread-129755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:38:18.858 [DEBUG] [Thread-129755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:38:18.881 [INFO] [Thread-129755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:38:18.881 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:38:19.463 [DEBUG] [Thread-129755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:38:19.463 [DEBUG] [Thread-129755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:38:19.463 [DEBUG] [Thread-129755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:38:19.504 [DEBUG] [Thread-129755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:38:19.504 [DEBUG] [Thread-129755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:38:19.508 [DEBUG] [Thread-129755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:38:19.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:38:19.514 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:38:19.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:38:19.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:38:19.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:38:19.523 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:38:19.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.609456 -999.00  +17.30  15.74     42   +4.30 1 1 1 1 1   887    0 12.34 -56.45 ----- 15.7 15.7 199.9 20.4 22.1 -28.1 21.6 -27.9 23.2 -27.1 24.2 -28.9
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:38:19.524 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.609456
2025-09-28T16:38:19.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:38:19.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:38:19.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:38:19.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:38:19.525 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:38:19.526 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:38:09', tmtdew=14.51, humidity=37.8, cloud=0.0, wind=22.58, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:37:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:38:19.526 [DEBUG] [Thread-129755] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:19.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-28T16:38:19.629 [DEBUG] [Thread-129758] [transport.py] [_log()] starting thread (client mode): 0x2b9bb7f0
2025-09-28T16:38:19.629 [DEBUG] [Thread-129758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:38:19.644 [DEBUG] [Thread-129758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:38:19.644 [INFO] [Thread-129758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] client lang: <none>
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] server lang: <none>
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] kex follows: False
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:38:19.651 [DEBUG] [Thread-129758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:38:19.652 [DEBUG] [Thread-129758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:38:19.652 [DEBUG] [Thread-129758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:38:19.652 [DEBUG] [Thread-129758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:38:19.652 [DEBUG] [Thread-129758] [transport.py] [_log()] Compression: none
2025-09-28T16:38:19.652 [DEBUG] [Thread-129758] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:38:19.709 [DEBUG] [Thread-129758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:38:19.709 [DEBUG] [Thread-129758] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:38:19.709 [DEBUG] [Thread-129758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:38:19.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:38:19.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:38:19.766 [DEBUG] [Thread-129758] [transport.py] [_log()] userauth is OK
2025-09-28T16:38:19.766 [DEBUG] [Thread-129758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:38:19.766 [DEBUG] [Thread-129758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:38:19.766 [DEBUG] [Thread-129758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:38:19.766 [DEBUG] [Thread-129758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:38:19.780 [INFO] [Thread-129758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:38:19.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-28T16:38:19.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:38:20.700 [DEBUG] [Thread-129758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:38:20.700 [DEBUG] [Thread-129758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:38:20.748 [DEBUG] [Thread-129758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:38:20.748 [DEBUG] [Thread-129758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:38:20.756 [DEBUG] [Thread-129758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:38:20.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:38:20.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-28T16:38:20.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-28T16:38:20.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:38:20.780 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:38:20.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:38:20.788 [DEBUG] [Thread-129758] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:21.472 [DEBUG] [Thread-129760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:21.909 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:21.909 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:30.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:38:30.791 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:38:30.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-28T16:38:31.047 [DEBUG] [Thread-129761 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:38:31.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 38, 9), 14.51, 37.8, 0.0, 22.58, 16.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:38:31.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:38:09
2025-09-28T16:38:31.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:38:31.655 [DEBUG] [Thread-129762] [transport.py] [_log()] starting thread (client mode): 0x2b91e6b0
2025-09-28T16:38:31.655 [DEBUG] [Thread-129762] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:38:31.675 [DEBUG] [Thread-129762] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:38:31.675 [INFO] [Thread-129762] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:38:31.678 [DEBUG] [Thread-129762] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:38:31.678 [DEBUG] [Thread-129762] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:38:31.679 [DEBUG] [Thread-129762] [transport.py] [_log()] client lang: <none>
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] server lang: <none>
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] kex follows: False
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:38:31.680 [DEBUG] [Thread-129762] [transport.py] [_log()] Compression: none
2025-09-28T16:38:31.681 [DEBUG] [Thread-129762] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:38:31.691 [DEBUG] [Thread-129762] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:38:31.692 [DEBUG] [Thread-129762] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:38:31.692 [DEBUG] [Thread-129762] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:38:31.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:38:31.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:38:31.733 [DEBUG] [Thread-129762] [transport.py] [_log()] userauth is OK
2025-09-28T16:38:31.733 [DEBUG] [Thread-129762] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:38:31.733 [DEBUG] [Thread-129762] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:38:31.733 [DEBUG] [Thread-129762] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:38:31.733 [DEBUG] [Thread-129762] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:38:31.765 [INFO] [Thread-129762] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:38:31.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:38:32.421 [DEBUG] [Thread-129762] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:38:32.421 [DEBUG] [Thread-129762] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:38:32.421 [DEBUG] [Thread-129762] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:38:32.462 [DEBUG] [Thread-129762] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:38:32.462 [DEBUG] [Thread-129762] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:38:32.464 [DEBUG] [Thread-129762] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:38:32.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:38:32.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:38:32.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:38:32.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:38:32.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:38:32.483 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:38:32.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.609456 -999.00  +17.30  15.74     42   +4.30 1 1 1 1 1   887    0 12.34 -56.45 ----- 15.7 15.7 199.9 20.4 22.1 -28.1 21.6 -27.9 23.2 -27.1 24.2 -28.9
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.609456
2025-09-28T16:38:32.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:38:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:38:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:38:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:38:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:38:32.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:38:09', tmtdew=14.51, humidity=37.8, cloud=0.0, wind=22.58, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:37:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:38:32.484 [DEBUG] [Thread-129762] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:38:32.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-28T16:38:46.098 [DEBUG] [Thread-129765 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:01.133 [DEBUG] [Thread-129766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:16.168 [DEBUG] [Thread-129767 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:21.530 [DEBUG] [Thread-129768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:22.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:22.049 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:31.206 [DEBUG] [Thread-129769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:39:46.244 [DEBUG] [Thread-129770 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:01.280 [DEBUG] [Thread-129771 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:16.317 [DEBUG] [Thread-129772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:21.581 [DEBUG] [Thread-129773 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:22.192 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:22.193 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:33.389 [DEBUG] [Thread-129774 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:44.730 [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-28T16:40:48.422 [DEBUG] [Thread-129775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:40:54.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:40:54.740 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:40:54.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-28T16:40:55.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 40, 48), 14.51, 37.34, 0.0, 15.56, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:40:55.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:40:48
2025-09-28T16:40:55.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:40:55.638 [DEBUG] [Thread-129776] [transport.py] [_log()] starting thread (client mode): 0x2e3c39d0
2025-09-28T16:40:55.638 [DEBUG] [Thread-129776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:40:55.650 [DEBUG] [Thread-129776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:40:55.650 [INFO] [Thread-129776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] client lang: <none>
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] server lang: <none>
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] kex follows: False
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:40:55.651 [DEBUG] [Thread-129776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:40:55.652 [DEBUG] [Thread-129776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:40:55.652 [DEBUG] [Thread-129776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:40:55.652 [DEBUG] [Thread-129776] [transport.py] [_log()] Compression: none
2025-09-28T16:40:55.652 [DEBUG] [Thread-129776] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:40:55.659 [DEBUG] [Thread-129776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:40:55.659 [DEBUG] [Thread-129776] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:40:55.659 [DEBUG] [Thread-129776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:40:55.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:40:55.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:40:55.660 [DEBUG] [Thread-129776] [transport.py] [_log()] userauth is OK
2025-09-28T16:40:55.660 [DEBUG] [Thread-129776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:40:55.660 [DEBUG] [Thread-129776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:40:55.660 [DEBUG] [Thread-129776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:40:55.660 [DEBUG] [Thread-129776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:40:55.670 [INFO] [Thread-129776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:40:55.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:40:56.257 [DEBUG] [Thread-129776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:40:56.258 [DEBUG] [Thread-129776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:40:56.258 [DEBUG] [Thread-129776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:40:56.299 [DEBUG] [Thread-129776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:40:56.299 [DEBUG] [Thread-129776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:40:56.301 [DEBUG] [Thread-129776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:40:56.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:40:56.312 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:40:56.313 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:40:56.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:40:56.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:40:56.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:40:56.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611539 -999.00  +17.40   8.13     41   +4.10 1 1 1 1 1   887    0 11.79 -75.47 ----- 8.1 8.1 203.4 14.8 22.1 -27.1 21.5 -26.5 23.2 -26.0 24.1 -27.5
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611539
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:40:56.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:40:48', tmtdew=14.51, humidity=37.34, cloud=0.0, wind=15.56, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:40:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:40:56.319 [DEBUG] [Thread-129776] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:40:56.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-28T16:40:56.404 [DEBUG] [Thread-129779] [transport.py] [_log()] starting thread (client mode): 0x2b94dff0
2025-09-28T16:40:56.404 [DEBUG] [Thread-129779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:40:56.418 [DEBUG] [Thread-129779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:40:56.418 [INFO] [Thread-129779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] client lang: <none>
2025-09-28T16:40:56.425 [DEBUG] [Thread-129779] [transport.py] [_log()] server lang: <none>
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] kex follows: False
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] Compression: none
2025-09-28T16:40:56.426 [DEBUG] [Thread-129779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:40:56.481 [DEBUG] [Thread-129779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:40:56.481 [DEBUG] [Thread-129779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:40:56.481 [DEBUG] [Thread-129779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:40:56.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:40:56.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:40:56.538 [DEBUG] [Thread-129779] [transport.py] [_log()] userauth is OK
2025-09-28T16:40:56.538 [DEBUG] [Thread-129779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:40:56.538 [DEBUG] [Thread-129779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:40:56.538 [DEBUG] [Thread-129779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:40:56.538 [DEBUG] [Thread-129779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:40:56.553 [INFO] [Thread-129779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:40: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-28T16:40:56.553 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:40:57.563 [DEBUG] [Thread-129779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:40:57.564 [DEBUG] [Thread-129779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:40:57.611 [DEBUG] [Thread-129779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:40:57.611 [DEBUG] [Thread-129779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:40:57.620 [DEBUG] [Thread-129779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:40:57.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:40:57.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-28T16:40:57.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-28T16:40:57.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:40:57.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:40:57.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:40:57.654 [DEBUG] [Thread-129779] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:03.455 [DEBUG] [Thread-129781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:07.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:41:07.657 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:41:07.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:41:08.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 40, 48), 14.51, 37.34, 0.0, 15.56, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:41:08.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:40:48
2025-09-28T16:41:08.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:41:08.524 [DEBUG] [Thread-129782] [transport.py] [_log()] starting thread (client mode): 0x2b91cca0
2025-09-28T16:41:08.524 [DEBUG] [Thread-129782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:08.545 [DEBUG] [Thread-129782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:41:08.546 [INFO] [Thread-129782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:08.549 [DEBUG] [Thread-129782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] Compression: none
2025-09-28T16:41:08.550 [DEBUG] [Thread-129782] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:08.569 [DEBUG] [Thread-129782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:08.569 [DEBUG] [Thread-129782] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:08.570 [DEBUG] [Thread-129782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:41:08.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:41:08.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:08.571 [DEBUG] [Thread-129782] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:08.572 [DEBUG] [Thread-129782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:08.572 [DEBUG] [Thread-129782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:08.572 [DEBUG] [Thread-129782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:41:08.572 [DEBUG] [Thread-129782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:08.595 [INFO] [Thread-129782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:08.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:09.233 [DEBUG] [Thread-129782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:09.234 [DEBUG] [Thread-129782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:09.234 [DEBUG] [Thread-129782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:41:09.274 [DEBUG] [Thread-129782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:09.274 [DEBUG] [Thread-129782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:09.277 [DEBUG] [Thread-129782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:09.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:09.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:41:09.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:41:09.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:41:09.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:09.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:41:09.300 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611539 -999.00  +17.40   8.13     41   +4.10 1 1 1 1 1   887    0 11.79 -75.47 ----- 8.1 8.1 203.4 14.8 22.1 -27.1 21.5 -26.5 23.2 -26.0 24.1 -27.5
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:41:09.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611539
2025-09-28T16:41:09.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:41:09.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:41:09.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:41:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:41:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:41:09.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:40:48', tmtdew=14.51, humidity=37.34, cloud=0.0, wind=15.56, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:40:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:41:09.302 [DEBUG] [Thread-129782] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:09.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-28T16:41:09.396 [DEBUG] [Thread-129785] [transport.py] [_log()] starting thread (client mode): 0x2b9bb5b0
2025-09-28T16:41:09.396 [DEBUG] [Thread-129785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:09.411 [DEBUG] [Thread-129785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:41:09.412 [INFO] [Thread-129785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:41:09.419 [DEBUG] [Thread-129785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:09.419 [DEBUG] [Thread-129785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:41:09.419 [DEBUG] [Thread-129785] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:09.420 [DEBUG] [Thread-129785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:09.421 [DEBUG] [Thread-129785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:09.421 [DEBUG] [Thread-129785] [transport.py] [_log()] Compression: none
2025-09-28T16:41:09.421 [DEBUG] [Thread-129785] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:09.478 [DEBUG] [Thread-129785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:09.479 [DEBUG] [Thread-129785] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:09.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:41:09.480 [DEBUG] [Thread-129785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:41:09.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:09.535 [DEBUG] [Thread-129785] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:09.535 [DEBUG] [Thread-129785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:09.535 [DEBUG] [Thread-129785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:09.536 [DEBUG] [Thread-129785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:41:09.536 [DEBUG] [Thread-129785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:09.555 [INFO] [Thread-129785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:09.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-28T16:41:09.556 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:10.488 [DEBUG] [Thread-129785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:10.489 [DEBUG] [Thread-129785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:10.537 [DEBUG] [Thread-129785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:10.537 [DEBUG] [Thread-129785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:10.546 [DEBUG] [Thread-129785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:10.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:10.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')
2025-09-28T16:41:10.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-28T16:41:10.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:10.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:10.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:10.580 [DEBUG] [Thread-129785] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:18.502 [DEBUG] [Thread-129787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:20.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:41:20.582 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:41:20.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-28T16:41:21.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 40, 48), 14.51, 37.34, 0.0, 15.56, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:41:21.176 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:40:48
2025-09-28T16:41:21.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:41:21.439 [DEBUG] [Thread-129788] [transport.py] [_log()] starting thread (client mode): 0x2b96c8e0
2025-09-28T16:41:21.439 [DEBUG] [Thread-129788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:21.460 [DEBUG] [Thread-129788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:41:21.460 [INFO] [Thread-129788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:41:21.461 [DEBUG] [Thread-129788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] Compression: none
2025-09-28T16:41:21.462 [DEBUG] [Thread-129788] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:21.478 [DEBUG] [Thread-129788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:21.478 [DEBUG] [Thread-129788] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:41:21.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:41:21.479 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:41:21.479 [DEBUG] [Thread-129788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:21.495 [INFO] [Thread-129788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:21.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:21.629 [DEBUG] [Thread-129790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:22.091 [DEBUG] [Thread-129788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:22.091 [DEBUG] [Thread-129788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:22.091 [DEBUG] [Thread-129788] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:41:22.132 [DEBUG] [Thread-129788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:22.132 [DEBUG] [Thread-129788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:22.134 [DEBUG] [Thread-129788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:22.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:22.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:41:22.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:41:22.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:41:22.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:22.154 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:41:22.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611539 -999.00  +17.40   8.13     41   +4.10 1 1 1 1 1   887    0 11.79 -75.47 ----- 8.1 8.1 203.4 14.8 22.1 -27.1 21.5 -26.5 23.2 -26.0 24.1 -27.5
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611539
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:41:22.155 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:40:48', tmtdew=14.51, humidity=37.34, cloud=0.0, wind=15.56, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:40:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:41:22.155 [DEBUG] [Thread-129788] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:22.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-28T16:41:22.240 [DEBUG] [Thread-129792] [transport.py] [_log()] starting thread (client mode): 0x2e349360
2025-09-28T16:41:22.240 [DEBUG] [Thread-129792] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:22.254 [DEBUG] [Thread-129792] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:41:22.254 [INFO] [Thread-129792] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] Compression: none
2025-09-28T16:41:22.263 [DEBUG] [Thread-129792] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:22.317 [DEBUG] [Thread-129792] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:22.318 [DEBUG] [Thread-129792] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:22.318 [DEBUG] [Thread-129792] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:41:22.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:41:22.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:22.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:22.334 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:22.374 [DEBUG] [Thread-129792] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:22.374 [DEBUG] [Thread-129792] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:22.374 [DEBUG] [Thread-129792] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:22.374 [DEBUG] [Thread-129792] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:41:22.374 [DEBUG] [Thread-129792] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:22.388 [INFO] [Thread-129792] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:22.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-28T16:41:22.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:23.342 [DEBUG] [Thread-129792] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:23.342 [DEBUG] [Thread-129792] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:23.390 [DEBUG] [Thread-129792] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:23.390 [DEBUG] [Thread-129792] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:23.401 [DEBUG] [Thread-129792] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:23.409 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:23.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-28T16:41:23.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-28T16:41:23.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:23.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:23.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:23.435 [DEBUG] [Thread-129792] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:33.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:41:33.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:41:33.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-28T16:41:33.529 [DEBUG] [Thread-129794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 41, 20), 14.52, 37.34, 0.0, 15.33, 16.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:41:34.064 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:41:20
2025-09-28T16:41:34.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:41:34.325 [DEBUG] [Thread-129795] [transport.py] [_log()] starting thread (client mode): 0x2e3493c0
2025-09-28T16:41:34.325 [DEBUG] [Thread-129795] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:34.346 [DEBUG] [Thread-129795] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:41:34.346 [INFO] [Thread-129795] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] Compression: none
2025-09-28T16:41:34.349 [DEBUG] [Thread-129795] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:34.368 [DEBUG] [Thread-129795] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:34.368 [DEBUG] [Thread-129795] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:34.368 [DEBUG] [Thread-129795] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:41:34.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:41:34.368 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:34.369 [DEBUG] [Thread-129795] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:34.369 [DEBUG] [Thread-129795] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:34.369 [DEBUG] [Thread-129795] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:34.369 [DEBUG] [Thread-129795] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:41:34.369 [DEBUG] [Thread-129795] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:34.378 [INFO] [Thread-129795] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:34.379 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:35.007 [DEBUG] [Thread-129795] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:35.008 [DEBUG] [Thread-129795] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:35.008 [DEBUG] [Thread-129795] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:41:35.048 [DEBUG] [Thread-129795] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:35.048 [DEBUG] [Thread-129795] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:35.051 [DEBUG] [Thread-129795] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:35.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:35.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:41:35.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:41:35.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:41:35.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:35.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:41:35.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611887 -999.00  +17.50   8.99     40   +4.00 1 1 1 1 1   887    0 11.49 -82.08 ----- 9.0 9.0 208.4 18.0 22.1 -27.6 21.6 -26.7 23.2 -27.4 24.2 -27.7
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611887
2025-09-28T16:41:35.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:41:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:41:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:41:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:41:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:41:35.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:41:20', tmtdew=14.52, humidity=37.34, cloud=0.0, wind=15.33, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:41:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:41:35.069 [DEBUG] [Thread-129795] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:35.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-28T16:41:35.154 [DEBUG] [Thread-129798] [transport.py] [_log()] starting thread (client mode): 0x2e3618a0
2025-09-28T16:41:35.154 [DEBUG] [Thread-129798] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:35.169 [DEBUG] [Thread-129798] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:41:35.169 [INFO] [Thread-129798] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] Compression: none
2025-09-28T16:41:35.177 [DEBUG] [Thread-129798] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:35.235 [DEBUG] [Thread-129798] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:35.235 [DEBUG] [Thread-129798] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:35.236 [DEBUG] [Thread-129798] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:41:35.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:41:35.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:35.291 [DEBUG] [Thread-129798] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:35.291 [DEBUG] [Thread-129798] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:35.291 [DEBUG] [Thread-129798] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:35.291 [DEBUG] [Thread-129798] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:41:35.291 [DEBUG] [Thread-129798] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:35.309 [INFO] [Thread-129798] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:35.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-28T16:41:35.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:36.223 [DEBUG] [Thread-129798] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:36.224 [DEBUG] [Thread-129798] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:36.271 [DEBUG] [Thread-129798] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:36.271 [DEBUG] [Thread-129798] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:36.280 [DEBUG] [Thread-129798] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:36.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:36.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T16:41:36.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') -> 00000000
2025-09-28T16:41:36.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:36.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:36.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:36.316 [DEBUG] [Thread-129798] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:46.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:41:46.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:41:46.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-28T16:41:46.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 41, 20), 14.52, 37.34, 0.0, 15.33, 16.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:41:46.923 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:41:20
2025-09-28T16:41:47.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:41:47.176 [DEBUG] [Thread-129800] [transport.py] [_log()] starting thread (client mode): 0x2b9b8910
2025-09-28T16:41:47.176 [DEBUG] [Thread-129800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:47.195 [DEBUG] [Thread-129800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:41:47.196 [INFO] [Thread-129800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] Compression: none
2025-09-28T16:41:47.199 [DEBUG] [Thread-129800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:47.214 [DEBUG] [Thread-129800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:47.214 [DEBUG] [Thread-129800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16: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-28T16:41:47.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:41:47.215 [DEBUG] [Thread-129800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:47.224 [INFO] [Thread-129800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:47.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:47.883 [DEBUG] [Thread-129800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:47.883 [DEBUG] [Thread-129800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:47.884 [DEBUG] [Thread-129800] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:41:47.924 [DEBUG] [Thread-129800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:47.924 [DEBUG] [Thread-129800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:47.927 [DEBUG] [Thread-129800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:47.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:47.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:41:47.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:41:47.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:41:47.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:47.949 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:41:47.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611887 -999.00  +17.50   8.99     40   +4.00 1 1 1 1 1   887    0 11.49 -82.08 ----- 9.0 9.0 208.4 18.0 22.1 -27.6 21.6 -26.7 23.2 -27.4 24.2 -27.7
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:41:47.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611887
2025-09-28T16:41:47.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:41:47.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:41:47.951 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:41:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:41:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:41:47.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:41:20', tmtdew=14.52, humidity=37.34, cloud=0.0, wind=15.33, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:41:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:41:47.952 [DEBUG] [Thread-129800] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:48.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-28T16:41:48.047 [DEBUG] [Thread-129803] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-28T16:41:48.047 [DEBUG] [Thread-129803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:41:48.062 [DEBUG] [Thread-129803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:41:48.062 [INFO] [Thread-129803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:41:48.069 [DEBUG] [Thread-129803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:41:48.069 [DEBUG] [Thread-129803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] client lang: <none>
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] server lang: <none>
2025-09-28T16:41:48.070 [DEBUG] [Thread-129803] [transport.py] [_log()] kex follows: False
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] Compression: none
2025-09-28T16:41:48.071 [DEBUG] [Thread-129803] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:41:48.131 [DEBUG] [Thread-129803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:41:48.132 [DEBUG] [Thread-129803] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:41:48.133 [DEBUG] [Thread-129803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:41:48.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:41:48.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:41:48.187 [DEBUG] [Thread-129803] [transport.py] [_log()] userauth is OK
2025-09-28T16:41:48.187 [DEBUG] [Thread-129803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:41:48.187 [DEBUG] [Thread-129803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:41:48.187 [DEBUG] [Thread-129803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:41:48.188 [DEBUG] [Thread-129803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:41:48.209 [INFO] [Thread-129803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:41:48.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-28T16:41:48.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:41:48.558 [DEBUG] [Thread-129805 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:41:49.150 [DEBUG] [Thread-129803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:41:49.151 [DEBUG] [Thread-129803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:41:49.198 [DEBUG] [Thread-129803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:41:49.198 [DEBUG] [Thread-129803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:41:49.207 [DEBUG] [Thread-129803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:41:49.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:41:49.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-28T16:41:49.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-28T16:41:49.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:41:49.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:41:49.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:41:49.242 [DEBUG] [Thread-129803] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:41:59.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:41:59.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:41:59.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-28T16:41:59.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 41, 52), 14.56, 37.76, 0.0, 18.47, 16.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:41:59.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:41:52
2025-09-28T16:41:59.959 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:42:00.106 [DEBUG] [Thread-129806] [transport.py] [_log()] starting thread (client mode): 0x2e38df90
2025-09-28T16:42:00.106 [DEBUG] [Thread-129806] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:00.127 [DEBUG] [Thread-129806] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:42:00.128 [INFO] [Thread-129806] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:00.131 [DEBUG] [Thread-129806] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] Compression: none
2025-09-28T16:42:00.132 [DEBUG] [Thread-129806] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:00.150 [DEBUG] [Thread-129806] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:00.150 [DEBUG] [Thread-129806] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:00.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:42:00.151 [DEBUG] [Thread-129806] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:42:00.152 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:00.153 [DEBUG] [Thread-129806] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:00.153 [DEBUG] [Thread-129806] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:00.153 [DEBUG] [Thread-129806] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:00.153 [DEBUG] [Thread-129806] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:42:00.153 [DEBUG] [Thread-129806] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:00.176 [INFO] [Thread-129806] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:00.178 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:00.842 [DEBUG] [Thread-129806] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:00.842 [DEBUG] [Thread-129806] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:00.843 [DEBUG] [Thread-129806] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:42:00.883 [DEBUG] [Thread-129806] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:00.884 [DEBUG] [Thread-129806] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:00.886 [DEBUG] [Thread-129806] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:00.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:00.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:42:00.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:42:00.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:42:00.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:00.909 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:42:00.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:00.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.611887 -999.00  +17.50   8.99     40   +4.00 1 1 1 1 1   887    0 11.49 -82.08 ----- 9.0 9.0 208.4 18.0 22.1 -27.6 21.6 -26.7 23.2 -27.4 24.2 -27.7
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.611887
2025-09-28T16:42:00.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:42:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:42:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:42:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:42:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:42:00.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:41:52', tmtdew=14.56, humidity=37.76, cloud=0.0, wind=18.47, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:41:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:42:00.911 [DEBUG] [Thread-129806] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:00.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-28T16:42:01.008 [DEBUG] [Thread-129809] [transport.py] [_log()] starting thread (client mode): 0x2b954f40
2025-09-28T16:42:01.008 [DEBUG] [Thread-129809] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:01.022 [DEBUG] [Thread-129809] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:42:01.022 [INFO] [Thread-129809] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:42:01.029 [DEBUG] [Thread-129809] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] Compression: none
2025-09-28T16:42:01.030 [DEBUG] [Thread-129809] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:01.086 [DEBUG] [Thread-129809] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:01.087 [DEBUG] [Thread-129809] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:01.087 [DEBUG] [Thread-129809] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:42:01.087 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:42:01.088 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:01.143 [DEBUG] [Thread-129809] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:01.143 [DEBUG] [Thread-129809] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:01.143 [DEBUG] [Thread-129809] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:01.143 [DEBUG] [Thread-129809] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:42:01.143 [DEBUG] [Thread-129809] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:01.162 [INFO] [Thread-129809] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:01.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-28T16:42:01.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:02.126 [DEBUG] [Thread-129809] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:02.127 [DEBUG] [Thread-129809] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:02.174 [DEBUG] [Thread-129809] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:02.174 [DEBUG] [Thread-129809] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:02.183 [DEBUG] [Thread-129809] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:02.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:02.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-28T16:42:02.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-28T16:42:02.208 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:02.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:02.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:02.216 [DEBUG] [Thread-129809] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:03.601 [DEBUG] [Thread-129811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:12.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:42:12.218 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:42:12.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-28T16:42:12.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 41, 52), 14.56, 37.76, 0.0, 18.47, 16.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:42:12.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:41:52
2025-09-28T16:42:12.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:42:13.073 [DEBUG] [Thread-129812] [transport.py] [_log()] starting thread (client mode): 0x2e3c3880
2025-09-28T16:42:13.073 [DEBUG] [Thread-129812] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:13.088 [DEBUG] [Thread-129812] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:42:13.088 [INFO] [Thread-129812] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:13.092 [DEBUG] [Thread-129812] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:13.093 [DEBUG] [Thread-129812] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:13.093 [DEBUG] [Thread-129812] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:13.093 [DEBUG] [Thread-129812] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:13.093 [DEBUG] [Thread-129812] [transport.py] [_log()] Compression: none
2025-09-28T16:42:13.093 [DEBUG] [Thread-129812] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:13.109 [DEBUG] [Thread-129812] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:13.110 [DEBUG] [Thread-129812] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:13.110 [DEBUG] [Thread-129812] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:42:13.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:42:13.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:13.112 [DEBUG] [Thread-129812] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:13.112 [DEBUG] [Thread-129812] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:13.113 [DEBUG] [Thread-129812] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:13.113 [DEBUG] [Thread-129812] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:42:13.113 [DEBUG] [Thread-129812] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:13.131 [INFO] [Thread-129812] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:13.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:13.800 [DEBUG] [Thread-129812] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:13.800 [DEBUG] [Thread-129812] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:13.800 [DEBUG] [Thread-129812] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:42:13.841 [DEBUG] [Thread-129812] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:13.841 [DEBUG] [Thread-129812] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:13.844 [DEBUG] [Thread-129812] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:13.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:13.856 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:42:13.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:42:13.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:42:13.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:13.867 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:42:13.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:13.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612234 -999.00  +17.60  10.17     40   +4.10 1 1 1 1 1   887    0 11.41 -85.13 ----- 10.2 10.2 201.2 14.4 22.1 -28.2 21.6 -27.7 23.3 -26.4 24.2 -28.7
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612234
2025-09-28T16:42:13.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:42:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:42:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:42:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:42:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:42:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:41:52', tmtdew=14.56, humidity=37.76, cloud=0.0, wind=18.47, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:41:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:42:13.869 [DEBUG] [Thread-129812] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:13.954 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:42:13.964 [DEBUG] [Thread-129815] [transport.py] [_log()] starting thread (client mode): 0x2e34afe0
2025-09-28T16:42:13.964 [DEBUG] [Thread-129815] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:13.979 [DEBUG] [Thread-129815] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:42:13.979 [INFO] [Thread-129815] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:42:13.986 [DEBUG] [Thread-129815] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:13.986 [DEBUG] [Thread-129815] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:42:13.986 [DEBUG] [Thread-129815] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] Compression: none
2025-09-28T16:42:13.987 [DEBUG] [Thread-129815] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:14.043 [DEBUG] [Thread-129815] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:14.043 [DEBUG] [Thread-129815] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:14.044 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:42:14.044 [DEBUG] [Thread-129815] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:42:14.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:14.099 [DEBUG] [Thread-129815] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:14.099 [DEBUG] [Thread-129815] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:14.099 [DEBUG] [Thread-129815] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:14.099 [DEBUG] [Thread-129815] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:42:14.099 [DEBUG] [Thread-129815] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:14.118 [INFO] [Thread-129815] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:14.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-28T16:42:14.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:15.068 [DEBUG] [Thread-129815] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:15.068 [DEBUG] [Thread-129815] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:15.116 [DEBUG] [Thread-129815] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:15.116 [DEBUG] [Thread-129815] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:15.125 [DEBUG] [Thread-129815] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:15.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:15.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-28T16:42:15.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-28T16:42:15.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:15.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:15.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:15.162 [DEBUG] [Thread-129815] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:18.648 [DEBUG] [Thread-129817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:21.683 [DEBUG] [Thread-129818 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:22.476 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:22.477 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:25.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:42:25.164 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:42:25.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-28T16:42:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 41, 52), 14.56, 37.76, 0.0, 18.47, 16.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:42:25.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:41:52
2025-09-28T16:42:25.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:42:26.083 [DEBUG] [Thread-129819] [transport.py] [_log()] starting thread (client mode): 0x2e3c3580
2025-09-28T16:42:26.084 [DEBUG] [Thread-129819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:26.103 [DEBUG] [Thread-129819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:42:26.103 [INFO] [Thread-129819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:26.106 [DEBUG] [Thread-129819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:26.107 [DEBUG] [Thread-129819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:26.107 [DEBUG] [Thread-129819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:26.107 [DEBUG] [Thread-129819] [transport.py] [_log()] Compression: none
2025-09-28T16:42:26.107 [DEBUG] [Thread-129819] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:26.121 [DEBUG] [Thread-129819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:26.121 [DEBUG] [Thread-129819] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:26.121 [DEBUG] [Thread-129819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:42:26.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:42:26.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:26.164 [DEBUG] [Thread-129819] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:26.164 [DEBUG] [Thread-129819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:26.164 [DEBUG] [Thread-129819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:26.164 [DEBUG] [Thread-129819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:42:26.164 [DEBUG] [Thread-129819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:26.179 [INFO] [Thread-129819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:26.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:26.805 [DEBUG] [Thread-129819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:26.806 [DEBUG] [Thread-129819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:26.806 [DEBUG] [Thread-129819] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:42:26.846 [DEBUG] [Thread-129819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:26.846 [DEBUG] [Thread-129819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:26.850 [DEBUG] [Thread-129819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:26.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:26.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:42:26.865 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:42:26.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:42:26.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:26.874 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:42:26.874 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:26.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:26.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:42:26.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612234 -999.00  +17.60  10.17     40   +4.10 1 1 1 1 1   887    0 11.41 -85.13 ----- 10.2 10.2 201.2 14.4 22.1 -28.2 21.6 -27.7 23.3 -26.4 24.2 -28.7
2025-09-28T16:42:26.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:42:26.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:42:26.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612234
2025-09-28T16:42:26.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:42:26.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:42:26.876 [DEBUG] [Thread-129819] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:26.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:42:26.876 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:42:26.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:42:26.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:41:52', tmtdew=14.56, humidity=37.76, cloud=0.0, wind=18.47, temperature=16.62, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:41:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:42:26.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-28T16:42:26.972 [DEBUG] [Thread-129822] [transport.py] [_log()] starting thread (client mode): 0x2e34bc70
2025-09-28T16:42:26.972 [DEBUG] [Thread-129822] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:26.991 [DEBUG] [Thread-129822] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:42:26.991 [INFO] [Thread-129822] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:42:26.998 [DEBUG] [Thread-129822] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:26.999 [DEBUG] [Thread-129822] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] Compression: none
2025-09-28T16:42:27.000 [DEBUG] [Thread-129822] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:27.063 [DEBUG] [Thread-129822] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:27.063 [DEBUG] [Thread-129822] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:27.064 [DEBUG] [Thread-129822] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:42:27.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:42:27.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:27.119 [DEBUG] [Thread-129822] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:27.119 [DEBUG] [Thread-129822] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:27.119 [DEBUG] [Thread-129822] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:27.119 [DEBUG] [Thread-129822] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:42:27.119 [DEBUG] [Thread-129822] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:27.137 [INFO] [Thread-129822] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:27.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-28T16:42:27.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:28.098 [DEBUG] [Thread-129822] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:28.098 [DEBUG] [Thread-129822] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:28.146 [DEBUG] [Thread-129822] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:28.147 [DEBUG] [Thread-129822] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:28.156 [DEBUG] [Thread-129822] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:28.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:28.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')
2025-09-28T16:42:28.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-28T16:42:28.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:28.182 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:28.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:28.191 [DEBUG] [Thread-129822] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:33.701 [DEBUG] [Thread-129824 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:38.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:42:38.194 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:42:38.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-28T16:42:38.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 42, 24), 14.5, 37.91, 0.0, 16.48, 16.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:42:38.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:42:24
2025-09-28T16:42:38.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:42:39.061 [DEBUG] [Thread-129825] [transport.py] [_log()] starting thread (client mode): 0x2b956b00
2025-09-28T16:42:39.061 [DEBUG] [Thread-129825] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:39.081 [DEBUG] [Thread-129825] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:42:39.081 [INFO] [Thread-129825] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:39.083 [DEBUG] [Thread-129825] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] Compression: none
2025-09-28T16:42:39.084 [DEBUG] [Thread-129825] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:39.092 [DEBUG] [Thread-129825] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:39.092 [DEBUG] [Thread-129825] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:39.093 [DEBUG] [Thread-129825] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:42:39.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:42:39.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:39.095 [DEBUG] [Thread-129825] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:39.095 [DEBUG] [Thread-129825] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:39.095 [DEBUG] [Thread-129825] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:39.095 [DEBUG] [Thread-129825] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:42:39.095 [DEBUG] [Thread-129825] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:39.120 [INFO] [Thread-129825] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:39.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:39.764 [DEBUG] [Thread-129825] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:39.764 [DEBUG] [Thread-129825] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:39.765 [DEBUG] [Thread-129825] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:42:39.805 [DEBUG] [Thread-129825] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:39.806 [DEBUG] [Thread-129825] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:39.809 [DEBUG] [Thread-129825] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:39.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:39.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:42:39.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:42:39.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:42:39.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:39.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:42:39.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:39.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:42:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612581 -999.00  +17.60  11.80     40   +4.00 1 1 1 1 1   887    0 11.31 -82.06 ----- 11.8 11.8 230.2 22.0 22.1 -28.5 21.6 -26.6 23.3 -26.1 24.2 -29.0
2025-09-28T16:42:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:42:39.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:42:39.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612581
2025-09-28T16:42:39.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:42:39.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:42:39.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:42:39.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:42:39.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:42:39.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:42:24', tmtdew=14.5, humidity=37.91, cloud=0.0, wind=16.48, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:42:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:42:39.835 [DEBUG] [Thread-129825] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:39.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-28T16:42:39.932 [DEBUG] [Thread-129828] [transport.py] [_log()] starting thread (client mode): 0x2b957550
2025-09-28T16:42:39.932 [DEBUG] [Thread-129828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:39.947 [DEBUG] [Thread-129828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:42:39.948 [INFO] [Thread-129828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:42:39.955 [DEBUG] [Thread-129828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:39.955 [DEBUG] [Thread-129828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:39.956 [DEBUG] [Thread-129828] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:39.957 [DEBUG] [Thread-129828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:39.958 [DEBUG] [Thread-129828] [transport.py] [_log()] Compression: none
2025-09-28T16:42:39.958 [DEBUG] [Thread-129828] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:40.016 [DEBUG] [Thread-129828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:40.017 [DEBUG] [Thread-129828] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:40.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:42:40.018 [DEBUG] [Thread-129828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:42:40.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:40.075 [DEBUG] [Thread-129828] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:40.075 [DEBUG] [Thread-129828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:40.075 [DEBUG] [Thread-129828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:40.075 [DEBUG] [Thread-129828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:42:40.075 [DEBUG] [Thread-129828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:40.094 [INFO] [Thread-129828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:40.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-28T16:42:40.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:41.039 [DEBUG] [Thread-129828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:41.039 [DEBUG] [Thread-129828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:41.087 [DEBUG] [Thread-129828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:41.087 [DEBUG] [Thread-129828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:41.096 [DEBUG] [Thread-129828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:41.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:41.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-28T16:42:41.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-28T16:42:41.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:41.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:41.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:41.131 [DEBUG] [Thread-129828] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:48.730 [DEBUG] [Thread-129830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:42:51.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:42:51.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:42:51.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-28T16:42:51.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 42, 24), 14.5, 37.91, 0.0, 16.48, 16.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:42:51.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:42:24
2025-09-28T16:42:51.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:42:51.979 [DEBUG] [Thread-129831] [transport.py] [_log()] starting thread (client mode): 0x2e362ef0
2025-09-28T16:42:51.979 [DEBUG] [Thread-129831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:51.998 [DEBUG] [Thread-129831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:42:51.998 [INFO] [Thread-129831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] Compression: none
2025-09-28T16:42:52.001 [DEBUG] [Thread-129831] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:52.021 [DEBUG] [Thread-129831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:52.022 [DEBUG] [Thread-129831] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:52.022 [DEBUG] [Thread-129831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:42:52.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:42:52.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:52.024 [DEBUG] [Thread-129831] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:52.024 [DEBUG] [Thread-129831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:52.024 [DEBUG] [Thread-129831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:52.024 [DEBUG] [Thread-129831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:42:52.024 [DEBUG] [Thread-129831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:52.046 [INFO] [Thread-129831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:52.046 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:52.680 [DEBUG] [Thread-129831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:52.681 [DEBUG] [Thread-129831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:52.681 [DEBUG] [Thread-129831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:42:52.721 [DEBUG] [Thread-129831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:52.721 [DEBUG] [Thread-129831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:52.725 [DEBUG] [Thread-129831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:52.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:52.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:42:52.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:42:52.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:42:52.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:52.747 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:42:52.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:52.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:52.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:42:52.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612581 -999.00  +17.60  11.80     40   +4.00 1 1 1 1 1   887    0 11.31 -82.06 ----- 11.8 11.8 230.2 22.0 22.1 -28.5 21.6 -26.6 23.3 -26.1 24.2 -29.0
2025-09-28T16:42:52.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:42:52.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:42:52.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612581
2025-09-28T16:42:52.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:42:52.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:42:52.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:42:52.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:42:52.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:42:52.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:42:24', tmtdew=14.5, humidity=37.91, cloud=0.0, wind=16.48, temperature=16.57, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:42:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:42:52.750 [DEBUG] [Thread-129831] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:42:52.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-28T16:42:52.843 [DEBUG] [Thread-129834] [transport.py] [_log()] starting thread (client mode): 0x2b94de10
2025-09-28T16:42:52.843 [DEBUG] [Thread-129834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:42:52.859 [DEBUG] [Thread-129834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:42:52.859 [INFO] [Thread-129834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] client lang: <none>
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] server lang: <none>
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] kex follows: False
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:42:52.867 [DEBUG] [Thread-129834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:42:52.868 [DEBUG] [Thread-129834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:42:52.868 [DEBUG] [Thread-129834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:42:52.868 [DEBUG] [Thread-129834] [transport.py] [_log()] Compression: none
2025-09-28T16:42:52.868 [DEBUG] [Thread-129834] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:42:52.929 [DEBUG] [Thread-129834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:42:52.930 [DEBUG] [Thread-129834] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:42:52.930 [DEBUG] [Thread-129834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:42:52.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:42:52.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:42:52.987 [DEBUG] [Thread-129834] [transport.py] [_log()] userauth is OK
2025-09-28T16:42:52.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:42:52.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:42:52.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:42:52.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:42:53.006 [INFO] [Thread-129834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:42:53.006 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:42:53.006 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:42:53.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:42:53.987 [DEBUG] [Thread-129834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:42:54.035 [DEBUG] [Thread-129834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:42:54.035 [DEBUG] [Thread-129834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:42:54.045 [DEBUG] [Thread-129834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:42:54.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:42:54.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-28T16:42:54.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-28T16:42:54.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:42:54.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:42:54.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:42:54.079 [DEBUG] [Thread-129834] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:03.766 [DEBUG] [Thread-129836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:04.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:43:04.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:43:04.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-28T16:43:04.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 42, 56), 14.74, 37.2, 0.0, 16.97, 16.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:43:04.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:42:56
2025-09-28T16:43:04.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:43:04.949 [DEBUG] [Thread-129837] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-28T16:43:04.949 [DEBUG] [Thread-129837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:04.968 [DEBUG] [Thread-129837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:43:04.969 [INFO] [Thread-129837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:04.972 [DEBUG] [Thread-129837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] Compression: none
2025-09-28T16:43:04.973 [DEBUG] [Thread-129837] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:04.989 [DEBUG] [Thread-129837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:04.990 [DEBUG] [Thread-129837] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:04.990 [DEBUG] [Thread-129837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:43:04.990 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:43:04.991 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:04.992 [DEBUG] [Thread-129837] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:04.993 [DEBUG] [Thread-129837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:04.993 [DEBUG] [Thread-129837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:04.993 [DEBUG] [Thread-129837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:43:04.993 [DEBUG] [Thread-129837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:05.030 [INFO] [Thread-129837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:05.031 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:05.674 [DEBUG] [Thread-129837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:05.675 [DEBUG] [Thread-129837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:05.675 [DEBUG] [Thread-129837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:43:05.715 [DEBUG] [Thread-129837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:05.715 [DEBUG] [Thread-129837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:05.718 [DEBUG] [Thread-129837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:05.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:05.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:43:05.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:43:05.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:43:05.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:05.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:43:05.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612581 -999.00  +17.60  11.80     40   +4.00 1 1 1 1 1   887    0 11.31 -82.06 ----- 11.8 11.8 230.2 22.0 22.1 -28.5 21.6 -26.6 23.3 -26.1 24.2 -29.0
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:43:05.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612581
2025-09-28T16:43:05.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:43:05.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:43:05.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:43:05.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:43:05.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:43:05.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:42:56', tmtdew=14.74, humidity=37.2, cloud=0.0, wind=16.97, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:42:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:43:05.741 [DEBUG] [Thread-129837] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:05.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-28T16:43:05.835 [DEBUG] [Thread-129840] [transport.py] [_log()] starting thread (client mode): 0x2b9b9f90
2025-09-28T16:43:05.835 [DEBUG] [Thread-129840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:05.849 [DEBUG] [Thread-129840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:43:05.849 [INFO] [Thread-129840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:05.857 [DEBUG] [Thread-129840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:05.858 [DEBUG] [Thread-129840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:05.859 [DEBUG] [Thread-129840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:05.859 [DEBUG] [Thread-129840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:05.859 [DEBUG] [Thread-129840] [transport.py] [_log()] Compression: none
2025-09-28T16:43:05.859 [DEBUG] [Thread-129840] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:05.914 [DEBUG] [Thread-129840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:05.915 [DEBUG] [Thread-129840] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:05.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:43:05.916 [DEBUG] [Thread-129840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:43:05.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:05.970 [DEBUG] [Thread-129840] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:05.971 [DEBUG] [Thread-129840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:05.971 [DEBUG] [Thread-129840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:05.971 [DEBUG] [Thread-129840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:43:05.971 [DEBUG] [Thread-129840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:05.989 [INFO] [Thread-129840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:05.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-28T16:43:05.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:06.966 [DEBUG] [Thread-129840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:06.966 [DEBUG] [Thread-129840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:07.013 [DEBUG] [Thread-129840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:07.013 [DEBUG] [Thread-129840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:07.022 [DEBUG] [Thread-129840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:07.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:07.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-28T16:43:07.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-28T16:43:07.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:07.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:07.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:07.058 [DEBUG] [Thread-129840] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:17.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:43:17.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:43:17.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-28T16:43:17.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 42, 56), 14.74, 37.2, 0.0, 16.97, 16.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:43:17.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:42:56
2025-09-28T16:43:17.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:43:17.897 [DEBUG] [Thread-129842] [transport.py] [_log()] starting thread (client mode): 0x2b955fc0
2025-09-28T16:43:17.897 [DEBUG] [Thread-129842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:17.918 [DEBUG] [Thread-129842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:43:17.918 [INFO] [Thread-129842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] Compression: none
2025-09-28T16:43:17.922 [DEBUG] [Thread-129842] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:17.939 [DEBUG] [Thread-129842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:17.940 [DEBUG] [Thread-129842] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:17.940 [DEBUG] [Thread-129842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:43:17.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:43:17.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:17.942 [DEBUG] [Thread-129842] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:17.943 [DEBUG] [Thread-129842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:17.943 [DEBUG] [Thread-129842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:17.943 [DEBUG] [Thread-129842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:43:17.943 [DEBUG] [Thread-129842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:17.979 [INFO] [Thread-129842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:17.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:18.601 [DEBUG] [Thread-129842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:18.601 [DEBUG] [Thread-129842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:18.602 [DEBUG] [Thread-129842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:43:18.642 [DEBUG] [Thread-129842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:18.642 [DEBUG] [Thread-129842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:18.645 [DEBUG] [Thread-129842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:18.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:18.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:43:18.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:43:18.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:43:18.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:18.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:43:18.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:18.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:43:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612928 -999.00  +17.30  14.38     40   +3.90 1 1 1 1 1   887    0 11.12 -93.17 ----- 14.4 14.4 192.4 21.9 22.0 -27.7 21.6 -26.5 23.2 -27.5 24.0 -29.4
2025-09-28T16:43:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:43:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:43:18.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612928
2025-09-28T16:43:18.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:43:18.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:43:18.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:43:18.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:43:18.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:43:18.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:42:56', tmtdew=14.74, humidity=37.2, cloud=0.0, wind=16.97, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:42:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:43:18.672 [DEBUG] [Thread-129842] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:18.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-28T16:43:18.768 [DEBUG] [Thread-129845] [transport.py] [_log()] starting thread (client mode): 0x2b9bac20
2025-09-28T16:43:18.769 [DEBUG] [Thread-129845] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:18.783 [DEBUG] [Thread-129845] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:43:18.783 [INFO] [Thread-129845] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:18.791 [DEBUG] [Thread-129845] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] Compression: none
2025-09-28T16:43:18.792 [DEBUG] [Thread-129845] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:18.796 [DEBUG] [Thread-129847 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:18.850 [DEBUG] [Thread-129845] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:18.850 [DEBUG] [Thread-129845] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:18.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:43:18.851 [DEBUG] [Thread-129845] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:43:18.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:18.906 [DEBUG] [Thread-129845] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:18.907 [DEBUG] [Thread-129845] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:18.907 [DEBUG] [Thread-129845] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:18.907 [DEBUG] [Thread-129845] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:43:18.907 [DEBUG] [Thread-129845] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:18.921 [INFO] [Thread-129845] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:18.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-28T16:43:18.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:19.917 [DEBUG] [Thread-129845] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:19.918 [DEBUG] [Thread-129845] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:19.965 [DEBUG] [Thread-129845] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:19.965 [DEBUG] [Thread-129845] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:19.974 [DEBUG] [Thread-129845] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:19.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43: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')
2025-09-28T16:43:19.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') -> 00000000
2025-09-28T16:43:20.000 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:20.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:20.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:20.009 [DEBUG] [Thread-129845] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:21.743 [DEBUG] [Thread-129848 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:22.618 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:22.618 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:30.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:43:30.011 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:43:30.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:43:30.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 42, 56), 14.74, 37.2, 0.0, 16.97, 16.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:43:30.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:42:56
2025-09-28T16:43:30.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:43:30.889 [DEBUG] [Thread-129849] [transport.py] [_log()] starting thread (client mode): 0x2e363640
2025-09-28T16:43:30.889 [DEBUG] [Thread-129849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:30.909 [DEBUG] [Thread-129849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:43:30.909 [INFO] [Thread-129849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:30.912 [DEBUG] [Thread-129849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:30.913 [DEBUG] [Thread-129849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:30.913 [DEBUG] [Thread-129849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:30.913 [DEBUG] [Thread-129849] [transport.py] [_log()] Compression: none
2025-09-28T16:43:30.913 [DEBUG] [Thread-129849] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:30.932 [DEBUG] [Thread-129849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:30.932 [DEBUG] [Thread-129849] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:30.933 [DEBUG] [Thread-129849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:43:30.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:43:30.934 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:30.935 [DEBUG] [Thread-129849] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:30.935 [DEBUG] [Thread-129849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:30.936 [DEBUG] [Thread-129849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:30.936 [DEBUG] [Thread-129849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:43:30.936 [DEBUG] [Thread-129849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:30.970 [INFO] [Thread-129849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:30.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:31.609 [DEBUG] [Thread-129849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:31.609 [DEBUG] [Thread-129849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:31.609 [DEBUG] [Thread-129849] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:43:31.650 [DEBUG] [Thread-129849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:31.650 [DEBUG] [Thread-129849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:31.653 [DEBUG] [Thread-129849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:31.665 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:31.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:43:31.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:43:31.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:43:31.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:31.675 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:43:31.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:31.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.612928 -999.00  +17.30  14.38     40   +3.90 1 1 1 1 1   887    0 11.12 -93.17 ----- 14.4 14.4 192.4 21.9 22.0 -27.7 21.6 -26.5 23.2 -27.5 24.0 -29.4
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.612928
2025-09-28T16:43:31.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:43:31.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:43:31.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:43:31.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:43:31.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:43:31.677 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:42:56', tmtdew=14.74, humidity=37.2, cloud=0.0, wind=16.97, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:42:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:43:31.678 [DEBUG] [Thread-129849] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:31.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-28T16:43:31.773 [DEBUG] [Thread-129852] [transport.py] [_log()] starting thread (client mode): 0x2b96cf10
2025-09-28T16:43:31.773 [DEBUG] [Thread-129852] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:31.788 [DEBUG] [Thread-129852] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:43:31.788 [INFO] [Thread-129852] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:43:31.795 [DEBUG] [Thread-129852] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:31.795 [DEBUG] [Thread-129852] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:31.796 [DEBUG] [Thread-129852] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] Compression: none
2025-09-28T16:43:31.797 [DEBUG] [Thread-129852] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:31.855 [DEBUG] [Thread-129852] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:31.856 [DEBUG] [Thread-129852] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:31.856 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:43:31.856 [DEBUG] [Thread-129852] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:43:31.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:31.911 [DEBUG] [Thread-129852] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:31.911 [DEBUG] [Thread-129852] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:31.911 [DEBUG] [Thread-129852] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:31.911 [DEBUG] [Thread-129852] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:43:31.911 [DEBUG] [Thread-129852] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:31.930 [INFO] [Thread-129852] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:31.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-28T16:43:31.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:32.901 [DEBUG] [Thread-129852] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:32.901 [DEBUG] [Thread-129852] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:32.949 [DEBUG] [Thread-129852] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:32.949 [DEBUG] [Thread-129852] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:32.958 [DEBUG] [Thread-129852] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:32.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43: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')
2025-09-28T16:43:32.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-28T16:43:32.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:32.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:32.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:32.992 [DEBUG] [Thread-129852] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:33.846 [DEBUG] [Thread-129854 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:42.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:43:42.989 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:43:42.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:43:43.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 43, 28), 14.88, 36.87, 0.0, 15.92, 16.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:43:43.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:43:28
2025-09-28T16:43:43.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:43:43.841 [DEBUG] [Thread-129855] [transport.py] [_log()] starting thread (client mode): 0x2e363460
2025-09-28T16:43:43.841 [DEBUG] [Thread-129855] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:43.861 [DEBUG] [Thread-129855] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:43:43.861 [INFO] [Thread-129855] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:43.864 [DEBUG] [Thread-129855] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] Compression: none
2025-09-28T16:43:43.865 [DEBUG] [Thread-129855] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:43.882 [DEBUG] [Thread-129855] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:43.883 [DEBUG] [Thread-129855] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:43.883 [DEBUG] [Thread-129855] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:43:43.883 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:43:43.884 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:43.885 [DEBUG] [Thread-129855] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:43.885 [DEBUG] [Thread-129855] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:43.885 [DEBUG] [Thread-129855] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:43.886 [DEBUG] [Thread-129855] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:43:43.886 [DEBUG] [Thread-129855] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:43.909 [INFO] [Thread-129855] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:43.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:44.561 [DEBUG] [Thread-129855] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:44.561 [DEBUG] [Thread-129855] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:44.561 [DEBUG] [Thread-129855] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:43:44.602 [DEBUG] [Thread-129855] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:44.602 [DEBUG] [Thread-129855] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:44.605 [DEBUG] [Thread-129855] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:44.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:44.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:43:44.621 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:43:44.623 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:43:44.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:44.630 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:43:44.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:44.630 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:44.630 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:43:44.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.613623 -999.00  +17.60  23.49     40   +4.10 1 1 1 1 1   887    0 11.56 -81.78 ----- 23.5 23.5 197.2 31.9 22.1 -27.5 21.5 -28.4 23.2 -26.8 23.9 -30.0
2025-09-28T16:43:44.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:43:44.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:43:44.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.613623
2025-09-28T16:43:44.631 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:43:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:43:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:43:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:43:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:43:44.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:43:28', tmtdew=14.88, humidity=36.87, cloud=0.0, wind=15.92, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:43:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:43:44.632 [DEBUG] [Thread-129855] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:44.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-28T16:43:44.730 [DEBUG] [Thread-129858] [transport.py] [_log()] starting thread (client mode): 0x2e363fd0
2025-09-28T16:43:44.731 [DEBUG] [Thread-129858] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:44.747 [DEBUG] [Thread-129858] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:43:44.747 [INFO] [Thread-129858] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:43:44.754 [DEBUG] [Thread-129858] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:44.755 [DEBUG] [Thread-129858] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:44.756 [DEBUG] [Thread-129858] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:44.756 [DEBUG] [Thread-129858] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:44.756 [DEBUG] [Thread-129858] [transport.py] [_log()] Compression: none
2025-09-28T16:43:44.756 [DEBUG] [Thread-129858] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:44.814 [DEBUG] [Thread-129858] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:44.815 [DEBUG] [Thread-129858] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:44.815 [DEBUG] [Thread-129858] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:43:44.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:43:44.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:44.871 [DEBUG] [Thread-129858] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:44.871 [DEBUG] [Thread-129858] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:44.871 [DEBUG] [Thread-129858] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:44.871 [DEBUG] [Thread-129858] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:43:44.871 [DEBUG] [Thread-129858] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:44.890 [INFO] [Thread-129858] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:44.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-28T16:43:44.890 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:45.842 [DEBUG] [Thread-129858] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:45.842 [DEBUG] [Thread-129858] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:45.890 [DEBUG] [Thread-129858] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:45.890 [DEBUG] [Thread-129858] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:45.899 [DEBUG] [Thread-129858] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:45.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43: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-28T16:43: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-28T16:43:45.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:45.926 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:45.927 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:45.935 [DEBUG] [Thread-129858] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:48.880 [DEBUG] [Thread-129860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:43:55.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:43:55.931 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:43:55.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-28T16:43:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 43, 28), 14.88, 36.87, 0.0, 15.92, 16.77, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:43:56.520 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:43:28
2025-09-28T16:43:56.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:43:56.778 [DEBUG] [Thread-129861] [transport.py] [_log()] starting thread (client mode): 0x2e3616c0
2025-09-28T16:43:56.779 [DEBUG] [Thread-129861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:56.799 [DEBUG] [Thread-129861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:43:56.799 [INFO] [Thread-129861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] Compression: none
2025-09-28T16:43:56.802 [DEBUG] [Thread-129861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:56.820 [DEBUG] [Thread-129861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:56.820 [DEBUG] [Thread-129861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:56.820 [DEBUG] [Thread-129861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:43:56.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:43:56.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:56.821 [DEBUG] [Thread-129861] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:56.821 [DEBUG] [Thread-129861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:56.821 [DEBUG] [Thread-129861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:56.821 [DEBUG] [Thread-129861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:43:56.821 [DEBUG] [Thread-129861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:56.832 [INFO] [Thread-129861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:56.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:57.460 [DEBUG] [Thread-129861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:57.461 [DEBUG] [Thread-129861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:57.461 [DEBUG] [Thread-129861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:43:57.501 [DEBUG] [Thread-129861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:57.501 [DEBUG] [Thread-129861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:57.504 [DEBUG] [Thread-129861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:57.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:57.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:43:57.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:43:57.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:43:57.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:57.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:43:57.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:57.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:43:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.613623 -999.00  +17.60  23.49     40   +4.10 1 1 1 1 1   887    0 11.56 -81.78 ----- 23.5 23.5 197.2 31.9 22.1 -27.5 21.5 -28.4 23.2 -26.8 23.9 -30.0
2025-09-28T16:43:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:43:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:43:57.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.613623
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:43:57.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:43:28', tmtdew=14.88, humidity=36.87, cloud=0.0, wind=15.92, temperature=16.77, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:43:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:43:57.529 [DEBUG] [Thread-129861] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:43:57.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-28T16:43:57.623 [DEBUG] [Thread-129864] [transport.py] [_log()] starting thread (client mode): 0x2b9b89a0
2025-09-28T16:43:57.623 [DEBUG] [Thread-129864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:43:57.638 [DEBUG] [Thread-129864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:43:57.638 [INFO] [Thread-129864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:43:57.646 [DEBUG] [Thread-129864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:43:57.646 [DEBUG] [Thread-129864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:43:57.646 [DEBUG] [Thread-129864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] client lang: <none>
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] server lang: <none>
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] kex follows: False
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] Compression: none
2025-09-28T16:43:57.647 [DEBUG] [Thread-129864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:43:57.702 [DEBUG] [Thread-129864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:43:57.702 [DEBUG] [Thread-129864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:43:57.703 [DEBUG] [Thread-129864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:43:57.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:43:57.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:43:57.759 [DEBUG] [Thread-129864] [transport.py] [_log()] userauth is OK
2025-09-28T16:43:57.759 [DEBUG] [Thread-129864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:43:57.759 [DEBUG] [Thread-129864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:43:57.759 [DEBUG] [Thread-129864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:43:57.759 [DEBUG] [Thread-129864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:43:57.778 [INFO] [Thread-129864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:43:57.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-28T16:43:57.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:43:58.710 [DEBUG] [Thread-129864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:43:58.710 [DEBUG] [Thread-129864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:43:58.758 [DEBUG] [Thread-129864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:43:58.758 [DEBUG] [Thread-129864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:43:58.767 [DEBUG] [Thread-129864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:43:58.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:43:58.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-28T16:43:58.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-28T16:43:58.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:43:58.794 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:43:58.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:43:58.802 [DEBUG] [Thread-129864] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:03.932 [DEBUG] [Thread-129866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:08.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:44:08.805 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:44:08.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-28T16:44:09.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 43, 28), 14.98, 36.37, 0.0, 17.72, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:44:09.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:43:28
2025-09-28T16:44:09.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:44:09.669 [DEBUG] [Thread-129867] [transport.py] [_log()] starting thread (client mode): 0x2b955d50
2025-09-28T16:44:09.669 [DEBUG] [Thread-129867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:09.688 [DEBUG] [Thread-129867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:44:09.688 [INFO] [Thread-129867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] Compression: none
2025-09-28T16:44:09.692 [DEBUG] [Thread-129867] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:09.708 [DEBUG] [Thread-129867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:09.709 [DEBUG] [Thread-129867] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:09.709 [DEBUG] [Thread-129867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:44:09.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:44:09.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:09.711 [DEBUG] [Thread-129867] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:09.711 [DEBUG] [Thread-129867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:09.711 [DEBUG] [Thread-129867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:09.711 [DEBUG] [Thread-129867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:44:09.712 [DEBUG] [Thread-129867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:09.735 [INFO] [Thread-129867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:09.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:10.348 [DEBUG] [Thread-129867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:10.348 [DEBUG] [Thread-129867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:10.349 [DEBUG] [Thread-129867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:44:10.389 [DEBUG] [Thread-129867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:10.389 [DEBUG] [Thread-129867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:10.392 [DEBUG] [Thread-129867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:10.405 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:10.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:44:10.407 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:44:10.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:44:10.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:10.415 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:44:10.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:10.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:10.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:44:10.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.613623 -999.00  +17.60  23.49     40   +4.10 1 1 1 1 1   887    0 11.56 -81.78 ----- 23.5 23.5 197.2 31.9 22.1 -27.5 21.5 -28.4 23.2 -26.8 23.9 -30.0
2025-09-28T16:44:10.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:44:10.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:44:10.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.613623
2025-09-28T16:44:10.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:44:10.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:44:10.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:44:10.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:44:10.417 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:44:10.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:43:28', tmtdew=14.98, humidity=36.37, cloud=0.0, wind=17.72, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:43:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:44:10.418 [DEBUG] [Thread-129867] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:10.503 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:44:10.517 [DEBUG] [Thread-129870] [transport.py] [_log()] starting thread (client mode): 0x2b9563b0
2025-09-28T16:44:10.517 [DEBUG] [Thread-129870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:10.533 [DEBUG] [Thread-129870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:44:10.533 [INFO] [Thread-129870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:44:10.541 [DEBUG] [Thread-129870] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:10.542 [DEBUG] [Thread-129870] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:10.543 [DEBUG] [Thread-129870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:10.543 [DEBUG] [Thread-129870] [transport.py] [_log()] Compression: none
2025-09-28T16:44:10.543 [DEBUG] [Thread-129870] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:10.599 [DEBUG] [Thread-129870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:10.599 [DEBUG] [Thread-129870] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:10.600 [DEBUG] [Thread-129870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:44:10.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:44:10.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:10.655 [DEBUG] [Thread-129870] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:10.655 [DEBUG] [Thread-129870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:10.655 [DEBUG] [Thread-129870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:10.655 [DEBUG] [Thread-129870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:44:10.655 [DEBUG] [Thread-129870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:10.674 [INFO] [Thread-129870] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:10.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-28T16:44:10.674 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:11.557 [DEBUG] [Thread-129870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:11.558 [DEBUG] [Thread-129870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:11.605 [DEBUG] [Thread-129870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:11.605 [DEBUG] [Thread-129870] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:11.614 [DEBUG] [Thread-129870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:11.622 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44: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-28T16:44: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-28T16:44:11.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:11.640 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:11.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:11.648 [DEBUG] [Thread-129870] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:18.964 [DEBUG] [Thread-129872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:21.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:44:21.648 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:44:21.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-28T16:44:21.792 [DEBUG] [Thread-129873 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 43, 28), 14.98, 36.37, 0.0, 17.72, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:44:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:43:28
2025-09-28T16:44:22.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:44:22.489 [DEBUG] [Thread-129874] [transport.py] [_log()] starting thread (client mode): 0x2b91c610
2025-09-28T16:44:22.489 [DEBUG] [Thread-129874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:22.509 [DEBUG] [Thread-129874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:44:22.509 [INFO] [Thread-129874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:44:22.512 [DEBUG] [Thread-129874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:22.512 [DEBUG] [Thread-129874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:44:22.512 [DEBUG] [Thread-129874] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] Compression: none
2025-09-28T16:44:22.513 [DEBUG] [Thread-129874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:22.530 [DEBUG] [Thread-129874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:22.530 [DEBUG] [Thread-129874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:22.531 [DEBUG] [Thread-129874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:44:22.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:44:22.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:22.532 [DEBUG] [Thread-129874] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:22.533 [DEBUG] [Thread-129874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:22.533 [DEBUG] [Thread-129874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:22.533 [DEBUG] [Thread-129874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:44:22.533 [DEBUG] [Thread-129874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:22.568 [INFO] [Thread-129874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:22.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:22.760 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:22.761 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:23.250 [DEBUG] [Thread-129874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:23.250 [DEBUG] [Thread-129874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:23.250 [DEBUG] [Thread-129874] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:44:23.290 [DEBUG] [Thread-129874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:23.290 [DEBUG] [Thread-129874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:23.293 [DEBUG] [Thread-129874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:23.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:23.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:44:23.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:44:23.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:44:23.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:23.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:44:23.318 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:23.318 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:44:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.613970 -999.00  +17.30  12.95     41   +4.00 1 1 1 1 1   887    0 11.39 -90.20 ----- 12.9 12.9 192.0 25.1 22.0 -28.3 21.4 -26.7 23.1 -27.9 24.0 -28.7
2025-09-28T16:44:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:44:23.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:44:23.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.613970
2025-09-28T16:44:23.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:44:23.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:44:23.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:44:23.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:44:23.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:44:23.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:43:28', tmtdew=14.98, humidity=36.37, cloud=0.0, wind=17.72, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:44:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:44:23.320 [DEBUG] [Thread-129874] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:23.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-28T16:44:23.413 [DEBUG] [Thread-129877] [transport.py] [_log()] starting thread (client mode): 0x2e349030
2025-09-28T16:44:23.413 [DEBUG] [Thread-129877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:23.428 [DEBUG] [Thread-129877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:44:23.428 [INFO] [Thread-129877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:44:23.436 [DEBUG] [Thread-129877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:23.436 [DEBUG] [Thread-129877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:44:23.436 [DEBUG] [Thread-129877] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] Compression: none
2025-09-28T16:44:23.437 [DEBUG] [Thread-129877] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:23.494 [DEBUG] [Thread-129877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:23.495 [DEBUG] [Thread-129877] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:23.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:44:23.496 [DEBUG] [Thread-129877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:44:23.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:23.551 [DEBUG] [Thread-129877] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:23.551 [DEBUG] [Thread-129877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:23.551 [DEBUG] [Thread-129877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:23.551 [DEBUG] [Thread-129877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:44:23.551 [DEBUG] [Thread-129877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:23.570 [INFO] [Thread-129877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:23.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-28T16:44:23.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:24.512 [DEBUG] [Thread-129877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:24.512 [DEBUG] [Thread-129877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:24.560 [DEBUG] [Thread-129877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:24.560 [DEBUG] [Thread-129877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:24.570 [DEBUG] [Thread-129877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:24.579 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:24.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-28T16:44:24.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-28T16:44:24.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:24.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:24.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:24.604 [DEBUG] [Thread-129877] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:34.009 [DEBUG] [Thread-129879 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:34.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:44:34.601 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:44:34.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-28T16:44:35.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 44, 32), 14.98, 36.37, 0.0, 18.49, 17.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:44:35.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:44:32
2025-09-28T16:44:35.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:44:35.431 [DEBUG] [Thread-129880] [transport.py] [_log()] starting thread (client mode): 0x2b92a230
2025-09-28T16:44:35.431 [DEBUG] [Thread-129880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:35.451 [DEBUG] [Thread-129880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:44:35.451 [INFO] [Thread-129880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:35.452 [DEBUG] [Thread-129880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] Compression: none
2025-09-28T16:44:35.453 [DEBUG] [Thread-129880] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:35.460 [DEBUG] [Thread-129880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:35.461 [DEBUG] [Thread-129880] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:35.461 [DEBUG] [Thread-129880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:44:35.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:44:35.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:35.463 [DEBUG] [Thread-129880] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:35.463 [DEBUG] [Thread-129880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:35.463 [DEBUG] [Thread-129880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:35.463 [DEBUG] [Thread-129880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:44:35.463 [DEBUG] [Thread-129880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:35.498 [INFO] [Thread-129880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:35.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:36.112 [DEBUG] [Thread-129880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:36.112 [DEBUG] [Thread-129880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:36.112 [DEBUG] [Thread-129880] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:44:36.153 [DEBUG] [Thread-129880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:36.153 [DEBUG] [Thread-129880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:36.156 [DEBUG] [Thread-129880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:36.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:36.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:44:36.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:44:36.172 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:44:36.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:36.179 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:44:36.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:36.179 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:36.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:44:36.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.613970 -999.00  +17.30  12.95     41   +4.00 1 1 1 1 1   887    0 11.39 -90.20 ----- 12.9 12.9 192.0 25.1 22.0 -28.3 21.4 -26.7 23.1 -27.9 24.0 -28.7
2025-09-28T16:44:36.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:44:36.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:44:36.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.613970
2025-09-28T16:44:36.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:44:36.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:44:36.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:44:36.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:44:36.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:44:36.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:44:32', tmtdew=14.98, humidity=36.37, cloud=0.0, wind=18.49, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:44:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:44:36.181 [DEBUG] [Thread-129880] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:36.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-28T16:44:36.278 [DEBUG] [Thread-129883] [transport.py] [_log()] starting thread (client mode): 0x2b94ed40
2025-09-28T16:44:36.279 [DEBUG] [Thread-129883] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:36.293 [DEBUG] [Thread-129883] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:44:36.293 [INFO] [Thread-129883] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:44:36.301 [DEBUG] [Thread-129883] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:36.301 [DEBUG] [Thread-129883] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:44:36.301 [DEBUG] [Thread-129883] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:36.301 [DEBUG] [Thread-129883] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] Compression: none
2025-09-28T16:44:36.302 [DEBUG] [Thread-129883] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:36.358 [DEBUG] [Thread-129883] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:36.359 [DEBUG] [Thread-129883] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:36.359 [DEBUG] [Thread-129883] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:44:36.359 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:44:36.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:36.415 [DEBUG] [Thread-129883] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:36.415 [DEBUG] [Thread-129883] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:36.415 [DEBUG] [Thread-129883] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:36.415 [DEBUG] [Thread-129883] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:44:36.415 [DEBUG] [Thread-129883] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:36.434 [INFO] [Thread-129883] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:36.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:44:36.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:37.405 [DEBUG] [Thread-129883] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:37.405 [DEBUG] [Thread-129883] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:37.453 [DEBUG] [Thread-129883] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:37.454 [DEBUG] [Thread-129883] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:37.463 [DEBUG] [Thread-129883] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:37.472 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:37.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-28T16:44:37.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-28T16:44:37.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:37.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:37.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:37.498 [DEBUG] [Thread-129883] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:47.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:44:47.500 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:44:47.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-28T16:44:48.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 44, 32), 14.98, 36.37, 0.0, 18.49, 17.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:44:48.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:44:32
2025-09-28T16:44:48.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:44:48.347 [DEBUG] [Thread-129885] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9d0
2025-09-28T16:44:48.347 [DEBUG] [Thread-129885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:48.368 [DEBUG] [Thread-129885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:44:48.368 [INFO] [Thread-129885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:48.371 [DEBUG] [Thread-129885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:48.372 [DEBUG] [Thread-129885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:48.372 [DEBUG] [Thread-129885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:48.372 [DEBUG] [Thread-129885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:48.372 [DEBUG] [Thread-129885] [transport.py] [_log()] Compression: none
2025-09-28T16:44:48.372 [DEBUG] [Thread-129885] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:48.390 [DEBUG] [Thread-129885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:48.391 [DEBUG] [Thread-129885] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:48.391 [DEBUG] [Thread-129885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:44:48.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:44:48.392 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:48.394 [DEBUG] [Thread-129885] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:48.394 [DEBUG] [Thread-129885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:48.394 [DEBUG] [Thread-129885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:48.394 [DEBUG] [Thread-129885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:44:48.394 [DEBUG] [Thread-129885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:48.412 [INFO] [Thread-129885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:48.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:48.992 [DEBUG] [Thread-129885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:48.993 [DEBUG] [Thread-129885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:48.993 [DEBUG] [Thread-129885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:44:49.033 [DEBUG] [Thread-129885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:49.033 [DEBUG] [Thread-129885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:49.036 [DEBUG] [Thread-129885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:49.038 [DEBUG] [Thread-129887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:44:49.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:49.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:44:49.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:44:49.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:44:49.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:49.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:44:49.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:49.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:49.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:44:49.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.614317 -999.00  +17.40  10.31     41   +4.10 1 1 1 1 1   887    0 10.54 -106.40 ----- 10.3 10.3 210.3 18.4 22.0 -27.8 21.4 -26.7 23.2 -27.1 24.0 -28.4
2025-09-28T16:44:49.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:44:49.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:44:49.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.614317
2025-09-28T16:44:49.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:44:49.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:44:49.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:44:49.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:44:49.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:44:49.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:44:32', tmtdew=14.98, humidity=36.37, cloud=0.0, wind=18.49, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:44:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:44:49.060 [DEBUG] [Thread-129885] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:44:49.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-28T16:44:49.155 [DEBUG] [Thread-129889] [transport.py] [_log()] starting thread (client mode): 0x2b9bb160
2025-09-28T16:44:49.155 [DEBUG] [Thread-129889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:44:49.170 [DEBUG] [Thread-129889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:44:49.170 [INFO] [Thread-129889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] client lang: <none>
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] server lang: <none>
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] kex follows: False
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:44:49.178 [DEBUG] [Thread-129889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:44:49.179 [DEBUG] [Thread-129889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:44:49.179 [DEBUG] [Thread-129889] [transport.py] [_log()] Compression: none
2025-09-28T16:44:49.179 [DEBUG] [Thread-129889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:44:49.234 [DEBUG] [Thread-129889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:44:49.235 [DEBUG] [Thread-129889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:44:49.235 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:44:49.236 [DEBUG] [Thread-129889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:44:49.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:44:49.291 [DEBUG] [Thread-129889] [transport.py] [_log()] userauth is OK
2025-09-28T16:44:49.291 [DEBUG] [Thread-129889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:44:49.291 [DEBUG] [Thread-129889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:44:49.291 [DEBUG] [Thread-129889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:44:49.291 [DEBUG] [Thread-129889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:44:49.311 [INFO] [Thread-129889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:44:49.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-28T16:44:49.311 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:44:50.307 [DEBUG] [Thread-129889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:44:50.307 [DEBUG] [Thread-129889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:44:50.355 [DEBUG] [Thread-129889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:44:50.355 [DEBUG] [Thread-129889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:44:50.364 [DEBUG] [Thread-129889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:44:50.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:44:50.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-28T16:44:50.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-28T16:44:50.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:44:50.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:44:50.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:44:50.398 [DEBUG] [Thread-129889] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:00.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:45:00.401 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:45:00.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-28T16:45:00.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 44, 32), 14.98, 36.37, 0.0, 18.49, 17.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:45:00.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:44:32
2025-09-28T16:45:01.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:45:01.219 [DEBUG] [Thread-129891] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-28T16:45:01.219 [DEBUG] [Thread-129891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:01.240 [DEBUG] [Thread-129891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:45:01.240 [INFO] [Thread-129891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:01.241 [DEBUG] [Thread-129891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] Compression: none
2025-09-28T16:45:01.242 [DEBUG] [Thread-129891] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:01.260 [DEBUG] [Thread-129891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:01.260 [DEBUG] [Thread-129891] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:01.261 [DEBUG] [Thread-129891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:45:01.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:45:01.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:01.263 [DEBUG] [Thread-129891] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:01.263 [DEBUG] [Thread-129891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:01.263 [DEBUG] [Thread-129891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:01.263 [DEBUG] [Thread-129891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:45:01.263 [DEBUG] [Thread-129891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:01.298 [INFO] [Thread-129891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:01.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:01.878 [DEBUG] [Thread-129891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:01.878 [DEBUG] [Thread-129891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:01.878 [DEBUG] [Thread-129891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:45:01.919 [DEBUG] [Thread-129891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:01.920 [DEBUG] [Thread-129891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:01.922 [DEBUG] [Thread-129891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:01.932 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:01.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:45:01.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:45:01.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:45:01.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:01.940 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:45:01.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.614317 -999.00  +17.40  10.31     41   +4.10 1 1 1 1 1   887    0 10.54 -106.40 ----- 10.3 10.3 210.3 18.4 22.0 -27.8 21.4 -26.7 23.2 -27.1 24.0 -28.4
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:45:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.614317
2025-09-28T16:45:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:45:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:45:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:45:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:45:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:45:01.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:44:32', tmtdew=14.98, humidity=36.37, cloud=0.0, wind=18.49, temperature=17.01, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:44:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:45:01.943 [DEBUG] [Thread-129891] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:02.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-28T16:45:02.052 [DEBUG] [Thread-129894] [transport.py] [_log()] starting thread (client mode): 0x2b91fbb0
2025-09-28T16:45:02.052 [DEBUG] [Thread-129894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:02.066 [DEBUG] [Thread-129894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:45:02.067 [INFO] [Thread-129894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] Compression: none
2025-09-28T16:45:02.074 [DEBUG] [Thread-129894] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:02.130 [DEBUG] [Thread-129894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:02.130 [DEBUG] [Thread-129894] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:02.130 [DEBUG] [Thread-129894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:45:02.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:45:02.130 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:02.188 [DEBUG] [Thread-129894] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:02.188 [DEBUG] [Thread-129894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:02.188 [DEBUG] [Thread-129894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:02.188 [DEBUG] [Thread-129894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:45:02.188 [DEBUG] [Thread-129894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:02.206 [INFO] [Thread-129894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:02.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-28T16:45:02.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:03.187 [DEBUG] [Thread-129894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:03.187 [DEBUG] [Thread-129894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:03.236 [DEBUG] [Thread-129894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:03.236 [DEBUG] [Thread-129894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:03.245 [DEBUG] [Thread-129894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:03.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:03.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-28T16:45:03.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-28T16:45:03.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:03.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:03.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:03.282 [DEBUG] [Thread-129894] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:04.082 [DEBUG] [Thread-129896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:13.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:45:13.277 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:45:13.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-28T16:45:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 45, 4), 14.99, 36.37, 0.0, 18.09, 17.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:45:13.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:45:04
2025-09-28T16:45:13.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:45:14.129 [DEBUG] [Thread-129897] [transport.py] [_log()] starting thread (client mode): 0x2e3c03d0
2025-09-28T16:45:14.129 [DEBUG] [Thread-129897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:14.149 [DEBUG] [Thread-129897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:45:14.149 [INFO] [Thread-129897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:14.151 [DEBUG] [Thread-129897] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] Compression: none
2025-09-28T16:45:14.152 [DEBUG] [Thread-129897] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:14.171 [DEBUG] [Thread-129897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:14.171 [DEBUG] [Thread-129897] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:14.171 [DEBUG] [Thread-129897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:45:14.171 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:45:14.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:14.172 [DEBUG] [Thread-129897] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:14.172 [DEBUG] [Thread-129897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:14.172 [DEBUG] [Thread-129897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:14.172 [DEBUG] [Thread-129897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:45:14.172 [DEBUG] [Thread-129897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:14.187 [INFO] [Thread-129897] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:14.188 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:18.472 [DEBUG] [Thread-129897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:18.472 [DEBUG] [Thread-129897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:18.472 [DEBUG] [Thread-129897] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:45:18.513 [DEBUG] [Thread-129897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:18.513 [DEBUG] [Thread-129897] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:18.515 [DEBUG] [Thread-129897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:18.628 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:18.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:45:18.629 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:45:18.630 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:45:18.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:18.658 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:45:18.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:18.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.614317 -999.00  +17.40  10.31     41   +4.10 1 1 1 1 1   887    0 10.54 -106.40 ----- 10.3 10.3 210.3 18.4 22.0 -27.8 21.4 -26.7 23.2 -27.1 24.0 -28.4
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.614317
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:45:18.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:45:04', tmtdew=14.99, humidity=36.37, cloud=0.0, wind=18.09, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:44:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:45:18.660 [DEBUG] [Thread-129897] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:18.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-28T16:45:18.745 [DEBUG] [Thread-129900] [transport.py] [_log()] starting thread (client mode): 0x2b96ece0
2025-09-28T16:45:18.746 [DEBUG] [Thread-129900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:18.760 [DEBUG] [Thread-129900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:45:18.760 [INFO] [Thread-129900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:18.767 [DEBUG] [Thread-129900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] Compression: none
2025-09-28T16:45:18.768 [DEBUG] [Thread-129900] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:18.825 [DEBUG] [Thread-129900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:18.825 [DEBUG] [Thread-129900] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:18.825 [DEBUG] [Thread-129900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:45:18.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:45:18.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:18.882 [DEBUG] [Thread-129900] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:18.882 [DEBUG] [Thread-129900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:18.882 [DEBUG] [Thread-129900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:18.882 [DEBUG] [Thread-129900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:45:18.882 [DEBUG] [Thread-129900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:18.896 [INFO] [Thread-129900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:18.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-28T16:45:18.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:19.122 [DEBUG] [Thread-129902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:19.850 [DEBUG] [Thread-129900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:19.850 [DEBUG] [Thread-129900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:19.898 [DEBUG] [Thread-129900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:19.898 [DEBUG] [Thread-129900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:19.906 [DEBUG] [Thread-129900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:19.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:19.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-28T16:45:19.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-28T16:45:19.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:19.930 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:19.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:19.938 [DEBUG] [Thread-129900] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:21.836 [DEBUG] [Thread-129903 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:22.905 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:22.906 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:29.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:45:29.938 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:45:29.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-28T16:45:30.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 45, 4), 14.99, 36.37, 0.0, 18.09, 17.02, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:45:30.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:45:04
2025-09-28T16:45:30.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:45:30.774 [DEBUG] [Thread-129904] [transport.py] [_log()] starting thread (client mode): 0x2b91f280
2025-09-28T16:45:30.774 [DEBUG] [Thread-129904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:30.790 [DEBUG] [Thread-129904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:45:30.790 [INFO] [Thread-129904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:30.793 [DEBUG] [Thread-129904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] Compression: none
2025-09-28T16:45:30.794 [DEBUG] [Thread-129904] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:30.813 [DEBUG] [Thread-129904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:30.814 [DEBUG] [Thread-129904] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:30.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:45:30.815 [DEBUG] [Thread-129904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:45:30.816 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:30.817 [DEBUG] [Thread-129904] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:30.817 [DEBUG] [Thread-129904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:30.817 [DEBUG] [Thread-129904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:30.817 [DEBUG] [Thread-129904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:45:30.817 [DEBUG] [Thread-129904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:30.842 [INFO] [Thread-129904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:30.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:31.465 [DEBUG] [Thread-129904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:31.465 [DEBUG] [Thread-129904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:31.466 [DEBUG] [Thread-129904] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:45:31.506 [DEBUG] [Thread-129904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:31.507 [DEBUG] [Thread-129904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:31.509 [DEBUG] [Thread-129904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:31.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:31.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:45:31.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:45:31.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:45:31.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:31.528 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:45:31.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:31.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:31.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:45:31.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.614664 -999.00  +17.40  18.76     41   +4.20 1 1 1 1 1   887    0 10.92 -101.14 ----- 18.8 18.8 202.8 21.2 22.0 -27.7 21.4 -26.8 23.2 -26.5 24.0 -28.8
2025-09-28T16:45:31.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:45:31.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:45:31.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.614664
2025-09-28T16:45:31.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:45:31.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:45:31.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:45:31.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:45:31.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:45:31.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:45:04', tmtdew=14.99, humidity=36.37, cloud=0.0, wind=18.09, temperature=17.02, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:45:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:45:31.531 [DEBUG] [Thread-129904] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:31.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-28T16:45:31.630 [DEBUG] [Thread-129907] [transport.py] [_log()] starting thread (client mode): 0x2b9b8610
2025-09-28T16:45:31.630 [DEBUG] [Thread-129907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:31.645 [DEBUG] [Thread-129907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:45:31.645 [INFO] [Thread-129907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:45:31.652 [DEBUG] [Thread-129907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:31.653 [DEBUG] [Thread-129907] [transport.py] [_log()] Compression: none
2025-09-28T16:45:31.654 [DEBUG] [Thread-129907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:31.710 [DEBUG] [Thread-129907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:31.711 [DEBUG] [Thread-129907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:31.711 [DEBUG] [Thread-129907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:45:31.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:45:31.712 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:31.767 [DEBUG] [Thread-129907] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:31.767 [DEBUG] [Thread-129907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:31.767 [DEBUG] [Thread-129907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:31.767 [DEBUG] [Thread-129907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:45:31.767 [DEBUG] [Thread-129907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:31.787 [INFO] [Thread-129907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:31.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-28T16:45:31.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:32.773 [DEBUG] [Thread-129907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:32.773 [DEBUG] [Thread-129907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:32.821 [DEBUG] [Thread-129907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:32.821 [DEBUG] [Thread-129907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:32.830 [DEBUG] [Thread-129907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:32.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:32.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')
2025-09-28T16:45:32.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') -> 00000000
2025-09-28T16:45:32.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:32.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:32.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:32.864 [DEBUG] [Thread-129907] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:34.164 [DEBUG] [Thread-129909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:42.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:45:42.867 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:45:42.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:45:43.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 45, 36), 15.12, 36.3, 0.0, 17.01, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:45:43.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:45:36
2025-09-28T16:45:43.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:45:43.704 [DEBUG] [Thread-129910] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a00
2025-09-28T16:45:43.704 [DEBUG] [Thread-129910] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:43.724 [DEBUG] [Thread-129910] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:45:43.724 [INFO] [Thread-129910] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:45:43.727 [DEBUG] [Thread-129910] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] Compression: none
2025-09-28T16:45:43.728 [DEBUG] [Thread-129910] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:43.744 [DEBUG] [Thread-129910] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:43.745 [DEBUG] [Thread-129910] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:43.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:45:43.746 [DEBUG] [Thread-129910] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:45:43.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:43.747 [DEBUG] [Thread-129910] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:43.747 [DEBUG] [Thread-129910] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:43.748 [DEBUG] [Thread-129910] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:43.748 [DEBUG] [Thread-129910] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:45:43.748 [DEBUG] [Thread-129910] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:43.766 [INFO] [Thread-129910] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:43.766 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:45.401 [DEBUG] [Thread-129910] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:45.402 [DEBUG] [Thread-129910] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:45.402 [DEBUG] [Thread-129910] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:45:45.442 [DEBUG] [Thread-129910] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:45.442 [DEBUG] [Thread-129910] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:45.445 [DEBUG] [Thread-129910] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:45.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:45.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:45:45.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:45:45.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:45:45.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:45.465 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:45:45.465 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:45.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:45.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:45:45.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.614664 -999.00  +17.40  18.76     41   +4.20 1 1 1 1 1   887    0 10.92 -101.14 ----- 18.8 18.8 202.8 21.2 22.0 -27.7 21.4 -26.8 23.2 -26.5 24.0 -28.8
2025-09-28T16:45:45.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:45:45.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:45:45.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.614664
2025-09-28T16:45:45.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:45:45.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:45:45.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:45:45.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:45:45.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:45:45.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:45:36', tmtdew=15.12, humidity=36.3, cloud=0.0, wind=17.01, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:45:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:45:45.468 [DEBUG] [Thread-129910] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:45.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-28T16:45:45.565 [DEBUG] [Thread-129913] [transport.py] [_log()] starting thread (client mode): 0x2b91d6c0
2025-09-28T16:45:45.565 [DEBUG] [Thread-129913] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:45.580 [DEBUG] [Thread-129913] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:45:45.580 [INFO] [Thread-129913] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:45.587 [DEBUG] [Thread-129913] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] Compression: none
2025-09-28T16:45:45.588 [DEBUG] [Thread-129913] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:45.646 [DEBUG] [Thread-129913] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:45.647 [DEBUG] [Thread-129913] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:45.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:45:45.648 [DEBUG] [Thread-129913] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:45:45.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:45.703 [DEBUG] [Thread-129913] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:45.703 [DEBUG] [Thread-129913] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:45.703 [DEBUG] [Thread-129913] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:45.703 [DEBUG] [Thread-129913] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:45:45.712 [DEBUG] [Thread-129913] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:45.731 [INFO] [Thread-129913] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:45.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-28T16:45:45.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:46.667 [DEBUG] [Thread-129913] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:46.667 [DEBUG] [Thread-129913] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:46.715 [DEBUG] [Thread-129913] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:46.715 [DEBUG] [Thread-129913] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:46.724 [DEBUG] [Thread-129913] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:46.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:46.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-28T16:45:46.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-28T16:45:46.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:46.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:46.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:46.758 [DEBUG] [Thread-129913] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:49.213 [DEBUG] [Thread-129915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:45:56.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:45:56.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:45:56.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:45:57.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 45, 36), 15.12, 36.3, 0.0, 17.01, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:45:57.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:45:36
2025-09-28T16:45:57.456 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:45:57.608 [DEBUG] [Thread-129916] [transport.py] [_log()] starting thread (client mode): 0x2b9b8220
2025-09-28T16:45:57.608 [DEBUG] [Thread-129916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:57.621 [DEBUG] [Thread-129916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:45:57.622 [INFO] [Thread-129916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] Compression: none
2025-09-28T16:45:57.625 [DEBUG] [Thread-129916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:57.641 [DEBUG] [Thread-129916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:57.642 [DEBUG] [Thread-129916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:57.642 [DEBUG] [Thread-129916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:45:57.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:45:57.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:57.643 [DEBUG] [Thread-129916] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:57.644 [DEBUG] [Thread-129916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:57.644 [DEBUG] [Thread-129916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:57.644 [DEBUG] [Thread-129916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:45:57.644 [DEBUG] [Thread-129916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:57.656 [INFO] [Thread-129916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:57.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:58.290 [DEBUG] [Thread-129916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:58.290 [DEBUG] [Thread-129916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:58.290 [DEBUG] [Thread-129916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:45:58.331 [DEBUG] [Thread-129916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:58.331 [DEBUG] [Thread-129916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:58.333 [DEBUG] [Thread-129916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:58.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:58.344 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:45:58.345 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:45:58.346 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:45:58.349 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:58.350 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:45:58.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615012 -999.00  +17.30  11.48     41   +4.20 1 1 1 1 1   887    0 10.85 -97.61 ----- 11.5 11.5 201.2 22.1 21.9 -28.0 21.4 -27.8 23.2 -26.5 23.9 -28.6
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615012
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:45:58.350 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:45:36', tmtdew=15.12, humidity=36.3, cloud=0.0, wind=17.01, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:45:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:45:58.351 [DEBUG] [Thread-129916] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:45:58.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-28T16:45:58.439 [DEBUG] [Thread-129919] [transport.py] [_log()] starting thread (client mode): 0x2e3c2710
2025-09-28T16:45:58.439 [DEBUG] [Thread-129919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:45:58.454 [DEBUG] [Thread-129919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:45:58.454 [INFO] [Thread-129919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] client lang: <none>
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] server lang: <none>
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] kex follows: False
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] Compression: none
2025-09-28T16:45:58.462 [DEBUG] [Thread-129919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:45:58.517 [DEBUG] [Thread-129919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:45:58.517 [DEBUG] [Thread-129919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:45:58.517 [DEBUG] [Thread-129919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:45:58.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:45:58.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:45:58.574 [DEBUG] [Thread-129919] [transport.py] [_log()] userauth is OK
2025-09-28T16:45:58.574 [DEBUG] [Thread-129919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:45:58.574 [DEBUG] [Thread-129919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:45:58.574 [DEBUG] [Thread-129919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:45:58.574 [DEBUG] [Thread-129919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:45:58.588 [INFO] [Thread-129919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:45:58.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-28T16:45:58.589 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:45:59.554 [DEBUG] [Thread-129919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:45:59.554 [DEBUG] [Thread-129919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:45:59.602 [DEBUG] [Thread-129919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:45:59.602 [DEBUG] [Thread-129919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:45:59.610 [DEBUG] [Thread-129919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:45:59.618 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:45:59.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-28T16:45:59.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-28T16:45:59.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:45:59.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:45:59.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:45:59.641 [DEBUG] [Thread-129919] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:04.254 [DEBUG] [Thread-129921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:09.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:46:09.644 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:46:09.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-28T16:46:10.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 45, 36), 15.12, 36.3, 0.0, 17.01, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:46:10.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:45:36
2025-09-28T16:46:10.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:46:10.495 [DEBUG] [Thread-129922] [transport.py] [_log()] starting thread (client mode): 0x2b92ae90
2025-09-28T16:46:10.495 [DEBUG] [Thread-129922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:10.518 [DEBUG] [Thread-129922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:46:10.518 [INFO] [Thread-129922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:10.521 [DEBUG] [Thread-129922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:10.522 [DEBUG] [Thread-129922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:10.522 [DEBUG] [Thread-129922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:10.522 [DEBUG] [Thread-129922] [transport.py] [_log()] Compression: none
2025-09-28T16:46:10.522 [DEBUG] [Thread-129922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:10.538 [DEBUG] [Thread-129922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:10.539 [DEBUG] [Thread-129922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:10.539 [DEBUG] [Thread-129922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:46:10.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:46:10.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:10.542 [DEBUG] [Thread-129922] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:10.542 [DEBUG] [Thread-129922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:10.542 [DEBUG] [Thread-129922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:10.542 [DEBUG] [Thread-129922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:46:10.542 [DEBUG] [Thread-129922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:10.563 [INFO] [Thread-129922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:10.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:11.346 [DEBUG] [Thread-129922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:11.346 [DEBUG] [Thread-129922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:11.346 [DEBUG] [Thread-129922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:46:11.387 [DEBUG] [Thread-129922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:11.387 [DEBUG] [Thread-129922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:11.390 [DEBUG] [Thread-129922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:11.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:11.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:46:11.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:46:11.406 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:46:11.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:11.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:46:11.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:11.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615012 -999.00  +17.30  11.48     41   +4.20 1 1 1 1 1   887    0 10.85 -97.61 ----- 11.5 11.5 201.2 22.1 21.9 -28.0 21.4 -27.8 23.2 -26.5 23.9 -28.6
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615012
2025-09-28T16:46:11.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:46:11.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:46:11.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:46:11.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:46:11.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:46:11.414 [DEBUG] [Thread-129922] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:11.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:45:36', tmtdew=15.12, humidity=36.3, cloud=0.0, wind=17.01, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:45:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:46:11.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-28T16:46:11.511 [DEBUG] [Thread-129925] [transport.py] [_log()] starting thread (client mode): 0x2b9563b0
2025-09-28T16:46:11.511 [DEBUG] [Thread-129925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:11.527 [DEBUG] [Thread-129925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:46:11.527 [INFO] [Thread-129925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:46:11.534 [DEBUG] [Thread-129925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:11.535 [DEBUG] [Thread-129925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:11.536 [DEBUG] [Thread-129925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:11.537 [DEBUG] [Thread-129925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:11.537 [DEBUG] [Thread-129925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:11.537 [DEBUG] [Thread-129925] [transport.py] [_log()] Compression: none
2025-09-28T16:46:11.537 [DEBUG] [Thread-129925] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:11.595 [DEBUG] [Thread-129925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:11.596 [DEBUG] [Thread-129925] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:11.596 [DEBUG] [Thread-129925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:46:11.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:46:11.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:11.651 [DEBUG] [Thread-129925] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:11.651 [DEBUG] [Thread-129925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:11.652 [DEBUG] [Thread-129925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:11.652 [DEBUG] [Thread-129925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:46:11.652 [DEBUG] [Thread-129925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:11.677 [INFO] [Thread-129925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:11.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-28T16:46:11.678 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:12.606 [DEBUG] [Thread-129925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:12.606 [DEBUG] [Thread-129925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:12.654 [DEBUG] [Thread-129925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:12.654 [DEBUG] [Thread-129925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:12.663 [DEBUG] [Thread-129925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:12.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:12.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-28T16:46:12.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-28T16:46:12.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:12.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:12.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:12.698 [DEBUG] [Thread-129925] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:19.296 [DEBUG] [Thread-129927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:21.894 [DEBUG] [Thread-129928 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:22.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:46:22.691 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:46:22.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-28T16:46:23.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:23.048 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 46, 8), 15.15, 36.25, 0.0, 19.69, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:46:23.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:46:08
2025-09-28T16:46:23.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:46:23.512 [DEBUG] [Thread-129929] [transport.py] [_log()] starting thread (client mode): 0x2e3c0100
2025-09-28T16:46:23.512 [DEBUG] [Thread-129929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:23.532 [DEBUG] [Thread-129929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:46:23.532 [INFO] [Thread-129929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:23.535 [DEBUG] [Thread-129929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] Compression: none
2025-09-28T16:46:23.536 [DEBUG] [Thread-129929] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:23.552 [DEBUG] [Thread-129929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:23.553 [DEBUG] [Thread-129929] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:23.553 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:46:23.554 [DEBUG] [Thread-129929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:46:23.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:23.556 [DEBUG] [Thread-129929] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:23.556 [DEBUG] [Thread-129929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:23.556 [DEBUG] [Thread-129929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:23.556 [DEBUG] [Thread-129929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:46:23.556 [DEBUG] [Thread-129929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:23.579 [INFO] [Thread-129929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:23.580 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:24.348 [DEBUG] [Thread-129929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:24.349 [DEBUG] [Thread-129929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:24.349 [DEBUG] [Thread-129929] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:46:24.389 [DEBUG] [Thread-129929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:24.389 [DEBUG] [Thread-129929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:24.392 [DEBUG] [Thread-129929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:24.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:24.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:46:24.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:46:24.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:46:24.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:24.411 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:46:24.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:24.411 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:24.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:46:24.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615012 -999.00  +17.30  11.48     41   +4.20 1 1 1 1 1   887    0 10.85 -97.61 ----- 11.5 11.5 201.2 22.1 21.9 -28.0 21.4 -27.8 23.2 -26.5 23.9 -28.6
2025-09-28T16:46:24.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:46:24.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:46:24.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615012
2025-09-28T16:46:24.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:46:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:46:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:46:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:46:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:46:24.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:46:08', tmtdew=15.15, humidity=36.25, cloud=0.0, wind=19.69, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:45:37.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:46:24.413 [DEBUG] [Thread-129929] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:24.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-28T16:46:24.507 [DEBUG] [Thread-129932] [transport.py] [_log()] starting thread (client mode): 0x2b92a290
2025-09-28T16:46:24.507 [DEBUG] [Thread-129932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:24.523 [DEBUG] [Thread-129932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:46:24.523 [INFO] [Thread-129932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:46:24.530 [DEBUG] [Thread-129932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:24.530 [DEBUG] [Thread-129932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] Compression: none
2025-09-28T16:46:24.531 [DEBUG] [Thread-129932] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:24.587 [DEBUG] [Thread-129932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:24.587 [DEBUG] [Thread-129932] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:24.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:46:24.588 [DEBUG] [Thread-129932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:46:24.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:24.645 [DEBUG] [Thread-129932] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:24.646 [DEBUG] [Thread-129932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:24.646 [DEBUG] [Thread-129932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:24.646 [DEBUG] [Thread-129932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:46:24.646 [DEBUG] [Thread-129932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:24.669 [INFO] [Thread-129932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:24.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-28T16:46:24.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:25.650 [DEBUG] [Thread-129932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:25.650 [DEBUG] [Thread-129932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:25.698 [DEBUG] [Thread-129932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:25.698 [DEBUG] [Thread-129932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:25.707 [DEBUG] [Thread-129932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:25.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:25.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-28T16:46:25.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-28T16:46:25.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:25.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:25.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:25.743 [DEBUG] [Thread-129932] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:34.324 [DEBUG] [Thread-129934 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:35.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:46:35.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:46:35.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-28T16:46:36.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 46, 8), 15.15, 36.25, 0.0, 19.69, 17.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:46:36.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:46:08
2025-09-28T16:46:36.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:46:36.595 [DEBUG] [Thread-129935] [transport.py] [_log()] starting thread (client mode): 0x2b96fe50
2025-09-28T16:46:36.595 [DEBUG] [Thread-129935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:36.616 [DEBUG] [Thread-129935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:46:36.616 [INFO] [Thread-129935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:46:36.619 [DEBUG] [Thread-129935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:36.619 [DEBUG] [Thread-129935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] Compression: none
2025-09-28T16:46:36.620 [DEBUG] [Thread-129935] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:36.636 [DEBUG] [Thread-129935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:36.636 [DEBUG] [Thread-129935] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:36.636 [DEBUG] [Thread-129935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:46:36.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:46:36.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:36.637 [DEBUG] [Thread-129935] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:36.637 [DEBUG] [Thread-129935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:36.637 [DEBUG] [Thread-129935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:36.638 [DEBUG] [Thread-129935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:46:36.638 [DEBUG] [Thread-129935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:36.655 [INFO] [Thread-129935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:36.655 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:37.248 [DEBUG] [Thread-129935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:37.248 [DEBUG] [Thread-129935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:37.249 [DEBUG] [Thread-129935] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:46:37.290 [DEBUG] [Thread-129935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:37.290 [DEBUG] [Thread-129935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:37.292 [DEBUG] [Thread-129935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:37.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:37.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:46:37.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:46:37.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:37.309 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:46:37.309 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615359 -999.00  +17.30  17.18     42   +4.30 1 1 1 1 1   887    0 11.08 -95.94 ----- 17.2 17.2 198.0 20.3 21.9 -28.0 21.4 -27.0 23.2 -26.4 23.9 -29.2
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:46:37.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615359
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:46:37.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:46:08', tmtdew=15.15, humidity=36.25, cloud=0.0, wind=19.69, temperature=17.3, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:46:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:46:37.310 [DEBUG] [Thread-129935] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:37.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:46:37.396 [DEBUG] [Thread-129938] [transport.py] [_log()] starting thread (client mode): 0x2e3c29b0
2025-09-28T16:46:37.397 [DEBUG] [Thread-129938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:37.412 [DEBUG] [Thread-129938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:46:37.412 [INFO] [Thread-129938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:37.419 [DEBUG] [Thread-129938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:37.420 [DEBUG] [Thread-129938] [transport.py] [_log()] Compression: none
2025-09-28T16:46:37.420 [DEBUG] [Thread-129938] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:37.477 [DEBUG] [Thread-129938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:37.477 [DEBUG] [Thread-129938] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:37.477 [DEBUG] [Thread-129938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:46:37.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:46:37.477 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:37.534 [DEBUG] [Thread-129938] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:37.534 [DEBUG] [Thread-129938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:37.534 [DEBUG] [Thread-129938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:37.534 [DEBUG] [Thread-129938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:46:37.535 [DEBUG] [Thread-129938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:37.551 [INFO] [Thread-129938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:37.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-28T16:46:37.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:38.573 [DEBUG] [Thread-129938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:38.573 [DEBUG] [Thread-129938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:38.620 [DEBUG] [Thread-129938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:38.620 [DEBUG] [Thread-129938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:38.629 [DEBUG] [Thread-129938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:38.638 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:38.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-28T16:46:38.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-28T16:46:38.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:38.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:38.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:38.668 [DEBUG] [Thread-129938] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:48.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:46:48.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:46:48.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-28T16:46:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 46, 40), 14.9, 36.87, 0.0, 18.93, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:46:49.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:46:40
2025-09-28T16:46:49.355 [DEBUG] [Thread-129940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:46:49.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:46:49.511 [DEBUG] [Thread-129941] [transport.py] [_log()] starting thread (client mode): 0x2e3c2b90
2025-09-28T16:46:49.511 [DEBUG] [Thread-129941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:49.531 [DEBUG] [Thread-129941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:46:49.531 [INFO] [Thread-129941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:49.535 [DEBUG] [Thread-129941] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] Compression: none
2025-09-28T16:46:49.536 [DEBUG] [Thread-129941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:49.553 [DEBUG] [Thread-129941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:49.554 [DEBUG] [Thread-129941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:49.554 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:46:49.555 [DEBUG] [Thread-129941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:46:49.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:49.596 [DEBUG] [Thread-129941] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:49.597 [DEBUG] [Thread-129941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:49.597 [DEBUG] [Thread-129941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:49.597 [DEBUG] [Thread-129941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:46:49.597 [DEBUG] [Thread-129941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:49.628 [INFO] [Thread-129941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:49.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:50.430 [DEBUG] [Thread-129941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:50.430 [DEBUG] [Thread-129941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:50.430 [DEBUG] [Thread-129941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:46:50.471 [DEBUG] [Thread-129941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:50.471 [DEBUG] [Thread-129941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:50.474 [DEBUG] [Thread-129941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:50.486 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:50.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:46:50.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:46:50.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:46:50.495 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:50.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:46:50.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615359 -999.00  +17.30  17.18     42   +4.30 1 1 1 1 1   887    0 11.08 -95.94 ----- 17.2 17.2 198.0 20.3 21.9 -28.0 21.4 -27.0 23.2 -26.4 23.9 -29.2
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:46:50.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615359
2025-09-28T16:46:50.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:46:50.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:46:50.499 [DEBUG] [Thread-129941] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:46:50.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:46:50.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:46:50.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:46:50.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:46:40', tmtdew=14.9, humidity=36.87, cloud=0.0, wind=18.93, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:46:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:46:50.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-28T16:46:50.592 [DEBUG] [Thread-129944] [transport.py] [_log()] starting thread (client mode): 0x2b96e8f0
2025-09-28T16:46:50.592 [DEBUG] [Thread-129944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:46:50.607 [DEBUG] [Thread-129944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:46:50.607 [INFO] [Thread-129944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:46:50.614 [DEBUG] [Thread-129944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:46:50.615 [DEBUG] [Thread-129944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] client lang: <none>
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] server lang: <none>
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] kex follows: False
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:46:50.616 [DEBUG] [Thread-129944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:46:50.617 [DEBUG] [Thread-129944] [transport.py] [_log()] Compression: none
2025-09-28T16:46:50.617 [DEBUG] [Thread-129944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:46:50.679 [DEBUG] [Thread-129944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:46:50.680 [DEBUG] [Thread-129944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:46:50.680 [DEBUG] [Thread-129944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:46:50.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:46:50.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:46:50.736 [DEBUG] [Thread-129944] [transport.py] [_log()] userauth is OK
2025-09-28T16:46:50.736 [DEBUG] [Thread-129944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:46:50.736 [DEBUG] [Thread-129944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:46:50.737 [DEBUG] [Thread-129944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:46:50.737 [DEBUG] [Thread-129944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:46:50.756 [INFO] [Thread-129944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:46:50.756 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:46:50.757 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:46:51.733 [DEBUG] [Thread-129944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:46:51.733 [DEBUG] [Thread-129944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:46:51.781 [DEBUG] [Thread-129944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:46:51.781 [DEBUG] [Thread-129944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:46:51.790 [DEBUG] [Thread-129944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:46:51.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:46:51.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-28T16:46:51.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-28T16:46:51.816 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:46:51.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:46:51.817 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:46:51.824 [DEBUG] [Thread-129944] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:01.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:47:01.827 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:47:01.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-28T16:47:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 46, 40), 14.9, 36.87, 0.0, 18.93, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:47:02.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:46:40
2025-09-28T16:47:02.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:47:02.656 [DEBUG] [Thread-129946] [transport.py] [_log()] starting thread (client mode): 0x2b929d80
2025-09-28T16:47:02.656 [DEBUG] [Thread-129946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:02.674 [DEBUG] [Thread-129946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:47:02.674 [INFO] [Thread-129946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:02.675 [DEBUG] [Thread-129946] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] Compression: none
2025-09-28T16:47:02.676 [DEBUG] [Thread-129946] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:02.687 [DEBUG] [Thread-129946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:02.687 [DEBUG] [Thread-129946] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:02.687 [DEBUG] [Thread-129946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:47:02.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:47:02.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:02.689 [DEBUG] [Thread-129946] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:02.690 [DEBUG] [Thread-129946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:02.690 [DEBUG] [Thread-129946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:02.690 [DEBUG] [Thread-129946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:47:02.690 [DEBUG] [Thread-129946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:02.707 [INFO] [Thread-129946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:02.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:03.375 [DEBUG] [Thread-129946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:03.375 [DEBUG] [Thread-129946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:03.376 [DEBUG] [Thread-129946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:47:03.416 [DEBUG] [Thread-129946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:03.416 [DEBUG] [Thread-129946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:03.419 [DEBUG] [Thread-129946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:03.431 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:03.431 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:47:03.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:47:03.435 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:47:03.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:03.442 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:47:03.442 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:03.442 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:03.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:47:03.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615706 -999.00  +17.40  13.31     42   +4.30 1 1 1 1 1   887    0 11.04 -95.83 ----- 13.3 13.3 199.7 19.3 21.9 -28.6 21.4 -26.7 23.1 -27.4 23.9 -29.3
2025-09-28T16:47:03.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:47:03.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:47:03.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615706
2025-09-28T16:47:03.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:47:03.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:47:03.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:47:03.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:47:03.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:47:03.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:46:40', tmtdew=14.9, humidity=36.87, cloud=0.0, wind=18.93, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:46:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:47:03.444 [DEBUG] [Thread-129946] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:03.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-28T16:47:03.540 [DEBUG] [Thread-129949] [transport.py] [_log()] starting thread (client mode): 0x2b929450
2025-09-28T16:47:03.540 [DEBUG] [Thread-129949] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:03.555 [DEBUG] [Thread-129949] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:47:03.555 [INFO] [Thread-129949] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:47:03.562 [DEBUG] [Thread-129949] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:03.562 [DEBUG] [Thread-129949] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:47:03.562 [DEBUG] [Thread-129949] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] Compression: none
2025-09-28T16:47:03.563 [DEBUG] [Thread-129949] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:03.618 [DEBUG] [Thread-129949] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:03.619 [DEBUG] [Thread-129949] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:03.619 [DEBUG] [Thread-129949] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:47:03.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:47:03.620 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:03.675 [DEBUG] [Thread-129949] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:03.675 [DEBUG] [Thread-129949] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:03.675 [DEBUG] [Thread-129949] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:03.675 [DEBUG] [Thread-129949] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:47:03.675 [DEBUG] [Thread-129949] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:03.694 [INFO] [Thread-129949] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:03.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-28T16:47:03.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:04.391 [DEBUG] [Thread-129951 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:04.641 [DEBUG] [Thread-129949] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:04.642 [DEBUG] [Thread-129949] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:04.689 [DEBUG] [Thread-129949] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:04.689 [DEBUG] [Thread-129949] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:04.698 [DEBUG] [Thread-129949] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:04.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:04.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-28T16:47:04.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-28T16:47:04.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:04.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:04.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:04.732 [DEBUG] [Thread-129949] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:14.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:47:14.734 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:47:14.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-28T16:47:15.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 46, 40), 14.9, 36.87, 0.0, 18.93, 17.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:47:15.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:46:40
2025-09-28T16:47:15.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:47:15.632 [DEBUG] [Thread-129952] [transport.py] [_log()] starting thread (client mode): 0x2b94fbe0
2025-09-28T16:47:15.632 [DEBUG] [Thread-129952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:15.652 [DEBUG] [Thread-129952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:47:15.652 [INFO] [Thread-129952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] Compression: none
2025-09-28T16:47:15.655 [DEBUG] [Thread-129952] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:15.670 [DEBUG] [Thread-129952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:15.670 [DEBUG] [Thread-129952] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:15.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:47:15.670 [DEBUG] [Thread-129952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:47:15.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:15.671 [DEBUG] [Thread-129952] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:15.671 [DEBUG] [Thread-129952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:15.671 [DEBUG] [Thread-129952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:15.671 [DEBUG] [Thread-129952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:47:15.671 [DEBUG] [Thread-129952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:15.684 [INFO] [Thread-129952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:15.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:16.474 [DEBUG] [Thread-129952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:16.474 [DEBUG] [Thread-129952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:16.474 [DEBUG] [Thread-129952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:47:16.515 [DEBUG] [Thread-129952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:16.515 [DEBUG] [Thread-129952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:16.517 [DEBUG] [Thread-129952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:16.530 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:16.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:47:16.531 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:47:16.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:47:16.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:16.534 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:47:16.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615706 -999.00  +17.40  13.31     42   +4.30 1 1 1 1 1   887    0 11.04 -95.83 ----- 13.3 13.3 199.7 19.3 21.9 -28.6 21.4 -26.7 23.1 -27.4 23.9 -29.3
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615706
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:47:16.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:46:40', tmtdew=14.9, humidity=36.87, cloud=0.0, wind=18.93, temperature=17.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:46:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:47:16.536 [DEBUG] [Thread-129952] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:16.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-28T16:47:16.620 [DEBUG] [Thread-129955] [transport.py] [_log()] starting thread (client mode): 0x2b96d0c0
2025-09-28T16:47:16.620 [DEBUG] [Thread-129955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:16.634 [DEBUG] [Thread-129955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:47:16.635 [INFO] [Thread-129955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] Compression: none
2025-09-28T16:47:16.642 [DEBUG] [Thread-129955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:16.697 [DEBUG] [Thread-129955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:16.697 [DEBUG] [Thread-129955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:16.697 [DEBUG] [Thread-129955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:47:16.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:47:16.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:16.755 [DEBUG] [Thread-129955] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:16.755 [DEBUG] [Thread-129955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:16.755 [DEBUG] [Thread-129955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:16.755 [DEBUG] [Thread-129955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:47:16.755 [DEBUG] [Thread-129955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:16.768 [INFO] [Thread-129955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:16.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-28T16:47:16.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:17.708 [DEBUG] [Thread-129955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:17.708 [DEBUG] [Thread-129955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:17.756 [DEBUG] [Thread-129955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:17.756 [DEBUG] [Thread-129955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:17.765 [DEBUG] [Thread-129955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:17.773 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:17.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-28T16:47:17.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-28T16:47:17.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:17.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:17.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:17.799 [DEBUG] [Thread-129955] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:19.432 [DEBUG] [Thread-129957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:21.944 [DEBUG] [Thread-129958 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:23.189 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:23.191 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:27.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:47:27.798 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:47:27.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-28T16:47:28.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 47, 11), 14.97, 36.7, 0.0, 20.94, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:47:28.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:47:11
2025-09-28T16:47:28.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:47:28.620 [DEBUG] [Thread-129959] [transport.py] [_log()] starting thread (client mode): 0x2b96e8f0
2025-09-28T16:47:28.621 [DEBUG] [Thread-129959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:28.641 [DEBUG] [Thread-129959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:47:28.641 [INFO] [Thread-129959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:47:28.643 [DEBUG] [Thread-129959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:28.644 [DEBUG] [Thread-129959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] Compression: none
2025-09-28T16:47:28.645 [DEBUG] [Thread-129959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:28.663 [DEBUG] [Thread-129959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:28.664 [DEBUG] [Thread-129959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:28.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:47:28.665 [DEBUG] [Thread-129959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:47:28.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:28.667 [DEBUG] [Thread-129959] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:28.667 [DEBUG] [Thread-129959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:28.667 [DEBUG] [Thread-129959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:28.668 [DEBUG] [Thread-129959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:47:28.668 [DEBUG] [Thread-129959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:28.691 [INFO] [Thread-129959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:28.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:29.474 [DEBUG] [Thread-129959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:29.474 [DEBUG] [Thread-129959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:29.475 [DEBUG] [Thread-129959] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:47:29.515 [DEBUG] [Thread-129959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:29.516 [DEBUG] [Thread-129959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:29.519 [DEBUG] [Thread-129959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:29.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:29.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:47:29.533 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:47:29.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:47:29.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:29.551 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:47:29.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:29.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.615706 -999.00  +17.40  13.31     42   +4.30 1 1 1 1 1   887    0 11.04 -95.83 ----- 13.3 13.3 199.7 19.3 21.9 -28.6 21.4 -26.7 23.1 -27.4 23.9 -29.3
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.615706
2025-09-28T16:47:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:47:29.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:47:29.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:47:29.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:47:29.553 [DEBUG] [Thread-129959] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:29.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:47:29.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:47:11', tmtdew=14.97, humidity=36.7, cloud=0.0, wind=20.94, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:46:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:47:29.640 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:47:29.651 [DEBUG] [Thread-129962] [transport.py] [_log()] starting thread (client mode): 0x2b94cd60
2025-09-28T16:47:29.651 [DEBUG] [Thread-129962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:29.666 [DEBUG] [Thread-129962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:47:29.666 [INFO] [Thread-129962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:47:29.673 [DEBUG] [Thread-129962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:29.674 [DEBUG] [Thread-129962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:29.675 [DEBUG] [Thread-129962] [transport.py] [_log()] Compression: none
2025-09-28T16:47:29.675 [DEBUG] [Thread-129962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:29.730 [DEBUG] [Thread-129962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:29.731 [DEBUG] [Thread-129962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:29.731 [DEBUG] [Thread-129962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:47:29.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:47:29.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:29.787 [DEBUG] [Thread-129962] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:29.787 [DEBUG] [Thread-129962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:29.787 [DEBUG] [Thread-129962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:29.787 [DEBUG] [Thread-129962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:47:29.787 [DEBUG] [Thread-129962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:29.805 [INFO] [Thread-129962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:29.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-28T16:47:29.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:30.779 [DEBUG] [Thread-129962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:30.779 [DEBUG] [Thread-129962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:30.827 [DEBUG] [Thread-129962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:30.827 [DEBUG] [Thread-129962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:30.835 [DEBUG] [Thread-129962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:30.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:30.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-28T16:47:30.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-28T16:47:30.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:30.860 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:30.860 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:30.868 [DEBUG] [Thread-129962] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:34.466 [DEBUG] [Thread-129964 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:40.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:47:40.870 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:47:40.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-28T16:47:41.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 47, 11), 14.97, 36.7, 0.0, 20.94, 17.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:47:41.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:47:11
2025-09-28T16:47:41.541 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:47:41.692 [DEBUG] [Thread-129965] [transport.py] [_log()] starting thread (client mode): 0x2b929d80
2025-09-28T16:47:41.693 [DEBUG] [Thread-129965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:41.712 [DEBUG] [Thread-129965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:47:41.712 [INFO] [Thread-129965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:47:41.715 [DEBUG] [Thread-129965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:41.715 [DEBUG] [Thread-129965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:41.716 [DEBUG] [Thread-129965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:41.717 [DEBUG] [Thread-129965] [transport.py] [_log()] Compression: none
2025-09-28T16:47:41.717 [DEBUG] [Thread-129965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:41.734 [DEBUG] [Thread-129965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:41.734 [DEBUG] [Thread-129965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:41.735 [DEBUG] [Thread-129965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:47:41.735 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:47:41.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:41.737 [DEBUG] [Thread-129965] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:41.738 [DEBUG] [Thread-129965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:41.738 [DEBUG] [Thread-129965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:41.738 [DEBUG] [Thread-129965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:47:41.738 [DEBUG] [Thread-129965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:41.756 [INFO] [Thread-129965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:41.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:42.407 [DEBUG] [Thread-129965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:42.407 [DEBUG] [Thread-129965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:42.408 [DEBUG] [Thread-129965] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:47:42.448 [DEBUG] [Thread-129965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:42.448 [DEBUG] [Thread-129965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:42.451 [DEBUG] [Thread-129965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:42.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:42.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:47:42.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:47:42.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:47:42.472 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:42.474 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:47:42.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:42.474 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:47:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.616053 -999.00  +17.40  21.59     42   +4.30 1 1 1 1 1   887    0 10.62 -98.02 ----- 21.6 21.6 210.8 24.7 21.9 -27.5 21.4 -28.4 23.1 -26.6 23.9 -28.7
2025-09-28T16:47:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:47:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:47:42.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.616053
2025-09-28T16:47:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:47:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:47:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:47:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:47:42.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:47:42.477 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:47:11', tmtdew=14.97, humidity=36.7, cloud=0.0, wind=20.94, temperature=17.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:47:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:47:42.477 [DEBUG] [Thread-129965] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:42.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-28T16:47:42.573 [DEBUG] [Thread-129968] [transport.py] [_log()] starting thread (client mode): 0x2b92a410
2025-09-28T16:47:42.573 [DEBUG] [Thread-129968] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:42.588 [DEBUG] [Thread-129968] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:47:42.588 [INFO] [Thread-129968] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:42.596 [DEBUG] [Thread-129968] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:42.597 [DEBUG] [Thread-129968] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:42.597 [DEBUG] [Thread-129968] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:42.597 [DEBUG] [Thread-129968] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:42.597 [DEBUG] [Thread-129968] [transport.py] [_log()] Compression: none
2025-09-28T16:47:42.597 [DEBUG] [Thread-129968] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:42.654 [DEBUG] [Thread-129968] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:42.655 [DEBUG] [Thread-129968] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:42.655 [DEBUG] [Thread-129968] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:47:42.655 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:47:42.656 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:42.711 [DEBUG] [Thread-129968] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:42.711 [DEBUG] [Thread-129968] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:42.711 [DEBUG] [Thread-129968] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:42.711 [DEBUG] [Thread-129968] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:47:42.711 [DEBUG] [Thread-129968] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:42.735 [INFO] [Thread-129968] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:42.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:47:42.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:43.676 [DEBUG] [Thread-129968] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:43.677 [DEBUG] [Thread-129968] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:43.724 [DEBUG] [Thread-129968] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:43.724 [DEBUG] [Thread-129968] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:43.733 [DEBUG] [Thread-129968] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:43.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:43.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-28T16:47:43.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-28T16:47:43.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:43.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:43.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:43.767 [DEBUG] [Thread-129968] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:49.507 [DEBUG] [Thread-129970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:47:53.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:47:53.769 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:47:53.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-28T16:47:54.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 47, 46), 14.65, 37.71, 0.0, 23.03, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:47:54.346 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:47:46
2025-09-28T16:47:54.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:47:54.613 [DEBUG] [Thread-129971] [transport.py] [_log()] starting thread (client mode): 0x2b96cc10
2025-09-28T16:47:54.614 [DEBUG] [Thread-129971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:54.634 [DEBUG] [Thread-129971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:47:54.634 [INFO] [Thread-129971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:47:54.635 [DEBUG] [Thread-129971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] Compression: none
2025-09-28T16:47:54.636 [DEBUG] [Thread-129971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:54.647 [DEBUG] [Thread-129971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:54.647 [DEBUG] [Thread-129971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:54.647 [DEBUG] [Thread-129971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:47:54.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:47:54.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:54.648 [DEBUG] [Thread-129971] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:54.648 [DEBUG] [Thread-129971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:54.648 [DEBUG] [Thread-129971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:54.648 [DEBUG] [Thread-129971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:47:54.648 [DEBUG] [Thread-129971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:54.665 [INFO] [Thread-129971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:54.665 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:55.441 [DEBUG] [Thread-129971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:55.441 [DEBUG] [Thread-129971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:55.442 [DEBUG] [Thread-129971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:47:55.482 [DEBUG] [Thread-129971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:55.482 [DEBUG] [Thread-129971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:55.486 [DEBUG] [Thread-129971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:55.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:55.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:47:55.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:47:55.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:47:55.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:55.507 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:47:55.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:55.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:55.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:47:55.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.616053 -999.00  +17.40  21.59     42   +4.30 1 1 1 1 1   887    0 10.62 -98.02 ----- 21.6 21.6 210.8 24.7 21.9 -27.5 21.4 -28.4 23.1 -26.6 23.9 -28.7
2025-09-28T16:47:55.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:47:55.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:47:55.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.616053
2025-09-28T16:47:55.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:47:55.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:47:55.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:47:55.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:47:55.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:47:55.510 [DEBUG] [Thread-129971] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:47:55.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:47:46', tmtdew=14.65, humidity=37.71, cloud=0.0, wind=23.03, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:47:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:47:55.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-28T16:47:55.607 [DEBUG] [Thread-129974] [transport.py] [_log()] starting thread (client mode): 0x2b96c8e0
2025-09-28T16:47:55.608 [DEBUG] [Thread-129974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:47:55.623 [DEBUG] [Thread-129974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:47:55.623 [INFO] [Thread-129974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] client lang: <none>
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] server lang: <none>
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] kex follows: False
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:47:55.631 [DEBUG] [Thread-129974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:47:55.632 [DEBUG] [Thread-129974] [transport.py] [_log()] Compression: none
2025-09-28T16:47:55.632 [DEBUG] [Thread-129974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:47:55.690 [DEBUG] [Thread-129974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:47:55.691 [DEBUG] [Thread-129974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:47:55.691 [DEBUG] [Thread-129974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:47:55.691 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:47:55.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:47:55.747 [DEBUG] [Thread-129974] [transport.py] [_log()] userauth is OK
2025-09-28T16:47:55.747 [DEBUG] [Thread-129974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:47:55.747 [DEBUG] [Thread-129974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:47:55.747 [DEBUG] [Thread-129974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:47:55.747 [DEBUG] [Thread-129974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:47:55.767 [INFO] [Thread-129974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:47:55.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-28T16:47:55.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:47:56.713 [DEBUG] [Thread-129974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:47:56.714 [DEBUG] [Thread-129974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:47:56.761 [DEBUG] [Thread-129974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:47:56.761 [DEBUG] [Thread-129974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:47:56.770 [DEBUG] [Thread-129974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:47:56.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:47:56.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-28T16:47:56.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-28T16:47:56.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:47:56.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:47:56.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:47:56.805 [DEBUG] [Thread-129974] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:04.557 [DEBUG] [Thread-129976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:06.802 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:48:06.802 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:48:06.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-28T16:48:07.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 47, 46), 14.65, 37.71, 0.0, 23.03, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:48:07.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:47:46
2025-09-28T16:48:07.478 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:48:07.627 [DEBUG] [Thread-129977] [transport.py] [_log()] starting thread (client mode): 0x2e3c3220
2025-09-28T16:48:07.628 [DEBUG] [Thread-129977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:07.647 [DEBUG] [Thread-129977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:48:07.648 [INFO] [Thread-129977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:07.651 [DEBUG] [Thread-129977] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] Compression: none
2025-09-28T16:48:07.652 [DEBUG] [Thread-129977] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:07.668 [DEBUG] [Thread-129977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:07.668 [DEBUG] [Thread-129977] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:07.669 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:48:07.669 [DEBUG] [Thread-129977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:48:07.670 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:07.671 [DEBUG] [Thread-129977] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:07.672 [DEBUG] [Thread-129977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:07.672 [DEBUG] [Thread-129977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:07.672 [DEBUG] [Thread-129977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:48:07.672 [DEBUG] [Thread-129977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:07.689 [INFO] [Thread-129977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:07.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:08.308 [DEBUG] [Thread-129977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:08.308 [DEBUG] [Thread-129977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:08.309 [DEBUG] [Thread-129977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:48:08.349 [DEBUG] [Thread-129977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:08.349 [DEBUG] [Thread-129977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:08.352 [DEBUG] [Thread-129977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:08.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:08.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:48:08.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:48:08.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:48:08.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:08.388 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:48:08.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.616400 -999.00  +17.40  20.94     42   +4.30 1 1 1 1 1   887    0 10.43 -105.22 ----- 20.9 20.9 198.0 22.5 21.9 -28.0 21.4 -29.9 23.1 -26.8 23.8 -29.2
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:48:08.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.616400
2025-09-28T16:48:08.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:48:08.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:48:08.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:48:08.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:48:08.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:48:08.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:47:46', tmtdew=14.65, humidity=37.71, cloud=0.0, wind=23.03, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:47:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:48:08.392 [DEBUG] [Thread-129977] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:08.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-28T16:48:08.487 [DEBUG] [Thread-129980] [transport.py] [_log()] starting thread (client mode): 0x2b928d90
2025-09-28T16:48:08.487 [DEBUG] [Thread-129980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:08.502 [DEBUG] [Thread-129980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:48:08.502 [INFO] [Thread-129980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:08.510 [DEBUG] [Thread-129980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] Compression: none
2025-09-28T16:48:08.511 [DEBUG] [Thread-129980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:08.566 [DEBUG] [Thread-129980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:08.567 [DEBUG] [Thread-129980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:08.567 [DEBUG] [Thread-129980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:48:08.567 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:48:08.568 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:08.623 [DEBUG] [Thread-129980] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:08.623 [DEBUG] [Thread-129980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:08.623 [DEBUG] [Thread-129980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:08.623 [DEBUG] [Thread-129980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:48:08.623 [DEBUG] [Thread-129980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:08.642 [INFO] [Thread-129980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:08.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-28T16:48:08.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:09.606 [DEBUG] [Thread-129980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:09.606 [DEBUG] [Thread-129980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:09.653 [DEBUG] [Thread-129980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:09.653 [DEBUG] [Thread-129980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:09.662 [DEBUG] [Thread-129980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:09.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:09.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-28T16:48:09.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-28T16:48:09.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:09.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:09.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:09.697 [DEBUG] [Thread-129980] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:19.597 [DEBUG] [Thread-129982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:19.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:48:19.699 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:48:19.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-28T16:48:20.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 47, 46), 14.65, 37.71, 0.0, 23.03, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:48:20.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:47:46
2025-09-28T16:48:20.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:48:20.560 [DEBUG] [Thread-129983] [transport.py] [_log()] starting thread (client mode): 0x2b94ebc0
2025-09-28T16:48:20.560 [DEBUG] [Thread-129983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:20.581 [DEBUG] [Thread-129983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:48:20.581 [INFO] [Thread-129983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:20.584 [DEBUG] [Thread-129983] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] Compression: none
2025-09-28T16:48:20.585 [DEBUG] [Thread-129983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:20.603 [DEBUG] [Thread-129983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:20.603 [DEBUG] [Thread-129983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:20.604 [DEBUG] [Thread-129983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:48:20.604 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:48:20.605 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:20.606 [DEBUG] [Thread-129983] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:20.606 [DEBUG] [Thread-129983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:20.607 [DEBUG] [Thread-129983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:20.607 [DEBUG] [Thread-129983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:48:20.607 [DEBUG] [Thread-129983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:20.624 [INFO] [Thread-129983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:20.625 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:21.393 [DEBUG] [Thread-129983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:21.394 [DEBUG] [Thread-129983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:21.394 [DEBUG] [Thread-129983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:48:21.435 [DEBUG] [Thread-129983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:21.436 [DEBUG] [Thread-129983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:21.438 [DEBUG] [Thread-129983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:21.452 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:21.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:48:21.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:48:21.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:48:21.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:21.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:48:21.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:21.464 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.616400 -999.00  +17.40  20.94     42   +4.30 1 1 1 1 1   887    0 10.43 -105.22 ----- 20.9 20.9 198.0 22.5 21.9 -28.0 21.4 -29.9 23.1 -26.8 23.8 -29.2
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.616400
2025-09-28T16:48:21.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:48:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:48:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:48:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:48:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:48:21.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:47:46', tmtdew=14.65, humidity=37.71, cloud=0.0, wind=23.03, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:47:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:48:21.467 [DEBUG] [Thread-129983] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:21.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-28T16:48:21.560 [DEBUG] [Thread-129986] [transport.py] [_log()] starting thread (client mode): 0x2b94de10
2025-09-28T16:48:21.561 [DEBUG] [Thread-129986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:21.575 [DEBUG] [Thread-129986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:48:21.575 [INFO] [Thread-129986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:48:21.583 [DEBUG] [Thread-129986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:21.583 [DEBUG] [Thread-129986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:48:21.583 [DEBUG] [Thread-129986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:21.583 [DEBUG] [Thread-129986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:21.583 [DEBUG] [Thread-129986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:21.584 [DEBUG] [Thread-129986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:21.585 [DEBUG] [Thread-129986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:21.585 [DEBUG] [Thread-129986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:21.585 [DEBUG] [Thread-129986] [transport.py] [_log()] Compression: none
2025-09-28T16:48:21.585 [DEBUG] [Thread-129986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:21.644 [DEBUG] [Thread-129986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:21.644 [DEBUG] [Thread-129986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:21.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:48:21.645 [DEBUG] [Thread-129986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:48:21.646 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:21.703 [DEBUG] [Thread-129986] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:21.703 [DEBUG] [Thread-129986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:21.703 [DEBUG] [Thread-129986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:21.703 [DEBUG] [Thread-129986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:48:21.703 [DEBUG] [Thread-129986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:21.722 [INFO] [Thread-129986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:21.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-28T16:48:21.722 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:21.996 [DEBUG] [Thread-129988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:22.666 [DEBUG] [Thread-129986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:22.666 [DEBUG] [Thread-129986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:22.714 [DEBUG] [Thread-129986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:22.714 [DEBUG] [Thread-129986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:22.723 [DEBUG] [Thread-129986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:22.732 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:22.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-28T16:48: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-28T16:48:22.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:22.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:22.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:22.759 [DEBUG] [Thread-129986] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:23.332 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:23.333 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:32.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:48:32.760 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:48:32.761 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:48:33.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 48, 18), 14.64, 37.75, 0.0, 24.05, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:48:33.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:48:18
2025-09-28T16:48:33.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:48:33.593 [DEBUG] [Thread-129989] [transport.py] [_log()] starting thread (client mode): 0x2b92a4d0
2025-09-28T16:48:33.593 [DEBUG] [Thread-129989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:33.613 [DEBUG] [Thread-129989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:48:33.613 [INFO] [Thread-129989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:33.617 [DEBUG] [Thread-129989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] Compression: none
2025-09-28T16:48:33.618 [DEBUG] [Thread-129989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:33.636 [DEBUG] [Thread-129989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:33.636 [DEBUG] [Thread-129989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:33.637 [DEBUG] [Thread-129989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:48:33.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:48:33.637 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:33.638 [DEBUG] [Thread-129989] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:33.639 [DEBUG] [Thread-129989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:33.639 [DEBUG] [Thread-129989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:33.639 [DEBUG] [Thread-129989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:48:33.639 [DEBUG] [Thread-129989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:33.662 [INFO] [Thread-129989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:33.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:34.504 [DEBUG] [Thread-129989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:34.504 [DEBUG] [Thread-129989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:34.505 [DEBUG] [Thread-129989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:48:34.545 [DEBUG] [Thread-129989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:34.546 [DEBUG] [Thread-129989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:34.549 [DEBUG] [Thread-129989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:34.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:34.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:48:34.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:48:34.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:48:34.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:34.572 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:48:34.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:34.572 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.616400 -999.00  +17.40  20.94     42   +4.30 1 1 1 1 1   887    0 10.43 -105.22 ----- 20.9 20.9 198.0 22.5 21.9 -28.0 21.4 -29.9 23.1 -26.8 23.8 -29.2
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.616400
2025-09-28T16:48:34.573 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:48:34.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:48:34.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:48:34.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:48:34.574 [DEBUG] [Thread-129989] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:34.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:48:34.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:48:18', tmtdew=14.64, humidity=37.75, cloud=0.0, wind=24.05, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:47:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:48:34.637 [DEBUG] [Thread-129992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:34.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-28T16:48:34.673 [DEBUG] [Thread-129993] [transport.py] [_log()] starting thread (client mode): 0x2b96c160
2025-09-28T16:48:34.673 [DEBUG] [Thread-129993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:34.687 [DEBUG] [Thread-129993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:48:34.687 [INFO] [Thread-129993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] Compression: none
2025-09-28T16:48:34.695 [DEBUG] [Thread-129993] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:34.754 [DEBUG] [Thread-129993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:34.755 [DEBUG] [Thread-129993] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:34.755 [DEBUG] [Thread-129993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:48:34.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:48:34.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:34.811 [DEBUG] [Thread-129993] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:34.811 [DEBUG] [Thread-129993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:34.811 [DEBUG] [Thread-129993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:34.811 [DEBUG] [Thread-129993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:48:34.811 [DEBUG] [Thread-129993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:34.829 [INFO] [Thread-129993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:34.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-28T16:48:34.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:35.783 [DEBUG] [Thread-129993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:35.783 [DEBUG] [Thread-129993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:35.831 [DEBUG] [Thread-129993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:35.831 [DEBUG] [Thread-129993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:35.839 [DEBUG] [Thread-129993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:35.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:35.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-28T16:48:35.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-28T16:48:35.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:35.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:35.863 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:35.871 [DEBUG] [Thread-129993] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:45.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:48:45.874 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:48:45.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-28T16:48:46.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 48, 18), 14.64, 37.75, 0.0, 24.05, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:48:46.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:48:18
2025-09-28T16:48:46.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:48:46.703 [DEBUG] [Thread-129995] [transport.py] [_log()] starting thread (client mode): 0x2b91e590
2025-09-28T16:48:46.704 [DEBUG] [Thread-129995] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:46.723 [DEBUG] [Thread-129995] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:48:46.723 [INFO] [Thread-129995] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:46.724 [DEBUG] [Thread-129995] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] Compression: none
2025-09-28T16:48:46.725 [DEBUG] [Thread-129995] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:46.744 [DEBUG] [Thread-129995] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:46.744 [DEBUG] [Thread-129995] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:46.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:48:46.745 [DEBUG] [Thread-129995] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:48:46.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:46.748 [DEBUG] [Thread-129995] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:46.748 [DEBUG] [Thread-129995] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:46.748 [DEBUG] [Thread-129995] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:46.748 [DEBUG] [Thread-129995] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:48:46.748 [DEBUG] [Thread-129995] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:46.767 [INFO] [Thread-129995] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:46.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:47.326 [DEBUG] [Thread-129995] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:47.327 [DEBUG] [Thread-129995] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:47.327 [DEBUG] [Thread-129995] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:48:47.367 [DEBUG] [Thread-129995] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:47.368 [DEBUG] [Thread-129995] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:47.370 [DEBUG] [Thread-129995] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:47.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48:47.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:48:47.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:48:47.386 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:48:47.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:47.394 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:48:47.394 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:47.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:47.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:48:47.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617095 -999.00  +17.20  13.44     42   +4.30 1 1 1 1 1   887    0 10.41 -96.57 ----- 13.4 13.4 188.6 21.3 21.8 -28.1 21.1 -30.6 22.9 -27.6 23.7 -28.6
2025-09-28T16:48:47.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:48:47.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:48:47.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617095
2025-09-28T16:48:47.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:48:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:48:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:48:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:48:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:48:47.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:48:18', tmtdew=14.64, humidity=37.75, cloud=0.0, wind=24.05, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:48:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:48:47.396 [DEBUG] [Thread-129995] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:47.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-28T16:48:47.491 [DEBUG] [Thread-129998] [transport.py] [_log()] starting thread (client mode): 0x2b91f400
2025-09-28T16:48:47.492 [DEBUG] [Thread-129998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:47.506 [DEBUG] [Thread-129998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:48:47.506 [INFO] [Thread-129998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:48:47.514 [DEBUG] [Thread-129998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:47.514 [DEBUG] [Thread-129998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] Compression: none
2025-09-28T16:48:47.515 [DEBUG] [Thread-129998] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:47.570 [DEBUG] [Thread-129998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:47.571 [DEBUG] [Thread-129998] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:47.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:48:47.572 [DEBUG] [Thread-129998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:48:47.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:47.627 [DEBUG] [Thread-129998] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:47.627 [DEBUG] [Thread-129998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:47.627 [DEBUG] [Thread-129998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:47.627 [DEBUG] [Thread-129998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:48:47.627 [DEBUG] [Thread-129998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:47.646 [INFO] [Thread-129998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:47.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-28T16:48:47.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:48:48.628 [DEBUG] [Thread-129998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:48:48.629 [DEBUG] [Thread-129998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:48:48.676 [DEBUG] [Thread-129998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:48:48.676 [DEBUG] [Thread-129998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:48:48.685 [DEBUG] [Thread-129998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:48:48.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:48: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-28T16:48: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-28T16:48:48.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:48:48.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:48:48.713 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:48:48.720 [DEBUG] [Thread-129998] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:48:49.671 [DEBUG] [Thread-130000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:48:58.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:48:58.723 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:48:58.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-28T16:48:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 48, 50), 14.41, 37.8, 0.0, 22.69, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:48:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:48:50
2025-09-28T16:48:59.404 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:48:59.551 [DEBUG] [Thread-130001] [transport.py] [_log()] starting thread (client mode): 0x2e3c3df0
2025-09-28T16:48:59.551 [DEBUG] [Thread-130001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:48:59.570 [DEBUG] [Thread-130001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:48:59.570 [INFO] [Thread-130001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] client lang: <none>
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] server lang: <none>
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] kex follows: False
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:48:59.573 [DEBUG] [Thread-130001] [transport.py] [_log()] Compression: none
2025-09-28T16:48:59.574 [DEBUG] [Thread-130001] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:48:59.588 [DEBUG] [Thread-130001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:48:59.589 [DEBUG] [Thread-130001] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:48:59.589 [DEBUG] [Thread-130001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:48:59.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:48:59.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:48:59.591 [DEBUG] [Thread-130001] [transport.py] [_log()] userauth is OK
2025-09-28T16:48:59.591 [DEBUG] [Thread-130001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:48:59.591 [DEBUG] [Thread-130001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:48:59.591 [DEBUG] [Thread-130001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:48:59.592 [DEBUG] [Thread-130001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:48:59.616 [INFO] [Thread-130001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:48:59.616 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:00.396 [DEBUG] [Thread-130001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:00.397 [DEBUG] [Thread-130001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:00.397 [DEBUG] [Thread-130001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:49:00.437 [DEBUG] [Thread-130001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:00.437 [DEBUG] [Thread-130001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:00.440 [DEBUG] [Thread-130001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:00.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:00.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:49:00.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:49:00.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:49:00.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:00.464 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:49:00.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617095 -999.00  +17.20  13.44     42   +4.30 1 1 1 1 1   887    0 10.41 -96.57 ----- 13.4 13.4 188.6 21.3 21.8 -28.1 21.1 -30.6 22.9 -27.6 23.7 -28.6
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:49:00.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617095
2025-09-28T16:49:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:49:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:49:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:49:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:49:00.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:49:00.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:48:50', tmtdew=14.41, humidity=37.8, cloud=0.0, wind=22.69, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:48:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:49:00.467 [DEBUG] [Thread-130001] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:00.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-28T16:49:00.562 [DEBUG] [Thread-130004] [transport.py] [_log()] starting thread (client mode): 0x2b9b8d00
2025-09-28T16:49:00.562 [DEBUG] [Thread-130004] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:00.578 [DEBUG] [Thread-130004] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:49:00.578 [INFO] [Thread-130004] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:49:00.585 [DEBUG] [Thread-130004] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:00.585 [DEBUG] [Thread-130004] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:49:00.585 [DEBUG] [Thread-130004] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] Compression: none
2025-09-28T16:49:00.586 [DEBUG] [Thread-130004] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:00.643 [DEBUG] [Thread-130004] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:00.643 [DEBUG] [Thread-130004] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:00.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:49:00.644 [DEBUG] [Thread-130004] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:49:00.645 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:00.699 [DEBUG] [Thread-130004] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:00.699 [DEBUG] [Thread-130004] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:00.699 [DEBUG] [Thread-130004] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:00.699 [DEBUG] [Thread-130004] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:49:00.699 [DEBUG] [Thread-130004] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:00.719 [INFO] [Thread-130004] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:00.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-28T16:49:00.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:01.722 [DEBUG] [Thread-130004] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:01.723 [DEBUG] [Thread-130004] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:01.770 [DEBUG] [Thread-130004] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:01.770 [DEBUG] [Thread-130004] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:01.779 [DEBUG] [Thread-130004] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:01.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:01.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')
2025-09-28T16:49:01.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-28T16:49:01.805 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:01.805 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:01.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:01.814 [DEBUG] [Thread-130004] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:04.704 [DEBUG] [Thread-130006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:11.816 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:49:11.816 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:49:11.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-28T16:49:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 48, 50), 14.41, 37.8, 0.0, 22.69, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:49:12.378 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:48:50
2025-09-28T16:49:12.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:49:12.634 [DEBUG] [Thread-130007] [transport.py] [_log()] starting thread (client mode): 0x2e3c2200
2025-09-28T16:49:12.634 [DEBUG] [Thread-130007] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:12.653 [DEBUG] [Thread-130007] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:49:12.653 [INFO] [Thread-130007] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] Compression: none
2025-09-28T16:49:12.654 [DEBUG] [Thread-130007] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:12.665 [DEBUG] [Thread-130007] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:12.665 [DEBUG] [Thread-130007] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:12.666 [DEBUG] [Thread-130007] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:49:12.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:49:12.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:12.667 [DEBUG] [Thread-130007] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:12.667 [DEBUG] [Thread-130007] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:12.667 [DEBUG] [Thread-130007] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:12.667 [DEBUG] [Thread-130007] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:49:12.667 [DEBUG] [Thread-130007] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:12.684 [INFO] [Thread-130007] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:12.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:13.310 [DEBUG] [Thread-130007] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:13.310 [DEBUG] [Thread-130007] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:13.310 [DEBUG] [Thread-130007] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:49:13.351 [DEBUG] [Thread-130007] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:13.351 [DEBUG] [Thread-130007] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:13.354 [DEBUG] [Thread-130007] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:13.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:13.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:49:13.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:49:13.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:49:13.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:13.367 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:49:13.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617442 -999.00  +17.00  16.06     42   +4.10 1 1 1 1 1   887    0 10.77 -97.86 ----- 16.1 16.1 196.4 24.6 21.8 -27.6 21.0 -26.9 22.8 -27.1 23.6 -28.8
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:49:13.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617442
2025-09-28T16:49:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:49:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:49:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:49:13.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:49:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:49:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:48:50', tmtdew=14.41, humidity=37.8, cloud=0.0, wind=22.69, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:49:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:49:13.370 [DEBUG] [Thread-130007] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:13.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-28T16:49:13.465 [DEBUG] [Thread-130010] [transport.py] [_log()] starting thread (client mode): 0x2e3c0ee0
2025-09-28T16:49:13.465 [DEBUG] [Thread-130010] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:13.480 [DEBUG] [Thread-130010] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:49:13.480 [INFO] [Thread-130010] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:49:13.487 [DEBUG] [Thread-130010] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:13.487 [DEBUG] [Thread-130010] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:49:13.487 [DEBUG] [Thread-130010] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] Compression: none
2025-09-28T16:49:13.488 [DEBUG] [Thread-130010] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:13.546 [DEBUG] [Thread-130010] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:13.547 [DEBUG] [Thread-130010] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:13.547 [DEBUG] [Thread-130010] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:49:13.547 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:49:13.548 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:13.603 [DEBUG] [Thread-130010] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:13.603 [DEBUG] [Thread-130010] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:13.603 [DEBUG] [Thread-130010] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:13.603 [DEBUG] [Thread-130010] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:49:13.603 [DEBUG] [Thread-130010] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:13.621 [INFO] [Thread-130010] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:13.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-28T16:49:13.622 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:14.617 [DEBUG] [Thread-130010] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:14.617 [DEBUG] [Thread-130010] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:14.665 [DEBUG] [Thread-130010] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:14.665 [DEBUG] [Thread-130010] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:14.674 [DEBUG] [Thread-130010] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:14.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:14.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-28T16:49:14.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-28T16:49:14.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:14.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:14.700 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:14.707 [DEBUG] [Thread-130010] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:19.746 [DEBUG] [Thread-130012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:22.061 [DEBUG] [Thread-130013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:23.474 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:23.475 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:24.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:49:24.707 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:49:24.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-28T16:49:25.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 49, 22), 14.49, 37.63, 0.0, 24.03, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:49:25.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:49:22
2025-09-28T16:49:25.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:49:25.541 [DEBUG] [Thread-130014] [transport.py] [_log()] starting thread (client mode): 0x2b94c3d0
2025-09-28T16:49:25.542 [DEBUG] [Thread-130014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:25.564 [DEBUG] [Thread-130014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:49:25.565 [INFO] [Thread-130014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:49:25.568 [DEBUG] [Thread-130014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:25.568 [DEBUG] [Thread-130014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:49:25.568 [DEBUG] [Thread-130014] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:25.568 [DEBUG] [Thread-130014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:25.568 [DEBUG] [Thread-130014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:25.569 [DEBUG] [Thread-130014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:25.570 [DEBUG] [Thread-130014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:25.570 [DEBUG] [Thread-130014] [transport.py] [_log()] Compression: none
2025-09-28T16:49:25.570 [DEBUG] [Thread-130014] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:25.587 [DEBUG] [Thread-130014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:25.587 [DEBUG] [Thread-130014] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:25.588 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:49:25.588 [DEBUG] [Thread-130014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:49:25.589 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:25.590 [DEBUG] [Thread-130014] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:25.590 [DEBUG] [Thread-130014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:25.590 [DEBUG] [Thread-130014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:25.590 [DEBUG] [Thread-130014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:49:25.591 [DEBUG] [Thread-130014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:25.613 [INFO] [Thread-130014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:25.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:26.460 [DEBUG] [Thread-130014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:26.460 [DEBUG] [Thread-130014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:26.460 [DEBUG] [Thread-130014] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:49:26.502 [DEBUG] [Thread-130014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:26.502 [DEBUG] [Thread-130014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:26.504 [DEBUG] [Thread-130014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:26.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:26.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:49:26.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:49:26.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:49:26.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:26.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:49:26.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617442 -999.00  +17.00  16.06     42   +4.10 1 1 1 1 1   887    0 10.77 -97.86 ----- 16.1 16.1 196.4 24.6 21.8 -27.6 21.0 -26.9 22.8 -27.1 23.6 -28.8
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:49:26.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617442
2025-09-28T16:49:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:49:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:49:26.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:49:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:49:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:49:26.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:49:22', tmtdew=14.49, humidity=37.63, cloud=0.0, wind=24.03, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:49:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:49:26.529 [DEBUG] [Thread-130014] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:26.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-28T16:49:26.624 [DEBUG] [Thread-130017] [transport.py] [_log()] starting thread (client mode): 0x2b91edd0
2025-09-28T16:49:26.624 [DEBUG] [Thread-130017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:26.639 [DEBUG] [Thread-130017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:49:26.639 [INFO] [Thread-130017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:26.647 [DEBUG] [Thread-130017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:26.648 [DEBUG] [Thread-130017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:26.649 [DEBUG] [Thread-130017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:26.649 [DEBUG] [Thread-130017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:26.649 [DEBUG] [Thread-130017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:26.649 [DEBUG] [Thread-130017] [transport.py] [_log()] Compression: none
2025-09-28T16:49:26.649 [DEBUG] [Thread-130017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:26.707 [DEBUG] [Thread-130017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:26.708 [DEBUG] [Thread-130017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:26.708 [DEBUG] [Thread-130017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:49:26.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:49:26.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:26.762 [DEBUG] [Thread-130017] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:26.763 [DEBUG] [Thread-130017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:26.763 [DEBUG] [Thread-130017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:26.763 [DEBUG] [Thread-130017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:49:26.763 [DEBUG] [Thread-130017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:26.786 [INFO] [Thread-130017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:26.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-28T16:49:26.786 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:27.743 [DEBUG] [Thread-130017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:27.744 [DEBUG] [Thread-130017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:27.791 [DEBUG] [Thread-130017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:27.791 [DEBUG] [Thread-130017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:27.800 [DEBUG] [Thread-130017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:27.809 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:27.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-28T16:49:27.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-28T16:49:27.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:27.827 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:27.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:27.835 [DEBUG] [Thread-130017] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:34.787 [DEBUG] [Thread-130019 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:37.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:49:37.830 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:49:37.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-28T16:49:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 49, 22), 14.49, 37.63, 0.0, 24.03, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:49:38.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:49:22
2025-09-28T16:49:38.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:49:38.652 [DEBUG] [Thread-130020] [transport.py] [_log()] starting thread (client mode): 0x2b94ea10
2025-09-28T16:49:38.652 [DEBUG] [Thread-130020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:38.672 [DEBUG] [Thread-130020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:49:38.672 [INFO] [Thread-130020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:49:38.674 [DEBUG] [Thread-130020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:38.674 [DEBUG] [Thread-130020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:49:38.674 [DEBUG] [Thread-130020] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:38.674 [DEBUG] [Thread-130020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] Compression: none
2025-09-28T16:49:38.675 [DEBUG] [Thread-130020] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:38.688 [DEBUG] [Thread-130020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:38.689 [DEBUG] [Thread-130020] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:38.689 [DEBUG] [Thread-130020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:49:38.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:49:38.690 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:38.691 [DEBUG] [Thread-130020] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:38.691 [DEBUG] [Thread-130020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:38.691 [DEBUG] [Thread-130020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:38.691 [DEBUG] [Thread-130020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:49:38.691 [DEBUG] [Thread-130020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:38.715 [INFO] [Thread-130020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:38.716 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:39.378 [DEBUG] [Thread-130020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:39.378 [DEBUG] [Thread-130020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:39.379 [DEBUG] [Thread-130020] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:49:39.419 [DEBUG] [Thread-130020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:39.419 [DEBUG] [Thread-130020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:39.422 [DEBUG] [Thread-130020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:39.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:39.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:49:39.437 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:49:39.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:49:39.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:39.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:49:39.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:39.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617442 -999.00  +17.00  16.06     42   +4.10 1 1 1 1 1   887    0 10.77 -97.86 ----- 16.1 16.1 196.4 24.6 21.8 -27.6 21.0 -26.9 22.8 -27.1 23.6 -28.8
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617442
2025-09-28T16:49:39.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:49:39.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:49:39.448 [DEBUG] [Thread-130020] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:39.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:49:39.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:49:39.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:49:39.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:49:22', tmtdew=14.49, humidity=37.63, cloud=0.0, wind=24.03, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:49:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:49:39.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-28T16:49:39.545 [DEBUG] [Thread-130023] [transport.py] [_log()] starting thread (client mode): 0x2b9557b0
2025-09-28T16:49:39.545 [DEBUG] [Thread-130023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:39.561 [DEBUG] [Thread-130023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:49:39.561 [INFO] [Thread-130023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:39.569 [DEBUG] [Thread-130023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:39.570 [DEBUG] [Thread-130023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:39.570 [DEBUG] [Thread-130023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:39.570 [DEBUG] [Thread-130023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:39.570 [DEBUG] [Thread-130023] [transport.py] [_log()] Compression: none
2025-09-28T16:49:39.570 [DEBUG] [Thread-130023] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:39.626 [DEBUG] [Thread-130023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:39.627 [DEBUG] [Thread-130023] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:39.627 [DEBUG] [Thread-130023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:49:39.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:49:39.628 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:39.683 [DEBUG] [Thread-130023] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:39.683 [DEBUG] [Thread-130023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:39.683 [DEBUG] [Thread-130023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:39.683 [DEBUG] [Thread-130023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:49:39.683 [DEBUG] [Thread-130023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:39.706 [INFO] [Thread-130023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:39.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-28T16:49:39.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:40.648 [DEBUG] [Thread-130023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:40.648 [DEBUG] [Thread-130023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:40.696 [DEBUG] [Thread-130023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:40.696 [DEBUG] [Thread-130023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:40.706 [DEBUG] [Thread-130023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:40.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:40.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-28T16:49:40.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-28T16:49:40.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:40.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:40.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:40.743 [DEBUG] [Thread-130023] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49:49.827 [DEBUG] [Thread-130025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:49:50.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:49:50.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:49:50.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:49:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 49, 22), 14.49, 37.63, 0.0, 24.03, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:49:51.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:49:22
2025-09-28T16:49:51.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:49:51.570 [DEBUG] [Thread-130026] [transport.py] [_log()] starting thread (client mode): 0x2b91eef0
2025-09-28T16:49:51.571 [DEBUG] [Thread-130026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:51.592 [DEBUG] [Thread-130026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:49:51.592 [INFO] [Thread-130026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:49:51.596 [DEBUG] [Thread-130026] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:51.596 [DEBUG] [Thread-130026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:49:51.596 [DEBUG] [Thread-130026] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:51.596 [DEBUG] [Thread-130026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] Compression: none
2025-09-28T16:49:51.597 [DEBUG] [Thread-130026] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:51.615 [DEBUG] [Thread-130026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:51.616 [DEBUG] [Thread-130026] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:51.616 [DEBUG] [Thread-130026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:49:51.616 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:49:51.617 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:51.618 [DEBUG] [Thread-130026] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:51.618 [DEBUG] [Thread-130026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:51.619 [DEBUG] [Thread-130026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:51.619 [DEBUG] [Thread-130026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:49:51.619 [DEBUG] [Thread-130026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:51.644 [INFO] [Thread-130026] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49:51.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:52.315 [DEBUG] [Thread-130026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:52.315 [DEBUG] [Thread-130026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:52.315 [DEBUG] [Thread-130026] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:49:52.356 [DEBUG] [Thread-130026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:52.356 [DEBUG] [Thread-130026] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:52.359 [DEBUG] [Thread-130026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:52.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:52.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:49:52.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:49:52.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:49:52.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:52.381 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:49:52.381 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:52.381 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:49:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617789 -999.00  +16.80  15.24     42   +4.00 1 1 1 1 1   887    0 10.62 -96.39 ----- 15.2 15.2 199.8 25.9 21.7 -28.5 20.9 -27.6 22.7 -27.3 23.6 -29.9
2025-09-28T16:49:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:49:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:49:52.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617789
2025-09-28T16:49:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:49:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:49:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:49:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:49:52.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:49:52.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:49:22', tmtdew=14.49, humidity=37.63, cloud=0.0, wind=24.03, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:49:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:49:52.384 [DEBUG] [Thread-130026] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:49: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-28T16:49:52.479 [DEBUG] [Thread-130029] [transport.py] [_log()] starting thread (client mode): 0x2b9b83a0
2025-09-28T16:49:52.479 [DEBUG] [Thread-130029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:49:52.494 [DEBUG] [Thread-130029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:49:52.495 [INFO] [Thread-130029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:49:52.502 [DEBUG] [Thread-130029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:49:52.502 [DEBUG] [Thread-130029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:49:52.502 [DEBUG] [Thread-130029] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] client lang: <none>
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] server lang: <none>
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] kex follows: False
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] Compression: none
2025-09-28T16:49:52.503 [DEBUG] [Thread-130029] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:49:52.562 [DEBUG] [Thread-130029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:49:52.563 [DEBUG] [Thread-130029] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:49:52.564 [DEBUG] [Thread-130029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:49:52.564 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:49:52.565 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:49:52.619 [DEBUG] [Thread-130029] [transport.py] [_log()] userauth is OK
2025-09-28T16:49:52.619 [DEBUG] [Thread-130029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:49:52.619 [DEBUG] [Thread-130029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:49:52.619 [DEBUG] [Thread-130029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:49:52.619 [DEBUG] [Thread-130029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:49:52.632 [INFO] [Thread-130029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:49: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-28T16:49:52.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:49:53.650 [DEBUG] [Thread-130029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:49:53.650 [DEBUG] [Thread-130029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:49:53.698 [DEBUG] [Thread-130029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:49:53.698 [DEBUG] [Thread-130029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:49:53.707 [DEBUG] [Thread-130029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:49:53.716 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:49:53.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-28T16:49:53.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-28T16:49:53.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:49:53.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:49:53.734 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:49:53.742 [DEBUG] [Thread-130029] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:03.744 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:50:03.745 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:50:03.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-28T16:50:04.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 49, 54), 14.5, 37.62, 0.0, 18.79, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:50:04.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:49:54
2025-09-28T16:50:04.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:50:04.578 [DEBUG] [Thread-130031] [transport.py] [_log()] starting thread (client mode): 0x2b9b8910
2025-09-28T16:50:04.578 [DEBUG] [Thread-130031] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:04.598 [DEBUG] [Thread-130031] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:50:04.598 [INFO] [Thread-130031] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:50:04.601 [DEBUG] [Thread-130031] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:04.601 [DEBUG] [Thread-130031] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:50:04.601 [DEBUG] [Thread-130031] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:04.601 [DEBUG] [Thread-130031] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:04.601 [DEBUG] [Thread-130031] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:04.602 [DEBUG] [Thread-130031] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:04.603 [DEBUG] [Thread-130031] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:04.603 [DEBUG] [Thread-130031] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:04.603 [DEBUG] [Thread-130031] [transport.py] [_log()] Compression: none
2025-09-28T16:50:04.603 [DEBUG] [Thread-130031] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:04.621 [DEBUG] [Thread-130031] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:04.621 [DEBUG] [Thread-130031] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:04.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:50:04.623 [DEBUG] [Thread-130031] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:50:04.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:04.624 [DEBUG] [Thread-130031] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:04.625 [DEBUG] [Thread-130031] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:04.625 [DEBUG] [Thread-130031] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:04.625 [DEBUG] [Thread-130031] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:50:04.625 [DEBUG] [Thread-130031] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:04.648 [INFO] [Thread-130031] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:04.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:04.857 [DEBUG] [Thread-130033 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:11.296 [DEBUG] [Thread-130031] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:11.297 [DEBUG] [Thread-130031] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:11.297 [DEBUG] [Thread-130031] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:50:11.337 [DEBUG] [Thread-130031] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:11.337 [DEBUG] [Thread-130031] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:11.340 [DEBUG] [Thread-130031] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:11.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:11.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:50:11.452 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:50:11.453 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:50:11.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:11.492 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:50:11.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.617789 -999.00  +16.80  15.24     42   +4.00 1 1 1 1 1   887    0 10.62 -96.39 ----- 15.2 15.2 199.8 25.9 21.7 -28.5 20.9 -27.6 22.7 -27.3 23.6 -29.9
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:50:11.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.617789
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:50:11.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:49:54', tmtdew=14.5, humidity=37.62, cloud=0.0, wind=18.79, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:49:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:50:11.494 [DEBUG] [Thread-130031] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50: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-28T16:50:11.577 [DEBUG] [Thread-130035] [transport.py] [_log()] starting thread (client mode): 0x2b91d930
2025-09-28T16:50:11.578 [DEBUG] [Thread-130035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:11.594 [DEBUG] [Thread-130035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:50:11.594 [INFO] [Thread-130035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:11.601 [DEBUG] [Thread-130035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] Compression: none
2025-09-28T16:50:11.602 [DEBUG] [Thread-130035] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:11.659 [DEBUG] [Thread-130035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:11.659 [DEBUG] [Thread-130035] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:11.660 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:50:11.660 [DEBUG] [Thread-130035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:50:11.661 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:11.715 [DEBUG] [Thread-130035] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:11.715 [DEBUG] [Thread-130035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:11.715 [DEBUG] [Thread-130035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:11.715 [DEBUG] [Thread-130035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:50:11.716 [DEBUG] [Thread-130035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:11.734 [INFO] [Thread-130035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:11.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-28T16:50:11.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:12.705 [DEBUG] [Thread-130035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:12.705 [DEBUG] [Thread-130035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:12.753 [DEBUG] [Thread-130035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:12.753 [DEBUG] [Thread-130035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:12.762 [DEBUG] [Thread-130035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:12.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:12.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')
2025-09-28T16:50:12.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-28T16:50:12.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:12.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:12.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:12.798 [DEBUG] [Thread-130035] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:19.903 [DEBUG] [Thread-130037 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:22.107 [DEBUG] [Thread-130038 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:22.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:50:22.799 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:50:22.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-28T16:50:23.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 49, 54), 14.5, 37.62, 0.0, 18.79, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:50:23.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:49:54
2025-09-28T16:50:23.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:50:23.616 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:23.617 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:23.652 [DEBUG] [Thread-130039] [transport.py] [_log()] starting thread (client mode): 0x2b9bb9a0
2025-09-28T16:50:23.652 [DEBUG] [Thread-130039] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:23.672 [DEBUG] [Thread-130039] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:50:23.672 [INFO] [Thread-130039] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:50:23.675 [DEBUG] [Thread-130039] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:23.675 [DEBUG] [Thread-130039] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] Compression: none
2025-09-28T16:50:23.676 [DEBUG] [Thread-130039] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:23.692 [DEBUG] [Thread-130039] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:23.692 [DEBUG] [Thread-130039] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:23.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:50:23.692 [DEBUG] [Thread-130039] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:50:23.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:23.693 [DEBUG] [Thread-130039] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:23.693 [DEBUG] [Thread-130039] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:23.693 [DEBUG] [Thread-130039] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:23.693 [DEBUG] [Thread-130039] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:50:23.693 [DEBUG] [Thread-130039] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:23.720 [INFO] [Thread-130039] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:23.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:24.340 [DEBUG] [Thread-130039] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:24.340 [DEBUG] [Thread-130039] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:24.340 [DEBUG] [Thread-130039] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:50:24.381 [DEBUG] [Thread-130039] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:24.381 [DEBUG] [Thread-130039] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:24.383 [DEBUG] [Thread-130039] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:24.393 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:24.393 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:50:24.394 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:50:24.395 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:50:24.398 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:24.399 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:50:24.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618136 -999.00  +16.90  20.69     42   +4.10 1 1 1 1 1   887    0 10.84 -87.13 ----- 20.7 20.7 207.8 27.9 21.6 -28.7 20.9 -29.1 22.7 -27.4 23.4 -28.0
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:50:24.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618136
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:50:24.400 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:49:54', tmtdew=14.5, humidity=37.62, cloud=0.0, wind=18.79, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:50:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:50:24.400 [DEBUG] [Thread-130039] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:24.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-28T16:50:24.483 [DEBUG] [Thread-130042] [transport.py] [_log()] starting thread (client mode): 0x2e361e40
2025-09-28T16:50:24.483 [DEBUG] [Thread-130042] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:24.498 [DEBUG] [Thread-130042] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:50:24.498 [INFO] [Thread-130042] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:24.505 [DEBUG] [Thread-130042] [transport.py] [_log()] Compression: none
2025-09-28T16:50:24.506 [DEBUG] [Thread-130042] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:24.561 [DEBUG] [Thread-130042] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:24.562 [DEBUG] [Thread-130042] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:24.562 [DEBUG] [Thread-130042] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:50:24.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:50:24.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:24.622 [DEBUG] [Thread-130042] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:24.623 [DEBUG] [Thread-130042] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:24.623 [DEBUG] [Thread-130042] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:24.623 [DEBUG] [Thread-130042] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:50:24.623 [DEBUG] [Thread-130042] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:24.637 [INFO] [Thread-130042] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:24.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-28T16:50:24.637 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:25.597 [DEBUG] [Thread-130042] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:25.597 [DEBUG] [Thread-130042] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:25.645 [DEBUG] [Thread-130042] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:25.645 [DEBUG] [Thread-130042] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:25.653 [DEBUG] [Thread-130042] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:25.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:25.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-28T16:50:25.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-28T16:50:25.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:25.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:25.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:25.685 [DEBUG] [Thread-130042] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:34.946 [DEBUG] [Thread-130044 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:35.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:50:35.687 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:50:35.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-28T16:50:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 50, 26), 14.57, 37.45, 0.0, 16.25, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:50:36.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:50:26
2025-09-28T16:50:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:50:36.515 [DEBUG] [Thread-130045] [transport.py] [_log()] starting thread (client mode): 0x2e362530
2025-09-28T16:50:36.515 [DEBUG] [Thread-130045] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:36.538 [DEBUG] [Thread-130045] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:50:36.538 [INFO] [Thread-130045] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:36.542 [DEBUG] [Thread-130045] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:36.543 [DEBUG] [Thread-130045] [transport.py] [_log()] Compression: none
2025-09-28T16:50:36.543 [DEBUG] [Thread-130045] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:36.558 [DEBUG] [Thread-130045] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:36.558 [DEBUG] [Thread-130045] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:36.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:50:36.559 [DEBUG] [Thread-130045] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:50:36.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:36.600 [DEBUG] [Thread-130045] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:36.600 [DEBUG] [Thread-130045] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:36.601 [DEBUG] [Thread-130045] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:36.601 [DEBUG] [Thread-130045] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:50:36.601 [DEBUG] [Thread-130045] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:36.632 [INFO] [Thread-130045] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:36.633 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:38.299 [DEBUG] [Thread-130045] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:38.299 [DEBUG] [Thread-130045] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:38.300 [DEBUG] [Thread-130045] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:50:38.340 [DEBUG] [Thread-130045] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:38.340 [DEBUG] [Thread-130045] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:38.343 [DEBUG] [Thread-130045] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:38.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:38.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:50:38.360 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:50:38.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:50:38.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:38.369 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:50:38.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:38.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:38.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:50:38.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618136 -999.00  +16.90  20.69     42   +4.10 1 1 1 1 1   887    0 10.84 -87.13 ----- 20.7 20.7 207.8 27.9 21.6 -28.7 20.9 -29.1 22.7 -27.4 23.4 -28.0
2025-09-28T16:50:38.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:50:38.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:50:38.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618136
2025-09-28T16:50:38.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:50:38.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:50:38.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:50:38.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:50:38.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:50:38.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:50:26', tmtdew=14.57, humidity=37.45, cloud=0.0, wind=16.25, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:50:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:50:38.371 [DEBUG] [Thread-130045] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:38.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-28T16:50:38.468 [DEBUG] [Thread-130048] [transport.py] [_log()] starting thread (client mode): 0x2b9bb070
2025-09-28T16:50:38.468 [DEBUG] [Thread-130048] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:38.483 [DEBUG] [Thread-130048] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:50:38.483 [INFO] [Thread-130048] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:50:38.490 [DEBUG] [Thread-130048] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:38.490 [DEBUG] [Thread-130048] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:50:38.490 [DEBUG] [Thread-130048] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] Compression: none
2025-09-28T16:50:38.491 [DEBUG] [Thread-130048] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:38.550 [DEBUG] [Thread-130048] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:38.550 [DEBUG] [Thread-130048] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:38.551 [DEBUG] [Thread-130048] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:50:38.551 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:50:38.552 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:38.607 [DEBUG] [Thread-130048] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:38.607 [DEBUG] [Thread-130048] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:38.607 [DEBUG] [Thread-130048] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:38.607 [DEBUG] [Thread-130048] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:50:38.608 [DEBUG] [Thread-130048] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:38.627 [INFO] [Thread-130048] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:38.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-28T16:50:38.628 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:39.555 [DEBUG] [Thread-130048] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:39.556 [DEBUG] [Thread-130048] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:39.603 [DEBUG] [Thread-130048] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:39.603 [DEBUG] [Thread-130048] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:39.612 [DEBUG] [Thread-130048] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:39.621 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:39.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-28T16:50:39.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-28T16:50:39.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:39.639 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:39.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:39.647 [DEBUG] [Thread-130048] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:49.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:50:49.650 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:50:49.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-28T16:50:49.988 [DEBUG] [Thread-130050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:50:50.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 50, 26), 14.57, 37.45, 0.0, 16.25, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:50:50.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:50:26
2025-09-28T16:50:50.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:50:50.473 [DEBUG] [Thread-130051] [transport.py] [_log()] starting thread (client mode): 0x2b956da0
2025-09-28T16:50:50.473 [DEBUG] [Thread-130051] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:50.494 [DEBUG] [Thread-130051] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:50:50.494 [INFO] [Thread-130051] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:50.497 [DEBUG] [Thread-130051] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] Compression: none
2025-09-28T16:50:50.498 [DEBUG] [Thread-130051] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:50.516 [DEBUG] [Thread-130051] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:50.517 [DEBUG] [Thread-130051] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:50.517 [DEBUG] [Thread-130051] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:50:50.517 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:50:50.518 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:50.519 [DEBUG] [Thread-130051] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:50.520 [DEBUG] [Thread-130051] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:50.520 [DEBUG] [Thread-130051] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:50.520 [DEBUG] [Thread-130051] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:50:50.520 [DEBUG] [Thread-130051] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:50.543 [INFO] [Thread-130051] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:50.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:51.308 [DEBUG] [Thread-130051] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:51.308 [DEBUG] [Thread-130051] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:51.309 [DEBUG] [Thread-130051] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:50:51.349 [DEBUG] [Thread-130051] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:51.349 [DEBUG] [Thread-130051] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:51.352 [DEBUG] [Thread-130051] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:51.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:51.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:50:51.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:50:51.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:50:51.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:51.378 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:50:51.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:51.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:50:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618136 -999.00  +16.90  20.69     42   +4.10 1 1 1 1 1   887    0 10.84 -87.13 ----- 20.7 20.7 207.8 27.9 21.6 -28.7 20.9 -29.1 22.7 -27.4 23.4 -28.0
2025-09-28T16:50:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:50:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:50:51.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618136
2025-09-28T16:50:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:50:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:50:51.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:50:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:50:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:50:51.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:50:26', tmtdew=14.57, humidity=37.45, cloud=0.0, wind=16.25, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:50:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:50:51.381 [DEBUG] [Thread-130051] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:50:51.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-28T16:50:51.478 [DEBUG] [Thread-130054] [transport.py] [_log()] starting thread (client mode): 0x2b928700
2025-09-28T16:50:51.479 [DEBUG] [Thread-130054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:50:51.493 [DEBUG] [Thread-130054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:50:51.493 [INFO] [Thread-130054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:50:51.500 [DEBUG] [Thread-130054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] client lang: <none>
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] server lang: <none>
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] kex follows: False
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] Compression: none
2025-09-28T16:50:51.501 [DEBUG] [Thread-130054] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:50:51.560 [DEBUG] [Thread-130054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:50:51.560 [DEBUG] [Thread-130054] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:50:51.561 [DEBUG] [Thread-130054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:50:51.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:50:51.562 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:50:51.615 [DEBUG] [Thread-130054] [transport.py] [_log()] userauth is OK
2025-09-28T16:50:51.615 [DEBUG] [Thread-130054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:50:51.615 [DEBUG] [Thread-130054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:50:51.615 [DEBUG] [Thread-130054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:50:51.615 [DEBUG] [Thread-130054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:50:51.634 [INFO] [Thread-130054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:50:51.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-28T16:50:51.634 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:50:52.593 [DEBUG] [Thread-130054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:50:52.593 [DEBUG] [Thread-130054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:50:52.641 [DEBUG] [Thread-130054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:50:52.641 [DEBUG] [Thread-130054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:50:52.650 [DEBUG] [Thread-130054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:50:52.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:50:52.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')
2025-09-28T16:50:52.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') -> 00000000
2025-09-28T16:50:52.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:50:52.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:50:52.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:50:52.685 [DEBUG] [Thread-130054] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:02.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:51:02.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:51:02.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-28T16:51:03.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 50, 58), 14.7, 37.28, 0.0, 18.55, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:51:03.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:50:58
2025-09-28T16:51:03.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:51:03.564 [DEBUG] [Thread-130056] [transport.py] [_log()] starting thread (client mode): 0x2b9ba890
2025-09-28T16:51:03.564 [DEBUG] [Thread-130056] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:03.578 [DEBUG] [Thread-130056] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:51:03.578 [INFO] [Thread-130056] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:03.581 [DEBUG] [Thread-130056] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] Compression: none
2025-09-28T16:51:03.582 [DEBUG] [Thread-130056] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:51:03.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:51:03.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:51:03.598 [DEBUG] [Thread-130056] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:03.608 [INFO] [Thread-130056] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:03.608 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:04.196 [DEBUG] [Thread-130056] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:04.196 [DEBUG] [Thread-130056] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:04.197 [DEBUG] [Thread-130056] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:51:04.237 [DEBUG] [Thread-130056] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:04.237 [DEBUG] [Thread-130056] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:04.239 [DEBUG] [Thread-130056] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:04.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:04.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:51:04.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:51:04.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:04.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:51:04.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618484 -999.00  +16.80  18.96     42   +4.00 1 1 1 1 1   887    0 10.86 -94.29 ----- 19.0 19.0 197.2 24.3 21.5 -27.9 20.9 -27.4 22.6 -27.8 23.3 -27.8
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:51:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618484
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:51:04.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:50:58', tmtdew=14.7, humidity=37.28, cloud=0.0, wind=18.55, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:50:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:51:04.257 [DEBUG] [Thread-130056] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:04.331 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:51:04.342 [DEBUG] [Thread-130059] [transport.py] [_log()] starting thread (client mode): 0x2e3c0d00
2025-09-28T16:51:04.342 [DEBUG] [Thread-130059] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:04.357 [DEBUG] [Thread-130059] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:51:04.357 [INFO] [Thread-130059] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:04.364 [DEBUG] [Thread-130059] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:04.365 [DEBUG] [Thread-130059] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:04.365 [DEBUG] [Thread-130059] [transport.py] [_log()] Compression: none
2025-09-28T16:51:04.365 [DEBUG] [Thread-130059] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:04.422 [DEBUG] [Thread-130059] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:04.422 [DEBUG] [Thread-130059] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:04.422 [DEBUG] [Thread-130059] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:51:04.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:51:04.423 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:04.482 [DEBUG] [Thread-130059] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:04.483 [DEBUG] [Thread-130059] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:04.483 [DEBUG] [Thread-130059] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:04.483 [DEBUG] [Thread-130059] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:51:04.483 [DEBUG] [Thread-130059] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:04.500 [INFO] [Thread-130059] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:04.500 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:51:04.500 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:05.027 [DEBUG] [Thread-130061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:05.432 [DEBUG] [Thread-130059] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:05.433 [DEBUG] [Thread-130059] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:05.480 [DEBUG] [Thread-130059] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:05.480 [DEBUG] [Thread-130059] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:05.489 [DEBUG] [Thread-130059] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:05.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:05.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-28T16:51:05.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-28T16:51:05.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:05.516 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:05.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:05.524 [DEBUG] [Thread-130059] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:15.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:51:15.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:51:15.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-28T16:51:16.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 50, 58), 14.7, 37.28, 0.0, 18.55, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:51:16.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:50:58
2025-09-28T16:51:16.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:51:16.347 [DEBUG] [Thread-130062] [transport.py] [_log()] starting thread (client mode): 0x2e3c0040
2025-09-28T16:51:16.347 [DEBUG] [Thread-130062] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:16.366 [DEBUG] [Thread-130062] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:51:16.366 [INFO] [Thread-130062] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:51:16.369 [DEBUG] [Thread-130062] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] Compression: none
2025-09-28T16:51:16.370 [DEBUG] [Thread-130062] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:16.387 [DEBUG] [Thread-130062] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:16.387 [DEBUG] [Thread-130062] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:16.388 [DEBUG] [Thread-130062] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:51:16.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:51:16.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:16.390 [DEBUG] [Thread-130062] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:16.390 [DEBUG] [Thread-130062] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:16.390 [DEBUG] [Thread-130062] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:16.390 [DEBUG] [Thread-130062] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:51:16.390 [DEBUG] [Thread-130062] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:16.415 [INFO] [Thread-130062] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:16.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:17.207 [DEBUG] [Thread-130062] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:17.207 [DEBUG] [Thread-130062] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:17.208 [DEBUG] [Thread-130062] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:51:17.248 [DEBUG] [Thread-130062] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:17.248 [DEBUG] [Thread-130062] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:17.251 [DEBUG] [Thread-130062] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:17.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:17.263 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:51:17.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:51:17.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:51:17.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:17.273 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:51:17.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:17.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:17.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:51:17.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618484 -999.00  +16.80  18.96     42   +4.00 1 1 1 1 1   887    0 10.86 -94.29 ----- 19.0 19.0 197.2 24.3 21.5 -27.9 20.9 -27.4 22.6 -27.8 23.3 -27.8
2025-09-28T16:51:17.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:51:17.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:51:17.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618484
2025-09-28T16:51:17.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:51:17.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:50:58', tmtdew=14.7, humidity=37.28, cloud=0.0, wind=18.55, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:50:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:51:17.277 [DEBUG] [Thread-130062] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:17.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-28T16:51:17.371 [DEBUG] [Thread-130065] [transport.py] [_log()] starting thread (client mode): 0x2b9df640
2025-09-28T16:51:17.371 [DEBUG] [Thread-130065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:17.387 [DEBUG] [Thread-130065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:51:17.387 [INFO] [Thread-130065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:51:17.395 [DEBUG] [Thread-130065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:17.395 [DEBUG] [Thread-130065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:51:17.395 [DEBUG] [Thread-130065] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] Compression: none
2025-09-28T16:51:17.396 [DEBUG] [Thread-130065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:17.458 [DEBUG] [Thread-130065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:17.459 [DEBUG] [Thread-130065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:17.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:51:17.460 [DEBUG] [Thread-130065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:51:17.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:17.515 [DEBUG] [Thread-130065] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:17.515 [DEBUG] [Thread-130065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:17.515 [DEBUG] [Thread-130065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:17.515 [DEBUG] [Thread-130065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:51:17.515 [DEBUG] [Thread-130065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:17.534 [INFO] [Thread-130065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:17.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-28T16:51:17.535 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:18.490 [DEBUG] [Thread-130065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:18.491 [DEBUG] [Thread-130065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:18.538 [DEBUG] [Thread-130065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:18.538 [DEBUG] [Thread-130065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:18.547 [DEBUG] [Thread-130065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:18.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:18.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-28T16:51:18.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-28T16:51:18.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:18.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:18.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:18.582 [DEBUG] [Thread-130065] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:20.064 [DEBUG] [Thread-130067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:22.161 [DEBUG] [Thread-130068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:23.759 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:23.760 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:28.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:51:28.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:51:28.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-28T16:51:29.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 50, 58), 14.7, 37.28, 0.0, 18.55, 16.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:51:29.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:50:58
2025-09-28T16:51:29.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:51:29.403 [DEBUG] [Thread-130069] [transport.py] [_log()] starting thread (client mode): 0x2b9dd000
2025-09-28T16:51:29.403 [DEBUG] [Thread-130069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:29.424 [DEBUG] [Thread-130069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:51:29.425 [INFO] [Thread-130069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:51:29.427 [DEBUG] [Thread-130069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:29.428 [DEBUG] [Thread-130069] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] Compression: none
2025-09-28T16:51:29.429 [DEBUG] [Thread-130069] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:29.446 [DEBUG] [Thread-130069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:29.446 [DEBUG] [Thread-130069] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:29.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:51:29.447 [DEBUG] [Thread-130069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:51:29.448 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:29.449 [DEBUG] [Thread-130069] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:29.450 [DEBUG] [Thread-130069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:29.450 [DEBUG] [Thread-130069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:29.450 [DEBUG] [Thread-130069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:51:29.450 [DEBUG] [Thread-130069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:29.466 [INFO] [Thread-130069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:29.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:30.070 [DEBUG] [Thread-130069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:30.070 [DEBUG] [Thread-130069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:30.070 [DEBUG] [Thread-130069] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:51:30.111 [DEBUG] [Thread-130069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:30.111 [DEBUG] [Thread-130069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:30.116 [DEBUG] [Thread-130069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:30.127 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:30.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:51:30.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:51:30.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:51:30.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:30.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:51:30.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:30.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618831 -999.00  +16.80  14.64     42   +4.00 1 1 1 1 1   887    0 11.10 -85.54 ----- 14.6 14.6 195.0 25.2 21.4 -27.9 20.8 -28.0 22.6 -26.9 23.3 -28.9
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618831
2025-09-28T16:51:30.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:51:30.136 [DEBUG] [Thread-130069] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:51:30.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:51:30.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:51:30.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:51:30.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:50:58', tmtdew=14.7, humidity=37.28, cloud=0.0, wind=18.55, temperature=16.94, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:51:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:51:30.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-28T16:51:30.232 [DEBUG] [Thread-130072] [transport.py] [_log()] starting thread (client mode): 0x2b9dead0
2025-09-28T16:51:30.232 [DEBUG] [Thread-130072] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:30.251 [DEBUG] [Thread-130072] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:51:30.251 [INFO] [Thread-130072] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:51:30.258 [DEBUG] [Thread-130072] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:30.258 [DEBUG] [Thread-130072] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:51:30.258 [DEBUG] [Thread-130072] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] Compression: none
2025-09-28T16:51:30.259 [DEBUG] [Thread-130072] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:30.314 [DEBUG] [Thread-130072] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:30.314 [DEBUG] [Thread-130072] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:30.315 [DEBUG] [Thread-130072] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:51:30.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:51:30.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:30.374 [DEBUG] [Thread-130072] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:30.374 [DEBUG] [Thread-130072] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:30.374 [DEBUG] [Thread-130072] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:30.374 [DEBUG] [Thread-130072] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:51:30.375 [DEBUG] [Thread-130072] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:30.389 [INFO] [Thread-130072] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51: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-28T16:51:30.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:31.336 [DEBUG] [Thread-130072] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:31.336 [DEBUG] [Thread-130072] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:31.384 [DEBUG] [Thread-130072] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:31.384 [DEBUG] [Thread-130072] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:31.391 [DEBUG] [Thread-130072] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:31.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:31.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-28T16:51:31.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-28T16:51:31.415 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:31.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:31.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:31.422 [DEBUG] [Thread-130072] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:35.094 [DEBUG] [Thread-130074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:41.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:51:41.425 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:51:41.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-28T16:51:41.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 51, 30), 14.81, 37.02, 0.0, 22.23, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:51:41.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:51:30
2025-09-28T16:51:42.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:51:42.251 [DEBUG] [Thread-130075] [transport.py] [_log()] starting thread (client mode): 0x2b9ddf00
2025-09-28T16:51:42.251 [DEBUG] [Thread-130075] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:42.271 [DEBUG] [Thread-130075] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:51:42.271 [INFO] [Thread-130075] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:42.274 [DEBUG] [Thread-130075] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] Compression: none
2025-09-28T16:51:42.275 [DEBUG] [Thread-130075] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:42.284 [DEBUG] [Thread-130075] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:42.284 [DEBUG] [Thread-130075] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:42.285 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:51:42.285 [DEBUG] [Thread-130075] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:51:42.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:42.287 [DEBUG] [Thread-130075] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:42.287 [DEBUG] [Thread-130075] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:42.287 [DEBUG] [Thread-130075] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:42.287 [DEBUG] [Thread-130075] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:51:42.288 [DEBUG] [Thread-130075] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:42.312 [INFO] [Thread-130075] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:42.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:43.128 [DEBUG] [Thread-130075] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:43.128 [DEBUG] [Thread-130075] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:43.129 [DEBUG] [Thread-130075] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:51:43.169 [DEBUG] [Thread-130075] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:43.169 [DEBUG] [Thread-130075] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:43.173 [DEBUG] [Thread-130075] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:43.194 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:43.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:51:43.196 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:51:43.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:51:43.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:43.212 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:51:43.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:43.212 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:51:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618831 -999.00  +16.80  14.64     42   +4.00 1 1 1 1 1   887    0 11.10 -85.54 ----- 14.6 14.6 195.0 25.2 21.4 -27.9 20.8 -28.0 22.6 -26.9 23.3 -28.9
2025-09-28T16:51:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:51:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:51:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618831
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:51:43.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:51:30', tmtdew=14.81, humidity=37.02, cloud=0.0, wind=22.23, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:51:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:51:43.215 [DEBUG] [Thread-130075] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:43.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-28T16:51:43.312 [DEBUG] [Thread-130078] [transport.py] [_log()] starting thread (client mode): 0x2b9dc880
2025-09-28T16:51:43.313 [DEBUG] [Thread-130078] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:43.327 [DEBUG] [Thread-130078] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:51:43.327 [INFO] [Thread-130078] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:51:43.335 [DEBUG] [Thread-130078] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:43.335 [DEBUG] [Thread-130078] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] Compression: none
2025-09-28T16:51:43.336 [DEBUG] [Thread-130078] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:43.395 [DEBUG] [Thread-130078] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:43.395 [DEBUG] [Thread-130078] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:43.396 [DEBUG] [Thread-130078] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:51:43.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:51:43.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:43.451 [DEBUG] [Thread-130078] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:43.451 [DEBUG] [Thread-130078] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:43.451 [DEBUG] [Thread-130078] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:43.451 [DEBUG] [Thread-130078] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:51:43.451 [DEBUG] [Thread-130078] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:43.470 [INFO] [Thread-130078] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:43.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-28T16:51:43.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:44.419 [DEBUG] [Thread-130078] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:44.419 [DEBUG] [Thread-130078] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:44.472 [DEBUG] [Thread-130078] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:44.472 [DEBUG] [Thread-130078] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:44.481 [DEBUG] [Thread-130078] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:44.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:44.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-28T16:51:44.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') -> 00000000
2025-09-28T16:51:44.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:44.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:44.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:44.517 [DEBUG] [Thread-130078] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:50.141 [DEBUG] [Thread-130080 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:51:54.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:51:54.519 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:51:54.521 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:51:55.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 51, 30), 14.81, 37.02, 0.0, 22.23, 16.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:51:55.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:51:30
2025-09-28T16:51:55.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:51:55.345 [DEBUG] [Thread-130081] [transport.py] [_log()] starting thread (client mode): 0x2b955390
2025-09-28T16:51:55.346 [DEBUG] [Thread-130081] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:55.365 [DEBUG] [Thread-130081] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:51:55.366 [INFO] [Thread-130081] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] Compression: none
2025-09-28T16:51:55.369 [DEBUG] [Thread-130081] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:55.384 [DEBUG] [Thread-130081] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:55.385 [DEBUG] [Thread-130081] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:55.385 [DEBUG] [Thread-130081] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:51:55.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:51:55.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:55.386 [DEBUG] [Thread-130081] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:55.386 [DEBUG] [Thread-130081] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:55.386 [DEBUG] [Thread-130081] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:55.386 [DEBUG] [Thread-130081] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:51:55.386 [DEBUG] [Thread-130081] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:55.395 [INFO] [Thread-130081] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:55.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:56.161 [DEBUG] [Thread-130081] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:56.162 [DEBUG] [Thread-130081] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:56.162 [DEBUG] [Thread-130081] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:51:56.202 [DEBUG] [Thread-130081] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:56.202 [DEBUG] [Thread-130081] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:56.205 [DEBUG] [Thread-130081] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:56.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:56.217 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:51:56.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:51:56.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:51:56.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:56.229 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:51:56.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:56.229 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:51:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.618831 -999.00  +16.80  14.64     42   +4.00 1 1 1 1 1   887    0 11.10 -85.54 ----- 14.6 14.6 195.0 25.2 21.4 -27.9 20.8 -28.0 22.6 -26.9 23.3 -28.9
2025-09-28T16:51:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:51:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:51:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.618831
2025-09-28T16:51:56.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:51:56.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:51:56.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:51:56.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:51:56.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:51:56.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:51:30', tmtdew=14.81, humidity=37.02, cloud=0.0, wind=22.23, temperature=16.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:51:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:51:56.232 [DEBUG] [Thread-130081] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:51:56.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-28T16:51:56.326 [DEBUG] [Thread-130084] [transport.py] [_log()] starting thread (client mode): 0x2e362860
2025-09-28T16:51:56.326 [DEBUG] [Thread-130084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:51:56.341 [DEBUG] [Thread-130084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:51:56.341 [INFO] [Thread-130084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:51:56.348 [DEBUG] [Thread-130084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] client lang: <none>
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] server lang: <none>
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] kex follows: False
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] Compression: none
2025-09-28T16:51:56.349 [DEBUG] [Thread-130084] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:51:56.406 [DEBUG] [Thread-130084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:51:56.407 [DEBUG] [Thread-130084] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:51:56.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:51:56.408 [DEBUG] [Thread-130084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:51:56.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:51:56.463 [DEBUG] [Thread-130084] [transport.py] [_log()] userauth is OK
2025-09-28T16:51:56.463 [DEBUG] [Thread-130084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:51:56.463 [DEBUG] [Thread-130084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:51:56.463 [DEBUG] [Thread-130084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:51:56.463 [DEBUG] [Thread-130084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:51:56.482 [INFO] [Thread-130084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:51:56.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-28T16:51:56.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:51:57.458 [DEBUG] [Thread-130084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:51:57.458 [DEBUG] [Thread-130084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:51:57.506 [DEBUG] [Thread-130084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:51:57.506 [DEBUG] [Thread-130084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:51:57.515 [DEBUG] [Thread-130084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:51:57.524 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:51:57.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')
2025-09-28T16:51:57.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-28T16:51:57.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:51:57.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:51:57.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:51:57.550 [DEBUG] [Thread-130084] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:05.189 [DEBUG] [Thread-130086 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:07.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:52:07.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:52:07.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:52:08.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 52, 1), 14.81, 36.99, 0.0, 23.15, 16.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:52:08.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:52:01
2025-09-28T16:52:08.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:52:08.388 [DEBUG] [Thread-130087] [transport.py] [_log()] starting thread (client mode): 0x2b9554e0
2025-09-28T16:52:08.388 [DEBUG] [Thread-130087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:08.403 [DEBUG] [Thread-130087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:52:08.403 [INFO] [Thread-130087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:08.406 [DEBUG] [Thread-130087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] Compression: none
2025-09-28T16:52:08.407 [DEBUG] [Thread-130087] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:08.425 [DEBUG] [Thread-130087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:08.426 [DEBUG] [Thread-130087] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:08.426 [DEBUG] [Thread-130087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:52:08.426 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:52:08.427 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:08.428 [DEBUG] [Thread-130087] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:08.428 [DEBUG] [Thread-130087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:08.428 [DEBUG] [Thread-130087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:08.428 [DEBUG] [Thread-130087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:52:08.428 [DEBUG] [Thread-130087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:08.443 [INFO] [Thread-130087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:08.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:09.074 [DEBUG] [Thread-130087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:09.074 [DEBUG] [Thread-130087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:09.075 [DEBUG] [Thread-130087] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:52:09.115 [DEBUG] [Thread-130087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:09.116 [DEBUG] [Thread-130087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:09.117 [DEBUG] [Thread-130087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:09.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:09.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:52:09.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:52:09.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:52:09.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:09.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:52:09.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619178 -999.00  +16.90  11.43     42   +4.10 1 1 1 1 1   887    0 10.53 -84.35 ----- 11.4 11.4 192.4 20.1 21.4 -28.0 20.9 -27.3 22.6 -25.7 23.4 -28.2
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:52:09.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619178
2025-09-28T16:52:09.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:52:09.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:52:09.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:52:09.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:52:09.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:52:09.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:52:01', tmtdew=14.81, humidity=36.99, cloud=0.0, wind=23.15, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:51:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:52:09.135 [DEBUG] [Thread-130087] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:09.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-28T16:52:09.231 [DEBUG] [Thread-130090] [transport.py] [_log()] starting thread (client mode): 0x2b954970
2025-09-28T16:52:09.231 [DEBUG] [Thread-130090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:09.246 [DEBUG] [Thread-130090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:52:09.246 [INFO] [Thread-130090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:09.254 [DEBUG] [Thread-130090] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] Compression: none
2025-09-28T16:52:09.255 [DEBUG] [Thread-130090] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:09.311 [DEBUG] [Thread-130090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:09.311 [DEBUG] [Thread-130090] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:09.312 [DEBUG] [Thread-130090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:52:09.312 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:52:09.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:09.371 [DEBUG] [Thread-130090] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:09.371 [DEBUG] [Thread-130090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:09.371 [DEBUG] [Thread-130090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:09.371 [DEBUG] [Thread-130090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:52:09.371 [DEBUG] [Thread-130090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:09.390 [INFO] [Thread-130090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:09.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-28T16:52:09.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:10.369 [DEBUG] [Thread-130090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:10.369 [DEBUG] [Thread-130090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:10.417 [DEBUG] [Thread-130090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:10.418 [DEBUG] [Thread-130090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:10.427 [DEBUG] [Thread-130090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:10.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:10.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-28T16:52:10.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-28T16:52:10.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:10.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:10.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:10.462 [DEBUG] [Thread-130090] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:20.219 [DEBUG] [Thread-130092 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:20.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:52:20.464 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:52:20.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-28T16:52:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 52, 1), 14.81, 36.99, 0.0, 23.15, 16.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:52:21.028 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:52:01
2025-09-28T16:52:21.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:52:21.285 [DEBUG] [Thread-130093] [transport.py] [_log()] starting thread (client mode): 0x2e363c40
2025-09-28T16:52:21.285 [DEBUG] [Thread-130093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:21.305 [DEBUG] [Thread-130093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:52:21.306 [INFO] [Thread-130093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:21.309 [DEBUG] [Thread-130093] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] Compression: none
2025-09-28T16:52:21.310 [DEBUG] [Thread-130093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:21.328 [DEBUG] [Thread-130093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:21.328 [DEBUG] [Thread-130093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:21.329 [DEBUG] [Thread-130093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:52:21.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:52:21.330 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:21.331 [DEBUG] [Thread-130093] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:21.331 [DEBUG] [Thread-130093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:21.331 [DEBUG] [Thread-130093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:21.331 [DEBUG] [Thread-130093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:52:21.331 [DEBUG] [Thread-130093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:21.364 [INFO] [Thread-130093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:21.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:22.137 [DEBUG] [Thread-130093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:22.138 [DEBUG] [Thread-130093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:22.138 [DEBUG] [Thread-130093] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:52:22.178 [DEBUG] [Thread-130093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:22.178 [DEBUG] [Thread-130093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:22.180 [DEBUG] [Thread-130093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:22.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:22.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:52:22.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:52:22.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:52:22.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:22.192 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:52:22.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:22.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619178 -999.00  +16.90  11.43     42   +4.10 1 1 1 1 1   887    0 10.53 -84.35 ----- 11.4 11.4 192.4 20.1 21.4 -28.0 20.9 -27.3 22.6 -25.7 23.4 -28.2
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619178
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:52:22.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:52:01', tmtdew=14.81, humidity=36.99, cloud=0.0, wind=23.15, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:51:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:52:22.193 [DEBUG] [Thread-130093] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:22.195 [DEBUG] [Thread-130096 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:22.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-28T16:52:22.275 [DEBUG] [Thread-130097] [transport.py] [_log()] starting thread (client mode): 0x2b92aa70
2025-09-28T16:52:22.275 [DEBUG] [Thread-130097] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:22.290 [DEBUG] [Thread-130097] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:52:22.290 [INFO] [Thread-130097] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:52:22.297 [DEBUG] [Thread-130097] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:22.297 [DEBUG] [Thread-130097] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] Compression: none
2025-09-28T16:52:22.298 [DEBUG] [Thread-130097] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:22.355 [DEBUG] [Thread-130097] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:22.355 [DEBUG] [Thread-130097] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:22.356 [DEBUG] [Thread-130097] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:52:22.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:52:22.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:22.411 [DEBUG] [Thread-130097] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:22.411 [DEBUG] [Thread-130097] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:22.411 [DEBUG] [Thread-130097] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:22.411 [DEBUG] [Thread-130097] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:52:22.411 [DEBUG] [Thread-130097] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:22.431 [INFO] [Thread-130097] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:22.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-28T16:52:22.431 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:23.353 [DEBUG] [Thread-130097] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:23.353 [DEBUG] [Thread-130097] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:23.404 [DEBUG] [Thread-130097] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:23.404 [DEBUG] [Thread-130097] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:23.414 [DEBUG] [Thread-130097] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:23.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:23.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-28T16:52:23.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-28T16:52:23.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:23.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:23.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:23.449 [DEBUG] [Thread-130097] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:23.900 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:23.901 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:33.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:52:33.452 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:52:33.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-28T16:52:34.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 52, 1), 14.81, 36.99, 0.0, 23.15, 16.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:52:34.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:52:01
2025-09-28T16:52:34.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:52:34.308 [DEBUG] [Thread-130099] [transport.py] [_log()] starting thread (client mode): 0x2b957910
2025-09-28T16:52:34.309 [DEBUG] [Thread-130099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:34.329 [DEBUG] [Thread-130099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:52:34.329 [INFO] [Thread-130099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] Compression: none
2025-09-28T16:52:34.330 [DEBUG] [Thread-130099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:34.338 [DEBUG] [Thread-130099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:34.338 [DEBUG] [Thread-130099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:34.338 [DEBUG] [Thread-130099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:52:34.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:52:34.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:34.339 [DEBUG] [Thread-130099] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:34.339 [DEBUG] [Thread-130099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:34.339 [DEBUG] [Thread-130099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:34.339 [DEBUG] [Thread-130099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:52:34.339 [DEBUG] [Thread-130099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:34.348 [INFO] [Thread-130099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:34.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:34.988 [DEBUG] [Thread-130099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:34.988 [DEBUG] [Thread-130099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:34.988 [DEBUG] [Thread-130099] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:52:35.029 [DEBUG] [Thread-130099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:35.029 [DEBUG] [Thread-130099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:35.031 [DEBUG] [Thread-130099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:35.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:35.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:52:35.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:52:35.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:52:35.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:35.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:52:35.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619525 -999.00  +16.90  12.90     42   +4.10 1 1 1 1 1   887    0 10.90 -85.36 ----- 12.9 12.9 206.4 21.5 21.4 -27.6 20.7 -31.0 22.6 -27.5 23.3 -28.0
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619525
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:52:35.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:52:35.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:52:35.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:52:35.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:52:35.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:52:01', tmtdew=14.81, humidity=36.99, cloud=0.0, wind=23.15, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:52:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:52:35.046 [DEBUG] [Thread-130099] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:35.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:52:35.133 [DEBUG] [Thread-130102] [transport.py] [_log()] starting thread (client mode): 0x2b9dc6d0
2025-09-28T16:52:35.133 [DEBUG] [Thread-130102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:35.147 [DEBUG] [Thread-130102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:52:35.147 [INFO] [Thread-130102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] Compression: none
2025-09-28T16:52:35.155 [DEBUG] [Thread-130102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:35.213 [DEBUG] [Thread-130102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:35.213 [DEBUG] [Thread-130102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:35.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:52:35.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:35.214 [DEBUG] [Thread-130102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:52:35.252 [DEBUG] [Thread-130104 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:35.271 [DEBUG] [Thread-130102] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:35.271 [DEBUG] [Thread-130102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:35.271 [DEBUG] [Thread-130102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:35.271 [DEBUG] [Thread-130102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:52:35.271 [DEBUG] [Thread-130102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:35.287 [INFO] [Thread-130102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:35.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-28T16:52:35.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:36.241 [DEBUG] [Thread-130102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:36.241 [DEBUG] [Thread-130102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:36.289 [DEBUG] [Thread-130102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:36.289 [DEBUG] [Thread-130102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:36.297 [DEBUG] [Thread-130102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:36.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:36.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-28T16:52:36.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-28T16:52:36.321 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:36.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:36.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:36.329 [DEBUG] [Thread-130102] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:46.332 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:52:46.332 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:52:46.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-28T16:52:46.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 52, 33), 14.76, 37.22, 0.0, 23.98, 16.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:52:46.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:52:33
2025-09-28T16:52:47.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:52:47.172 [DEBUG] [Thread-130105] [transport.py] [_log()] starting thread (client mode): 0x2b954970
2025-09-28T16:52:47.172 [DEBUG] [Thread-130105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:47.192 [DEBUG] [Thread-130105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:52:47.192 [INFO] [Thread-130105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:52:47.195 [DEBUG] [Thread-130105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:47.195 [DEBUG] [Thread-130105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:52:47.195 [DEBUG] [Thread-130105] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:47.196 [DEBUG] [Thread-130105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:47.197 [DEBUG] [Thread-130105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:47.197 [DEBUG] [Thread-130105] [transport.py] [_log()] Compression: none
2025-09-28T16:52:47.197 [DEBUG] [Thread-130105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:47.215 [DEBUG] [Thread-130105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:47.216 [DEBUG] [Thread-130105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:47.216 [DEBUG] [Thread-130105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:52:47.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:52:47.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:47.218 [DEBUG] [Thread-130105] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:47.218 [DEBUG] [Thread-130105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:47.218 [DEBUG] [Thread-130105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:47.218 [DEBUG] [Thread-130105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:52:47.219 [DEBUG] [Thread-130105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:47.241 [INFO] [Thread-130105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:47.242 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:48.035 [DEBUG] [Thread-130105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:48.035 [DEBUG] [Thread-130105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:48.035 [DEBUG] [Thread-130105] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:52:48.076 [DEBUG] [Thread-130105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:48.076 [DEBUG] [Thread-130105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:48.079 [DEBUG] [Thread-130105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:48.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:48.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:52:48.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:52:48.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:52:48.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:48.100 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:52:48.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:48.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:52:48.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619525 -999.00  +16.90  12.90     42   +4.10 1 1 1 1 1   887    0 10.90 -85.36 ----- 12.9 12.9 206.4 21.5 21.4 -27.6 20.7 -31.0 22.6 -27.5 23.3 -28.0
2025-09-28T16:52:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:52:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:52:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619525
2025-09-28T16:52:48.102 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:52:48.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:52:48.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:52:48.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:52:48.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:52:48.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:52:33', tmtdew=14.76, humidity=37.22, cloud=0.0, wind=23.98, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:52:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:52:48.103 [DEBUG] [Thread-130105] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:48.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-28T16:52:48.198 [DEBUG] [Thread-130108] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-28T16:52:48.198 [DEBUG] [Thread-130108] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:52:48.214 [DEBUG] [Thread-130108] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:52:48.214 [INFO] [Thread-130108] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:52:48.222 [DEBUG] [Thread-130108] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] client lang: <none>
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] server lang: <none>
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] kex follows: False
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:52:48.223 [DEBUG] [Thread-130108] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:52:48.224 [DEBUG] [Thread-130108] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:52:48.224 [DEBUG] [Thread-130108] [transport.py] [_log()] Compression: none
2025-09-28T16:52:48.224 [DEBUG] [Thread-130108] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:52:48.278 [DEBUG] [Thread-130108] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:52:48.278 [DEBUG] [Thread-130108] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:52:48.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:52:48.279 [DEBUG] [Thread-130108] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:52:48.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:52:48.335 [DEBUG] [Thread-130108] [transport.py] [_log()] userauth is OK
2025-09-28T16:52:48.335 [DEBUG] [Thread-130108] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:52:48.335 [DEBUG] [Thread-130108] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:52:48.335 [DEBUG] [Thread-130108] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:52:48.335 [DEBUG] [Thread-130108] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:52:48.355 [INFO] [Thread-130108] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:52:48.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-28T16:52:48.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:52:49.368 [DEBUG] [Thread-130108] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:52:49.368 [DEBUG] [Thread-130108] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:52:49.415 [DEBUG] [Thread-130108] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:52:49.415 [DEBUG] [Thread-130108] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:52:49.424 [DEBUG] [Thread-130108] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:52:49.433 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:52:49.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-28T16:52:49.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-28T16:52:49.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:52:49.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:52:49.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:52:49.459 [DEBUG] [Thread-130108] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:52:50.287 [DEBUG] [Thread-130110 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:52:59.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:52:59.462 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:52:59.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-28T16:53:00.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 52, 33), 14.76, 37.22, 0.0, 23.98, 16.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:53:00.027 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:52:33
2025-09-28T16:53:00.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:53:00.284 [DEBUG] [Thread-130111] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ca0
2025-09-28T16:53:00.284 [DEBUG] [Thread-130111] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:00.303 [DEBUG] [Thread-130111] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:53:00.303 [INFO] [Thread-130111] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:53:00.306 [DEBUG] [Thread-130111] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:00.306 [DEBUG] [Thread-130111] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:53:00.306 [DEBUG] [Thread-130111] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] Compression: none
2025-09-28T16:53:00.307 [DEBUG] [Thread-130111] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:00.323 [DEBUG] [Thread-130111] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:00.323 [DEBUG] [Thread-130111] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:00.323 [DEBUG] [Thread-130111] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:53:00.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:53:00.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:00.325 [DEBUG] [Thread-130111] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:00.326 [DEBUG] [Thread-130111] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:00.326 [DEBUG] [Thread-130111] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:00.326 [DEBUG] [Thread-130111] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:53:00.326 [DEBUG] [Thread-130111] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:00.344 [INFO] [Thread-130111] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:00.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:01.150 [DEBUG] [Thread-130111] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:01.150 [DEBUG] [Thread-130111] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:01.151 [DEBUG] [Thread-130111] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:53:01.191 [DEBUG] [Thread-130111] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:01.192 [DEBUG] [Thread-130111] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:01.195 [DEBUG] [Thread-130111] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:01.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:01.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:53:01.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:53:01.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:53:01.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:01.217 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:53:01.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:01.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:01.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:53:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619525 -999.00  +16.90  12.90     42   +4.10 1 1 1 1 1   887    0 10.90 -85.36 ----- 12.9 12.9 206.4 21.5 21.4 -27.6 20.7 -31.0 22.6 -27.5 23.3 -28.0
2025-09-28T16:53:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:53:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:53:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619525
2025-09-28T16:53:01.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:53:01.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:52:33', tmtdew=14.76, humidity=37.22, cloud=0.0, wind=23.98, temperature=16.87, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:52:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:53:01.220 [DEBUG] [Thread-130111] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:01.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:53:01.316 [DEBUG] [Thread-130114] [transport.py] [_log()] starting thread (client mode): 0x2b94dff0
2025-09-28T16:53:01.317 [DEBUG] [Thread-130114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:01.331 [DEBUG] [Thread-130114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:53:01.331 [INFO] [Thread-130114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:01.339 [DEBUG] [Thread-130114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:01.340 [DEBUG] [Thread-130114] [transport.py] [_log()] Compression: none
2025-09-28T16:53:01.340 [DEBUG] [Thread-130114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:01.398 [DEBUG] [Thread-130114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:01.399 [DEBUG] [Thread-130114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:01.399 [DEBUG] [Thread-130114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:53:01.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:53:01.400 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:01.455 [DEBUG] [Thread-130114] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:01.455 [DEBUG] [Thread-130114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:01.455 [DEBUG] [Thread-130114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:01.455 [DEBUG] [Thread-130114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:53:01.455 [DEBUG] [Thread-130114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:01.476 [INFO] [Thread-130114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:01.476 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:53:01.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:02.408 [DEBUG] [Thread-130114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:02.408 [DEBUG] [Thread-130114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:02.456 [DEBUG] [Thread-130114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:02.456 [DEBUG] [Thread-130114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:02.465 [DEBUG] [Thread-130114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:02.474 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:02.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-28T16:53:02.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-28T16:53:02.491 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:02.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:02.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:02.500 [DEBUG] [Thread-130114] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:05.331 [DEBUG] [Thread-130116 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:12.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:53:12.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:53:12.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:53:13.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 53, 5), 14.66, 37.42, 0.0, 23.22, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:53:13.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:53:05
2025-09-28T16:53:13.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:53:13.341 [DEBUG] [Thread-130117] [transport.py] [_log()] starting thread (client mode): 0x2b9bb310
2025-09-28T16:53:13.341 [DEBUG] [Thread-130117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:13.361 [DEBUG] [Thread-130117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:53:13.362 [INFO] [Thread-130117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:13.365 [DEBUG] [Thread-130117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] Compression: none
2025-09-28T16:53:13.366 [DEBUG] [Thread-130117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:13.383 [DEBUG] [Thread-130117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:13.384 [DEBUG] [Thread-130117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:13.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:53:13.385 [DEBUG] [Thread-130117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:53:13.386 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:13.387 [DEBUG] [Thread-130117] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:13.387 [DEBUG] [Thread-130117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:13.387 [DEBUG] [Thread-130117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:13.387 [DEBUG] [Thread-130117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:53:13.387 [DEBUG] [Thread-130117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:13.403 [INFO] [Thread-130117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:13.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:14.035 [DEBUG] [Thread-130117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:14.035 [DEBUG] [Thread-130117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:14.035 [DEBUG] [Thread-130117] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:53:14.076 [DEBUG] [Thread-130117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:14.076 [DEBUG] [Thread-130117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:14.078 [DEBUG] [Thread-130117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:14.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:14.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:53:14.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:53:14.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:53:14.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:14.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:53:14.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619873 -999.00  +17.00  12.25     42   +4.10 1 1 1 1 1   887    0 11.17 -83.59 ----- 12.2 12.2 188.0 16.6 21.4 -27.4 20.9 -28.1 22.6 -26.1 23.4 -28.9
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619873
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:53:14.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:53:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:53:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:53:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:53:14.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:53:05', tmtdew=14.66, humidity=37.42, cloud=0.0, wind=23.22, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:52:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:53:14.097 [DEBUG] [Thread-130117] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:14.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-28T16:53:14.180 [DEBUG] [Thread-130120] [transport.py] [_log()] starting thread (client mode): 0x2b9b8ee0
2025-09-28T16:53:14.181 [DEBUG] [Thread-130120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:14.196 [DEBUG] [Thread-130120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:53:14.196 [INFO] [Thread-130120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:53:14.203 [DEBUG] [Thread-130120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] Compression: none
2025-09-28T16:53:14.204 [DEBUG] [Thread-130120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:14.262 [DEBUG] [Thread-130120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:14.263 [DEBUG] [Thread-130120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:14.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:53:14.264 [DEBUG] [Thread-130120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:53:14.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:14.319 [DEBUG] [Thread-130120] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:14.319 [DEBUG] [Thread-130120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:14.319 [DEBUG] [Thread-130120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:14.319 [DEBUG] [Thread-130120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:53:14.319 [DEBUG] [Thread-130120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:14.338 [INFO] [Thread-130120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:14.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-28T16:53:14.339 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:15.285 [DEBUG] [Thread-130120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:15.285 [DEBUG] [Thread-130120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:15.333 [DEBUG] [Thread-130120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:15.333 [DEBUG] [Thread-130120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:15.342 [DEBUG] [Thread-130120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:15.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:15.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-28T16:53:15.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-28T16:53:15.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:15.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:15.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:15.380 [DEBUG] [Thread-130120] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:20.365 [DEBUG] [Thread-130122 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:22.228 [DEBUG] [Thread-130123 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:24.044 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:24.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:25.375 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:53:25.376 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:53:25.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-28T16:53:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 53, 5), 14.66, 37.42, 0.0, 23.22, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:53:25.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:53:05
2025-09-28T16:53:26.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:53:26.192 [DEBUG] [Thread-130124] [transport.py] [_log()] starting thread (client mode): 0x2b9b98a0
2025-09-28T16:53:26.192 [DEBUG] [Thread-130124] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:26.212 [DEBUG] [Thread-130124] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:53:26.212 [INFO] [Thread-130124] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:53:26.215 [DEBUG] [Thread-130124] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:26.215 [DEBUG] [Thread-130124] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:53:26.215 [DEBUG] [Thread-130124] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] Compression: none
2025-09-28T16:53:26.216 [DEBUG] [Thread-130124] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:26.235 [DEBUG] [Thread-130124] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:26.235 [DEBUG] [Thread-130124] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:26.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:53:26.236 [DEBUG] [Thread-130124] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:53:26.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:26.238 [DEBUG] [Thread-130124] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:26.239 [DEBUG] [Thread-130124] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:26.239 [DEBUG] [Thread-130124] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:26.239 [DEBUG] [Thread-130124] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:53:26.239 [DEBUG] [Thread-130124] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:26.274 [INFO] [Thread-130124] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:26.275 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:27.017 [DEBUG] [Thread-130124] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:27.017 [DEBUG] [Thread-130124] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:27.018 [DEBUG] [Thread-130124] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:53:27.058 [DEBUG] [Thread-130124] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:27.058 [DEBUG] [Thread-130124] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:27.061 [DEBUG] [Thread-130124] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:27.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:27.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:53:27.075 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:53:27.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:53:27.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:27.085 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:53:27.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:27.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:27.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:53:27.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.619873 -999.00  +17.00  12.25     42   +4.10 1 1 1 1 1   887    0 11.17 -83.59 ----- 12.2 12.2 188.0 16.6 21.4 -27.4 20.9 -28.1 22.6 -26.1 23.4 -28.9
2025-09-28T16:53:27.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:53:27.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:53:27.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.619873
2025-09-28T16:53:27.086 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:53:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:53:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:53:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:53:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:53:27.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:53:05', tmtdew=14.66, humidity=37.42, cloud=0.0, wind=23.22, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:52:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:53:27.087 [DEBUG] [Thread-130124] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:27.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-28T16:53:27.182 [DEBUG] [Thread-130127] [transport.py] [_log()] starting thread (client mode): 0x2b9df0d0
2025-09-28T16:53:27.182 [DEBUG] [Thread-130127] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:27.197 [DEBUG] [Thread-130127] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:53:27.197 [INFO] [Thread-130127] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:53:27.204 [DEBUG] [Thread-130127] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:27.204 [DEBUG] [Thread-130127] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:53:27.204 [DEBUG] [Thread-130127] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] Compression: none
2025-09-28T16:53:27.205 [DEBUG] [Thread-130127] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:27.262 [DEBUG] [Thread-130127] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:27.263 [DEBUG] [Thread-130127] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:27.263 [DEBUG] [Thread-130127] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:53:27.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:53:27.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:27.319 [DEBUG] [Thread-130127] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:27.319 [DEBUG] [Thread-130127] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:27.319 [DEBUG] [Thread-130127] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:27.319 [DEBUG] [Thread-130127] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:53:27.319 [DEBUG] [Thread-130127] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:27.337 [INFO] [Thread-130127] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:27.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-28T16:53:27.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:28.294 [DEBUG] [Thread-130127] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:28.294 [DEBUG] [Thread-130127] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:28.344 [DEBUG] [Thread-130127] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:28.344 [DEBUG] [Thread-130127] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:28.356 [DEBUG] [Thread-130127] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:28.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:28.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-28T16:53:28.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-28T16:53:28.392 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:28.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:28.392 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:28.403 [DEBUG] [Thread-130127] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:35.398 [DEBUG] [Thread-130129 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:38.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:53:38.402 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:53:38.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-28T16:53:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 53, 5), 14.66, 37.42, 0.0, 23.22, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:53:39.014 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:53:05
2025-09-28T16:53:39.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:53:39.286 [DEBUG] [Thread-130130] [transport.py] [_log()] starting thread (client mode): 0x2b9b80d0
2025-09-28T16:53:39.286 [DEBUG] [Thread-130130] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:39.304 [DEBUG] [Thread-130130] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:53:39.304 [INFO] [Thread-130130] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:39.306 [DEBUG] [Thread-130130] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:39.307 [DEBUG] [Thread-130130] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:39.307 [DEBUG] [Thread-130130] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:39.307 [DEBUG] [Thread-130130] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:39.307 [DEBUG] [Thread-130130] [transport.py] [_log()] Compression: none
2025-09-28T16:53:39.307 [DEBUG] [Thread-130130] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:39.319 [DEBUG] [Thread-130130] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:39.319 [DEBUG] [Thread-130130] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:39.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:53:39.320 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:53:39.320 [DEBUG] [Thread-130130] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:39.332 [INFO] [Thread-130130] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:39.332 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:39.925 [DEBUG] [Thread-130130] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:39.925 [DEBUG] [Thread-130130] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:39.926 [DEBUG] [Thread-130130] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:53:39.966 [DEBUG] [Thread-130130] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:39.966 [DEBUG] [Thread-130130] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:39.968 [DEBUG] [Thread-130130] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:39.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:39.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:53:39.974 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:53:39.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:53:39.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:39.980 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:53:39.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:39.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.620220 -999.00  +17.00  21.38     42   +4.00 1 1 1 1 1   887    0 11.07 -78.32 ----- 21.4 21.4 199.2 24.9 21.4 -27.8 20.7 -29.8 22.5 -27.9 23.2 -28.1
2025-09-28T16:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:53:39.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.620220
2025-09-28T16:53:39.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:53:39.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:53:39.983 [DEBUG] [Thread-130130] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:39.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:53:39.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:53:39.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:53:39.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:53:05', tmtdew=14.66, humidity=37.42, cloud=0.0, wind=23.22, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:53:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:53:40.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-28T16:53:40.080 [DEBUG] [Thread-130133] [transport.py] [_log()] starting thread (client mode): 0x2b957f10
2025-09-28T16:53:40.080 [DEBUG] [Thread-130133] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:40.094 [DEBUG] [Thread-130133] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:53:40.094 [INFO] [Thread-130133] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:40.102 [DEBUG] [Thread-130133] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:40.103 [DEBUG] [Thread-130133] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] Compression: none
2025-09-28T16:53:40.104 [DEBUG] [Thread-130133] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:40.158 [DEBUG] [Thread-130133] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:40.158 [DEBUG] [Thread-130133] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:40.159 [DEBUG] [Thread-130133] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:53:40.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:53:40.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:40.214 [DEBUG] [Thread-130133] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:40.215 [DEBUG] [Thread-130133] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:40.215 [DEBUG] [Thread-130133] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:40.215 [DEBUG] [Thread-130133] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:53:40.215 [DEBUG] [Thread-130133] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:40.237 [INFO] [Thread-130133] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:40.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-28T16:53:40.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:41.179 [DEBUG] [Thread-130133] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:41.179 [DEBUG] [Thread-130133] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:41.227 [DEBUG] [Thread-130133] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:41.227 [DEBUG] [Thread-130133] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:41.235 [DEBUG] [Thread-130133] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:41.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:41.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-28T16:53:41.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-28T16:53:41.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:41.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:41.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:41.269 [DEBUG] [Thread-130133] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:50.424 [DEBUG] [Thread-130135 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:53:51.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:53:51.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:53:51.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-28T16:53:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 53, 37), 14.53, 37.62, 0.0, 23.01, 16.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:53:51.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:53:37
2025-09-28T16:53:51.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:53:52.098 [DEBUG] [Thread-130136] [transport.py] [_log()] starting thread (client mode): 0x2b955d50
2025-09-28T16:53:52.098 [DEBUG] [Thread-130136] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:52.118 [DEBUG] [Thread-130136] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:53:52.118 [INFO] [Thread-130136] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] Compression: none
2025-09-28T16:53:52.121 [DEBUG] [Thread-130136] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:52.134 [DEBUG] [Thread-130136] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:52.134 [DEBUG] [Thread-130136] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:52.135 [DEBUG] [Thread-130136] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:53:52.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:53:52.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:52.137 [DEBUG] [Thread-130136] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:52.137 [DEBUG] [Thread-130136] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:52.137 [DEBUG] [Thread-130136] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:52.137 [DEBUG] [Thread-130136] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:53:52.137 [DEBUG] [Thread-130136] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:52.155 [INFO] [Thread-130136] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:52.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:52.965 [DEBUG] [Thread-130136] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:52.965 [DEBUG] [Thread-130136] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:52.965 [DEBUG] [Thread-130136] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:53:53.005 [DEBUG] [Thread-130136] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:53.005 [DEBUG] [Thread-130136] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:53.008 [DEBUG] [Thread-130136] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:53.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:53.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:53:53.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:53:53.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:53:53.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:53.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:53:53.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:53.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:53.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:53:53.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.620220 -999.00  +17.00  21.38     42   +4.00 1 1 1 1 1   887    0 11.07 -78.32 ----- 21.4 21.4 199.2 24.9 21.4 -27.8 20.7 -29.8 22.5 -27.9 23.2 -28.1
2025-09-28T16:53:53.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:53:53.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:53:53.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.620220
2025-09-28T16:53:53.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:53:53.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:53:53.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:53:53.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:53:53.031 [DEBUG] [Thread-130136] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:53:53.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:53:53.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:53:37', tmtdew=14.53, humidity=37.62, cloud=0.0, wind=23.01, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:53:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:53:53.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-28T16:53:53.122 [DEBUG] [Thread-130139] [transport.py] [_log()] starting thread (client mode): 0x2b957970
2025-09-28T16:53:53.123 [DEBUG] [Thread-130139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:53:53.138 [DEBUG] [Thread-130139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:53:53.138 [INFO] [Thread-130139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:53:53.145 [DEBUG] [Thread-130139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] client lang: <none>
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] server lang: <none>
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] kex follows: False
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] Compression: none
2025-09-28T16:53:53.146 [DEBUG] [Thread-130139] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:53:53.202 [DEBUG] [Thread-130139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:53:53.203 [DEBUG] [Thread-130139] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:53:53.203 [DEBUG] [Thread-130139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:53:53.203 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:53:53.204 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:53:53.259 [DEBUG] [Thread-130139] [transport.py] [_log()] userauth is OK
2025-09-28T16:53:53.259 [DEBUG] [Thread-130139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:53:53.259 [DEBUG] [Thread-130139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:53:53.259 [DEBUG] [Thread-130139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:53:53.259 [DEBUG] [Thread-130139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:53:53.278 [INFO] [Thread-130139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:53:53.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-28T16:53:53.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:53:54.212 [DEBUG] [Thread-130139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:53:54.213 [DEBUG] [Thread-130139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:53:54.260 [DEBUG] [Thread-130139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:53:54.260 [DEBUG] [Thread-130139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:53:54.269 [DEBUG] [Thread-130139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:53:54.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:53:54.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-28T16:53:54.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-28T16:53:54.295 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:53:54.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:53:54.295 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:53:54.303 [DEBUG] [Thread-130139] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:54:04.302 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:54:04.302 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:54:04.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-28T16:54:04.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 53, 37), 14.53, 37.62, 0.0, 23.01, 16.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:54:04.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:53:37
2025-09-28T16:54:04.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:54:05.122 [DEBUG] [Thread-130141] [transport.py] [_log()] starting thread (client mode): 0x2b9b8400
2025-09-28T16:54:05.122 [DEBUG] [Thread-130141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:54:05.143 [DEBUG] [Thread-130141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:54:05.143 [INFO] [Thread-130141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] client lang: <none>
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] server lang: <none>
2025-09-28T16:54:05.146 [DEBUG] [Thread-130141] [transport.py] [_log()] kex follows: False
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] Compression: none
2025-09-28T16:54:05.147 [DEBUG] [Thread-130141] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:54:05.168 [DEBUG] [Thread-130141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:54:05.168 [DEBUG] [Thread-130141] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:54:05.169 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:54:05.169 [DEBUG] [Thread-130141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:54:05.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:54:05.170 [DEBUG] [Thread-130141] [transport.py] [_log()] userauth is OK
2025-09-28T16:54:05.171 [DEBUG] [Thread-130141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:54:05.171 [DEBUG] [Thread-130141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:54:05.171 [DEBUG] [Thread-130141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:54:05.171 [DEBUG] [Thread-130141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:54:05.204 [INFO] [Thread-130141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:54:05.205 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:54:05.473 [DEBUG] [Thread-130143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:06.035 [DEBUG] [Thread-130141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:54:06.035 [DEBUG] [Thread-130141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:54:06.036 [DEBUG] [Thread-130141] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:54:06.077 [DEBUG] [Thread-130141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:54:06.077 [DEBUG] [Thread-130141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:54:06.079 [DEBUG] [Thread-130141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:54:06.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:54:06.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:54:06.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:54:06.096 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:54:06.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:54:06.103 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:54:06.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.620220 -999.00  +17.00  21.38     42   +4.00 1 1 1 1 1   887    0 11.07 -78.32 ----- 21.4 21.4 199.2 24.9 21.4 -27.8 20.7 -29.8 22.5 -27.9 23.2 -28.1
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:54:06.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.620220
2025-09-28T16:54:06.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:54:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:54:06.106 [DEBUG] [Thread-130141] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:54:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:54:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:54:06.106 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:54:06.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:53:37', tmtdew=14.53, humidity=37.62, cloud=0.0, wind=23.01, temperature=16.67, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:53:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:54:06.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-28T16:54:20.515 [DEBUG] [Thread-130145 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:22.281 [DEBUG] [Thread-130146 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:24.186 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:24.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:35.549 [DEBUG] [Thread-130147 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:54:50.576 [DEBUG] [Thread-130148 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:05.604 [DEBUG] [Thread-130149 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:20.634 [DEBUG] [Thread-130150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:22.313 [DEBUG] [Thread-130151 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:24.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:24.330 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:35.664 [DEBUG] [Thread-130152 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:55:50.695 [DEBUG] [Thread-130153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:05.723 [DEBUG] [Thread-130154 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:18.618 [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-28T16:56:20.749 [DEBUG] [Thread-130155 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:22.369 [DEBUG] [Thread-130156 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:24.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:24.470 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:28.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:56:28.629 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:56:28.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-28T16:56:29.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 56, 17), 14.52, 37.46, 0.0, 21.84, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:56:29.238 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:56:17
2025-09-28T16:56:29.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:56:29.497 [DEBUG] [Thread-130157] [transport.py] [_log()] starting thread (client mode): 0x2e349a80
2025-09-28T16:56:29.498 [DEBUG] [Thread-130157] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:29.517 [DEBUG] [Thread-130157] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:56:29.517 [INFO] [Thread-130157] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:56:29.520 [DEBUG] [Thread-130157] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:29.521 [DEBUG] [Thread-130157] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] Compression: none
2025-09-28T16:56:29.522 [DEBUG] [Thread-130157] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:29.540 [DEBUG] [Thread-130157] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:29.540 [DEBUG] [Thread-130157] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:29.541 [DEBUG] [Thread-130157] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:56:29.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:56:29.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:29.543 [DEBUG] [Thread-130157] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:29.544 [DEBUG] [Thread-130157] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:29.544 [DEBUG] [Thread-130157] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:29.544 [DEBUG] [Thread-130157] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:56:29.544 [DEBUG] [Thread-130157] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:29.560 [INFO] [Thread-130157] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:29.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:30.157 [DEBUG] [Thread-130157] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:30.158 [DEBUG] [Thread-130157] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:30.158 [DEBUG] [Thread-130157] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:56:30.198 [DEBUG] [Thread-130157] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:30.199 [DEBUG] [Thread-130157] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:30.202 [DEBUG] [Thread-130157] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:30.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:30.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:56:30.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:56:30.216 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:56:30.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:30.225 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:56:30.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:30.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:30.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:56:30.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622303 -999.00  +16.70  14.78     42   +3.80 1 1 1 1 1   887    0 11.31 -67.43 ----- 14.8 14.8 182.8 19.4 21.1 -27.5 20.5 -27.0 22.2 -26.4 22.9 -28.3
2025-09-28T16:56:30.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:56:30.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:56:30.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622303
2025-09-28T16:56:30.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:56:30.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:56:30.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:56:30.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:56:30.227 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:56:30.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:56:17', tmtdew=14.52, humidity=37.46, cloud=0.0, wind=21.84, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:56:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:56:30.228 [DEBUG] [Thread-130157] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:56:30.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:56:30.326 [DEBUG] [Thread-130160] [transport.py] [_log()] starting thread (client mode): 0x2e360dc0
2025-09-28T16:56:30.326 [DEBUG] [Thread-130160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:30.340 [DEBUG] [Thread-130160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:56:30.341 [INFO] [Thread-130160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:56:30.348 [DEBUG] [Thread-130160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:30.348 [DEBUG] [Thread-130160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:30.349 [DEBUG] [Thread-130160] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] Compression: none
2025-09-28T16:56:30.350 [DEBUG] [Thread-130160] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:30.407 [DEBUG] [Thread-130160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:30.407 [DEBUG] [Thread-130160] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:30.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:56:30.408 [DEBUG] [Thread-130160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:56:30.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:30.464 [DEBUG] [Thread-130160] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:30.464 [DEBUG] [Thread-130160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:30.464 [DEBUG] [Thread-130160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:30.464 [DEBUG] [Thread-130160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:56:30.464 [DEBUG] [Thread-130160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:30.483 [INFO] [Thread-130160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:30.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:56:30.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:31.514 [DEBUG] [Thread-130160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:31.514 [DEBUG] [Thread-130160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:31.562 [DEBUG] [Thread-130160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:31.562 [DEBUG] [Thread-130160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:31.571 [DEBUG] [Thread-130160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:31.580 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:31.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-28T16:56:31.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') -> 00000000
2025-09-28T16:56:31.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:31.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:31.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:31.606 [DEBUG] [Thread-130160] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:56:35.785 [DEBUG] [Thread-130162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:41.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:56:41.609 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:56:41.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-28T16:56:42.248 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 56, 17), 14.52, 37.46, 0.0, 21.84, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:56:42.249 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:56:17
2025-09-28T16:56:42.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:56:42.518 [DEBUG] [Thread-130163] [transport.py] [_log()] starting thread (client mode): 0x2e363b80
2025-09-28T16:56:42.518 [DEBUG] [Thread-130163] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:42.536 [DEBUG] [Thread-130163] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:56:42.536 [INFO] [Thread-130163] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] Compression: none
2025-09-28T16:56:42.540 [DEBUG] [Thread-130163] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:42.555 [DEBUG] [Thread-130163] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:42.555 [DEBUG] [Thread-130163] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:42.555 [DEBUG] [Thread-130163] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:56:42.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:56:42.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:42.557 [DEBUG] [Thread-130163] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:42.557 [DEBUG] [Thread-130163] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:42.557 [DEBUG] [Thread-130163] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:42.557 [DEBUG] [Thread-130163] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:56:42.557 [DEBUG] [Thread-130163] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:42.572 [INFO] [Thread-130163] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:42.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:43.195 [DEBUG] [Thread-130163] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:43.195 [DEBUG] [Thread-130163] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:43.195 [DEBUG] [Thread-130163] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:56:43.236 [DEBUG] [Thread-130163] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:43.236 [DEBUG] [Thread-130163] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:43.238 [DEBUG] [Thread-130163] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:43.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:43.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:56:43.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:56:43.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:56:43.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:43.255 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:56:43.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622303 -999.00  +16.70  14.78     42   +3.80 1 1 1 1 1   887    0 11.31 -67.43 ----- 14.8 14.8 182.8 19.4 21.1 -27.5 20.5 -27.0 22.2 -26.4 22.9 -28.3
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622303
2025-09-28T16:56:43.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:56:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:56:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:56:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:56:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:56:43.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:56:17', tmtdew=14.52, humidity=37.46, cloud=0.0, wind=21.84, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:56:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:56:43.256 [DEBUG] [Thread-130163] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:56:43.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-28T16:56:43.342 [DEBUG] [Thread-130166] [transport.py] [_log()] starting thread (client mode): 0x2b9de860
2025-09-28T16:56:43.342 [DEBUG] [Thread-130166] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:43.357 [DEBUG] [Thread-130166] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:56:43.357 [INFO] [Thread-130166] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] Compression: none
2025-09-28T16:56:43.365 [DEBUG] [Thread-130166] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:43.421 [DEBUG] [Thread-130166] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:43.421 [DEBUG] [Thread-130166] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:43.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:56:43.421 [DEBUG] [Thread-130166] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:56:43.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:43.478 [DEBUG] [Thread-130166] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:43.478 [DEBUG] [Thread-130166] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:43.478 [DEBUG] [Thread-130166] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:43.478 [DEBUG] [Thread-130166] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:56:43.478 [DEBUG] [Thread-130166] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:43.493 [INFO] [Thread-130166] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:43.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-28T16:56:43.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:44.469 [DEBUG] [Thread-130166] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:44.469 [DEBUG] [Thread-130166] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:44.517 [DEBUG] [Thread-130166] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:44.517 [DEBUG] [Thread-130166] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:44.525 [DEBUG] [Thread-130166] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:44.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:44.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-28T16:56: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') -> 00000000
2025-09-28T16:56:44.549 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:44.549 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:44.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:44.557 [DEBUG] [Thread-130166] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:56:50.821 [DEBUG] [Thread-130168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:56:54.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:56:54.559 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:56:54.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-28T16:56:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 56, 49), 14.42, 38.06, 0.0, 19.53, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:56:55.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:56:49
2025-09-28T16:56:55.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:56:55.407 [DEBUG] [Thread-130169] [transport.py] [_log()] starting thread (client mode): 0x2e3491e0
2025-09-28T16:56:55.407 [DEBUG] [Thread-130169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:55.427 [DEBUG] [Thread-130169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:56:55.427 [INFO] [Thread-130169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] Compression: none
2025-09-28T16:56:55.431 [DEBUG] [Thread-130169] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:55.448 [DEBUG] [Thread-130169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:55.448 [DEBUG] [Thread-130169] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:55.449 [DEBUG] [Thread-130169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:56:55.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:56:55.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:55.492 [DEBUG] [Thread-130169] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:55.493 [DEBUG] [Thread-130169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:55.493 [DEBUG] [Thread-130169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:55.493 [DEBUG] [Thread-130169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:56:55.493 [DEBUG] [Thread-130169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:55.525 [INFO] [Thread-130169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:55.525 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:56.142 [DEBUG] [Thread-130169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:56.143 [DEBUG] [Thread-130169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:56.143 [DEBUG] [Thread-130169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:56:56.183 [DEBUG] [Thread-130169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:56.183 [DEBUG] [Thread-130169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:56.187 [DEBUG] [Thread-130169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:56.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:56.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:56:56.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:56:56.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:56:56.210 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:56.212 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:56:56.213 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:56.213 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:56.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:56:56.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622303 -999.00  +16.70  14.78     42   +3.80 1 1 1 1 1   887    0 11.31 -67.43 ----- 14.8 14.8 182.8 19.4 21.1 -27.5 20.5 -27.0 22.2 -26.4 22.9 -28.3
2025-09-28T16:56:56.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:56:56.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:56:56.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622303
2025-09-28T16:56:56.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:56:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:56:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:56:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:56:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:56:56.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:56:49', tmtdew=14.42, humidity=38.06, cloud=0.0, wind=19.53, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:56:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:56:56.215 [DEBUG] [Thread-130169] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:56:56.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-28T16:56:56.298 [DEBUG] [Thread-130172] [transport.py] [_log()] starting thread (client mode): 0x2e3490f0
2025-09-28T16:56:56.298 [DEBUG] [Thread-130172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:56:56.313 [DEBUG] [Thread-130172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:56:56.313 [INFO] [Thread-130172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:56:56.320 [DEBUG] [Thread-130172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:56:56.321 [DEBUG] [Thread-130172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] client lang: <none>
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] server lang: <none>
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] kex follows: False
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:56:56.322 [DEBUG] [Thread-130172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:56:56.323 [DEBUG] [Thread-130172] [transport.py] [_log()] Compression: none
2025-09-28T16:56:56.323 [DEBUG] [Thread-130172] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:56:56.383 [DEBUG] [Thread-130172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:56:56.383 [DEBUG] [Thread-130172] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:56:56.384 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:56:56.385 [DEBUG] [Thread-130172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:56:56.385 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:56:56.443 [DEBUG] [Thread-130172] [transport.py] [_log()] userauth is OK
2025-09-28T16:56:56.443 [DEBUG] [Thread-130172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:56:56.443 [DEBUG] [Thread-130172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:56:56.443 [DEBUG] [Thread-130172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:56:56.444 [DEBUG] [Thread-130172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:56:56.465 [INFO] [Thread-130172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:56:56.466 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T16:56:56.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:56:57.378 [DEBUG] [Thread-130172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:56:57.378 [DEBUG] [Thread-130172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:56:57.426 [DEBUG] [Thread-130172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:56:57.427 [DEBUG] [Thread-130172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:56:57.436 [DEBUG] [Thread-130172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:56:57.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:56:57.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-28T16:56:57.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-28T16:56:57.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:56:57.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:56:57.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:56:57.470 [DEBUG] [Thread-130172] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:05.850 [DEBUG] [Thread-130174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:07.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:57:07.467 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:57:07.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:57:08.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 56, 49), 14.42, 38.06, 0.0, 19.53, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:57:08.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:56:49
2025-09-28T16:57:08.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:57:08.309 [DEBUG] [Thread-130175] [transport.py] [_log()] starting thread (client mode): 0x2b9df880
2025-09-28T16:57:08.309 [DEBUG] [Thread-130175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:08.329 [DEBUG] [Thread-130175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:57:08.329 [INFO] [Thread-130175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:57:08.332 [DEBUG] [Thread-130175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:08.332 [DEBUG] [Thread-130175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:57:08.332 [DEBUG] [Thread-130175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:08.332 [DEBUG] [Thread-130175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] Compression: none
2025-09-28T16:57:08.333 [DEBUG] [Thread-130175] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:08.350 [DEBUG] [Thread-130175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:08.350 [DEBUG] [Thread-130175] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:08.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:57:08.351 [DEBUG] [Thread-130175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:57:08.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:08.354 [DEBUG] [Thread-130175] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:08.354 [DEBUG] [Thread-130175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:08.354 [DEBUG] [Thread-130175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:08.354 [DEBUG] [Thread-130175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:57:08.354 [DEBUG] [Thread-130175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:08.377 [INFO] [Thread-130175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:08.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:09.024 [DEBUG] [Thread-130175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:09.024 [DEBUG] [Thread-130175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:09.024 [DEBUG] [Thread-130175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:57:09.065 [DEBUG] [Thread-130175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:09.066 [DEBUG] [Thread-130175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:09.068 [DEBUG] [Thread-130175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:09.080 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:09.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:57:09.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:57:09.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:57:09.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:09.091 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:57:09.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:09.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:09.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:57:09.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622650 -999.00  +16.70  10.58     42   +3.90 1 1 1 1 1   887    0 11.21 -63.26 ----- 10.6 10.6 194.2 16.9 21.1 -27.4 20.5 -26.8 22.3 -26.0 23.0 -27.7
2025-09-28T16:57:09.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:57:09.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:57:09.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622650
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:57:09.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:56:49', tmtdew=14.42, humidity=38.06, cloud=0.0, wind=19.53, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:56:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:57:09.094 [DEBUG] [Thread-130175] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:09.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-28T16:57:09.190 [DEBUG] [Thread-130178] [transport.py] [_log()] starting thread (client mode): 0x2b9b8580
2025-09-28T16:57:09.190 [DEBUG] [Thread-130178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:09.205 [DEBUG] [Thread-130178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:57:09.205 [INFO] [Thread-130178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:57:09.213 [DEBUG] [Thread-130178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:09.213 [DEBUG] [Thread-130178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:57:09.213 [DEBUG] [Thread-130178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] Compression: none
2025-09-28T16:57:09.214 [DEBUG] [Thread-130178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:09.270 [DEBUG] [Thread-130178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:09.271 [DEBUG] [Thread-130178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:09.271 [DEBUG] [Thread-130178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:57:09.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:57:09.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:09.327 [DEBUG] [Thread-130178] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:09.327 [DEBUG] [Thread-130178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:09.327 [DEBUG] [Thread-130178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:09.327 [DEBUG] [Thread-130178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:57:09.327 [DEBUG] [Thread-130178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:09.346 [INFO] [Thread-130178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:09.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-28T16:57:09.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:10.362 [DEBUG] [Thread-130178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:10.362 [DEBUG] [Thread-130178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:10.410 [DEBUG] [Thread-130178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:10.410 [DEBUG] [Thread-130178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:10.420 [DEBUG] [Thread-130178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:10.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:10.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')
2025-09-28T16:57:10.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-28T16:57:10.447 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:10.447 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:10.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:10.455 [DEBUG] [Thread-130178] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:20.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:57:20.458 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:57:20.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-28T16:57:20.900 [DEBUG] [Thread-130180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 56, 49), 14.42, 38.06, 0.0, 19.53, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:57:21.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:56:49
2025-09-28T16:57:21.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:57:21.350 [DEBUG] [Thread-130181] [transport.py] [_log()] starting thread (client mode): 0x2e361a20
2025-09-28T16:57:21.350 [DEBUG] [Thread-130181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:21.370 [DEBUG] [Thread-130181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:57:21.370 [INFO] [Thread-130181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] Compression: none
2025-09-28T16:57:21.373 [DEBUG] [Thread-130181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:21.388 [DEBUG] [Thread-130181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:21.388 [DEBUG] [Thread-130181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:21.388 [DEBUG] [Thread-130181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:57:21.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:57:21.388 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:21.389 [DEBUG] [Thread-130181] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:21.389 [DEBUG] [Thread-130181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:21.389 [DEBUG] [Thread-130181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:21.389 [DEBUG] [Thread-130181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:57:21.389 [DEBUG] [Thread-130181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:21.405 [INFO] [Thread-130181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:21.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:22.052 [DEBUG] [Thread-130181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:22.052 [DEBUG] [Thread-130181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:22.052 [DEBUG] [Thread-130181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:57:22.093 [DEBUG] [Thread-130181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:22.093 [DEBUG] [Thread-130181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:22.095 [DEBUG] [Thread-130181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:22.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:22.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:57:22.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:57:22.109 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:22.112 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:57:22.112 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622650 -999.00  +16.70  10.58     42   +3.90 1 1 1 1 1   887    0 11.21 -63.26 ----- 10.6 10.6 194.2 16.9 21.1 -27.4 20.5 -26.8 22.3 -26.0 23.0 -27.7
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:57:22.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622650
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:57:22.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:56:49', tmtdew=14.42, humidity=38.06, cloud=0.0, wind=19.53, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:56:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:57:22.113 [DEBUG] [Thread-130181] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:22.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-28T16:57:22.197 [DEBUG] [Thread-130184] [transport.py] [_log()] starting thread (client mode): 0x2e3490f0
2025-09-28T16:57:22.197 [DEBUG] [Thread-130184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:22.211 [DEBUG] [Thread-130184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:57:22.211 [INFO] [Thread-130184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] Compression: none
2025-09-28T16:57:22.219 [DEBUG] [Thread-130184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:22.274 [DEBUG] [Thread-130184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:22.274 [DEBUG] [Thread-130184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:22.274 [DEBUG] [Thread-130184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:57:22.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:57:22.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:22.330 [DEBUG] [Thread-130184] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:22.331 [DEBUG] [Thread-130184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:22.331 [DEBUG] [Thread-130184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:22.331 [DEBUG] [Thread-130184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:57:22.331 [DEBUG] [Thread-130184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:22.345 [INFO] [Thread-130184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:22.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-28T16:57:22.345 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:22.416 [DEBUG] [Thread-130186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:23.302 [DEBUG] [Thread-130184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:23.302 [DEBUG] [Thread-130184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:23.350 [DEBUG] [Thread-130184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:23.350 [DEBUG] [Thread-130184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:23.358 [DEBUG] [Thread-130184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:23.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:23.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-28T16:57:23.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T16:57:23.382 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:23.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:23.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:23.390 [DEBUG] [Thread-130184] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:24.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:24.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:33.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:57:33.393 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:57:33.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:57:33.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 57, 21), 14.33, 38.28, 0.0, 18.9, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:57:33.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:57:21
2025-09-28T16:57:34.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:57:34.245 [DEBUG] [Thread-130187] [transport.py] [_log()] starting thread (client mode): 0x2b9dcd30
2025-09-28T16:57:34.245 [DEBUG] [Thread-130187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:34.263 [DEBUG] [Thread-130187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:57:34.263 [INFO] [Thread-130187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:57:34.264 [DEBUG] [Thread-130187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:34.264 [DEBUG] [Thread-130187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:57:34.264 [DEBUG] [Thread-130187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] Compression: none
2025-09-28T16:57:34.265 [DEBUG] [Thread-130187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:34.275 [DEBUG] [Thread-130187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:34.276 [DEBUG] [Thread-130187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:34.276 [DEBUG] [Thread-130187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:57:34.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:57:34.277 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:34.278 [DEBUG] [Thread-130187] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:34.278 [DEBUG] [Thread-130187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:34.278 [DEBUG] [Thread-130187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:34.278 [DEBUG] [Thread-130187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:57:34.278 [DEBUG] [Thread-130187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:34.292 [INFO] [Thread-130187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:34.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:34.893 [DEBUG] [Thread-130187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:34.894 [DEBUG] [Thread-130187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:34.894 [DEBUG] [Thread-130187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:57:34.934 [DEBUG] [Thread-130187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:34.934 [DEBUG] [Thread-130187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:34.937 [DEBUG] [Thread-130187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:34.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:34.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:57:34.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:57:34.953 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:57:34.957 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:34.959 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:57:34.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:34.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:57:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622998 -999.00  +16.80   9.91     42   +4.00 1 1 1 1 1   887    0 11.35 -62.83 ----- 9.9 9.9 196.6 17.2 21.0 -27.5 20.5 -29.0 22.3 -26.6 22.9 -28.7
2025-09-28T16:57:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:57:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:57:34.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622998
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:57:34.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:57:21', tmtdew=14.33, humidity=38.28, cloud=0.0, wind=18.9, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:57:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:57:34.962 [DEBUG] [Thread-130187] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:35.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-28T16:57:35.057 [DEBUG] [Thread-130190] [transport.py] [_log()] starting thread (client mode): 0x2e349210
2025-09-28T16:57:35.057 [DEBUG] [Thread-130190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:35.073 [DEBUG] [Thread-130190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:57:35.073 [INFO] [Thread-130190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:57:35.081 [DEBUG] [Thread-130190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:35.082 [DEBUG] [Thread-130190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] Compression: none
2025-09-28T16:57:35.083 [DEBUG] [Thread-130190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:35.142 [DEBUG] [Thread-130190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:35.142 [DEBUG] [Thread-130190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:35.143 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:57:35.144 [DEBUG] [Thread-130190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:57:35.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:35.199 [DEBUG] [Thread-130190] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:35.199 [DEBUG] [Thread-130190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:35.200 [DEBUG] [Thread-130190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:35.200 [DEBUG] [Thread-130190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:57:35.200 [DEBUG] [Thread-130190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:35.222 [INFO] [Thread-130190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:35.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-28T16:57:35.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:35.938 [DEBUG] [Thread-130192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:36.173 [DEBUG] [Thread-130190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:36.173 [DEBUG] [Thread-130190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:36.221 [DEBUG] [Thread-130190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:36.221 [DEBUG] [Thread-130190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:36.230 [DEBUG] [Thread-130190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:36.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:36.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-28T16:57:36.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-28T16:57:36.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:36.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:36.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:36.264 [DEBUG] [Thread-130190] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:46.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:57:46.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:57:46.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-28T16:57:46.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 57, 21), 14.33, 38.28, 0.0, 18.9, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:57:46.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:57:21
2025-09-28T16:57:46.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:57:47.112 [DEBUG] [Thread-130193] [transport.py] [_log()] starting thread (client mode): 0x2b9de470
2025-09-28T16:57:47.112 [DEBUG] [Thread-130193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:47.135 [DEBUG] [Thread-130193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:57:47.135 [INFO] [Thread-130193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:57:47.138 [DEBUG] [Thread-130193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] Compression: none
2025-09-28T16:57:47.139 [DEBUG] [Thread-130193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:47.155 [DEBUG] [Thread-130193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:47.155 [DEBUG] [Thread-130193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:47.156 [DEBUG] [Thread-130193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:57:47.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:57:47.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:47.158 [DEBUG] [Thread-130193] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:47.158 [DEBUG] [Thread-130193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:47.158 [DEBUG] [Thread-130193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:47.159 [DEBUG] [Thread-130193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:57:47.159 [DEBUG] [Thread-130193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:47.195 [INFO] [Thread-130193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:47.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:47.864 [DEBUG] [Thread-130193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:47.865 [DEBUG] [Thread-130193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:47.865 [DEBUG] [Thread-130193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:57:47.905 [DEBUG] [Thread-130193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:47.905 [DEBUG] [Thread-130193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:47.908 [DEBUG] [Thread-130193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:47.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:47.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:57:47.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:57:47.924 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:57:47.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:47.933 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:57:47.933 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622998 -999.00  +16.80   9.91     42   +4.00 1 1 1 1 1   887    0 11.35 -62.83 ----- 9.9 9.9 196.6 17.2 21.0 -27.5 20.5 -29.0 22.3 -26.6 22.9 -28.7
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:57:47.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622998
2025-09-28T16:57:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:57:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:57:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:57:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:57:47.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:57:47.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:57:21', tmtdew=14.33, humidity=38.28, cloud=0.0, wind=18.9, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:57:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:57:47.936 [DEBUG] [Thread-130193] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:48.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:57:48.030 [DEBUG] [Thread-130196] [transport.py] [_log()] starting thread (client mode): 0x2b929450
2025-09-28T16:57:48.031 [DEBUG] [Thread-130196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:57:48.046 [DEBUG] [Thread-130196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:57:48.046 [INFO] [Thread-130196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:57:48.053 [DEBUG] [Thread-130196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:57:48.053 [DEBUG] [Thread-130196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:57:48.053 [DEBUG] [Thread-130196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:57:48.053 [DEBUG] [Thread-130196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:48.053 [DEBUG] [Thread-130196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] client lang: <none>
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] server lang: <none>
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] kex follows: False
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] Compression: none
2025-09-28T16:57:48.054 [DEBUG] [Thread-130196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:57:48.118 [DEBUG] [Thread-130196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:57:48.118 [DEBUG] [Thread-130196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:57:48.118 [DEBUG] [Thread-130196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:57:48.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:57:48.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:57:48.175 [DEBUG] [Thread-130196] [transport.py] [_log()] userauth is OK
2025-09-28T16:57:48.175 [DEBUG] [Thread-130196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:57:48.175 [DEBUG] [Thread-130196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:57:48.176 [DEBUG] [Thread-130196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:57:48.176 [DEBUG] [Thread-130196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:57:48.195 [INFO] [Thread-130196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:57:48.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-28T16:57:48.196 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:57:49.118 [DEBUG] [Thread-130196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:57:49.118 [DEBUG] [Thread-130196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:57:49.165 [DEBUG] [Thread-130196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:57:49.165 [DEBUG] [Thread-130196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:57:49.174 [DEBUG] [Thread-130196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:57:49.183 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:57:49.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-28T16:57:49.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-28T16:57:49.200 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:57:49.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:57:49.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:57:49.208 [DEBUG] [Thread-130196] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:57:50.984 [DEBUG] [Thread-130198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:57:59.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:57:59.211 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:57:59.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-28T16:57:59.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 57, 53), 14.36, 38.23, 0.0, 17.4, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:57:59.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:57:53
2025-09-28T16:57:59.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:58:00.092 [DEBUG] [Thread-130199] [transport.py] [_log()] starting thread (client mode): 0x2e3c3820
2025-09-28T16:58:00.092 [DEBUG] [Thread-130199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:00.113 [DEBUG] [Thread-130199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:58:00.113 [INFO] [Thread-130199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] Compression: none
2025-09-28T16:58:00.116 [DEBUG] [Thread-130199] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:00.133 [DEBUG] [Thread-130199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:00.133 [DEBUG] [Thread-130199] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:00.133 [DEBUG] [Thread-130199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:58:00.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:58:00.133 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:00.134 [DEBUG] [Thread-130199] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:00.134 [DEBUG] [Thread-130199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:00.134 [DEBUG] [Thread-130199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:00.134 [DEBUG] [Thread-130199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:58:00.134 [DEBUG] [Thread-130199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:00.147 [INFO] [Thread-130199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:00.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:00.773 [DEBUG] [Thread-130199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:00.773 [DEBUG] [Thread-130199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:00.773 [DEBUG] [Thread-130199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:58:00.814 [DEBUG] [Thread-130199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:00.814 [DEBUG] [Thread-130199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:00.816 [DEBUG] [Thread-130199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:00.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:00.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:58:00.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:58:00.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:58:00.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:00.835 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:58:00.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.622998 -999.00  +16.80   9.91     42   +4.00 1 1 1 1 1   887    0 11.35 -62.83 ----- 9.9 9.9 196.6 17.2 21.0 -27.5 20.5 -29.0 22.3 -26.6 22.9 -28.7
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.622998
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:58:00.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:57:53', tmtdew=14.36, humidity=38.23, cloud=0.0, wind=17.4, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:57:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:58:00.836 [DEBUG] [Thread-130199] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:00.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-28T16:58:00.922 [DEBUG] [Thread-130202] [transport.py] [_log()] starting thread (client mode): 0x2e3c0880
2025-09-28T16:58:00.922 [DEBUG] [Thread-130202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:00.937 [DEBUG] [Thread-130202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:58:00.937 [INFO] [Thread-130202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] Compression: none
2025-09-28T16:58:00.944 [DEBUG] [Thread-130202] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:01.003 [DEBUG] [Thread-130202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:01.003 [DEBUG] [Thread-130202] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:01.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:58:01.003 [DEBUG] [Thread-130202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:58:01.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:01.058 [DEBUG] [Thread-130202] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:01.058 [DEBUG] [Thread-130202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:01.058 [DEBUG] [Thread-130202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:01.058 [DEBUG] [Thread-130202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:58:01.058 [DEBUG] [Thread-130202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:01.072 [INFO] [Thread-130202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:01.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-28T16:58:01.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:02.035 [DEBUG] [Thread-130202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:02.035 [DEBUG] [Thread-130202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:02.084 [DEBUG] [Thread-130202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:02.084 [DEBUG] [Thread-130202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:02.092 [DEBUG] [Thread-130202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:02.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:02.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-28T16:58:02.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-28T16:58:02.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:02.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:02.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:02.123 [DEBUG] [Thread-130202] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:06.013 [DEBUG] [Thread-130204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:12.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:58:12.118 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:58:12.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-28T16:58:12.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 57, 53), 14.36, 38.23, 0.0, 17.4, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:58:12.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:57:53
2025-09-28T16:58:12.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:58:12.980 [DEBUG] [Thread-130205] [transport.py] [_log()] starting thread (client mode): 0x2e3c2da0
2025-09-28T16:58:12.980 [DEBUG] [Thread-130205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:13.001 [DEBUG] [Thread-130205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:58:13.001 [INFO] [Thread-130205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:58:13.004 [DEBUG] [Thread-130205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:13.005 [DEBUG] [Thread-130205] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] Compression: none
2025-09-28T16:58:13.006 [DEBUG] [Thread-130205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:13.023 [DEBUG] [Thread-130205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:13.023 [DEBUG] [Thread-130205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:13.024 [DEBUG] [Thread-130205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:58:13.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:58:13.025 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:13.026 [DEBUG] [Thread-130205] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:13.026 [DEBUG] [Thread-130205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:13.027 [DEBUG] [Thread-130205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:13.027 [DEBUG] [Thread-130205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:58:13.027 [DEBUG] [Thread-130205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:13.050 [INFO] [Thread-130205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:13.051 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:13.667 [DEBUG] [Thread-130205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:13.667 [DEBUG] [Thread-130205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:13.667 [DEBUG] [Thread-130205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:58:13.708 [DEBUG] [Thread-130205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:13.709 [DEBUG] [Thread-130205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:13.711 [DEBUG] [Thread-130205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:13.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:13.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:58:13.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:58:13.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:58:13.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:13.734 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:58:13.734 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:13.734 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.623345 -999.00  +16.80  20.67     42   +4.10 1 1 1 1 1   887    0 11.19 -62.93 ----- 20.7 20.7 195.8 25.6 21.1 -27.6 20.6 -29.9 22.3 -26.2 23.1 -28.1
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.623345
2025-09-28T16:58:13.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:58:13.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:58:13.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:58:13.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:58:13.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:58:13.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:57:53', tmtdew=14.36, humidity=38.23, cloud=0.0, wind=17.4, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:57:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:58:13.736 [DEBUG] [Thread-130205] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:13.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-28T16:58:13.833 [DEBUG] [Thread-130208] [transport.py] [_log()] starting thread (client mode): 0x2e3c3ca0
2025-09-28T16:58:13.833 [DEBUG] [Thread-130208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:13.848 [DEBUG] [Thread-130208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:58:13.848 [INFO] [Thread-130208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:58:13.855 [DEBUG] [Thread-130208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] Compression: none
2025-09-28T16:58:13.856 [DEBUG] [Thread-130208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:13.914 [DEBUG] [Thread-130208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:13.915 [DEBUG] [Thread-130208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:13.915 [DEBUG] [Thread-130208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:58:13.915 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:58:13.916 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:13.971 [DEBUG] [Thread-130208] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:13.971 [DEBUG] [Thread-130208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:13.971 [DEBUG] [Thread-130208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:13.971 [DEBUG] [Thread-130208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:58:13.971 [DEBUG] [Thread-130208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:13.990 [INFO] [Thread-130208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:13.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-28T16:58:13.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:14.917 [DEBUG] [Thread-130208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:14.917 [DEBUG] [Thread-130208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:14.965 [DEBUG] [Thread-130208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:14.965 [DEBUG] [Thread-130208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:14.974 [DEBUG] [Thread-130208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:14.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:14.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-28T16:58:14.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') -> 00000000
2025-09-28T16:58:15.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:15.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:15.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:15.009 [DEBUG] [Thread-130208] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:21.058 [DEBUG] [Thread-130210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:22.465 [DEBUG] [Thread-130211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:24.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:24.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:25.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:58:25.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:58:25.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:58:25.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 57, 53), 14.36, 38.23, 0.0, 17.4, 16.41, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:58:25.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:57:53
2025-09-28T16:58:25.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:58:25.902 [DEBUG] [Thread-130212] [transport.py] [_log()] starting thread (client mode): 0x2e3c25c0
2025-09-28T16:58:25.902 [DEBUG] [Thread-130212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:25.921 [DEBUG] [Thread-130212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:58:25.921 [INFO] [Thread-130212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:58:25.924 [DEBUG] [Thread-130212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:25.924 [DEBUG] [Thread-130212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:58:25.924 [DEBUG] [Thread-130212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:25.924 [DEBUG] [Thread-130212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:25.924 [DEBUG] [Thread-130212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] Compression: none
2025-09-28T16:58:25.925 [DEBUG] [Thread-130212] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:25.932 [DEBUG] [Thread-130212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:25.933 [DEBUG] [Thread-130212] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:25.933 [DEBUG] [Thread-130212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:58:25.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:58:25.933 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:25.934 [DEBUG] [Thread-130212] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:25.934 [DEBUG] [Thread-130212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:25.934 [DEBUG] [Thread-130212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:25.934 [DEBUG] [Thread-130212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:58:25.934 [DEBUG] [Thread-130212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:25.944 [INFO] [Thread-130212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:25.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:26.543 [DEBUG] [Thread-130212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:26.543 [DEBUG] [Thread-130212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:26.543 [DEBUG] [Thread-130212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:58:26.584 [DEBUG] [Thread-130212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:26.584 [DEBUG] [Thread-130212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:26.587 [DEBUG] [Thread-130212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:26.598 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:26.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:58:26.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:58:26.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:58:26.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:26.605 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:58:26.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:26.605 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:26.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:58:26.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.623345 -999.00  +16.80  20.67     42   +4.10 1 1 1 1 1   887    0 11.19 -62.93 ----- 20.7 20.7 195.8 25.6 21.1 -27.6 20.6 -29.9 22.3 -26.2 23.1 -28.1
2025-09-28T16:58:26.605 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.623345
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:58:26.606 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:57:53', tmtdew=14.36, humidity=38.23, cloud=0.0, wind=17.4, temperature=16.41, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:57:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:58:26.607 [DEBUG] [Thread-130212] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:26.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-28T16:58:26.691 [DEBUG] [Thread-130215] [transport.py] [_log()] starting thread (client mode): 0x2e3c04c0
2025-09-28T16:58:26.691 [DEBUG] [Thread-130215] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:26.709 [DEBUG] [Thread-130215] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:58:26.709 [INFO] [Thread-130215] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:26.716 [DEBUG] [Thread-130215] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] Compression: none
2025-09-28T16:58:26.717 [DEBUG] [Thread-130215] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:26.773 [DEBUG] [Thread-130215] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:26.773 [DEBUG] [Thread-130215] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:26.773 [DEBUG] [Thread-130215] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:58:26.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:58:26.773 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:26.830 [DEBUG] [Thread-130215] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:26.830 [DEBUG] [Thread-130215] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:26.830 [DEBUG] [Thread-130215] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:26.830 [DEBUG] [Thread-130215] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:58:26.830 [DEBUG] [Thread-130215] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:26.844 [INFO] [Thread-130215] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:26.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-28T16:58:26.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:27.787 [DEBUG] [Thread-130215] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:27.788 [DEBUG] [Thread-130215] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:27.835 [DEBUG] [Thread-130215] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:27.835 [DEBUG] [Thread-130215] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:27.844 [DEBUG] [Thread-130215] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:27.853 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:27.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')
2025-09-28T16:58:27.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-28T16:58:27.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:27.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:27.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:27.880 [DEBUG] [Thread-130215] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:36.100 [DEBUG] [Thread-130217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:37.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:58:37.882 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:58:37.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-28T16:58:38.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 58, 25), 14.28, 38.44, 0.0, 20.98, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:58:38.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:58:25
2025-09-28T16:58:38.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:58:38.785 [DEBUG] [Thread-130218] [transport.py] [_log()] starting thread (client mode): 0x2e34bd30
2025-09-28T16:58:38.785 [DEBUG] [Thread-130218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:38.804 [DEBUG] [Thread-130218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:58:38.804 [INFO] [Thread-130218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] Compression: none
2025-09-28T16:58:38.806 [DEBUG] [Thread-130218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:38.816 [DEBUG] [Thread-130218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:38.817 [DEBUG] [Thread-130218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:38.817 [DEBUG] [Thread-130218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:58:38.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:58:38.817 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:38.819 [DEBUG] [Thread-130218] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:38.819 [DEBUG] [Thread-130218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:38.819 [DEBUG] [Thread-130218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:38.819 [DEBUG] [Thread-130218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:58:38.819 [DEBUG] [Thread-130218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:38.828 [INFO] [Thread-130218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:38.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:39.404 [DEBUG] [Thread-130218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:39.404 [DEBUG] [Thread-130218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:39.404 [DEBUG] [Thread-130218] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:58:39.445 [DEBUG] [Thread-130218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:39.445 [DEBUG] [Thread-130218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:39.447 [DEBUG] [Thread-130218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:39.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:39.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:58:39.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:58:39.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:39.459 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:58:39.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.623692 -999.00  +16.70  20.39     43   +4.10 1 1 1 1 1   887    0 10.97 -70.05 ----- 20.4 20.4 180.9 31.2 21.1 -27.8 20.4 -28.1 22.1 -26.7 22.9 -28.6
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:58:39.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.623692
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:58:39.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:58:25', tmtdew=14.28, humidity=38.44, cloud=0.0, wind=20.98, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:58:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:58:39.460 [DEBUG] [Thread-130218] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:39.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-28T16:58:39.547 [DEBUG] [Thread-130221] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-28T16:58:39.547 [DEBUG] [Thread-130221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:39.562 [DEBUG] [Thread-130221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:58:39.562 [INFO] [Thread-130221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:58:39.569 [DEBUG] [Thread-130221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] Compression: none
2025-09-28T16:58:39.570 [DEBUG] [Thread-130221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:39.625 [DEBUG] [Thread-130221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:39.625 [DEBUG] [Thread-130221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:39.625 [DEBUG] [Thread-130221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:58:39.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:58:39.626 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:39.682 [DEBUG] [Thread-130221] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:39.682 [DEBUG] [Thread-130221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:39.682 [DEBUG] [Thread-130221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:39.682 [DEBUG] [Thread-130221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:58:39.682 [DEBUG] [Thread-130221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:39.696 [INFO] [Thread-130221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58: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-28T16:58:39.696 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:40.627 [DEBUG] [Thread-130221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:40.627 [DEBUG] [Thread-130221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:40.675 [DEBUG] [Thread-130221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:40.675 [DEBUG] [Thread-130221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:40.683 [DEBUG] [Thread-130221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:40.691 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:40.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-28T16:58:40.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-28T16:58:40.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:40.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:40.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:40.714 [DEBUG] [Thread-130221] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:50.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:58:50.717 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:58:50.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-28T16:58:51.126 [DEBUG] [Thread-130223 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:58:51.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 58, 25), 14.28, 38.44, 0.0, 20.98, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:58:51.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:58:25
2025-09-28T16:58:51.434 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:58:51.581 [DEBUG] [Thread-130224] [transport.py] [_log()] starting thread (client mode): 0x2e349ff0
2025-09-28T16:58:51.581 [DEBUG] [Thread-130224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:51.601 [DEBUG] [Thread-130224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:58:51.601 [INFO] [Thread-130224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:51.605 [DEBUG] [Thread-130224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] Compression: none
2025-09-28T16:58:51.606 [DEBUG] [Thread-130224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:51.622 [DEBUG] [Thread-130224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:51.623 [DEBUG] [Thread-130224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:51.623 [DEBUG] [Thread-130224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:58:51.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:58:51.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:51.626 [DEBUG] [Thread-130224] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:51.626 [DEBUG] [Thread-130224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:51.626 [DEBUG] [Thread-130224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:51.626 [DEBUG] [Thread-130224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:58:51.626 [DEBUG] [Thread-130224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:51.652 [INFO] [Thread-130224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:51.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:52.290 [DEBUG] [Thread-130224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:52.290 [DEBUG] [Thread-130224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:52.291 [DEBUG] [Thread-130224] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:58:52.331 [DEBUG] [Thread-130224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:52.331 [DEBUG] [Thread-130224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:52.335 [DEBUG] [Thread-130224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:52.348 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58:52.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:58:52.350 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:58:52.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:58:52.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:52.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:58:52.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:52.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:52.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:58:52.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.623692 -999.00  +16.70  20.39     43   +4.10 1 1 1 1 1   887    0 10.97 -70.05 ----- 20.4 20.4 180.9 31.2 21.1 -27.8 20.4 -28.1 22.1 -26.7 22.9 -28.6
2025-09-28T16:58:52.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:58:52.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:58:52.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.623692
2025-09-28T16:58:52.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:58:52.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:58:52.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:58:52.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:58:52.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:58:52.363 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:58:25', tmtdew=14.28, humidity=38.44, cloud=0.0, wind=20.98, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:58:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:58:52.363 [DEBUG] [Thread-130224] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:58:52.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-28T16:58:52.461 [DEBUG] [Thread-130227] [transport.py] [_log()] starting thread (client mode): 0x2b91e650
2025-09-28T16:58:52.461 [DEBUG] [Thread-130227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:58:52.477 [DEBUG] [Thread-130227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:58:52.478 [INFO] [Thread-130227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] client lang: <none>
2025-09-28T16:58:52.485 [DEBUG] [Thread-130227] [transport.py] [_log()] server lang: <none>
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] kex follows: False
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] Compression: none
2025-09-28T16:58:52.486 [DEBUG] [Thread-130227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:58:52.541 [DEBUG] [Thread-130227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:58:52.541 [DEBUG] [Thread-130227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:58:52.541 [DEBUG] [Thread-130227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:58:52.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:58:52.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:58:52.598 [DEBUG] [Thread-130227] [transport.py] [_log()] userauth is OK
2025-09-28T16:58:52.599 [DEBUG] [Thread-130227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:58:52.599 [DEBUG] [Thread-130227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:58:52.599 [DEBUG] [Thread-130227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:58:52.599 [DEBUG] [Thread-130227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:58:52.617 [INFO] [Thread-130227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:58:52.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-28T16:58:52.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:58:53.578 [DEBUG] [Thread-130227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:58:53.578 [DEBUG] [Thread-130227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:58:53.626 [DEBUG] [Thread-130227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:58:53.626 [DEBUG] [Thread-130227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:58:53.635 [DEBUG] [Thread-130227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:58:53.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:58: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')
2025-09-28T16:58:53.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-28T16:58:53.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:58:53.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:58:53.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:58:53.670 [DEBUG] [Thread-130227] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:03.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:59:03.671 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:59:03.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-28T16:59:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 58, 57), 14.28, 38.44, 0.0, 22.53, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:59:04.256 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:58:57
2025-09-28T16:59:04.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:59:04.512 [DEBUG] [Thread-130229] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T16:59:04.512 [DEBUG] [Thread-130229] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:04.532 [DEBUG] [Thread-130229] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:59:04.532 [INFO] [Thread-130229] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:59:04.535 [DEBUG] [Thread-130229] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:04.535 [DEBUG] [Thread-130229] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:04.536 [DEBUG] [Thread-130229] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:04.537 [DEBUG] [Thread-130229] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:04.537 [DEBUG] [Thread-130229] [transport.py] [_log()] Compression: none
2025-09-28T16:59:04.537 [DEBUG] [Thread-130229] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:04.554 [DEBUG] [Thread-130229] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:04.554 [DEBUG] [Thread-130229] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:04.555 [DEBUG] [Thread-130229] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:59:04.555 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:59:04.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:04.557 [DEBUG] [Thread-130229] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:04.557 [DEBUG] [Thread-130229] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:04.557 [DEBUG] [Thread-130229] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:04.557 [DEBUG] [Thread-130229] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:59:04.557 [DEBUG] [Thread-130229] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:04.581 [INFO] [Thread-130229] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:04.582 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:05.241 [DEBUG] [Thread-130229] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:05.241 [DEBUG] [Thread-130229] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:05.241 [DEBUG] [Thread-130229] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:59:05.282 [DEBUG] [Thread-130229] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:05.283 [DEBUG] [Thread-130229] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:05.286 [DEBUG] [Thread-130229] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:05.297 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:05.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:59:05.299 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:59:05.300 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:59:05.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:05.306 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:59:05.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.623692 -999.00  +16.70  20.39     43   +4.10 1 1 1 1 1   887    0 10.97 -70.05 ----- 20.4 20.4 180.9 31.2 21.1 -27.8 20.4 -28.1 22.1 -26.7 22.9 -28.6
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:59:05.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.623692
2025-09-28T16:59:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:59:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:59:05.308 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:59:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:59:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:59:05.309 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:58:57', tmtdew=14.28, humidity=38.44, cloud=0.0, wind=22.53, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:58:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:59:05.309 [DEBUG] [Thread-130229] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:05.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-28T16:59:05.405 [DEBUG] [Thread-130232] [transport.py] [_log()] starting thread (client mode): 0x2e34a170
2025-09-28T16:59:05.405 [DEBUG] [Thread-130232] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:05.420 [DEBUG] [Thread-130232] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:59:05.420 [INFO] [Thread-130232] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:59:05.427 [DEBUG] [Thread-130232] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] Compression: none
2025-09-28T16:59:05.428 [DEBUG] [Thread-130232] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:05.486 [DEBUG] [Thread-130232] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:05.487 [DEBUG] [Thread-130232] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:05.487 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:59:05.488 [DEBUG] [Thread-130232] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:59:05.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:05.543 [DEBUG] [Thread-130232] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:05.543 [DEBUG] [Thread-130232] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:05.543 [DEBUG] [Thread-130232] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:05.543 [DEBUG] [Thread-130232] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:59:05.543 [DEBUG] [Thread-130232] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:05.562 [INFO] [Thread-130232] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:05.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-28T16:59:05.562 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:06.163 [DEBUG] [Thread-130234 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:06.581 [DEBUG] [Thread-130232] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:06.581 [DEBUG] [Thread-130232] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:06.628 [DEBUG] [Thread-130232] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:06.628 [DEBUG] [Thread-130232] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:06.637 [DEBUG] [Thread-130232] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:06.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:06.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-28T16:59:06.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-28T16:59:06.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:06.663 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:06.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:06.671 [DEBUG] [Thread-130232] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:16.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:59:16.672 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:59:16.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-28T16:59:17.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 58, 57), 14.28, 38.44, 0.0, 22.53, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:59:17.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:58:57
2025-09-28T16:59:17.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:59:17.529 [DEBUG] [Thread-130235] [transport.py] [_log()] starting thread (client mode): 0x2e3c06d0
2025-09-28T16:59:17.530 [DEBUG] [Thread-130235] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:17.550 [DEBUG] [Thread-130235] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:59:17.550 [INFO] [Thread-130235] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] Compression: none
2025-09-28T16:59:17.553 [DEBUG] [Thread-130235] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:17.569 [DEBUG] [Thread-130235] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:17.569 [DEBUG] [Thread-130235] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:17.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:59:17.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:17.570 [DEBUG] [Thread-130235] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:59:17.571 [DEBUG] [Thread-130235] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:17.571 [DEBUG] [Thread-130235] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:17.571 [DEBUG] [Thread-130235] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:17.571 [DEBUG] [Thread-130235] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:59:17.571 [DEBUG] [Thread-130235] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:17.585 [INFO] [Thread-130235] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:17.586 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:18.223 [DEBUG] [Thread-130235] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:18.223 [DEBUG] [Thread-130235] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:18.224 [DEBUG] [Thread-130235] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:59:18.264 [DEBUG] [Thread-130235] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:18.264 [DEBUG] [Thread-130235] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:18.266 [DEBUG] [Thread-130235] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:18.277 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:18.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:59:18.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:59:18.280 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:59:18.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:18.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:59:18.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.624386 -999.00  +16.50  18.35     43   +4.10 1 1 1 1 1   887    0 10.90 -72.41 ----- 18.4 18.4 180.2 26.7 20.9 -27.9 20.2 -28.2 22.0 -27.4 22.8 -28.9
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.624386
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:59:18.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:58:57', tmtdew=14.28, humidity=38.44, cloud=0.0, wind=22.53, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:59:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:59:18.286 [DEBUG] [Thread-130235] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:18.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T16:59:18.369 [DEBUG] [Thread-130238] [transport.py] [_log()] starting thread (client mode): 0x2b9547f0
2025-09-28T16:59:18.369 [DEBUG] [Thread-130238] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:18.384 [DEBUG] [Thread-130238] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:59:18.384 [INFO] [Thread-130238] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] Compression: none
2025-09-28T16:59:18.391 [DEBUG] [Thread-130238] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:18.449 [DEBUG] [Thread-130238] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:18.449 [DEBUG] [Thread-130238] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:18.449 [DEBUG] [Thread-130238] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:59:18.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:59:18.449 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:18.506 [DEBUG] [Thread-130238] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:18.506 [DEBUG] [Thread-130238] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:18.506 [DEBUG] [Thread-130238] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:18.506 [DEBUG] [Thread-130238] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:59:18.506 [DEBUG] [Thread-130238] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:18.520 [INFO] [Thread-130238] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:18.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-28T16:59:18.520 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:19.556 [DEBUG] [Thread-130238] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:19.556 [DEBUG] [Thread-130238] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:19.604 [DEBUG] [Thread-130238] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:19.604 [DEBUG] [Thread-130238] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:19.612 [DEBUG] [Thread-130238] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:19.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:19.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-28T16:59:19.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') -> 00000000
2025-09-28T16:59:19.636 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:19.636 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:19.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:19.643 [DEBUG] [Thread-130238] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:21.209 [DEBUG] [Thread-130240 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:22.513 [DEBUG] [Thread-130241 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:24.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:24.896 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:29.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:59:29.646 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:59:29.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T16:59:30.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 58, 57), 14.28, 38.44, 0.0, 22.53, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:59:30.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:58:57
2025-09-28T16:59:30.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:59:30.533 [DEBUG] [Thread-130242] [transport.py] [_log()] starting thread (client mode): 0x2e3c1540
2025-09-28T16:59:30.533 [DEBUG] [Thread-130242] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:30.551 [DEBUG] [Thread-130242] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:59:30.551 [INFO] [Thread-130242] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] Compression: none
2025-09-28T16:59:30.555 [DEBUG] [Thread-130242] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:30.572 [DEBUG] [Thread-130242] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:30.572 [DEBUG] [Thread-130242] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:30.573 [DEBUG] [Thread-130242] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:59:30.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:59:30.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:30.573 [DEBUG] [Thread-130242] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:30.574 [DEBUG] [Thread-130242] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:30.574 [DEBUG] [Thread-130242] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:30.574 [DEBUG] [Thread-130242] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:59:30.574 [DEBUG] [Thread-130242] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:30.583 [INFO] [Thread-130242] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:30.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:31.219 [DEBUG] [Thread-130242] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:31.219 [DEBUG] [Thread-130242] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:31.219 [DEBUG] [Thread-130242] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:59:31.259 [DEBUG] [Thread-130242] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:31.259 [DEBUG] [Thread-130242] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:31.263 [DEBUG] [Thread-130242] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:31.274 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:31.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:59:31.276 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:59:31.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:59:31.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:31.285 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:59:31.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.624386 -999.00  +16.50  18.35     43   +4.10 1 1 1 1 1   887    0 10.90 -72.41 ----- 18.4 18.4 180.2 26.7 20.9 -27.9 20.2 -28.2 22.0 -27.4 22.8 -28.9
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:59:31.286 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.624386
2025-09-28T16:59:31.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:59:31.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:59:31.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:59:31.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:59:31.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:59:31.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:58:57', tmtdew=14.28, humidity=38.44, cloud=0.0, wind=22.53, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:59:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:59:31.288 [DEBUG] [Thread-130242] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:31.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-28T16:59:31.382 [DEBUG] [Thread-130245] [transport.py] [_log()] starting thread (client mode): 0x2e3c1e70
2025-09-28T16:59:31.382 [DEBUG] [Thread-130245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:31.397 [DEBUG] [Thread-130245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:59:31.397 [INFO] [Thread-130245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:31.405 [DEBUG] [Thread-130245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:31.406 [DEBUG] [Thread-130245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:31.407 [DEBUG] [Thread-130245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:31.407 [DEBUG] [Thread-130245] [transport.py] [_log()] Compression: none
2025-09-28T16:59:31.407 [DEBUG] [Thread-130245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:31.463 [DEBUG] [Thread-130245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:31.463 [DEBUG] [Thread-130245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:31.464 [DEBUG] [Thread-130245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:59:31.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:59:31.464 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:31.519 [DEBUG] [Thread-130245] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:31.520 [DEBUG] [Thread-130245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:31.520 [DEBUG] [Thread-130245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:31.520 [DEBUG] [Thread-130245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:59:31.520 [DEBUG] [Thread-130245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:31.538 [INFO] [Thread-130245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:31.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-28T16:59:31.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:32.531 [DEBUG] [Thread-130245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:32.531 [DEBUG] [Thread-130245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:32.579 [DEBUG] [Thread-130245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:32.579 [DEBUG] [Thread-130245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:32.588 [DEBUG] [Thread-130245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:32.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59: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')
2025-09-28T16:59:32.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-28T16:59:32.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:32.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:32.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:32.623 [DEBUG] [Thread-130245] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:36.255 [DEBUG] [Thread-130247 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:42.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:59:42.626 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:59:42.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-28T16:59:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 59, 28), 14.21, 38.63, 0.0, 23.68, 16.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:59:43.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:59:28
2025-09-28T16:59:43.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:59:43.466 [DEBUG] [Thread-130248] [transport.py] [_log()] starting thread (client mode): 0x2b91efe0
2025-09-28T16:59:43.466 [DEBUG] [Thread-130248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:43.487 [DEBUG] [Thread-130248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:59:43.487 [INFO] [Thread-130248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:59:43.491 [DEBUG] [Thread-130248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:43.491 [DEBUG] [Thread-130248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:59:43.491 [DEBUG] [Thread-130248] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:43.491 [DEBUG] [Thread-130248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] Compression: none
2025-09-28T16:59:43.492 [DEBUG] [Thread-130248] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:43.507 [DEBUG] [Thread-130248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:43.508 [DEBUG] [Thread-130248] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:43.508 [DEBUG] [Thread-130248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:59:43.508 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:59:43.509 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:43.510 [DEBUG] [Thread-130248] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:43.510 [DEBUG] [Thread-130248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:43.510 [DEBUG] [Thread-130248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:43.511 [DEBUG] [Thread-130248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:59:43.511 [DEBUG] [Thread-130248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:43.527 [INFO] [Thread-130248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:43.528 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:44.132 [DEBUG] [Thread-130248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:44.132 [DEBUG] [Thread-130248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:44.133 [DEBUG] [Thread-130248] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:59:44.173 [DEBUG] [Thread-130248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:44.173 [DEBUG] [Thread-130248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:44.177 [DEBUG] [Thread-130248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:44.188 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:44.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:59:44.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:59:44.192 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:59:44.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:44.199 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:59:44.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.624386 -999.00  +16.50  18.35     43   +4.10 1 1 1 1 1   887    0 10.90 -72.41 ----- 18.4 18.4 180.2 26.7 20.9 -27.9 20.2 -28.2 22.0 -27.4 22.8 -28.9
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:59:44.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.624386
2025-09-28T16:59:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:59:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:59:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:59:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:59:44.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:59:44.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:59:28', tmtdew=14.21, humidity=38.63, cloud=0.0, wind=23.68, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:59:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:59:44.202 [DEBUG] [Thread-130248] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:44.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-28T16:59:44.299 [DEBUG] [Thread-130251] [transport.py] [_log()] starting thread (client mode): 0x2b91e5c0
2025-09-28T16:59:44.299 [DEBUG] [Thread-130251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:44.313 [DEBUG] [Thread-130251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:59:44.313 [INFO] [Thread-130251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:44.321 [DEBUG] [Thread-130251] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] Compression: none
2025-09-28T16:59:44.322 [DEBUG] [Thread-130251] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:44.378 [DEBUG] [Thread-130251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:44.379 [DEBUG] [Thread-130251] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:44.379 [DEBUG] [Thread-130251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:59:44.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:59:44.380 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:44.434 [DEBUG] [Thread-130251] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:44.435 [DEBUG] [Thread-130251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:44.435 [DEBUG] [Thread-130251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:44.435 [DEBUG] [Thread-130251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:59:44.435 [DEBUG] [Thread-130251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:44.453 [INFO] [Thread-130251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:44.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-28T16:59:44.454 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:45.477 [DEBUG] [Thread-130251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:45.478 [DEBUG] [Thread-130251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:45.525 [DEBUG] [Thread-130251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:45.525 [DEBUG] [Thread-130251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:45.534 [DEBUG] [Thread-130251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:45.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:45.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-28T16:59:45.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-28T16:59:45.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:45.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:45.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:45.569 [DEBUG] [Thread-130251] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:51.287 [DEBUG] [Thread-130253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T16:59:55.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T16:59:55.565 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T16:59:55.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-28T16:59:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 16, 59, 28), 14.21, 38.63, 0.0, 23.68, 16.49, 0, 0, 0, 2, 0, 0),)
2025-09-28T16:59:56.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 16:59:28
2025-09-28T16:59:56.290 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T16:59:56.442 [DEBUG] [Thread-130254] [transport.py] [_log()] starting thread (client mode): 0x2b91cfd0
2025-09-28T16:59:56.442 [DEBUG] [Thread-130254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:56.461 [DEBUG] [Thread-130254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T16:59:56.461 [INFO] [Thread-130254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] Compression: none
2025-09-28T16:59:56.464 [DEBUG] [Thread-130254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:56.479 [DEBUG] [Thread-130254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:56.479 [DEBUG] [Thread-130254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:56.479 [DEBUG] [Thread-130254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T16:59:56.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T16:59:56.480 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:56.481 [DEBUG] [Thread-130254] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:56.481 [DEBUG] [Thread-130254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:56.481 [DEBUG] [Thread-130254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:56.481 [DEBUG] [Thread-130254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T16:59:56.481 [DEBUG] [Thread-130254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:56.499 [INFO] [Thread-130254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:56.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:57.121 [DEBUG] [Thread-130254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:57.121 [DEBUG] [Thread-130254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:57.121 [DEBUG] [Thread-130254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T16:59:57.162 [DEBUG] [Thread-130254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:57.162 [DEBUG] [Thread-130254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:57.164 [DEBUG] [Thread-130254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:57.178 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:57.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T16:59:57.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T16:59:57.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T16:59:57.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:57.184 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T16:59:57.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.624734 -999.00  +16.40  13.36     44   +4.20 1 1 1 1 1   887    0 10.81 -75.03 ----- 13.4 13.4 196.0 20.6 20.8 -27.5 20.3 -26.4 22.0 -26.5 22.7 -29.1
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.624734
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T16:59:57.184 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T16:59:28', tmtdew=14.21, humidity=38.63, cloud=0.0, wind=23.68, temperature=16.49, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T14:59:37.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T16:59:57.185 [DEBUG] [Thread-130254] [transport.py] [_log()] EOF in transport thread
2025-09-28T16:59:57.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-28T16:59:57.268 [DEBUG] [Thread-130257] [transport.py] [_log()] starting thread (client mode): 0x2e348be0
2025-09-28T16:59:57.268 [DEBUG] [Thread-130257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T16:59:57.283 [DEBUG] [Thread-130257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T16:59:57.283 [INFO] [Thread-130257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:57.290 [DEBUG] [Thread-130257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] client lang: <none>
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] server lang: <none>
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] kex follows: False
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] Compression: none
2025-09-28T16:59:57.291 [DEBUG] [Thread-130257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T16:59:57.345 [DEBUG] [Thread-130257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T16:59:57.345 [DEBUG] [Thread-130257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T16:59:57.345 [DEBUG] [Thread-130257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T16:59:57.345 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T16:59:57.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T16:59:57.402 [DEBUG] [Thread-130257] [transport.py] [_log()] userauth is OK
2025-09-28T16:59:57.402 [DEBUG] [Thread-130257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T16:59:57.402 [DEBUG] [Thread-130257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T16:59:57.403 [DEBUG] [Thread-130257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T16:59:57.403 [DEBUG] [Thread-130257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T16:59:57.418 [INFO] [Thread-130257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T16:59:57.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-28T16:59:57.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T16:59:58.343 [DEBUG] [Thread-130257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T16:59:58.344 [DEBUG] [Thread-130257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T16:59:58.392 [DEBUG] [Thread-130257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T16:59:58.392 [DEBUG] [Thread-130257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T16:59:58.402 [DEBUG] [Thread-130257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T16:59:58.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T16:59:58.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-28T16:59:58.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-28T16:59:58.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T16:59:58.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T16:59:58.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T16:59:58.436 [DEBUG] [Thread-130257] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:06.330 [DEBUG] [Thread-130259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:08.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:00:08.439 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:00:08.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-28T17:00:09.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 0), 13.9, 39.13, 0.0, 22.87, 16.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:00:09.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:00:00
2025-09-28T17:00:09.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:00:09.291 [DEBUG] [Thread-130260] [transport.py] [_log()] starting thread (client mode): 0x2e349ea0
2025-09-28T17:00:09.291 [DEBUG] [Thread-130260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:09.310 [DEBUG] [Thread-130260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:00:09.310 [INFO] [Thread-130260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:09.314 [DEBUG] [Thread-130260] [transport.py] [_log()] Compression: none
2025-09-28T17:00:09.315 [DEBUG] [Thread-130260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:09.323 [DEBUG] [Thread-130260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:09.323 [DEBUG] [Thread-130260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:09.324 [DEBUG] [Thread-130260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:00:09.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:00:09.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:09.325 [DEBUG] [Thread-130260] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:09.325 [DEBUG] [Thread-130260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:09.325 [DEBUG] [Thread-130260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:09.325 [DEBUG] [Thread-130260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:00:09.326 [DEBUG] [Thread-130260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:09.348 [INFO] [Thread-130260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:09.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:19.307 [DEBUG] [Thread-130260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:19.307 [DEBUG] [Thread-130260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:19.307 [DEBUG] [Thread-130260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:00:19.347 [DEBUG] [Thread-130260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:19.347 [DEBUG] [Thread-130260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:19.351 [DEBUG] [Thread-130260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:19.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:19.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:00:19.365 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:00:19.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:00:19.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:19.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:00:19.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:19.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:19.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:00:19.415 [WARNING] [poll_weather_worker] [driver.py] [poll_weather_state()] Unable to get atlas cloud data: list index out of range
2025-09-28T17:00:19.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:00:00', tmtdew=13.9, humidity=39.13, cloud=0.0, wind=22.87, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp=None, atlas_cloud=None, atlas_rain=None, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:00:19.416 [DEBUG] [Thread-130260] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:19.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-28T17:00:19.516 [DEBUG] [Thread-130263] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-28T17:00:19.516 [DEBUG] [Thread-130263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:19.532 [DEBUG] [Thread-130263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:00:19.532 [INFO] [Thread-130263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:00:19.540 [DEBUG] [Thread-130263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:19.540 [DEBUG] [Thread-130263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:00:19.540 [DEBUG] [Thread-130263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:19.540 [DEBUG] [Thread-130263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] Compression: none
2025-09-28T17:00:19.541 [DEBUG] [Thread-130263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:19.600 [DEBUG] [Thread-130263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:19.600 [DEBUG] [Thread-130263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:19.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:00:19.601 [DEBUG] [Thread-130263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:00:19.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:19.659 [DEBUG] [Thread-130263] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:19.659 [DEBUG] [Thread-130263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:19.659 [DEBUG] [Thread-130263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:19.659 [DEBUG] [Thread-130263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:00:19.659 [DEBUG] [Thread-130263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:19.681 [INFO] [Thread-130263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:19.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-28T17:00:19.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:20.617 [DEBUG] [Thread-130263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:20.617 [DEBUG] [Thread-130263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:20.665 [DEBUG] [Thread-130263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:20.665 [DEBUG] [Thread-130263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:20.674 [DEBUG] [Thread-130263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:20.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:20.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-28T17:00:20.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-28T17:00:20.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:20.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:20.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:20.712 [DEBUG] [Thread-130263] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:21.373 [DEBUG] [Thread-130265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:22.567 [DEBUG] [Thread-130266 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:25.042 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:25.043 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:30.710 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:00:30.710 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:00:30.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-28T17:00:31.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 0), 13.9, 39.13, 0.0, 22.87, 16.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:00:31.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:00:00
2025-09-28T17:00:31.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:00:31.599 [DEBUG] [Thread-130267] [transport.py] [_log()] starting thread (client mode): 0x2b91c670
2025-09-28T17:00:31.599 [DEBUG] [Thread-130267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:31.618 [DEBUG] [Thread-130267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:00:31.618 [INFO] [Thread-130267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] Compression: none
2025-09-28T17:00:31.621 [DEBUG] [Thread-130267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:31.638 [DEBUG] [Thread-130267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:31.638 [DEBUG] [Thread-130267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:31.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:00:31.638 [DEBUG] [Thread-130267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:00:31.638 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:31.639 [DEBUG] [Thread-130267] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:31.639 [DEBUG] [Thread-130267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:31.639 [DEBUG] [Thread-130267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:31.639 [DEBUG] [Thread-130267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:00:31.639 [DEBUG] [Thread-130267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:31.648 [INFO] [Thread-130267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:31.648 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:32.243 [DEBUG] [Thread-130267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:32.243 [DEBUG] [Thread-130267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:32.243 [DEBUG] [Thread-130267] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:00:32.284 [DEBUG] [Thread-130267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:32.284 [DEBUG] [Thread-130267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:32.285 [DEBUG] [Thread-130267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:32.293 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:32.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:00:32.293 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:00:32.294 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:00:32.296 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:32.296 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:00:32.296 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:32.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:32.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:00:32.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625081 -999.00  +16.40  15.89     44   +4.20 1 1 1 1 1   887    0 10.43 -80.82 ----- 15.9 15.9 198.2 25.1 20.8 -27.8 20.1 -28.2 21.9 -26.5 22.6 -30.0
2025-09-28T17:00:32.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625081
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:00:32.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:00:00', tmtdew=13.9, humidity=39.13, cloud=0.0, wind=22.87, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:00:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:00:32.297 [DEBUG] [Thread-130267] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:32.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-28T17:00:32.382 [DEBUG] [Thread-130270] [transport.py] [_log()] starting thread (client mode): 0x2e3498a0
2025-09-28T17:00:32.382 [DEBUG] [Thread-130270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:32.397 [DEBUG] [Thread-130270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:00:32.397 [INFO] [Thread-130270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] Compression: none
2025-09-28T17:00:32.405 [DEBUG] [Thread-130270] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:32.461 [DEBUG] [Thread-130270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:32.462 [DEBUG] [Thread-130270] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:32.462 [DEBUG] [Thread-130270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:00:32.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:00:32.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:32.518 [DEBUG] [Thread-130270] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:32.518 [DEBUG] [Thread-130270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:32.518 [DEBUG] [Thread-130270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:32.518 [DEBUG] [Thread-130270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:00:32.518 [DEBUG] [Thread-130270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:32.533 [INFO] [Thread-130270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:32.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-28T17:00:32.533 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:33.500 [DEBUG] [Thread-130270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:33.500 [DEBUG] [Thread-130270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:33.549 [DEBUG] [Thread-130270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:33.549 [DEBUG] [Thread-130270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:33.558 [DEBUG] [Thread-130270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:33.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:33.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-28T17:00:33.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-28T17:00:33.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:33.581 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:33.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:33.589 [DEBUG] [Thread-130270] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:36.418 [DEBUG] [Thread-130272 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:43.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:00:43.592 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:00:43.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:00:44.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 0, 32), 13.96, 38.99, 0.0, 22.25, 16.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:00:44.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:00:32
2025-09-28T17:00:44.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:00:44.437 [DEBUG] [Thread-130273] [transport.py] [_log()] starting thread (client mode): 0x2b91df30
2025-09-28T17:00:44.437 [DEBUG] [Thread-130273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:44.459 [DEBUG] [Thread-130273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:00:44.459 [INFO] [Thread-130273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:00:44.462 [DEBUG] [Thread-130273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] Compression: none
2025-09-28T17:00:44.463 [DEBUG] [Thread-130273] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:44.480 [DEBUG] [Thread-130273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:44.480 [DEBUG] [Thread-130273] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:44.481 [DEBUG] [Thread-130273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:00:44.481 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:00:44.482 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:44.483 [DEBUG] [Thread-130273] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:44.483 [DEBUG] [Thread-130273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:44.483 [DEBUG] [Thread-130273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:44.483 [DEBUG] [Thread-130273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:00:44.483 [DEBUG] [Thread-130273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:44.507 [INFO] [Thread-130273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:44.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:46.110 [DEBUG] [Thread-130273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:46.110 [DEBUG] [Thread-130273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:46.110 [DEBUG] [Thread-130273] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:00:46.151 [DEBUG] [Thread-130273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:46.151 [DEBUG] [Thread-130273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:46.154 [DEBUG] [Thread-130273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:46.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:46.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:00:46.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:00:46.170 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:00:46.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:46.177 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:00:46.177 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:46.177 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:46.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:00:46.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625081 -999.00  +16.40  15.89     44   +4.20 1 1 1 1 1   887    0 10.43 -80.82 ----- 15.9 15.9 198.2 25.1 20.8 -27.8 20.1 -28.2 21.9 -26.5 22.6 -30.0
2025-09-28T17:00:46.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:00:46.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:00:46.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625081
2025-09-28T17:00:46.178 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:00:46.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:00:46.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:00:46.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:00:46.179 [DEBUG] [Thread-130273] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:46.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:00:46.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:00:32', tmtdew=13.96, humidity=38.99, cloud=0.0, wind=22.25, temperature=16.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:00:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:00:46.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-28T17:00:46.277 [DEBUG] [Thread-130276] [transport.py] [_log()] starting thread (client mode): 0x2e363760
2025-09-28T17:00:46.277 [DEBUG] [Thread-130276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:46.293 [DEBUG] [Thread-130276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:00:46.293 [INFO] [Thread-130276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:46.301 [DEBUG] [Thread-130276] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] Compression: none
2025-09-28T17:00:46.302 [DEBUG] [Thread-130276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:46.359 [DEBUG] [Thread-130276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:46.359 [DEBUG] [Thread-130276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:46.360 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:00:46.361 [DEBUG] [Thread-130276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:00:46.362 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:46.415 [DEBUG] [Thread-130276] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:46.415 [DEBUG] [Thread-130276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:46.415 [DEBUG] [Thread-130276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:46.415 [DEBUG] [Thread-130276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:00:46.415 [DEBUG] [Thread-130276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:46.434 [INFO] [Thread-130276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:46.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-28T17:00:46.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:47.410 [DEBUG] [Thread-130276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:47.410 [DEBUG] [Thread-130276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:47.459 [DEBUG] [Thread-130276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:47.459 [DEBUG] [Thread-130276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:47.468 [DEBUG] [Thread-130276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:47.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:47.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-28T17:00:47.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-28T17:00:47.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:47.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:47.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:47.500 [DEBUG] [Thread-130276] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:51.463 [DEBUG] [Thread-130278 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:00:57.502 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:00:57.503 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:00:57.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:00:58.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 0, 32), 13.96, 38.99, 0.0, 22.25, 16.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:00:58.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:00:32
2025-09-28T17:00:58.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:00:58.345 [DEBUG] [Thread-130279] [transport.py] [_log()] starting thread (client mode): 0x2b91eb90
2025-09-28T17:00:58.345 [DEBUG] [Thread-130279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:58.368 [DEBUG] [Thread-130279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:00:58.368 [INFO] [Thread-130279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:58.372 [DEBUG] [Thread-130279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:58.373 [DEBUG] [Thread-130279] [transport.py] [_log()] Compression: none
2025-09-28T17:00:58.374 [DEBUG] [Thread-130279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:58.392 [DEBUG] [Thread-130279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:58.392 [DEBUG] [Thread-130279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:58.393 [DEBUG] [Thread-130279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:00:58.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:00:58.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:58.395 [DEBUG] [Thread-130279] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:58.395 [DEBUG] [Thread-130279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:58.395 [DEBUG] [Thread-130279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:58.395 [DEBUG] [Thread-130279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:00:58.395 [DEBUG] [Thread-130279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:58.419 [INFO] [Thread-130279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:58.420 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:00:59.007 [DEBUG] [Thread-130279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:00:59.007 [DEBUG] [Thread-130279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:00:59.008 [DEBUG] [Thread-130279] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:00:59.048 [DEBUG] [Thread-130279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:00:59.048 [DEBUG] [Thread-130279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:00:59.051 [DEBUG] [Thread-130279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:00:59.063 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:00:59.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:00:59.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:00:59.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:00:59.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:00:59.074 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:00:59.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:00:59.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:00:59.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:00:59.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625428 -999.00  +16.60  16.63     43   +4.10 1 1 1 1 1   887    0 11.00 -70.99 ----- 16.6 16.6 197.8 19.5 20.8 -27.2 20.3 -26.8 22.0 -26.6 22.7 -27.0
2025-09-28T17:00:59.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:00:59.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:00:59.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625428
2025-09-28T17:00:59.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:00:59.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:00:59.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:00:59.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:00:59.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:00:59.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:00:32', tmtdew=13.96, humidity=38.99, cloud=0.0, wind=22.25, temperature=16.34, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:00:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:00:59.077 [DEBUG] [Thread-130279] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:00:59.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-28T17:00:59.171 [DEBUG] [Thread-130282] [transport.py] [_log()] starting thread (client mode): 0x2e34a530
2025-09-28T17:00:59.172 [DEBUG] [Thread-130282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:00:59.187 [DEBUG] [Thread-130282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:00:59.187 [INFO] [Thread-130282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:00:59.194 [DEBUG] [Thread-130282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:00:59.194 [DEBUG] [Thread-130282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:00:59.194 [DEBUG] [Thread-130282] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:00:59.194 [DEBUG] [Thread-130282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:59.194 [DEBUG] [Thread-130282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] client lang: <none>
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] server lang: <none>
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] kex follows: False
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] Compression: none
2025-09-28T17:00:59.195 [DEBUG] [Thread-130282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:00:59.251 [DEBUG] [Thread-130282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:00:59.252 [DEBUG] [Thread-130282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:00:59.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:00:59.252 [DEBUG] [Thread-130282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:00:59.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:00:59.307 [DEBUG] [Thread-130282] [transport.py] [_log()] userauth is OK
2025-09-28T17:00:59.308 [DEBUG] [Thread-130282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:00:59.308 [DEBUG] [Thread-130282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:00:59.308 [DEBUG] [Thread-130282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:00:59.308 [DEBUG] [Thread-130282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:00:59.328 [INFO] [Thread-130282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:00:59.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-28T17:00:59.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:00.273 [DEBUG] [Thread-130282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:00.273 [DEBUG] [Thread-130282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:00.321 [DEBUG] [Thread-130282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:00.321 [DEBUG] [Thread-130282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:00.330 [DEBUG] [Thread-130282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:00.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:00.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-28T17:01:00.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-28T17:01:00.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:00.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:00.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:00.363 [DEBUG] [Thread-130282] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:06.507 [DEBUG] [Thread-130284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:10.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:01:10.365 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:01:10.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-28T17:01:10.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 1, 4), 14.06, 38.73, 0.0, 21.14, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:01:10.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:01:04
2025-09-28T17:01:11.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:01:11.242 [DEBUG] [Thread-130285] [transport.py] [_log()] starting thread (client mode): 0x2e361d50
2025-09-28T17:01:11.243 [DEBUG] [Thread-130285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:11.262 [DEBUG] [Thread-130285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:01:11.263 [INFO] [Thread-130285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:11.266 [DEBUG] [Thread-130285] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] Compression: none
2025-09-28T17:01:11.267 [DEBUG] [Thread-130285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:01:11.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:01:11.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:01:11.278 [DEBUG] [Thread-130285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:11.305 [INFO] [Thread-130285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:11.305 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:12.047 [DEBUG] [Thread-130285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:12.047 [DEBUG] [Thread-130285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:12.047 [DEBUG] [Thread-130285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:01:12.088 [DEBUG] [Thread-130285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:12.088 [DEBUG] [Thread-130285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:12.090 [DEBUG] [Thread-130285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:12.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:12.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:01:12.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:01:12.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:01:12.106 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:12.107 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:01:12.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625428 -999.00  +16.60  16.63     43   +4.10 1 1 1 1 1   887    0 11.00 -70.99 ----- 16.6 16.6 197.8 19.5 20.8 -27.2 20.3 -26.8 22.0 -26.6 22.7 -27.0
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625428
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:01:12.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:01:04', tmtdew=14.06, humidity=38.73, cloud=0.0, wind=21.14, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:00:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:01:12.107 [DEBUG] [Thread-130285] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:12.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-28T17:01:12.194 [DEBUG] [Thread-130288] [transport.py] [_log()] starting thread (client mode): 0x2b91da50
2025-09-28T17:01:12.194 [DEBUG] [Thread-130288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:12.209 [DEBUG] [Thread-130288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:01:12.209 [INFO] [Thread-130288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] Compression: none
2025-09-28T17:01:12.217 [DEBUG] [Thread-130288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:12.275 [DEBUG] [Thread-130288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:12.276 [DEBUG] [Thread-130288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:12.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:01:12.276 [DEBUG] [Thread-130288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:01:12.276 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:12.332 [DEBUG] [Thread-130288] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:12.332 [DEBUG] [Thread-130288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:12.332 [DEBUG] [Thread-130288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:12.332 [DEBUG] [Thread-130288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:01:12.332 [DEBUG] [Thread-130288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:12.346 [INFO] [Thread-130288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:12.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-28T17:01:12.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:13.293 [DEBUG] [Thread-130288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:13.293 [DEBUG] [Thread-130288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:13.341 [DEBUG] [Thread-130288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:13.341 [DEBUG] [Thread-130288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:13.350 [DEBUG] [Thread-130288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:13.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:13.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-28T17:01:13.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-28T17:01:13.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:13.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:13.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:13.382 [DEBUG] [Thread-130288] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:21.544 [DEBUG] [Thread-130290 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:22.620 [DEBUG] [Thread-130291 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:23.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:01:23.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:01:23.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-28T17:01:23.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 1, 4), 14.06, 38.73, 0.0, 21.14, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:01:23.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:01:04
2025-09-28T17:01:24.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:01:24.228 [DEBUG] [Thread-130292] [transport.py] [_log()] starting thread (client mode): 0x2b9bb280
2025-09-28T17:01:24.228 [DEBUG] [Thread-130292] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:24.247 [DEBUG] [Thread-130292] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:01:24.247 [INFO] [Thread-130292] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:24.250 [DEBUG] [Thread-130292] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] Compression: none
2025-09-28T17:01:24.251 [DEBUG] [Thread-130292] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:24.269 [DEBUG] [Thread-130292] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:24.270 [DEBUG] [Thread-130292] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:24.271 [DEBUG] [Thread-130292] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:01:24.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:01:24.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:24.273 [DEBUG] [Thread-130292] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:24.273 [DEBUG] [Thread-130292] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:24.273 [DEBUG] [Thread-130292] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:24.274 [DEBUG] [Thread-130292] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:01:24.274 [DEBUG] [Thread-130292] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:24.291 [INFO] [Thread-130292] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:24.292 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:25.022 [DEBUG] [Thread-130292] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:25.022 [DEBUG] [Thread-130292] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:25.023 [DEBUG] [Thread-130292] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:01:25.063 [DEBUG] [Thread-130292] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:25.064 [DEBUG] [Thread-130292] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:25.067 [DEBUG] [Thread-130292] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:25.077 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:25.078 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:01:25.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:01:25.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:01:25.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:25.088 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:01:25.088 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:25.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:25.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:01:25.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625428 -999.00  +16.60  16.63     43   +4.10 1 1 1 1 1   887    0 11.00 -70.99 ----- 16.6 16.6 197.8 19.5 20.8 -27.2 20.3 -26.8 22.0 -26.6 22.7 -27.0
2025-09-28T17:01:25.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:01:25.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:01:25.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625428
2025-09-28T17:01:25.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:01:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:01:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:01:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:01:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:01:25.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:01:04', tmtdew=14.06, humidity=38.73, cloud=0.0, wind=21.14, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:00:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:01:25.091 [DEBUG] [Thread-130292] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:25.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-28T17:01:25.183 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:25.183 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:25.187 [DEBUG] [Thread-130295] [transport.py] [_log()] starting thread (client mode): 0x2b9bbcd0
2025-09-28T17:01:25.187 [DEBUG] [Thread-130295] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:25.202 [DEBUG] [Thread-130295] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:01:25.202 [INFO] [Thread-130295] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:01:25.209 [DEBUG] [Thread-130295] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:25.209 [DEBUG] [Thread-130295] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:01:25.209 [DEBUG] [Thread-130295] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] Compression: none
2025-09-28T17:01:25.210 [DEBUG] [Thread-130295] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:25.268 [DEBUG] [Thread-130295] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:25.268 [DEBUG] [Thread-130295] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:25.268 [DEBUG] [Thread-130295] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:01:25.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:01:25.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:25.325 [DEBUG] [Thread-130295] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:25.325 [DEBUG] [Thread-130295] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:25.325 [DEBUG] [Thread-130295] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:25.325 [DEBUG] [Thread-130295] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:01:25.325 [DEBUG] [Thread-130295] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:25.344 [INFO] [Thread-130295] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:25.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-28T17:01:25.346 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:26.335 [DEBUG] [Thread-130295] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:26.336 [DEBUG] [Thread-130295] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:26.383 [DEBUG] [Thread-130295] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:26.383 [DEBUG] [Thread-130295] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:26.392 [DEBUG] [Thread-130295] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:26.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:26.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')
2025-09-28T17:01:26.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-28T17:01:26.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:26.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:26.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:26.427 [DEBUG] [Thread-130295] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:36.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:01:36.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:01:36.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-28T17:01:36.588 [DEBUG] [Thread-130297 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 1, 4), 14.06, 38.73, 0.0, 21.14, 16.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:01:37.009 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:01:04
2025-09-28T17:01:37.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:01:37.277 [DEBUG] [Thread-130298] [transport.py] [_log()] starting thread (client mode): 0x2b954eb0
2025-09-28T17:01:37.277 [DEBUG] [Thread-130298] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:37.297 [DEBUG] [Thread-130298] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:01:37.297 [INFO] [Thread-130298] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:37.300 [DEBUG] [Thread-130298] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] Compression: none
2025-09-28T17:01:37.301 [DEBUG] [Thread-130298] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:37.317 [DEBUG] [Thread-130298] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:37.317 [DEBUG] [Thread-130298] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:37.317 [DEBUG] [Thread-130298] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:01:37.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:01:37.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:37.318 [DEBUG] [Thread-130298] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:37.318 [DEBUG] [Thread-130298] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:37.318 [DEBUG] [Thread-130298] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:37.318 [DEBUG] [Thread-130298] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:01:37.318 [DEBUG] [Thread-130298] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:37.328 [INFO] [Thread-130298] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:37.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:37.852 [DEBUG] [Thread-130298] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:37.852 [DEBUG] [Thread-130298] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:37.852 [DEBUG] [Thread-130298] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:01:37.893 [DEBUG] [Thread-130298] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:37.893 [DEBUG] [Thread-130298] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:37.895 [DEBUG] [Thread-130298] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:37.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:37.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:01:37.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:01:37.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:01:37.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:37.912 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:01:37.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625775 -999.00  +16.70  12.83     42   +4.00 1 1 1 1 1   887    0 11.01 -65.83 ----- 12.8 12.8 193.6 22.9 20.8 -27.3 20.4 -26.2 22.0 -26.4 22.8 -27.4
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625775
2025-09-28T17:01:37.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:01:37.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:01:37.913 [DEBUG] [Thread-130298] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:37.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:01:37.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:01:37.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:01:37.913 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:01:04', tmtdew=14.06, humidity=38.73, cloud=0.0, wind=21.14, temperature=16.33, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:01:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:01:37.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-28T17:01:38.000 [DEBUG] [Thread-130301] [transport.py] [_log()] starting thread (client mode): 0x2b91e590
2025-09-28T17:01:38.000 [DEBUG] [Thread-130301] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:38.015 [DEBUG] [Thread-130301] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:01:38.015 [INFO] [Thread-130301] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] Compression: none
2025-09-28T17:01:38.023 [DEBUG] [Thread-130301] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:38.080 [DEBUG] [Thread-130301] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:38.081 [DEBUG] [Thread-130301] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:38.081 [DEBUG] [Thread-130301] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:01:38.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:01:38.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:38.141 [DEBUG] [Thread-130301] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:38.141 [DEBUG] [Thread-130301] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:38.141 [DEBUG] [Thread-130301] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:38.141 [DEBUG] [Thread-130301] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:01:38.141 [DEBUG] [Thread-130301] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:38.155 [INFO] [Thread-130301] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:38.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-28T17:01:38.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:39.103 [DEBUG] [Thread-130301] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:39.103 [DEBUG] [Thread-130301] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:39.151 [DEBUG] [Thread-130301] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:39.152 [DEBUG] [Thread-130301] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:39.163 [DEBUG] [Thread-130301] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:39.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:39.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-28T17:01:39.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') -> 00000000
2025-09-28T17:01:39.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:39.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:39.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:39.198 [DEBUG] [Thread-130301] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:49.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:01:49.200 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:01:49.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-28T17:01:49.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 1, 36), 14.4, 38.05, 0.0, 18.51, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:01:49.817 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:01:36
2025-09-28T17:01:49.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:01:50.082 [DEBUG] [Thread-130303] [transport.py] [_log()] starting thread (client mode): 0x2b91f100
2025-09-28T17:01:50.082 [DEBUG] [Thread-130303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:50.102 [DEBUG] [Thread-130303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:01:50.102 [INFO] [Thread-130303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] Compression: none
2025-09-28T17:01:50.106 [DEBUG] [Thread-130303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:50.119 [DEBUG] [Thread-130303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:50.119 [DEBUG] [Thread-130303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:50.119 [DEBUG] [Thread-130303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:01:50.119 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:01:50.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:50.120 [DEBUG] [Thread-130303] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:50.120 [DEBUG] [Thread-130303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:50.120 [DEBUG] [Thread-130303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:50.120 [DEBUG] [Thread-130303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:01:50.120 [DEBUG] [Thread-130303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:50.129 [INFO] [Thread-130303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:50.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:50.919 [DEBUG] [Thread-130303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:50.919 [DEBUG] [Thread-130303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:50.919 [DEBUG] [Thread-130303] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:01:50.960 [DEBUG] [Thread-130303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:50.960 [DEBUG] [Thread-130303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:50.964 [DEBUG] [Thread-130303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:50.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:50.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:01:50.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:01:50.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:01:50.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:50.981 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:01:50.981 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.625775 -999.00  +16.70  12.83     42   +4.00 1 1 1 1 1   887    0 11.01 -65.83 ----- 12.8 12.8 193.6 22.9 20.8 -27.3 20.4 -26.2 22.0 -26.4 22.8 -27.4
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.625775
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:01:50.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:01:36', tmtdew=14.4, humidity=38.05, cloud=0.0, wind=18.51, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:01:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:01:50.981 [DEBUG] [Thread-130303] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:01:51.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-28T17:01:51.065 [DEBUG] [Thread-130306] [transport.py] [_log()] starting thread (client mode): 0x2b9547f0
2025-09-28T17:01:51.066 [DEBUG] [Thread-130306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:01:51.080 [DEBUG] [Thread-130306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:01:51.080 [INFO] [Thread-130306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] client lang: <none>
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] server lang: <none>
2025-09-28T17:01:51.087 [DEBUG] [Thread-130306] [transport.py] [_log()] kex follows: False
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] Compression: none
2025-09-28T17:01:51.088 [DEBUG] [Thread-130306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:01:51.147 [DEBUG] [Thread-130306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:01:51.147 [DEBUG] [Thread-130306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:01:51.148 [DEBUG] [Thread-130306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:01:51.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:01:51.148 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:01:51.206 [DEBUG] [Thread-130306] [transport.py] [_log()] userauth is OK
2025-09-28T17:01:51.206 [DEBUG] [Thread-130306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:01:51.206 [DEBUG] [Thread-130306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:01:51.206 [DEBUG] [Thread-130306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:01:51.206 [DEBUG] [Thread-130306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:01:51.224 [INFO] [Thread-130306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:01:51.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-28T17:01:51.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:01:51.610 [DEBUG] [Thread-130308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:01:52.187 [DEBUG] [Thread-130306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:01:52.187 [DEBUG] [Thread-130306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:01:52.235 [DEBUG] [Thread-130306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:01:52.235 [DEBUG] [Thread-130306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:01:52.244 [DEBUG] [Thread-130306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:01:52.252 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:01:52.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-28T17:01:52.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-28T17:01:52.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:01:52.270 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:01:52.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:01:52.278 [DEBUG] [Thread-130306] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:02.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:02:02.281 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:02:02.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-28T17:02:02.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 1, 36), 14.4, 38.05, 0.0, 18.51, 16.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:02:02.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:01:36
2025-09-28T17:02:02.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:02:03.145 [DEBUG] [Thread-130309] [transport.py] [_log()] starting thread (client mode): 0x2b9b8e80
2025-09-28T17:02:03.145 [DEBUG] [Thread-130309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:03.167 [DEBUG] [Thread-130309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:02:03.167 [INFO] [Thread-130309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:02:03.170 [DEBUG] [Thread-130309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:03.170 [DEBUG] [Thread-130309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] Compression: none
2025-09-28T17:02:03.171 [DEBUG] [Thread-130309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:03.189 [DEBUG] [Thread-130309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:03.190 [DEBUG] [Thread-130309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:03.190 [DEBUG] [Thread-130309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:02:03.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:02:03.191 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:03.192 [DEBUG] [Thread-130309] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:03.193 [DEBUG] [Thread-130309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:03.193 [DEBUG] [Thread-130309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:03.193 [DEBUG] [Thread-130309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:02:03.193 [DEBUG] [Thread-130309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:03.216 [INFO] [Thread-130309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:03.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:03.869 [DEBUG] [Thread-130309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:03.869 [DEBUG] [Thread-130309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:03.870 [DEBUG] [Thread-130309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:02:03.910 [DEBUG] [Thread-130309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:03.910 [DEBUG] [Thread-130309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:03.913 [DEBUG] [Thread-130309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:03.926 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:03.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:02:03.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:02:03.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:02:03.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:03.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:02:03.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626123 -999.00  +16.70  17.80     42   +4.00 1 1 1 1 1   887    0 11.06 -68.84 ----- 17.8 17.8 202.6 22.1 20.8 -27.6 20.4 -28.1 21.9 -26.3 22.7 -28.5
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:02:03.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626123
2025-09-28T17:02:03.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:02:03.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:02:03.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:02:03.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:02:03.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:02:03.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:01:36', tmtdew=14.4, humidity=38.05, cloud=0.0, wind=18.51, temperature=16.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:01:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:02:03.942 [DEBUG] [Thread-130309] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:04.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-28T17:02:04.044 [DEBUG] [Thread-130312] [transport.py] [_log()] starting thread (client mode): 0x2b9b8b80
2025-09-28T17:02:04.044 [DEBUG] [Thread-130312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:04.059 [DEBUG] [Thread-130312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:02:04.060 [INFO] [Thread-130312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:02:04.067 [DEBUG] [Thread-130312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:04.067 [DEBUG] [Thread-130312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] Compression: none
2025-09-28T17:02:04.068 [DEBUG] [Thread-130312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:04.127 [DEBUG] [Thread-130312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:04.128 [DEBUG] [Thread-130312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:04.128 [DEBUG] [Thread-130312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:02:04.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:02:04.129 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:04.184 [DEBUG] [Thread-130312] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:04.184 [DEBUG] [Thread-130312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:04.184 [DEBUG] [Thread-130312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:04.184 [DEBUG] [Thread-130312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:02:04.184 [DEBUG] [Thread-130312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:04.203 [INFO] [Thread-130312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:04.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-28T17:02:04.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:05.167 [DEBUG] [Thread-130312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:05.167 [DEBUG] [Thread-130312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:05.215 [DEBUG] [Thread-130312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:05.215 [DEBUG] [Thread-130312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:05.224 [DEBUG] [Thread-130312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:05.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:05.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-28T17:02:05.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-28T17:02:05.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:05.251 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:05.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:05.259 [DEBUG] [Thread-130312] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:06.652 [DEBUG] [Thread-130314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:15.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:02:15.262 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:02:15.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-28T17:02:15.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 2, 8), 14.58, 37.62, 0.0, 18.92, 16.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:02:15.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:02:08
2025-09-28T17:02:15.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:02:16.129 [DEBUG] [Thread-130315] [transport.py] [_log()] starting thread (client mode): 0x2b9ddd80
2025-09-28T17:02:16.129 [DEBUG] [Thread-130315] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:16.149 [DEBUG] [Thread-130315] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:02:16.149 [INFO] [Thread-130315] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:16.151 [DEBUG] [Thread-130315] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] Compression: none
2025-09-28T17:02:16.152 [DEBUG] [Thread-130315] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:16.159 [DEBUG] [Thread-130315] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:16.160 [DEBUG] [Thread-130315] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:16.160 [DEBUG] [Thread-130315] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:02:16.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:02:16.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:16.161 [DEBUG] [Thread-130315] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:16.161 [DEBUG] [Thread-130315] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:16.161 [DEBUG] [Thread-130315] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:16.161 [DEBUG] [Thread-130315] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:02:16.161 [DEBUG] [Thread-130315] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:16.173 [INFO] [Thread-130315] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:16.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:16.978 [DEBUG] [Thread-130315] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:16.978 [DEBUG] [Thread-130315] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:16.978 [DEBUG] [Thread-130315] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:02:17.019 [DEBUG] [Thread-130315] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:17.019 [DEBUG] [Thread-130315] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:17.022 [DEBUG] [Thread-130315] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:17.037 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:17.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:02:17.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:02:17.041 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:02:17.046 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:17.048 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:02:17.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:17.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:17.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:02:17.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626123 -999.00  +16.70  17.80     42   +4.00 1 1 1 1 1   887    0 11.06 -68.84 ----- 17.8 17.8 202.6 22.1 20.8 -27.6 20.4 -28.1 21.9 -26.3 22.7 -28.5
2025-09-28T17:02:17.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:02:17.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:02:17.049 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626123
2025-09-28T17:02:17.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:02:17.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:02:17.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:02:17.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:02:17.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:02:17.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:02:08', tmtdew=14.58, humidity=37.62, cloud=0.0, wind=18.92, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:01:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:02:17.051 [DEBUG] [Thread-130315] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:17.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-28T17:02:17.146 [DEBUG] [Thread-130318] [transport.py] [_log()] starting thread (client mode): 0x2b957910
2025-09-28T17:02:17.146 [DEBUG] [Thread-130318] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:17.160 [DEBUG] [Thread-130318] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:02:17.160 [INFO] [Thread-130318] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:02:17.168 [DEBUG] [Thread-130318] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:17.168 [DEBUG] [Thread-130318] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:02:17.168 [DEBUG] [Thread-130318] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:17.168 [DEBUG] [Thread-130318] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:17.168 [DEBUG] [Thread-130318] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:17.169 [DEBUG] [Thread-130318] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:17.170 [DEBUG] [Thread-130318] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:17.170 [DEBUG] [Thread-130318] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:17.170 [DEBUG] [Thread-130318] [transport.py] [_log()] Compression: none
2025-09-28T17:02:17.170 [DEBUG] [Thread-130318] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:17.229 [DEBUG] [Thread-130318] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:17.230 [DEBUG] [Thread-130318] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:17.231 [DEBUG] [Thread-130318] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:02:17.231 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:02:17.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:17.288 [DEBUG] [Thread-130318] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:17.288 [DEBUG] [Thread-130318] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:17.289 [DEBUG] [Thread-130318] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:17.289 [DEBUG] [Thread-130318] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:02:17.289 [DEBUG] [Thread-130318] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:17.311 [INFO] [Thread-130318] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:17.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-28T17:02:17.312 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:18.256 [DEBUG] [Thread-130318] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:18.256 [DEBUG] [Thread-130318] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:18.304 [DEBUG] [Thread-130318] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:18.304 [DEBUG] [Thread-130318] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:18.313 [DEBUG] [Thread-130318] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:18.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:18.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-28T17:02:18.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-28T17:02:18.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:18.343 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:18.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:18.351 [DEBUG] [Thread-130318] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:21.701 [DEBUG] [Thread-130320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:22.672 [DEBUG] [Thread-130321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:25.324 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:25.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:28.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:02:28.354 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:02:28.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-28T17:02:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 2, 8), 14.58, 37.62, 0.0, 18.92, 16.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:02:28.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:02:08
2025-09-28T17:02:29.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:02:29.270 [DEBUG] [Thread-130322] [transport.py] [_log()] starting thread (client mode): 0x2b9df5e0
2025-09-28T17:02:29.270 [DEBUG] [Thread-130322] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:29.291 [DEBUG] [Thread-130322] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:02:29.291 [INFO] [Thread-130322] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:29.294 [DEBUG] [Thread-130322] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] Compression: none
2025-09-28T17:02:29.295 [DEBUG] [Thread-130322] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:29.308 [DEBUG] [Thread-130322] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:29.309 [DEBUG] [Thread-130322] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:29.309 [DEBUG] [Thread-130322] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:02:29.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:02:29.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:29.309 [DEBUG] [Thread-130322] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:29.310 [DEBUG] [Thread-130322] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:29.310 [DEBUG] [Thread-130322] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:29.310 [DEBUG] [Thread-130322] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:02:29.310 [DEBUG] [Thread-130322] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:29.319 [INFO] [Thread-130322] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:29.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:30.072 [DEBUG] [Thread-130322] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:30.072 [DEBUG] [Thread-130322] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:30.073 [DEBUG] [Thread-130322] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:02:30.113 [DEBUG] [Thread-130322] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:30.114 [DEBUG] [Thread-130322] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:30.118 [DEBUG] [Thread-130322] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:30.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:30.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:02:30.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:02:30.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:02:30.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:30.132 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:02:30.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:30.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:30.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:02:30.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626123 -999.00  +16.70  17.80     42   +4.00 1 1 1 1 1   887    0 11.06 -68.84 ----- 17.8 17.8 202.6 22.1 20.8 -27.6 20.4 -28.1 21.9 -26.3 22.7 -28.5
2025-09-28T17:02:30.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:02:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:02:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626123
2025-09-28T17:02:30.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:02:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:02:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:02:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:02:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:02:30.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:02:08', tmtdew=14.58, humidity=37.62, cloud=0.0, wind=18.92, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:01:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:02:30.134 [DEBUG] [Thread-130322] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:30.218 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:02:30.230 [DEBUG] [Thread-130325] [transport.py] [_log()] starting thread (client mode): 0x2b9dc940
2025-09-28T17:02:30.230 [DEBUG] [Thread-130325] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:30.245 [DEBUG] [Thread-130325] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:02:30.245 [INFO] [Thread-130325] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:02:30.252 [DEBUG] [Thread-130325] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:30.252 [DEBUG] [Thread-130325] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:02:30.252 [DEBUG] [Thread-130325] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] Compression: none
2025-09-28T17:02:30.253 [DEBUG] [Thread-130325] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:30.312 [DEBUG] [Thread-130325] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:30.312 [DEBUG] [Thread-130325] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:30.313 [DEBUG] [Thread-130325] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:02:30.313 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:02:30.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:30.369 [DEBUG] [Thread-130325] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:30.369 [DEBUG] [Thread-130325] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:30.369 [DEBUG] [Thread-130325] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:30.369 [DEBUG] [Thread-130325] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:02:30.370 [DEBUG] [Thread-130325] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:30.389 [INFO] [Thread-130325] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02: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-28T17:02:30.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:31.434 [DEBUG] [Thread-130325] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:31.434 [DEBUG] [Thread-130325] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:31.482 [DEBUG] [Thread-130325] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:31.482 [DEBUG] [Thread-130325] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:31.491 [DEBUG] [Thread-130325] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:31.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:31.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')
2025-09-28T17:02:31.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-28T17:02:31.518 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:31.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:31.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:31.526 [DEBUG] [Thread-130325] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:36.747 [DEBUG] [Thread-130327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:41.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:02:41.529 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:02:41.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:02:42.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 2, 8), 14.58, 37.62, 0.0, 18.92, 16.64, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:02:42.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:02:08
2025-09-28T17:02:42.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:02:42.419 [DEBUG] [Thread-130328] [transport.py] [_log()] starting thread (client mode): 0x2b9df100
2025-09-28T17:02:42.419 [DEBUG] [Thread-130328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:42.438 [DEBUG] [Thread-130328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:02:42.438 [INFO] [Thread-130328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:42.441 [DEBUG] [Thread-130328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:42.442 [DEBUG] [Thread-130328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:42.442 [DEBUG] [Thread-130328] [transport.py] [_log()] Compression: none
2025-09-28T17:02:42.442 [DEBUG] [Thread-130328] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:42.458 [DEBUG] [Thread-130328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:02:42.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:02:42.459 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:02:42.459 [DEBUG] [Thread-130328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:42.475 [INFO] [Thread-130328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:42.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:43.092 [DEBUG] [Thread-130328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:43.093 [DEBUG] [Thread-130328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:43.093 [DEBUG] [Thread-130328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:02:43.134 [DEBUG] [Thread-130328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:43.134 [DEBUG] [Thread-130328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:43.138 [DEBUG] [Thread-130328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:43.150 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:43.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:02:43.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:02:43.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:02:43.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:43.161 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:02:43.161 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:43.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:43.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:02:43.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626470 -999.00  +16.60  14.86     43   +4.00 1 1 1 1 1   887    0 10.95 -62.31 ----- 14.9 14.9 230.1 24.2 20.8 -27.7 20.4 -26.8 21.9 -25.9 22.6 -28.4
2025-09-28T17:02:43.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:02:43.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:02:43.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626470
2025-09-28T17:02:43.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:02:43.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:02:43.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:02:43.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:02:43.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:02:43.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:02:08', tmtdew=14.58, humidity=37.62, cloud=0.0, wind=18.92, temperature=16.64, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:02:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:02:43.164 [DEBUG] [Thread-130328] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:43.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-28T17:02:43.259 [DEBUG] [Thread-130331] [transport.py] [_log()] starting thread (client mode): 0x2b9dca30
2025-09-28T17:02:43.259 [DEBUG] [Thread-130331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:43.274 [DEBUG] [Thread-130331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:02:43.274 [INFO] [Thread-130331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:43.281 [DEBUG] [Thread-130331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] Compression: none
2025-09-28T17:02:43.282 [DEBUG] [Thread-130331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:43.345 [DEBUG] [Thread-130331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:43.346 [DEBUG] [Thread-130331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:43.346 [DEBUG] [Thread-130331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:02:43.346 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:02:43.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:43.401 [DEBUG] [Thread-130331] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:43.401 [DEBUG] [Thread-130331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:43.401 [DEBUG] [Thread-130331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:43.401 [DEBUG] [Thread-130331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:02:43.401 [DEBUG] [Thread-130331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:43.420 [INFO] [Thread-130331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:43.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-28T17:02:43.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:44.372 [DEBUG] [Thread-130331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:44.373 [DEBUG] [Thread-130331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:44.420 [DEBUG] [Thread-130331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:44.420 [DEBUG] [Thread-130331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:44.429 [DEBUG] [Thread-130331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:44.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:44.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-28T17:02:44.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-28T17:02:44.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:44.455 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:44.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:44.463 [DEBUG] [Thread-130331] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:51.777 [DEBUG] [Thread-130333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:02:54.464 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:02:54.465 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:02:54.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-28T17:02:55.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 2, 40), 14.7, 37.05, 0.0, 19.29, 16.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:02:55.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:02:40
2025-09-28T17:02:55.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:02:55.318 [DEBUG] [Thread-130334] [transport.py] [_log()] starting thread (client mode): 0x2b956890
2025-09-28T17:02:55.318 [DEBUG] [Thread-130334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:55.339 [DEBUG] [Thread-130334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:02:55.339 [INFO] [Thread-130334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:55.342 [DEBUG] [Thread-130334] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] Compression: none
2025-09-28T17:02:55.343 [DEBUG] [Thread-130334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:55.362 [DEBUG] [Thread-130334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:55.363 [DEBUG] [Thread-130334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:55.363 [DEBUG] [Thread-130334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:02:55.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:02:55.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:55.365 [DEBUG] [Thread-130334] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:55.366 [DEBUG] [Thread-130334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:55.366 [DEBUG] [Thread-130334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:55.366 [DEBUG] [Thread-130334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:02:55.366 [DEBUG] [Thread-130334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:55.391 [INFO] [Thread-130334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:55.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:56.185 [DEBUG] [Thread-130334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:56.185 [DEBUG] [Thread-130334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:56.186 [DEBUG] [Thread-130334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:02:56.226 [DEBUG] [Thread-130334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:56.227 [DEBUG] [Thread-130334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:56.229 [DEBUG] [Thread-130334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:56.246 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:56.246 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:02:56.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:02:56.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:02:56.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:56.256 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:02:56.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626470 -999.00  +16.60  14.86     43   +4.00 1 1 1 1 1   887    0 10.95 -62.31 ----- 14.9 14.9 230.1 24.2 20.8 -27.7 20.4 -26.8 21.9 -25.9 22.6 -28.4
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:02:56.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626470
2025-09-28T17:02:56.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:02:56.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:02:56.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:02:56.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:02:56.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:02:56.259 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:02:40', tmtdew=14.7, humidity=37.05, cloud=0.0, wind=19.29, temperature=16.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:02:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:02:56.259 [DEBUG] [Thread-130334] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:02:56.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-28T17:02:56.353 [DEBUG] [Thread-130337] [transport.py] [_log()] starting thread (client mode): 0x2e3490f0
2025-09-28T17:02:56.353 [DEBUG] [Thread-130337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:02:56.368 [DEBUG] [Thread-130337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:02:56.368 [INFO] [Thread-130337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:02:56.376 [DEBUG] [Thread-130337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:02:56.376 [DEBUG] [Thread-130337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:02:56.376 [DEBUG] [Thread-130337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:02:56.376 [DEBUG] [Thread-130337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] client lang: <none>
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] server lang: <none>
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] kex follows: False
2025-09-28T17:02:56.377 [DEBUG] [Thread-130337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] Compression: none
2025-09-28T17:02:56.378 [DEBUG] [Thread-130337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:02:56.434 [DEBUG] [Thread-130337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:02:56.434 [DEBUG] [Thread-130337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:02:56.435 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:02:56.436 [DEBUG] [Thread-130337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:02:56.437 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:02:56.490 [DEBUG] [Thread-130337] [transport.py] [_log()] userauth is OK
2025-09-28T17:02:56.490 [DEBUG] [Thread-130337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:02:56.491 [DEBUG] [Thread-130337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:02:56.491 [DEBUG] [Thread-130337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:02:56.491 [DEBUG] [Thread-130337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:02:56.510 [INFO] [Thread-130337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:02:56.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-28T17:02:56.510 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:02:57.456 [DEBUG] [Thread-130337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:02:57.457 [DEBUG] [Thread-130337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:02:57.504 [DEBUG] [Thread-130337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:02:57.504 [DEBUG] [Thread-130337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:02:57.513 [DEBUG] [Thread-130337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:02:57.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:02:57.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')
2025-09-28T17:02:57.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') -> 00000000
2025-09-28T17:02:57.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:02:57.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:02:57.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:02:57.549 [DEBUG] [Thread-130337] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:06.822 [DEBUG] [Thread-130339 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:07.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:03:07.550 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:03:07.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-28T17:03:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 2, 40), 14.7, 37.05, 0.0, 19.29, 16.74, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:03:08.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:02:40
2025-09-28T17:03:08.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:03:08.394 [DEBUG] [Thread-130340] [transport.py] [_log()] starting thread (client mode): 0x2e363970
2025-09-28T17:03:08.394 [DEBUG] [Thread-130340] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:08.413 [DEBUG] [Thread-130340] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:03:08.413 [INFO] [Thread-130340] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:03:08.415 [DEBUG] [Thread-130340] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] Compression: none
2025-09-28T17:03:08.416 [DEBUG] [Thread-130340] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:08.427 [DEBUG] [Thread-130340] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:08.427 [DEBUG] [Thread-130340] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:08.428 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:03:08.428 [DEBUG] [Thread-130340] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:03:08.429 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:08.430 [DEBUG] [Thread-130340] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:08.430 [DEBUG] [Thread-130340] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:08.430 [DEBUG] [Thread-130340] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:08.430 [DEBUG] [Thread-130340] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:03:08.430 [DEBUG] [Thread-130340] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:08.457 [INFO] [Thread-130340] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:08.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:09.120 [DEBUG] [Thread-130340] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:09.120 [DEBUG] [Thread-130340] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:09.120 [DEBUG] [Thread-130340] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:03:09.161 [DEBUG] [Thread-130340] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:09.161 [DEBUG] [Thread-130340] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:09.163 [DEBUG] [Thread-130340] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:09.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:09.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:03:09.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:03:09.177 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:09.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:03:09.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626817 -999.00  +16.70  11.17     43   +4.00 1 1 1 1 1   887    0 11.01 -56.04 ----- 11.2 11.2 189.1 18.4 20.8 -28.0 20.4 -26.1 21.9 -26.1 22.7 -28.2
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:03:09.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626817
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:03:09.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:02:40', tmtdew=14.7, humidity=37.05, cloud=0.0, wind=19.29, temperature=16.74, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:02:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:03:09.181 [DEBUG] [Thread-130340] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:09.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-28T17:03:09.267 [DEBUG] [Thread-130343] [transport.py] [_log()] starting thread (client mode): 0x2e363cd0
2025-09-28T17:03:09.267 [DEBUG] [Thread-130343] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:09.282 [DEBUG] [Thread-130343] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:03:09.282 [INFO] [Thread-130343] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:09.290 [DEBUG] [Thread-130343] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:09.291 [DEBUG] [Thread-130343] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:09.291 [DEBUG] [Thread-130343] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:09.291 [DEBUG] [Thread-130343] [transport.py] [_log()] Compression: none
2025-09-28T17:03:09.291 [DEBUG] [Thread-130343] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:09.346 [DEBUG] [Thread-130343] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:09.346 [DEBUG] [Thread-130343] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:09.347 [DEBUG] [Thread-130343] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:03:09.347 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:03:09.348 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:09.405 [DEBUG] [Thread-130343] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:09.406 [DEBUG] [Thread-130343] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:09.406 [DEBUG] [Thread-130343] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:09.406 [DEBUG] [Thread-130343] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:03:09.406 [DEBUG] [Thread-130343] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:09.424 [INFO] [Thread-130343] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:09.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-28T17:03:09.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:10.378 [DEBUG] [Thread-130343] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:10.378 [DEBUG] [Thread-130343] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:10.426 [DEBUG] [Thread-130343] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:10.426 [DEBUG] [Thread-130343] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:10.435 [DEBUG] [Thread-130343] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:10.444 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:10.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-28T17:03:10.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-28T17:03:10.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:10.462 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:10.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:10.470 [DEBUG] [Thread-130343] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:20.473 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:03:20.473 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:03:20.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-28T17:03:21.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 3, 12), 14.79, 36.85, 0.0, 20.57, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:03:21.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:03:12
2025-09-28T17:03:21.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:03:21.314 [DEBUG] [Thread-130345] [transport.py] [_log()] starting thread (client mode): 0x2b9dd0f0
2025-09-28T17:03:21.314 [DEBUG] [Thread-130345] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:21.331 [DEBUG] [Thread-130345] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:03:21.331 [INFO] [Thread-130345] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:21.334 [DEBUG] [Thread-130345] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:21.335 [DEBUG] [Thread-130345] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:21.335 [DEBUG] [Thread-130345] [transport.py] [_log()] Compression: none
2025-09-28T17:03:21.335 [DEBUG] [Thread-130345] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:21.355 [DEBUG] [Thread-130345] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:21.356 [DEBUG] [Thread-130345] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:21.356 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:03:21.357 [DEBUG] [Thread-130345] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:03:21.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:21.359 [DEBUG] [Thread-130345] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:21.359 [DEBUG] [Thread-130345] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:21.359 [DEBUG] [Thread-130345] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:21.359 [DEBUG] [Thread-130345] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:03:21.359 [DEBUG] [Thread-130345] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:21.384 [INFO] [Thread-130345] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:21.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:21.868 [DEBUG] [Thread-130347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:22.228 [DEBUG] [Thread-130345] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:22.228 [DEBUG] [Thread-130345] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:22.228 [DEBUG] [Thread-130345] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:03:22.268 [DEBUG] [Thread-130345] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:22.268 [DEBUG] [Thread-130345] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:22.272 [DEBUG] [Thread-130345] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:22.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:22.283 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:03:22.285 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:03:22.287 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:03:22.292 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:22.294 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:03:22.294 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626817 -999.00  +16.70  11.17     43   +4.00 1 1 1 1 1   887    0 11.01 -56.04 ----- 11.2 11.2 189.1 18.4 20.8 -28.0 20.4 -26.1 21.9 -26.1 22.7 -28.2
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:03:22.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626817
2025-09-28T17:03:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:03:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:03:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:03:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:03:22.296 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:03:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:03:12', tmtdew=14.79, humidity=36.85, cloud=0.0, wind=20.57, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:02:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:03:22.297 [DEBUG] [Thread-130345] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:22.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-28T17:03:22.390 [DEBUG] [Thread-130349] [transport.py] [_log()] starting thread (client mode): 0x2b955270
2025-09-28T17:03:22.391 [DEBUG] [Thread-130349] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:22.406 [DEBUG] [Thread-130349] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:03:22.406 [INFO] [Thread-130349] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:22.414 [DEBUG] [Thread-130349] [transport.py] [_log()] Compression: none
2025-09-28T17:03:22.415 [DEBUG] [Thread-130349] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:22.470 [DEBUG] [Thread-130349] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:22.471 [DEBUG] [Thread-130349] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:22.471 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:03:22.472 [DEBUG] [Thread-130349] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:03:22.472 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:22.527 [DEBUG] [Thread-130349] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:22.527 [DEBUG] [Thread-130349] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:22.527 [DEBUG] [Thread-130349] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:22.528 [DEBUG] [Thread-130349] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:03:22.528 [DEBUG] [Thread-130349] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:22.547 [INFO] [Thread-130349] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:22.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-28T17:03:22.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:22.722 [DEBUG] [Thread-130351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:23.493 [DEBUG] [Thread-130349] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:23.493 [DEBUG] [Thread-130349] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:23.541 [DEBUG] [Thread-130349] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:23.541 [DEBUG] [Thread-130349] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:23.551 [DEBUG] [Thread-130349] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:23.560 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:23.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-28T17:03:23.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-28T17:03:23.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:23.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:23.578 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:23.586 [DEBUG] [Thread-130349] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:25.467 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:25.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:33.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:03:33.589 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:03:33.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-28T17:03:34.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 3, 12), 14.79, 36.85, 0.0, 20.57, 16.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:03:34.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:03:12
2025-09-28T17:03:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:03:34.432 [DEBUG] [Thread-130352] [transport.py] [_log()] starting thread (client mode): 0x2b9dd210
2025-09-28T17:03:34.433 [DEBUG] [Thread-130352] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:34.454 [DEBUG] [Thread-130352] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:03:34.454 [INFO] [Thread-130352] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:03:34.457 [DEBUG] [Thread-130352] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:34.457 [DEBUG] [Thread-130352] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] Compression: none
2025-09-28T17:03:34.458 [DEBUG] [Thread-130352] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:34.474 [DEBUG] [Thread-130352] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:34.475 [DEBUG] [Thread-130352] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:34.475 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:03:34.475 [DEBUG] [Thread-130352] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:03:34.476 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:34.478 [DEBUG] [Thread-130352] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:34.478 [DEBUG] [Thread-130352] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:34.478 [DEBUG] [Thread-130352] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:34.478 [DEBUG] [Thread-130352] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:03:34.478 [DEBUG] [Thread-130352] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:34.501 [INFO] [Thread-130352] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:34.501 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:35.379 [DEBUG] [Thread-130352] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:35.380 [DEBUG] [Thread-130352] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:35.380 [DEBUG] [Thread-130352] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:03:35.421 [DEBUG] [Thread-130352] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:35.421 [DEBUG] [Thread-130352] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:35.424 [DEBUG] [Thread-130352] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:35.436 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:35.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:03:35.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:03:35.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:03:35.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:35.446 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:03:35.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:35.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.626817 -999.00  +16.70  11.17     43   +4.00 1 1 1 1 1   887    0 11.01 -56.04 ----- 11.2 11.2 189.1 18.4 20.8 -28.0 20.4 -26.1 21.9 -26.1 22.7 -28.2
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.626817
2025-09-28T17:03:35.447 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:03:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:03:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:03:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:03:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:03:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:03:12', tmtdew=14.79, humidity=36.85, cloud=0.0, wind=20.57, temperature=16.82, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:02:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:03:35.448 [DEBUG] [Thread-130352] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:35.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-28T17:03:35.547 [DEBUG] [Thread-130355] [transport.py] [_log()] starting thread (client mode): 0x2e362ef0
2025-09-28T17:03:35.547 [DEBUG] [Thread-130355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:35.565 [DEBUG] [Thread-130355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:03:35.566 [INFO] [Thread-130355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:03:35.573 [DEBUG] [Thread-130355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:35.573 [DEBUG] [Thread-130355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:35.574 [DEBUG] [Thread-130355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:35.575 [DEBUG] [Thread-130355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:35.576 [DEBUG] [Thread-130355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:35.576 [DEBUG] [Thread-130355] [transport.py] [_log()] Compression: none
2025-09-28T17:03:35.576 [DEBUG] [Thread-130355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:35.632 [DEBUG] [Thread-130355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:35.633 [DEBUG] [Thread-130355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:35.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:03:35.634 [DEBUG] [Thread-130355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:03:35.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:35.688 [DEBUG] [Thread-130355] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:35.688 [DEBUG] [Thread-130355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:35.688 [DEBUG] [Thread-130355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:35.688 [DEBUG] [Thread-130355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:03:35.688 [DEBUG] [Thread-130355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:35.708 [INFO] [Thread-130355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:35.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-28T17:03:35.709 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:36.655 [DEBUG] [Thread-130355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:36.655 [DEBUG] [Thread-130355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:36.872 [DEBUG] [Thread-130355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:36.873 [DEBUG] [Thread-130355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:36.882 [DEBUG] [Thread-130355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:36.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:36.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-28T17:03:36.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T17:03:36.908 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:36.908 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:36.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:36.914 [DEBUG] [Thread-130357 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:36.916 [DEBUG] [Thread-130355] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:46.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:03:46.919 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:03:46.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-28T17:03:47.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 3, 44), 14.76, 36.92, 0.0, 19.48, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:03:47.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:03:44
2025-09-28T17:03:47.613 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:03:47.761 [DEBUG] [Thread-130358] [transport.py] [_log()] starting thread (client mode): 0x2b957970
2025-09-28T17:03:47.761 [DEBUG] [Thread-130358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:47.781 [DEBUG] [Thread-130358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:03:47.781 [INFO] [Thread-130358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] Compression: none
2025-09-28T17:03:47.784 [DEBUG] [Thread-130358] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:47.801 [DEBUG] [Thread-130358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:47.802 [DEBUG] [Thread-130358] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:47.802 [DEBUG] [Thread-130358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:03:47.802 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:03:47.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:47.805 [DEBUG] [Thread-130358] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:47.805 [DEBUG] [Thread-130358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:47.805 [DEBUG] [Thread-130358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:47.805 [DEBUG] [Thread-130358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:03:47.805 [DEBUG] [Thread-130358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:47.830 [INFO] [Thread-130358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:47.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:48.505 [DEBUG] [Thread-130358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:48.505 [DEBUG] [Thread-130358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:48.505 [DEBUG] [Thread-130358] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:03:48.546 [DEBUG] [Thread-130358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:48.547 [DEBUG] [Thread-130358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:48.549 [DEBUG] [Thread-130358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:48.561 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:48.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:03:48.563 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:03:48.564 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:03:48.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:48.569 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:03:48.570 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.627164 -999.00  +16.80  20.69     42   +4.00 1 1 1 1 1   887    0 11.42 -53.63 ----- 20.7 20.7 218.3 27.4 20.8 -27.1 20.4 -26.4 21.9 -26.6 22.6 -28.1
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:03:48.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.627164
2025-09-28T17:03:48.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:03:48.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:03:48.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:03:48.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:03:48.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:03:48.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:03:44', tmtdew=14.76, humidity=36.92, cloud=0.0, wind=19.48, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:03:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:03:48.572 [DEBUG] [Thread-130358] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:48.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-28T17:03:48.666 [DEBUG] [Thread-130361] [transport.py] [_log()] starting thread (client mode): 0x2e349ff0
2025-09-28T17:03:48.666 [DEBUG] [Thread-130361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:03:48.681 [DEBUG] [Thread-130361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:03:48.681 [INFO] [Thread-130361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:03:48.688 [DEBUG] [Thread-130361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:03:48.688 [DEBUG] [Thread-130361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] client lang: <none>
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] server lang: <none>
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] kex follows: False
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] Compression: none
2025-09-28T17:03:48.689 [DEBUG] [Thread-130361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:03:48.749 [DEBUG] [Thread-130361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:03:48.749 [DEBUG] [Thread-130361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:03:48.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:03:48.750 [DEBUG] [Thread-130361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:03:48.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:03:48.805 [DEBUG] [Thread-130361] [transport.py] [_log()] userauth is OK
2025-09-28T17:03:48.805 [DEBUG] [Thread-130361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:03:48.805 [DEBUG] [Thread-130361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:03:48.805 [DEBUG] [Thread-130361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:03:48.805 [DEBUG] [Thread-130361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:03:48.824 [INFO] [Thread-130361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:03:48.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-28T17:03:48.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:03:49.826 [DEBUG] [Thread-130361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:03:49.826 [DEBUG] [Thread-130361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:03:49.874 [DEBUG] [Thread-130361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:03:49.874 [DEBUG] [Thread-130361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:03:49.883 [DEBUG] [Thread-130361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:03:49.891 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:03:49.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-28T17:03:49.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-28T17:03:49.909 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:03:49.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:03:49.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:03:49.917 [DEBUG] [Thread-130361] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:03:51.959 [DEBUG] [Thread-130363 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:03:59.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:03:59.920 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:03:59.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-28T17:04:00.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 3, 44), 14.76, 36.92, 0.0, 19.48, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:04:00.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:03:44
2025-09-28T17:04:00.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:04:00.762 [DEBUG] [Thread-130364] [transport.py] [_log()] starting thread (client mode): 0x2b9de9b0
2025-09-28T17:04:00.762 [DEBUG] [Thread-130364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:00.777 [DEBUG] [Thread-130364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:04:00.777 [INFO] [Thread-130364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:00.780 [DEBUG] [Thread-130364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:00.781 [DEBUG] [Thread-130364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:00.781 [DEBUG] [Thread-130364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:00.781 [DEBUG] [Thread-130364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:00.781 [DEBUG] [Thread-130364] [transport.py] [_log()] Compression: none
2025-09-28T17:04:00.781 [DEBUG] [Thread-130364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:00.795 [DEBUG] [Thread-130364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:00.795 [DEBUG] [Thread-130364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:00.796 [DEBUG] [Thread-130364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:04:00.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:04:00.796 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:00.797 [DEBUG] [Thread-130364] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:00.797 [DEBUG] [Thread-130364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:00.797 [DEBUG] [Thread-130364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:00.797 [DEBUG] [Thread-130364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:04:00.798 [DEBUG] [Thread-130364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:00.828 [INFO] [Thread-130364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:00.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:01.649 [DEBUG] [Thread-130364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:01.649 [DEBUG] [Thread-130364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:01.649 [DEBUG] [Thread-130364] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:04:01.690 [DEBUG] [Thread-130364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:01.690 [DEBUG] [Thread-130364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:01.692 [DEBUG] [Thread-130364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:01.702 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:01.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:04:01.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:04:01.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:04:01.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:01.706 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:04:01.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:01.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.627164 -999.00  +16.80  20.69     42   +4.00 1 1 1 1 1   887    0 11.42 -53.63 ----- 20.7 20.7 218.3 27.4 20.8 -27.1 20.4 -26.4 21.9 -26.6 22.6 -28.1
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.627164
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:04:01.707 [DEBUG] [Thread-130364] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:04:01.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:03:44', tmtdew=14.76, humidity=36.92, cloud=0.0, wind=19.48, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:03:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:04:01.785 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:04:01.796 [DEBUG] [Thread-130367] [transport.py] [_log()] starting thread (client mode): 0x2b94c3d0
2025-09-28T17:04:01.796 [DEBUG] [Thread-130367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:01.811 [DEBUG] [Thread-130367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:04:01.811 [INFO] [Thread-130367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:04:01.818 [DEBUG] [Thread-130367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:01.818 [DEBUG] [Thread-130367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] Compression: none
2025-09-28T17:04:01.819 [DEBUG] [Thread-130367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:01.876 [DEBUG] [Thread-130367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:01.876 [DEBUG] [Thread-130367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:01.877 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:04:01.877 [DEBUG] [Thread-130367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:04:01.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:01.933 [DEBUG] [Thread-130367] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:01.933 [DEBUG] [Thread-130367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:01.933 [DEBUG] [Thread-130367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:01.933 [DEBUG] [Thread-130367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:04:01.933 [DEBUG] [Thread-130367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:01.953 [INFO] [Thread-130367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:01.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-28T17:04:01.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:02.970 [DEBUG] [Thread-130367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:02.970 [DEBUG] [Thread-130367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:03.018 [DEBUG] [Thread-130367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:03.018 [DEBUG] [Thread-130367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:03.027 [DEBUG] [Thread-130367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:03.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:03.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-28T17:04:03.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-28T17:04:03.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:03.055 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:03.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:03.066 [DEBUG] [Thread-130367] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:07.004 [DEBUG] [Thread-130369 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:13.062 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:04:13.062 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:04:13.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:04:13.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 3, 44), 14.76, 36.92, 0.0, 19.48, 16.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:04:13.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:03:44
2025-09-28T17:04:13.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:04:13.918 [DEBUG] [Thread-130370] [transport.py] [_log()] starting thread (client mode): 0x2e360cd0
2025-09-28T17:04:13.918 [DEBUG] [Thread-130370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:13.938 [DEBUG] [Thread-130370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:04:13.938 [INFO] [Thread-130370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] Compression: none
2025-09-28T17:04:13.940 [DEBUG] [Thread-130370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:13.948 [DEBUG] [Thread-130370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:13.949 [DEBUG] [Thread-130370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:13.949 [DEBUG] [Thread-130370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:04:13.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:04:13.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:13.950 [DEBUG] [Thread-130370] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:13.950 [DEBUG] [Thread-130370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:13.950 [DEBUG] [Thread-130370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:13.951 [DEBUG] [Thread-130370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:04:13.951 [DEBUG] [Thread-130370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:13.967 [INFO] [Thread-130370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:13.967 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:14.544 [DEBUG] [Thread-130370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:14.544 [DEBUG] [Thread-130370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:14.544 [DEBUG] [Thread-130370] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:04:14.585 [DEBUG] [Thread-130370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:14.585 [DEBUG] [Thread-130370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:14.588 [DEBUG] [Thread-130370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:14.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:14.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:04:14.602 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:04:14.604 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:04:14.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:14.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:04:14.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:14.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:14.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:04:14.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.627859 -999.00  +16.90  11.25     42   +4.10 1 1 1 1 1   887    0 11.55 -50.05 ----- 11.2 11.2 200.6 20.6 20.8 -27.5 20.4 -26.2 21.8 -26.2 22.7 -27.6
2025-09-28T17:04:14.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:04:14.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:04:14.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.627859
2025-09-28T17:04:14.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:04:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:04:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:04:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:04:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:04:14.612 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:03:44', tmtdew=14.76, humidity=36.92, cloud=0.0, wind=19.48, temperature=16.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:04:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:04:14.612 [DEBUG] [Thread-130370] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:14.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-28T17:04:14.708 [DEBUG] [Thread-130373] [transport.py] [_log()] starting thread (client mode): 0x2e3491e0
2025-09-28T17:04:14.708 [DEBUG] [Thread-130373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:14.722 [DEBUG] [Thread-130373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:04:14.723 [INFO] [Thread-130373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:04:14.730 [DEBUG] [Thread-130373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:14.730 [DEBUG] [Thread-130373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:04:14.730 [DEBUG] [Thread-130373] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:14.730 [DEBUG] [Thread-130373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:14.731 [DEBUG] [Thread-130373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:14.732 [DEBUG] [Thread-130373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:14.732 [DEBUG] [Thread-130373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:14.732 [DEBUG] [Thread-130373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:14.732 [DEBUG] [Thread-130373] [transport.py] [_log()] Compression: none
2025-09-28T17:04:14.732 [DEBUG] [Thread-130373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:14.789 [DEBUG] [Thread-130373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:14.789 [DEBUG] [Thread-130373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:14.790 [DEBUG] [Thread-130373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:04:14.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:04:14.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:14.845 [DEBUG] [Thread-130373] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:14.846 [DEBUG] [Thread-130373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:14.846 [DEBUG] [Thread-130373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:14.846 [DEBUG] [Thread-130373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:04:14.846 [DEBUG] [Thread-130373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:14.868 [INFO] [Thread-130373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:14.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-28T17:04:14.869 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:15.880 [DEBUG] [Thread-130373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:15.880 [DEBUG] [Thread-130373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:15.928 [DEBUG] [Thread-130373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:15.928 [DEBUG] [Thread-130373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:15.937 [DEBUG] [Thread-130373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:15.945 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:15.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-28T17:04: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-28T17:04:15.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:15.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:15.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:15.970 [DEBUG] [Thread-130373] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:22.026 [DEBUG] [Thread-130375 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:22.770 [DEBUG] [Thread-130376 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:25.611 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:25.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:25.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:04:25.973 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:04:25.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-28T17:04:26.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 4, 16), 14.8, 36.83, 0.0, 19.69, 16.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:04:26.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:04:16
2025-09-28T17:04:26.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:04:26.794 [DEBUG] [Thread-130377] [transport.py] [_log()] starting thread (client mode): 0x2b9bad10
2025-09-28T17:04:26.795 [DEBUG] [Thread-130377] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:26.816 [DEBUG] [Thread-130377] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:04:26.816 [INFO] [Thread-130377] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:26.819 [DEBUG] [Thread-130377] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] Compression: none
2025-09-28T17:04:26.820 [DEBUG] [Thread-130377] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:26.836 [DEBUG] [Thread-130377] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:26.836 [DEBUG] [Thread-130377] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:26.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:04:26.837 [DEBUG] [Thread-130377] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:04:26.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:26.839 [DEBUG] [Thread-130377] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:26.839 [DEBUG] [Thread-130377] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:26.839 [DEBUG] [Thread-130377] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:26.839 [DEBUG] [Thread-130377] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:04:26.839 [DEBUG] [Thread-130377] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:26.862 [INFO] [Thread-130377] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:26.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:27.674 [DEBUG] [Thread-130377] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:27.674 [DEBUG] [Thread-130377] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:27.675 [DEBUG] [Thread-130377] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:04:27.715 [DEBUG] [Thread-130377] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:27.715 [DEBUG] [Thread-130377] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:27.718 [DEBUG] [Thread-130377] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:27.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:27.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:04:27.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:04:27.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:04:27.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:27.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:04:27.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.627859 -999.00  +16.90  11.25     42   +4.10 1 1 1 1 1   887    0 11.55 -50.05 ----- 11.2 11.2 200.6 20.6 20.8 -27.5 20.4 -26.2 21.8 -26.2 22.7 -27.6
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:04:27.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.627859
2025-09-28T17:04:27.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:04:27.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:04:27.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:04:27.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:04:27.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:04:27.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:04:16', tmtdew=14.8, humidity=36.83, cloud=0.0, wind=19.69, temperature=16.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:04:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:04:27.741 [DEBUG] [Thread-130377] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:27.821 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:04:27.831 [DEBUG] [Thread-130380] [transport.py] [_log()] starting thread (client mode): 0x2b9bae00
2025-09-28T17:04:27.832 [DEBUG] [Thread-130380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:27.846 [DEBUG] [Thread-130380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:04:27.846 [INFO] [Thread-130380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] Compression: none
2025-09-28T17:04:27.854 [DEBUG] [Thread-130380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:27.909 [DEBUG] [Thread-130380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:27.910 [DEBUG] [Thread-130380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:27.910 [DEBUG] [Thread-130380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:04:27.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:04:27.910 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:27.966 [DEBUG] [Thread-130380] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:27.966 [DEBUG] [Thread-130380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:27.966 [DEBUG] [Thread-130380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:27.966 [DEBUG] [Thread-130380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:04:27.966 [DEBUG] [Thread-130380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:27.983 [INFO] [Thread-130380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:27.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-28T17:04:27.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:28.989 [DEBUG] [Thread-130380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:28.989 [DEBUG] [Thread-130380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:29.037 [DEBUG] [Thread-130380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:29.037 [DEBUG] [Thread-130380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:29.046 [DEBUG] [Thread-130380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:29.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:29.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-28T17:04:29.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-28T17:04:29.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:29.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:29.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:29.081 [DEBUG] [Thread-130380] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:37.061 [DEBUG] [Thread-130382 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:39.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:04:39.084 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:04: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-28T17:04:39.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 4, 16), 14.8, 36.83, 0.0, 19.69, 16.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:04:39.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:04:16
2025-09-28T17:04:39.767 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:04:39.916 [DEBUG] [Thread-130383] [transport.py] [_log()] starting thread (client mode): 0x2b9def50
2025-09-28T17:04:39.916 [DEBUG] [Thread-130383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:39.937 [DEBUG] [Thread-130383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:04:39.937 [INFO] [Thread-130383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:04:39.940 [DEBUG] [Thread-130383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:39.940 [DEBUG] [Thread-130383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] Compression: none
2025-09-28T17:04:39.941 [DEBUG] [Thread-130383] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:39.959 [DEBUG] [Thread-130383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:39.960 [DEBUG] [Thread-130383] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:39.960 [DEBUG] [Thread-130383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:04:39.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:04:39.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:39.962 [DEBUG] [Thread-130383] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:39.963 [DEBUG] [Thread-130383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:39.963 [DEBUG] [Thread-130383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:39.963 [DEBUG] [Thread-130383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:04:39.963 [DEBUG] [Thread-130383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:39.986 [INFO] [Thread-130383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:39.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:40.841 [DEBUG] [Thread-130383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:40.841 [DEBUG] [Thread-130383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:40.850 [DEBUG] [Thread-130383] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:04:40.882 [DEBUG] [Thread-130383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:40.882 [DEBUG] [Thread-130383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:40.885 [DEBUG] [Thread-130383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:40.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:40.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:04:40.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:04:40.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:04:40.904 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:40.905 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:04:40.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.627859 -999.00  +16.90  11.25     42   +4.10 1 1 1 1 1   887    0 11.55 -50.05 ----- 11.2 11.2 200.6 20.6 20.8 -27.5 20.4 -26.2 21.8 -26.2 22.7 -27.6
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:04:40.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.627859
2025-09-28T17:04:40.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:04:40.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:04:40.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:04:40.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:04:40.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:04:40.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:04:16', tmtdew=14.8, humidity=36.83, cloud=0.0, wind=19.69, temperature=16.91, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:04:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:04:40.908 [DEBUG] [Thread-130383] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:40.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-28T17:04:41.004 [DEBUG] [Thread-130386] [transport.py] [_log()] starting thread (client mode): 0x2e362710
2025-09-28T17:04:41.005 [DEBUG] [Thread-130386] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:41.020 [DEBUG] [Thread-130386] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:04:41.020 [INFO] [Thread-130386] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:04:41.027 [DEBUG] [Thread-130386] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:41.028 [DEBUG] [Thread-130386] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] Compression: none
2025-09-28T17:04:41.029 [DEBUG] [Thread-130386] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:41.088 [DEBUG] [Thread-130386] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:41.088 [DEBUG] [Thread-130386] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:41.089 [DEBUG] [Thread-130386] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:04:41.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:04:41.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:41.147 [DEBUG] [Thread-130386] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:41.147 [DEBUG] [Thread-130386] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:41.147 [DEBUG] [Thread-130386] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:41.147 [DEBUG] [Thread-130386] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:04:41.148 [DEBUG] [Thread-130386] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:41.167 [INFO] [Thread-130386] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:41.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-28T17:04:41.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:42.171 [DEBUG] [Thread-130386] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:42.171 [DEBUG] [Thread-130386] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:42.219 [DEBUG] [Thread-130386] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:42.219 [DEBUG] [Thread-130386] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:42.228 [DEBUG] [Thread-130386] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:42.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:42.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-28T17:04:42.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-28T17:04:42.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:42.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:42.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:42.263 [DEBUG] [Thread-130386] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:52.108 [DEBUG] [Thread-130388 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:04:52.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:04:52.260 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:04:52.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-28T17:04:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 4, 48), 14.77, 37.02, 0.0, 20.45, 16.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:04:52.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:04:48
2025-09-28T17:04:52.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:04:53.093 [DEBUG] [Thread-130389] [transport.py] [_log()] starting thread (client mode): 0x2b94f5e0
2025-09-28T17:04:53.093 [DEBUG] [Thread-130389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:53.112 [DEBUG] [Thread-130389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:04:53.112 [INFO] [Thread-130389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] Compression: none
2025-09-28T17:04:53.116 [DEBUG] [Thread-130389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:53.133 [DEBUG] [Thread-130389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:53.133 [DEBUG] [Thread-130389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:53.134 [DEBUG] [Thread-130389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:04:53.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:04:53.134 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:53.135 [DEBUG] [Thread-130389] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:53.135 [DEBUG] [Thread-130389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:53.135 [DEBUG] [Thread-130389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:53.135 [DEBUG] [Thread-130389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:04:53.135 [DEBUG] [Thread-130389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:53.152 [INFO] [Thread-130389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:53.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:53.800 [DEBUG] [Thread-130389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:53.800 [DEBUG] [Thread-130389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:53.800 [DEBUG] [Thread-130389] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:04:53.841 [DEBUG] [Thread-130389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:53.841 [DEBUG] [Thread-130389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:53.844 [DEBUG] [Thread-130389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:53.857 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:53.857 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:04:53.859 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:04:53.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:04:53.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:53.868 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:04:53.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:53.868 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628206 -999.00  +16.90  18.04     42   +4.00 1 1 1 1 1   887    0 11.48 -45.42 ----- 18.0 18.0 201.7 22.5 20.8 -27.5 20.4 -26.3 21.9 -26.1 22.6 -28.4
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628206
2025-09-28T17:04:53.869 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:04:53.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:04:53.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:04:53.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:04:53.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:04:53.870 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:04:48', tmtdew=14.77, humidity=37.02, cloud=0.0, wind=20.45, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:04:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:04:53.870 [DEBUG] [Thread-130389] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:04:53.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-28T17:04:53.965 [DEBUG] [Thread-130392] [transport.py] [_log()] starting thread (client mode): 0x2b9df3a0
2025-09-28T17:04:53.965 [DEBUG] [Thread-130392] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:04:53.980 [DEBUG] [Thread-130392] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:04:53.980 [INFO] [Thread-130392] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:04:53.987 [DEBUG] [Thread-130392] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:04:53.988 [DEBUG] [Thread-130392] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] client lang: <none>
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] server lang: <none>
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] kex follows: False
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] Compression: none
2025-09-28T17:04:53.989 [DEBUG] [Thread-130392] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:04:54.046 [DEBUG] [Thread-130392] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:04:54.047 [DEBUG] [Thread-130392] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:04:54.047 [DEBUG] [Thread-130392] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:04:54.047 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:04:54.048 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:04:54.103 [DEBUG] [Thread-130392] [transport.py] [_log()] userauth is OK
2025-09-28T17:04:54.103 [DEBUG] [Thread-130392] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:04:54.104 [DEBUG] [Thread-130392] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:04:54.104 [DEBUG] [Thread-130392] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:04:54.104 [DEBUG] [Thread-130392] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:04:54.123 [INFO] [Thread-130392] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:04:54.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-28T17:04:54.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:04:55.080 [DEBUG] [Thread-130392] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:04:55.080 [DEBUG] [Thread-130392] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:04:55.128 [DEBUG] [Thread-130392] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:04:55.128 [DEBUG] [Thread-130392] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:04:55.138 [DEBUG] [Thread-130392] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:04:55.147 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:04:55.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-28T17:04:55.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-28T17:04:55.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:04:55.164 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:04:55.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:04:55.172 [DEBUG] [Thread-130392] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:05.175 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:05:05.175 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:05:05.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-28T17:05:05.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 4, 48), 14.77, 37.02, 0.0, 20.45, 16.81, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:05:05.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:04:48
2025-09-28T17:05:05.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:05:06.011 [DEBUG] [Thread-130394] [transport.py] [_log()] starting thread (client mode): 0x2b9dd660
2025-09-28T17:05:06.011 [DEBUG] [Thread-130394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:06.030 [DEBUG] [Thread-130394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:05:06.030 [INFO] [Thread-130394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:06.034 [DEBUG] [Thread-130394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] Compression: none
2025-09-28T17:05:06.035 [DEBUG] [Thread-130394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:06.054 [DEBUG] [Thread-130394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:06.054 [DEBUG] [Thread-130394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:06.055 [DEBUG] [Thread-130394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:05:06.055 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:05:06.056 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:06.057 [DEBUG] [Thread-130394] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:06.057 [DEBUG] [Thread-130394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:06.057 [DEBUG] [Thread-130394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:06.057 [DEBUG] [Thread-130394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:05:06.057 [DEBUG] [Thread-130394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:06.080 [INFO] [Thread-130394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:06.081 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:07.132 [DEBUG] [Thread-130396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:16.506 [DEBUG] [Thread-130394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:16.507 [DEBUG] [Thread-130394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:16.507 [DEBUG] [Thread-130394] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:05:16.547 [DEBUG] [Thread-130394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:16.548 [DEBUG] [Thread-130394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:16.551 [DEBUG] [Thread-130394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:16.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:16.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:05:16.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:05:16.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:05:16.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:16.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:05:16.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:16.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:16.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:05:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628206 -999.00  +16.90  18.04     42   +4.00 1 1 1 1 1   887    0 11.48 -45.42 ----- 18.0 18.0 201.7 22.5 20.8 -27.5 20.4 -26.3 21.9 -26.1 22.6 -28.4
2025-09-28T17:05:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:05:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:05:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628206
2025-09-28T17:05:16.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:05:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:05:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:05:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:05:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:05:16.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:04:48', tmtdew=14.77, humidity=37.02, cloud=0.0, wind=20.45, temperature=16.81, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:04:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:05:16.690 [DEBUG] [Thread-130394] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:16.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:05:16.788 [DEBUG] [Thread-130398] [transport.py] [_log()] starting thread (client mode): 0x2b94eda0
2025-09-28T17:05:16.788 [DEBUG] [Thread-130398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:16.803 [DEBUG] [Thread-130398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:05:16.803 [INFO] [Thread-130398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:05:16.810 [DEBUG] [Thread-130398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] Compression: none
2025-09-28T17:05:16.811 [DEBUG] [Thread-130398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:16.868 [DEBUG] [Thread-130398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:16.868 [DEBUG] [Thread-130398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:16.868 [DEBUG] [Thread-130398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:05:16.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:05:16.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:16.924 [DEBUG] [Thread-130398] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:16.924 [DEBUG] [Thread-130398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:16.924 [DEBUG] [Thread-130398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:16.924 [DEBUG] [Thread-130398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:05:16.925 [DEBUG] [Thread-130398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:16.944 [INFO] [Thread-130398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:16.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-28T17:05:16.945 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:17.881 [DEBUG] [Thread-130398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:17.881 [DEBUG] [Thread-130398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:17.929 [DEBUG] [Thread-130398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:17.929 [DEBUG] [Thread-130398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:17.938 [DEBUG] [Thread-130398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:17.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:17.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-28T17:05:17.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-28T17:05:17.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:17.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:17.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:17.973 [DEBUG] [Thread-130398] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:22.180 [DEBUG] [Thread-130400 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:22.820 [DEBUG] [Thread-130401 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:25.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:25.755 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:05:27.975 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:05:27.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-28T17:05:28.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 5, 20), 14.71, 37.13, 0.0, 19.89, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:05:28.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:05:20
2025-09-28T17:05:28.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:05:28.798 [DEBUG] [Thread-130402] [transport.py] [_log()] starting thread (client mode): 0x2e3c0cd0
2025-09-28T17:05:28.798 [DEBUG] [Thread-130402] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:28.817 [DEBUG] [Thread-130402] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:05:28.818 [INFO] [Thread-130402] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:28.821 [DEBUG] [Thread-130402] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] Compression: none
2025-09-28T17:05:28.822 [DEBUG] [Thread-130402] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:28.842 [DEBUG] [Thread-130402] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:28.843 [DEBUG] [Thread-130402] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:28.843 [DEBUG] [Thread-130402] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:05:28.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:05:28.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:28.845 [DEBUG] [Thread-130402] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:28.846 [DEBUG] [Thread-130402] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:28.846 [DEBUG] [Thread-130402] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:28.846 [DEBUG] [Thread-130402] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:05:28.846 [DEBUG] [Thread-130402] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:28.863 [INFO] [Thread-130402] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:28.864 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:29.481 [DEBUG] [Thread-130402] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:29.482 [DEBUG] [Thread-130402] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:29.482 [DEBUG] [Thread-130402] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:05:29.522 [DEBUG] [Thread-130402] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:29.523 [DEBUG] [Thread-130402] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:29.525 [DEBUG] [Thread-130402] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:29.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:29.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:05:29.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:05:29.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:05:29.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:29.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:05:29.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:29.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:05:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628553 -999.00  +16.80  11.87     42   +4.00 1 1 1 1 1   887    0 11.77 -38.35 ----- 11.9 11.9 205.1 18.2 20.8 -28.0 20.5 -26.1 21.9 -26.9 22.6 -27.3
2025-09-28T17:05:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:05:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:05:29.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628553
2025-09-28T17:05:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:05:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:05:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:05:29.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:05:29.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:05:29.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:05:20', tmtdew=14.71, humidity=37.13, cloud=0.0, wind=19.89, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:05:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:05:29.553 [DEBUG] [Thread-130402] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:29.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-28T17:05:29.647 [DEBUG] [Thread-130405] [transport.py] [_log()] starting thread (client mode): 0x2b9bb670
2025-09-28T17:05:29.647 [DEBUG] [Thread-130405] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:29.662 [DEBUG] [Thread-130405] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:05:29.662 [INFO] [Thread-130405] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:05:29.669 [DEBUG] [Thread-130405] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:29.670 [DEBUG] [Thread-130405] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:29.671 [DEBUG] [Thread-130405] [transport.py] [_log()] Compression: none
2025-09-28T17:05:29.672 [DEBUG] [Thread-130405] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:29.729 [DEBUG] [Thread-130405] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:29.730 [DEBUG] [Thread-130405] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:29.730 [DEBUG] [Thread-130405] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:05:29.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:05:29.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:29.785 [DEBUG] [Thread-130405] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:29.785 [DEBUG] [Thread-130405] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:29.786 [DEBUG] [Thread-130405] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:29.786 [DEBUG] [Thread-130405] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:05:29.786 [DEBUG] [Thread-130405] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:29.806 [INFO] [Thread-130405] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:29.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-28T17:05:29.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:30.752 [DEBUG] [Thread-130405] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:30.752 [DEBUG] [Thread-130405] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:30.803 [DEBUG] [Thread-130405] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:30.803 [DEBUG] [Thread-130405] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:30.815 [DEBUG] [Thread-130405] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:30.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:30.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-28T17:05:30.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') -> 00000000
2025-09-28T17:05:30.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:30.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:30.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:30.847 [DEBUG] [Thread-130405] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:37.207 [DEBUG] [Thread-130407 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:40.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:05:40.850 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:05:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:05:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 5, 20), 14.71, 37.13, 0.0, 19.89, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:05:41.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:05:20
2025-09-28T17:05:41.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:05:41.690 [DEBUG] [Thread-130408] [transport.py] [_log()] starting thread (client mode): 0x2b94fd00
2025-09-28T17:05:41.690 [DEBUG] [Thread-130408] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:41.708 [DEBUG] [Thread-130408] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:05:41.708 [INFO] [Thread-130408] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:41.711 [DEBUG] [Thread-130408] [transport.py] [_log()] Compression: none
2025-09-28T17:05:41.712 [DEBUG] [Thread-130408] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:41.729 [DEBUG] [Thread-130408] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:41.729 [DEBUG] [Thread-130408] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:41.730 [DEBUG] [Thread-130408] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:05:41.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:05:41.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:41.732 [DEBUG] [Thread-130408] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:41.732 [DEBUG] [Thread-130408] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:41.732 [DEBUG] [Thread-130408] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:41.732 [DEBUG] [Thread-130408] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:05:41.733 [DEBUG] [Thread-130408] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:41.766 [INFO] [Thread-130408] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:41.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:42.526 [DEBUG] [Thread-130408] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:42.526 [DEBUG] [Thread-130408] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:42.527 [DEBUG] [Thread-130408] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:05:42.567 [DEBUG] [Thread-130408] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:42.568 [DEBUG] [Thread-130408] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:42.570 [DEBUG] [Thread-130408] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:42.581 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:42.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:05:42.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:05:42.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:05:42.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:42.591 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:05:42.591 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:42.591 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:42.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:05:42.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628553 -999.00  +16.80  11.87     42   +4.00 1 1 1 1 1   887    0 11.77 -38.35 ----- 11.9 11.9 205.1 18.2 20.8 -28.0 20.5 -26.1 21.9 -26.9 22.6 -27.3
2025-09-28T17:05:42.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:05:42.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:05:42.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628553
2025-09-28T17:05:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:05:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:05:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:05:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:05:42.593 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:05:42.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:05:20', tmtdew=14.71, humidity=37.13, cloud=0.0, wind=19.89, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:05:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:05:42.594 [DEBUG] [Thread-130408] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:42.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-28T17:05:42.690 [DEBUG] [Thread-130411] [transport.py] [_log()] starting thread (client mode): 0x2b94ca00
2025-09-28T17:05:42.691 [DEBUG] [Thread-130411] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:42.706 [DEBUG] [Thread-130411] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:05:42.706 [INFO] [Thread-130411] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:05:42.713 [DEBUG] [Thread-130411] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:42.713 [DEBUG] [Thread-130411] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] Compression: none
2025-09-28T17:05:42.714 [DEBUG] [Thread-130411] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:42.773 [DEBUG] [Thread-130411] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:42.773 [DEBUG] [Thread-130411] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:42.774 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:05:42.774 [DEBUG] [Thread-130411] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:05:42.775 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:42.829 [DEBUG] [Thread-130411] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:42.829 [DEBUG] [Thread-130411] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:42.829 [DEBUG] [Thread-130411] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:42.829 [DEBUG] [Thread-130411] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:05:42.829 [DEBUG] [Thread-130411] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:42.848 [INFO] [Thread-130411] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:42.849 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:05:42.849 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:43.789 [DEBUG] [Thread-130411] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:43.789 [DEBUG] [Thread-130411] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:43.837 [DEBUG] [Thread-130411] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:43.837 [DEBUG] [Thread-130411] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:43.846 [DEBUG] [Thread-130411] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:43.854 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:43.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-28T17:05:43.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-28T17:05:43.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:43.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:43.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:43.880 [DEBUG] [Thread-130411] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:52.244 [DEBUG] [Thread-130413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:05:53.877 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:05:53.877 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:05:53.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-28T17:05:54.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 5, 20), 14.71, 37.13, 0.0, 19.89, 16.72, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:05:54.466 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:05:20
2025-09-28T17:05:54.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:05:54.722 [DEBUG] [Thread-130414] [transport.py] [_log()] starting thread (client mode): 0x2e3c0190
2025-09-28T17:05:54.722 [DEBUG] [Thread-130414] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:54.742 [DEBUG] [Thread-130414] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:05:54.742 [INFO] [Thread-130414] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:54.745 [DEBUG] [Thread-130414] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] Compression: none
2025-09-28T17:05:54.746 [DEBUG] [Thread-130414] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:54.764 [DEBUG] [Thread-130414] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:54.764 [DEBUG] [Thread-130414] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:54.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:05:54.765 [DEBUG] [Thread-130414] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:05:54.766 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:54.767 [DEBUG] [Thread-130414] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:54.767 [DEBUG] [Thread-130414] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:54.768 [DEBUG] [Thread-130414] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:54.768 [DEBUG] [Thread-130414] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:05:54.768 [DEBUG] [Thread-130414] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:54.801 [INFO] [Thread-130414] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:54.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:55.391 [DEBUG] [Thread-130414] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:55.391 [DEBUG] [Thread-130414] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:55.391 [DEBUG] [Thread-130414] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:05:55.431 [DEBUG] [Thread-130414] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:55.431 [DEBUG] [Thread-130414] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:55.436 [DEBUG] [Thread-130414] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:55.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:55.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:05:55.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:05:55.449 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:05:55.455 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:55.457 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:05:55.457 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:55.457 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:55.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:05:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628900 -999.00  +16.80   4.65     42   +4.00 1 1 1 1 1   887    0 11.84 -38.10 ----- 4.7 4.7 232.9 15.2 20.8 -27.3 20.5 -26.2 21.9 -25.8 22.6 -27.8
2025-09-28T17:05:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:05:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:05:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628900
2025-09-28T17:05:55.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:05:55.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:05:55.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:05:55.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:05:55.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:05:55.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:05:20', tmtdew=14.71, humidity=37.13, cloud=0.0, wind=19.89, temperature=16.72, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:05:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:05:55.459 [DEBUG] [Thread-130414] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:05:55.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-28T17:05:55.562 [DEBUG] [Thread-130417] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d80
2025-09-28T17:05:55.562 [DEBUG] [Thread-130417] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:05:55.577 [DEBUG] [Thread-130417] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:05:55.577 [INFO] [Thread-130417] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:55.585 [DEBUG] [Thread-130417] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] client lang: <none>
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] server lang: <none>
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] kex follows: False
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] Compression: none
2025-09-28T17:05:55.586 [DEBUG] [Thread-130417] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:05:55.641 [DEBUG] [Thread-130417] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:05:55.642 [DEBUG] [Thread-130417] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:05:55.643 [DEBUG] [Thread-130417] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:05:55.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:05:55.644 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:05:55.698 [DEBUG] [Thread-130417] [transport.py] [_log()] userauth is OK
2025-09-28T17:05:55.698 [DEBUG] [Thread-130417] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:05:55.698 [DEBUG] [Thread-130417] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:05:55.698 [DEBUG] [Thread-130417] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:05:55.699 [DEBUG] [Thread-130417] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:05:55.718 [INFO] [Thread-130417] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:05:55.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-28T17:05:55.719 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:05:56.669 [DEBUG] [Thread-130417] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:05:56.675 [DEBUG] [Thread-130417] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:05:56.717 [DEBUG] [Thread-130417] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:05:56.717 [DEBUG] [Thread-130417] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:05:56.727 [DEBUG] [Thread-130417] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:05:56.736 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:05:56.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-28T17:05:56.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-28T17:05:56.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:05:56.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:05:56.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:05:56.764 [DEBUG] [Thread-130417] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:06.762 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:06:06.762 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:06:06.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-28T17:06:07.272 [DEBUG] [Thread-130419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:07.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 5, 52), 14.45, 37.63, 0.0, 17.42, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:06:07.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:05:52
2025-09-28T17:06:07.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:06:07.585 [DEBUG] [Thread-130420] [transport.py] [_log()] starting thread (client mode): 0x2b94d6f0
2025-09-28T17:06:07.586 [DEBUG] [Thread-130420] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:07.601 [DEBUG] [Thread-130420] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:06:07.601 [INFO] [Thread-130420] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:07.604 [DEBUG] [Thread-130420] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] Compression: none
2025-09-28T17:06:07.605 [DEBUG] [Thread-130420] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:07.620 [DEBUG] [Thread-130420] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:07.621 [DEBUG] [Thread-130420] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:07.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:06:07.622 [DEBUG] [Thread-130420] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:06:07.623 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:07.624 [DEBUG] [Thread-130420] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:07.624 [DEBUG] [Thread-130420] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:07.624 [DEBUG] [Thread-130420] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:07.624 [DEBUG] [Thread-130420] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:06:07.624 [DEBUG] [Thread-130420] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:07.642 [INFO] [Thread-130420] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:07.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:08.425 [DEBUG] [Thread-130420] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:08.426 [DEBUG] [Thread-130420] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:08.426 [DEBUG] [Thread-130420] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:06:08.466 [DEBUG] [Thread-130420] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:08.466 [DEBUG] [Thread-130420] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:08.469 [DEBUG] [Thread-130420] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:08.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:08.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:06:08.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:06:08.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:06:08.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:08.489 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:06:08.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:08.490 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:08.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:06:08.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628900 -999.00  +16.80   4.65     42   +4.00 1 1 1 1 1   887    0 11.84 -38.10 ----- 4.7 4.7 232.9 15.2 20.8 -27.3 20.5 -26.2 21.9 -25.8 22.6 -27.8
2025-09-28T17:06:08.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:06:08.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:06:08.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628900
2025-09-28T17:06:08.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:06:08.491 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:06:08.492 [DEBUG] [Thread-130420] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:08.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:06:08.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:06:08.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:06:08.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:05:52', tmtdew=14.45, humidity=37.63, cloud=0.0, wind=17.42, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:05:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:06:08.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-28T17:06:08.587 [DEBUG] [Thread-130423] [transport.py] [_log()] starting thread (client mode): 0x2b94ca00
2025-09-28T17:06:08.587 [DEBUG] [Thread-130423] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:08.602 [DEBUG] [Thread-130423] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:06:08.602 [INFO] [Thread-130423] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:08.609 [DEBUG] [Thread-130423] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:08.610 [DEBUG] [Thread-130423] [transport.py] [_log()] Compression: none
2025-09-28T17:06:08.610 [DEBUG] [Thread-130423] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:08.664 [DEBUG] [Thread-130423] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:08.664 [DEBUG] [Thread-130423] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:08.664 [DEBUG] [Thread-130423] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:06:08.664 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:06:08.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:08.722 [DEBUG] [Thread-130423] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:08.722 [DEBUG] [Thread-130423] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:08.722 [DEBUG] [Thread-130423] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:08.722 [DEBUG] [Thread-130423] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:06:08.722 [DEBUG] [Thread-130423] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:08.741 [INFO] [Thread-130423] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:08.741 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:06:08.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:09.699 [DEBUG] [Thread-130423] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:09.700 [DEBUG] [Thread-130423] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:09.747 [DEBUG] [Thread-130423] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:09.747 [DEBUG] [Thread-130423] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:09.756 [DEBUG] [Thread-130423] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:09.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:09.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-28T17:06:09.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-28T17:06:09.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:09.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:09.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:09.791 [DEBUG] [Thread-130423] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:06:19.793 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:06:19.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-28T17:06:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 5, 52), 14.45, 37.63, 0.0, 17.42, 16.44, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:06:20.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:05:52
2025-09-28T17:06:20.483 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:06:20.632 [DEBUG] [Thread-130425] [transport.py] [_log()] starting thread (client mode): 0x2b91ec80
2025-09-28T17:06:20.632 [DEBUG] [Thread-130425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:20.652 [DEBUG] [Thread-130425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:06:20.652 [INFO] [Thread-130425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:06:20.655 [DEBUG] [Thread-130425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:20.655 [DEBUG] [Thread-130425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:06:20.655 [DEBUG] [Thread-130425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:20.655 [DEBUG] [Thread-130425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:20.655 [DEBUG] [Thread-130425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] Compression: none
2025-09-28T17:06:20.656 [DEBUG] [Thread-130425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:20.672 [DEBUG] [Thread-130425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:20.673 [DEBUG] [Thread-130425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:20.673 [DEBUG] [Thread-130425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:06:20.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:06:20.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:20.675 [DEBUG] [Thread-130425] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:20.675 [DEBUG] [Thread-130425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:20.675 [DEBUG] [Thread-130425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:20.675 [DEBUG] [Thread-130425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:06:20.676 [DEBUG] [Thread-130425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:20.693 [INFO] [Thread-130425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:20.694 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:21.454 [DEBUG] [Thread-130425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:21.454 [DEBUG] [Thread-130425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:21.454 [DEBUG] [Thread-130425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:06:21.494 [DEBUG] [Thread-130425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:21.494 [DEBUG] [Thread-130425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:21.497 [DEBUG] [Thread-130425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:21.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:21.508 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:06:21.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:06:21.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:06:21.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:21.517 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:06:21.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:21.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.628900 -999.00  +16.80   4.65     42   +4.00 1 1 1 1 1   887    0 11.84 -38.10 ----- 4.7 4.7 232.9 15.2 20.8 -27.3 20.5 -26.2 21.9 -25.8 22.6 -27.8
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.628900
2025-09-28T17:06:21.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:06:21.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:06:21.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:06:21.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:06:21.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:06:21.519 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:05:52', tmtdew=14.45, humidity=37.63, cloud=0.0, wind=17.42, temperature=16.44, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:05:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:06:21.519 [DEBUG] [Thread-130425] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:21.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-28T17:06:21.626 [DEBUG] [Thread-130428] [transport.py] [_log()] starting thread (client mode): 0x2b9dd240
2025-09-28T17:06:21.626 [DEBUG] [Thread-130428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:21.640 [DEBUG] [Thread-130428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:06:21.640 [INFO] [Thread-130428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:21.648 [DEBUG] [Thread-130428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:21.649 [DEBUG] [Thread-130428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:21.650 [DEBUG] [Thread-130428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:21.650 [DEBUG] [Thread-130428] [transport.py] [_log()] Compression: none
2025-09-28T17:06:21.650 [DEBUG] [Thread-130428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:21.706 [DEBUG] [Thread-130428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:21.706 [DEBUG] [Thread-130428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:21.707 [DEBUG] [Thread-130428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:06:21.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:06:21.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:21.762 [DEBUG] [Thread-130428] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:21.762 [DEBUG] [Thread-130428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:21.762 [DEBUG] [Thread-130428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:21.763 [DEBUG] [Thread-130428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:06:21.763 [DEBUG] [Thread-130428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:21.781 [INFO] [Thread-130428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:21.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-28T17:06:21.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:22.308 [DEBUG] [Thread-130430 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:22.723 [DEBUG] [Thread-130428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:22.724 [DEBUG] [Thread-130428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:22.771 [DEBUG] [Thread-130428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:22.771 [DEBUG] [Thread-130428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:22.780 [DEBUG] [Thread-130428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:22.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:22.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T17:06:22.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') -> 00000000
2025-09-28T17:06:22.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:22.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:22.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:22.814 [DEBUG] [Thread-130428] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:22.872 [DEBUG] [Thread-130431 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:25.896 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:25.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:32.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:06:32.810 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:06:32.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:06:33.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 6, 24), 14.42, 37.7, 0.0, 14.52, 16.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:06:33.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:06:24
2025-09-28T17:06:33.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:06:33.644 [DEBUG] [Thread-130432] [transport.py] [_log()] starting thread (client mode): 0x2e361360
2025-09-28T17:06:33.645 [DEBUG] [Thread-130432] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:33.667 [DEBUG] [Thread-130432] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:06:33.667 [INFO] [Thread-130432] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:06:33.670 [DEBUG] [Thread-130432] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:33.670 [DEBUG] [Thread-130432] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:06:33.670 [DEBUG] [Thread-130432] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] Compression: none
2025-09-28T17:06:33.671 [DEBUG] [Thread-130432] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:33.687 [DEBUG] [Thread-130432] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:33.688 [DEBUG] [Thread-130432] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:33.688 [DEBUG] [Thread-130432] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:06:33.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:06:33.689 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:33.690 [DEBUG] [Thread-130432] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:33.690 [DEBUG] [Thread-130432] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:33.691 [DEBUG] [Thread-130432] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:33.691 [DEBUG] [Thread-130432] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:06:33.691 [DEBUG] [Thread-130432] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:33.714 [INFO] [Thread-130432] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:33.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:34.345 [DEBUG] [Thread-130432] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:34.346 [DEBUG] [Thread-130432] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:34.346 [DEBUG] [Thread-130432] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:06:34.386 [DEBUG] [Thread-130432] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:34.386 [DEBUG] [Thread-130432] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:34.390 [DEBUG] [Thread-130432] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:34.402 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:34.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:06:34.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:06:34.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:06:34.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:34.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:06:34.414 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:34.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:34.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:06:34.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629248 -999.00  +17.00   6.29     42   +4.10 1 1 1 1 1   887    0 11.88 -35.03 ----- 6.3 6.3 209.2 9.4 20.8 -27.7 20.6 -26.0 22.0 -25.6 22.6 -27.9
2025-09-28T17:06:34.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:06:34.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:06:34.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629248
2025-09-28T17:06:34.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:06:34.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:06:34.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:06:34.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:06:34.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:06:34.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:06:24', tmtdew=14.42, humidity=37.7, cloud=0.0, wind=14.52, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:06:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:06:34.416 [DEBUG] [Thread-130432] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:34.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-28T17:06:34.513 [DEBUG] [Thread-130435] [transport.py] [_log()] starting thread (client mode): 0x2b91e9e0
2025-09-28T17:06:34.513 [DEBUG] [Thread-130435] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:34.528 [DEBUG] [Thread-130435] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:06:34.528 [INFO] [Thread-130435] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:06:34.535 [DEBUG] [Thread-130435] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] Compression: none
2025-09-28T17:06:34.536 [DEBUG] [Thread-130435] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:34.595 [DEBUG] [Thread-130435] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:34.595 [DEBUG] [Thread-130435] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:34.596 [DEBUG] [Thread-130435] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:06:34.596 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:06:34.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:34.656 [DEBUG] [Thread-130435] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:34.656 [DEBUG] [Thread-130435] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:34.656 [DEBUG] [Thread-130435] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:34.656 [DEBUG] [Thread-130435] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:06:34.656 [DEBUG] [Thread-130435] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:34.674 [INFO] [Thread-130435] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:34.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-28T17:06:34.675 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:35.665 [DEBUG] [Thread-130435] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:35.665 [DEBUG] [Thread-130435] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:35.713 [DEBUG] [Thread-130435] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:35.714 [DEBUG] [Thread-130435] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:35.723 [DEBUG] [Thread-130435] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:35.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:35.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-28T17:06:35.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-28T17:06:35.749 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:35.749 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:35.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:35.758 [DEBUG] [Thread-130435] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:37.354 [DEBUG] [Thread-130437 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:45.752 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:06:45.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:06:45.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-28T17:06:46.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 6, 24), 14.42, 37.7, 0.0, 14.52, 16.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:06:46.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:06:24
2025-09-28T17:06:46.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:06:46.589 [DEBUG] [Thread-130438] [transport.py] [_log()] starting thread (client mode): 0x2e349e40
2025-09-28T17:06:46.589 [DEBUG] [Thread-130438] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:46.610 [DEBUG] [Thread-130438] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:06:46.611 [INFO] [Thread-130438] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:06:46.612 [DEBUG] [Thread-130438] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:46.612 [DEBUG] [Thread-130438] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:06:46.612 [DEBUG] [Thread-130438] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:46.612 [DEBUG] [Thread-130438] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] Compression: none
2025-09-28T17:06:46.613 [DEBUG] [Thread-130438] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:46.625 [DEBUG] [Thread-130438] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:46.626 [DEBUG] [Thread-130438] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:46.626 [DEBUG] [Thread-130438] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:06:46.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:06:46.627 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:46.628 [DEBUG] [Thread-130438] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:46.628 [DEBUG] [Thread-130438] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:46.629 [DEBUG] [Thread-130438] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:46.629 [DEBUG] [Thread-130438] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:06:46.629 [DEBUG] [Thread-130438] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:46.652 [INFO] [Thread-130438] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:46.653 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:47.460 [DEBUG] [Thread-130438] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:47.461 [DEBUG] [Thread-130438] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:47.461 [DEBUG] [Thread-130438] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:06:47.501 [DEBUG] [Thread-130438] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:47.501 [DEBUG] [Thread-130438] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:47.504 [DEBUG] [Thread-130438] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:47.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:47.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:06:47.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:06:47.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:06:47.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:47.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:06:47.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629248 -999.00  +17.00   6.29     42   +4.10 1 1 1 1 1   887    0 11.88 -35.03 ----- 6.3 6.3 209.2 9.4 20.8 -27.7 20.6 -26.0 22.0 -25.6 22.6 -27.9
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:06:47.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629248
2025-09-28T17:06:47.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:06:47.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:06:47.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:06:47.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:06:47.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:06:47.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:06:24', tmtdew=14.42, humidity=37.7, cloud=0.0, wind=14.52, temperature=16.43, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:06:07.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:06:47.529 [DEBUG] [Thread-130438] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:47.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-28T17:06:47.624 [DEBUG] [Thread-130441] [transport.py] [_log()] starting thread (client mode): 0x2b94df00
2025-09-28T17:06:47.624 [DEBUG] [Thread-130441] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:47.640 [DEBUG] [Thread-130441] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:06:47.640 [INFO] [Thread-130441] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:06:47.651 [DEBUG] [Thread-130441] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:47.651 [DEBUG] [Thread-130441] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:06:47.651 [DEBUG] [Thread-130441] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:47.651 [DEBUG] [Thread-130441] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] Compression: none
2025-09-28T17:06:47.652 [DEBUG] [Thread-130441] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:47.707 [DEBUG] [Thread-130441] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:47.707 [DEBUG] [Thread-130441] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:47.708 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:06:47.708 [DEBUG] [Thread-130441] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:06:47.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:47.763 [DEBUG] [Thread-130441] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:47.764 [DEBUG] [Thread-130441] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:47.764 [DEBUG] [Thread-130441] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:47.764 [DEBUG] [Thread-130441] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:06:47.764 [DEBUG] [Thread-130441] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:47.782 [INFO] [Thread-130441] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:47.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-28T17:06:47.783 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:06:48.743 [DEBUG] [Thread-130441] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:06:48.743 [DEBUG] [Thread-130441] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:06:48.790 [DEBUG] [Thread-130441] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:06:48.790 [DEBUG] [Thread-130441] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:06:48.799 [DEBUG] [Thread-130441] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:06:48.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:06:48.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-28T17:06:48.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-28T17:06:48.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:06:48.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:06:48.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:06:48.835 [DEBUG] [Thread-130441] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:06:52.402 [DEBUG] [Thread-130443 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:06:58.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:06:58.837 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:06:58.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-28T17:06:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 6, 56), 14.31, 38.23, 0.0, 14.1, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:06:59.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:06:56
2025-09-28T17:06:59.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:06:59.675 [DEBUG] [Thread-130444] [transport.py] [_log()] starting thread (client mode): 0x2b995090
2025-09-28T17:06:59.675 [DEBUG] [Thread-130444] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:06:59.690 [DEBUG] [Thread-130444] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:06:59.690 [INFO] [Thread-130444] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:06:59.691 [DEBUG] [Thread-130444] [transport.py] [_log()] client lang: <none>
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] server lang: <none>
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] kex follows: False
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] Compression: none
2025-09-28T17:06:59.692 [DEBUG] [Thread-130444] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:06:59.704 [DEBUG] [Thread-130444] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:06:59.704 [DEBUG] [Thread-130444] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:06:59.704 [DEBUG] [Thread-130444] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:06:59.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:06:59.705 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:06:59.705 [DEBUG] [Thread-130444] [transport.py] [_log()] userauth is OK
2025-09-28T17:06:59.706 [DEBUG] [Thread-130444] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:06:59.706 [DEBUG] [Thread-130444] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:06:59.706 [DEBUG] [Thread-130444] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:06:59.706 [DEBUG] [Thread-130444] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:06:59.723 [INFO] [Thread-130444] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:06:59.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:00.317 [DEBUG] [Thread-130444] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:00.317 [DEBUG] [Thread-130444] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:00.317 [DEBUG] [Thread-130444] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:07:00.358 [DEBUG] [Thread-130444] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:00.358 [DEBUG] [Thread-130444] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:00.361 [DEBUG] [Thread-130444] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:00.368 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:00.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:07:00.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:07:00.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:07:00.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:00.380 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:07:00.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:00.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629595 -999.00  +16.90  10.14     42   +4.10 1 1 1 1 1   887    0 11.85 -34.46 ----- 10.1 10.1 218.6 17.9 20.9 -27.3 20.5 -26.2 21.9 -26.9 22.6 -28.3
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629595
2025-09-28T17:07:00.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:07:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:07:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:07:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:07:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:07:00.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:06:56', tmtdew=14.31, humidity=38.23, cloud=0.0, wind=14.1, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:06:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:07:00.383 [DEBUG] [Thread-130444] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:00.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-28T17:07:00.479 [DEBUG] [Thread-130447] [transport.py] [_log()] starting thread (client mode): 0x2b996b30
2025-09-28T17:07:00.479 [DEBUG] [Thread-130447] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:00.494 [DEBUG] [Thread-130447] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:07:00.494 [INFO] [Thread-130447] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:07:00.501 [DEBUG] [Thread-130447] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:00.501 [DEBUG] [Thread-130447] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:07:00.501 [DEBUG] [Thread-130447] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] Compression: none
2025-09-28T17:07:00.502 [DEBUG] [Thread-130447] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:00.559 [DEBUG] [Thread-130447] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:00.560 [DEBUG] [Thread-130447] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:00.560 [DEBUG] [Thread-130447] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:07:00.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:07:00.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:00.617 [DEBUG] [Thread-130447] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:00.617 [DEBUG] [Thread-130447] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:00.617 [DEBUG] [Thread-130447] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:00.617 [DEBUG] [Thread-130447] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:07:00.617 [DEBUG] [Thread-130447] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:00.636 [INFO] [Thread-130447] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:00.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-28T17:07:00.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:01.588 [DEBUG] [Thread-130447] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:01.588 [DEBUG] [Thread-130447] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:01.636 [DEBUG] [Thread-130447] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:01.636 [DEBUG] [Thread-130447] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:01.645 [DEBUG] [Thread-130447] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:01.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:01.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-28T17:07:01.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-28T17:07:01.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:01.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:01.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:01.678 [DEBUG] [Thread-130447] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:07.426 [DEBUG] [Thread-130449 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:11.680 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:07:11.680 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:07:11.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-28T17:07:12.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 6, 56), 14.31, 38.23, 0.0, 14.1, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:07:12.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:06:56
2025-09-28T17:07:12.355 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:07:12.502 [DEBUG] [Thread-130450] [transport.py] [_log()] starting thread (client mode): 0x2b997580
2025-09-28T17:07:12.502 [DEBUG] [Thread-130450] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:12.522 [DEBUG] [Thread-130450] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:07:12.522 [INFO] [Thread-130450] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:12.525 [DEBUG] [Thread-130450] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] Compression: none
2025-09-28T17:07:12.526 [DEBUG] [Thread-130450] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:12.539 [DEBUG] [Thread-130450] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:12.539 [DEBUG] [Thread-130450] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:12.540 [DEBUG] [Thread-130450] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:07:12.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:07:12.541 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:12.542 [DEBUG] [Thread-130450] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:12.542 [DEBUG] [Thread-130450] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:12.542 [DEBUG] [Thread-130450] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:12.542 [DEBUG] [Thread-130450] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:07:12.542 [DEBUG] [Thread-130450] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:12.560 [INFO] [Thread-130450] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:12.561 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:13.368 [DEBUG] [Thread-130450] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:13.368 [DEBUG] [Thread-130450] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:13.368 [DEBUG] [Thread-130450] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:07:13.409 [DEBUG] [Thread-130450] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:13.409 [DEBUG] [Thread-130450] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:13.412 [DEBUG] [Thread-130450] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:13.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:13.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:07:13.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:07:13.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:07:13.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:13.435 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:07:13.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:13.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:07:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629595 -999.00  +16.90  10.14     42   +4.10 1 1 1 1 1   887    0 11.85 -34.46 ----- 10.1 10.1 218.6 17.9 20.9 -27.3 20.5 -26.2 21.9 -26.9 22.6 -28.3
2025-09-28T17:07:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:07:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:07:13.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629595
2025-09-28T17:07:13.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:07:13.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:07:13.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:07:13.437 [DEBUG] [Thread-130450] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:13.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:07:13.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:07:13.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:06:56', tmtdew=14.31, humidity=38.23, cloud=0.0, wind=14.1, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:06:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:07:13.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-28T17:07:13.532 [DEBUG] [Thread-130453] [transport.py] [_log()] starting thread (client mode): 0x2b996890
2025-09-28T17:07:13.532 [DEBUG] [Thread-130453] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:13.547 [DEBUG] [Thread-130453] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:07:13.547 [INFO] [Thread-130453] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:13.555 [DEBUG] [Thread-130453] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:13.556 [DEBUG] [Thread-130453] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:13.556 [DEBUG] [Thread-130453] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:13.556 [DEBUG] [Thread-130453] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:13.556 [DEBUG] [Thread-130453] [transport.py] [_log()] Compression: none
2025-09-28T17:07:13.556 [DEBUG] [Thread-130453] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:13.612 [DEBUG] [Thread-130453] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:13.613 [DEBUG] [Thread-130453] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:13.613 [DEBUG] [Thread-130453] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:07:13.613 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:07:13.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:13.668 [DEBUG] [Thread-130453] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:13.668 [DEBUG] [Thread-130453] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:13.669 [DEBUG] [Thread-130453] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:13.669 [DEBUG] [Thread-130453] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:07:13.669 [DEBUG] [Thread-130453] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:13.688 [INFO] [Thread-130453] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:13.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-28T17:07:13.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:14.670 [DEBUG] [Thread-130453] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:14.671 [DEBUG] [Thread-130453] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:14.718 [DEBUG] [Thread-130453] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:14.718 [DEBUG] [Thread-130453] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:14.726 [DEBUG] [Thread-130453] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:14.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:14.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')
2025-09-28T17:07:14.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-28T17:07:14.750 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:14.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:14.750 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:14.758 [DEBUG] [Thread-130453] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:22.472 [DEBUG] [Thread-130455 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:22.924 [DEBUG] [Thread-130456 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:24.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:07:24.761 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:07: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-28T17:07:25.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 6, 56), 14.31, 38.23, 0.0, 14.1, 16.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:07:25.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:06:56
2025-09-28T17:07:25.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:07:25.590 [DEBUG] [Thread-130457] [transport.py] [_log()] starting thread (client mode): 0x2b996ec0
2025-09-28T17:07:25.590 [DEBUG] [Thread-130457] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:25.610 [DEBUG] [Thread-130457] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:07:25.610 [INFO] [Thread-130457] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:07:25.613 [DEBUG] [Thread-130457] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:25.613 [DEBUG] [Thread-130457] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:25.614 [DEBUG] [Thread-130457] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:25.615 [DEBUG] [Thread-130457] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:25.615 [DEBUG] [Thread-130457] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:25.615 [DEBUG] [Thread-130457] [transport.py] [_log()] Compression: none
2025-09-28T17:07:25.615 [DEBUG] [Thread-130457] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:25.632 [DEBUG] [Thread-130457] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:25.633 [DEBUG] [Thread-130457] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:25.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:07:25.634 [DEBUG] [Thread-130457] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:07:25.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:25.636 [DEBUG] [Thread-130457] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:25.636 [DEBUG] [Thread-130457] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:25.636 [DEBUG] [Thread-130457] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:25.636 [DEBUG] [Thread-130457] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:07:25.637 [DEBUG] [Thread-130457] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:25.660 [INFO] [Thread-130457] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:25.662 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:26.037 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:26.039 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:26.443 [DEBUG] [Thread-130457] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:26.444 [DEBUG] [Thread-130457] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:26.444 [DEBUG] [Thread-130457] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:07:26.484 [DEBUG] [Thread-130457] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:26.484 [DEBUG] [Thread-130457] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:26.487 [DEBUG] [Thread-130457] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:26.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:26.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:07:26.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:07:26.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:07:26.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:26.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:07:26.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:26.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:26.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:07:26.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629595 -999.00  +16.90  10.14     42   +4.10 1 1 1 1 1   887    0 11.85 -34.46 ----- 10.1 10.1 218.6 17.9 20.9 -27.3 20.5 -26.2 21.9 -26.9 22.6 -28.3
2025-09-28T17:07:26.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:07:26.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:07:26.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629595
2025-09-28T17:07:26.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:07:26.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:07:26.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:07:26.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:07:26.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:07:26.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:06:56', tmtdew=14.31, humidity=38.23, cloud=0.0, wind=14.1, temperature=16.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:06:37.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:07:26.510 [DEBUG] [Thread-130457] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:26.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:07:26.603 [DEBUG] [Thread-130460] [transport.py] [_log()] starting thread (client mode): 0x2b91e9e0
2025-09-28T17:07:26.603 [DEBUG] [Thread-130460] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:26.617 [DEBUG] [Thread-130460] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:07:26.617 [INFO] [Thread-130460] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:07:26.625 [DEBUG] [Thread-130460] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:26.625 [DEBUG] [Thread-130460] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:07:26.625 [DEBUG] [Thread-130460] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:26.625 [DEBUG] [Thread-130460] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:26.626 [DEBUG] [Thread-130460] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:26.627 [DEBUG] [Thread-130460] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:26.627 [DEBUG] [Thread-130460] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:26.627 [DEBUG] [Thread-130460] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:26.627 [DEBUG] [Thread-130460] [transport.py] [_log()] Compression: none
2025-09-28T17:07:26.627 [DEBUG] [Thread-130460] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:26.685 [DEBUG] [Thread-130460] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:26.686 [DEBUG] [Thread-130460] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:26.686 [DEBUG] [Thread-130460] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:07:26.686 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:07:26.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:26.740 [DEBUG] [Thread-130460] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:26.741 [DEBUG] [Thread-130460] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:26.741 [DEBUG] [Thread-130460] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:26.741 [DEBUG] [Thread-130460] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:07:26.741 [DEBUG] [Thread-130460] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:26.760 [INFO] [Thread-130460] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:26.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-28T17:07:26.761 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:27.711 [DEBUG] [Thread-130460] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:27.712 [DEBUG] [Thread-130460] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:27.759 [DEBUG] [Thread-130460] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:27.759 [DEBUG] [Thread-130460] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:27.770 [DEBUG] [Thread-130460] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:27.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:27.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-28T17:07:27.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-28T17:07:27.796 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:27.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:27.797 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:27.805 [DEBUG] [Thread-130460] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:37.503 [DEBUG] [Thread-130462 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:37.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:07:37.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:07:37.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-28T17:07:38.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 7, 28), 14.39, 38.06, 0.0, 13.94, 16.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:07:38.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:07:28
2025-09-28T17:07:38.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:07:38.661 [DEBUG] [Thread-130463] [transport.py] [_log()] starting thread (client mode): 0x2b91cdc0
2025-09-28T17:07:38.661 [DEBUG] [Thread-130463] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:38.680 [DEBUG] [Thread-130463] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:07:38.680 [INFO] [Thread-130463] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:07:38.684 [DEBUG] [Thread-130463] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:38.684 [DEBUG] [Thread-130463] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:07:38.684 [DEBUG] [Thread-130463] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:38.684 [DEBUG] [Thread-130463] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:38.684 [DEBUG] [Thread-130463] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] Compression: none
2025-09-28T17:07:38.685 [DEBUG] [Thread-130463] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:38.702 [DEBUG] [Thread-130463] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:38.702 [DEBUG] [Thread-130463] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:38.703 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:07:38.703 [DEBUG] [Thread-130463] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:07:38.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:38.705 [DEBUG] [Thread-130463] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:38.705 [DEBUG] [Thread-130463] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:38.705 [DEBUG] [Thread-130463] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:38.705 [DEBUG] [Thread-130463] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:07:38.706 [DEBUG] [Thread-130463] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:38.730 [INFO] [Thread-130463] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:38.730 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:39.383 [DEBUG] [Thread-130463] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:39.383 [DEBUG] [Thread-130463] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:39.383 [DEBUG] [Thread-130463] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:07:39.424 [DEBUG] [Thread-130463] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:39.424 [DEBUG] [Thread-130463] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:39.427 [DEBUG] [Thread-130463] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:39.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:39.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:07:39.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:07:39.445 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:07:39.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:39.452 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:07:39.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:39.453 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:39.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:07:39.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629942 -999.00  +16.90  15.16     42   +4.20 1 1 1 1 1   887    0 11.87 -32.78 ----- 15.2 15.2 225.3 20.0 20.8 -27.2 20.5 -26.0 21.9 -26.3 22.6 -28.3
2025-09-28T17:07:39.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:07:39.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:07:39.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629942
2025-09-28T17:07:39.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:07:39.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:07:39.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:07:39.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:07:39.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:07:39.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:07:28', tmtdew=14.39, humidity=38.06, cloud=0.0, wind=13.94, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:07:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:07:39.456 [DEBUG] [Thread-130463] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:39.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-28T17:07:39.550 [DEBUG] [Thread-130466] [transport.py] [_log()] starting thread (client mode): 0x2b91c880
2025-09-28T17:07:39.550 [DEBUG] [Thread-130466] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:39.565 [DEBUG] [Thread-130466] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:07:39.565 [INFO] [Thread-130466] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:07:39.572 [DEBUG] [Thread-130466] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:39.572 [DEBUG] [Thread-130466] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:39.573 [DEBUG] [Thread-130466] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] Compression: none
2025-09-28T17:07:39.574 [DEBUG] [Thread-130466] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:39.628 [DEBUG] [Thread-130466] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:39.629 [DEBUG] [Thread-130466] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:39.629 [DEBUG] [Thread-130466] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:07:39.629 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:07:39.630 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:39.685 [DEBUG] [Thread-130466] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:39.685 [DEBUG] [Thread-130466] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:39.685 [DEBUG] [Thread-130466] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:39.685 [DEBUG] [Thread-130466] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:07:39.685 [DEBUG] [Thread-130466] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:39.704 [INFO] [Thread-130466] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:39.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-28T17:07:39.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:40.659 [DEBUG] [Thread-130466] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:40.660 [DEBUG] [Thread-130466] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:40.707 [DEBUG] [Thread-130466] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:40.707 [DEBUG] [Thread-130466] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:40.716 [DEBUG] [Thread-130466] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:40.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:40.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-28T17:07:40.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-28T17:07:40.743 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:40.743 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:40.744 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:40.752 [DEBUG] [Thread-130466] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:50.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:07:50.749 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:07:50.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-28T17:07:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 7, 28), 14.39, 38.06, 0.0, 13.94, 16.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:07:51.320 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:07:28
2025-09-28T17:07:51.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:07:51.578 [DEBUG] [Thread-130468] [transport.py] [_log()] starting thread (client mode): 0x2b996b90
2025-09-28T17:07:51.578 [DEBUG] [Thread-130468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:51.598 [DEBUG] [Thread-130468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:07:51.598 [INFO] [Thread-130468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] Compression: none
2025-09-28T17:07:51.601 [DEBUG] [Thread-130468] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:51.620 [DEBUG] [Thread-130468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:51.621 [DEBUG] [Thread-130468] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:51.621 [DEBUG] [Thread-130468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:07:51.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:07:51.622 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:51.623 [DEBUG] [Thread-130468] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:51.623 [DEBUG] [Thread-130468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:51.623 [DEBUG] [Thread-130468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:51.624 [DEBUG] [Thread-130468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:07:51.624 [DEBUG] [Thread-130468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:51.645 [INFO] [Thread-130468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:51.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:52.481 [DEBUG] [Thread-130468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:52.481 [DEBUG] [Thread-130468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:52.481 [DEBUG] [Thread-130468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:07:52.522 [DEBUG] [Thread-130468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:52.522 [DEBUG] [Thread-130468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:52.524 [DEBUG] [Thread-130468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:52.532 [DEBUG] [Thread-130470 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:07:52.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:52.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:07:52.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:07:52.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:07:52.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:52.540 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:07:52.540 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.629942 -999.00  +16.90  15.16     42   +4.20 1 1 1 1 1   887    0 11.87 -32.78 ----- 15.2 15.2 225.3 20.0 20.8 -27.2 20.5 -26.0 21.9 -26.3 22.6 -28.3
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.629942
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:07:52.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:07:28', tmtdew=14.39, humidity=38.06, cloud=0.0, wind=13.94, temperature=16.61, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:07:06.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:07:52.541 [DEBUG] [Thread-130468] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:07:52.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-28T17:07:52.623 [DEBUG] [Thread-130472] [transport.py] [_log()] starting thread (client mode): 0x2b996050
2025-09-28T17:07:52.623 [DEBUG] [Thread-130472] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:07:52.638 [DEBUG] [Thread-130472] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:07:52.639 [INFO] [Thread-130472] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:07:52.646 [DEBUG] [Thread-130472] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:07:52.646 [DEBUG] [Thread-130472] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:07:52.646 [DEBUG] [Thread-130472] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] client lang: <none>
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] server lang: <none>
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] kex follows: False
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] Compression: none
2025-09-28T17:07:52.647 [DEBUG] [Thread-130472] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:07:52.709 [DEBUG] [Thread-130472] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:07:52.709 [DEBUG] [Thread-130472] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:07:52.710 [DEBUG] [Thread-130472] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:07:52.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:07:52.711 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:07:52.765 [DEBUG] [Thread-130472] [transport.py] [_log()] userauth is OK
2025-09-28T17:07:52.765 [DEBUG] [Thread-130472] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:07:52.766 [DEBUG] [Thread-130472] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:07:52.766 [DEBUG] [Thread-130472] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:07:52.766 [DEBUG] [Thread-130472] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:07:52.784 [INFO] [Thread-130472] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:07:52.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-28T17:07:52.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:07:53.746 [DEBUG] [Thread-130472] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:07:53.747 [DEBUG] [Thread-130472] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:07:53.794 [DEBUG] [Thread-130472] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:07:53.794 [DEBUG] [Thread-130472] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:07:53.803 [DEBUG] [Thread-130472] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:07:53.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:07:53.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')
2025-09-28T17:07:53.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-28T17:07:53.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:07:53.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:07:53.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:07:53.838 [DEBUG] [Thread-130472] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:03.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:08:03.836 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:08:03.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-28T17:08:04.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 7, 28), 14.39, 38.06, 0.0, 15.74, 16.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:08:04.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:07:28
2025-09-28T17:08:04.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:08:04.660 [DEBUG] [Thread-130474] [transport.py] [_log()] starting thread (client mode): 0x2b94f7c0
2025-09-28T17:08:04.660 [DEBUG] [Thread-130474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:04.679 [DEBUG] [Thread-130474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:08:04.680 [INFO] [Thread-130474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:08:04.681 [DEBUG] [Thread-130474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:04.681 [DEBUG] [Thread-130474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:08:04.681 [DEBUG] [Thread-130474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:04.681 [DEBUG] [Thread-130474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:04.682 [DEBUG] [Thread-130474] [transport.py] [_log()] Compression: none
2025-09-28T17:08:04.683 [DEBUG] [Thread-130474] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:04.696 [DEBUG] [Thread-130474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:04.696 [DEBUG] [Thread-130474] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:04.697 [DEBUG] [Thread-130474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:08:04.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:08:04.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:04.699 [DEBUG] [Thread-130474] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:04.700 [DEBUG] [Thread-130474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:04.700 [DEBUG] [Thread-130474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:04.700 [DEBUG] [Thread-130474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:08:04.700 [DEBUG] [Thread-130474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:04.720 [INFO] [Thread-130474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:04.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:05.343 [DEBUG] [Thread-130474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:05.343 [DEBUG] [Thread-130474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:05.343 [DEBUG] [Thread-130474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:08:05.384 [DEBUG] [Thread-130474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:05.385 [DEBUG] [Thread-130474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:05.387 [DEBUG] [Thread-130474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:05.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:05.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:08:05.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:08:05.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:08:05.408 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:05.410 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:08:05.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:05.410 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:05.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:08:05.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630289 -999.00  +16.90  10.02     43   +4.30 1 1 1 1 1   887    0 11.62 -33.74 ----- 10.0 10.0 185.9 21.3 20.8 -28.4 20.4 -27.5 21.9 -26.7 22.5 -28.3
2025-09-28T17:08:05.410 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:08:05.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:08:05.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630289
2025-09-28T17:08:05.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:08:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:08:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:08:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:08:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:08:05.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:07:28', tmtdew=14.39, humidity=38.06, cloud=0.0, wind=15.74, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:07:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:08:05.412 [DEBUG] [Thread-130474] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:05.496 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:08:05.508 [DEBUG] [Thread-130477] [transport.py] [_log()] starting thread (client mode): 0x2b91ca60
2025-09-28T17:08:05.508 [DEBUG] [Thread-130477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:05.522 [DEBUG] [Thread-130477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:08:05.522 [INFO] [Thread-130477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:08:05.529 [DEBUG] [Thread-130477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] Compression: none
2025-09-28T17:08:05.530 [DEBUG] [Thread-130477] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:05.590 [DEBUG] [Thread-130477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:05.590 [DEBUG] [Thread-130477] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:05.591 [DEBUG] [Thread-130477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:08:05.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:08:05.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:05.646 [DEBUG] [Thread-130477] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:05.646 [DEBUG] [Thread-130477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:05.646 [DEBUG] [Thread-130477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:05.646 [DEBUG] [Thread-130477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:08:05.646 [DEBUG] [Thread-130477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:05.665 [INFO] [Thread-130477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:05.665 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:08:05.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:06.690 [DEBUG] [Thread-130477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:06.690 [DEBUG] [Thread-130477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:06.738 [DEBUG] [Thread-130477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:06.738 [DEBUG] [Thread-130477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:06.746 [DEBUG] [Thread-130477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:06.754 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:06.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-28T17:08:06.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-28T17:08:06.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:06.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:06.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:06.777 [DEBUG] [Thread-130477] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:07.572 [DEBUG] [Thread-130479 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:16.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:08:16.780 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:08:16.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-28T17:08:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 7, 28), 14.39, 38.06, 0.0, 15.74, 16.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:08:17.347 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:07:28
2025-09-28T17:08:17.457 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:08:17.604 [DEBUG] [Thread-130480] [transport.py] [_log()] starting thread (client mode): 0x2b91cc10
2025-09-28T17:08:17.605 [DEBUG] [Thread-130480] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:17.624 [DEBUG] [Thread-130480] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:08:17.624 [INFO] [Thread-130480] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:17.627 [DEBUG] [Thread-130480] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] Compression: none
2025-09-28T17:08:17.628 [DEBUG] [Thread-130480] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:17.646 [DEBUG] [Thread-130480] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:17.647 [DEBUG] [Thread-130480] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:17.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:08:17.648 [DEBUG] [Thread-130480] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:08:17.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:17.651 [DEBUG] [Thread-130480] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:17.651 [DEBUG] [Thread-130480] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:17.651 [DEBUG] [Thread-130480] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:17.651 [DEBUG] [Thread-130480] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:08:17.651 [DEBUG] [Thread-130480] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:17.668 [INFO] [Thread-130480] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:17.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:18.427 [DEBUG] [Thread-130480] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:18.427 [DEBUG] [Thread-130480] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:18.428 [DEBUG] [Thread-130480] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:08:18.468 [DEBUG] [Thread-130480] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:18.468 [DEBUG] [Thread-130480] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:18.471 [DEBUG] [Thread-130480] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:18.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:18.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:08:18.485 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:08:18.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:08:18.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:18.493 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:08:18.493 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:18.493 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630289 -999.00  +16.90  10.02     43   +4.30 1 1 1 1 1   887    0 11.62 -33.74 ----- 10.0 10.0 185.9 21.3 20.8 -28.4 20.4 -27.5 21.9 -26.7 22.5 -28.3
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630289
2025-09-28T17:08:18.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:08:18.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:08:18.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:08:18.495 [DEBUG] [Thread-130480] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:18.495 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:08:18.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:08:18.496 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:07:28', tmtdew=14.39, humidity=38.06, cloud=0.0, wind=15.74, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:07:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:08:18.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-28T17:08:18.590 [DEBUG] [Thread-130483] [transport.py] [_log()] starting thread (client mode): 0x2b9974f0
2025-09-28T17:08:18.590 [DEBUG] [Thread-130483] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:18.604 [DEBUG] [Thread-130483] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:08:18.604 [INFO] [Thread-130483] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:08:18.611 [DEBUG] [Thread-130483] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] Compression: none
2025-09-28T17:08:18.612 [DEBUG] [Thread-130483] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:18.670 [DEBUG] [Thread-130483] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:18.670 [DEBUG] [Thread-130483] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:18.671 [DEBUG] [Thread-130483] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:08:18.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:08:18.672 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:18.726 [DEBUG] [Thread-130483] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:18.727 [DEBUG] [Thread-130483] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:18.727 [DEBUG] [Thread-130483] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:18.727 [DEBUG] [Thread-130483] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:08:18.727 [DEBUG] [Thread-130483] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:18.746 [INFO] [Thread-130483] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:18.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-28T17:08:18.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:19.694 [DEBUG] [Thread-130483] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:19.695 [DEBUG] [Thread-130483] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:19.743 [DEBUG] [Thread-130483] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:19.743 [DEBUG] [Thread-130483] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:19.752 [DEBUG] [Thread-130483] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:19.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:19.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-28T17:08:19.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-28T17:08:19.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:19.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:19.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:19.787 [DEBUG] [Thread-130483] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:22.613 [DEBUG] [Thread-130485 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:22.957 [DEBUG] [Thread-130486 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:26.179 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:26.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:29.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:08:29.790 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:08:29.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-28T17:08:30.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 7, 28), 14.39, 38.06, 0.0, 15.74, 16.66, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:08:30.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:07:28
2025-09-28T17:08:30.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:08:30.631 [DEBUG] [Thread-130487] [transport.py] [_log()] starting thread (client mode): 0x2b996d40
2025-09-28T17:08:30.631 [DEBUG] [Thread-130487] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:30.650 [DEBUG] [Thread-130487] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:08:30.650 [INFO] [Thread-130487] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:08:30.654 [DEBUG] [Thread-130487] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:30.654 [DEBUG] [Thread-130487] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:08:30.654 [DEBUG] [Thread-130487] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:30.654 [DEBUG] [Thread-130487] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:30.654 [DEBUG] [Thread-130487] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] Compression: none
2025-09-28T17:08:30.655 [DEBUG] [Thread-130487] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:30.673 [DEBUG] [Thread-130487] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:30.674 [DEBUG] [Thread-130487] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:30.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:08:30.674 [DEBUG] [Thread-130487] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:08:30.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:30.676 [DEBUG] [Thread-130487] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:30.677 [DEBUG] [Thread-130487] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:30.677 [DEBUG] [Thread-130487] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:30.677 [DEBUG] [Thread-130487] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:08:30.677 [DEBUG] [Thread-130487] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:30.694 [INFO] [Thread-130487] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:30.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:31.486 [DEBUG] [Thread-130487] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:31.486 [DEBUG] [Thread-130487] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:31.487 [DEBUG] [Thread-130487] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:08:31.527 [DEBUG] [Thread-130487] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:31.527 [DEBUG] [Thread-130487] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:31.530 [DEBUG] [Thread-130487] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:31.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:31.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:08:31.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:08:31.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:08:31.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:31.549 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:08:31.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630289 -999.00  +16.90  10.02     43   +4.30 1 1 1 1 1   887    0 11.62 -33.74 ----- 10.0 10.0 185.9 21.3 20.8 -28.4 20.4 -27.5 21.9 -26.7 22.5 -28.3
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:08:31.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630289
2025-09-28T17:08:31.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:08:31.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:08:31.551 [DEBUG] [Thread-130487] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:31.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:08:31.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:08:31.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:08:31.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:07:28', tmtdew=14.39, humidity=38.06, cloud=0.0, wind=15.74, temperature=16.66, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:07:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:08:31.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-28T17:08:31.650 [DEBUG] [Thread-130490] [transport.py] [_log()] starting thread (client mode): 0x2b91cdc0
2025-09-28T17:08:31.650 [DEBUG] [Thread-130490] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:31.665 [DEBUG] [Thread-130490] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:08:31.665 [INFO] [Thread-130490] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:08:31.672 [DEBUG] [Thread-130490] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:31.673 [DEBUG] [Thread-130490] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:08:31.673 [DEBUG] [Thread-130490] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:31.673 [DEBUG] [Thread-130490] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:31.673 [DEBUG] [Thread-130490] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:31.673 [DEBUG] [Thread-130490] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:31.674 [DEBUG] [Thread-130490] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:31.675 [DEBUG] [Thread-130490] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:31.675 [DEBUG] [Thread-130490] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:31.675 [DEBUG] [Thread-130490] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:31.675 [DEBUG] [Thread-130490] [transport.py] [_log()] Compression: none
2025-09-28T17:08:31.675 [DEBUG] [Thread-130490] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:31.732 [DEBUG] [Thread-130490] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:31.733 [DEBUG] [Thread-130490] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:31.733 [DEBUG] [Thread-130490] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:08:31.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:08:31.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:31.790 [DEBUG] [Thread-130490] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:31.791 [DEBUG] [Thread-130490] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:31.791 [DEBUG] [Thread-130490] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:31.791 [DEBUG] [Thread-130490] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:08:31.791 [DEBUG] [Thread-130490] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:31.813 [INFO] [Thread-130490] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:31.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-28T17:08:31.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:32.770 [DEBUG] [Thread-130490] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:32.771 [DEBUG] [Thread-130490] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:32.819 [DEBUG] [Thread-130490] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:32.819 [DEBUG] [Thread-130490] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:32.828 [DEBUG] [Thread-130490] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:32.835 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:32.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')
2025-09-28T17:08:32.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') -> 00000000
2025-09-28T17:08:32.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:32.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:32.851 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:32.860 [DEBUG] [Thread-130490] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:37.643 [DEBUG] [Thread-130492 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:42.861 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:08:42.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:08:42.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-28T17:08:43.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 8, 32), 14.24, 38.39, 0.0, 19.66, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:08:43.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:08:32
2025-09-28T17:08:43.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:08:43.695 [DEBUG] [Thread-130493] [transport.py] [_log()] starting thread (client mode): 0x2b91e860
2025-09-28T17:08:43.696 [DEBUG] [Thread-130493] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:43.716 [DEBUG] [Thread-130493] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:08:43.716 [INFO] [Thread-130493] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:43.720 [DEBUG] [Thread-130493] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:43.721 [DEBUG] [Thread-130493] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:43.721 [DEBUG] [Thread-130493] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:43.721 [DEBUG] [Thread-130493] [transport.py] [_log()] Compression: none
2025-09-28T17:08:43.721 [DEBUG] [Thread-130493] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:43.736 [DEBUG] [Thread-130493] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:43.736 [DEBUG] [Thread-130493] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:08:43.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:08:43.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:08:43.737 [DEBUG] [Thread-130493] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:43.749 [INFO] [Thread-130493] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:43.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:44.404 [DEBUG] [Thread-130493] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:44.404 [DEBUG] [Thread-130493] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:44.404 [DEBUG] [Thread-130493] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:08:44.445 [DEBUG] [Thread-130493] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:44.445 [DEBUG] [Thread-130493] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:44.448 [DEBUG] [Thread-130493] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:44.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:44.461 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:08:44.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:08:44.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:08:44.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:44.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:08:44.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630636 -999.00  +16.80  16.51     43   +4.30 1 1 1 1 1   887    0 11.75 -36.09 ----- 16.5 16.5 222.6 20.3 20.8 -27.5 20.3 -26.5 21.9 -26.7 22.6 -28.4
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630636
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:08:44.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:08:32', tmtdew=14.24, humidity=38.39, cloud=0.0, wind=19.66, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:08:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:08:44.469 [DEBUG] [Thread-130493] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:44.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-28T17:08:44.553 [DEBUG] [Thread-130496] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-28T17:08:44.553 [DEBUG] [Thread-130496] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:44.568 [DEBUG] [Thread-130496] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:08:44.568 [INFO] [Thread-130496] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:44.575 [DEBUG] [Thread-130496] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:44.576 [DEBUG] [Thread-130496] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:44.576 [DEBUG] [Thread-130496] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:44.576 [DEBUG] [Thread-130496] [transport.py] [_log()] Compression: none
2025-09-28T17:08:44.576 [DEBUG] [Thread-130496] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:44.633 [DEBUG] [Thread-130496] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:44.633 [DEBUG] [Thread-130496] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:44.633 [DEBUG] [Thread-130496] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:08:44.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:08:44.633 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:44.691 [DEBUG] [Thread-130496] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:44.691 [DEBUG] [Thread-130496] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:44.691 [DEBUG] [Thread-130496] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:44.691 [DEBUG] [Thread-130496] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:08:44.691 [DEBUG] [Thread-130496] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:44.705 [INFO] [Thread-130496] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:44.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-28T17:08:44.706 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:45.631 [DEBUG] [Thread-130496] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:45.631 [DEBUG] [Thread-130496] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:45.679 [DEBUG] [Thread-130496] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:45.679 [DEBUG] [Thread-130496] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:45.687 [DEBUG] [Thread-130496] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:45.695 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:45.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-28T17:08:45.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-28T17:08:45.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:45.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:45.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:45.719 [DEBUG] [Thread-130496] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:52.674 [DEBUG] [Thread-130498 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:08:55.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:08:55.721 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:08:55.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-28T17:08:56.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 8, 32), 14.24, 38.39, 0.0, 19.66, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:08:56.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:08:32
2025-09-28T17:08:56.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:08:56.542 [DEBUG] [Thread-130499] [transport.py] [_log()] starting thread (client mode): 0x2b91db70
2025-09-28T17:08:56.542 [DEBUG] [Thread-130499] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:56.562 [DEBUG] [Thread-130499] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:08:56.562 [INFO] [Thread-130499] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:08:56.565 [DEBUG] [Thread-130499] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:56.565 [DEBUG] [Thread-130499] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:08:56.565 [DEBUG] [Thread-130499] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:56.565 [DEBUG] [Thread-130499] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] Compression: none
2025-09-28T17:08:56.566 [DEBUG] [Thread-130499] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:56.576 [DEBUG] [Thread-130499] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:56.577 [DEBUG] [Thread-130499] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:56.578 [DEBUG] [Thread-130499] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:08:56.578 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:08:56.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:56.580 [DEBUG] [Thread-130499] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:56.580 [DEBUG] [Thread-130499] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:56.580 [DEBUG] [Thread-130499] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:56.580 [DEBUG] [Thread-130499] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:08:56.581 [DEBUG] [Thread-130499] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:56.598 [INFO] [Thread-130499] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:56.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:57.232 [DEBUG] [Thread-130499] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:57.232 [DEBUG] [Thread-130499] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:57.232 [DEBUG] [Thread-130499] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:08:57.273 [DEBUG] [Thread-130499] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:57.273 [DEBUG] [Thread-130499] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:57.276 [DEBUG] [Thread-130499] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:57.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:57.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:08:57.290 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:08:57.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:08:57.297 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:57.299 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:08:57.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:57.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630636 -999.00  +16.80  16.51     43   +4.30 1 1 1 1 1   887    0 11.75 -36.09 ----- 16.5 16.5 222.6 20.3 20.8 -27.5 20.3 -26.5 21.9 -26.7 22.6 -28.4
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630636
2025-09-28T17:08:57.300 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:08:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:08:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:08:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:08:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:08:57.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:08:32', tmtdew=14.24, humidity=38.39, cloud=0.0, wind=19.66, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:08:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:08:57.301 [DEBUG] [Thread-130499] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:08:57.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-28T17:08:57.406 [DEBUG] [Thread-130502] [transport.py] [_log()] starting thread (client mode): 0x2b996b00
2025-09-28T17:08:57.406 [DEBUG] [Thread-130502] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:08:57.421 [DEBUG] [Thread-130502] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:08:57.421 [INFO] [Thread-130502] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:57.429 [DEBUG] [Thread-130502] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] client lang: <none>
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] server lang: <none>
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] kex follows: False
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] Compression: none
2025-09-28T17:08:57.430 [DEBUG] [Thread-130502] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:08:57.487 [DEBUG] [Thread-130502] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:08:57.487 [DEBUG] [Thread-130502] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:08:57.488 [DEBUG] [Thread-130502] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:08:57.488 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:08:57.489 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:08:57.544 [DEBUG] [Thread-130502] [transport.py] [_log()] userauth is OK
2025-09-28T17:08:57.544 [DEBUG] [Thread-130502] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:08:57.544 [DEBUG] [Thread-130502] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:08:57.544 [DEBUG] [Thread-130502] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:08:57.545 [DEBUG] [Thread-130502] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:08:57.563 [INFO] [Thread-130502] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:08:57.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-28T17:08:57.564 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:08:58.487 [DEBUG] [Thread-130502] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:08:58.488 [DEBUG] [Thread-130502] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:08:58.535 [DEBUG] [Thread-130502] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:08:58.535 [DEBUG] [Thread-130502] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:08:58.544 [DEBUG] [Thread-130502] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:08:58.552 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:08:58.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-28T17:08:58.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-28T17:08:58.569 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:08:58.569 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:08:58.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:08:58.577 [DEBUG] [Thread-130502] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:07.720 [DEBUG] [Thread-130504 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:08.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:09:08.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:09:08.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-28T17:09:09.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 9, 3), 14.24, 38.39, 0.0, 20.41, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:09:09.145 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:09:03
2025-09-28T17:09:09.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:09:09.403 [DEBUG] [Thread-130505] [transport.py] [_log()] starting thread (client mode): 0x2e3c2650
2025-09-28T17:09:09.403 [DEBUG] [Thread-130505] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:09.423 [DEBUG] [Thread-130505] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:09:09.423 [INFO] [Thread-130505] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:09:09.424 [DEBUG] [Thread-130505] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:09.424 [DEBUG] [Thread-130505] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:09:09.424 [DEBUG] [Thread-130505] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:09.425 [DEBUG] [Thread-130505] [transport.py] [_log()] Compression: none
2025-09-28T17:09:09.426 [DEBUG] [Thread-130505] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:09.439 [DEBUG] [Thread-130505] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:09.440 [DEBUG] [Thread-130505] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:09.441 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:09:09.442 [DEBUG] [Thread-130505] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:09:09.442 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:09.444 [DEBUG] [Thread-130505] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:09.444 [DEBUG] [Thread-130505] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:09.444 [DEBUG] [Thread-130505] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:09.444 [DEBUG] [Thread-130505] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:09:09.445 [DEBUG] [Thread-130505] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:09.460 [INFO] [Thread-130505] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:09.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:10.085 [DEBUG] [Thread-130505] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:10.085 [DEBUG] [Thread-130505] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:10.085 [DEBUG] [Thread-130505] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:09:10.126 [DEBUG] [Thread-130505] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:10.126 [DEBUG] [Thread-130505] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:10.129 [DEBUG] [Thread-130505] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:10.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:10.141 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:09:10.142 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:09:10.144 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:09:10.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:10.150 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:09:10.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.630636 -999.00  +16.80  16.51     43   +4.30 1 1 1 1 1   887    0 11.75 -36.09 ----- 16.5 16.5 222.6 20.3 20.8 -27.5 20.3 -26.5 21.9 -26.7 22.6 -28.4
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:09:10.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.630636
2025-09-28T17:09:10.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:09:10.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:09:10.152 [DEBUG] [Thread-130505] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:10.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:09:10.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:09:10.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:09:10.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:09:03', tmtdew=14.24, humidity=38.39, cloud=0.0, wind=20.41, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:08:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:09:10.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-28T17:09:10.248 [DEBUG] [Thread-130508] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T17:09:10.249 [DEBUG] [Thread-130508] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:10.263 [DEBUG] [Thread-130508] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:09:10.263 [INFO] [Thread-130508] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:09:10.273 [DEBUG] [Thread-130508] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:10.273 [DEBUG] [Thread-130508] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:09:10.273 [DEBUG] [Thread-130508] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] Compression: none
2025-09-28T17:09:10.274 [DEBUG] [Thread-130508] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:10.330 [DEBUG] [Thread-130508] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:10.330 [DEBUG] [Thread-130508] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:10.331 [DEBUG] [Thread-130508] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:09:10.331 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:09:10.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:10.388 [DEBUG] [Thread-130508] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:10.388 [DEBUG] [Thread-130508] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:10.388 [DEBUG] [Thread-130508] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:10.388 [DEBUG] [Thread-130508] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:09:10.388 [DEBUG] [Thread-130508] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:10.408 [INFO] [Thread-130508] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:10.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-28T17:09:10.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:11.421 [DEBUG] [Thread-130508] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:11.421 [DEBUG] [Thread-130508] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:11.469 [DEBUG] [Thread-130508] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:11.469 [DEBUG] [Thread-130508] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:11.478 [DEBUG] [Thread-130508] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:11.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:11.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-28T17:09:11.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-28T17:09:11.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:11.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:11.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:11.513 [DEBUG] [Thread-130508] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:21.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:09:21.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:09:21.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-28T17:09:22.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 9, 3), 14.24, 38.39, 0.0, 20.41, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:09:22.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:09:03
2025-09-28T17:09:22.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:09:22.371 [DEBUG] [Thread-130510] [transport.py] [_log()] starting thread (client mode): 0x2b9975b0
2025-09-28T17:09:22.372 [DEBUG] [Thread-130510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:22.392 [DEBUG] [Thread-130510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:09:22.392 [INFO] [Thread-130510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] Compression: none
2025-09-28T17:09:22.395 [DEBUG] [Thread-130510] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:22.410 [DEBUG] [Thread-130510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:22.411 [DEBUG] [Thread-130510] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:22.411 [DEBUG] [Thread-130510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:09:22.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:09:22.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:22.411 [DEBUG] [Thread-130510] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:22.411 [DEBUG] [Thread-130510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:22.412 [DEBUG] [Thread-130510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:22.412 [DEBUG] [Thread-130510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:09:22.412 [DEBUG] [Thread-130510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:22.421 [INFO] [Thread-130510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:22.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:22.750 [DEBUG] [Thread-130512 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:23.008 [DEBUG] [Thread-130513 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:23.037 [DEBUG] [Thread-130510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:23.037 [DEBUG] [Thread-130510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:23.037 [DEBUG] [Thread-130510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:09:23.079 [DEBUG] [Thread-130510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:23.079 [DEBUG] [Thread-130510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:23.081 [DEBUG] [Thread-130510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:23.092 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:23.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:09:23.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:09:23.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:09:23.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:23.098 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:09:23.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:23.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.631331 -999.00  +16.70  11.28     43   +4.30 1 1 1 1 1   887    0 11.81 -37.95 ----- 11.3 11.3 197.4 16.0 20.7 -27.3 20.3 -26.0 21.9 -26.2 22.5 -27.3
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.631331
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:09:23.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:09:03', tmtdew=14.24, humidity=38.39, cloud=0.0, wind=20.41, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:09:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:09:23.100 [DEBUG] [Thread-130510] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:23.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-28T17:09:23.183 [DEBUG] [Thread-130515] [transport.py] [_log()] starting thread (client mode): 0x2b91f7c0
2025-09-28T17:09:23.183 [DEBUG] [Thread-130515] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:23.197 [DEBUG] [Thread-130515] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:09:23.197 [INFO] [Thread-130515] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:23.205 [DEBUG] [Thread-130515] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:23.206 [DEBUG] [Thread-130515] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:23.206 [DEBUG] [Thread-130515] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:23.206 [DEBUG] [Thread-130515] [transport.py] [_log()] Compression: none
2025-09-28T17:09:23.206 [DEBUG] [Thread-130515] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:23.262 [DEBUG] [Thread-130515] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:23.262 [DEBUG] [Thread-130515] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:23.262 [DEBUG] [Thread-130515] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:09:23.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:09:23.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:23.320 [DEBUG] [Thread-130515] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:23.320 [DEBUG] [Thread-130515] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:23.320 [DEBUG] [Thread-130515] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:23.320 [DEBUG] [Thread-130515] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:09:23.320 [DEBUG] [Thread-130515] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:23.333 [INFO] [Thread-130515] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:23.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-28T17:09:23.334 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:24.295 [DEBUG] [Thread-130515] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:24.295 [DEBUG] [Thread-130515] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:24.343 [DEBUG] [Thread-130515] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:24.343 [DEBUG] [Thread-130515] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:24.351 [DEBUG] [Thread-130515] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:24.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:24.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-28T17:09:24.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-28T17:09:24.374 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:24.374 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:24.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:24.382 [DEBUG] [Thread-130515] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:26.320 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:26.321 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:34.383 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:09:34.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:09:34.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-28T17:09:34.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 9, 3), 14.24, 38.39, 0.0, 20.41, 16.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:09:34.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:09:03
2025-09-28T17:09:35.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:09:35.208 [DEBUG] [Thread-130517] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d80
2025-09-28T17:09:35.208 [DEBUG] [Thread-130517] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:35.228 [DEBUG] [Thread-130517] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:09:35.228 [INFO] [Thread-130517] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:35.231 [DEBUG] [Thread-130517] [transport.py] [_log()] Compression: none
2025-09-28T17:09:35.232 [DEBUG] [Thread-130517] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:35.249 [DEBUG] [Thread-130517] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:35.249 [DEBUG] [Thread-130517] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:35.250 [DEBUG] [Thread-130517] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:09:35.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:09:35.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:35.252 [DEBUG] [Thread-130517] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:35.252 [DEBUG] [Thread-130517] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:35.252 [DEBUG] [Thread-130517] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:35.252 [DEBUG] [Thread-130517] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:09:35.252 [DEBUG] [Thread-130517] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:35.267 [INFO] [Thread-130517] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:35.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:35.860 [DEBUG] [Thread-130517] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:35.860 [DEBUG] [Thread-130517] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:35.860 [DEBUG] [Thread-130517] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:09:35.901 [DEBUG] [Thread-130517] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:35.901 [DEBUG] [Thread-130517] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:35.903 [DEBUG] [Thread-130517] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:35.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:35.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:09:35.917 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:09:35.918 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:09:35.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:35.924 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:09:35.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.631331 -999.00  +16.70  11.28     43   +4.30 1 1 1 1 1   887    0 11.81 -37.95 ----- 11.3 11.3 197.4 16.0 20.7 -27.3 20.3 -26.0 21.9 -26.2 22.5 -27.3
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:09:35.924 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.631331
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:09:35.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:09:03', tmtdew=14.24, humidity=38.39, cloud=0.0, wind=20.41, temperature=16.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:09:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:09:35.925 [DEBUG] [Thread-130517] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:36.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-28T17:09:36.015 [DEBUG] [Thread-130520] [transport.py] [_log()] starting thread (client mode): 0x2b996a70
2025-09-28T17:09:36.016 [DEBUG] [Thread-130520] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:36.030 [DEBUG] [Thread-130520] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:09:36.030 [INFO] [Thread-130520] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] Compression: none
2025-09-28T17:09:36.038 [DEBUG] [Thread-130520] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:36.096 [DEBUG] [Thread-130520] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:36.097 [DEBUG] [Thread-130520] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:36.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:09:36.098 [DEBUG] [Thread-130520] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:09:36.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:36.152 [DEBUG] [Thread-130520] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:36.152 [DEBUG] [Thread-130520] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:36.152 [DEBUG] [Thread-130520] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:36.152 [DEBUG] [Thread-130520] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:09:36.152 [DEBUG] [Thread-130520] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:36.166 [INFO] [Thread-130520] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:36.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-28T17:09:36.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:37.120 [DEBUG] [Thread-130520] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:37.120 [DEBUG] [Thread-130520] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:37.168 [DEBUG] [Thread-130520] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:37.168 [DEBUG] [Thread-130520] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:37.176 [DEBUG] [Thread-130520] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:37.184 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:37.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-28T17:09:37.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-28T17:09:37.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:37.199 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:37.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:37.207 [DEBUG] [Thread-130520] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:37.781 [DEBUG] [Thread-130522 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:09:47.201 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:09:47.201 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:09:47.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-28T17:09:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 9, 35), 13.96, 38.88, 0.0, 20.59, 16.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:09:47.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:09:35
2025-09-28T17:09:47.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:09:48.025 [DEBUG] [Thread-130523] [transport.py] [_log()] starting thread (client mode): 0x2b9bb7c0
2025-09-28T17:09:48.026 [DEBUG] [Thread-130523] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:48.045 [DEBUG] [Thread-130523] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:09:48.046 [INFO] [Thread-130523] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:09:48.049 [DEBUG] [Thread-130523] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:48.049 [DEBUG] [Thread-130523] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:09:48.049 [DEBUG] [Thread-130523] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] Compression: none
2025-09-28T17:09:48.050 [DEBUG] [Thread-130523] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:48.067 [DEBUG] [Thread-130523] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:48.068 [DEBUG] [Thread-130523] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:48.068 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:09:48.069 [DEBUG] [Thread-130523] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:09:48.069 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:48.071 [DEBUG] [Thread-130523] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:48.071 [DEBUG] [Thread-130523] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:48.071 [DEBUG] [Thread-130523] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:48.072 [DEBUG] [Thread-130523] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:09:48.072 [DEBUG] [Thread-130523] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:48.094 [INFO] [Thread-130523] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:48.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:48.722 [DEBUG] [Thread-130523] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:48.722 [DEBUG] [Thread-130523] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:48.722 [DEBUG] [Thread-130523] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:09:48.763 [DEBUG] [Thread-130523] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:48.763 [DEBUG] [Thread-130523] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:48.766 [DEBUG] [Thread-130523] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:48.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:48.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:09:48.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:09:48.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:09:48.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:48.791 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:09:48.791 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:48.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:48.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:09:48.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.631678 -999.00  +16.80   9.06     43   +4.30 1 1 1 1 1   887    0 11.61 -40.10 ----- 9.1 9.1 215.0 14.6 20.9 -27.1 20.4 -29.3 21.9 -26.1 22.6 -26.5
2025-09-28T17:09:48.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:09:48.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:09:48.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.631678
2025-09-28T17:09:48.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:09:48.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:09:48.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:09:48.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:09:48.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:09:48.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:09:35', tmtdew=13.96, humidity=38.88, cloud=0.0, wind=20.59, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:09:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:09:48.793 [DEBUG] [Thread-130523] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:48.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:09:48.889 [DEBUG] [Thread-130526] [transport.py] [_log()] starting thread (client mode): 0x2b9bbd90
2025-09-28T17:09:48.890 [DEBUG] [Thread-130526] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:09:48.905 [DEBUG] [Thread-130526] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:09:48.905 [INFO] [Thread-130526] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:09:48.913 [DEBUG] [Thread-130526] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:09:48.913 [DEBUG] [Thread-130526] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:09:48.913 [DEBUG] [Thread-130526] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] client lang: <none>
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] server lang: <none>
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] kex follows: False
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] Compression: none
2025-09-28T17:09:48.914 [DEBUG] [Thread-130526] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:09:48.971 [DEBUG] [Thread-130526] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:09:48.971 [DEBUG] [Thread-130526] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:09:48.971 [DEBUG] [Thread-130526] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:09:48.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:09:48.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:09:49.028 [DEBUG] [Thread-130526] [transport.py] [_log()] userauth is OK
2025-09-28T17:09:49.028 [DEBUG] [Thread-130526] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:09:49.028 [DEBUG] [Thread-130526] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:09:49.028 [DEBUG] [Thread-130526] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:09:49.028 [DEBUG] [Thread-130526] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:09:49.042 [INFO] [Thread-130526] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:09:49.042 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:09:49.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:09:49.995 [DEBUG] [Thread-130526] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:09:49.996 [DEBUG] [Thread-130526] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:09:50.043 [DEBUG] [Thread-130526] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:09:50.044 [DEBUG] [Thread-130526] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:09:50.052 [DEBUG] [Thread-130526] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:09:50.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:09:50.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')
2025-09-28T17:09:50.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') -> 00000000
2025-09-28T17:09:50.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:09:50.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:09:50.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:09:50.087 [DEBUG] [Thread-130526] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:09:52.824 [DEBUG] [Thread-130528 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:00.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:10:00.089 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:10:00.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-28T17:10:00.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 9, 35), 13.96, 38.88, 0.0, 20.59, 16.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:10:00.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:09:35
2025-09-28T17:10:00.806 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:10:00.956 [DEBUG] [Thread-130529] [transport.py] [_log()] starting thread (client mode): 0x2e3616c0
2025-09-28T17:10:00.957 [DEBUG] [Thread-130529] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:00.977 [DEBUG] [Thread-130529] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:10:00.977 [INFO] [Thread-130529] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] Compression: none
2025-09-28T17:10:00.980 [DEBUG] [Thread-130529] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:00.997 [DEBUG] [Thread-130529] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:00.997 [DEBUG] [Thread-130529] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:00.997 [DEBUG] [Thread-130529] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:10:00.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:10:00.998 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:00.998 [DEBUG] [Thread-130529] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:00.998 [DEBUG] [Thread-130529] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:00.998 [DEBUG] [Thread-130529] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:00.998 [DEBUG] [Thread-130529] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:10:00.998 [DEBUG] [Thread-130529] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:01.013 [INFO] [Thread-130529] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:01.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:01.635 [DEBUG] [Thread-130529] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:01.635 [DEBUG] [Thread-130529] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:01.635 [DEBUG] [Thread-130529] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:10:01.677 [DEBUG] [Thread-130529] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:01.677 [DEBUG] [Thread-130529] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:01.680 [DEBUG] [Thread-130529] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:01.693 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:01.693 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:10:01.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:10:01.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:10:01.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:01.700 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:10:01.700 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.631678 -999.00  +16.80   9.06     43   +4.30 1 1 1 1 1   887    0 11.61 -40.10 ----- 9.1 9.1 215.0 14.6 20.9 -27.1 20.4 -29.3 21.9 -26.1 22.6 -26.5
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.631678
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:10:01.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:09:35', tmtdew=13.96, humidity=38.88, cloud=0.0, wind=20.59, temperature=16.28, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:09:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:10:01.701 [DEBUG] [Thread-130529] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:01.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-28T17:10:01.787 [DEBUG] [Thread-130532] [transport.py] [_log()] starting thread (client mode): 0x2b997d30
2025-09-28T17:10:01.787 [DEBUG] [Thread-130532] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:01.803 [DEBUG] [Thread-130532] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:10:01.803 [INFO] [Thread-130532] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] Compression: none
2025-09-28T17:10:01.811 [DEBUG] [Thread-130532] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:01.870 [DEBUG] [Thread-130532] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:01.871 [DEBUG] [Thread-130532] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:01.871 [DEBUG] [Thread-130532] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:10:01.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:10:01.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:01.929 [DEBUG] [Thread-130532] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:01.929 [DEBUG] [Thread-130532] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:01.929 [DEBUG] [Thread-130532] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:01.929 [DEBUG] [Thread-130532] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:10:01.929 [DEBUG] [Thread-130532] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:01.944 [INFO] [Thread-130532] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:01.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-28T17:10:01.944 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:02.987 [DEBUG] [Thread-130532] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:02.987 [DEBUG] [Thread-130532] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:03.035 [DEBUG] [Thread-130532] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:03.035 [DEBUG] [Thread-130532] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:03.043 [DEBUG] [Thread-130532] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:03.051 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:03.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T17:10:03.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-28T17:10:03.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:03.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:03.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:03.075 [DEBUG] [Thread-130532] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:07.871 [DEBUG] [Thread-130534 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:13.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:10:13.078 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:10:13.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-28T17:10:13.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 10, 7), 13.89, 39.01, 0.0, 19.22, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:10:13.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:10:07
2025-09-28T17:10:13.763 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:10:13.911 [DEBUG] [Thread-130535] [transport.py] [_log()] starting thread (client mode): 0x2b9b9330
2025-09-28T17:10:13.911 [DEBUG] [Thread-130535] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:13.927 [DEBUG] [Thread-130535] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:10:13.927 [INFO] [Thread-130535] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:13.930 [DEBUG] [Thread-130535] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] Compression: none
2025-09-28T17:10:13.931 [DEBUG] [Thread-130535] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:13.947 [DEBUG] [Thread-130535] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:13.948 [DEBUG] [Thread-130535] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:13.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:10:13.949 [DEBUG] [Thread-130535] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:10:13.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:13.951 [DEBUG] [Thread-130535] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:13.951 [DEBUG] [Thread-130535] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:13.951 [DEBUG] [Thread-130535] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:13.951 [DEBUG] [Thread-130535] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:10:13.951 [DEBUG] [Thread-130535] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:13.974 [INFO] [Thread-130535] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:13.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:16.127 [DEBUG] [Thread-130535] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:16.127 [DEBUG] [Thread-130535] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:16.127 [DEBUG] [Thread-130535] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:10:16.167 [DEBUG] [Thread-130535] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:16.167 [DEBUG] [Thread-130535] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:16.171 [DEBUG] [Thread-130535] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:16.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:16.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:10:16.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:10:16.186 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:10:16.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:16.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:10:16.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:16.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:10:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.631678 -999.00  +16.80   9.06     43   +4.30 1 1 1 1 1   887    0 11.61 -40.10 ----- 9.1 9.1 215.0 14.6 20.9 -27.1 20.4 -29.3 21.9 -26.1 22.6 -26.5
2025-09-28T17:10:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:10:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:10:16.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.631678
2025-09-28T17:10:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:10:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:10:16.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:10:16.229 [DEBUG] [Thread-130535] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:10:16.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:10:16.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:10:07', tmtdew=13.89, humidity=39.01, cloud=0.0, wind=19.22, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:09:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:10:16.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-28T17:10:16.326 [DEBUG] [Thread-130538] [transport.py] [_log()] starting thread (client mode): 0x2b9b8c40
2025-09-28T17:10:16.326 [DEBUG] [Thread-130538] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:16.341 [DEBUG] [Thread-130538] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:10:16.341 [INFO] [Thread-130538] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:10:16.348 [DEBUG] [Thread-130538] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:16.348 [DEBUG] [Thread-130538] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:10:16.348 [DEBUG] [Thread-130538] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:16.348 [DEBUG] [Thread-130538] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] Compression: none
2025-09-28T17:10:16.349 [DEBUG] [Thread-130538] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:16.405 [DEBUG] [Thread-130538] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:16.406 [DEBUG] [Thread-130538] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:16.406 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:10:16.406 [DEBUG] [Thread-130538] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:10:16.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:16.461 [DEBUG] [Thread-130538] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:16.461 [DEBUG] [Thread-130538] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:16.462 [DEBUG] [Thread-130538] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:16.462 [DEBUG] [Thread-130538] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:10:16.462 [DEBUG] [Thread-130538] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:16.480 [INFO] [Thread-130538] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:16.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-28T17:10:16.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:17.439 [DEBUG] [Thread-130538] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:17.439 [DEBUG] [Thread-130538] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:17.487 [DEBUG] [Thread-130538] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:17.487 [DEBUG] [Thread-130538] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:17.497 [DEBUG] [Thread-130538] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:17.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:17.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-28T17:10:17.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-28T17:10:17.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:17.524 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:17.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:17.532 [DEBUG] [Thread-130538] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:22.899 [DEBUG] [Thread-130540 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:23.060 [DEBUG] [Thread-130541 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:26.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:26.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:27.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:10:27.535 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:10:27.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:10:28.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 10, 7), 13.89, 39.01, 0.0, 19.22, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:10:28.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:10:07
2025-09-28T17:10:28.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:10:28.363 [DEBUG] [Thread-130542] [transport.py] [_log()] starting thread (client mode): 0x2b997f10
2025-09-28T17:10:28.363 [DEBUG] [Thread-130542] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:28.383 [DEBUG] [Thread-130542] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:10:28.383 [INFO] [Thread-130542] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] Compression: none
2025-09-28T17:10:28.385 [DEBUG] [Thread-130542] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:28.403 [DEBUG] [Thread-130542] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:28.404 [DEBUG] [Thread-130542] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:28.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:10:28.405 [DEBUG] [Thread-130542] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:10:28.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:28.406 [DEBUG] [Thread-130542] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:28.406 [DEBUG] [Thread-130542] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:28.406 [DEBUG] [Thread-130542] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:28.407 [DEBUG] [Thread-130542] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:10:28.407 [DEBUG] [Thread-130542] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:28.429 [INFO] [Thread-130542] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:28.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:29.008 [DEBUG] [Thread-130542] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:29.009 [DEBUG] [Thread-130542] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:29.009 [DEBUG] [Thread-130542] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:10:29.049 [DEBUG] [Thread-130542] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:29.049 [DEBUG] [Thread-130542] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:29.052 [DEBUG] [Thread-130542] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:29.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:29.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:10:29.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:10:29.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:10:29.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:29.071 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:10:29.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:29.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:10:29.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632025 -999.00  +16.90  14.92     43   +4.30 1 1 1 1 1   887    0 11.70 -39.58 ----- 14.9 14.9 185.0 18.3 20.8 -27.2 20.4 -27.7 21.9 -26.0 22.6 -27.9
2025-09-28T17:10:29.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:10:29.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:10:29.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632025
2025-09-28T17:10:29.073 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:10:29.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:10:29.074 [DEBUG] [Thread-130542] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:29.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:10:29.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:10:29.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:10:29.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:10:07', tmtdew=13.89, humidity=39.01, cloud=0.0, wind=19.22, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:10:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:10: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-28T17:10:29.168 [DEBUG] [Thread-130545] [transport.py] [_log()] starting thread (client mode): 0x2b91f0d0
2025-09-28T17:10:29.168 [DEBUG] [Thread-130545] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:29.183 [DEBUG] [Thread-130545] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:10:29.183 [INFO] [Thread-130545] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:10:29.190 [DEBUG] [Thread-130545] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:29.191 [DEBUG] [Thread-130545] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:29.192 [DEBUG] [Thread-130545] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:29.193 [DEBUG] [Thread-130545] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:29.193 [DEBUG] [Thread-130545] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:29.193 [DEBUG] [Thread-130545] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:29.193 [DEBUG] [Thread-130545] [transport.py] [_log()] Compression: none
2025-09-28T17:10:29.193 [DEBUG] [Thread-130545] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:29.249 [DEBUG] [Thread-130545] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:29.250 [DEBUG] [Thread-130545] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:29.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:10:29.251 [DEBUG] [Thread-130545] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:10:29.252 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:29.306 [DEBUG] [Thread-130545] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:29.306 [DEBUG] [Thread-130545] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:29.306 [DEBUG] [Thread-130545] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:29.306 [DEBUG] [Thread-130545] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:10:29.306 [DEBUG] [Thread-130545] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:29.325 [INFO] [Thread-130545] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:29.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-28T17:10:29.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:30.325 [DEBUG] [Thread-130545] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:30.325 [DEBUG] [Thread-130545] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:30.373 [DEBUG] [Thread-130545] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:30.373 [DEBUG] [Thread-130545] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:30.382 [DEBUG] [Thread-130545] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:30.391 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:30.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-28T17:10:30.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-28T17:10:30.408 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:30.409 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:30.409 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:30.417 [DEBUG] [Thread-130545] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:37.949 [DEBUG] [Thread-130547 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:40.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:10:40.419 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:10:40.420 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:10:41.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 10, 7), 13.89, 39.01, 0.0, 19.22, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:10:41.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:10:07
2025-09-28T17:10:41.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:10:41.326 [DEBUG] [Thread-130548] [transport.py] [_log()] starting thread (client mode): 0x2e3c07f0
2025-09-28T17:10:41.326 [DEBUG] [Thread-130548] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:41.347 [DEBUG] [Thread-130548] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:10:41.347 [INFO] [Thread-130548] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] Compression: none
2025-09-28T17:10:41.350 [DEBUG] [Thread-130548] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:41.366 [DEBUG] [Thread-130548] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:41.366 [DEBUG] [Thread-130548] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:41.366 [DEBUG] [Thread-130548] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:10:41.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:10:41.367 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:41.368 [DEBUG] [Thread-130548] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:41.368 [DEBUG] [Thread-130548] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:41.368 [DEBUG] [Thread-130548] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:41.368 [DEBUG] [Thread-130548] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:10:41.368 [DEBUG] [Thread-130548] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:41.377 [INFO] [Thread-130548] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:41.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:43.712 [DEBUG] [Thread-130548] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:43.712 [DEBUG] [Thread-130548] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:43.712 [DEBUG] [Thread-130548] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:10:43.753 [DEBUG] [Thread-130548] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:43.753 [DEBUG] [Thread-130548] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:43.756 [DEBUG] [Thread-130548] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:43.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:43.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:10:43.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:10:43.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:10:43.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:43.781 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:10:43.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:43.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:43.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:10:43.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632025 -999.00  +16.90  14.92     43   +4.30 1 1 1 1 1   887    0 11.70 -39.58 ----- 14.9 14.9 185.0 18.3 20.8 -27.2 20.4 -27.7 21.9 -26.0 22.6 -27.9
2025-09-28T17:10:43.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:10:43.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:10:43.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632025
2025-09-28T17:10:43.783 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:10:43.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:10:43.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:10:43.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:10:43.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:10:43.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:10:07', tmtdew=13.89, humidity=39.01, cloud=0.0, wind=19.22, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:10:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:10:43.784 [DEBUG] [Thread-130548] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:43.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-28T17:10:43.880 [DEBUG] [Thread-130551] [transport.py] [_log()] starting thread (client mode): 0x2b996a70
2025-09-28T17:10:43.880 [DEBUG] [Thread-130551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:43.895 [DEBUG] [Thread-130551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:10:43.896 [INFO] [Thread-130551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:10:43.903 [DEBUG] [Thread-130551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:43.903 [DEBUG] [Thread-130551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:10:43.903 [DEBUG] [Thread-130551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:43.903 [DEBUG] [Thread-130551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:43.903 [DEBUG] [Thread-130551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] Compression: none
2025-09-28T17:10:43.904 [DEBUG] [Thread-130551] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:43.962 [DEBUG] [Thread-130551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:43.962 [DEBUG] [Thread-130551] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:43.963 [DEBUG] [Thread-130551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:10:43.963 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:10:43.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:44.018 [DEBUG] [Thread-130551] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:44.019 [DEBUG] [Thread-130551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:44.019 [DEBUG] [Thread-130551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:44.019 [DEBUG] [Thread-130551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:10:44.019 [DEBUG] [Thread-130551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:44.038 [INFO] [Thread-130551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:44.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-28T17:10:44.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:44.968 [DEBUG] [Thread-130551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:44.968 [DEBUG] [Thread-130551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:45.015 [DEBUG] [Thread-130551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:45.016 [DEBUG] [Thread-130551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:45.024 [DEBUG] [Thread-130551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:45.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:45.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-28T17:10:45.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') -> 00000000
2025-09-28T17:10:45.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:45.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:45.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:45.058 [DEBUG] [Thread-130551] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:52.980 [DEBUG] [Thread-130553 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:10:55.061 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:10:55.061 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:10:55.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-28T17:10:55.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 10, 39), 13.81, 39.73, 0.0, 19.0, 16.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:10:55.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:10:39
2025-09-28T17:10:55.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:10:55.880 [DEBUG] [Thread-130554] [transport.py] [_log()] starting thread (client mode): 0x2b9b83d0
2025-09-28T17:10:55.880 [DEBUG] [Thread-130554] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:55.902 [DEBUG] [Thread-130554] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:10:55.902 [INFO] [Thread-130554] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:55.904 [DEBUG] [Thread-130554] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] Compression: none
2025-09-28T17:10:55.905 [DEBUG] [Thread-130554] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:55.923 [DEBUG] [Thread-130554] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:55.924 [DEBUG] [Thread-130554] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:55.925 [DEBUG] [Thread-130554] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:10:55.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:10:55.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:55.927 [DEBUG] [Thread-130554] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:55.927 [DEBUG] [Thread-130554] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:55.927 [DEBUG] [Thread-130554] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:55.928 [DEBUG] [Thread-130554] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:10:55.928 [DEBUG] [Thread-130554] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:55.946 [INFO] [Thread-130554] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:55.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:56.539 [DEBUG] [Thread-130554] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:56.539 [DEBUG] [Thread-130554] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:56.540 [DEBUG] [Thread-130554] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:10:56.580 [DEBUG] [Thread-130554] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:56.581 [DEBUG] [Thread-130554] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:56.583 [DEBUG] [Thread-130554] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:56.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:56.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:10:56.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:10:56.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:10:56.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:56.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:10:56.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:56.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:56.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:10:56.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632373 -999.00  +16.70  15.61     43   +4.20 1 1 1 1 1   887    0 11.80 -41.13 ----- 15.6 15.6 203.8 22.0 20.8 -28.1 20.4 -26.3 21.9 -26.5 22.6 -28.5
2025-09-28T17:10:56.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:10:56.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:10:56.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632373
2025-09-28T17:10:56.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:10:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:10:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:10:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:10:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:10:56.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:10:39', tmtdew=13.81, humidity=39.73, cloud=0.0, wind=19.0, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:10:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:10:56.604 [DEBUG] [Thread-130554] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:10:56.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-28T17:10:56.703 [DEBUG] [Thread-130557] [transport.py] [_log()] starting thread (client mode): 0x2e3c36d0
2025-09-28T17:10:56.703 [DEBUG] [Thread-130557] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:10:56.717 [DEBUG] [Thread-130557] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:10:56.717 [INFO] [Thread-130557] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:10:56.725 [DEBUG] [Thread-130557] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:10:56.725 [DEBUG] [Thread-130557] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:10:56.725 [DEBUG] [Thread-130557] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] client lang: <none>
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] server lang: <none>
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] kex follows: False
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] Compression: none
2025-09-28T17:10:56.726 [DEBUG] [Thread-130557] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:10:56.782 [DEBUG] [Thread-130557] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:10:56.782 [DEBUG] [Thread-130557] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:10:56.783 [DEBUG] [Thread-130557] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:10:56.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:10:56.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:10:56.839 [DEBUG] [Thread-130557] [transport.py] [_log()] userauth is OK
2025-09-28T17:10:56.839 [DEBUG] [Thread-130557] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:10:56.839 [DEBUG] [Thread-130557] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:10:56.839 [DEBUG] [Thread-130557] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:10:56.839 [DEBUG] [Thread-130557] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:10:56.858 [INFO] [Thread-130557] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:10:56.858 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:10:56.858 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:10:57.801 [DEBUG] [Thread-130557] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:10:57.802 [DEBUG] [Thread-130557] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:10:57.849 [DEBUG] [Thread-130557] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:10:57.849 [DEBUG] [Thread-130557] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:10:57.858 [DEBUG] [Thread-130557] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:10:57.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:10:57.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-28T17:10:57.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-28T17:10:57.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:10:57.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:10:57.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:10:57.897 [DEBUG] [Thread-130557] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:07.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:11:07.899 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:11:07.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-28T17:11:08.014 [DEBUG] [Thread-130559 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:08.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 10, 39), 13.81, 39.73, 0.0, 19.0, 16.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:11:08.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:10:39
2025-09-28T17:11:08.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:11:08.731 [DEBUG] [Thread-130560] [transport.py] [_log()] starting thread (client mode): 0x2e34b9d0
2025-09-28T17:11:08.732 [DEBUG] [Thread-130560] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:08.751 [DEBUG] [Thread-130560] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:11:08.751 [INFO] [Thread-130560] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:11:08.754 [DEBUG] [Thread-130560] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:08.754 [DEBUG] [Thread-130560] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:11:08.754 [DEBUG] [Thread-130560] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:08.754 [DEBUG] [Thread-130560] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] Compression: none
2025-09-28T17:11:08.755 [DEBUG] [Thread-130560] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:08.768 [DEBUG] [Thread-130560] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:08.768 [DEBUG] [Thread-130560] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:08.769 [DEBUG] [Thread-130560] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:11:08.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:11:08.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:08.770 [DEBUG] [Thread-130560] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:08.770 [DEBUG] [Thread-130560] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:08.771 [DEBUG] [Thread-130560] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:08.771 [DEBUG] [Thread-130560] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:11:08.771 [DEBUG] [Thread-130560] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:08.788 [INFO] [Thread-130560] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:08.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:09.547 [DEBUG] [Thread-130560] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:09.547 [DEBUG] [Thread-130560] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:09.548 [DEBUG] [Thread-130560] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:11:09.588 [DEBUG] [Thread-130560] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:09.588 [DEBUG] [Thread-130560] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:09.591 [DEBUG] [Thread-130560] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:09.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:09.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:11:09.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:11:09.608 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:11:09.612 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:09.613 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:11:09.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632373 -999.00  +16.70  15.61     43   +4.20 1 1 1 1 1   887    0 11.80 -41.13 ----- 15.6 15.6 203.8 22.0 20.8 -28.1 20.4 -26.3 21.9 -26.5 22.6 -28.5
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:11:09.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632373
2025-09-28T17:11:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:11:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:11:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:11:09.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:11:09.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:11:09.616 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:10:39', tmtdew=13.81, humidity=39.73, cloud=0.0, wind=19.0, temperature=16.19, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:10:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:11:09.616 [DEBUG] [Thread-130560] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:09.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-28T17:11:09.720 [DEBUG] [Thread-130563] [transport.py] [_log()] starting thread (client mode): 0x2b9de500
2025-09-28T17:11:09.721 [DEBUG] [Thread-130563] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:09.736 [DEBUG] [Thread-130563] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:11:09.736 [INFO] [Thread-130563] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:09.744 [DEBUG] [Thread-130563] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:09.745 [DEBUG] [Thread-130563] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:09.745 [DEBUG] [Thread-130563] [transport.py] [_log()] Compression: none
2025-09-28T17:11:09.745 [DEBUG] [Thread-130563] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:09.804 [DEBUG] [Thread-130563] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:09.805 [DEBUG] [Thread-130563] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:09.805 [DEBUG] [Thread-130563] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:11:09.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:11:09.806 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:09.864 [DEBUG] [Thread-130563] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:09.864 [DEBUG] [Thread-130563] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:09.864 [DEBUG] [Thread-130563] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:09.864 [DEBUG] [Thread-130563] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:11:09.864 [DEBUG] [Thread-130563] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:09.885 [INFO] [Thread-130563] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:09.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-28T17:11:09.886 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:10.813 [DEBUG] [Thread-130563] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:10.813 [DEBUG] [Thread-130563] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:10.861 [DEBUG] [Thread-130563] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:10.861 [DEBUG] [Thread-130563] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:10.869 [DEBUG] [Thread-130563] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:10.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:10.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-28T17:11:10.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-28T17:11:10.897 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:10.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:10.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:10.905 [DEBUG] [Thread-130563] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:20.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:11:20.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:11:20.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-28T17:11:21.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 11, 11), 13.74, 39.87, 0.0, 20.2, 16.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:11:21.484 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:11:11
2025-09-28T17:11:21.592 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:11:21.739 [DEBUG] [Thread-130565] [transport.py] [_log()] starting thread (client mode): 0x2b9dee90
2025-09-28T17:11:21.740 [DEBUG] [Thread-130565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:21.761 [DEBUG] [Thread-130565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:11:21.762 [INFO] [Thread-130565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:11:21.765 [DEBUG] [Thread-130565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:21.765 [DEBUG] [Thread-130565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:11:21.765 [DEBUG] [Thread-130565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:21.765 [DEBUG] [Thread-130565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:21.765 [DEBUG] [Thread-130565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:21.766 [DEBUG] [Thread-130565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:21.767 [DEBUG] [Thread-130565] [transport.py] [_log()] Compression: none
2025-09-28T17:11:21.767 [DEBUG] [Thread-130565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:21.784 [DEBUG] [Thread-130565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:21.785 [DEBUG] [Thread-130565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:21.785 [DEBUG] [Thread-130565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:11:21.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:11:21.786 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:21.788 [DEBUG] [Thread-130565] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:21.788 [DEBUG] [Thread-130565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:21.788 [DEBUG] [Thread-130565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:21.788 [DEBUG] [Thread-130565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:11:21.788 [DEBUG] [Thread-130565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:21.804 [INFO] [Thread-130565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:21.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:22.560 [DEBUG] [Thread-130565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:22.560 [DEBUG] [Thread-130565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:22.560 [DEBUG] [Thread-130565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:11:22.601 [DEBUG] [Thread-130565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:22.601 [DEBUG] [Thread-130565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:22.604 [DEBUG] [Thread-130565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:22.616 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:22.616 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:11:22.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:11:22.620 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:11:22.625 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:22.627 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:11:22.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:22.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:22.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:11:22.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632373 -999.00  +16.70  15.61     43   +4.20 1 1 1 1 1   887    0 11.80 -41.13 ----- 15.6 15.6 203.8 22.0 20.8 -28.1 20.4 -26.3 21.9 -26.5 22.6 -28.5
2025-09-28T17:11:22.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:11:22.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:11:22.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632373
2025-09-28T17:11:22.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:11:22.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:11:22.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:11:22.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:11:22.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:11:22.629 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:11:11', tmtdew=13.74, humidity=39.87, cloud=0.0, wind=20.2, temperature=16.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:10:37.027', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:11:22.629 [DEBUG] [Thread-130565] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:22.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-28T17:11:22.723 [DEBUG] [Thread-130568] [transport.py] [_log()] starting thread (client mode): 0x2b9df430
2025-09-28T17:11:22.723 [DEBUG] [Thread-130568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:22.738 [DEBUG] [Thread-130568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:11:22.738 [INFO] [Thread-130568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] Compression: none
2025-09-28T17:11:22.746 [DEBUG] [Thread-130568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:22.802 [DEBUG] [Thread-130568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:22.803 [DEBUG] [Thread-130568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:22.803 [DEBUG] [Thread-130568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:11:22.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:11:22.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:22.859 [DEBUG] [Thread-130568] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:22.859 [DEBUG] [Thread-130568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:22.859 [DEBUG] [Thread-130568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:22.859 [DEBUG] [Thread-130568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:11:22.859 [DEBUG] [Thread-130568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:22.878 [INFO] [Thread-130568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:22.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-28T17:11:22.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:23.050 [DEBUG] [Thread-130570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:23.112 [DEBUG] [Thread-130571 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:23.826 [DEBUG] [Thread-130568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:23.827 [DEBUG] [Thread-130568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:23.874 [DEBUG] [Thread-130568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:23.874 [DEBUG] [Thread-130568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:23.884 [DEBUG] [Thread-130568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:23.893 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:23.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-28T17:11:23.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-28T17:11:23.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:23.911 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:23.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:23.919 [DEBUG] [Thread-130568] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:26.602 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:26.603 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:33.922 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:11:33.922 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:11:33.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-28T17:11:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 11, 11), 13.74, 39.87, 0.0, 20.2, 16.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:11:34.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:11:11
2025-09-28T17:11:34.604 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:11:34.751 [DEBUG] [Thread-130572] [transport.py] [_log()] starting thread (client mode): 0x2b9de350
2025-09-28T17:11:34.751 [DEBUG] [Thread-130572] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:34.772 [DEBUG] [Thread-130572] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:11:34.772 [INFO] [Thread-130572] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:11:34.775 [DEBUG] [Thread-130572] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:34.775 [DEBUG] [Thread-130572] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:11:34.775 [DEBUG] [Thread-130572] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] Compression: none
2025-09-28T17:11:34.776 [DEBUG] [Thread-130572] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:34.792 [DEBUG] [Thread-130572] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:34.793 [DEBUG] [Thread-130572] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:34.793 [DEBUG] [Thread-130572] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:11:34.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:11:34.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:34.796 [DEBUG] [Thread-130572] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:34.796 [DEBUG] [Thread-130572] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:34.796 [DEBUG] [Thread-130572] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:34.796 [DEBUG] [Thread-130572] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:11:34.796 [DEBUG] [Thread-130572] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:34.820 [INFO] [Thread-130572] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:34.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:35.464 [DEBUG] [Thread-130572] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:35.464 [DEBUG] [Thread-130572] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:35.465 [DEBUG] [Thread-130572] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:11:35.505 [DEBUG] [Thread-130572] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:35.505 [DEBUG] [Thread-130572] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:35.507 [DEBUG] [Thread-130572] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:35.515 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:35.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:11:35.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:11:35.519 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:11:35.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:35.533 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:11:35.534 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632720 -999.00  +16.60  15.90     43   +4.10 1 1 1 1 1   887    0 11.76 -40.38 ----- 15.9 15.9 225.9 26.6 20.7 -28.0 20.3 -26.8 21.8 -26.9 22.5 -28.6
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:11:35.534 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632720
2025-09-28T17:11:35.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:11:35.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:11:35.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:11:35.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:11:35.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:11:35.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:11:11', tmtdew=13.74, humidity=39.87, cloud=0.0, wind=20.2, temperature=16.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:11:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:11:35.536 [DEBUG] [Thread-130572] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:35.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-28T17:11:35.644 [DEBUG] [Thread-130575] [transport.py] [_log()] starting thread (client mode): 0x2b9dc940
2025-09-28T17:11:35.644 [DEBUG] [Thread-130575] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:35.659 [DEBUG] [Thread-130575] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:11:35.660 [INFO] [Thread-130575] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:11:35.667 [DEBUG] [Thread-130575] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:35.667 [DEBUG] [Thread-130575] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:11:35.667 [DEBUG] [Thread-130575] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:35.667 [DEBUG] [Thread-130575] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:35.668 [DEBUG] [Thread-130575] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] Compression: none
2025-09-28T17:11:35.669 [DEBUG] [Thread-130575] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:35.727 [DEBUG] [Thread-130575] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:35.727 [DEBUG] [Thread-130575] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:35.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:11:35.728 [DEBUG] [Thread-130575] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:11:35.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:35.783 [DEBUG] [Thread-130575] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:35.783 [DEBUG] [Thread-130575] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:35.783 [DEBUG] [Thread-130575] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:35.783 [DEBUG] [Thread-130575] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:11:35.783 [DEBUG] [Thread-130575] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:35.797 [INFO] [Thread-130575] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:35.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-28T17:11:35.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:36.724 [DEBUG] [Thread-130575] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:36.724 [DEBUG] [Thread-130575] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:36.772 [DEBUG] [Thread-130575] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:36.772 [DEBUG] [Thread-130575] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:36.781 [DEBUG] [Thread-130575] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:36.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:36.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-28T17:11:36.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-28T17:11:36.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:36.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:36.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:36.815 [DEBUG] [Thread-130575] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:38.095 [DEBUG] [Thread-130577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:46.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:11:46.818 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:11:46.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-28T17:11:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 11, 43), 13.83, 39.42, 0.0, 17.15, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:11:47.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:11:43
2025-09-28T17:11:47.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:11:47.649 [DEBUG] [Thread-130578] [transport.py] [_log()] starting thread (client mode): 0x2b9de890
2025-09-28T17:11:47.649 [DEBUG] [Thread-130578] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:47.668 [DEBUG] [Thread-130578] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:11:47.668 [INFO] [Thread-130578] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:11:47.671 [DEBUG] [Thread-130578] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:47.672 [DEBUG] [Thread-130578] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:47.673 [DEBUG] [Thread-130578] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:47.673 [DEBUG] [Thread-130578] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:47.673 [DEBUG] [Thread-130578] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:47.673 [DEBUG] [Thread-130578] [transport.py] [_log()] Compression: none
2025-09-28T17:11:47.673 [DEBUG] [Thread-130578] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:47.690 [DEBUG] [Thread-130578] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:47.691 [DEBUG] [Thread-130578] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:47.691 [DEBUG] [Thread-130578] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:11:47.692 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:11:47.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:47.694 [DEBUG] [Thread-130578] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:47.694 [DEBUG] [Thread-130578] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:47.694 [DEBUG] [Thread-130578] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:47.695 [DEBUG] [Thread-130578] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:11:47.695 [DEBUG] [Thread-130578] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:47.713 [INFO] [Thread-130578] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:47.714 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:48.507 [DEBUG] [Thread-130578] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:48.507 [DEBUG] [Thread-130578] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:48.508 [DEBUG] [Thread-130578] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:11:48.548 [DEBUG] [Thread-130578] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:48.548 [DEBUG] [Thread-130578] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:48.550 [DEBUG] [Thread-130578] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:48.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:48.558 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:11:48.560 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:11:48.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:11:48.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:48.566 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:11:48.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:48.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.632720 -999.00  +16.60  15.90     43   +4.10 1 1 1 1 1   887    0 11.76 -40.38 ----- 15.9 15.9 225.9 26.6 20.7 -28.0 20.3 -26.8 21.8 -26.9 22.5 -28.6
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.632720
2025-09-28T17:11:48.567 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:11:48.568 [DEBUG] [Thread-130578] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:48.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:11:48.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:11:48.568 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:11:48.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:11:48.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:11:43', tmtdew=13.83, humidity=39.42, cloud=0.0, wind=17.15, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:11:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:11:48.643 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:11:48.652 [DEBUG] [Thread-130581] [transport.py] [_log()] starting thread (client mode): 0x2e360fd0
2025-09-28T17:11:48.652 [DEBUG] [Thread-130581] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:11:48.666 [DEBUG] [Thread-130581] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:11:48.666 [INFO] [Thread-130581] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] client lang: <none>
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] server lang: <none>
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] kex follows: False
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] Compression: none
2025-09-28T17:11:48.674 [DEBUG] [Thread-130581] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:11:48.735 [DEBUG] [Thread-130581] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:11:48.736 [DEBUG] [Thread-130581] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:11:48.736 [DEBUG] [Thread-130581] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:11:48.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:11:48.736 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:11:48.792 [DEBUG] [Thread-130581] [transport.py] [_log()] userauth is OK
2025-09-28T17:11:48.792 [DEBUG] [Thread-130581] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:11:48.792 [DEBUG] [Thread-130581] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:11:48.792 [DEBUG] [Thread-130581] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:11:48.793 [DEBUG] [Thread-130581] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:11:48.811 [INFO] [Thread-130581] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:11:48.812 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:11:48.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:11:49.784 [DEBUG] [Thread-130581] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:11:49.784 [DEBUG] [Thread-130581] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:11:49.832 [DEBUG] [Thread-130581] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:11:49.832 [DEBUG] [Thread-130581] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:11:49.841 [DEBUG] [Thread-130581] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:11:49.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:11:49.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-28T17:11:49.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-28T17:11:49.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:11:49.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:11:49.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:11:49.875 [DEBUG] [Thread-130581] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:11:53.145 [DEBUG] [Thread-130583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:11:59.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:11:59.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:11:59.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-28T17:12:00.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 11, 43), 13.83, 39.42, 0.0, 17.15, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:12:00.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:11:43
2025-09-28T17:12:00.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:12:00.691 [DEBUG] [Thread-130584] [transport.py] [_log()] starting thread (client mode): 0x2b9de440
2025-09-28T17:12:00.691 [DEBUG] [Thread-130584] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:00.711 [DEBUG] [Thread-130584] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:12:00.711 [INFO] [Thread-130584] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:00.714 [DEBUG] [Thread-130584] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] Compression: none
2025-09-28T17:12:00.715 [DEBUG] [Thread-130584] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:00.731 [DEBUG] [Thread-130584] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:00.732 [DEBUG] [Thread-130584] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:00.732 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:12:00.733 [DEBUG] [Thread-130584] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:12:00.733 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:00.735 [DEBUG] [Thread-130584] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:00.735 [DEBUG] [Thread-130584] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:00.735 [DEBUG] [Thread-130584] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:00.735 [DEBUG] [Thread-130584] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:12:00.735 [DEBUG] [Thread-130584] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:00.753 [INFO] [Thread-130584] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:00.753 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:01.370 [DEBUG] [Thread-130584] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:01.370 [DEBUG] [Thread-130584] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:01.371 [DEBUG] [Thread-130584] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:12:01.411 [DEBUG] [Thread-130584] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:01.411 [DEBUG] [Thread-130584] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:01.414 [DEBUG] [Thread-130584] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:01.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:01.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:12:01.427 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:12:01.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:12:01.433 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:01.434 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:12:01.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:01.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:12:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633067 -999.00  +16.70   9.50     43   +4.10 1 1 1 1 1   887    0 11.80 -37.57 ----- 9.5 9.5 212.2 19.2 20.7 -27.6 20.3 -26.3 21.8 -26.5 22.5 -28.1
2025-09-28T17:12:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:12:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:12:01.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633067
2025-09-28T17:12:01.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:12:01.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:12:01.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:12:01.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:12:01.436 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:12:01.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:11:43', tmtdew=13.83, humidity=39.42, cloud=0.0, wind=17.15, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:11:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:12:01.437 [DEBUG] [Thread-130584] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:01.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-28T17:12:01.532 [DEBUG] [Thread-130587] [transport.py] [_log()] starting thread (client mode): 0x2b9dd750
2025-09-28T17:12:01.532 [DEBUG] [Thread-130587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:01.547 [DEBUG] [Thread-130587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:12:01.547 [INFO] [Thread-130587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:12:01.554 [DEBUG] [Thread-130587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:01.554 [DEBUG] [Thread-130587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:01.555 [DEBUG] [Thread-130587] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] Compression: none
2025-09-28T17:12:01.556 [DEBUG] [Thread-130587] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:01.612 [DEBUG] [Thread-130587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:01.612 [DEBUG] [Thread-130587] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:01.613 [DEBUG] [Thread-130587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:12:01.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:12:01.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:01.668 [DEBUG] [Thread-130587] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:01.668 [DEBUG] [Thread-130587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:01.668 [DEBUG] [Thread-130587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:01.668 [DEBUG] [Thread-130587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:12:01.668 [DEBUG] [Thread-130587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:01.686 [INFO] [Thread-130587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:01.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-28T17:12:01.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:02.694 [DEBUG] [Thread-130587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:02.694 [DEBUG] [Thread-130587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:02.747 [DEBUG] [Thread-130587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:02.748 [DEBUG] [Thread-130587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:02.760 [DEBUG] [Thread-130587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:02.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:02.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-28T17:12: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') -> 00000000
2025-09-28T17:12:02.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:02.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:02.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:02.793 [DEBUG] [Thread-130587] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:08.185 [DEBUG] [Thread-130589 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:12.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:12:12.796 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:12:12.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-28T17:12:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 11, 43), 13.83, 39.42, 0.0, 17.15, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:12:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:11:43
2025-09-28T17:12:13.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:12:13.629 [DEBUG] [Thread-130590] [transport.py] [_log()] starting thread (client mode): 0x2b9de500
2025-09-28T17:12:13.630 [DEBUG] [Thread-130590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:13.650 [DEBUG] [Thread-130590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:12:13.650 [INFO] [Thread-130590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:13.654 [DEBUG] [Thread-130590] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] Compression: none
2025-09-28T17:12:13.655 [DEBUG] [Thread-130590] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:13.673 [DEBUG] [Thread-130590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:13.673 [DEBUG] [Thread-130590] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:13.674 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:12:13.674 [DEBUG] [Thread-130590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:12:13.675 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:13.677 [DEBUG] [Thread-130590] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:13.677 [DEBUG] [Thread-130590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:13.677 [DEBUG] [Thread-130590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:13.677 [DEBUG] [Thread-130590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:12:13.677 [DEBUG] [Thread-130590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:13.702 [INFO] [Thread-130590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:13.703 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:14.504 [DEBUG] [Thread-130590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:14.505 [DEBUG] [Thread-130590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:14.505 [DEBUG] [Thread-130590] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:12:14.545 [DEBUG] [Thread-130590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:14.545 [DEBUG] [Thread-130590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:14.548 [DEBUG] [Thread-130590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:14.559 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:14.559 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:12:14.561 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:12:14.562 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:12:14.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:14.568 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:12:14.568 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:14.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:12:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633067 -999.00  +16.70   9.50     43   +4.10 1 1 1 1 1   887    0 11.80 -37.57 ----- 9.5 9.5 212.2 19.2 20.7 -27.6 20.3 -26.3 21.8 -26.5 22.5 -28.1
2025-09-28T17:12:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:12:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:12:14.569 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633067
2025-09-28T17:12:14.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:12:14.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:12:14.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:12:14.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:12:14.570 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:12:14.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:11:43', tmtdew=13.83, humidity=39.42, cloud=0.0, wind=17.15, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:11:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:12:14.571 [DEBUG] [Thread-130590] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:14.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-28T17:12:14.659 [DEBUG] [Thread-130593] [transport.py] [_log()] starting thread (client mode): 0x2b9dc3d0
2025-09-28T17:12:14.659 [DEBUG] [Thread-130593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:14.674 [DEBUG] [Thread-130593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:12:14.674 [INFO] [Thread-130593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:12:14.681 [DEBUG] [Thread-130593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:14.681 [DEBUG] [Thread-130593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:12:14.681 [DEBUG] [Thread-130593] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:14.682 [DEBUG] [Thread-130593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] Compression: none
2025-09-28T17:12:14.683 [DEBUG] [Thread-130593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:14.740 [DEBUG] [Thread-130593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:14.741 [DEBUG] [Thread-130593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:14.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:12:14.742 [DEBUG] [Thread-130593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:12:14.743 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:14.800 [DEBUG] [Thread-130593] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:14.800 [DEBUG] [Thread-130593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:14.800 [DEBUG] [Thread-130593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:14.801 [DEBUG] [Thread-130593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:12:14.801 [DEBUG] [Thread-130593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:14.820 [INFO] [Thread-130593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:14.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-28T17:12:14.821 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:15.780 [DEBUG] [Thread-130593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:15.781 [DEBUG] [Thread-130593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:15.828 [DEBUG] [Thread-130593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:15.828 [DEBUG] [Thread-130593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:15.836 [DEBUG] [Thread-130593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:15.844 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:15.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-28T17:12:15.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-28T17:12:15.861 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:15.861 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:15.861 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:15.868 [DEBUG] [Thread-130593] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:23.168 [DEBUG] [Thread-130595 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:23.237 [DEBUG] [Thread-130596 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:25.863 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:12:25.864 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:12:25.866 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:12:26.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 12, 15), 13.92, 39.23, 0.0, 17.31, 16.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:12:26.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:12:15
2025-09-28T17:12:26.565 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:12:26.711 [DEBUG] [Thread-130597] [transport.py] [_log()] starting thread (client mode): 0x2b9dc280
2025-09-28T17:12:26.711 [DEBUG] [Thread-130597] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:26.732 [DEBUG] [Thread-130597] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:12:26.732 [INFO] [Thread-130597] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] Compression: none
2025-09-28T17:12:26.736 [DEBUG] [Thread-130597] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:26.741 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:26.742 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:26.756 [DEBUG] [Thread-130597] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:26.757 [DEBUG] [Thread-130597] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:26.757 [DEBUG] [Thread-130597] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:12:26.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:12:26.758 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:26.759 [DEBUG] [Thread-130597] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:26.760 [DEBUG] [Thread-130597] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:26.760 [DEBUG] [Thread-130597] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:26.760 [DEBUG] [Thread-130597] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:12:26.760 [DEBUG] [Thread-130597] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:26.784 [INFO] [Thread-130597] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:26.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:27.591 [DEBUG] [Thread-130597] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:27.591 [DEBUG] [Thread-130597] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:27.591 [DEBUG] [Thread-130597] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:12:27.632 [DEBUG] [Thread-130597] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:27.633 [DEBUG] [Thread-130597] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:27.635 [DEBUG] [Thread-130597] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:27.649 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:27.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:12:27.651 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:12:27.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:12:27.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:27.658 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:12:27.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:27.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:27.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:12:27.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633067 -999.00  +16.70   9.50     43   +4.10 1 1 1 1 1   887    0 11.80 -37.57 ----- 9.5 9.5 212.2 19.2 20.7 -27.6 20.3 -26.3 21.8 -26.5 22.5 -28.1
2025-09-28T17:12:27.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:12:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:12:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633067
2025-09-28T17:12:27.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:12:27.659 [DEBUG] [Thread-130597] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:27.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:12:27.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:12:27.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:12:27.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:12:27.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:12:15', tmtdew=13.92, humidity=39.23, cloud=0.0, wind=17.31, temperature=16.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:11:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:12:27.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-28T17:12:27.756 [DEBUG] [Thread-130600] [transport.py] [_log()] starting thread (client mode): 0x2e360250
2025-09-28T17:12:27.756 [DEBUG] [Thread-130600] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:27.771 [DEBUG] [Thread-130600] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:12:27.771 [INFO] [Thread-130600] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:27.779 [DEBUG] [Thread-130600] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] Compression: none
2025-09-28T17:12:27.780 [DEBUG] [Thread-130600] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:27.840 [DEBUG] [Thread-130600] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:27.841 [DEBUG] [Thread-130600] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:27.841 [DEBUG] [Thread-130600] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:12:27.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:12:27.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:27.896 [DEBUG] [Thread-130600] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:27.897 [DEBUG] [Thread-130600] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:27.897 [DEBUG] [Thread-130600] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:27.897 [DEBUG] [Thread-130600] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:12:27.897 [DEBUG] [Thread-130600] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:27.916 [INFO] [Thread-130600] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:27.917 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:12:27.918 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:28.864 [DEBUG] [Thread-130600] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:28.864 [DEBUG] [Thread-130600] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:28.912 [DEBUG] [Thread-130600] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:28.912 [DEBUG] [Thread-130600] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:28.921 [DEBUG] [Thread-130600] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:28.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:28.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')
2025-09-28T17:12:28.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') -> 00000000
2025-09-28T17:12:28.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:28.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:28.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:28.955 [DEBUG] [Thread-130600] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:38.265 [DEBUG] [Thread-130602 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:38.958 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:12:38.958 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:12:38.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-28T17:12:39.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 12, 15), 13.92, 39.23, 0.0, 17.31, 16.29, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:12:39.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:12:15
2025-09-28T17:12:39.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:12:39.785 [DEBUG] [Thread-130603] [transport.py] [_log()] starting thread (client mode): 0x2e361090
2025-09-28T17:12:39.786 [DEBUG] [Thread-130603] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:39.806 [DEBUG] [Thread-130603] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:12:39.806 [INFO] [Thread-130603] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] Compression: none
2025-09-28T17:12:39.808 [DEBUG] [Thread-130603] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:39.821 [DEBUG] [Thread-130603] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:39.821 [DEBUG] [Thread-130603] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:39.821 [DEBUG] [Thread-130603] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:12:39.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:12:39.822 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:39.823 [DEBUG] [Thread-130603] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:39.823 [DEBUG] [Thread-130603] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:39.823 [DEBUG] [Thread-130603] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:39.823 [DEBUG] [Thread-130603] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:12:39.824 [DEBUG] [Thread-130603] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:39.841 [INFO] [Thread-130603] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:39.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:40.485 [DEBUG] [Thread-130603] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:40.485 [DEBUG] [Thread-130603] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:40.486 [DEBUG] [Thread-130603] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:12:40.526 [DEBUG] [Thread-130603] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:40.527 [DEBUG] [Thread-130603] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:40.530 [DEBUG] [Thread-130603] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:40.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:40.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:12:40.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:12:40.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:12:40.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:40.553 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:12:40.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:40.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:40.554 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:12:40.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633415 -999.00  +16.60  18.66     43   +4.10 1 1 1 1 1   887    0 11.56 -38.96 ----- 18.7 18.7 212.8 24.8 20.6 -27.9 20.2 -26.6 21.7 -26.9 22.4 -28.8
2025-09-28T17:12:40.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:12:40.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:12:40.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633415
2025-09-28T17:12:40.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:12:40.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:12:40.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:12:40.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:12:40.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:12:40.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:12:15', tmtdew=13.92, humidity=39.23, cloud=0.0, wind=17.31, temperature=16.29, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:12:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:12:40.557 [DEBUG] [Thread-130603] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:40.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-28T17:12:40.663 [DEBUG] [Thread-130606] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e40
2025-09-28T17:12:40.663 [DEBUG] [Thread-130606] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:40.679 [DEBUG] [Thread-130606] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:12:40.679 [INFO] [Thread-130606] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:12:40.690 [DEBUG] [Thread-130606] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:40.690 [DEBUG] [Thread-130606] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:12:40.690 [DEBUG] [Thread-130606] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:40.691 [DEBUG] [Thread-130606] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:40.692 [DEBUG] [Thread-130606] [transport.py] [_log()] Compression: none
2025-09-28T17:12:40.692 [DEBUG] [Thread-130606] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:40.745 [DEBUG] [Thread-130606] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:40.745 [DEBUG] [Thread-130606] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:40.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:12:40.746 [DEBUG] [Thread-130606] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:12:40.747 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:40.801 [DEBUG] [Thread-130606] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:40.801 [DEBUG] [Thread-130606] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:40.801 [DEBUG] [Thread-130606] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:40.801 [DEBUG] [Thread-130606] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:12:40.801 [DEBUG] [Thread-130606] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:40.820 [INFO] [Thread-130606] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:40.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-28T17:12:40.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:41.761 [DEBUG] [Thread-130606] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:41.762 [DEBUG] [Thread-130606] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:41.809 [DEBUG] [Thread-130606] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:41.809 [DEBUG] [Thread-130606] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:41.818 [DEBUG] [Thread-130606] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:41.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:41.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-28T17:12:41.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-28T17:12:41.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:41.846 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:41.846 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:41.854 [DEBUG] [Thread-130606] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:51.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:12:51.857 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:12:51.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-28T17:12:52.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 12, 47), 14.15, 38.39, 0.0, 22.94, 16.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:12:52.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:12:47
2025-09-28T17:12:52.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:12:52.698 [DEBUG] [Thread-130608] [transport.py] [_log()] starting thread (client mode): 0x2b9dd8d0
2025-09-28T17:12:52.698 [DEBUG] [Thread-130608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:52.719 [DEBUG] [Thread-130608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:12:52.719 [INFO] [Thread-130608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:12:52.722 [DEBUG] [Thread-130608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:52.722 [DEBUG] [Thread-130608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:12:52.722 [DEBUG] [Thread-130608] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] Compression: none
2025-09-28T17:12:52.723 [DEBUG] [Thread-130608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:52.739 [DEBUG] [Thread-130608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:52.740 [DEBUG] [Thread-130608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:52.740 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:12:52.740 [DEBUG] [Thread-130608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:12:52.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:52.742 [DEBUG] [Thread-130608] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:52.742 [DEBUG] [Thread-130608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:52.742 [DEBUG] [Thread-130608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:52.742 [DEBUG] [Thread-130608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:12:52.742 [DEBUG] [Thread-130608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:52.762 [INFO] [Thread-130608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:52.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:53.309 [DEBUG] [Thread-130610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:12:53.602 [DEBUG] [Thread-130608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:53.602 [DEBUG] [Thread-130608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:53.602 [DEBUG] [Thread-130608] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:12:53.643 [DEBUG] [Thread-130608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:53.643 [DEBUG] [Thread-130608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:53.646 [DEBUG] [Thread-130608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:53.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:53.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:12:53.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:12:53.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:12:53.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:53.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:12:53.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:53.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:53.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:12:53.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633415 -999.00  +16.60  18.66     43   +4.10 1 1 1 1 1   887    0 11.56 -38.96 ----- 18.7 18.7 212.8 24.8 20.6 -27.9 20.2 -26.6 21.7 -26.9 22.4 -28.8
2025-09-28T17:12:53.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:12:53.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:12:53.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633415
2025-09-28T17:12:53.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:12:53.673 [DEBUG] [Thread-130608] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:12:53.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:12:53.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:12:53.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:12:53.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:12:53.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:12:47', tmtdew=14.15, humidity=38.39, cloud=0.0, wind=22.94, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:12:07.056', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:12:53.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-28T17:12:53.769 [DEBUG] [Thread-130612] [transport.py] [_log()] starting thread (client mode): 0x2e361210
2025-09-28T17:12:53.769 [DEBUG] [Thread-130612] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:12:53.783 [DEBUG] [Thread-130612] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:12:53.783 [INFO] [Thread-130612] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:12:53.790 [DEBUG] [Thread-130612] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:12:53.791 [DEBUG] [Thread-130612] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] client lang: <none>
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] server lang: <none>
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] kex follows: False
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] Compression: none
2025-09-28T17:12:53.792 [DEBUG] [Thread-130612] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:12:53.849 [DEBUG] [Thread-130612] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:12:53.849 [DEBUG] [Thread-130612] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:12:53.850 [DEBUG] [Thread-130612] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:12:53.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:12:53.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:12:53.905 [DEBUG] [Thread-130612] [transport.py] [_log()] userauth is OK
2025-09-28T17:12:53.905 [DEBUG] [Thread-130612] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:12:53.905 [DEBUG] [Thread-130612] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:12:53.906 [DEBUG] [Thread-130612] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:12:53.906 [DEBUG] [Thread-130612] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:12:53.925 [INFO] [Thread-130612] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:12:53.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-28T17:12:53.925 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:12:54.888 [DEBUG] [Thread-130612] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:12:54.888 [DEBUG] [Thread-130612] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:12:54.937 [DEBUG] [Thread-130612] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:12:54.937 [DEBUG] [Thread-130612] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:12:54.946 [DEBUG] [Thread-130612] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:12:54.955 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:12:54.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-28T17:12:54.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-28T17:12:54.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:12:54.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:12:54.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:12:54.982 [DEBUG] [Thread-130612] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:04.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:13:04.984 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:13:04.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-28T17:13:05.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 12, 47), 14.15, 38.39, 0.0, 22.94, 16.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:13:05.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:12:47
2025-09-28T17:13:05.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:13:05.828 [DEBUG] [Thread-130614] [transport.py] [_log()] starting thread (client mode): 0x2b9de350
2025-09-28T17:13:05.828 [DEBUG] [Thread-130614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:05.847 [DEBUG] [Thread-130614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:13:05.848 [INFO] [Thread-130614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] Compression: none
2025-09-28T17:13:05.851 [DEBUG] [Thread-130614] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:05.868 [DEBUG] [Thread-130614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:05.868 [DEBUG] [Thread-130614] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:05.869 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:13:05.869 [DEBUG] [Thread-130614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:13:05.870 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:05.872 [DEBUG] [Thread-130614] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:05.872 [DEBUG] [Thread-130614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:05.872 [DEBUG] [Thread-130614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:05.872 [DEBUG] [Thread-130614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:13:05.872 [DEBUG] [Thread-130614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:05.891 [INFO] [Thread-130614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:05.891 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:06.532 [DEBUG] [Thread-130614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:06.533 [DEBUG] [Thread-130614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:06.533 [DEBUG] [Thread-130614] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:13:06.573 [DEBUG] [Thread-130614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:06.573 [DEBUG] [Thread-130614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:06.576 [DEBUG] [Thread-130614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:06.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:06.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:13:06.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:13:06.591 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:13:06.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:06.599 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:13:06.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:06.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633761 -999.00  +16.50  21.48     43   +4.10 1 1 1 1 1   887    0 11.79 -35.08 ----- 21.5 21.5 205.8 25.6 20.6 -27.7 20.1 -28.2 21.6 -27.6 22.4 -28.6
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633761
2025-09-28T17:13:06.600 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:13:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:13:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:13:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:13:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:13:06.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:12:47', tmtdew=14.15, humidity=38.39, cloud=0.0, wind=22.94, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:12:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:13:06.601 [DEBUG] [Thread-130614] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:06.686 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:13:06.698 [DEBUG] [Thread-130617] [transport.py] [_log()] starting thread (client mode): 0x2b9bbaf0
2025-09-28T17:13:06.698 [DEBUG] [Thread-130617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:06.716 [DEBUG] [Thread-130617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:13:06.716 [INFO] [Thread-130617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:13:06.723 [DEBUG] [Thread-130617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:06.723 [DEBUG] [Thread-130617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:06.724 [DEBUG] [Thread-130617] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] Compression: none
2025-09-28T17:13:06.725 [DEBUG] [Thread-130617] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:06.781 [DEBUG] [Thread-130617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:06.782 [DEBUG] [Thread-130617] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:06.783 [DEBUG] [Thread-130617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:13:06.783 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:13:06.784 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:06.837 [DEBUG] [Thread-130617] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:06.838 [DEBUG] [Thread-130617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:06.838 [DEBUG] [Thread-130617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:06.838 [DEBUG] [Thread-130617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:13:06.838 [DEBUG] [Thread-130617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:06.861 [INFO] [Thread-130617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:06.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-28T17:13:06.862 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:07.813 [DEBUG] [Thread-130617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:07.814 [DEBUG] [Thread-130617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:07.861 [DEBUG] [Thread-130617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:07.861 [DEBUG] [Thread-130617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:07.870 [DEBUG] [Thread-130617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:07.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:07.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')
2025-09-28T17:13:07.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-28T17:13:07.896 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:07.897 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:07.897 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:07.905 [DEBUG] [Thread-130617] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:08.352 [DEBUG] [Thread-130619 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:17.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:13:17.908 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:13:17.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-28T17:13:18.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 12, 47), 14.15, 38.39, 0.0, 22.94, 16.36, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:13:18.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:12:47
2025-09-28T17:13:18.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:13:18.729 [DEBUG] [Thread-130620] [transport.py] [_log()] starting thread (client mode): 0x2b94ee60
2025-09-28T17:13:18.729 [DEBUG] [Thread-130620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:18.749 [DEBUG] [Thread-130620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:13:18.749 [INFO] [Thread-130620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] Compression: none
2025-09-28T17:13:18.753 [DEBUG] [Thread-130620] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:18.761 [DEBUG] [Thread-130620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:18.762 [DEBUG] [Thread-130620] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:18.762 [DEBUG] [Thread-130620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:13:18.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:13:18.763 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:18.764 [DEBUG] [Thread-130620] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:18.764 [DEBUG] [Thread-130620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:18.764 [DEBUG] [Thread-130620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:18.764 [DEBUG] [Thread-130620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:13:18.764 [DEBUG] [Thread-130620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:18.782 [INFO] [Thread-130620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:18.782 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:19.512 [DEBUG] [Thread-130620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:19.512 [DEBUG] [Thread-130620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:19.512 [DEBUG] [Thread-130620] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:13:19.552 [DEBUG] [Thread-130620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:19.553 [DEBUG] [Thread-130620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:19.556 [DEBUG] [Thread-130620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:19.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:19.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:13:19.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:13:19.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:13:19.582 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:19.584 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:13:19.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:19.585 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:19.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:13:19.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633761 -999.00  +16.50  21.48     43   +4.10 1 1 1 1 1   887    0 11.79 -35.08 ----- 21.5 21.5 205.8 25.6 20.6 -27.7 20.1 -28.2 21.6 -27.6 22.4 -28.6
2025-09-28T17:13:19.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:13:19.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:13:19.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633761
2025-09-28T17:13:19.586 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:13:19.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:13:19.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:13:19.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:13:19.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:13:19.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:12:47', tmtdew=14.15, humidity=38.39, cloud=0.0, wind=22.94, temperature=16.36, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:12:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:13:19.588 [DEBUG] [Thread-130620] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:19.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-28T17:13:19.679 [DEBUG] [Thread-130623] [transport.py] [_log()] starting thread (client mode): 0x2b9bbeb0
2025-09-28T17:13:19.679 [DEBUG] [Thread-130623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:19.693 [DEBUG] [Thread-130623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:13:19.693 [INFO] [Thread-130623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:19.700 [DEBUG] [Thread-130623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] Compression: none
2025-09-28T17:13:19.701 [DEBUG] [Thread-130623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:19.755 [DEBUG] [Thread-130623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:19.756 [DEBUG] [Thread-130623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:19.756 [DEBUG] [Thread-130623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:13:19.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:13:19.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:19.818 [DEBUG] [Thread-130623] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:19.818 [DEBUG] [Thread-130623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:19.818 [DEBUG] [Thread-130623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:19.818 [DEBUG] [Thread-130623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:13:19.818 [DEBUG] [Thread-130623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:19.835 [INFO] [Thread-130623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:19.835 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:13:19.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:20.792 [DEBUG] [Thread-130623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:20.792 [DEBUG] [Thread-130623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:20.840 [DEBUG] [Thread-130623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:20.840 [DEBUG] [Thread-130623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:20.848 [DEBUG] [Thread-130623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:20.856 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13: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-28T17:13:20.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-28T17:13:20.872 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:20.872 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:20.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:20.880 [DEBUG] [Thread-130623] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:23.216 [DEBUG] [Thread-130625 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:23.392 [DEBUG] [Thread-130626 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:26.883 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:26.884 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:30.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:13:30.883 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:13:30.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-28T17:13:31.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 13, 19), 14.17, 38.33, 0.0, 25.04, 16.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:13:31.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:13:19
2025-09-28T17:13:31.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:13:31.709 [DEBUG] [Thread-130627] [transport.py] [_log()] starting thread (client mode): 0x2b9dd9c0
2025-09-28T17:13:31.709 [DEBUG] [Thread-130627] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:31.728 [DEBUG] [Thread-130627] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:13:31.728 [INFO] [Thread-130627] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:13:31.731 [DEBUG] [Thread-130627] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:31.731 [DEBUG] [Thread-130627] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] Compression: none
2025-09-28T17:13:31.732 [DEBUG] [Thread-130627] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:31.749 [DEBUG] [Thread-130627] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:31.750 [DEBUG] [Thread-130627] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:31.750 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:13:31.751 [DEBUG] [Thread-130627] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:13:31.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:31.752 [DEBUG] [Thread-130627] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:31.753 [DEBUG] [Thread-130627] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:31.753 [DEBUG] [Thread-130627] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:31.753 [DEBUG] [Thread-130627] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:13:31.753 [DEBUG] [Thread-130627] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:31.767 [INFO] [Thread-130627] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:31.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:32.604 [DEBUG] [Thread-130627] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:32.604 [DEBUG] [Thread-130627] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:32.604 [DEBUG] [Thread-130627] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:13:32.645 [DEBUG] [Thread-130627] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:32.645 [DEBUG] [Thread-130627] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:32.647 [DEBUG] [Thread-130627] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:32.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:32.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:13:32.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:13:32.661 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:13:32.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:32.667 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:13:32.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:32.667 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:32.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:13:32.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.633761 -999.00  +16.50  21.48     43   +4.10 1 1 1 1 1   887    0 11.79 -35.08 ----- 21.5 21.5 205.8 25.6 20.6 -27.7 20.1 -28.2 21.6 -27.6 22.4 -28.6
2025-09-28T17:13:32.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:13:32.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:13:32.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.633761
2025-09-28T17:13:32.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:13:32.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:13:32.669 [DEBUG] [Thread-130627] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:32.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:13:32.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:13:32.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:13:32.669 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:13:19', tmtdew=14.17, humidity=38.33, cloud=0.0, wind=25.04, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:12:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:13:32.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-28T17:13:32.761 [DEBUG] [Thread-130630] [transport.py] [_log()] starting thread (client mode): 0x2e360160
2025-09-28T17:13:32.762 [DEBUG] [Thread-130630] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:32.777 [DEBUG] [Thread-130630] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:13:32.777 [INFO] [Thread-130630] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:13:32.784 [DEBUG] [Thread-130630] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:32.785 [DEBUG] [Thread-130630] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] Compression: none
2025-09-28T17:13:32.786 [DEBUG] [Thread-130630] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:32.842 [DEBUG] [Thread-130630] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:32.842 [DEBUG] [Thread-130630] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:32.843 [DEBUG] [Thread-130630] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:13:32.843 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:13:32.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:32.898 [DEBUG] [Thread-130630] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:32.898 [DEBUG] [Thread-130630] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:32.898 [DEBUG] [Thread-130630] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:32.898 [DEBUG] [Thread-130630] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:13:32.898 [DEBUG] [Thread-130630] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:32.918 [INFO] [Thread-130630] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:32.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:13:32.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:33.847 [DEBUG] [Thread-130630] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:33.847 [DEBUG] [Thread-130630] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:33.895 [DEBUG] [Thread-130630] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:33.895 [DEBUG] [Thread-130630] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:33.904 [DEBUG] [Thread-130630] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:33.913 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:33.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')
2025-09-28T17:13:33.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-28T17:13:33.930 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:33.931 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:33.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:33.939 [DEBUG] [Thread-130630] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:38.425 [DEBUG] [Thread-130632 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:43.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:13:43.942 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:13:43.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-28T17:13:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 13, 19), 14.17, 38.33, 0.0, 25.04, 16.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:13:44.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:13:19
2025-09-28T17:13:44.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:13:44.760 [DEBUG] [Thread-130633] [transport.py] [_log()] starting thread (client mode): 0x2b9ba590
2025-09-28T17:13:44.760 [DEBUG] [Thread-130633] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:44.780 [DEBUG] [Thread-130633] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:13:44.780 [INFO] [Thread-130633] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:44.784 [DEBUG] [Thread-130633] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] Compression: none
2025-09-28T17:13:44.785 [DEBUG] [Thread-130633] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:44.802 [DEBUG] [Thread-130633] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:44.803 [DEBUG] [Thread-130633] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:44.803 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:13:44.804 [DEBUG] [Thread-130633] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:13:44.804 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:44.805 [DEBUG] [Thread-130633] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:44.806 [DEBUG] [Thread-130633] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:44.806 [DEBUG] [Thread-130633] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:44.806 [DEBUG] [Thread-130633] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:13:44.806 [DEBUG] [Thread-130633] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:44.824 [INFO] [Thread-130633] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:44.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:45.443 [DEBUG] [Thread-130633] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:45.444 [DEBUG] [Thread-130633] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:45.444 [DEBUG] [Thread-130633] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:13:45.484 [DEBUG] [Thread-130633] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:45.484 [DEBUG] [Thread-130633] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:45.487 [DEBUG] [Thread-130633] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:45.500 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:45.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:13:45.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:13:45.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:13:45.509 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:45.511 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:13:45.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.634109 -999.00  +16.50   8.94     43   +4.00 1 1 1 1 1   887    0 11.82 -32.04 ----- 8.9 8.9 209.1 25.4 20.5 -28.0 20.1 -27.7 21.6 -26.8 22.3 -28.4
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.634109
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:13:45.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:13:45.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:13:45.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:13:45.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:13:45.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:13:19', tmtdew=14.17, humidity=38.33, cloud=0.0, wind=25.04, temperature=16.31, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:13:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:13:45.512 [DEBUG] [Thread-130633] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:45.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-28T17:13:45.602 [DEBUG] [Thread-130636] [transport.py] [_log()] starting thread (client mode): 0x2b9dce20
2025-09-28T17:13:45.602 [DEBUG] [Thread-130636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:45.616 [DEBUG] [Thread-130636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:13:45.617 [INFO] [Thread-130636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:13:45.624 [DEBUG] [Thread-130636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:45.624 [DEBUG] [Thread-130636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:13:45.624 [DEBUG] [Thread-130636] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:45.624 [DEBUG] [Thread-130636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:45.625 [DEBUG] [Thread-130636] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] Compression: none
2025-09-28T17:13:45.626 [DEBUG] [Thread-130636] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:45.682 [DEBUG] [Thread-130636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:45.683 [DEBUG] [Thread-130636] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:45.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:13:45.684 [DEBUG] [Thread-130636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:13:45.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:45.738 [DEBUG] [Thread-130636] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:45.738 [DEBUG] [Thread-130636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:45.738 [DEBUG] [Thread-130636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:45.739 [DEBUG] [Thread-130636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:13:45.739 [DEBUG] [Thread-130636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:45.758 [INFO] [Thread-130636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:45.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-28T17:13:45.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:46.718 [DEBUG] [Thread-130636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:46.718 [DEBUG] [Thread-130636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:46.766 [DEBUG] [Thread-130636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:46.767 [DEBUG] [Thread-130636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:46.776 [DEBUG] [Thread-130636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:46.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13: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-28T17:13:46.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-28T17:13:46.802 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:46.802 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:46.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:46.811 [DEBUG] [Thread-130636] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:53.467 [DEBUG] [Thread-130638 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:13:56.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:13:56.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:13: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-28T17:13:57.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 13, 51), 14.02, 39.06, 0.0, 18.84, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:13:57.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:13:51
2025-09-28T17:13:57.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:13:57.635 [DEBUG] [Thread-130639] [transport.py] [_log()] starting thread (client mode): 0x2b9de260
2025-09-28T17:13:57.636 [DEBUG] [Thread-130639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:57.655 [DEBUG] [Thread-130639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:13:57.655 [INFO] [Thread-130639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:57.659 [DEBUG] [Thread-130639] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] Compression: none
2025-09-28T17:13:57.660 [DEBUG] [Thread-130639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:57.675 [DEBUG] [Thread-130639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:57.676 [DEBUG] [Thread-130639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:57.676 [DEBUG] [Thread-130639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:13:57.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:13:57.677 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:57.678 [DEBUG] [Thread-130639] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:57.679 [DEBUG] [Thread-130639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:57.679 [DEBUG] [Thread-130639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:57.679 [DEBUG] [Thread-130639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:13:57.679 [DEBUG] [Thread-130639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:57.696 [INFO] [Thread-130639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:57.697 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:58.511 [DEBUG] [Thread-130639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:58.511 [DEBUG] [Thread-130639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:58.511 [DEBUG] [Thread-130639] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:13:58.552 [DEBUG] [Thread-130639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:58.553 [DEBUG] [Thread-130639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:58.555 [DEBUG] [Thread-130639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:58.567 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:58.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:13:58.569 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:13:58.570 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:13:58.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:58.577 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:13:58.577 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.634109 -999.00  +16.50   8.94     43   +4.00 1 1 1 1 1   887    0 11.82 -32.04 ----- 8.9 8.9 209.1 25.4 20.5 -28.0 20.1 -27.7 21.6 -26.8 22.3 -28.4
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:13:58.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.634109
2025-09-28T17:13:58.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:13:58.579 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:13:58.580 [DEBUG] [Thread-130639] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:13:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:13:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:13:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:13:58.580 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:13:51', tmtdew=14.02, humidity=39.06, cloud=0.0, wind=18.84, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:13:07.018', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:13:58.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-28T17:13:58.672 [DEBUG] [Thread-130642] [transport.py] [_log()] starting thread (client mode): 0x2e362ec0
2025-09-28T17:13:58.672 [DEBUG] [Thread-130642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:13:58.687 [DEBUG] [Thread-130642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:13:58.687 [INFO] [Thread-130642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:13:58.695 [DEBUG] [Thread-130642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:13:58.695 [DEBUG] [Thread-130642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:13:58.695 [DEBUG] [Thread-130642] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] client lang: <none>
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] server lang: <none>
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] kex follows: False
2025-09-28T17:13:58.696 [DEBUG] [Thread-130642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] Compression: none
2025-09-28T17:13:58.697 [DEBUG] [Thread-130642] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:13:58.754 [DEBUG] [Thread-130642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:13:58.754 [DEBUG] [Thread-130642] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:13:58.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:13:58.755 [DEBUG] [Thread-130642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:13:58.755 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:13:58.811 [DEBUG] [Thread-130642] [transport.py] [_log()] userauth is OK
2025-09-28T17:13:58.811 [DEBUG] [Thread-130642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:13:58.811 [DEBUG] [Thread-130642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:13:58.812 [DEBUG] [Thread-130642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:13:58.812 [DEBUG] [Thread-130642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:13:58.830 [INFO] [Thread-130642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:13:58.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-28T17:13:58.830 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:13:59.769 [DEBUG] [Thread-130642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:13:59.769 [DEBUG] [Thread-130642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:13:59.816 [DEBUG] [Thread-130642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:13:59.816 [DEBUG] [Thread-130642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:13:59.825 [DEBUG] [Thread-130642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:13:59.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:13:59.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T17:13:59.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') -> 00000000
2025-09-28T17:13:59.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:13:59.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:13:59.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:13:59.859 [DEBUG] [Thread-130642] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:08.504 [DEBUG] [Thread-130644 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:09.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:14:09.862 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:14:09.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-28T17:14:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 13, 51), 14.02, 39.06, 0.0, 18.84, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:14:10.443 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:13:51
2025-09-28T17:14:10.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:14:10.698 [DEBUG] [Thread-130645] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-28T17:14:10.698 [DEBUG] [Thread-130645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:10.718 [DEBUG] [Thread-130645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:14:10.719 [INFO] [Thread-130645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] Compression: none
2025-09-28T17:14:10.721 [DEBUG] [Thread-130645] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:10.732 [DEBUG] [Thread-130645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:10.733 [DEBUG] [Thread-130645] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:10.733 [DEBUG] [Thread-130645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:14:10.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:14:10.734 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:10.735 [DEBUG] [Thread-130645] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:10.735 [DEBUG] [Thread-130645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:10.736 [DEBUG] [Thread-130645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:10.736 [DEBUG] [Thread-130645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:14:10.736 [DEBUG] [Thread-130645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:10.753 [INFO] [Thread-130645] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:10.754 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:11.426 [DEBUG] [Thread-130645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:11.426 [DEBUG] [Thread-130645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:11.426 [DEBUG] [Thread-130645] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:14:11.467 [DEBUG] [Thread-130645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:11.468 [DEBUG] [Thread-130645] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:11.471 [DEBUG] [Thread-130645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:11.477 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:11.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:14:11.479 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:14:11.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:14:11.486 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:11.488 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:14:11.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:11.488 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:11.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:14:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.634803 -999.00  +16.50  14.72     43   +4.00 1 1 1 1 1   887    0 11.67 -32.41 ----- 14.7 14.7 194.4 20.4 20.5 -27.4 20.0 -28.3 21.6 -26.3 22.3 -28.3
2025-09-28T17:14:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:14:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:14:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.634803
2025-09-28T17:14:11.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:14:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:14:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:14:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:14:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:14:11.490 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:13:51', tmtdew=14.02, humidity=39.06, cloud=0.0, wind=18.84, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:14:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:14:11.491 [DEBUG] [Thread-130645] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:11.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-28T17:14:11.589 [DEBUG] [Thread-130648] [transport.py] [_log()] starting thread (client mode): 0x2e3c2380
2025-09-28T17:14:11.589 [DEBUG] [Thread-130648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:11.604 [DEBUG] [Thread-130648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:14:11.604 [INFO] [Thread-130648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:14:11.611 [DEBUG] [Thread-130648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:11.611 [DEBUG] [Thread-130648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] Compression: none
2025-09-28T17:14:11.612 [DEBUG] [Thread-130648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:11.670 [DEBUG] [Thread-130648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:11.671 [DEBUG] [Thread-130648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:11.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:14:11.672 [DEBUG] [Thread-130648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:14:11.673 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:11.726 [DEBUG] [Thread-130648] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:11.726 [DEBUG] [Thread-130648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:11.727 [DEBUG] [Thread-130648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:11.727 [DEBUG] [Thread-130648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:14:11.727 [DEBUG] [Thread-130648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:11.749 [INFO] [Thread-130648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:11.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-28T17:14:11.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:12.680 [DEBUG] [Thread-130648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:12.680 [DEBUG] [Thread-130648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:12.728 [DEBUG] [Thread-130648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:12.728 [DEBUG] [Thread-130648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:12.737 [DEBUG] [Thread-130648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:12.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:12.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-28T17:14:12.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-28T17:14:12.765 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:12.765 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:12.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:12.773 [DEBUG] [Thread-130648] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:22.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:14:22.776 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:14:22.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:14:23.266 [DEBUG] [Thread-130650 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:23.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 13, 51), 14.02, 39.06, 0.0, 18.84, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:14:23.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:13:51
2025-09-28T17:14:23.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:14:23.555 [DEBUG] [Thread-130651 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:23.617 [DEBUG] [Thread-130652] [transport.py] [_log()] starting thread (client mode): 0x2b91ed70
2025-09-28T17:14:23.617 [DEBUG] [Thread-130652] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:23.652 [DEBUG] [Thread-130652] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:14:23.652 [INFO] [Thread-130652] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] Compression: none
2025-09-28T17:14:23.654 [DEBUG] [Thread-130652] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:23.661 [DEBUG] [Thread-130652] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:23.661 [DEBUG] [Thread-130652] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:14:23.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:14:23.662 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:14:23.662 [DEBUG] [Thread-130652] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:23.671 [INFO] [Thread-130652] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:23.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:24.471 [DEBUG] [Thread-130652] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:24.471 [DEBUG] [Thread-130652] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:24.471 [DEBUG] [Thread-130652] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:14:24.512 [DEBUG] [Thread-130652] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:24.512 [DEBUG] [Thread-130652] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:24.514 [DEBUG] [Thread-130652] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:24.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:24.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:14:24.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:14:24.527 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:14:24.530 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:24.531 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:14:24.531 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.634803 -999.00  +16.50  14.72     43   +4.00 1 1 1 1 1   887    0 11.67 -32.41 ----- 14.7 14.7 194.4 20.4 20.5 -27.4 20.0 -28.3 21.6 -26.3 22.3 -28.3
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.634803
2025-09-28T17:14:24.531 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:14:24.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:14:24.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:14:24.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:14:24.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:14:24.532 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:13:51', tmtdew=14.02, humidity=39.06, cloud=0.0, wind=18.84, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:14:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:14:24.532 [DEBUG] [Thread-130652] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:24.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-28T17:14:24.616 [DEBUG] [Thread-130655] [transport.py] [_log()] starting thread (client mode): 0x2b91ef80
2025-09-28T17:14:24.616 [DEBUG] [Thread-130655] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:24.631 [DEBUG] [Thread-130655] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:14:24.631 [INFO] [Thread-130655] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:24.638 [DEBUG] [Thread-130655] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] Compression: none
2025-09-28T17:14:24.639 [DEBUG] [Thread-130655] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:24.697 [DEBUG] [Thread-130655] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:24.697 [DEBUG] [Thread-130655] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:24.697 [DEBUG] [Thread-130655] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:14:24.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:14:24.697 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:24.754 [DEBUG] [Thread-130655] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:24.754 [DEBUG] [Thread-130655] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:24.754 [DEBUG] [Thread-130655] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:24.754 [DEBUG] [Thread-130655] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:14:24.754 [DEBUG] [Thread-130655] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:24.768 [INFO] [Thread-130655] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:24.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-28T17:14:24.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:25.746 [DEBUG] [Thread-130655] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:25.747 [DEBUG] [Thread-130655] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:25.795 [DEBUG] [Thread-130655] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:25.795 [DEBUG] [Thread-130655] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:25.804 [DEBUG] [Thread-130655] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:25.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:25.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')
2025-09-28T17:14:25.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-28T17:14:25.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:25.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:25.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:25.836 [DEBUG] [Thread-130655] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:27.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:27.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:35.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:14:35.838 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:14:35.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-28T17:14:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 14, 23), 14.1, 38.88, 0.0, 21.37, 16.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:14:36.406 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:14:23
2025-09-28T17:14:36.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:14:36.666 [DEBUG] [Thread-130657] [transport.py] [_log()] starting thread (client mode): 0x2b91e5f0
2025-09-28T17:14:36.667 [DEBUG] [Thread-130657] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:36.691 [DEBUG] [Thread-130657] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:14:36.692 [INFO] [Thread-130657] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:36.695 [DEBUG] [Thread-130657] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:36.696 [DEBUG] [Thread-130657] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:36.697 [DEBUG] [Thread-130657] [transport.py] [_log()] Compression: none
2025-09-28T17:14:36.697 [DEBUG] [Thread-130657] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:36.717 [DEBUG] [Thread-130657] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:36.717 [DEBUG] [Thread-130657] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:36.718 [DEBUG] [Thread-130657] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:14:36.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:14:36.719 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:36.720 [DEBUG] [Thread-130657] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:36.720 [DEBUG] [Thread-130657] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:36.720 [DEBUG] [Thread-130657] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:36.720 [DEBUG] [Thread-130657] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:14:36.720 [DEBUG] [Thread-130657] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:36.739 [INFO] [Thread-130657] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:36.740 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:37.383 [DEBUG] [Thread-130657] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:37.384 [DEBUG] [Thread-130657] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:37.384 [DEBUG] [Thread-130657] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:14:37.425 [DEBUG] [Thread-130657] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:37.425 [DEBUG] [Thread-130657] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:37.428 [DEBUG] [Thread-130657] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:37.439 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:37.439 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:14:37.440 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:14:37.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:14:37.447 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:37.449 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:14:37.449 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:37.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:37.449 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:14:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.634803 -999.00  +16.50  14.72     43   +4.00 1 1 1 1 1   887    0 11.67 -32.41 ----- 14.7 14.7 194.4 20.4 20.5 -27.4 20.0 -28.3 21.6 -26.3 22.3 -28.3
2025-09-28T17:14:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:14:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:14:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.634803
2025-09-28T17:14:37.450 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:14:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:14:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:14:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:14:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:14:37.451 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:14:23', tmtdew=14.1, humidity=38.88, cloud=0.0, wind=21.37, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:14:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:14:37.451 [DEBUG] [Thread-130657] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:37.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-28T17:14:37.549 [DEBUG] [Thread-130660] [transport.py] [_log()] starting thread (client mode): 0x2b9dc5e0
2025-09-28T17:14:37.549 [DEBUG] [Thread-130660] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:37.564 [DEBUG] [Thread-130660] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:14:37.564 [INFO] [Thread-130660] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:14:37.572 [DEBUG] [Thread-130660] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:37.572 [DEBUG] [Thread-130660] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:14:37.572 [DEBUG] [Thread-130660] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:37.572 [DEBUG] [Thread-130660] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] Compression: none
2025-09-28T17:14:37.573 [DEBUG] [Thread-130660] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:37.630 [DEBUG] [Thread-130660] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:37.631 [DEBUG] [Thread-130660] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:37.631 [DEBUG] [Thread-130660] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:14:37.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:14:37.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:37.687 [DEBUG] [Thread-130660] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:37.687 [DEBUG] [Thread-130660] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:37.687 [DEBUG] [Thread-130660] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:37.687 [DEBUG] [Thread-130660] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:14:37.687 [DEBUG] [Thread-130660] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:37.706 [INFO] [Thread-130660] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:37.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-28T17:14:37.707 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:38.588 [DEBUG] [Thread-130662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:14:38.660 [DEBUG] [Thread-130660] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:38.660 [DEBUG] [Thread-130660] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:38.709 [DEBUG] [Thread-130660] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:38.709 [DEBUG] [Thread-130660] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:38.717 [DEBUG] [Thread-130660] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:38.725 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:38.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-28T17:14:38.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-28T17:14:38.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:38.741 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:38.741 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:38.749 [DEBUG] [Thread-130660] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:48.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:14:48.750 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:14:48.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-28T17:14:49.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 14, 23), 14.1, 38.88, 0.0, 21.37, 16.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:14:49.331 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:14:23
2025-09-28T17:14:49.441 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:14:49.591 [DEBUG] [Thread-130663] [transport.py] [_log()] starting thread (client mode): 0x2e3c2170
2025-09-28T17:14:49.591 [DEBUG] [Thread-130663] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:49.610 [DEBUG] [Thread-130663] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:14:49.610 [INFO] [Thread-130663] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:49.612 [DEBUG] [Thread-130663] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] Compression: none
2025-09-28T17:14:49.613 [DEBUG] [Thread-130663] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:49.630 [DEBUG] [Thread-130663] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:49.631 [DEBUG] [Thread-130663] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:49.631 [DEBUG] [Thread-130663] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:14:49.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:14:49.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:49.633 [DEBUG] [Thread-130663] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:49.634 [DEBUG] [Thread-130663] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:49.634 [DEBUG] [Thread-130663] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:49.634 [DEBUG] [Thread-130663] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:14:49.634 [DEBUG] [Thread-130663] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:49.657 [INFO] [Thread-130663] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:49.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:50.319 [DEBUG] [Thread-130663] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:50.319 [DEBUG] [Thread-130663] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:50.319 [DEBUG] [Thread-130663] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:14:50.360 [DEBUG] [Thread-130663] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:50.360 [DEBUG] [Thread-130663] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:50.363 [DEBUG] [Thread-130663] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:50.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:50.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:14:50.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:14:50.378 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:14:50.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:50.384 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:14:50.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:50.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.635150 -999.00  +16.50  11.22     43   +4.00 1 1 1 1 1   887    0 11.86 -27.65 ----- 11.2 11.2 197.8 24.4 20.5 -28.0 20.1 -26.3 21.6 -26.7 22.2 -28.6
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.635150
2025-09-28T17:14:50.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:14:50.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:14:50.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:14:50.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:14:50.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:14:50.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:14:23', tmtdew=14.1, humidity=38.88, cloud=0.0, wind=21.37, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:14:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:14:50.386 [DEBUG] [Thread-130663] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:50.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-28T17:14:50.480 [DEBUG] [Thread-130666] [transport.py] [_log()] starting thread (client mode): 0x2e3c3130
2025-09-28T17:14:50.480 [DEBUG] [Thread-130666] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:14:50.494 [DEBUG] [Thread-130666] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:14:50.494 [INFO] [Thread-130666] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:14:50.502 [DEBUG] [Thread-130666] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:14:50.502 [DEBUG] [Thread-130666] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:14:50.502 [DEBUG] [Thread-130666] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:14:50.502 [DEBUG] [Thread-130666] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] client lang: <none>
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] server lang: <none>
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] kex follows: False
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] Compression: none
2025-09-28T17:14:50.503 [DEBUG] [Thread-130666] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:14:50.558 [DEBUG] [Thread-130666] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:14:50.558 [DEBUG] [Thread-130666] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:14:50.558 [DEBUG] [Thread-130666] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:14:50.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:14:50.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:14:50.615 [DEBUG] [Thread-130666] [transport.py] [_log()] userauth is OK
2025-09-28T17:14:50.615 [DEBUG] [Thread-130666] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:14:50.615 [DEBUG] [Thread-130666] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:14:50.615 [DEBUG] [Thread-130666] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:14:50.615 [DEBUG] [Thread-130666] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:14:50.638 [INFO] [Thread-130666] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:14:50.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-28T17:14:50.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:14:51.597 [DEBUG] [Thread-130666] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:14:51.597 [DEBUG] [Thread-130666] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:14:51.646 [DEBUG] [Thread-130666] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:14:51.646 [DEBUG] [Thread-130666] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:14:51.654 [DEBUG] [Thread-130666] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:14:51.662 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:14:51.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-28T17:14:51.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-28T17:14:51.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:14:51.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:14:51.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:14:51.687 [DEBUG] [Thread-130666] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:14:53.643 [DEBUG] [Thread-130668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:01.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:15:01.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:15:01.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-28T17:15:02.269 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 14, 55), 14.15, 38.26, 0.0, 19.99, 16.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:15:02.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:14:55
2025-09-28T17:15:02.380 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:15:02.529 [DEBUG] [Thread-130669] [transport.py] [_log()] starting thread (client mode): 0x2e3c2110
2025-09-28T17:15:02.530 [DEBUG] [Thread-130669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:15:02.547 [DEBUG] [Thread-130669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:15:02.547 [INFO] [Thread-130669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:15:02.550 [DEBUG] [Thread-130669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:15:02.550 [DEBUG] [Thread-130669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:15:02.550 [DEBUG] [Thread-130669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:15:02.550 [DEBUG] [Thread-130669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] client lang: <none>
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] server lang: <none>
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] kex follows: False
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] Compression: none
2025-09-28T17:15:02.551 [DEBUG] [Thread-130669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:15:02.569 [DEBUG] [Thread-130669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:15:02.570 [DEBUG] [Thread-130669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:15:02.571 [DEBUG] [Thread-130669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:15:02.571 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:15:02.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:15:02.573 [DEBUG] [Thread-130669] [transport.py] [_log()] userauth is OK
2025-09-28T17:15:02.573 [DEBUG] [Thread-130669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:15:02.573 [DEBUG] [Thread-130669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:15:02.573 [DEBUG] [Thread-130669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:15:02.573 [DEBUG] [Thread-130669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:15:02.592 [INFO] [Thread-130669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:15:02.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:15:03.250 [DEBUG] [Thread-130669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:15:03.250 [DEBUG] [Thread-130669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:15:03.250 [DEBUG] [Thread-130669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:15:03.291 [DEBUG] [Thread-130669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:15:03.291 [DEBUG] [Thread-130669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:15:03.294 [DEBUG] [Thread-130669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:15:03.305 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:15:03.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:15:03.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:15:03.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:15:03.309 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:15:03.310 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:15:03.310 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.635150 -999.00  +16.50  11.22     43   +4.00 1 1 1 1 1   887    0 11.86 -27.65 ----- 11.2 11.2 197.8 24.4 20.5 -28.0 20.1 -26.3 21.6 -26.7 22.2 -28.6
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.635150
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:15:03.310 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:15:03.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:14:55', tmtdew=14.15, humidity=38.26, cloud=0.0, wind=19.99, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:14:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:15:03.311 [DEBUG] [Thread-130669] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:15:03.385 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:15:03.396 [DEBUG] [Thread-130672] [transport.py] [_log()] starting thread (client mode): 0x2b9ddea0
2025-09-28T17:15:03.396 [DEBUG] [Thread-130672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:15:03.411 [DEBUG] [Thread-130672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:15:03.411 [INFO] [Thread-130672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] client lang: <none>
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] server lang: <none>
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] kex follows: False
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] Compression: none
2025-09-28T17:15:03.418 [DEBUG] [Thread-130672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:15:03.474 [DEBUG] [Thread-130672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:15:03.474 [DEBUG] [Thread-130672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:15:03.474 [DEBUG] [Thread-130672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:15:03.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:15:03.474 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:15:03.531 [DEBUG] [Thread-130672] [transport.py] [_log()] userauth is OK
2025-09-28T17:15:03.531 [DEBUG] [Thread-130672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:15:03.531 [DEBUG] [Thread-130672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:15:03.531 [DEBUG] [Thread-130672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:15:03.531 [DEBUG] [Thread-130672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:15:03.550 [INFO] [Thread-130672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:15:03.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-28T17:15:03.551 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:15:04.571 [DEBUG] [Thread-130672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:15:04.571 [DEBUG] [Thread-130672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:15:04.619 [DEBUG] [Thread-130672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:15:04.619 [DEBUG] [Thread-130672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:15:04.627 [DEBUG] [Thread-130672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:15:04.635 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:15:04.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-28T17:15: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') -> 00000000
2025-09-28T17:15:04.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:15:04.654 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:15:04.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:15:04.662 [DEBUG] [Thread-130672] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:15:08.684 [DEBUG] [Thread-130674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:14.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:15:14.663 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:15:14.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:15:15.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 14, 55), 14.15, 38.26, 0.0, 19.99, 16.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:15:15.223 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:14:55
2025-09-28T17:15:15.333 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:15:15.479 [DEBUG] [Thread-130675] [transport.py] [_log()] starting thread (client mode): 0x2b94eda0
2025-09-28T17:15:15.480 [DEBUG] [Thread-130675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:15:15.499 [DEBUG] [Thread-130675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:15:15.499 [INFO] [Thread-130675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] client lang: <none>
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] server lang: <none>
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] kex follows: False
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] Compression: none
2025-09-28T17:15:15.502 [DEBUG] [Thread-130675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:15:15.510 [DEBUG] [Thread-130675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:15:15.510 [DEBUG] [Thread-130675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:15:15.511 [DEBUG] [Thread-130675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:15:15.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:15:15.511 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:15:15.512 [DEBUG] [Thread-130675] [transport.py] [_log()] userauth is OK
2025-09-28T17:15:15.512 [DEBUG] [Thread-130675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:15:15.512 [DEBUG] [Thread-130675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:15:15.513 [DEBUG] [Thread-130675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:15:15.513 [DEBUG] [Thread-130675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:15:15.529 [INFO] [Thread-130675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:15:15.530 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:15:16.154 [DEBUG] [Thread-130675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:15:16.154 [DEBUG] [Thread-130675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:15:16.155 [DEBUG] [Thread-130675] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:15:16.195 [DEBUG] [Thread-130675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:15:16.195 [DEBUG] [Thread-130675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:15:16.199 [DEBUG] [Thread-130675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:15:16.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:15:16.211 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:15:16.212 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:15:16.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:15:16.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:15:16.220 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:15:16.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:15:16.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.635497 -999.00  +16.60  12.75     43   +4.00 1 1 1 1 1   887    0 11.88 -23.39 ----- 12.8 12.8 194.8 16.4 20.5 -27.6 20.1 -26.5 21.6 -26.6 22.4 -27.3
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.635497
2025-09-28T17:15:16.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:15:16.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:15:16.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:15:16.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:15:16.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:15:16.222 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:14:55', tmtdew=14.15, humidity=38.26, cloud=0.0, wind=19.99, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:15:06.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:15:16.222 [DEBUG] [Thread-130675] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:15:16.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-28T17:15:16.316 [DEBUG] [Thread-130678] [transport.py] [_log()] starting thread (client mode): 0x2e3c1240
2025-09-28T17:15:16.316 [DEBUG] [Thread-130678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:15:16.331 [DEBUG] [Thread-130678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:15:16.331 [INFO] [Thread-130678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:15:16.338 [DEBUG] [Thread-130678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:15:16.338 [DEBUG] [Thread-130678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] client lang: <none>
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] server lang: <none>
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] kex follows: False
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] Compression: none
2025-09-28T17:15:16.339 [DEBUG] [Thread-130678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:15:16.395 [DEBUG] [Thread-130678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:15:16.395 [DEBUG] [Thread-130678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:15:16.396 [DEBUG] [Thread-130678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:15:16.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:15:16.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:15:16.451 [DEBUG] [Thread-130678] [transport.py] [_log()] userauth is OK
2025-09-28T17:15:16.451 [DEBUG] [Thread-130678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:15:16.451 [DEBUG] [Thread-130678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:15:16.451 [DEBUG] [Thread-130678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:15:16.451 [DEBUG] [Thread-130678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:15:16.468 [INFO] [Thread-130678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:15:16.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-28T17:15:16.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:15:17.433 [DEBUG] [Thread-130678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:15:17.434 [DEBUG] [Thread-130678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:15:17.481 [DEBUG] [Thread-130678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:15:17.482 [DEBUG] [Thread-130678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:15:17.491 [DEBUG] [Thread-130678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:15:17.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:15:17.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')
2025-09-28T17:15:17.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-28T17:15:17.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:15:17.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:15:17.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:15:17.525 [DEBUG] [Thread-130678] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:15:23.320 [DEBUG] [Thread-130680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:23.727 [DEBUG] [Thread-130681 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:27.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:27.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:27.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:15:27.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:15:27.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-28T17:15:28.133 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 14, 55), 14.15, 38.26, 0.0, 19.99, 16.26, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:15:28.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:14:55
2025-09-28T17:15:28.253 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:15:28.405 [DEBUG] [Thread-130682] [transport.py] [_log()] starting thread (client mode): 0x2e3c2ec0
2025-09-28T17:15:28.405 [DEBUG] [Thread-130682] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:15:28.426 [DEBUG] [Thread-130682] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:15:28.426 [INFO] [Thread-130682] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] client lang: <none>
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] server lang: <none>
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] kex follows: False
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] Compression: none
2025-09-28T17:15:28.429 [DEBUG] [Thread-130682] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:15:28.445 [DEBUG] [Thread-130682] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:15:28.445 [DEBUG] [Thread-130682] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:15:28.445 [DEBUG] [Thread-130682] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:15:28.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:15:28.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:15:28.446 [DEBUG] [Thread-130682] [transport.py] [_log()] userauth is OK
2025-09-28T17:15:28.446 [DEBUG] [Thread-130682] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:15:28.446 [DEBUG] [Thread-130682] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:15:28.446 [DEBUG] [Thread-130682] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:15:28.446 [DEBUG] [Thread-130682] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:15:28.456 [INFO] [Thread-130682] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:15:28.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:15:29.118 [DEBUG] [Thread-130682] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:15:29.118 [DEBUG] [Thread-130682] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:15:29.118 [DEBUG] [Thread-130682] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:15:29.159 [DEBUG] [Thread-130682] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:15:29.159 [DEBUG] [Thread-130682] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:15:29.161 [DEBUG] [Thread-130682] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:15:29.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:15:29.175 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:15:29.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:15:29.176 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:15:29.179 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:15:29.180 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:15:29.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.635497 -999.00  +16.60  12.75     43   +4.00 1 1 1 1 1   887    0 11.88 -23.39 ----- 12.8 12.8 194.8 16.4 20.5 -27.6 20.1 -26.5 21.6 -26.6 22.4 -27.3
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.635497
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:15:29.180 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:14:55', tmtdew=14.15, humidity=38.26, cloud=0.0, wind=19.99, temperature=16.26, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:15:06.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:15:29.181 [DEBUG] [Thread-130682] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:15:29.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-28T17:15:38.769 [DEBUG] [Thread-130685 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:15:53.796 [DEBUG] [Thread-130686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:08.825 [DEBUG] [Thread-130687 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:23.375 [DEBUG] [Thread-130688 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:23.857 [DEBUG] [Thread-130689 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:27.311 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:27.312 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:38.886 [DEBUG] [Thread-130690 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:16:53.916 [DEBUG] [Thread-130691 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:08.944 [DEBUG] [Thread-130692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:23.435 [DEBUG] [Thread-130693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:23.977 [DEBUG] [Thread-130694 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:27.454 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:27.455 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:39.006 [DEBUG] [Thread-130695 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:17:40.666 [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-28T17:17:50.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:17:50.677 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:17:50.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-28T17:17:51.283 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 17, 34), 14.0, 38.96, 0.0, 19.21, 16.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:17:51.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:17:34
2025-09-28T17:17:51.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:17:51.542 [DEBUG] [Thread-130696] [transport.py] [_log()] starting thread (client mode): 0x2b997610
2025-09-28T17:17:51.542 [DEBUG] [Thread-130696] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:17:51.562 [DEBUG] [Thread-130696] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:17:51.562 [INFO] [Thread-130696] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:17:51.565 [DEBUG] [Thread-130696] [transport.py] [_log()] client lang: <none>
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] server lang: <none>
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] kex follows: False
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] Compression: none
2025-09-28T17:17:51.566 [DEBUG] [Thread-130696] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:17:51.574 [DEBUG] [Thread-130696] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:17:51.574 [DEBUG] [Thread-130696] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:17:51.575 [DEBUG] [Thread-130696] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:17:51.575 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:17:51.576 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:17:51.577 [DEBUG] [Thread-130696] [transport.py] [_log()] userauth is OK
2025-09-28T17:17:51.577 [DEBUG] [Thread-130696] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:17:51.577 [DEBUG] [Thread-130696] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:17:51.577 [DEBUG] [Thread-130696] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:17:51.578 [DEBUG] [Thread-130696] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:17:51.601 [INFO] [Thread-130696] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:17:51.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:17:52.432 [DEBUG] [Thread-130696] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:17:52.432 [DEBUG] [Thread-130696] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:17:52.432 [DEBUG] [Thread-130696] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:17:52.473 [DEBUG] [Thread-130696] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:17:52.473 [DEBUG] [Thread-130696] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:17:52.476 [DEBUG] [Thread-130696] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:17:52.488 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:17:52.488 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:17:52.490 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:17:52.491 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:17:52.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:17:52.497 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:17:52.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.636886 -999.00  +16.00  18.09     44   +3.90 1 1 1 1 1   887    0 11.84 -26.93 ----- 18.1 18.1 186.0 28.8 20.1 -28.2 19.5 -30.0 21.2 -27.6 21.9 -30.3
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:17:52.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.636886
2025-09-28T17:17:52.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:17:52.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:17:52.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:17:52.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:17:52.500 [DEBUG] [Thread-130696] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:17:52.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:17:52.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:17:34', tmtdew=14.0, humidity=38.96, cloud=0.0, wind=19.21, temperature=16.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:17:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17: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-28T17:17:52.587 [DEBUG] [Thread-130699] [transport.py] [_log()] starting thread (client mode): 0x2b9964a0
2025-09-28T17:17:52.587 [DEBUG] [Thread-130699] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:17:52.602 [DEBUG] [Thread-130699] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:17:52.602 [INFO] [Thread-130699] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:17:52.609 [DEBUG] [Thread-130699] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] client lang: <none>
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] server lang: <none>
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] kex follows: False
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:17:52.610 [DEBUG] [Thread-130699] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:17:52.611 [DEBUG] [Thread-130699] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:17:52.611 [DEBUG] [Thread-130699] [transport.py] [_log()] Compression: none
2025-09-28T17:17:52.611 [DEBUG] [Thread-130699] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:17:52.669 [DEBUG] [Thread-130699] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:17:52.670 [DEBUG] [Thread-130699] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:17:52.670 [DEBUG] [Thread-130699] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:17:52.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:17:52.671 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:17:52.726 [DEBUG] [Thread-130699] [transport.py] [_log()] userauth is OK
2025-09-28T17:17:52.726 [DEBUG] [Thread-130699] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:17:52.726 [DEBUG] [Thread-130699] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:17:52.726 [DEBUG] [Thread-130699] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:17:52.726 [DEBUG] [Thread-130699] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:17:52.745 [INFO] [Thread-130699] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:17:52.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-28T17:17:52.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:17:53.716 [DEBUG] [Thread-130699] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:17:53.716 [DEBUG] [Thread-130699] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:17:53.764 [DEBUG] [Thread-130699] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:17:53.764 [DEBUG] [Thread-130699] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:17:53.773 [DEBUG] [Thread-130699] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:17:53.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:17:53.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-28T17:17:53.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-28T17:17:53.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:17:53.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:17:53.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:17:53.808 [DEBUG] [Thread-130699] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:17:54.035 [DEBUG] [Thread-130701 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:03.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:18:03.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:18:03.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:18:04.426 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 17, 34), 14.0, 38.96, 0.0, 19.21, 16.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:18:04.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:17:34
2025-09-28T17:18:04.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:18:04.684 [DEBUG] [Thread-130702] [transport.py] [_log()] starting thread (client mode): 0x2b996890
2025-09-28T17:18:04.684 [DEBUG] [Thread-130702] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:04.704 [DEBUG] [Thread-130702] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:18:04.704 [INFO] [Thread-130702] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] Compression: none
2025-09-28T17:18:04.708 [DEBUG] [Thread-130702] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:04.726 [DEBUG] [Thread-130702] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:04.726 [DEBUG] [Thread-130702] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:04.727 [DEBUG] [Thread-130702] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:18:04.727 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:18:04.728 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:04.729 [DEBUG] [Thread-130702] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:04.729 [DEBUG] [Thread-130702] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:04.730 [DEBUG] [Thread-130702] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:04.730 [DEBUG] [Thread-130702] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:18:04.730 [DEBUG] [Thread-130702] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:04.745 [INFO] [Thread-130702] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:04.746 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:05.359 [DEBUG] [Thread-130702] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:05.359 [DEBUG] [Thread-130702] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:05.360 [DEBUG] [Thread-130702] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:18:05.400 [DEBUG] [Thread-130702] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:05.400 [DEBUG] [Thread-130702] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:05.407 [DEBUG] [Thread-130702] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:05.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:05.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:18:05.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:18:05.421 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:18:05.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:05.427 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:18:05.427 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:05.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637233 -999.00  +16.00  17.64     44   +3.90 1 1 1 1 1   887    0 11.56 -27.50 ----- 17.6 17.6 193.8 21.1 20.1 -27.7 19.5 -28.8 21.1 -26.9 21.8 -28.4
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637233
2025-09-28T17:18:05.428 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:18:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:18:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:18:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:18:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:18:05.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:17:34', tmtdew=14.0, humidity=38.96, cloud=0.0, wind=19.21, temperature=16.08, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:17:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:18:05.430 [DEBUG] [Thread-130702] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:05.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-28T17:18:05.532 [DEBUG] [Thread-130705] [transport.py] [_log()] starting thread (client mode): 0x2b91fb80
2025-09-28T17:18:05.532 [DEBUG] [Thread-130705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:05.552 [DEBUG] [Thread-130705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:18:05.553 [INFO] [Thread-130705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:18:05.560 [DEBUG] [Thread-130705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:05.560 [DEBUG] [Thread-130705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] Compression: none
2025-09-28T17:18:05.561 [DEBUG] [Thread-130705] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:05.618 [DEBUG] [Thread-130705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:05.618 [DEBUG] [Thread-130705] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:05.619 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:18:05.620 [DEBUG] [Thread-130705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:18:05.621 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:05.674 [DEBUG] [Thread-130705] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:05.674 [DEBUG] [Thread-130705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:05.674 [DEBUG] [Thread-130705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:05.675 [DEBUG] [Thread-130705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:18:05.675 [DEBUG] [Thread-130705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:05.694 [INFO] [Thread-130705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:05.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-28T17:18:05.695 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:06.713 [DEBUG] [Thread-130705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:06.713 [DEBUG] [Thread-130705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:06.761 [DEBUG] [Thread-130705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:06.761 [DEBUG] [Thread-130705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:06.771 [DEBUG] [Thread-130705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:06.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:06.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')
2025-09-28T17:18:06.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-28T17:18:06.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:06.797 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:06.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:06.805 [DEBUG] [Thread-130705] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:09.072 [DEBUG] [Thread-130707 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:16.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:18:16.807 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:18:16.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-28T17:18:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 18, 6), 14.03, 38.93, 0.0, 19.6, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:18:17.455 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:18:06
2025-09-28T17:18:17.571 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:18:17.723 [DEBUG] [Thread-130708] [transport.py] [_log()] starting thread (client mode): 0x2b91e4a0
2025-09-28T17:18:17.723 [DEBUG] [Thread-130708] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:17.743 [DEBUG] [Thread-130708] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:18:17.743 [INFO] [Thread-130708] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:18:17.746 [DEBUG] [Thread-130708] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:17.746 [DEBUG] [Thread-130708] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] Compression: none
2025-09-28T17:18:17.747 [DEBUG] [Thread-130708] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:17.762 [DEBUG] [Thread-130708] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:17.762 [DEBUG] [Thread-130708] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:17.762 [DEBUG] [Thread-130708] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:18:17.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:18:17.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:17.805 [DEBUG] [Thread-130708] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:17.805 [DEBUG] [Thread-130708] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:17.805 [DEBUG] [Thread-130708] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:17.805 [DEBUG] [Thread-130708] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:18:17.805 [DEBUG] [Thread-130708] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:17.820 [INFO] [Thread-130708] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:17.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:18.626 [DEBUG] [Thread-130708] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:18.626 [DEBUG] [Thread-130708] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:18.626 [DEBUG] [Thread-130708] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:18:18.667 [DEBUG] [Thread-130708] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:18.667 [DEBUG] [Thread-130708] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:18.669 [DEBUG] [Thread-130708] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:18.683 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:18.683 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:18:18.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:18:18.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:18.688 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:18:18.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637233 -999.00  +16.00  17.64     44   +3.90 1 1 1 1 1   887    0 11.56 -27.50 ----- 17.6 17.6 193.8 21.1 20.1 -27.7 19.5 -28.8 21.1 -26.9 21.8 -28.4
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:18:18.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637233
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:18:18.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:18:06', tmtdew=14.03, humidity=38.93, cloud=0.0, wind=19.6, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:17:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:18:18.689 [DEBUG] [Thread-130708] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:18.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-28T17:18:18.774 [DEBUG] [Thread-130711] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-28T17:18:18.774 [DEBUG] [Thread-130711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:18.790 [DEBUG] [Thread-130711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:18:18.790 [INFO] [Thread-130711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:18.797 [DEBUG] [Thread-130711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] Compression: none
2025-09-28T17:18:18.798 [DEBUG] [Thread-130711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:18.853 [DEBUG] [Thread-130711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:18.853 [DEBUG] [Thread-130711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:18.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:18:18.854 [DEBUG] [Thread-130711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:18:18.854 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:18.914 [DEBUG] [Thread-130711] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:18.914 [DEBUG] [Thread-130711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:18.914 [DEBUG] [Thread-130711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:18.914 [DEBUG] [Thread-130711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:18:18.914 [DEBUG] [Thread-130711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:18.928 [INFO] [Thread-130711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:18.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-28T17:18:18.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:19.878 [DEBUG] [Thread-130711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:19.878 [DEBUG] [Thread-130711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:19.926 [DEBUG] [Thread-130711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:19.926 [DEBUG] [Thread-130711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:19.935 [DEBUG] [Thread-130711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:19.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:19.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-28T17:18:19.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-28T17:18:19.962 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:19.962 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:19.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:19.971 [DEBUG] [Thread-130711] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:23.484 [DEBUG] [Thread-130713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:24.122 [DEBUG] [Thread-130714 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:27.599 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:27.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:29.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:18:29.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:18:29.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-28T17:18:30.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 18, 6), 14.03, 38.93, 0.0, 19.6, 16.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:18:30.582 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:18:06
2025-09-28T17:18:30.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:18:30.840 [DEBUG] [Thread-130715] [transport.py] [_log()] starting thread (client mode): 0x2b994880
2025-09-28T17:18:30.840 [DEBUG] [Thread-130715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:30.858 [DEBUG] [Thread-130715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:18:30.858 [INFO] [Thread-130715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:18:30.861 [DEBUG] [Thread-130715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:30.862 [DEBUG] [Thread-130715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:30.863 [DEBUG] [Thread-130715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:30.863 [DEBUG] [Thread-130715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:30.863 [DEBUG] [Thread-130715] [transport.py] [_log()] Compression: none
2025-09-28T17:18:30.863 [DEBUG] [Thread-130715] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:30.879 [DEBUG] [Thread-130715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:30.879 [DEBUG] [Thread-130715] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:30.880 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:18:30.880 [DEBUG] [Thread-130715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:18:30.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:30.882 [DEBUG] [Thread-130715] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:30.883 [DEBUG] [Thread-130715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:30.883 [DEBUG] [Thread-130715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:30.883 [DEBUG] [Thread-130715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:18:30.883 [DEBUG] [Thread-130715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:30.900 [INFO] [Thread-130715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:30.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:31.676 [DEBUG] [Thread-130715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:31.676 [DEBUG] [Thread-130715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:31.676 [DEBUG] [Thread-130715] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:18:31.717 [DEBUG] [Thread-130715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:31.717 [DEBUG] [Thread-130715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:31.719 [DEBUG] [Thread-130715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:31.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:31.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:18:31.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:18:31.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:18:31.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:31.738 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:18:31.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637233 -999.00  +16.00  17.64     44   +3.90 1 1 1 1 1   887    0 11.56 -27.50 ----- 17.6 17.6 193.8 21.1 20.1 -27.7 19.5 -28.8 21.1 -26.9 21.8 -28.4
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637233
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:18:31.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:18:06', tmtdew=14.03, humidity=38.93, cloud=0.0, wind=19.6, temperature=16.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:17:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:18:31.740 [DEBUG] [Thread-130715] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:31.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-28T17:18:31.821 [DEBUG] [Thread-130718] [transport.py] [_log()] starting thread (client mode): 0x2b994c70
2025-09-28T17:18:31.821 [DEBUG] [Thread-130718] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:31.836 [DEBUG] [Thread-130718] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:18:31.836 [INFO] [Thread-130718] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:31.844 [DEBUG] [Thread-130718] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] Compression: none
2025-09-28T17:18:31.845 [DEBUG] [Thread-130718] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:31.902 [DEBUG] [Thread-130718] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:31.903 [DEBUG] [Thread-130718] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:31.903 [DEBUG] [Thread-130718] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:18:31.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:18:31.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:31.958 [DEBUG] [Thread-130718] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:31.958 [DEBUG] [Thread-130718] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:31.959 [DEBUG] [Thread-130718] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:31.959 [DEBUG] [Thread-130718] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:18:31.959 [DEBUG] [Thread-130718] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:31.978 [INFO] [Thread-130718] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:31.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-28T17:18:31.979 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:32.944 [DEBUG] [Thread-130718] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:32.944 [DEBUG] [Thread-130718] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:32.995 [DEBUG] [Thread-130718] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:32.995 [DEBUG] [Thread-130718] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:33.006 [DEBUG] [Thread-130718] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:33.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:33.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-28T17:18:33.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-28T17:18:33.042 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:33.042 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:33.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:33.053 [DEBUG] [Thread-130718] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:39.168 [DEBUG] [Thread-130720 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:43.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:18:43.053 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:18:43.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-28T17:18:43.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 18, 38), 14.02, 38.93, 0.0, 22.27, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:18:43.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:18:38
2025-09-28T17:18:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:18:43.920 [DEBUG] [Thread-130721] [transport.py] [_log()] starting thread (client mode): 0x2b91ee30
2025-09-28T17:18:43.920 [DEBUG] [Thread-130721] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:43.942 [DEBUG] [Thread-130721] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:18:43.942 [INFO] [Thread-130721] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:18:43.945 [DEBUG] [Thread-130721] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:43.945 [DEBUG] [Thread-130721] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] Compression: none
2025-09-28T17:18:43.946 [DEBUG] [Thread-130721] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:43.963 [DEBUG] [Thread-130721] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:43.964 [DEBUG] [Thread-130721] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:43.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:18:43.965 [DEBUG] [Thread-130721] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:18:43.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:43.966 [DEBUG] [Thread-130721] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:43.966 [DEBUG] [Thread-130721] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:43.967 [DEBUG] [Thread-130721] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:43.967 [DEBUG] [Thread-130721] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:18:43.967 [DEBUG] [Thread-130721] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:43.993 [INFO] [Thread-130721] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:43.993 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:44.621 [DEBUG] [Thread-130721] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:44.621 [DEBUG] [Thread-130721] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:44.622 [DEBUG] [Thread-130721] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:18:44.662 [DEBUG] [Thread-130721] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:44.662 [DEBUG] [Thread-130721] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:44.665 [DEBUG] [Thread-130721] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:44.678 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:44.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:18:44.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:18:44.682 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:18:44.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:44.689 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:18:44.689 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637581 -999.00  +16.00  20.25     44   +3.90 1 1 1 1 1   887    0 11.93 -28.51 ----- 20.2 20.2 204.0 24.7 20.0 -27.3 19.6 -27.4 21.1 -27.0 21.8 -28.2
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:18:44.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637581
2025-09-28T17:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:18:44.691 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:18:44.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:18:38', tmtdew=14.02, humidity=38.93, cloud=0.0, wind=22.27, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:18:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:18:44.692 [DEBUG] [Thread-130721] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:44.776 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:18:44.788 [DEBUG] [Thread-130724] [transport.py] [_log()] starting thread (client mode): 0x2b91c6d0
2025-09-28T17:18:44.788 [DEBUG] [Thread-130724] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:44.802 [DEBUG] [Thread-130724] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:18:44.802 [INFO] [Thread-130724] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:44.810 [DEBUG] [Thread-130724] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] Compression: none
2025-09-28T17:18:44.811 [DEBUG] [Thread-130724] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:44.866 [DEBUG] [Thread-130724] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:44.866 [DEBUG] [Thread-130724] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:44.867 [DEBUG] [Thread-130724] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:18:44.867 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:18:44.868 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:44.926 [DEBUG] [Thread-130724] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:44.926 [DEBUG] [Thread-130724] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:44.927 [DEBUG] [Thread-130724] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:44.927 [DEBUG] [Thread-130724] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:18:44.927 [DEBUG] [Thread-130724] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:44.945 [INFO] [Thread-130724] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:44.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-28T17:18:44.946 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:45.876 [DEBUG] [Thread-130724] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:45.876 [DEBUG] [Thread-130724] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:45.924 [DEBUG] [Thread-130724] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:45.924 [DEBUG] [Thread-130724] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:45.933 [DEBUG] [Thread-130724] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:45.942 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:45.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-28T17:18:45.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-28T17:18:45.959 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:45.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:45.959 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:45.967 [DEBUG] [Thread-130724] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:54.194 [DEBUG] [Thread-130726 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:18:55.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:18:55.970 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:18:55.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-28T17:18:56.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 18, 38), 14.02, 38.93, 0.0, 22.27, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:18:56.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:18:38
2025-09-28T17:18:56.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:18:56.853 [DEBUG] [Thread-130727] [transport.py] [_log()] starting thread (client mode): 0x2b91c0a0
2025-09-28T17:18:56.854 [DEBUG] [Thread-130727] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:56.874 [DEBUG] [Thread-130727] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:18:56.874 [INFO] [Thread-130727] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:18:56.875 [DEBUG] [Thread-130727] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] Compression: none
2025-09-28T17:18:56.876 [DEBUG] [Thread-130727] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:56.888 [DEBUG] [Thread-130727] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:56.888 [DEBUG] [Thread-130727] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:56.889 [DEBUG] [Thread-130727] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:18:56.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:18:56.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:56.890 [DEBUG] [Thread-130727] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:56.890 [DEBUG] [Thread-130727] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:56.890 [DEBUG] [Thread-130727] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:56.890 [DEBUG] [Thread-130727] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:18:56.890 [DEBUG] [Thread-130727] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:56.900 [INFO] [Thread-130727] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:56.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:57.705 [DEBUG] [Thread-130727] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:57.705 [DEBUG] [Thread-130727] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:57.706 [DEBUG] [Thread-130727] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:18:57.746 [DEBUG] [Thread-130727] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:57.746 [DEBUG] [Thread-130727] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:57.750 [DEBUG] [Thread-130727] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:57.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:57.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:18:57.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:18:57.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:18:57.768 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:57.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:18:57.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:57.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:18:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637581 -999.00  +16.00  20.25     44   +3.90 1 1 1 1 1   887    0 11.93 -28.51 ----- 20.2 20.2 204.0 24.7 20.0 -27.3 19.6 -27.4 21.1 -27.0 21.8 -28.2
2025-09-28T17:18:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:18:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:18:57.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637581
2025-09-28T17:18:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:18:57.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:18:57.774 [DEBUG] [Thread-130727] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:18:57.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:18:57.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:18:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:18:57.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:18:38', tmtdew=14.02, humidity=38.93, cloud=0.0, wind=22.27, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:18:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:18:57.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-28T17:18:57.871 [DEBUG] [Thread-130730] [transport.py] [_log()] starting thread (client mode): 0x2b9973d0
2025-09-28T17:18:57.871 [DEBUG] [Thread-130730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:18:57.886 [DEBUG] [Thread-130730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:18:57.886 [INFO] [Thread-130730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:18:57.893 [DEBUG] [Thread-130730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:18:57.893 [DEBUG] [Thread-130730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:18:57.893 [DEBUG] [Thread-130730] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:18:57.893 [DEBUG] [Thread-130730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:57.893 [DEBUG] [Thread-130730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] client lang: <none>
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] server lang: <none>
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] kex follows: False
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] Compression: none
2025-09-28T17:18:57.894 [DEBUG] [Thread-130730] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:18:57.951 [DEBUG] [Thread-130730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:18:57.951 [DEBUG] [Thread-130730] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:18:57.952 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:18:57.952 [DEBUG] [Thread-130730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:18:57.954 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:18:58.006 [DEBUG] [Thread-130730] [transport.py] [_log()] userauth is OK
2025-09-28T17:18:58.007 [DEBUG] [Thread-130730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:18:58.007 [DEBUG] [Thread-130730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:18:58.007 [DEBUG] [Thread-130730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:18:58.007 [DEBUG] [Thread-130730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:18:58.026 [INFO] [Thread-130730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:18:58.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-28T17:18:58.027 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:18:58.994 [DEBUG] [Thread-130730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:18:58.994 [DEBUG] [Thread-130730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:18:59.042 [DEBUG] [Thread-130730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:18:59.042 [DEBUG] [Thread-130730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:18:59.051 [DEBUG] [Thread-130730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:18:59.060 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:18:59.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')
2025-09-28T17:18:59.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') -> 00000000
2025-09-28T17:18:59.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:18:59.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:18:59.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:18:59.086 [DEBUG] [Thread-130730] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:09.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:19:09.080 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:19:09.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-28T17:19:09.228 [DEBUG] [Thread-130732 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:09.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 18, 38), 14.02, 38.93, 0.0, 22.27, 16.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:19:09.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:18:38
2025-09-28T17:19:09.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:19:09.959 [DEBUG] [Thread-130733] [transport.py] [_log()] starting thread (client mode): 0x2b91c2b0
2025-09-28T17:19:09.959 [DEBUG] [Thread-130733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:09.976 [DEBUG] [Thread-130733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:19:09.976 [INFO] [Thread-130733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:09.979 [DEBUG] [Thread-130733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:09.980 [DEBUG] [Thread-130733] [transport.py] [_log()] Compression: none
2025-09-28T17:19:09.980 [DEBUG] [Thread-130733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:09.992 [DEBUG] [Thread-130733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:09.992 [DEBUG] [Thread-130733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:09.993 [DEBUG] [Thread-130733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:19:09.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:19:09.994 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:09.994 [DEBUG] [Thread-130733] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:09.995 [DEBUG] [Thread-130733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:09.995 [DEBUG] [Thread-130733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:09.995 [DEBUG] [Thread-130733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:19:09.995 [DEBUG] [Thread-130733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:10.018 [INFO] [Thread-130733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:10.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:10.656 [DEBUG] [Thread-130733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:10.657 [DEBUG] [Thread-130733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:10.657 [DEBUG] [Thread-130733] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:19:10.697 [DEBUG] [Thread-130733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:10.697 [DEBUG] [Thread-130733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:10.699 [DEBUG] [Thread-130733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:10.710 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:10.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:19:10.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:19:10.712 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:19:10.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:10.717 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:19:10.717 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:10.717 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:10.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:19:10.717 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637928 -999.00  +16.00  12.86     44   +4.00 1 1 1 1 1   887    0 11.61 -29.17 ----- 12.9 12.9 190.6 22.4 19.9 -27.6 19.5 -26.0 21.1 -26.3 21.7 -29.0
2025-09-28T17:19:10.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:19:10.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:19:10.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637928
2025-09-28T17:19:10.718 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:19:10.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:19:10.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:19:10.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:19:10.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:19:10.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:18:38', tmtdew=14.02, humidity=38.93, cloud=0.0, wind=22.27, temperature=16.16, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:18:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:19:10.719 [DEBUG] [Thread-130733] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:10.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-28T17:19:10.818 [DEBUG] [Thread-130736] [transport.py] [_log()] starting thread (client mode): 0x2b91de70
2025-09-28T17:19:10.818 [DEBUG] [Thread-130736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:10.832 [DEBUG] [Thread-130736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:19:10.832 [INFO] [Thread-130736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] Compression: none
2025-09-28T17:19:10.840 [DEBUG] [Thread-130736] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:10.897 [DEBUG] [Thread-130736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:10.897 [DEBUG] [Thread-130736] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:10.898 [DEBUG] [Thread-130736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:19:10.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:19:10.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:10.955 [DEBUG] [Thread-130736] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:10.955 [DEBUG] [Thread-130736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:10.955 [DEBUG] [Thread-130736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:10.955 [DEBUG] [Thread-130736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:19:10.955 [DEBUG] [Thread-130736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:10.969 [INFO] [Thread-130736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:10.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-28T17:19:10.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:11.922 [DEBUG] [Thread-130736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:11.922 [DEBUG] [Thread-130736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:11.970 [DEBUG] [Thread-130736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:11.970 [DEBUG] [Thread-130736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:11.978 [DEBUG] [Thread-130736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:11.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:11.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-28T17:19:11.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-28T17:19:12.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:12.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:12.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:12.009 [DEBUG] [Thread-130736] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:22.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:19:22.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:19:22.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:19:22.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 19, 10), 13.97, 39.04, 0.0, 20.36, 16.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:19:22.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:19:10
2025-09-28T17:19:22.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:19:22.868 [DEBUG] [Thread-130738] [transport.py] [_log()] starting thread (client mode): 0x2b94c430
2025-09-28T17:19:22.868 [DEBUG] [Thread-130738] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:22.886 [DEBUG] [Thread-130738] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:19:22.886 [INFO] [Thread-130738] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:22.889 [DEBUG] [Thread-130738] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:22.890 [DEBUG] [Thread-130738] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:22.890 [DEBUG] [Thread-130738] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:22.890 [DEBUG] [Thread-130738] [transport.py] [_log()] Compression: none
2025-09-28T17:19:22.890 [DEBUG] [Thread-130738] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:22.902 [DEBUG] [Thread-130738] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:22.903 [DEBUG] [Thread-130738] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:22.903 [DEBUG] [Thread-130738] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:19:22.903 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:19:22.904 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:22.905 [DEBUG] [Thread-130738] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:22.905 [DEBUG] [Thread-130738] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:22.905 [DEBUG] [Thread-130738] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:22.905 [DEBUG] [Thread-130738] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:19:22.905 [DEBUG] [Thread-130738] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:22.928 [INFO] [Thread-130738] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:22.929 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:23.541 [DEBUG] [Thread-130740 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:23.764 [DEBUG] [Thread-130738] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:23.764 [DEBUG] [Thread-130738] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:23.764 [DEBUG] [Thread-130738] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:19:23.805 [DEBUG] [Thread-130738] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:23.806 [DEBUG] [Thread-130738] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:23.808 [DEBUG] [Thread-130738] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:23.819 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:23.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:19:23.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:19:23.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:19:23.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:23.830 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:19:23.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637928 -999.00  +16.00  12.86     44   +4.00 1 1 1 1 1   887    0 11.61 -29.17 ----- 12.9 12.9 190.6 22.4 19.9 -27.6 19.5 -26.0 21.1 -26.3 21.7 -29.0
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:19:23.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637928
2025-09-28T17:19:23.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:19:23.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:19:23.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:19:23.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:19:23.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:19:23.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:19:10', tmtdew=13.97, humidity=39.04, cloud=0.0, wind=20.36, temperature=16.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:18:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:19:23.833 [DEBUG] [Thread-130738] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:23.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-28T17:19:23.927 [DEBUG] [Thread-130742] [transport.py] [_log()] starting thread (client mode): 0x2b91d750
2025-09-28T17:19:23.928 [DEBUG] [Thread-130742] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:23.944 [DEBUG] [Thread-130742] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:19:23.944 [INFO] [Thread-130742] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:19:23.952 [DEBUG] [Thread-130742] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:23.952 [DEBUG] [Thread-130742] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:19:23.952 [DEBUG] [Thread-130742] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:23.952 [DEBUG] [Thread-130742] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] Compression: none
2025-09-28T17:19:23.953 [DEBUG] [Thread-130742] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:24.011 [DEBUG] [Thread-130742] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:24.012 [DEBUG] [Thread-130742] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:24.013 [DEBUG] [Thread-130742] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:19:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:19:24.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:24.067 [DEBUG] [Thread-130742] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:24.067 [DEBUG] [Thread-130742] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:24.067 [DEBUG] [Thread-130742] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:24.067 [DEBUG] [Thread-130742] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:19:24.068 [DEBUG] [Thread-130742] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:24.087 [INFO] [Thread-130742] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:24.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-28T17:19:24.088 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:24.254 [DEBUG] [Thread-130744 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:25.075 [DEBUG] [Thread-130742] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:25.075 [DEBUG] [Thread-130742] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:25.287 [DEBUG] [Thread-130742] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:25.287 [DEBUG] [Thread-130742] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:25.296 [DEBUG] [Thread-130742] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:25.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:25.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-28T17:19:25.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-28T17:19:25.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:25.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:25.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:25.328 [DEBUG] [Thread-130742] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:27.742 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:27.743 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:35.325 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:19:35.325 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:19:35.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-28T17:19:35.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 19, 10), 13.97, 39.04, 0.0, 20.36, 16.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:19:35.931 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:19:10
2025-09-28T17:19:36.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:19:36.192 [DEBUG] [Thread-130745] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-28T17:19:36.192 [DEBUG] [Thread-130745] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:36.212 [DEBUG] [Thread-130745] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:19:36.212 [INFO] [Thread-130745] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] Compression: none
2025-09-28T17:19:36.215 [DEBUG] [Thread-130745] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:36.232 [DEBUG] [Thread-130745] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:36.233 [DEBUG] [Thread-130745] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:36.233 [DEBUG] [Thread-130745] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:19:36.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:19:36.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:36.235 [DEBUG] [Thread-130745] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:36.235 [DEBUG] [Thread-130745] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:36.235 [DEBUG] [Thread-130745] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:36.235 [DEBUG] [Thread-130745] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:19:36.236 [DEBUG] [Thread-130745] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:36.253 [INFO] [Thread-130745] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:36.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:37.043 [DEBUG] [Thread-130745] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:37.044 [DEBUG] [Thread-130745] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:37.044 [DEBUG] [Thread-130745] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:19:37.084 [DEBUG] [Thread-130745] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:37.084 [DEBUG] [Thread-130745] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:37.087 [DEBUG] [Thread-130745] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:37.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:37.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:19:37.102 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:19:37.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:19:37.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:37.110 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:19:37.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:37.110 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:19:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.637928 -999.00  +16.00  12.86     44   +4.00 1 1 1 1 1   887    0 11.61 -29.17 ----- 12.9 12.9 190.6 22.4 19.9 -27.6 19.5 -26.0 21.1 -26.3 21.7 -29.0
2025-09-28T17:19:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:19:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:19:37.111 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.637928
2025-09-28T17:19:37.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:19:37.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:19:37.113 [DEBUG] [Thread-130745] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:37.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:19:37.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:19:37.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:19:37.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:19:10', tmtdew=13.97, humidity=39.04, cloud=0.0, wind=20.36, temperature=16.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:18:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:19:37.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-28T17:19:37.219 [DEBUG] [Thread-130748] [transport.py] [_log()] starting thread (client mode): 0x2b954310
2025-09-28T17:19:37.220 [DEBUG] [Thread-130748] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:37.235 [DEBUG] [Thread-130748] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:19:37.235 [INFO] [Thread-130748] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:19:37.242 [DEBUG] [Thread-130748] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] Compression: none
2025-09-28T17:19:37.243 [DEBUG] [Thread-130748] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:37.299 [DEBUG] [Thread-130748] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:37.299 [DEBUG] [Thread-130748] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:37.300 [DEBUG] [Thread-130748] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:19:37.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:19:37.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:37.355 [DEBUG] [Thread-130748] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:37.355 [DEBUG] [Thread-130748] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:37.356 [DEBUG] [Thread-130748] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:37.356 [DEBUG] [Thread-130748] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:19:37.356 [DEBUG] [Thread-130748] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:37.375 [INFO] [Thread-130748] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:37.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-28T17:19:37.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:38.346 [DEBUG] [Thread-130748] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:38.347 [DEBUG] [Thread-130748] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:38.394 [DEBUG] [Thread-130748] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:38.394 [DEBUG] [Thread-130748] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:38.404 [DEBUG] [Thread-130748] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:38.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:38.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-28T17:19:38.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-28T17:19:38.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:38.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:38.430 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:38.438 [DEBUG] [Thread-130748] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:39.299 [DEBUG] [Thread-130750 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:19:48.438 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:19:48.438 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:19:48.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-28T17:19:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 19, 42), 14.05, 38.88, 0.0, 21.21, 16.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:19:49.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:19:42
2025-09-28T17:19:49.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:19:49.284 [DEBUG] [Thread-130751] [transport.py] [_log()] starting thread (client mode): 0x2e3c2aa0
2025-09-28T17:19:49.284 [DEBUG] [Thread-130751] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:49.304 [DEBUG] [Thread-130751] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:19:49.304 [INFO] [Thread-130751] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:19:49.307 [DEBUG] [Thread-130751] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:49.307 [DEBUG] [Thread-130751] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:19:49.307 [DEBUG] [Thread-130751] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:49.307 [DEBUG] [Thread-130751] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:49.307 [DEBUG] [Thread-130751] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] Compression: none
2025-09-28T17:19:49.308 [DEBUG] [Thread-130751] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:49.325 [DEBUG] [Thread-130751] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:49.325 [DEBUG] [Thread-130751] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:49.326 [DEBUG] [Thread-130751] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:19:49.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:19:49.326 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:49.327 [DEBUG] [Thread-130751] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:49.328 [DEBUG] [Thread-130751] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:49.328 [DEBUG] [Thread-130751] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:49.328 [DEBUG] [Thread-130751] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:19:49.328 [DEBUG] [Thread-130751] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:49.352 [INFO] [Thread-130751] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:49.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:50.006 [DEBUG] [Thread-130751] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:50.006 [DEBUG] [Thread-130751] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:50.006 [DEBUG] [Thread-130751] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:19:50.047 [DEBUG] [Thread-130751] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:50.047 [DEBUG] [Thread-130751] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:50.050 [DEBUG] [Thread-130751] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:50.064 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:50.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:19:50.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:19:50.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:19:50.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:50.073 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:19:50.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:50.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.638622 -999.00  +16.00  18.49     44   +3.90 1 1 1 1 1   887    0 11.53 -31.22 ----- 18.5 18.5 197.2 27.2 19.9 -28.0 19.3 -30.1 20.9 -28.0 21.6 -28.7
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.638622
2025-09-28T17:19:50.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:19:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:19:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:19:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:19:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:19:50.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:19:42', tmtdew=14.05, humidity=38.88, cloud=0.0, wind=21.21, temperature=16.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:19:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:19:50.075 [DEBUG] [Thread-130751] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:50.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-28T17:19:50.168 [DEBUG] [Thread-130754] [transport.py] [_log()] starting thread (client mode): 0x2b91d7e0
2025-09-28T17:19:50.168 [DEBUG] [Thread-130754] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:19:50.183 [DEBUG] [Thread-130754] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:19:50.183 [INFO] [Thread-130754] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:19:50.190 [DEBUG] [Thread-130754] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] client lang: <none>
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] server lang: <none>
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] kex follows: False
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] Compression: none
2025-09-28T17:19:50.191 [DEBUG] [Thread-130754] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:19:50.247 [DEBUG] [Thread-130754] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:19:50.247 [DEBUG] [Thread-130754] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:19:50.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:19:50.248 [DEBUG] [Thread-130754] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:19:50.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:19:50.303 [DEBUG] [Thread-130754] [transport.py] [_log()] userauth is OK
2025-09-28T17:19:50.303 [DEBUG] [Thread-130754] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:19:50.303 [DEBUG] [Thread-130754] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:19:50.304 [DEBUG] [Thread-130754] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:19:50.304 [DEBUG] [Thread-130754] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:19:50.322 [INFO] [Thread-130754] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:19:50.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-28T17:19:50.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:19:51.297 [DEBUG] [Thread-130754] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:19:51.297 [DEBUG] [Thread-130754] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:19:51.345 [DEBUG] [Thread-130754] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:19:51.345 [DEBUG] [Thread-130754] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:19:51.354 [DEBUG] [Thread-130754] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:19:51.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:19:51.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-28T17:19:51.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-28T17:19:51.380 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:19:51.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:19:51.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:19:51.388 [DEBUG] [Thread-130754] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:19:54.333 [DEBUG] [Thread-130756 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:01.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:20:01.383 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:20: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-28T17:20:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 19, 42), 14.05, 38.88, 0.0, 21.21, 16.21, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:20:01.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:19:42
2025-09-28T17:20:02.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:20:02.230 [DEBUG] [Thread-130757] [transport.py] [_log()] starting thread (client mode): 0x2b91f0d0
2025-09-28T17:20:02.231 [DEBUG] [Thread-130757] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:02.250 [DEBUG] [Thread-130757] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:20:02.250 [INFO] [Thread-130757] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] Compression: none
2025-09-28T17:20:02.254 [DEBUG] [Thread-130757] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:02.270 [DEBUG] [Thread-130757] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:02.271 [DEBUG] [Thread-130757] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:02.271 [DEBUG] [Thread-130757] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:20:02.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:20:02.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:02.272 [DEBUG] [Thread-130757] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:02.272 [DEBUG] [Thread-130757] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:02.272 [DEBUG] [Thread-130757] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:02.272 [DEBUG] [Thread-130757] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:20:02.272 [DEBUG] [Thread-130757] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:02.289 [INFO] [Thread-130757] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:02.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:08.724 [DEBUG] [Thread-130757] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:08.724 [DEBUG] [Thread-130757] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:08.724 [DEBUG] [Thread-130757] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:20:08.765 [DEBUG] [Thread-130757] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:08.765 [DEBUG] [Thread-130757] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:08.767 [DEBUG] [Thread-130757] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:08.781 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:08.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:20:08.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:20:08.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:20:08.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:08.787 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:20:08.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.638622 -999.00  +16.00  18.49     44   +3.90 1 1 1 1 1   887    0 11.53 -31.22 ----- 18.5 18.5 197.2 27.2 19.9 -28.0 19.3 -30.1 20.9 -28.0 21.6 -28.7
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.638622
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:20:08.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:19:42', tmtdew=14.05, humidity=38.88, cloud=0.0, wind=21.21, temperature=16.21, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:19:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:20:08.788 [DEBUG] [Thread-130757] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:08.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-28T17:20:08.874 [DEBUG] [Thread-130760] [transport.py] [_log()] starting thread (client mode): 0x2b91faf0
2025-09-28T17:20:08.874 [DEBUG] [Thread-130760] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:08.889 [DEBUG] [Thread-130760] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:20:08.889 [INFO] [Thread-130760] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:20:08.896 [DEBUG] [Thread-130760] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:08.896 [DEBUG] [Thread-130760] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] Compression: none
2025-09-28T17:20:08.897 [DEBUG] [Thread-130760] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:08.954 [DEBUG] [Thread-130760] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:08.954 [DEBUG] [Thread-130760] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:08.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:20:08.955 [DEBUG] [Thread-130760] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:20:08.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:09.011 [DEBUG] [Thread-130760] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:09.011 [DEBUG] [Thread-130760] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:09.011 [DEBUG] [Thread-130760] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:09.011 [DEBUG] [Thread-130760] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:20:09.011 [DEBUG] [Thread-130760] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:09.025 [INFO] [Thread-130760] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:09.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-28T17:20:09.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:09.377 [DEBUG] [Thread-130762 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:10.049 [DEBUG] [Thread-130760] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:10.050 [DEBUG] [Thread-130760] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:10.098 [DEBUG] [Thread-130760] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:10.098 [DEBUG] [Thread-130760] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:10.106 [DEBUG] [Thread-130760] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:10.115 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:10.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-28T17:20:10.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-28T17:20:10.131 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:10.131 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:10.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:10.138 [DEBUG] [Thread-130760] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:20.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:20:20.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:20:20.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-28T17:20:20.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 20, 14), 14.12, 38.7, 0.0, 22.21, 16.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:20:20.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:20:14
2025-09-28T17:20:20.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:20:20.995 [DEBUG] [Thread-130763] [transport.py] [_log()] starting thread (client mode): 0x2b995f90
2025-09-28T17:20:20.995 [DEBUG] [Thread-130763] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:21.015 [DEBUG] [Thread-130763] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:20:21.015 [INFO] [Thread-130763] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] Compression: none
2025-09-28T17:20:21.019 [DEBUG] [Thread-130763] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:21.037 [DEBUG] [Thread-130763] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:21.038 [DEBUG] [Thread-130763] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:21.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:20:21.039 [DEBUG] [Thread-130763] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:20:21.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:21.080 [DEBUG] [Thread-130763] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:21.081 [DEBUG] [Thread-130763] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:21.081 [DEBUG] [Thread-130763] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:21.081 [DEBUG] [Thread-130763] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:20:21.081 [DEBUG] [Thread-130763] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:21.101 [INFO] [Thread-130763] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:21.102 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:21.696 [DEBUG] [Thread-130763] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:21.697 [DEBUG] [Thread-130763] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:21.697 [DEBUG] [Thread-130763] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:20:21.737 [DEBUG] [Thread-130763] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:21.738 [DEBUG] [Thread-130763] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:21.741 [DEBUG] [Thread-130763] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:21.753 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:21.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:20:21.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:20:21.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:20:21.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:21.763 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:20:21.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:21.763 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:20:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.638970 -999.00  +15.80  24.25     45   +3.90 1 1 1 1 1   887    0 11.52 -34.98 ----- 24.2 24.2 198.0 28.1 19.8 -27.7 19.2 -28.1 20.8 -26.8 21.5 -28.7
2025-09-28T17:20:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:20:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:20:21.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.638970
2025-09-28T17:20:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:20:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:20:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:20:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:20:21.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:20:21.766 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:20:14', tmtdew=14.12, humidity=38.7, cloud=0.0, wind=22.21, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:20:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:20:21.766 [DEBUG] [Thread-130763] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:21.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-28T17:20:21.861 [DEBUG] [Thread-130766] [transport.py] [_log()] starting thread (client mode): 0x2b994790
2025-09-28T17:20:21.862 [DEBUG] [Thread-130766] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:21.876 [DEBUG] [Thread-130766] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:20:21.876 [INFO] [Thread-130766] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] Compression: none
2025-09-28T17:20:21.884 [DEBUG] [Thread-130766] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:21.944 [DEBUG] [Thread-130766] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:21.945 [DEBUG] [Thread-130766] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:21.945 [DEBUG] [Thread-130766] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:20:21.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:20:21.945 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:22.000 [DEBUG] [Thread-130766] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:22.000 [DEBUG] [Thread-130766] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:22.000 [DEBUG] [Thread-130766] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:22.000 [DEBUG] [Thread-130766] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:20:22.000 [DEBUG] [Thread-130766] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:22.021 [INFO] [Thread-130766] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:22.021 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:20:22.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:22.951 [DEBUG] [Thread-130766] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:22.952 [DEBUG] [Thread-130766] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:22.999 [DEBUG] [Thread-130766] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:22.999 [DEBUG] [Thread-130766] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:23.008 [DEBUG] [Thread-130766] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:23.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:23.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-28T17:20:23.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-28T17:20:23.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:23.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:23.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:23.044 [DEBUG] [Thread-130766] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:23.598 [DEBUG] [Thread-130768 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:24.408 [DEBUG] [Thread-130769 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:27.886 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:27.887 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:33.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:20:33.047 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:20: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-28T17:20:33.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 20, 14), 14.12, 38.7, 0.0, 22.21, 16.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:20:33.654 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:20:14
2025-09-28T17:20:33.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:20:33.922 [DEBUG] [Thread-130770] [transport.py] [_log()] starting thread (client mode): 0x2b9ba7d0
2025-09-28T17:20:33.922 [DEBUG] [Thread-130770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:33.943 [DEBUG] [Thread-130770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:20:33.943 [INFO] [Thread-130770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:33.947 [DEBUG] [Thread-130770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] Compression: none
2025-09-28T17:20:33.948 [DEBUG] [Thread-130770] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:33.966 [DEBUG] [Thread-130770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:33.966 [DEBUG] [Thread-130770] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:33.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:20:33.968 [DEBUG] [Thread-130770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:20:33.968 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:33.970 [DEBUG] [Thread-130770] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:33.970 [DEBUG] [Thread-130770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:33.970 [DEBUG] [Thread-130770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:33.970 [DEBUG] [Thread-130770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:20:33.970 [DEBUG] [Thread-130770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:33.989 [INFO] [Thread-130770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:33.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:34.844 [DEBUG] [Thread-130770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:34.845 [DEBUG] [Thread-130770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:34.845 [DEBUG] [Thread-130770] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:20:34.885 [DEBUG] [Thread-130770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:34.885 [DEBUG] [Thread-130770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:34.886 [DEBUG] [Thread-130770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:34.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:34.898 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:20:34.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:20:34.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:20:34.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:34.906 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:20:34.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.638970 -999.00  +15.80  24.25     45   +3.90 1 1 1 1 1   887    0 11.52 -34.98 ----- 24.2 24.2 198.0 28.1 19.8 -27.7 19.2 -28.1 20.8 -26.8 21.5 -28.7
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:20:34.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.638970
2025-09-28T17:20:34.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:20:34.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:20:34.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:20:34.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:20:34.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:20:34.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:20:14', tmtdew=14.12, humidity=38.7, cloud=0.0, wind=22.21, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:20:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:20:34.909 [DEBUG] [Thread-130770] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:34.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:20:35.006 [DEBUG] [Thread-130773] [transport.py] [_log()] starting thread (client mode): 0x2b9b9ab0
2025-09-28T17:20:35.006 [DEBUG] [Thread-130773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:35.021 [DEBUG] [Thread-130773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:20:35.021 [INFO] [Thread-130773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:35.029 [DEBUG] [Thread-130773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:35.030 [DEBUG] [Thread-130773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:35.030 [DEBUG] [Thread-130773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:35.030 [DEBUG] [Thread-130773] [transport.py] [_log()] Compression: none
2025-09-28T17:20:35.030 [DEBUG] [Thread-130773] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:35.087 [DEBUG] [Thread-130773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:35.088 [DEBUG] [Thread-130773] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:35.088 [DEBUG] [Thread-130773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:20:35.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:20:35.089 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:35.144 [DEBUG] [Thread-130773] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:35.144 [DEBUG] [Thread-130773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:35.145 [DEBUG] [Thread-130773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:35.145 [DEBUG] [Thread-130773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:20:35.145 [DEBUG] [Thread-130773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:35.164 [INFO] [Thread-130773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:35.164 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:20:35.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:36.115 [DEBUG] [Thread-130773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:36.115 [DEBUG] [Thread-130773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:36.163 [DEBUG] [Thread-130773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:36.164 [DEBUG] [Thread-130773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:36.173 [DEBUG] [Thread-130773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:36.182 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:36.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-28T17:20:36.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-28T17:20:36.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:36.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:36.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:36.217 [DEBUG] [Thread-130773] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:39.452 [DEBUG] [Thread-130775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:46.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:20:46.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:20:46.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-28T17:20:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 20, 14), 14.12, 38.7, 0.0, 22.21, 16.24, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:20:46.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:20:14
2025-09-28T17:20:46.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:20:47.124 [DEBUG] [Thread-130776] [transport.py] [_log()] starting thread (client mode): 0x2e360b20
2025-09-28T17:20:47.124 [DEBUG] [Thread-130776] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:47.140 [DEBUG] [Thread-130776] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:20:47.140 [INFO] [Thread-130776] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] Compression: none
2025-09-28T17:20:47.144 [DEBUG] [Thread-130776] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:47.160 [DEBUG] [Thread-130776] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:47.160 [DEBUG] [Thread-130776] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:47.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:20:47.160 [DEBUG] [Thread-130776] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:20:47.161 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:47.161 [DEBUG] [Thread-130776] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:47.161 [DEBUG] [Thread-130776] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:47.161 [DEBUG] [Thread-130776] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:47.161 [DEBUG] [Thread-130776] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:20:47.162 [DEBUG] [Thread-130776] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:47.174 [INFO] [Thread-130776] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:47.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:47.928 [DEBUG] [Thread-130776] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:47.928 [DEBUG] [Thread-130776] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:47.928 [DEBUG] [Thread-130776] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:20:47.969 [DEBUG] [Thread-130776] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:47.969 [DEBUG] [Thread-130776] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:47.971 [DEBUG] [Thread-130776] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:47.978 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:47.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:20:47.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:20:47.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:20:47.982 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:47.983 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:20:47.983 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.638970 -999.00  +15.80  24.25     45   +3.90 1 1 1 1 1   887    0 11.52 -34.98 ----- 24.2 24.2 198.0 28.1 19.8 -27.7 19.2 -28.1 20.8 -26.8 21.5 -28.7
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.638970
2025-09-28T17:20:47.983 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:20:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:20:47.984 [DEBUG] [Thread-130776] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:20:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:20:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:20:47.984 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:20:14', tmtdew=14.12, humidity=38.7, cloud=0.0, wind=22.21, temperature=16.24, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:20:07.008', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:20:48.062 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:20:48.074 [DEBUG] [Thread-130779] [transport.py] [_log()] starting thread (client mode): 0x2e362770
2025-09-28T17:20:48.074 [DEBUG] [Thread-130779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:20:48.089 [DEBUG] [Thread-130779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:20:48.089 [INFO] [Thread-130779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] client lang: <none>
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] server lang: <none>
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] kex follows: False
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] Compression: none
2025-09-28T17:20:48.097 [DEBUG] [Thread-130779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:20:48.155 [DEBUG] [Thread-130779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:20:48.155 [DEBUG] [Thread-130779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:20:48.155 [DEBUG] [Thread-130779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:20:48.155 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:20:48.156 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:20:48.212 [DEBUG] [Thread-130779] [transport.py] [_log()] userauth is OK
2025-09-28T17:20:48.212 [DEBUG] [Thread-130779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:20:48.212 [DEBUG] [Thread-130779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:20:48.212 [DEBUG] [Thread-130779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:20:48.212 [DEBUG] [Thread-130779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:20:48.226 [INFO] [Thread-130779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:20:48.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-28T17:20:48.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:20:49.189 [DEBUG] [Thread-130779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:20:49.189 [DEBUG] [Thread-130779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:20:49.237 [DEBUG] [Thread-130779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:20:49.237 [DEBUG] [Thread-130779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:20:49.245 [DEBUG] [Thread-130779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:20:49.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:20:49.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-28T17:20:49.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-28T17:20:49.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:20:49.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:20:49.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:20:49.277 [DEBUG] [Thread-130779] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:20:54.482 [DEBUG] [Thread-130781 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:20:59.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:20:59.280 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:20:59.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-28T17:20:59.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 20, 46), 13.97, 38.93, 0.0, 25.67, 16.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:20:59.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:20:46
2025-09-28T17:20:59.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:21:00.121 [DEBUG] [Thread-130782] [transport.py] [_log()] starting thread (client mode): 0x2b9b9120
2025-09-28T17:21:00.121 [DEBUG] [Thread-130782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:21:00.142 [DEBUG] [Thread-130782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:21:00.142 [INFO] [Thread-130782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:21:00.145 [DEBUG] [Thread-130782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:21:00.145 [DEBUG] [Thread-130782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:21:00.145 [DEBUG] [Thread-130782] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:21:00.145 [DEBUG] [Thread-130782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:21:00.145 [DEBUG] [Thread-130782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] client lang: <none>
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] server lang: <none>
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] kex follows: False
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] Compression: none
2025-09-28T17:21:00.146 [DEBUG] [Thread-130782] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:21:00.165 [DEBUG] [Thread-130782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:21:00.165 [DEBUG] [Thread-130782] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:21:00.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:21:00.167 [DEBUG] [Thread-130782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:21:00.168 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:21:00.169 [DEBUG] [Thread-130782] [transport.py] [_log()] userauth is OK
2025-09-28T17:21:00.169 [DEBUG] [Thread-130782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:21:00.170 [DEBUG] [Thread-130782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:21:00.170 [DEBUG] [Thread-130782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:21:00.170 [DEBUG] [Thread-130782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:21:00.193 [INFO] [Thread-130782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:21:00.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:21:00.784 [DEBUG] [Thread-130782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:21:00.784 [DEBUG] [Thread-130782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:21:00.785 [DEBUG] [Thread-130782] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:21:00.825 [DEBUG] [Thread-130782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:21:00.826 [DEBUG] [Thread-130782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:21:00.829 [DEBUG] [Thread-130782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:21:00.841 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:21:00.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:21:00.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:21:00.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:21:00.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:21:00.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:21:00.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:21:00.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:21:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:21:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.639317 -999.00  +15.70  19.94     44   +3.80 1 1 1 1 1   887    0 11.65 -36.37 ----- 19.9 19.9 195.4 28.9 19.7 -28.0 19.2 -27.1 20.8 -26.6 21.4 -29.0
2025-09-28T17:21:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:21:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:21:00.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.639317
2025-09-28T17:21:00.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:21:00.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:21:00.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:21:00.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:21:00.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:21:00.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:20:46', tmtdew=13.97, humidity=38.93, cloud=0.0, wind=25.67, temperature=16.04, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:20:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:21:00.855 [DEBUG] [Thread-130782] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:21:00.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-28T17:21:09.512 [DEBUG] [Thread-130785 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:23.625 [DEBUG] [Thread-130786 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:24.558 [DEBUG] [Thread-130787 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:28.028 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:28.028 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:39.583 [DEBUG] [Thread-130788 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:21:54.613 [DEBUG] [Thread-130789 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:09.642 [DEBUG] [Thread-130790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:23.677 [DEBUG] [Thread-130791 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:24.671 [DEBUG] [Thread-130792 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:28.170 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:28.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:39.699 [DEBUG] [Thread-130793 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:22:54.726 [DEBUG] [Thread-130794 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:09.754 [DEBUG] [Thread-130795 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:12.443 [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-28T17:23:22.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:23:22.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:23:22.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-28T17:23:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 22, 53), 13.84, 39.11, 0.0, 26.15, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:23:23.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:22:53
2025-09-28T17:23:23.221 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:23:23.374 [DEBUG] [Thread-130796] [transport.py] [_log()] starting thread (client mode): 0x2e3c2200
2025-09-28T17:23:23.374 [DEBUG] [Thread-130796] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:23:23.394 [DEBUG] [Thread-130796] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:23:23.394 [INFO] [Thread-130796] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] client lang: <none>
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] server lang: <none>
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] kex follows: False
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] Compression: none
2025-09-28T17:23:23.396 [DEBUG] [Thread-130796] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:23:23.407 [DEBUG] [Thread-130796] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:23:23.408 [DEBUG] [Thread-130796] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:23:23.408 [DEBUG] [Thread-130796] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:23:23.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:23:23.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:23:23.409 [DEBUG] [Thread-130796] [transport.py] [_log()] userauth is OK
2025-09-28T17:23:23.409 [DEBUG] [Thread-130796] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:23:23.409 [DEBUG] [Thread-130796] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:23:23.409 [DEBUG] [Thread-130796] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:23:23.409 [DEBUG] [Thread-130796] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:23:23.427 [INFO] [Thread-130796] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:23:23.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:23:23.727 [DEBUG] [Thread-130798 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:24.069 [DEBUG] [Thread-130796] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:23:24.070 [DEBUG] [Thread-130796] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:23:24.070 [DEBUG] [Thread-130796] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:23:24.111 [DEBUG] [Thread-130796] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:23:24.111 [DEBUG] [Thread-130796] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:23:24.115 [DEBUG] [Thread-130796] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:23:24.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:23:24.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:23:24.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:23:24.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:23:24.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:23:24.138 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:23:24.138 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:23:24.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.640706 -999.00  +15.90  13.69     44   +3.90 1 1 1 1 1   887    0 10.98 -41.75 ----- 13.7 13.7 192.6 18.9 19.6 -27.5 19.2 -27.2 20.7 -26.2 21.3 -27.5
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.640706
2025-09-28T17:23:24.139 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:23:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:23:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:23:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:23:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:23:24.140 [DEBUG] [Thread-130796] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:23:24.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:22:53', tmtdew=13.84, humidity=39.11, cloud=0.0, wind=26.15, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:22:36.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:23:24.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-28T17:23:24.232 [DEBUG] [Thread-130800] [transport.py] [_log()] starting thread (client mode): 0x2b995f30
2025-09-28T17:23:24.232 [DEBUG] [Thread-130800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:23:24.247 [DEBUG] [Thread-130800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:23:24.247 [INFO] [Thread-130800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:24.254 [DEBUG] [Thread-130800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] client lang: <none>
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] server lang: <none>
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] kex follows: False
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] Compression: none
2025-09-28T17:23:24.255 [DEBUG] [Thread-130800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:23:24.313 [DEBUG] [Thread-130800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:23:24.313 [DEBUG] [Thread-130800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:23:24.314 [DEBUG] [Thread-130800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:23:24.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:23:24.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:23:24.369 [DEBUG] [Thread-130800] [transport.py] [_log()] userauth is OK
2025-09-28T17:23:24.370 [DEBUG] [Thread-130800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:23:24.370 [DEBUG] [Thread-130800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:23:24.370 [DEBUG] [Thread-130800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:23:24.370 [DEBUG] [Thread-130800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:23:24.392 [INFO] [Thread-130800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:23:24.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-28T17:23:24.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:23:24.783 [DEBUG] [Thread-130802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:25.355 [DEBUG] [Thread-130800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:23:25.355 [DEBUG] [Thread-130800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:23:25.402 [DEBUG] [Thread-130800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:23:25.402 [DEBUG] [Thread-130800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:23:25.411 [DEBUG] [Thread-130800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:23:25.420 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:23:25.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-28T17:23:25.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-28T17:23:25.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:23:25.437 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:23:25.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:23:25.446 [DEBUG] [Thread-130800] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:23:28.313 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:28.314 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:35.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:23:35.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:23:35.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-28T17:23:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 23, 25), 13.8, 39.19, 0.0, 24.44, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:23:36.056 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:23:25
2025-09-28T17:23:36.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:23:36.317 [DEBUG] [Thread-130803] [transport.py] [_log()] starting thread (client mode): 0x2b9bb4c0
2025-09-28T17:23:36.317 [DEBUG] [Thread-130803] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:23:36.331 [DEBUG] [Thread-130803] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:23:36.331 [INFO] [Thread-130803] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:23:36.332 [DEBUG] [Thread-130803] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] client lang: <none>
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] server lang: <none>
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] kex follows: False
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] Compression: none
2025-09-28T17:23:36.333 [DEBUG] [Thread-130803] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:23:36.342 [DEBUG] [Thread-130803] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:23:36.343 [DEBUG] [Thread-130803] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:23:36.343 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:23:36.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:23:36.344 [DEBUG] [Thread-130803] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:23:36.345 [DEBUG] [Thread-130803] [transport.py] [_log()] userauth is OK
2025-09-28T17:23:36.345 [DEBUG] [Thread-130803] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:23:36.345 [DEBUG] [Thread-130803] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:23:36.345 [DEBUG] [Thread-130803] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:23:36.345 [DEBUG] [Thread-130803] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:23:36.372 [INFO] [Thread-130803] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:23:36.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:23:37.000 [DEBUG] [Thread-130803] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:23:37.000 [DEBUG] [Thread-130803] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:23:37.000 [DEBUG] [Thread-130803] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:23:37.041 [DEBUG] [Thread-130803] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:23:37.041 [DEBUG] [Thread-130803] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:23:37.043 [DEBUG] [Thread-130803] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:23:37.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:23:37.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:23:37.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:23:37.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:23:37.053 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:23:37.054 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:23:37.054 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.641053 -999.00  +15.90  12.16     44   +3.90 1 1 1 1 1   887    0 11.32 -39.82 ----- 12.2 12.2 192.6 24.7 19.6 -27.6 19.1 -27.9 20.6 -26.4 21.3 -28.2
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.641053
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:23:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:23:25', tmtdew=13.8, humidity=39.19, cloud=0.0, wind=24.44, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:23:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:23:37.055 [DEBUG] [Thread-130803] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:23:37.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-28T17:23:39.836 [DEBUG] [Thread-130806 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:23:54.883 [DEBUG] [Thread-130807 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:09.913 [DEBUG] [Thread-130808 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:23.783 [DEBUG] [Thread-130809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:24.944 [DEBUG] [Thread-130810 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:28.456 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:28.457 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:39.970 [DEBUG] [Thread-130811 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:24:55.001 [DEBUG] [Thread-130812 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:10.032 [DEBUG] [Thread-130813 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:23.842 [DEBUG] [Thread-130814 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:25.062 [DEBUG] [Thread-130815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:28.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:28.601 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:40.090 [DEBUG] [Thread-130816 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:25:52.186 [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-28T17:25:55.117 [DEBUG] [Thread-130817 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:02.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:26:02.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:26:02.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:26:02.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 25, 33), 13.8, 39.44, 0.0, 17.84, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:26:02.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:25:33
2025-09-28T17:26:02.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:26:03.083 [DEBUG] [Thread-130818] [transport.py] [_log()] starting thread (client mode): 0x2b9b9870
2025-09-28T17:26:03.083 [DEBUG] [Thread-130818] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:03.103 [DEBUG] [Thread-130818] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:26:03.103 [INFO] [Thread-130818] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:26:03.106 [DEBUG] [Thread-130818] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:03.106 [DEBUG] [Thread-130818] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:26:03.106 [DEBUG] [Thread-130818] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:03.106 [DEBUG] [Thread-130818] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:03.106 [DEBUG] [Thread-130818] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] Compression: none
2025-09-28T17:26:03.107 [DEBUG] [Thread-130818] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:03.126 [DEBUG] [Thread-130818] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:03.127 [DEBUG] [Thread-130818] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:03.127 [DEBUG] [Thread-130818] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:26:03.127 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:26:03.128 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:03.168 [DEBUG] [Thread-130818] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:03.169 [DEBUG] [Thread-130818] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:03.169 [DEBUG] [Thread-130818] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:03.169 [DEBUG] [Thread-130818] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:26:03.169 [DEBUG] [Thread-130818] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:03.202 [INFO] [Thread-130818] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:03.203 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:03.833 [DEBUG] [Thread-130818] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:03.833 [DEBUG] [Thread-130818] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:03.833 [DEBUG] [Thread-130818] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:26:03.874 [DEBUG] [Thread-130818] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:03.874 [DEBUG] [Thread-130818] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:03.877 [DEBUG] [Thread-130818] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:03.888 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:03.889 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:26:03.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:26:03.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:26:03.896 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:03.898 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:26:03.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:03.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.642789 -999.00  +16.10  20.28     44   +3.90 1 1 1 1 1   887    0 11.02 -42.22 ----- 20.3 20.3 195.6 23.9 19.6 -26.6 19.2 -28.9 20.7 -26.6 21.3 -27.7
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.642789
2025-09-28T17:26:03.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:26:03.900 [DEBUG] [Thread-130818] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:03.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:26:03.900 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:26:03.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:26:03.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:26:03.901 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:25:33', tmtdew=13.8, humidity=39.44, cloud=0.0, wind=17.84, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:25:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:26:03.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-28T17:26:03.999 [DEBUG] [Thread-130821] [transport.py] [_log()] starting thread (client mode): 0x2e3c04f0
2025-09-28T17:26:03.999 [DEBUG] [Thread-130821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:04.014 [DEBUG] [Thread-130821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:26:04.014 [INFO] [Thread-130821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:26:04.021 [DEBUG] [Thread-130821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:04.021 [DEBUG] [Thread-130821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] Compression: none
2025-09-28T17:26:04.022 [DEBUG] [Thread-130821] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:04.079 [DEBUG] [Thread-130821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:04.080 [DEBUG] [Thread-130821] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:04.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:26:04.080 [DEBUG] [Thread-130821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:26:04.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:04.135 [DEBUG] [Thread-130821] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:04.136 [DEBUG] [Thread-130821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:04.136 [DEBUG] [Thread-130821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:04.136 [DEBUG] [Thread-130821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:26:04.136 [DEBUG] [Thread-130821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:04.155 [INFO] [Thread-130821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:04.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-28T17:26:04.156 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:05.115 [DEBUG] [Thread-130821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:05.115 [DEBUG] [Thread-130821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:05.164 [DEBUG] [Thread-130821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:05.164 [DEBUG] [Thread-130821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:05.172 [DEBUG] [Thread-130821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:05.179 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:05.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-28T17:26:05.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-28T17:26:05.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:05.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:05.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:05.203 [DEBUG] [Thread-130821] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:10.145 [DEBUG] [Thread-130823 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:15.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:26:15.206 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:26:15.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-28T17:26:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 26, 5), 13.83, 39.39, 0.0, 22.96, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:26:15.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:26:05
2025-09-28T17:26:15.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:26:16.074 [DEBUG] [Thread-130824] [transport.py] [_log()] starting thread (client mode): 0x2b94de10
2025-09-28T17:26:16.074 [DEBUG] [Thread-130824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:16.095 [DEBUG] [Thread-130824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:26:16.095 [INFO] [Thread-130824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:26:16.098 [DEBUG] [Thread-130824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] Compression: none
2025-09-28T17:26:16.099 [DEBUG] [Thread-130824] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:16.115 [DEBUG] [Thread-130824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:16.116 [DEBUG] [Thread-130824] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:16.116 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:26:16.117 [DEBUG] [Thread-130824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:26:16.118 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:16.119 [DEBUG] [Thread-130824] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:16.119 [DEBUG] [Thread-130824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:16.119 [DEBUG] [Thread-130824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:16.119 [DEBUG] [Thread-130824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:26:16.119 [DEBUG] [Thread-130824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:16.144 [INFO] [Thread-130824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:16.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:16.807 [DEBUG] [Thread-130824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:16.807 [DEBUG] [Thread-130824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:16.808 [DEBUG] [Thread-130824] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:26:16.848 [DEBUG] [Thread-130824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:16.849 [DEBUG] [Thread-130824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:16.851 [DEBUG] [Thread-130824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:16.866 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:16.866 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:26:16.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:26:16.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:26:16.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:16.877 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:26:16.878 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:16.878 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:26:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.642789 -999.00  +16.10  20.28     44   +3.90 1 1 1 1 1   887    0 11.02 -42.22 ----- 20.3 20.3 195.6 23.9 19.6 -26.6 19.2 -28.9 20.7 -26.6 21.3 -27.7
2025-09-28T17:26:16.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:26:16.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:26:16.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.642789
2025-09-28T17:26:16.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:26:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:26:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:26:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:26:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:26:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:26:05', tmtdew=13.83, humidity=39.39, cloud=0.0, wind=22.96, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:25:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:26:16.880 [DEBUG] [Thread-130824] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:16.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-28T17:26:16.974 [DEBUG] [Thread-130827] [transport.py] [_log()] starting thread (client mode): 0x2b9b9e10
2025-09-28T17:26:16.974 [DEBUG] [Thread-130827] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:16.989 [DEBUG] [Thread-130827] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:26:16.989 [INFO] [Thread-130827] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:16.997 [DEBUG] [Thread-130827] [transport.py] [_log()] Compression: none
2025-09-28T17:26:16.998 [DEBUG] [Thread-130827] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:17.059 [DEBUG] [Thread-130827] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:17.059 [DEBUG] [Thread-130827] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:17.060 [DEBUG] [Thread-130827] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:26:17.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:26:17.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:17.115 [DEBUG] [Thread-130827] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:17.115 [DEBUG] [Thread-130827] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:17.115 [DEBUG] [Thread-130827] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:17.116 [DEBUG] [Thread-130827] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:26:17.116 [DEBUG] [Thread-130827] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:17.135 [INFO] [Thread-130827] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:17.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-28T17:26:17.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:18.037 [DEBUG] [Thread-130827] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:18.037 [DEBUG] [Thread-130827] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:18.085 [DEBUG] [Thread-130827] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:18.085 [DEBUG] [Thread-130827] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:18.094 [DEBUG] [Thread-130827] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:18.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:18.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-28T17:26:18.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-28T17:26:18.121 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:18.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:18.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:18.129 [DEBUG] [Thread-130827] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:23.895 [DEBUG] [Thread-130829 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:25.188 [DEBUG] [Thread-130830 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:28.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:26:28.132 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:26:28.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-28T17:26:28.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 26, 5), 13.83, 39.39, 0.0, 22.96, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:26:28.732 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:26:05
2025-09-28T17:26:28.744 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:28.745 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:28.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:26:28.996 [DEBUG] [Thread-130831] [transport.py] [_log()] starting thread (client mode): 0x2b9bb940
2025-09-28T17:26:28.997 [DEBUG] [Thread-130831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:29.017 [DEBUG] [Thread-130831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:26:29.017 [INFO] [Thread-130831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:29.020 [DEBUG] [Thread-130831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] Compression: none
2025-09-28T17:26:29.021 [DEBUG] [Thread-130831] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:29.028 [DEBUG] [Thread-130831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:29.028 [DEBUG] [Thread-130831] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:29.028 [DEBUG] [Thread-130831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:26:29.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:26:29.029 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:29.029 [DEBUG] [Thread-130831] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:29.029 [DEBUG] [Thread-130831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:29.029 [DEBUG] [Thread-130831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:29.029 [DEBUG] [Thread-130831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:26:29.029 [DEBUG] [Thread-130831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:29.038 [INFO] [Thread-130831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:29.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:29.610 [DEBUG] [Thread-130831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:29.610 [DEBUG] [Thread-130831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:29.610 [DEBUG] [Thread-130831] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:26:29.652 [DEBUG] [Thread-130831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:29.652 [DEBUG] [Thread-130831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:29.654 [DEBUG] [Thread-130831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:29.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:29.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:26:29.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:26:29.668 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:26:29.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:29.672 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:26:29.672 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643137 -999.00  +16.00  12.28     44   +3.90 1 1 1 1 1   887    0 11.09 -41.18 ----- 12.3 12.3 226.8 27.0 19.6 -27.8 19.2 -26.4 20.6 -26.6 21.2 -27.6
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643137
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:26:29.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:26:05', tmtdew=13.83, humidity=39.39, cloud=0.0, wind=22.96, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:26:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:26:29.673 [DEBUG] [Thread-130831] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:29.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-28T17:26:29.758 [DEBUG] [Thread-130834] [transport.py] [_log()] starting thread (client mode): 0x2b9dcac0
2025-09-28T17:26:29.758 [DEBUG] [Thread-130834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:29.774 [DEBUG] [Thread-130834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:26:29.774 [INFO] [Thread-130834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:29.781 [DEBUG] [Thread-130834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] Compression: none
2025-09-28T17:26:29.782 [DEBUG] [Thread-130834] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:29.838 [DEBUG] [Thread-130834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:29.838 [DEBUG] [Thread-130834] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:29.838 [DEBUG] [Thread-130834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:26:29.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:26:29.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:29.895 [DEBUG] [Thread-130834] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:29.895 [DEBUG] [Thread-130834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:29.895 [DEBUG] [Thread-130834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:29.895 [DEBUG] [Thread-130834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:26:29.896 [DEBUG] [Thread-130834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:29.909 [INFO] [Thread-130834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:29.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-28T17:26:29.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:30.854 [DEBUG] [Thread-130834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:30.854 [DEBUG] [Thread-130834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:30.902 [DEBUG] [Thread-130834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:30.902 [DEBUG] [Thread-130834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:30.911 [DEBUG] [Thread-130834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:30.919 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:30.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-28T17:26:30.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-28T17:26:30.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:30.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:30.935 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:30.943 [DEBUG] [Thread-130834] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:40.229 [DEBUG] [Thread-130836 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:40.944 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:26:40.945 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:26:40.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-28T17:26:41.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 26, 37), 13.78, 39.37, 0.0, 22.11, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:26:41.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:26:37
2025-09-28T17:26:41.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:26:41.813 [DEBUG] [Thread-130837] [transport.py] [_log()] starting thread (client mode): 0x2b9bab00
2025-09-28T17:26:41.813 [DEBUG] [Thread-130837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:41.834 [DEBUG] [Thread-130837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:26:41.834 [INFO] [Thread-130837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:26:41.837 [DEBUG] [Thread-130837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:41.837 [DEBUG] [Thread-130837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:26:41.837 [DEBUG] [Thread-130837] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:41.838 [DEBUG] [Thread-130837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:41.839 [DEBUG] [Thread-130837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:41.839 [DEBUG] [Thread-130837] [transport.py] [_log()] Compression: none
2025-09-28T17:26:41.839 [DEBUG] [Thread-130837] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:41.857 [DEBUG] [Thread-130837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:41.857 [DEBUG] [Thread-130837] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:41.858 [DEBUG] [Thread-130837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:26:41.858 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:26:41.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:41.860 [DEBUG] [Thread-130837] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:41.860 [DEBUG] [Thread-130837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:41.860 [DEBUG] [Thread-130837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:41.860 [DEBUG] [Thread-130837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:26:41.860 [DEBUG] [Thread-130837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:41.895 [INFO] [Thread-130837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:41.896 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:42.508 [DEBUG] [Thread-130837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:42.508 [DEBUG] [Thread-130837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:42.508 [DEBUG] [Thread-130837] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:26:42.549 [DEBUG] [Thread-130837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:42.549 [DEBUG] [Thread-130837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:42.553 [DEBUG] [Thread-130837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:42.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:42.565 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:26:42.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:26:42.568 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:26:42.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:42.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:26:42.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:42.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:42.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:26:42.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643137 -999.00  +16.00  12.28     44   +3.90 1 1 1 1 1   887    0 11.09 -41.18 ----- 12.3 12.3 226.8 27.0 19.6 -27.8 19.2 -26.4 20.6 -26.6 21.2 -27.6
2025-09-28T17:26:42.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:26:42.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:26:42.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643137
2025-09-28T17:26:42.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:26:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:26:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:26:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:26:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:26:42.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:26:37', tmtdew=13.78, humidity=39.37, cloud=0.0, wind=22.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:26:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:26:42.578 [DEBUG] [Thread-130837] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:42.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-28T17:26:42.675 [DEBUG] [Thread-130840] [transport.py] [_log()] starting thread (client mode): 0x2e3c3550
2025-09-28T17:26:42.675 [DEBUG] [Thread-130840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:42.689 [DEBUG] [Thread-130840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:26:42.689 [INFO] [Thread-130840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:26:42.697 [DEBUG] [Thread-130840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:42.697 [DEBUG] [Thread-130840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] Compression: none
2025-09-28T17:26:42.698 [DEBUG] [Thread-130840] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:42.755 [DEBUG] [Thread-130840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:42.755 [DEBUG] [Thread-130840] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:42.756 [DEBUG] [Thread-130840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:26:42.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:26:42.756 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:42.811 [DEBUG] [Thread-130840] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:42.812 [DEBUG] [Thread-130840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:42.812 [DEBUG] [Thread-130840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:42.812 [DEBUG] [Thread-130840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:26:42.812 [DEBUG] [Thread-130840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:42.834 [INFO] [Thread-130840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:42.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-28T17:26:42.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:43.800 [DEBUG] [Thread-130840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:43.800 [DEBUG] [Thread-130840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:43.848 [DEBUG] [Thread-130840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:43.848 [DEBUG] [Thread-130840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:43.857 [DEBUG] [Thread-130840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:43.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:43.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-28T17:26:43.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') -> 00000000
2025-09-28T17:26:43.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:43.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:43.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:43.893 [DEBUG] [Thread-130840] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:53.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:26:53.896 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:26:53.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-28T17:26:54.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 26, 37), 13.78, 39.37, 0.0, 22.11, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:26:54.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:26:37
2025-09-28T17:26:54.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:26:54.764 [DEBUG] [Thread-130842] [transport.py] [_log()] starting thread (client mode): 0x2b9de3e0
2025-09-28T17:26:54.765 [DEBUG] [Thread-130842] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:54.784 [DEBUG] [Thread-130842] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:26:54.785 [INFO] [Thread-130842] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:26:54.788 [DEBUG] [Thread-130842] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:54.788 [DEBUG] [Thread-130842] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:26:54.788 [DEBUG] [Thread-130842] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:54.788 [DEBUG] [Thread-130842] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:54.788 [DEBUG] [Thread-130842] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] Compression: none
2025-09-28T17:26:54.789 [DEBUG] [Thread-130842] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:54.806 [DEBUG] [Thread-130842] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:54.806 [DEBUG] [Thread-130842] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:54.807 [DEBUG] [Thread-130842] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:26:54.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:26:54.807 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:54.809 [DEBUG] [Thread-130842] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:54.809 [DEBUG] [Thread-130842] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:54.809 [DEBUG] [Thread-130842] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:54.809 [DEBUG] [Thread-130842] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:26:54.809 [DEBUG] [Thread-130842] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:54.833 [INFO] [Thread-130842] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:54.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:55.283 [DEBUG] [Thread-130844 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:26:55.481 [DEBUG] [Thread-130842] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:55.482 [DEBUG] [Thread-130842] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:55.482 [DEBUG] [Thread-130842] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:26:55.523 [DEBUG] [Thread-130842] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:55.523 [DEBUG] [Thread-130842] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:55.525 [DEBUG] [Thread-130842] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:55.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:55.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:26:55.538 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:26:55.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:26:55.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:55.542 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:26:55.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643137 -999.00  +16.00  12.28     44   +3.90 1 1 1 1 1   887    0 11.09 -41.18 ----- 12.3 12.3 226.8 27.0 19.6 -27.8 19.2 -26.4 20.6 -26.6 21.2 -27.6
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:26:55.542 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643137
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:26:55.543 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:26:37', tmtdew=13.78, humidity=39.37, cloud=0.0, wind=22.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:26:07.037', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:26:55.543 [DEBUG] [Thread-130842] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:26:55.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-28T17:26:55.625 [DEBUG] [Thread-130846] [transport.py] [_log()] starting thread (client mode): 0x2b9dccd0
2025-09-28T17:26:55.625 [DEBUG] [Thread-130846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:26:55.640 [DEBUG] [Thread-130846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:26:55.640 [INFO] [Thread-130846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:26:55.647 [DEBUG] [Thread-130846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:26:55.648 [DEBUG] [Thread-130846] [transport.py] [_log()] client lang: <none>
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] server lang: <none>
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] kex follows: False
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:26:55.649 [DEBUG] [Thread-130846] [transport.py] [_log()] Compression: none
2025-09-28T17:26:55.650 [DEBUG] [Thread-130846] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:26:55.708 [DEBUG] [Thread-130846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:26:55.708 [DEBUG] [Thread-130846] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:26:55.709 [DEBUG] [Thread-130846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:26:55.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:26:55.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:26:55.770 [DEBUG] [Thread-130846] [transport.py] [_log()] userauth is OK
2025-09-28T17:26:55.770 [DEBUG] [Thread-130846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:26:55.771 [DEBUG] [Thread-130846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:26:55.771 [DEBUG] [Thread-130846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:26:55.771 [DEBUG] [Thread-130846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:26:55.790 [INFO] [Thread-130846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:26:55.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-28T17:26:55.791 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:26:56.713 [DEBUG] [Thread-130846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:26:56.714 [DEBUG] [Thread-130846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:26:56.761 [DEBUG] [Thread-130846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:26:56.761 [DEBUG] [Thread-130846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:26:56.771 [DEBUG] [Thread-130846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:26:56.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:26:56.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')
2025-09-28T17:26:56.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-28T17:26:56.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:26:56.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:26:56.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:26:56.808 [DEBUG] [Thread-130846] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:06.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:27:06.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:27:06.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-28T17:27:07.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 26, 37), 13.78, 39.37, 0.0, 22.11, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:27:07.437 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:26:37
2025-09-28T17:27:07.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:27:07.702 [DEBUG] [Thread-130848] [transport.py] [_log()] starting thread (client mode): 0x2b9dd210
2025-09-28T17:27:07.702 [DEBUG] [Thread-130848] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:07.723 [DEBUG] [Thread-130848] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:27:07.723 [INFO] [Thread-130848] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] Compression: none
2025-09-28T17:27:07.727 [DEBUG] [Thread-130848] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:07.744 [DEBUG] [Thread-130848] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:07.744 [DEBUG] [Thread-130848] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:27:07.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:27:07.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:27:07.745 [DEBUG] [Thread-130848] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:07.755 [INFO] [Thread-130848] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:07.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:08.420 [DEBUG] [Thread-130848] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:08.420 [DEBUG] [Thread-130848] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:08.420 [DEBUG] [Thread-130848] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:27:08.461 [DEBUG] [Thread-130848] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:08.461 [DEBUG] [Thread-130848] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:08.463 [DEBUG] [Thread-130848] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:08.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:08.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:27:08.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:27:08.478 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:27:08.481 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:08.482 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:27:08.482 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643483 -999.00  +15.90  17.32     44   +3.90 1 1 1 1 1   887    0 11.02 -41.61 ----- 17.3 17.3 203.6 22.5 19.5 -27.6 19.2 -27.1 20.5 -26.7 21.2 -28.0
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643483
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:27:08.482 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:26:37', tmtdew=13.78, humidity=39.37, cloud=0.0, wind=22.11, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:26:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:27:08.483 [DEBUG] [Thread-130848] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:08.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-28T17:27:08.568 [DEBUG] [Thread-130851] [transport.py] [_log()] starting thread (client mode): 0x2b9def80
2025-09-28T17:27:08.568 [DEBUG] [Thread-130851] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:08.582 [DEBUG] [Thread-130851] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:27:08.582 [INFO] [Thread-130851] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] Compression: none
2025-09-28T17:27:08.590 [DEBUG] [Thread-130851] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:08.646 [DEBUG] [Thread-130851] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:08.646 [DEBUG] [Thread-130851] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:08.647 [DEBUG] [Thread-130851] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:27:08.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:27:08.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:08.703 [DEBUG] [Thread-130851] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:08.703 [DEBUG] [Thread-130851] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:08.703 [DEBUG] [Thread-130851] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:08.703 [DEBUG] [Thread-130851] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:27:08.704 [DEBUG] [Thread-130851] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:08.720 [INFO] [Thread-130851] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:08.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-28T17:27:08.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:09.662 [DEBUG] [Thread-130851] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:09.663 [DEBUG] [Thread-130851] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:09.711 [DEBUG] [Thread-130851] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:09.711 [DEBUG] [Thread-130851] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:09.719 [DEBUG] [Thread-130851] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:09.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:09.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-28T17:27:09.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-28T17:27:09.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:09.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:09.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:09.753 [DEBUG] [Thread-130851] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:10.336 [DEBUG] [Thread-130853 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:19.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:27:19.756 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:27:19.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-28T17:27:20.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 27, 9), 13.73, 39.51, 0.0, 22.5, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:27:20.352 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:27:09
2025-09-28T17:27:20.462 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:27:20.610 [DEBUG] [Thread-130854] [transport.py] [_log()] starting thread (client mode): 0x2b9df8b0
2025-09-28T17:27:20.610 [DEBUG] [Thread-130854] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:20.630 [DEBUG] [Thread-130854] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:27:20.630 [INFO] [Thread-130854] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] Compression: none
2025-09-28T17:27:20.633 [DEBUG] [Thread-130854] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:20.651 [DEBUG] [Thread-130854] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:20.651 [DEBUG] [Thread-130854] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:20.651 [DEBUG] [Thread-130854] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:27:20.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:27:20.651 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:20.652 [DEBUG] [Thread-130854] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:20.652 [DEBUG] [Thread-130854] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:20.652 [DEBUG] [Thread-130854] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:20.652 [DEBUG] [Thread-130854] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:27:20.652 [DEBUG] [Thread-130854] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:20.661 [INFO] [Thread-130854] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:20.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:21.323 [DEBUG] [Thread-130854] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:21.323 [DEBUG] [Thread-130854] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:21.323 [DEBUG] [Thread-130854] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:27:21.364 [DEBUG] [Thread-130854] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:21.364 [DEBUG] [Thread-130854] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:21.367 [DEBUG] [Thread-130854] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:21.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:21.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:27:21.380 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:27:21.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:27:21.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:21.390 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:27:21.390 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:21.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:27:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643483 -999.00  +15.90  17.32     44   +3.90 1 1 1 1 1   887    0 11.02 -41.61 ----- 17.3 17.3 203.6 22.5 19.5 -27.6 19.2 -27.1 20.5 -26.7 21.2 -28.0
2025-09-28T17:27:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:27:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:27:21.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643483
2025-09-28T17:27:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:27:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:27:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:27:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:27:21.392 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:27:21.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:27:09', tmtdew=13.73, humidity=39.51, cloud=0.0, wind=22.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:26:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:27:21.393 [DEBUG] [Thread-130854] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:21.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-28T17:27:21.492 [DEBUG] [Thread-130857] [transport.py] [_log()] starting thread (client mode): 0x2b9dd060
2025-09-28T17:27:21.492 [DEBUG] [Thread-130857] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:21.506 [DEBUG] [Thread-130857] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:27:21.506 [INFO] [Thread-130857] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:27:21.514 [DEBUG] [Thread-130857] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:21.514 [DEBUG] [Thread-130857] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] Compression: none
2025-09-28T17:27:21.515 [DEBUG] [Thread-130857] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:21.571 [DEBUG] [Thread-130857] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:21.572 [DEBUG] [Thread-130857] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:21.572 [DEBUG] [Thread-130857] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:27:21.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:27:21.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:21.628 [DEBUG] [Thread-130857] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:21.628 [DEBUG] [Thread-130857] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:21.628 [DEBUG] [Thread-130857] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:21.628 [DEBUG] [Thread-130857] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:27:21.628 [DEBUG] [Thread-130857] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:21.648 [INFO] [Thread-130857] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:21.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-28T17:27:21.649 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:22.548 [DEBUG] [Thread-130857] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:22.548 [DEBUG] [Thread-130857] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:22.596 [DEBUG] [Thread-130857] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:22.596 [DEBUG] [Thread-130857] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:22.605 [DEBUG] [Thread-130857] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:22.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:22.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-28T17:27:22.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-28T17:27:22.632 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:22.632 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:22.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:22.640 [DEBUG] [Thread-130857] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:23.958 [DEBUG] [Thread-130859 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:25.376 [DEBUG] [Thread-130860 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:28.888 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:28.889 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:32.633 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:27:32.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:27:32.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:27:33.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 27, 9), 13.73, 39.51, 0.0, 22.5, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:27:33.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:27:09
2025-09-28T17:27:33.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:27:33.507 [DEBUG] [Thread-130861] [transport.py] [_log()] starting thread (client mode): 0x2b9de8f0
2025-09-28T17:27:33.507 [DEBUG] [Thread-130861] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:33.527 [DEBUG] [Thread-130861] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:27:33.527 [INFO] [Thread-130861] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:27:33.530 [DEBUG] [Thread-130861] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:33.530 [DEBUG] [Thread-130861] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:27:33.530 [DEBUG] [Thread-130861] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:33.530 [DEBUG] [Thread-130861] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:33.530 [DEBUG] [Thread-130861] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] Compression: none
2025-09-28T17:27:33.531 [DEBUG] [Thread-130861] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:33.548 [DEBUG] [Thread-130861] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:33.548 [DEBUG] [Thread-130861] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:33.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:27:33.550 [DEBUG] [Thread-130861] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:27:33.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:33.593 [DEBUG] [Thread-130861] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:33.593 [DEBUG] [Thread-130861] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:33.593 [DEBUG] [Thread-130861] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:33.593 [DEBUG] [Thread-130861] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:27:33.593 [DEBUG] [Thread-130861] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:33.617 [INFO] [Thread-130861] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:33.618 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:34.220 [DEBUG] [Thread-130861] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:34.220 [DEBUG] [Thread-130861] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:34.221 [DEBUG] [Thread-130861] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:27:34.261 [DEBUG] [Thread-130861] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:34.261 [DEBUG] [Thread-130861] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:34.264 [DEBUG] [Thread-130861] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:34.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:34.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:27:34.271 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:27:34.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:27:34.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:34.278 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:27:34.278 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:34.278 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643831 -999.00  +16.00  10.23     44   +4.00 1 1 1 1 1   887    0 11.08 -44.23 ----- 10.2 10.2 235.3 22.8 19.5 -27.3 19.2 -26.0 20.5 -26.3 21.2 -27.0
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643831
2025-09-28T17:27:34.279 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:27:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:27:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:27:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:27:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:27:34.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:27:09', tmtdew=13.73, humidity=39.51, cloud=0.0, wind=22.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:27:34.280 [DEBUG] [Thread-130861] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:34.360 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:27:34.371 [DEBUG] [Thread-130864] [transport.py] [_log()] starting thread (client mode): 0x2e363fa0
2025-09-28T17:27:34.371 [DEBUG] [Thread-130864] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:34.386 [DEBUG] [Thread-130864] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:27:34.386 [INFO] [Thread-130864] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:27:34.393 [DEBUG] [Thread-130864] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:34.394 [DEBUG] [Thread-130864] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:34.395 [DEBUG] [Thread-130864] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:34.395 [DEBUG] [Thread-130864] [transport.py] [_log()] Compression: none
2025-09-28T17:27:34.395 [DEBUG] [Thread-130864] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:34.451 [DEBUG] [Thread-130864] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:34.452 [DEBUG] [Thread-130864] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:34.452 [DEBUG] [Thread-130864] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:27:34.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:27:34.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:34.508 [DEBUG] [Thread-130864] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:34.508 [DEBUG] [Thread-130864] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:34.508 [DEBUG] [Thread-130864] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:34.508 [DEBUG] [Thread-130864] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:27:34.508 [DEBUG] [Thread-130864] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:34.526 [INFO] [Thread-130864] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:34.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-28T17:27:34.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:35.455 [DEBUG] [Thread-130864] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:35.456 [DEBUG] [Thread-130864] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:35.503 [DEBUG] [Thread-130864] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:35.503 [DEBUG] [Thread-130864] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:35.512 [DEBUG] [Thread-130864] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:35.525 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:35.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-28T17:27:35.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') -> 00000000
2025-09-28T17:27:35.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:35.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:35.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:35.550 [DEBUG] [Thread-130864] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:40.422 [DEBUG] [Thread-130866 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:45.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:27:45.545 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:27:45.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-28T17:27:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 27, 41), 13.64, 39.59, 0.0, 22.59, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:27:46.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:27:41
2025-09-28T17:27:46.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:27:46.455 [DEBUG] [Thread-130867] [transport.py] [_log()] starting thread (client mode): 0x2b9df040
2025-09-28T17:27:46.455 [DEBUG] [Thread-130867] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:46.475 [DEBUG] [Thread-130867] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:27:46.475 [INFO] [Thread-130867] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:27:46.478 [DEBUG] [Thread-130867] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:46.478 [DEBUG] [Thread-130867] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:27:46.478 [DEBUG] [Thread-130867] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] Compression: none
2025-09-28T17:27:46.479 [DEBUG] [Thread-130867] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:46.493 [DEBUG] [Thread-130867] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:46.493 [DEBUG] [Thread-130867] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:46.493 [DEBUG] [Thread-130867] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:27:46.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:27:46.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:46.547 [DEBUG] [Thread-130867] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:46.547 [DEBUG] [Thread-130867] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:46.547 [DEBUG] [Thread-130867] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:46.547 [DEBUG] [Thread-130867] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:27:46.547 [DEBUG] [Thread-130867] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:46.563 [INFO] [Thread-130867] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:46.563 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:47.210 [DEBUG] [Thread-130867] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:47.210 [DEBUG] [Thread-130867] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:47.210 [DEBUG] [Thread-130867] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:27:47.251 [DEBUG] [Thread-130867] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:47.251 [DEBUG] [Thread-130867] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:47.253 [DEBUG] [Thread-130867] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:47.266 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:47.266 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:27:47.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:27:47.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:27:47.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:47.271 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:27:47.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643831 -999.00  +16.00  10.23     44   +4.00 1 1 1 1 1   887    0 11.08 -44.23 ----- 10.2 10.2 235.3 22.8 19.5 -27.3 19.2 -26.0 20.5 -26.3 21.2 -27.0
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:27:47.271 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643831
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:27:47.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:27:41', tmtdew=13.64, humidity=39.59, cloud=0.0, wind=22.59, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:27:47.273 [DEBUG] [Thread-130867] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27: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-28T17:27:47.359 [DEBUG] [Thread-130870] [transport.py] [_log()] starting thread (client mode): 0x2b9dc820
2025-09-28T17:27:47.359 [DEBUG] [Thread-130870] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:47.373 [DEBUG] [Thread-130870] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:27:47.373 [INFO] [Thread-130870] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] Compression: none
2025-09-28T17:27:47.381 [DEBUG] [Thread-130870] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:47.439 [DEBUG] [Thread-130870] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:47.439 [DEBUG] [Thread-130870] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:47.439 [DEBUG] [Thread-130870] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:27:47.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:27:47.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:47.502 [DEBUG] [Thread-130870] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:47.502 [DEBUG] [Thread-130870] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:47.502 [DEBUG] [Thread-130870] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:47.502 [DEBUG] [Thread-130870] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:27:47.502 [DEBUG] [Thread-130870] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:47.519 [INFO] [Thread-130870] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:47.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-28T17:27:47.519 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:27:48.486 [DEBUG] [Thread-130870] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:27:48.486 [DEBUG] [Thread-130870] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:27:48.534 [DEBUG] [Thread-130870] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:27:48.534 [DEBUG] [Thread-130870] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:27:48.542 [DEBUG] [Thread-130870] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:27:48.551 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:27:48.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-28T17:27:48.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-28T17:27:48.566 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:27:48.566 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:27:48.567 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:27:48.574 [DEBUG] [Thread-130870] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:27:55.463 [DEBUG] [Thread-130872 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:27:58.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:27:58.577 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:27:58.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-28T17:27:59.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 27, 41), 13.64, 39.59, 0.0, 22.59, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:27:59.186 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:27:41
2025-09-28T17:27:59.295 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:27:59.443 [DEBUG] [Thread-130873] [transport.py] [_log()] starting thread (client mode): 0x2b9ddd20
2025-09-28T17:27:59.443 [DEBUG] [Thread-130873] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:27:59.463 [DEBUG] [Thread-130873] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:27:59.463 [INFO] [Thread-130873] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:27:59.466 [DEBUG] [Thread-130873] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:27:59.466 [DEBUG] [Thread-130873] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:27:59.466 [DEBUG] [Thread-130873] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:27:59.466 [DEBUG] [Thread-130873] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] client lang: <none>
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] server lang: <none>
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] kex follows: False
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] Compression: none
2025-09-28T17:27:59.467 [DEBUG] [Thread-130873] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:27:59.484 [DEBUG] [Thread-130873] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:27:59.485 [DEBUG] [Thread-130873] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:27:59.485 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:27:59.485 [DEBUG] [Thread-130873] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:27:59.486 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:27:59.488 [DEBUG] [Thread-130873] [transport.py] [_log()] userauth is OK
2025-09-28T17:27:59.488 [DEBUG] [Thread-130873] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:27:59.488 [DEBUG] [Thread-130873] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:27:59.488 [DEBUG] [Thread-130873] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:27:59.488 [DEBUG] [Thread-130873] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:27:59.504 [INFO] [Thread-130873] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:27:59.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:00.148 [DEBUG] [Thread-130873] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:00.148 [DEBUG] [Thread-130873] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:00.148 [DEBUG] [Thread-130873] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:28:00.189 [DEBUG] [Thread-130873] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:00.190 [DEBUG] [Thread-130873] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:00.192 [DEBUG] [Thread-130873] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:00.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:00.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:28:00.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:28:00.208 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:28:00.213 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:00.215 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:28:00.215 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:00.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:00.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:28:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.643831 -999.00  +16.00  10.23     44   +4.00 1 1 1 1 1   887    0 11.08 -44.23 ----- 10.2 10.2 235.3 22.8 19.5 -27.3 19.2 -26.0 20.5 -26.3 21.2 -27.0
2025-09-28T17:28:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:28:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:28:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.643831
2025-09-28T17:28:00.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:28:00.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:28:00.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:28:00.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:28:00.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:28:00.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:27:41', tmtdew=13.64, humidity=39.59, cloud=0.0, wind=22.59, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:06.998', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:28:00.217 [DEBUG] [Thread-130873] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:00.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-28T17:28:00.311 [DEBUG] [Thread-130876] [transport.py] [_log()] starting thread (client mode): 0x2b9df7c0
2025-09-28T17:28:00.312 [DEBUG] [Thread-130876] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:00.326 [DEBUG] [Thread-130876] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:28:00.326 [INFO] [Thread-130876] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:00.334 [DEBUG] [Thread-130876] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:00.335 [DEBUG] [Thread-130876] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:00.336 [DEBUG] [Thread-130876] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:00.336 [DEBUG] [Thread-130876] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:00.336 [DEBUG] [Thread-130876] [transport.py] [_log()] Compression: none
2025-09-28T17:28:00.336 [DEBUG] [Thread-130876] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:00.392 [DEBUG] [Thread-130876] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:00.392 [DEBUG] [Thread-130876] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:00.393 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:28:00.393 [DEBUG] [Thread-130876] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:28:00.394 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:00.448 [DEBUG] [Thread-130876] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:00.448 [DEBUG] [Thread-130876] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:00.448 [DEBUG] [Thread-130876] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:00.449 [DEBUG] [Thread-130876] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:28:00.449 [DEBUG] [Thread-130876] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:00.467 [INFO] [Thread-130876] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:00.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-28T17:28:00.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:01.412 [DEBUG] [Thread-130876] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:01.412 [DEBUG] [Thread-130876] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:01.460 [DEBUG] [Thread-130876] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:01.460 [DEBUG] [Thread-130876] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:01.470 [DEBUG] [Thread-130876] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:01.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28: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')
2025-09-28T17:28:01.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') -> 00000000
2025-09-28T17:28:01.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:01.496 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:01.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:01.504 [DEBUG] [Thread-130876] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:10.511 [DEBUG] [Thread-130878 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:11.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:28:11.508 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:28:11.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-28T17:28:12.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 27, 41), 13.64, 39.59, 0.0, 22.59, 15.75, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:28:12.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:27:41
2025-09-28T17:28:12.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:28:12.366 [DEBUG] [Thread-130879] [transport.py] [_log()] starting thread (client mode): 0x2b94c430
2025-09-28T17:28:12.366 [DEBUG] [Thread-130879] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:12.387 [DEBUG] [Thread-130879] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:28:12.387 [INFO] [Thread-130879] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:12.390 [DEBUG] [Thread-130879] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] Compression: none
2025-09-28T17:28:12.391 [DEBUG] [Thread-130879] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:12.408 [DEBUG] [Thread-130879] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:12.408 [DEBUG] [Thread-130879] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:12.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:28:12.410 [DEBUG] [Thread-130879] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:28:12.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:12.412 [DEBUG] [Thread-130879] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:12.412 [DEBUG] [Thread-130879] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:12.412 [DEBUG] [Thread-130879] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:12.412 [DEBUG] [Thread-130879] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:28:12.412 [DEBUG] [Thread-130879] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:12.437 [INFO] [Thread-130879] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:12.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:13.124 [DEBUG] [Thread-130879] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:13.124 [DEBUG] [Thread-130879] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:13.124 [DEBUG] [Thread-130879] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:28:13.165 [DEBUG] [Thread-130879] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:13.165 [DEBUG] [Thread-130879] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:13.168 [DEBUG] [Thread-130879] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:13.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:13.180 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:28:13.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:28:13.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:28:13.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:13.185 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:28:13.185 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.644178 -999.00  +16.00  15.38     44   +4.00 1 1 1 1 1   887    0 11.10 -40.42 ----- 15.4 15.4 210.5 25.8 19.4 -27.5 19.2 -27.7 20.4 -27.0 21.1 -28.5
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.644178
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:28:13.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:27:41', tmtdew=13.64, humidity=39.59, cloud=0.0, wind=22.59, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:28:13.186 [DEBUG] [Thread-130879] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:13.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-28T17:28:13.272 [DEBUG] [Thread-130882] [transport.py] [_log()] starting thread (client mode): 0x2e363fa0
2025-09-28T17:28:13.273 [DEBUG] [Thread-130882] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:13.288 [DEBUG] [Thread-130882] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:28:13.288 [INFO] [Thread-130882] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:13.295 [DEBUG] [Thread-130882] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] Compression: none
2025-09-28T17:28:13.296 [DEBUG] [Thread-130882] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:13.350 [DEBUG] [Thread-130882] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:13.351 [DEBUG] [Thread-130882] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:13.351 [DEBUG] [Thread-130882] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:28:13.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:28:13.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:13.408 [DEBUG] [Thread-130882] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:13.408 [DEBUG] [Thread-130882] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:13.408 [DEBUG] [Thread-130882] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:13.408 [DEBUG] [Thread-130882] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:28:13.408 [DEBUG] [Thread-130882] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:13.422 [INFO] [Thread-130882] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:13.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-28T17:28:13.422 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:14.349 [DEBUG] [Thread-130882] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:14.349 [DEBUG] [Thread-130882] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:14.397 [DEBUG] [Thread-130882] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:14.397 [DEBUG] [Thread-130882] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:14.405 [DEBUG] [Thread-130882] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:14.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:14.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-28T17:28:14.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-28T17:28:14.429 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:14.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:14.429 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:14.437 [DEBUG] [Thread-130882] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:24.007 [DEBUG] [Thread-130884 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:24.440 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:28:24.440 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:28:24.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-28T17:28:25.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 28, 12), 13.61, 39.67, 0.0, 21.0, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:28:25.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:28:12
2025-09-28T17:28:25.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:28:25.312 [DEBUG] [Thread-130885] [transport.py] [_log()] starting thread (client mode): 0x2b9bab90
2025-09-28T17:28:25.312 [DEBUG] [Thread-130885] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:25.331 [DEBUG] [Thread-130885] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:28:25.331 [INFO] [Thread-130885] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] Compression: none
2025-09-28T17:28:25.334 [DEBUG] [Thread-130885] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:25.354 [DEBUG] [Thread-130885] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:25.355 [DEBUG] [Thread-130885] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:25.355 [DEBUG] [Thread-130885] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:28:25.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:28:25.355 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:25.356 [DEBUG] [Thread-130885] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:25.356 [DEBUG] [Thread-130885] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:25.356 [DEBUG] [Thread-130885] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:25.356 [DEBUG] [Thread-130885] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:28:25.356 [DEBUG] [Thread-130885] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:25.365 [INFO] [Thread-130885] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:25.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:25.541 [DEBUG] [Thread-130887 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:26.007 [DEBUG] [Thread-130885] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:26.007 [DEBUG] [Thread-130885] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:26.007 [DEBUG] [Thread-130885] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:28:26.048 [DEBUG] [Thread-130885] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:26.048 [DEBUG] [Thread-130885] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:26.050 [DEBUG] [Thread-130885] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:26.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:26.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:28:26.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:28:26.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:28:26.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:26.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:28:26.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.644178 -999.00  +16.00  15.38     44   +4.00 1 1 1 1 1   887    0 11.10 -40.42 ----- 15.4 15.4 210.5 25.8 19.4 -27.5 19.2 -27.7 20.4 -27.0 21.1 -28.5
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.644178
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:28:26.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:28:12', tmtdew=13.61, humidity=39.67, cloud=0.0, wind=21.0, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:28:26.070 [DEBUG] [Thread-130885] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:26.144 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:28:26.153 [DEBUG] [Thread-130889] [transport.py] [_log()] starting thread (client mode): 0x2b9df9a0
2025-09-28T17:28:26.153 [DEBUG] [Thread-130889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:26.169 [DEBUG] [Thread-130889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:28:26.169 [INFO] [Thread-130889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:26.176 [DEBUG] [Thread-130889] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] Compression: none
2025-09-28T17:28:26.177 [DEBUG] [Thread-130889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:26.231 [DEBUG] [Thread-130889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:26.232 [DEBUG] [Thread-130889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:26.232 [DEBUG] [Thread-130889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:28:26.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:28:26.232 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:26.292 [DEBUG] [Thread-130889] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:26.292 [DEBUG] [Thread-130889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:26.292 [DEBUG] [Thread-130889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:26.292 [DEBUG] [Thread-130889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:28:26.292 [DEBUG] [Thread-130889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:26.310 [INFO] [Thread-130889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:26.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-28T17:28:26.310 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:27.263 [DEBUG] [Thread-130889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:27.263 [DEBUG] [Thread-130889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:27.311 [DEBUG] [Thread-130889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:27.311 [DEBUG] [Thread-130889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:27.319 [DEBUG] [Thread-130889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:27.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:27.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-28T17:28:27.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-28T17:28:27.342 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:27.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:27.343 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:27.350 [DEBUG] [Thread-130889] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:29.029 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:29.030 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:37.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:28:37.353 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:28:37.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-28T17:28:37.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 28, 12), 13.61, 39.67, 0.0, 21.0, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:28:37.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:28:12
2025-09-28T17:28:38.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:28:38.223 [DEBUG] [Thread-130891] [transport.py] [_log()] starting thread (client mode): 0x2b996c50
2025-09-28T17:28:38.224 [DEBUG] [Thread-130891] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:38.243 [DEBUG] [Thread-130891] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:28:38.243 [INFO] [Thread-130891] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:28:38.244 [DEBUG] [Thread-130891] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] Compression: none
2025-09-28T17:28:38.245 [DEBUG] [Thread-130891] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:38.253 [DEBUG] [Thread-130891] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:38.253 [DEBUG] [Thread-130891] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:38.254 [DEBUG] [Thread-130891] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:28:38.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:28:38.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:38.255 [DEBUG] [Thread-130891] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:38.255 [DEBUG] [Thread-130891] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:38.255 [DEBUG] [Thread-130891] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:38.255 [DEBUG] [Thread-130891] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:28:38.255 [DEBUG] [Thread-130891] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:38.267 [INFO] [Thread-130891] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:38.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:38.904 [DEBUG] [Thread-130891] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:38.904 [DEBUG] [Thread-130891] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:38.905 [DEBUG] [Thread-130891] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:28:38.945 [DEBUG] [Thread-130891] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:38.946 [DEBUG] [Thread-130891] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:38.949 [DEBUG] [Thread-130891] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:38.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:38.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:28:38.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:28:38.973 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:28:38.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:38.979 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:28:38.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.644178 -999.00  +16.00  15.38     44   +4.00 1 1 1 1 1   887    0 11.10 -40.42 ----- 15.4 15.4 210.5 25.8 19.4 -27.5 19.2 -27.7 20.4 -27.0 21.1 -28.5
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:28:38.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.644178
2025-09-28T17:28:38.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:28:38.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:28:38.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:28:38.981 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:28:38.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:28:38.982 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:28:12', tmtdew=13.61, humidity=39.67, cloud=0.0, wind=21.0, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:27:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:28:38.982 [DEBUG] [Thread-130891] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:39.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:28:39.077 [DEBUG] [Thread-130894] [transport.py] [_log()] starting thread (client mode): 0x2e360790
2025-09-28T17:28:39.077 [DEBUG] [Thread-130894] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:39.092 [DEBUG] [Thread-130894] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:28:39.092 [INFO] [Thread-130894] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:28:39.099 [DEBUG] [Thread-130894] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:39.100 [DEBUG] [Thread-130894] [transport.py] [_log()] Compression: none
2025-09-28T17:28:39.101 [DEBUG] [Thread-130894] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:39.156 [DEBUG] [Thread-130894] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:39.157 [DEBUG] [Thread-130894] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:39.157 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:28:39.157 [DEBUG] [Thread-130894] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:28:39.158 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:39.213 [DEBUG] [Thread-130894] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:39.213 [DEBUG] [Thread-130894] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:39.213 [DEBUG] [Thread-130894] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:39.213 [DEBUG] [Thread-130894] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:28:39.213 [DEBUG] [Thread-130894] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:39.232 [INFO] [Thread-130894] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:39.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-28T17:28:39.233 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:40.170 [DEBUG] [Thread-130894] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:40.171 [DEBUG] [Thread-130894] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:40.218 [DEBUG] [Thread-130894] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:40.218 [DEBUG] [Thread-130894] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:40.227 [DEBUG] [Thread-130894] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:40.236 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:40.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-28T17:28:40.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-28T17:28:40.254 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:40.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:40.254 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:40.262 [DEBUG] [Thread-130894] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:40.585 [DEBUG] [Thread-130896 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:28:50.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:28:50.265 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:28:50.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-28T17:28:50.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 28, 44), 13.51, 40.31, 0.0, 18.07, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:28:50.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:28:44
2025-09-28T17:28:50.993 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:28:51.141 [DEBUG] [Thread-130897] [transport.py] [_log()] starting thread (client mode): 0x2b9dc3d0
2025-09-28T17:28:51.141 [DEBUG] [Thread-130897] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:51.162 [DEBUG] [Thread-130897] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:28:51.162 [INFO] [Thread-130897] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:28:51.165 [DEBUG] [Thread-130897] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:51.165 [DEBUG] [Thread-130897] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:51.166 [DEBUG] [Thread-130897] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:51.167 [DEBUG] [Thread-130897] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:51.167 [DEBUG] [Thread-130897] [transport.py] [_log()] Compression: none
2025-09-28T17:28:51.167 [DEBUG] [Thread-130897] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:51.179 [DEBUG] [Thread-130897] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:51.180 [DEBUG] [Thread-130897] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:51.180 [DEBUG] [Thread-130897] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:28:51.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:28:51.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:51.182 [DEBUG] [Thread-130897] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:51.182 [DEBUG] [Thread-130897] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:51.182 [DEBUG] [Thread-130897] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:51.182 [DEBUG] [Thread-130897] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:28:51.182 [DEBUG] [Thread-130897] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:51.217 [INFO] [Thread-130897] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:51.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:51.866 [DEBUG] [Thread-130897] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:51.866 [DEBUG] [Thread-130897] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:51.867 [DEBUG] [Thread-130897] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:28:51.907 [DEBUG] [Thread-130897] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:51.907 [DEBUG] [Thread-130897] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:51.909 [DEBUG] [Thread-130897] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:51.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:51.921 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:28:51.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:28:51.923 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:28:51.926 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:51.927 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:28:51.927 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.644872 -999.00  +15.90  14.19     44   +4.00 1 1 1 1 1   887    0 11.17 -38.92 ----- 14.2 14.2 212.4 22.4 19.4 -27.3 19.1 -27.1 20.4 -25.9 21.1 -27.5
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.644872
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:28:51.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:28:51.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:28:51.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:28:44', tmtdew=13.51, humidity=40.31, cloud=0.0, wind=18.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:28:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:28:51.928 [DEBUG] [Thread-130897] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:52.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-28T17:28:52.011 [DEBUG] [Thread-130900] [transport.py] [_log()] starting thread (client mode): 0x2b9bb100
2025-09-28T17:28:52.011 [DEBUG] [Thread-130900] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:28:52.025 [DEBUG] [Thread-130900] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:28:52.026 [INFO] [Thread-130900] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:28:52.033 [DEBUG] [Thread-130900] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:28:52.033 [DEBUG] [Thread-130900] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:28:52.033 [DEBUG] [Thread-130900] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:28:52.033 [DEBUG] [Thread-130900] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] client lang: <none>
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] server lang: <none>
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] kex follows: False
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] Compression: none
2025-09-28T17:28:52.034 [DEBUG] [Thread-130900] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:28:52.092 [DEBUG] [Thread-130900] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:28:52.093 [DEBUG] [Thread-130900] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:28:52.093 [DEBUG] [Thread-130900] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:28:52.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:28:52.094 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:28:52.149 [DEBUG] [Thread-130900] [transport.py] [_log()] userauth is OK
2025-09-28T17:28:52.149 [DEBUG] [Thread-130900] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:28:52.149 [DEBUG] [Thread-130900] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:28:52.149 [DEBUG] [Thread-130900] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:28:52.149 [DEBUG] [Thread-130900] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:28:52.168 [INFO] [Thread-130900] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:28:52.168 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:28:52.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:28:53.137 [DEBUG] [Thread-130900] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:28:53.138 [DEBUG] [Thread-130900] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:28:53.353 [DEBUG] [Thread-130900] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:28:53.353 [DEBUG] [Thread-130900] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:28:53.362 [DEBUG] [Thread-130900] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:28:53.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:28:53.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-28T17:28:53.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-28T17:28:53.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:28:53.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:28:53.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:28:53.396 [DEBUG] [Thread-130900] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:28:55.631 [DEBUG] [Thread-130902 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:03.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:29:03.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:29:03.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-28T17:29:04.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 28, 44), 13.51, 40.31, 0.0, 18.07, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:29:04.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:28:44
2025-09-28T17:29:04.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:29:04.279 [DEBUG] [Thread-130903] [transport.py] [_log()] starting thread (client mode): 0x2b9ba3e0
2025-09-28T17:29:04.279 [DEBUG] [Thread-130903] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:04.297 [DEBUG] [Thread-130903] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:29:04.297 [INFO] [Thread-130903] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:29:04.298 [DEBUG] [Thread-130903] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] Compression: none
2025-09-28T17:29:04.299 [DEBUG] [Thread-130903] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:04.307 [DEBUG] [Thread-130903] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:04.307 [DEBUG] [Thread-130903] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:04.307 [DEBUG] [Thread-130903] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:29:04.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:29:04.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:04.308 [DEBUG] [Thread-130903] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:04.308 [DEBUG] [Thread-130903] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:04.308 [DEBUG] [Thread-130903] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:04.308 [DEBUG] [Thread-130903] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:29:04.308 [DEBUG] [Thread-130903] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:04.320 [INFO] [Thread-130903] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:04.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:04.943 [DEBUG] [Thread-130903] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:04.943 [DEBUG] [Thread-130903] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:04.943 [DEBUG] [Thread-130903] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:29:04.984 [DEBUG] [Thread-130903] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:04.984 [DEBUG] [Thread-130903] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:04.987 [DEBUG] [Thread-130903] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:04.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:04.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:29:04.999 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:29:05.000 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:29:05.002 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:05.003 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:29:05.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.644872 -999.00  +15.90  14.19     44   +4.00 1 1 1 1 1   887    0 11.17 -38.92 ----- 14.2 14.2 212.4 22.4 19.4 -27.3 19.1 -27.1 20.4 -25.9 21.1 -27.5
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.644872
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:29:05.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:29:05.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:29:05.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:29:05.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:29:05.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:28:44', tmtdew=13.51, humidity=40.31, cloud=0.0, wind=18.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:28:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:29:05.004 [DEBUG] [Thread-130903] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:05.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-28T17:29:05.089 [DEBUG] [Thread-130906] [transport.py] [_log()] starting thread (client mode): 0x2b9b84c0
2025-09-28T17:29:05.090 [DEBUG] [Thread-130906] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:05.105 [DEBUG] [Thread-130906] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:29:05.105 [INFO] [Thread-130906] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:05.112 [DEBUG] [Thread-130906] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] Compression: none
2025-09-28T17:29:05.113 [DEBUG] [Thread-130906] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:05.171 [DEBUG] [Thread-130906] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:05.171 [DEBUG] [Thread-130906] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:05.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:29:05.172 [DEBUG] [Thread-130906] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:29:05.172 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:05.228 [DEBUG] [Thread-130906] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:05.228 [DEBUG] [Thread-130906] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:05.228 [DEBUG] [Thread-130906] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:05.228 [DEBUG] [Thread-130906] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:29:05.229 [DEBUG] [Thread-130906] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:05.246 [INFO] [Thread-130906] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:05.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-28T17:29:05.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:06.187 [DEBUG] [Thread-130906] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:06.187 [DEBUG] [Thread-130906] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:06.235 [DEBUG] [Thread-130906] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:06.235 [DEBUG] [Thread-130906] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:06.245 [DEBUG] [Thread-130906] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:06.253 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:06.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-28T17:29:06.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-28T17:29:06.271 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:06.271 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:06.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:06.285 [DEBUG] [Thread-130906] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:10.679 [DEBUG] [Thread-130908 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:16.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:29:16.282 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:29:16.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-28T17:29:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 28, 44), 13.51, 40.31, 0.0, 18.07, 15.71, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:29:16.898 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:28:44
2025-09-28T17:29:17.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:29:17.163 [DEBUG] [Thread-130909] [transport.py] [_log()] starting thread (client mode): 0x2e360790
2025-09-28T17:29:17.163 [DEBUG] [Thread-130909] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:17.183 [DEBUG] [Thread-130909] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:29:17.183 [INFO] [Thread-130909] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:17.186 [DEBUG] [Thread-130909] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] Compression: none
2025-09-28T17:29:17.187 [DEBUG] [Thread-130909] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:17.204 [DEBUG] [Thread-130909] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:17.205 [DEBUG] [Thread-130909] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:17.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:29:17.205 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:17.205 [DEBUG] [Thread-130909] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:29:17.206 [DEBUG] [Thread-130909] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:17.206 [DEBUG] [Thread-130909] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:17.206 [DEBUG] [Thread-130909] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:17.206 [DEBUG] [Thread-130909] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:29:17.206 [DEBUG] [Thread-130909] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:17.234 [INFO] [Thread-130909] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:17.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:17.817 [DEBUG] [Thread-130909] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:17.817 [DEBUG] [Thread-130909] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:17.817 [DEBUG] [Thread-130909] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:29:17.860 [DEBUG] [Thread-130909] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:17.860 [DEBUG] [Thread-130909] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:17.862 [DEBUG] [Thread-130909] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:17.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:17.868 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:29:17.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:29:17.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:29:17.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:17.873 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:29:17.873 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645219 -999.00  +15.90  12.77     44   +4.00 1 1 1 1 1   887    0 11.18 -39.20 ----- 12.8 12.8 198.8 17.1 19.4 -27.8 19.1 -27.1 20.5 -26.0 21.1 -27.9
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645219
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:29:17.873 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:28:44', tmtdew=13.51, humidity=40.31, cloud=0.0, wind=18.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:29:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:29:17.874 [DEBUG] [Thread-130909] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:17.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-28T17:29:17.958 [DEBUG] [Thread-130912] [transport.py] [_log()] starting thread (client mode): 0x2b9b9ff0
2025-09-28T17:29:17.958 [DEBUG] [Thread-130912] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:17.973 [DEBUG] [Thread-130912] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:29:17.973 [INFO] [Thread-130912] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] Compression: none
2025-09-28T17:29:17.981 [DEBUG] [Thread-130912] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:18.035 [DEBUG] [Thread-130912] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:18.035 [DEBUG] [Thread-130912] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:18.035 [DEBUG] [Thread-130912] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:29:18.035 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:29:18.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:18.092 [DEBUG] [Thread-130912] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:18.092 [DEBUG] [Thread-130912] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:18.092 [DEBUG] [Thread-130912] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:18.092 [DEBUG] [Thread-130912] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:29:18.092 [DEBUG] [Thread-130912] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:18.108 [INFO] [Thread-130912] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:18.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-28T17:29:18.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:19.064 [DEBUG] [Thread-130912] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:19.064 [DEBUG] [Thread-130912] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:19.112 [DEBUG] [Thread-130912] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:19.112 [DEBUG] [Thread-130912] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:19.121 [DEBUG] [Thread-130912] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:19.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:19.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-28T17:29:19.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-28T17:29:19.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:19.147 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:19.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:19.155 [DEBUG] [Thread-130912] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:24.064 [DEBUG] [Thread-130914 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:25.711 [DEBUG] [Thread-130915 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:29.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:29:29.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:29:29.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-28T17:29:29.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:29.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:29.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 29, 16), 13.45, 40.45, 0.0, 17.77, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:29:29.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:29:16
2025-09-28T17:29:29.875 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:29:30.023 [DEBUG] [Thread-130916] [transport.py] [_log()] starting thread (client mode): 0x2b9deec0
2025-09-28T17:29:30.023 [DEBUG] [Thread-130916] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:30.044 [DEBUG] [Thread-130916] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:29:30.044 [INFO] [Thread-130916] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] Compression: none
2025-09-28T17:29:30.047 [DEBUG] [Thread-130916] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:30.063 [DEBUG] [Thread-130916] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:30.064 [DEBUG] [Thread-130916] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:30.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:29:30.065 [DEBUG] [Thread-130916] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:29:30.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:30.109 [DEBUG] [Thread-130916] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:30.109 [DEBUG] [Thread-130916] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:30.109 [DEBUG] [Thread-130916] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:30.109 [DEBUG] [Thread-130916] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:29:30.109 [DEBUG] [Thread-130916] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:30.143 [INFO] [Thread-130916] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:30.143 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:30.895 [DEBUG] [Thread-130916] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:30.896 [DEBUG] [Thread-130916] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:30.896 [DEBUG] [Thread-130916] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:29:30.936 [DEBUG] [Thread-130916] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:30.937 [DEBUG] [Thread-130916] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:30.939 [DEBUG] [Thread-130916] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:30.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:30.954 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:29:30.956 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:29:30.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:29:30.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:30.966 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:29:30.966 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:30.966 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645219 -999.00  +15.90  12.77     44   +4.00 1 1 1 1 1   887    0 11.18 -39.20 ----- 12.8 12.8 198.8 17.1 19.4 -27.8 19.1 -27.1 20.5 -26.0 21.1 -27.9
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645219
2025-09-28T17:29:30.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:29:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:29:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:29:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:29:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:29:30.968 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:29:16', tmtdew=13.45, humidity=40.45, cloud=0.0, wind=17.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:29:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:29:30.968 [DEBUG] [Thread-130916] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:31.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-28T17:29:31.065 [DEBUG] [Thread-130919] [transport.py] [_log()] starting thread (client mode): 0x2b9dd1b0
2025-09-28T17:29:31.065 [DEBUG] [Thread-130919] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:31.082 [DEBUG] [Thread-130919] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:29:31.082 [INFO] [Thread-130919] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:29:31.089 [DEBUG] [Thread-130919] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:31.090 [DEBUG] [Thread-130919] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:31.091 [DEBUG] [Thread-130919] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:31.091 [DEBUG] [Thread-130919] [transport.py] [_log()] Compression: none
2025-09-28T17:29:31.091 [DEBUG] [Thread-130919] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:31.149 [DEBUG] [Thread-130919] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:31.150 [DEBUG] [Thread-130919] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:31.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:29:31.151 [DEBUG] [Thread-130919] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:29:31.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:31.205 [DEBUG] [Thread-130919] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:31.205 [DEBUG] [Thread-130919] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:31.205 [DEBUG] [Thread-130919] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:31.205 [DEBUG] [Thread-130919] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:29:31.205 [DEBUG] [Thread-130919] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:31.224 [INFO] [Thread-130919] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:31.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-28T17:29:31.225 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:32.298 [DEBUG] [Thread-130919] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:32.298 [DEBUG] [Thread-130919] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:32.346 [DEBUG] [Thread-130919] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:32.346 [DEBUG] [Thread-130919] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:32.356 [DEBUG] [Thread-130919] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:32.364 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:32.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-28T17:29:32.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T17:29:32.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:32.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:32.385 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:32.393 [DEBUG] [Thread-130919] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:40.753 [DEBUG] [Thread-130921 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:42.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:29:42.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:29:42.395 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:29:43.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 29, 16), 13.45, 40.45, 0.0, 17.77, 15.65, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:29:43.024 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:29:16
2025-09-28T17:29:43.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:29:43.295 [DEBUG] [Thread-130922] [transport.py] [_log()] starting thread (client mode): 0x2e3c0ca0
2025-09-28T17:29:43.295 [DEBUG] [Thread-130922] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:43.315 [DEBUG] [Thread-130922] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:29:43.315 [INFO] [Thread-130922] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:43.318 [DEBUG] [Thread-130922] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] Compression: none
2025-09-28T17:29:43.319 [DEBUG] [Thread-130922] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:43.335 [DEBUG] [Thread-130922] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:43.335 [DEBUG] [Thread-130922] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:43.335 [DEBUG] [Thread-130922] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:29:43.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:29:43.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:43.376 [DEBUG] [Thread-130922] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:43.376 [DEBUG] [Thread-130922] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:43.376 [DEBUG] [Thread-130922] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:43.376 [DEBUG] [Thread-130922] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:29:43.376 [DEBUG] [Thread-130922] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:43.406 [INFO] [Thread-130922] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:43.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:44.146 [DEBUG] [Thread-130922] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:44.146 [DEBUG] [Thread-130922] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:44.146 [DEBUG] [Thread-130922] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:29:44.187 [DEBUG] [Thread-130922] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:44.187 [DEBUG] [Thread-130922] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:44.190 [DEBUG] [Thread-130922] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:44.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:44.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:29:44.203 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:29:44.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:29:44.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:44.211 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:29:44.211 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:44.211 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:44.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:29:44.211 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645219 -999.00  +15.90  12.77     44   +4.00 1 1 1 1 1   887    0 11.18 -39.20 ----- 12.8 12.8 198.8 17.1 19.4 -27.8 19.1 -27.1 20.5 -26.0 21.1 -27.9
2025-09-28T17:29:44.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:29:44.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:29:44.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645219
2025-09-28T17:29:44.212 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:29:44.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:29:44.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:29:44.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:29:44.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:29:44.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:29:16', tmtdew=13.45, humidity=40.45, cloud=0.0, wind=17.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:29:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:29:44.213 [DEBUG] [Thread-130922] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:44.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-28T17:29:44.312 [DEBUG] [Thread-130925] [transport.py] [_log()] starting thread (client mode): 0x2e3c2e90
2025-09-28T17:29:44.312 [DEBUG] [Thread-130925] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:44.330 [DEBUG] [Thread-130925] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:29:44.330 [INFO] [Thread-130925] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:29:44.337 [DEBUG] [Thread-130925] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:44.338 [DEBUG] [Thread-130925] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:44.339 [DEBUG] [Thread-130925] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:44.339 [DEBUG] [Thread-130925] [transport.py] [_log()] Compression: none
2025-09-28T17:29:44.339 [DEBUG] [Thread-130925] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:44.396 [DEBUG] [Thread-130925] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:44.397 [DEBUG] [Thread-130925] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:44.397 [DEBUG] [Thread-130925] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:29:44.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:29:44.398 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:44.453 [DEBUG] [Thread-130925] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:44.453 [DEBUG] [Thread-130925] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:44.453 [DEBUG] [Thread-130925] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:44.453 [DEBUG] [Thread-130925] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:29:44.453 [DEBUG] [Thread-130925] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:44.475 [INFO] [Thread-130925] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:44.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-28T17:29:44.475 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:45.433 [DEBUG] [Thread-130925] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:45.433 [DEBUG] [Thread-130925] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:45.481 [DEBUG] [Thread-130925] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:45.481 [DEBUG] [Thread-130925] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:45.489 [DEBUG] [Thread-130925] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:45.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29: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-28T17:29:45.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-28T17:29:45.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:45.512 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:45.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:45.520 [DEBUG] [Thread-130925] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:55.523 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:29:55.523 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:29:55.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-28T17:29:55.797 [DEBUG] [Thread-130927 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:29:56.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 29, 48), 13.38, 40.62, 0.0, 19.36, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:29:56.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:29:48
2025-09-28T17:29:56.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:29:56.377 [DEBUG] [Thread-130928] [transport.py] [_log()] starting thread (client mode): 0x2e3c3280
2025-09-28T17:29:56.377 [DEBUG] [Thread-130928] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:56.398 [DEBUG] [Thread-130928] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:29:56.398 [INFO] [Thread-130928] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:29:56.401 [DEBUG] [Thread-130928] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:56.401 [DEBUG] [Thread-130928] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:29:56.401 [DEBUG] [Thread-130928] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] Compression: none
2025-09-28T17:29:56.402 [DEBUG] [Thread-130928] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:56.419 [DEBUG] [Thread-130928] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:56.419 [DEBUG] [Thread-130928] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:56.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:29:56.420 [DEBUG] [Thread-130928] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:29:56.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:56.422 [DEBUG] [Thread-130928] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:56.422 [DEBUG] [Thread-130928] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:56.422 [DEBUG] [Thread-130928] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:56.422 [DEBUG] [Thread-130928] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:29:56.422 [DEBUG] [Thread-130928] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:56.440 [INFO] [Thread-130928] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:56.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:57.040 [DEBUG] [Thread-130928] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:57.040 [DEBUG] [Thread-130928] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:57.040 [DEBUG] [Thread-130928] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:29:57.081 [DEBUG] [Thread-130928] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:57.081 [DEBUG] [Thread-130928] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:57.084 [DEBUG] [Thread-130928] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:57.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:57.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:29:57.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:29:57.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:29:57.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:57.106 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:29:57.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:57.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:57.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:29:57.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645567 -999.00  +16.10  13.99     44   +4.00 1 1 1 1 1   887    0 10.96 -43.24 ----- 14.0 14.0 220.2 16.3 19.5 -26.7 19.3 -26.5 20.5 -26.6 21.1 -27.5
2025-09-28T17:29:57.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:29:57.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:29:57.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645567
2025-09-28T17:29:57.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:29:57.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:29:57.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:29:57.108 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:29:57.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:29:57.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:29:48', tmtdew=13.38, humidity=40.62, cloud=0.0, wind=19.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:29:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:29:57.109 [DEBUG] [Thread-130928] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:29:57.194 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:29:57.203 [DEBUG] [Thread-130931] [transport.py] [_log()] starting thread (client mode): 0x2b9dd1e0
2025-09-28T17:29:57.203 [DEBUG] [Thread-130931] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:29:57.224 [DEBUG] [Thread-130931] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:29:57.224 [INFO] [Thread-130931] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:29:57.231 [DEBUG] [Thread-130931] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:29:57.231 [DEBUG] [Thread-130931] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] client lang: <none>
2025-09-28T17:29:57.232 [DEBUG] [Thread-130931] [transport.py] [_log()] server lang: <none>
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] kex follows: False
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] Compression: none
2025-09-28T17:29:57.233 [DEBUG] [Thread-130931] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:29:57.289 [DEBUG] [Thread-130931] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:29:57.290 [DEBUG] [Thread-130931] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:29:57.291 [DEBUG] [Thread-130931] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:29:57.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:29:57.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:29:57.345 [DEBUG] [Thread-130931] [transport.py] [_log()] userauth is OK
2025-09-28T17:29:57.345 [DEBUG] [Thread-130931] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:29:57.345 [DEBUG] [Thread-130931] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:29:57.346 [DEBUG] [Thread-130931] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:29:57.346 [DEBUG] [Thread-130931] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:29:57.370 [INFO] [Thread-130931] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:29:57.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-28T17:29:57.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:29:58.415 [DEBUG] [Thread-130931] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:29:58.416 [DEBUG] [Thread-130931] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:29:58.464 [DEBUG] [Thread-130931] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:29:58.464 [DEBUG] [Thread-130931] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:29:58.473 [DEBUG] [Thread-130931] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:29:58.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:29:58.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-28T17:29:58.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-28T17:29:58.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:29:58.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:29:58.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:29:58.507 [DEBUG] [Thread-130931] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:08.506 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:30:08.507 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:30:08.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-28T17:30:09.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 29, 48), 13.38, 40.62, 0.0, 19.36, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:30:09.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:29:48
2025-09-28T17:30:09.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:30:09.359 [DEBUG] [Thread-130933] [transport.py] [_log()] starting thread (client mode): 0x2b9bb880
2025-09-28T17:30:09.359 [DEBUG] [Thread-130933] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:09.380 [DEBUG] [Thread-130933] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:30:09.380 [INFO] [Thread-130933] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:30:09.383 [DEBUG] [Thread-130933] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:09.383 [DEBUG] [Thread-130933] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:30:09.383 [DEBUG] [Thread-130933] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] Compression: none
2025-09-28T17:30:09.384 [DEBUG] [Thread-130933] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:09.398 [DEBUG] [Thread-130933] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:09.399 [DEBUG] [Thread-130933] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:09.399 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:30:09.400 [DEBUG] [Thread-130933] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:30:09.401 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:09.402 [DEBUG] [Thread-130933] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:09.402 [DEBUG] [Thread-130933] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:09.402 [DEBUG] [Thread-130933] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:09.402 [DEBUG] [Thread-130933] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:30:09.402 [DEBUG] [Thread-130933] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:09.426 [INFO] [Thread-130933] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:09.427 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:10.826 [DEBUG] [Thread-130935 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:14.855 [DEBUG] [Thread-130933] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:14.856 [DEBUG] [Thread-130933] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:14.856 [DEBUG] [Thread-130933] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:30:14.896 [DEBUG] [Thread-130933] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:14.896 [DEBUG] [Thread-130933] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:14.900 [DEBUG] [Thread-130933] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:14.911 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:14.911 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:30:14.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:30:14.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:30:15.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:15.057 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:30:15.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:15.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645567 -999.00  +16.10  13.99     44   +4.00 1 1 1 1 1   887    0 10.96 -43.24 ----- 14.0 14.0 220.2 16.3 19.5 -26.7 19.3 -26.5 20.5 -26.6 21.1 -27.5
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645567
2025-09-28T17:30:15.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:30:15.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:30:15.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:30:15.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:30:15.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:30:15.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:29:48', tmtdew=13.38, humidity=40.62, cloud=0.0, wind=19.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:29:36.989', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:30:15.060 [DEBUG] [Thread-130933] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:15.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-28T17:30:15.160 [DEBUG] [Thread-130937] [transport.py] [_log()] starting thread (client mode): 0x2b9baa10
2025-09-28T17:30:15.160 [DEBUG] [Thread-130937] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:15.179 [DEBUG] [Thread-130937] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:30:15.179 [INFO] [Thread-130937] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:30:15.190 [DEBUG] [Thread-130937] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:15.191 [DEBUG] [Thread-130937] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:15.192 [DEBUG] [Thread-130937] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:15.192 [DEBUG] [Thread-130937] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:15.192 [DEBUG] [Thread-130937] [transport.py] [_log()] Compression: none
2025-09-28T17:30:15.192 [DEBUG] [Thread-130937] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:15.249 [DEBUG] [Thread-130937] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:15.249 [DEBUG] [Thread-130937] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:15.250 [DEBUG] [Thread-130937] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:30:15.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:30:15.251 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:15.312 [DEBUG] [Thread-130937] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:15.312 [DEBUG] [Thread-130937] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:15.312 [DEBUG] [Thread-130937] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:15.312 [DEBUG] [Thread-130937] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:30:15.312 [DEBUG] [Thread-130937] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:15.335 [INFO] [Thread-130937] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:15.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-28T17:30:15.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:16.285 [DEBUG] [Thread-130937] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:16.286 [DEBUG] [Thread-130937] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:16.336 [DEBUG] [Thread-130937] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:16.336 [DEBUG] [Thread-130937] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:16.345 [DEBUG] [Thread-130937] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:16.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:16.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-28T17:30:16.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-28T17:30:16.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:16.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:16.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:16.382 [DEBUG] [Thread-130937] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:24.114 [DEBUG] [Thread-130939 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:25.872 [DEBUG] [Thread-130940 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:26.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:30:26.384 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:30:26.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-28T17:30:26.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 30, 20), 13.36, 40.69, 0.0, 18.17, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:30:26.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:30:20
2025-09-28T17:30:27.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:30:27.229 [DEBUG] [Thread-130941] [transport.py] [_log()] starting thread (client mode): 0x2b9ba2c0
2025-09-28T17:30:27.229 [DEBUG] [Thread-130941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:27.249 [DEBUG] [Thread-130941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:30:27.249 [INFO] [Thread-130941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:27.253 [DEBUG] [Thread-130941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] Compression: none
2025-09-28T17:30:27.254 [DEBUG] [Thread-130941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:27.268 [DEBUG] [Thread-130941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:27.268 [DEBUG] [Thread-130941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:27.269 [DEBUG] [Thread-130941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:30:27.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:30:27.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:27.270 [DEBUG] [Thread-130941] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:27.271 [DEBUG] [Thread-130941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:27.271 [DEBUG] [Thread-130941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:27.271 [DEBUG] [Thread-130941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:30:27.271 [DEBUG] [Thread-130941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:27.295 [INFO] [Thread-130941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:27.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:27.907 [DEBUG] [Thread-130941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:27.907 [DEBUG] [Thread-130941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:27.908 [DEBUG] [Thread-130941] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:30:27.948 [DEBUG] [Thread-130941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:27.948 [DEBUG] [Thread-130941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:27.951 [DEBUG] [Thread-130941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:27.963 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:27.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:30:27.966 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:30:27.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:30:27.972 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:27.974 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:30:27.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:27.974 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645914 -999.00  +16.10   7.72     44   +4.00 1 1 1 1 1   887    0 10.93 -42.73 ----- 7.7 7.7 208.7 18.7 19.5 -27.2 19.2 -26.5 20.4 -26.2 21.1 -27.5
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645914
2025-09-28T17:30:27.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:30:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:30:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:30:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:30:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:30:27.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:30:20', tmtdew=13.36, humidity=40.69, cloud=0.0, wind=18.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:30:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:30:27.977 [DEBUG] [Thread-130941] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:28.060 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:30:28.070 [DEBUG] [Thread-130944] [transport.py] [_log()] starting thread (client mode): 0x2b91ce50
2025-09-28T17:30:28.070 [DEBUG] [Thread-130944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:28.084 [DEBUG] [Thread-130944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:30:28.084 [INFO] [Thread-130944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] Compression: none
2025-09-28T17:30:28.092 [DEBUG] [Thread-130944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:28.149 [DEBUG] [Thread-130944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:28.150 [DEBUG] [Thread-130944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:28.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:30:28.151 [DEBUG] [Thread-130944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:30:28.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:28.206 [DEBUG] [Thread-130944] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:28.206 [DEBUG] [Thread-130944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:28.206 [DEBUG] [Thread-130944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:28.206 [DEBUG] [Thread-130944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:30:28.206 [DEBUG] [Thread-130944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:28.226 [INFO] [Thread-130944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:28.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-28T17:30:28.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:29.136 [DEBUG] [Thread-130944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:29.137 [DEBUG] [Thread-130944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:29.184 [DEBUG] [Thread-130944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:29.184 [DEBUG] [Thread-130944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:29.193 [DEBUG] [Thread-130944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:29.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:29.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-28T17:30:29.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-28T17:30:29.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:29.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:29.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:29.229 [DEBUG] [Thread-130944] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:29.321 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:29.323 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:30:39.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:30:39.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-28T17:30:39.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 30, 20), 13.36, 40.69, 0.0, 18.17, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:30:39.841 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:30:20
2025-09-28T17:30:39.949 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:30:40.099 [DEBUG] [Thread-130946] [transport.py] [_log()] starting thread (client mode): 0x2b91e5f0
2025-09-28T17:30:40.099 [DEBUG] [Thread-130946] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:40.118 [DEBUG] [Thread-130946] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:30:40.118 [INFO] [Thread-130946] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:30:40.121 [DEBUG] [Thread-130946] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:40.121 [DEBUG] [Thread-130946] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:30:40.121 [DEBUG] [Thread-130946] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] Compression: none
2025-09-28T17:30:40.122 [DEBUG] [Thread-130946] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:40.138 [DEBUG] [Thread-130946] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:40.138 [DEBUG] [Thread-130946] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:40.138 [DEBUG] [Thread-130946] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:30:40.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:30:40.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:40.140 [DEBUG] [Thread-130946] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:40.141 [DEBUG] [Thread-130946] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:40.141 [DEBUG] [Thread-130946] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:40.141 [DEBUG] [Thread-130946] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:30:40.141 [DEBUG] [Thread-130946] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:40.164 [INFO] [Thread-130946] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:40.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:40.903 [DEBUG] [Thread-130948 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:30:40.936 [DEBUG] [Thread-130946] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:40.936 [DEBUG] [Thread-130946] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:40.936 [DEBUG] [Thread-130946] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:30:40.978 [DEBUG] [Thread-130946] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:40.978 [DEBUG] [Thread-130946] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:40.980 [DEBUG] [Thread-130946] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:40.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:40.986 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:30:40.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:30:40.990 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:30:40.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:40.997 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:30:40.998 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:40.998 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:40.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:30:40.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.645914 -999.00  +16.10   7.72     44   +4.00 1 1 1 1 1   887    0 10.93 -42.73 ----- 7.7 7.7 208.7 18.7 19.5 -27.2 19.2 -26.5 20.4 -26.2 21.1 -27.5
2025-09-28T17:30:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:30:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:30:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.645914
2025-09-28T17:30:40.999 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:30:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:30:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:30:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:30:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:30:41.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:30:20', tmtdew=13.36, humidity=40.69, cloud=0.0, wind=18.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:30:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:30:41.000 [DEBUG] [Thread-130946] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:41.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-28T17:30:41.097 [DEBUG] [Thread-130950] [transport.py] [_log()] starting thread (client mode): 0x2b9dd3f0
2025-09-28T17:30:41.097 [DEBUG] [Thread-130950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:41.116 [DEBUG] [Thread-130950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:30:41.117 [INFO] [Thread-130950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:41.124 [DEBUG] [Thread-130950] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] Compression: none
2025-09-28T17:30:41.125 [DEBUG] [Thread-130950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:41.181 [DEBUG] [Thread-130950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:41.182 [DEBUG] [Thread-130950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:41.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:30:41.183 [DEBUG] [Thread-130950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:30:41.184 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:41.237 [DEBUG] [Thread-130950] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:41.238 [DEBUG] [Thread-130950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:41.238 [DEBUG] [Thread-130950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:41.238 [DEBUG] [Thread-130950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:30:41.238 [DEBUG] [Thread-130950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:41.256 [INFO] [Thread-130950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:41.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-28T17:30:41.257 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:42.223 [DEBUG] [Thread-130950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:42.223 [DEBUG] [Thread-130950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:42.271 [DEBUG] [Thread-130950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:42.271 [DEBUG] [Thread-130950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:42.280 [DEBUG] [Thread-130950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:42.289 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:42.289 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T17:30:42.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') -> 00000000
2025-09-28T17:30:42.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:42.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:42.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:42.315 [DEBUG] [Thread-130950] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:52.313 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:30:52.314 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:30:52.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-28T17:30:52.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 30, 20), 13.36, 40.69, 0.0, 18.17, 15.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:30:52.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:30:20
2025-09-28T17:30:53.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:30:53.199 [DEBUG] [Thread-130952] [transport.py] [_log()] starting thread (client mode): 0x2b9dc190
2025-09-28T17:30:53.199 [DEBUG] [Thread-130952] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:53.216 [DEBUG] [Thread-130952] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:30:53.216 [INFO] [Thread-130952] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] Compression: none
2025-09-28T17:30:53.220 [DEBUG] [Thread-130952] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:53.233 [DEBUG] [Thread-130952] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:53.233 [DEBUG] [Thread-130952] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:53.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:30:53.234 [DEBUG] [Thread-130952] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:30:53.234 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:53.235 [DEBUG] [Thread-130952] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:53.235 [DEBUG] [Thread-130952] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:53.235 [DEBUG] [Thread-130952] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:53.235 [DEBUG] [Thread-130952] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:30:53.235 [DEBUG] [Thread-130952] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:53.254 [INFO] [Thread-130952] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:53.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:53.962 [DEBUG] [Thread-130952] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:53.962 [DEBUG] [Thread-130952] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:53.963 [DEBUG] [Thread-130952] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:30:54.003 [DEBUG] [Thread-130952] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:54.003 [DEBUG] [Thread-130952] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:54.004 [DEBUG] [Thread-130952] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:54.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:54.011 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:30:54.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:30:54.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:30:54.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:54.015 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:30:54.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646261 -999.00  +16.10  11.20     44   +3.90 1 1 1 1 1   887    0 10.94 -43.67 ----- 11.2 11.2 209.5 16.3 19.5 -27.4 19.2 -26.8 20.5 -26.1 21.1 -27.8
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646261
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:30:54.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:30:20', tmtdew=13.36, humidity=40.69, cloud=0.0, wind=18.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:30:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:30:54.016 [DEBUG] [Thread-130952] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:54.090 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:30:54.099 [DEBUG] [Thread-130955] [transport.py] [_log()] starting thread (client mode): 0x2b9dd390
2025-09-28T17:30:54.099 [DEBUG] [Thread-130955] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:30:54.114 [DEBUG] [Thread-130955] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:30:54.114 [INFO] [Thread-130955] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] client lang: <none>
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] server lang: <none>
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] kex follows: False
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] Compression: none
2025-09-28T17:30:54.123 [DEBUG] [Thread-130955] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:30:54.180 [DEBUG] [Thread-130955] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:30:54.180 [DEBUG] [Thread-130955] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:30:54.180 [DEBUG] [Thread-130955] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:30:54.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:30:54.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:30:54.237 [DEBUG] [Thread-130955] [transport.py] [_log()] userauth is OK
2025-09-28T17:30:54.237 [DEBUG] [Thread-130955] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:30:54.237 [DEBUG] [Thread-130955] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:30:54.237 [DEBUG] [Thread-130955] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:30:54.237 [DEBUG] [Thread-130955] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:30:54.252 [INFO] [Thread-130955] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:30:54.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-28T17:30:54.253 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:30:55.208 [DEBUG] [Thread-130955] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:30:55.209 [DEBUG] [Thread-130955] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:30:55.257 [DEBUG] [Thread-130955] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:30:55.257 [DEBUG] [Thread-130955] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:30:55.265 [DEBUG] [Thread-130955] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:30:55.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:30:55.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-28T17:30:55.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-28T17:30:55.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:30:55.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:30:55.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:30:55.296 [DEBUG] [Thread-130955] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:30:55.957 [DEBUG] [Thread-130957 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:05.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:31:05.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:31:05.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-28T17:31:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 30, 52), 13.3, 40.72, 0.0, 19.66, 15.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:31:05.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:30:52
2025-09-28T17:31:06.004 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:31:06.152 [DEBUG] [Thread-130958] [transport.py] [_log()] starting thread (client mode): 0x2b91e6b0
2025-09-28T17:31:06.152 [DEBUG] [Thread-130958] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:06.172 [DEBUG] [Thread-130958] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:31:06.172 [INFO] [Thread-130958] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:06.175 [DEBUG] [Thread-130958] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] Compression: none
2025-09-28T17:31:06.176 [DEBUG] [Thread-130958] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:06.190 [DEBUG] [Thread-130958] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:06.191 [DEBUG] [Thread-130958] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:06.192 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:31:06.192 [DEBUG] [Thread-130958] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:31:06.193 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:06.194 [DEBUG] [Thread-130958] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:06.195 [DEBUG] [Thread-130958] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:06.195 [DEBUG] [Thread-130958] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:06.195 [DEBUG] [Thread-130958] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:31:06.195 [DEBUG] [Thread-130958] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:06.217 [INFO] [Thread-130958] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:06.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:06.834 [DEBUG] [Thread-130958] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:06.834 [DEBUG] [Thread-130958] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:06.835 [DEBUG] [Thread-130958] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:31:06.875 [DEBUG] [Thread-130958] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:06.875 [DEBUG] [Thread-130958] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:06.879 [DEBUG] [Thread-130958] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:06.884 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:06.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:31:06.885 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:31:06.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:31:06.892 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:06.893 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:31:06.894 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:06.894 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:06.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:31:06.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646261 -999.00  +16.10  11.20     44   +3.90 1 1 1 1 1   887    0 10.94 -43.67 ----- 11.2 11.2 209.5 16.3 19.5 -27.4 19.2 -26.8 20.5 -26.1 21.1 -27.8
2025-09-28T17:31:06.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:31:06.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:31:06.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646261
2025-09-28T17:31:06.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:31:06.895 [DEBUG] [Thread-130958] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:31:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:31:06.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:31:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:31:06.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:30:52', tmtdew=13.3, humidity=40.72, cloud=0.0, wind=19.66, temperature=15.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:30:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:31:06.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-28T17:31:06.992 [DEBUG] [Thread-130961] [transport.py] [_log()] starting thread (client mode): 0x2b91d7e0
2025-09-28T17:31:06.992 [DEBUG] [Thread-130961] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:07.007 [DEBUG] [Thread-130961] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:31:07.007 [INFO] [Thread-130961] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:31:07.015 [DEBUG] [Thread-130961] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:07.015 [DEBUG] [Thread-130961] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:31:07.015 [DEBUG] [Thread-130961] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:07.016 [DEBUG] [Thread-130961] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] Compression: none
2025-09-28T17:31:07.017 [DEBUG] [Thread-130961] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:07.074 [DEBUG] [Thread-130961] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:07.074 [DEBUG] [Thread-130961] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:07.074 [DEBUG] [Thread-130961] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:31:07.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:31:07.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:07.129 [DEBUG] [Thread-130961] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:07.129 [DEBUG] [Thread-130961] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:07.129 [DEBUG] [Thread-130961] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:07.129 [DEBUG] [Thread-130961] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:31:07.129 [DEBUG] [Thread-130961] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:07.143 [INFO] [Thread-130961] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:07.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-28T17:31:07.144 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:08.068 [DEBUG] [Thread-130961] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:08.068 [DEBUG] [Thread-130961] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:08.116 [DEBUG] [Thread-130961] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:08.116 [DEBUG] [Thread-130961] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:08.125 [DEBUG] [Thread-130961] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:08.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:08.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-28T17:31:08.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-28T17:31:08.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:08.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:08.152 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:08.160 [DEBUG] [Thread-130961] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:10.992 [DEBUG] [Thread-130963 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:18.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:31:18.163 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:31:18.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-28T17:31:18.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 30, 52), 13.3, 40.72, 0.0, 19.66, 15.46, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:31:18.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:30:52
2025-09-28T17:31:18.864 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:31:19.011 [DEBUG] [Thread-130964] [transport.py] [_log()] starting thread (client mode): 0x2b91da50
2025-09-28T17:31:19.011 [DEBUG] [Thread-130964] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:19.022 [DEBUG] [Thread-130964] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:31:19.022 [INFO] [Thread-130964] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] Compression: none
2025-09-28T17:31:19.026 [DEBUG] [Thread-130964] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:19.041 [DEBUG] [Thread-130964] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:19.042 [DEBUG] [Thread-130964] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:19.042 [DEBUG] [Thread-130964] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:31:19.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:31:19.042 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:19.043 [DEBUG] [Thread-130964] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:19.044 [DEBUG] [Thread-130964] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:19.044 [DEBUG] [Thread-130964] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:19.044 [DEBUG] [Thread-130964] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:31:19.044 [DEBUG] [Thread-130964] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:19.057 [INFO] [Thread-130964] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:19.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:19.813 [DEBUG] [Thread-130964] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:19.814 [DEBUG] [Thread-130964] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:19.814 [DEBUG] [Thread-130964] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:31:19.854 [DEBUG] [Thread-130964] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:19.854 [DEBUG] [Thread-130964] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:19.857 [DEBUG] [Thread-130964] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:19.870 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:19.870 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:31:19.872 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:31:19.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:31:19.877 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:19.879 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:31:19.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:19.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:19.879 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:31:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646261 -999.00  +16.10  11.20     44   +3.90 1 1 1 1 1   887    0 10.94 -43.67 ----- 11.2 11.2 209.5 16.3 19.5 -27.4 19.2 -26.8 20.5 -26.1 21.1 -27.8
2025-09-28T17:31:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:31:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:31:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646261
2025-09-28T17:31:19.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:31:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:31:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:31:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:31:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:31:19.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:30:52', tmtdew=13.3, humidity=40.72, cloud=0.0, wind=19.66, temperature=15.46, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:30:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:31:19.881 [DEBUG] [Thread-130964] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:19.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-28T17:31:19.974 [DEBUG] [Thread-130967] [transport.py] [_log()] starting thread (client mode): 0x2b91e6b0
2025-09-28T17:31:19.974 [DEBUG] [Thread-130967] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:19.988 [DEBUG] [Thread-130967] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:31:19.988 [INFO] [Thread-130967] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] Compression: none
2025-09-28T17:31:19.996 [DEBUG] [Thread-130967] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:20.053 [DEBUG] [Thread-130967] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:20.053 [DEBUG] [Thread-130967] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:20.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:31:20.053 [DEBUG] [Thread-130967] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:31:20.054 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:20.110 [DEBUG] [Thread-130967] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:20.110 [DEBUG] [Thread-130967] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:20.110 [DEBUG] [Thread-130967] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:20.110 [DEBUG] [Thread-130967] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:31:20.110 [DEBUG] [Thread-130967] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:20.129 [INFO] [Thread-130967] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:20.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-28T17:31:20.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:21.019 [DEBUG] [Thread-130967] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:21.019 [DEBUG] [Thread-130967] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:21.067 [DEBUG] [Thread-130967] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:21.067 [DEBUG] [Thread-130967] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:21.076 [DEBUG] [Thread-130967] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:21.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:21.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-28T17:31:21.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-28T17:31:21.102 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:21.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:21.103 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:21.111 [DEBUG] [Thread-130967] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:24.167 [DEBUG] [Thread-130969 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:26.032 [DEBUG] [Thread-130970 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:29.462 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:29.463 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:31.113 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:31:31.113 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:31:31.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-28T17:31:31.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 31, 24), 13.38, 40.52, 0.0, 19.13, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:31:31.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:31:24
2025-09-28T17:31:31.807 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:31:31.957 [DEBUG] [Thread-130971] [transport.py] [_log()] starting thread (client mode): 0x2b91cc40
2025-09-28T17:31:31.957 [DEBUG] [Thread-130971] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:31.977 [DEBUG] [Thread-130971] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:31:31.977 [INFO] [Thread-130971] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:31:31.979 [DEBUG] [Thread-130971] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:31.979 [DEBUG] [Thread-130971] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:31:31.979 [DEBUG] [Thread-130971] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:31.980 [DEBUG] [Thread-130971] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] Compression: none
2025-09-28T17:31:31.981 [DEBUG] [Thread-130971] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:32.001 [DEBUG] [Thread-130971] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:32.002 [DEBUG] [Thread-130971] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:32.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:31:32.003 [DEBUG] [Thread-130971] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:31:32.003 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:32.005 [DEBUG] [Thread-130971] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:32.005 [DEBUG] [Thread-130971] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:32.005 [DEBUG] [Thread-130971] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:32.005 [DEBUG] [Thread-130971] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:31:32.005 [DEBUG] [Thread-130971] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:32.029 [INFO] [Thread-130971] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:32.030 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:32.698 [DEBUG] [Thread-130971] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:32.699 [DEBUG] [Thread-130971] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:32.699 [DEBUG] [Thread-130971] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:31:32.739 [DEBUG] [Thread-130971] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:32.739 [DEBUG] [Thread-130971] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:32.742 [DEBUG] [Thread-130971] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:32.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:32.756 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:31:32.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:31:32.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:31:32.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:32.767 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:31:32.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:32.767 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:32.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:31:32.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646608 -999.00  +16.00  12.48     44   +3.90 1 1 1 1 1   887    0 11.09 -43.91 ----- 12.5 12.5 210.8 20.8 19.5 -27.6 19.2 -26.8 20.5 -26.3 21.1 -28.1
2025-09-28T17:31:32.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:31:32.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:31:32.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646608
2025-09-28T17:31:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:31:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:31:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:31:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:31:32.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:31:32.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:31:24', tmtdew=13.38, humidity=40.52, cloud=0.0, wind=19.13, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:31:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:31:32.770 [DEBUG] [Thread-130971] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:32.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-28T17:31:32.873 [DEBUG] [Thread-130974] [transport.py] [_log()] starting thread (client mode): 0x2e3c1f90
2025-09-28T17:31:32.873 [DEBUG] [Thread-130974] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:32.888 [DEBUG] [Thread-130974] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:31:32.888 [INFO] [Thread-130974] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:31:32.895 [DEBUG] [Thread-130974] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:32.896 [DEBUG] [Thread-130974] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:32.897 [DEBUG] [Thread-130974] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:32.898 [DEBUG] [Thread-130974] [transport.py] [_log()] Compression: none
2025-09-28T17:31:32.898 [DEBUG] [Thread-130974] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:32.954 [DEBUG] [Thread-130974] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:32.954 [DEBUG] [Thread-130974] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:32.954 [DEBUG] [Thread-130974] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:31:32.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:31:32.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:33.010 [DEBUG] [Thread-130974] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:33.010 [DEBUG] [Thread-130974] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:33.010 [DEBUG] [Thread-130974] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:33.010 [DEBUG] [Thread-130974] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:31:33.010 [DEBUG] [Thread-130974] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:33.029 [INFO] [Thread-130974] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:33.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-28T17:31:33.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:33.968 [DEBUG] [Thread-130974] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:33.968 [DEBUG] [Thread-130974] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:34.016 [DEBUG] [Thread-130974] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:34.016 [DEBUG] [Thread-130974] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:34.024 [DEBUG] [Thread-130974] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:34.032 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:34.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-28T17:31:34.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-28T17:31:34.048 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:34.048 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:34.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:34.056 [DEBUG] [Thread-130974] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:41.062 [DEBUG] [Thread-130976 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:44.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:31:44.059 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:31:44.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-28T17:31:44.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 31, 24), 13.38, 40.52, 0.0, 19.13, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:31:44.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:31:24
2025-09-28T17:31:44.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:31:44.915 [DEBUG] [Thread-130977] [transport.py] [_log()] starting thread (client mode): 0x2e3c3ac0
2025-09-28T17:31:44.915 [DEBUG] [Thread-130977] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:44.936 [DEBUG] [Thread-130977] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:31:44.936 [INFO] [Thread-130977] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:31:44.939 [DEBUG] [Thread-130977] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:44.939 [DEBUG] [Thread-130977] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:31:44.939 [DEBUG] [Thread-130977] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] Compression: none
2025-09-28T17:31:44.940 [DEBUG] [Thread-130977] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:44.959 [DEBUG] [Thread-130977] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:44.959 [DEBUG] [Thread-130977] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:44.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:31:44.960 [DEBUG] [Thread-130977] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:31:44.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:44.962 [DEBUG] [Thread-130977] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:44.962 [DEBUG] [Thread-130977] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:44.962 [DEBUG] [Thread-130977] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:44.962 [DEBUG] [Thread-130977] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:31:44.963 [DEBUG] [Thread-130977] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:44.986 [INFO] [Thread-130977] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:44.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:45.813 [DEBUG] [Thread-130977] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:45.813 [DEBUG] [Thread-130977] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:45.813 [DEBUG] [Thread-130977] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:31:45.853 [DEBUG] [Thread-130977] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:45.853 [DEBUG] [Thread-130977] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:45.856 [DEBUG] [Thread-130977] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:45.871 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:45.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:31:45.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:31:45.875 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:31:45.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:45.882 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:31:45.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:45.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:45.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:31:45.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646608 -999.00  +16.00  12.48     44   +3.90 1 1 1 1 1   887    0 11.09 -43.91 ----- 12.5 12.5 210.8 20.8 19.5 -27.6 19.2 -26.8 20.5 -26.3 21.1 -28.1
2025-09-28T17:31:45.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:31:45.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:31:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646608
2025-09-28T17:31:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:31:45.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:31:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:31:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:31:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:31:45.885 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:31:24', tmtdew=13.38, humidity=40.52, cloud=0.0, wind=19.13, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:31:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:31:45.885 [DEBUG] [Thread-130977] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:45.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-28T17:31:45.981 [DEBUG] [Thread-130980] [transport.py] [_log()] starting thread (client mode): 0x2e3c1ba0
2025-09-28T17:31:45.981 [DEBUG] [Thread-130980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:45.996 [DEBUG] [Thread-130980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:31:45.996 [INFO] [Thread-130980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:31:46.003 [DEBUG] [Thread-130980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:46.004 [DEBUG] [Thread-130980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:46.005 [DEBUG] [Thread-130980] [transport.py] [_log()] Compression: none
2025-09-28T17:31:46.006 [DEBUG] [Thread-130980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:46.062 [DEBUG] [Thread-130980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:46.063 [DEBUG] [Thread-130980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:46.063 [DEBUG] [Thread-130980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:31:46.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:31:46.064 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:46.118 [DEBUG] [Thread-130980] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:46.118 [DEBUG] [Thread-130980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:46.118 [DEBUG] [Thread-130980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:46.118 [DEBUG] [Thread-130980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:31:46.118 [DEBUG] [Thread-130980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:46.137 [INFO] [Thread-130980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:46.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-28T17:31:46.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:47.131 [DEBUG] [Thread-130980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:47.131 [DEBUG] [Thread-130980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:47.179 [DEBUG] [Thread-130980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:47.179 [DEBUG] [Thread-130980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:47.188 [DEBUG] [Thread-130980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:47.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:47.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-28T17:31:47.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-28T17:31:47.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:47.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:47.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:47.222 [DEBUG] [Thread-130980] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:56.106 [DEBUG] [Thread-130982 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:31:57.216 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:31:57.216 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:31:57.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-28T17:31:57.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 31, 24), 13.38, 40.52, 0.0, 19.13, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:31:57.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:31:24
2025-09-28T17:31:57.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:31:58.106 [DEBUG] [Thread-130983] [transport.py] [_log()] starting thread (client mode): 0x2e3c1270
2025-09-28T17:31:58.106 [DEBUG] [Thread-130983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:58.127 [DEBUG] [Thread-130983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:31:58.127 [INFO] [Thread-130983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] Compression: none
2025-09-28T17:31:58.130 [DEBUG] [Thread-130983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:58.146 [DEBUG] [Thread-130983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:58.146 [DEBUG] [Thread-130983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:58.147 [DEBUG] [Thread-130983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:31:58.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:31:58.147 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:58.148 [DEBUG] [Thread-130983] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:58.148 [DEBUG] [Thread-130983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:58.148 [DEBUG] [Thread-130983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:58.148 [DEBUG] [Thread-130983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:31:58.148 [DEBUG] [Thread-130983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:58.165 [INFO] [Thread-130983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:58.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:31:58.977 [DEBUG] [Thread-130983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:31:58.977 [DEBUG] [Thread-130983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:31:58.977 [DEBUG] [Thread-130983] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:31:59.017 [DEBUG] [Thread-130983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:31:59.017 [DEBUG] [Thread-130983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:31:59.021 [DEBUG] [Thread-130983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:31:59.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:31:59.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:31:59.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:31:59.038 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:31:59.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:31:59.045 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:31:59.045 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:31:59.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:31:59.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:31:59.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646608 -999.00  +16.00  12.48     44   +3.90 1 1 1 1 1   887    0 11.09 -43.91 ----- 12.5 12.5 210.8 20.8 19.5 -27.6 19.2 -26.8 20.5 -26.3 21.1 -28.1
2025-09-28T17:31:59.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:31:59.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:31:59.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646608
2025-09-28T17:31:59.046 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:31:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:31:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:31:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:31:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:31:59.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:31:24', tmtdew=13.38, humidity=40.52, cloud=0.0, wind=19.13, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:31:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:31:59.047 [DEBUG] [Thread-130983] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:31:59.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-28T17:31:59.146 [DEBUG] [Thread-130986] [transport.py] [_log()] starting thread (client mode): 0x2b91c190
2025-09-28T17:31:59.147 [DEBUG] [Thread-130986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:31:59.162 [DEBUG] [Thread-130986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:31:59.162 [INFO] [Thread-130986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:31:59.169 [DEBUG] [Thread-130986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:31:59.169 [DEBUG] [Thread-130986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:31:59.169 [DEBUG] [Thread-130986] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] client lang: <none>
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] server lang: <none>
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] kex follows: False
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] Compression: none
2025-09-28T17:31:59.170 [DEBUG] [Thread-130986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:31:59.226 [DEBUG] [Thread-130986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:31:59.227 [DEBUG] [Thread-130986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:31:59.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:31:59.228 [DEBUG] [Thread-130986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:31:59.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:31:59.284 [DEBUG] [Thread-130986] [transport.py] [_log()] userauth is OK
2025-09-28T17:31:59.285 [DEBUG] [Thread-130986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:31:59.285 [DEBUG] [Thread-130986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:31:59.285 [DEBUG] [Thread-130986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:31:59.285 [DEBUG] [Thread-130986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:31:59.304 [INFO] [Thread-130986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:31:59.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-28T17:31:59.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:00.264 [DEBUG] [Thread-130986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:00.264 [DEBUG] [Thread-130986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:00.312 [DEBUG] [Thread-130986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:00.312 [DEBUG] [Thread-130986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:00.321 [DEBUG] [Thread-130986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:00.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:00.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-28T17:32:00.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-28T17:32:00.347 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:00.347 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:00.348 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:00.355 [DEBUG] [Thread-130986] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:10.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:32:10.357 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:32:10.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-28T17:32:10.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 31, 56), 13.48, 40.37, 0.0, 17.36, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:32:10.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:31:56
2025-09-28T17:32:11.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:32:11.133 [DEBUG] [Thread-130988 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:11.195 [DEBUG] [Thread-130989] [transport.py] [_log()] starting thread (client mode): 0x2b9552a0
2025-09-28T17:32:11.195 [DEBUG] [Thread-130989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:32:11.214 [DEBUG] [Thread-130989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:32:11.215 [INFO] [Thread-130989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:11.218 [DEBUG] [Thread-130989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] client lang: <none>
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] server lang: <none>
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] kex follows: False
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:32:11.219 [DEBUG] [Thread-130989] [transport.py] [_log()] Compression: none
2025-09-28T17:32:11.220 [DEBUG] [Thread-130989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:32:11.237 [DEBUG] [Thread-130989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:32:11.238 [DEBUG] [Thread-130989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:32:11.239 [DEBUG] [Thread-130989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:32:11.239 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:32:11.240 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:32:11.281 [DEBUG] [Thread-130989] [transport.py] [_log()] userauth is OK
2025-09-28T17:32:11.281 [DEBUG] [Thread-130989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:32:11.281 [DEBUG] [Thread-130989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:32:11.281 [DEBUG] [Thread-130989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:32:11.281 [DEBUG] [Thread-130989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:32:11.316 [INFO] [Thread-130989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:32:11.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:11.956 [DEBUG] [Thread-130989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:11.956 [DEBUG] [Thread-130989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:11.956 [DEBUG] [Thread-130989] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:32:11.998 [DEBUG] [Thread-130989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:11.998 [DEBUG] [Thread-130989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:12.000 [DEBUG] [Thread-130989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:12.012 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:12.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:32:12.013 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:32:12.014 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:32:12.016 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:12.017 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:32:12.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646955 -999.00  +15.90  12.30     44   +3.90 1 1 1 1 1   887    0 10.90 -43.59 ----- 12.3 12.3 208.8 17.2 19.5 -27.4 19.1 -27.0 20.4 -26.4 21.1 -28.3
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646955
2025-09-28T17:32:12.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:32:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:32:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:32:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:32:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:32:12.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:31:56', tmtdew=13.48, humidity=40.37, cloud=0.0, wind=17.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:31:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:32:12.018 [DEBUG] [Thread-130989] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:12.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-28T17:32:12.103 [DEBUG] [Thread-130992] [transport.py] [_log()] starting thread (client mode): 0x2e3c0310
2025-09-28T17:32:12.104 [DEBUG] [Thread-130992] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:32:12.118 [DEBUG] [Thread-130992] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:32:12.118 [INFO] [Thread-130992] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] client lang: <none>
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] server lang: <none>
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] kex follows: False
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] Compression: none
2025-09-28T17:32:12.126 [DEBUG] [Thread-130992] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:32:12.180 [DEBUG] [Thread-130992] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:32:12.181 [DEBUG] [Thread-130992] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:32:12.181 [DEBUG] [Thread-130992] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:32:12.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:32:12.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:32:12.238 [DEBUG] [Thread-130992] [transport.py] [_log()] userauth is OK
2025-09-28T17:32:12.238 [DEBUG] [Thread-130992] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:32:12.238 [DEBUG] [Thread-130992] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:32:12.238 [DEBUG] [Thread-130992] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:32:12.238 [DEBUG] [Thread-130992] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:32:12.252 [INFO] [Thread-130992] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:32:12.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-28T17:32:12.252 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:13.229 [DEBUG] [Thread-130992] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:13.229 [DEBUG] [Thread-130992] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:13.277 [DEBUG] [Thread-130992] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:13.277 [DEBUG] [Thread-130992] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:13.285 [DEBUG] [Thread-130992] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:13.292 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:13.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-28T17:32:13.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-28T17:32:13.308 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:13.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:13.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:13.316 [DEBUG] [Thread-130992] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:23.316 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:32:23.317 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:32:23.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-28T17:32:23.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 31, 56), 13.48, 40.37, 0.0, 17.36, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:32:23.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:31:56
2025-09-28T17:32:24.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:32:24.165 [DEBUG] [Thread-130994] [transport.py] [_log()] starting thread (client mode): 0x2e3c2530
2025-09-28T17:32:24.166 [DEBUG] [Thread-130994] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:32:24.187 [DEBUG] [Thread-130994] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:32:24.187 [INFO] [Thread-130994] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] client lang: <none>
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] server lang: <none>
2025-09-28T17:32:24.191 [DEBUG] [Thread-130994] [transport.py] [_log()] kex follows: False
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] Compression: none
2025-09-28T17:32:24.192 [DEBUG] [Thread-130994] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:32:24.208 [DEBUG] [Thread-130994] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:32:24.208 [DEBUG] [Thread-130994] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:32:24.208 [DEBUG] [Thread-130994] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:32:24.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:32:24.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:32:24.209 [DEBUG] [Thread-130994] [transport.py] [_log()] userauth is OK
2025-09-28T17:32:24.209 [DEBUG] [Thread-130994] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:32:24.209 [DEBUG] [Thread-130994] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:32:24.209 [DEBUG] [Thread-130994] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:32:24.209 [DEBUG] [Thread-130994] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:32:24.217 [DEBUG] [Thread-130996 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:24.219 [INFO] [Thread-130994] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:32:24.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:25.001 [DEBUG] [Thread-130994] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:25.001 [DEBUG] [Thread-130994] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:25.002 [DEBUG] [Thread-130994] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:32:25.042 [DEBUG] [Thread-130994] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:25.043 [DEBUG] [Thread-130994] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:25.046 [DEBUG] [Thread-130994] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:25.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:25.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:32:25.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:32:25.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:32:25.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:25.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:32:25.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:25.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:32:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.646955 -999.00  +15.90  12.30     44   +3.90 1 1 1 1 1   887    0 10.90 -43.59 ----- 12.3 12.3 208.8 17.2 19.5 -27.4 19.1 -27.0 20.4 -26.4 21.1 -28.3
2025-09-28T17:32:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:32:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:32:25.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.646955
2025-09-28T17:32:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:32:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:32:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:32:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:32:25.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:32:25.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:31:56', tmtdew=13.48, humidity=40.37, cloud=0.0, wind=17.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:31:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:32:25.070 [DEBUG] [Thread-130994] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:25.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-28T17:32:25.163 [DEBUG] [Thread-130998] [transport.py] [_log()] starting thread (client mode): 0x2e3c1f30
2025-09-28T17:32:25.163 [DEBUG] [Thread-130998] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:32:25.177 [DEBUG] [Thread-130998] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:32:25.177 [INFO] [Thread-130998] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] client lang: <none>
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] server lang: <none>
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] kex follows: False
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:32:25.185 [DEBUG] [Thread-130998] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:32:25.186 [DEBUG] [Thread-130998] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:32:25.186 [DEBUG] [Thread-130998] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:32:25.186 [DEBUG] [Thread-130998] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:32:25.186 [DEBUG] [Thread-130998] [transport.py] [_log()] Compression: none
2025-09-28T17:32:25.186 [DEBUG] [Thread-130998] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:32:25.242 [DEBUG] [Thread-130998] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:32:25.242 [DEBUG] [Thread-130998] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:32:25.243 [DEBUG] [Thread-130998] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:32:25.243 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:32:25.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:32:25.298 [DEBUG] [Thread-130998] [transport.py] [_log()] userauth is OK
2025-09-28T17:32:25.298 [DEBUG] [Thread-130998] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:32:25.298 [DEBUG] [Thread-130998] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:32:25.299 [DEBUG] [Thread-130998] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:32:25.299 [DEBUG] [Thread-130998] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:32:25.316 [INFO] [Thread-130998] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:32:25.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-28T17:32:25.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:26.157 [DEBUG] [Thread-131000 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:26.254 [DEBUG] [Thread-130998] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:26.254 [DEBUG] [Thread-130998] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:26.302 [DEBUG] [Thread-130998] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:26.302 [DEBUG] [Thread-130998] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:26.311 [DEBUG] [Thread-130998] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:26.320 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:26.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-28T17:32:26.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-28T17:32:26.338 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:26.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:26.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:26.346 [DEBUG] [Thread-130998] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:29.603 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:29.604 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:36.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:32:36.349 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:32:36.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-28T17:32:36.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 32, 28), 13.49, 40.34, 0.0, 19.48, 15.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:32:36.937 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:32:28
2025-09-28T17:32:37.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:32:37.203 [DEBUG] [Thread-131001] [transport.py] [_log()] starting thread (client mode): 0x2b91c9a0
2025-09-28T17:32:37.203 [DEBUG] [Thread-131001] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:32:37.223 [DEBUG] [Thread-131001] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:32:37.223 [INFO] [Thread-131001] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:32:37.226 [DEBUG] [Thread-131001] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] client lang: <none>
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] server lang: <none>
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] kex follows: False
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] Compression: none
2025-09-28T17:32:37.227 [DEBUG] [Thread-131001] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:32:37.243 [DEBUG] [Thread-131001] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:32:37.243 [DEBUG] [Thread-131001] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:32:37.243 [DEBUG] [Thread-131001] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:32:37.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:32:37.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:32:37.284 [DEBUG] [Thread-131001] [transport.py] [_log()] userauth is OK
2025-09-28T17:32:37.284 [DEBUG] [Thread-131001] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:32:37.285 [DEBUG] [Thread-131001] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:32:37.285 [DEBUG] [Thread-131001] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:32:37.285 [DEBUG] [Thread-131001] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:32:37.316 [INFO] [Thread-131001] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:32:37.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:32:37.970 [DEBUG] [Thread-131001] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:32:37.971 [DEBUG] [Thread-131001] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:32:37.971 [DEBUG] [Thread-131001] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:32:38.011 [DEBUG] [Thread-131001] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:32:38.011 [DEBUG] [Thread-131001] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:32:38.014 [DEBUG] [Thread-131001] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:32:38.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:32:38.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:32:38.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:32:38.030 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:32:38.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:32:38.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:32:38.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:32:38.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:32:38.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:32:38.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.647303 -999.00  +15.90  16.47     44   +3.90 1 1 1 1 1   887    0 10.75 -44.72 ----- 16.5 16.5 185.4 21.6 19.4 -27.7 19.1 -28.4 20.4 -27.3 21.0 -28.4
2025-09-28T17:32:38.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:32:38.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:32:38.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.647303
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:32:38.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:32:28', tmtdew=13.49, humidity=40.34, cloud=0.0, wind=19.48, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:32:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:32:38.039 [DEBUG] [Thread-131001] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:32:38.128 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:32:41.199 [DEBUG] [Thread-131004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:32:56.242 [DEBUG] [Thread-131005 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:11.273 [DEBUG] [Thread-131006 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:24.271 [DEBUG] [Thread-131007 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:26.305 [DEBUG] [Thread-131008 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:29.747 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:29.747 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:41.333 [DEBUG] [Thread-131009 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:33:56.364 [DEBUG] [Thread-131010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:11.392 [DEBUG] [Thread-131011 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:24.314 [DEBUG] [Thread-131012 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:26.423 [DEBUG] [Thread-131013 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:29.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:29.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:41.451 [DEBUG] [Thread-131014 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:34:52.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-28T17:34:56.478 [DEBUG] [Thread-131015 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:02.868 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:35:02.868 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:35:02.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-28T17:35:03.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 34, 35), 13.35, 40.57, 0.0, 15.0, 15.56, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:35:03.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:34:35
2025-09-28T17:35:03.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:35:03.745 [DEBUG] [Thread-131016] [transport.py] [_log()] starting thread (client mode): 0x2b91d060
2025-09-28T17:35:03.745 [DEBUG] [Thread-131016] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:03.769 [DEBUG] [Thread-131016] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:35:03.769 [INFO] [Thread-131016] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] Compression: none
2025-09-28T17:35:03.776 [DEBUG] [Thread-131016] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:03.791 [DEBUG] [Thread-131016] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:03.791 [DEBUG] [Thread-131016] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:03.791 [DEBUG] [Thread-131016] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:35:03.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:35:03.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:03.794 [DEBUG] [Thread-131016] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:03.794 [DEBUG] [Thread-131016] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:03.794 [DEBUG] [Thread-131016] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:03.794 [DEBUG] [Thread-131016] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:35:03.794 [DEBUG] [Thread-131016] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:03.817 [INFO] [Thread-131016] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:03.818 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:11.508 [DEBUG] [Thread-131018 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:12.242 [DEBUG] [Thread-131016] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:12.242 [DEBUG] [Thread-131016] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:12.243 [DEBUG] [Thread-131016] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:35:12.283 [DEBUG] [Thread-131016] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:12.283 [DEBUG] [Thread-131016] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:12.286 [DEBUG] [Thread-131016] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:12.373 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:12.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:35:12.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:35:12.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:35:12.382 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:12.383 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:35:12.384 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:12.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:35:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649039 -999.00  +15.80  14.71     45   +4.00 1 1 1 1 1   887    0 10.60 -48.84 ----- 14.7 14.7 206.4 17.3 19.3 -27.0 19.1 -26.6 20.3 -26.7 20.9 -28.1
2025-09-28T17:35:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:35:12.384 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:35:12.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649039
2025-09-28T17:35:12.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:35:12.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:35:12.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:35:12.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:35:12.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:35:12.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:34:35', tmtdew=13.35, humidity=40.57, cloud=0.0, wind=15.0, temperature=15.56, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:34:36.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:35:12.386 [DEBUG] [Thread-131016] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:12.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-28T17:35:12.477 [DEBUG] [Thread-131020] [transport.py] [_log()] starting thread (client mode): 0x2b997820
2025-09-28T17:35:12.477 [DEBUG] [Thread-131020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:12.492 [DEBUG] [Thread-131020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:35:12.492 [INFO] [Thread-131020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] Compression: none
2025-09-28T17:35:12.500 [DEBUG] [Thread-131020] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:12.558 [DEBUG] [Thread-131020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:12.558 [DEBUG] [Thread-131020] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:12.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:35:12.559 [DEBUG] [Thread-131020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:35:12.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:12.618 [DEBUG] [Thread-131020] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:12.618 [DEBUG] [Thread-131020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:12.618 [DEBUG] [Thread-131020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:12.618 [DEBUG] [Thread-131020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:35:12.618 [DEBUG] [Thread-131020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:12.637 [INFO] [Thread-131020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:12.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-28T17:35:12.638 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:13.601 [DEBUG] [Thread-131020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:13.602 [DEBUG] [Thread-131020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:13.649 [DEBUG] [Thread-131020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:13.649 [DEBUG] [Thread-131020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:13.658 [DEBUG] [Thread-131020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:13.667 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:13.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-28T17:35: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') -> 00000000
2025-09-28T17:35:13.685 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:13.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:13.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:13.694 [DEBUG] [Thread-131020] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:23.695 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:35:23.695 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:35:23.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-28T17:35:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 35, 7), 13.34, 40.64, 0.0, 13.82, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:35:24.339 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:35:07
2025-09-28T17:35:24.360 [DEBUG] [Thread-131022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:24.458 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:35:24.610 [DEBUG] [Thread-131023] [transport.py] [_log()] starting thread (client mode): 0x2b994880
2025-09-28T17:35:24.611 [DEBUG] [Thread-131023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:24.630 [DEBUG] [Thread-131023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:35:24.631 [INFO] [Thread-131023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] Compression: none
2025-09-28T17:35:24.634 [DEBUG] [Thread-131023] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:24.649 [DEBUG] [Thread-131023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:24.649 [DEBUG] [Thread-131023] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:24.649 [DEBUG] [Thread-131023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:35:24.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:35:24.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:24.650 [DEBUG] [Thread-131023] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:24.650 [DEBUG] [Thread-131023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:24.650 [DEBUG] [Thread-131023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:24.650 [DEBUG] [Thread-131023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:35:24.651 [DEBUG] [Thread-131023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:24.661 [INFO] [Thread-131023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:24.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:25.279 [DEBUG] [Thread-131023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:25.279 [DEBUG] [Thread-131023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:25.279 [DEBUG] [Thread-131023] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:35:25.321 [DEBUG] [Thread-131023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:25.321 [DEBUG] [Thread-131023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:25.323 [DEBUG] [Thread-131023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:25.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:25.336 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:35:25.337 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:35:25.338 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:35:25.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:25.341 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:35:25.341 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:25.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:25.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649386 -999.00  +15.80   7.66     45   +4.00 1 1 1 1 1   887    0 10.67 -49.71 ----- 7.7 7.7 233.8 20.8 19.3 -27.7 19.0 -26.0 20.3 -26.2 21.0 -28.3
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649386
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:35:25.342 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:35:07', tmtdew=13.34, humidity=40.64, cloud=0.0, wind=13.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:35:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:35:25.342 [DEBUG] [Thread-131023] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:25.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-28T17:35:25.426 [DEBUG] [Thread-131026] [transport.py] [_log()] starting thread (client mode): 0x2b91c730
2025-09-28T17:35:25.426 [DEBUG] [Thread-131026] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:25.440 [DEBUG] [Thread-131026] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:35:25.440 [INFO] [Thread-131026] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] Compression: none
2025-09-28T17:35:25.448 [DEBUG] [Thread-131026] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:25.503 [DEBUG] [Thread-131026] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:25.503 [DEBUG] [Thread-131026] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:25.504 [DEBUG] [Thread-131026] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:35:25.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:35:25.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:25.561 [DEBUG] [Thread-131026] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:25.561 [DEBUG] [Thread-131026] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:25.561 [DEBUG] [Thread-131026] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:25.561 [DEBUG] [Thread-131026] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:35:25.561 [DEBUG] [Thread-131026] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:25.579 [INFO] [Thread-131026] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:25.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-28T17:35:25.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:26.520 [DEBUG] [Thread-131026] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:26.520 [DEBUG] [Thread-131026] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:26.539 [DEBUG] [Thread-131028 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:26.568 [DEBUG] [Thread-131026] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:26.568 [DEBUG] [Thread-131026] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:26.576 [DEBUG] [Thread-131026] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:26.584 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:26.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')
2025-09-28T17:35:26.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-28T17:35:26.599 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:26.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:26.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:26.607 [DEBUG] [Thread-131026] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:30.032 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:30.033 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:36.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:35:36.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:35:36.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-28T17:35:37.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 35, 7), 13.34, 40.64, 0.0, 13.82, 15.61, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:35:37.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:35:07
2025-09-28T17:35:37.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:35:37.486 [DEBUG] [Thread-131029] [transport.py] [_log()] starting thread (client mode): 0x2e3c39d0
2025-09-28T17:35:37.486 [DEBUG] [Thread-131029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:37.506 [DEBUG] [Thread-131029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:35:37.506 [INFO] [Thread-131029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:37.509 [DEBUG] [Thread-131029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:37.510 [DEBUG] [Thread-131029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:37.510 [DEBUG] [Thread-131029] [transport.py] [_log()] Compression: none
2025-09-28T17:35:37.510 [DEBUG] [Thread-131029] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:37.525 [DEBUG] [Thread-131029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:37.526 [DEBUG] [Thread-131029] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:37.526 [DEBUG] [Thread-131029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:35:37.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:35:37.527 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:37.529 [DEBUG] [Thread-131029] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:37.529 [DEBUG] [Thread-131029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:37.529 [DEBUG] [Thread-131029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:37.529 [DEBUG] [Thread-131029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:35:37.529 [DEBUG] [Thread-131029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:37.554 [INFO] [Thread-131029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:37.554 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:39.161 [DEBUG] [Thread-131029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:39.162 [DEBUG] [Thread-131029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:39.162 [DEBUG] [Thread-131029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:35:39.202 [DEBUG] [Thread-131029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:39.202 [DEBUG] [Thread-131029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:39.205 [DEBUG] [Thread-131029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:39.218 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:39.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:35:39.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:35:39.222 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:35:39.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:39.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:35:39.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649386 -999.00  +15.80   7.66     45   +4.00 1 1 1 1 1   887    0 10.67 -49.71 ----- 7.7 7.7 233.8 20.8 19.3 -27.7 19.0 -26.0 20.3 -26.2 21.0 -28.3
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:35:39.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649386
2025-09-28T17:35:39.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:35:39.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:35:39.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:35:39.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:35:39.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:35:39.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:35:07', tmtdew=13.34, humidity=40.64, cloud=0.0, wind=13.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:35:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:35:39.233 [DEBUG] [Thread-131029] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:39.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-28T17:35:39.328 [DEBUG] [Thread-131032] [transport.py] [_log()] starting thread (client mode): 0x2e3c1cc0
2025-09-28T17:35:39.328 [DEBUG] [Thread-131032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:39.345 [DEBUG] [Thread-131032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:35:39.346 [INFO] [Thread-131032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:35:39.355 [DEBUG] [Thread-131032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:39.356 [DEBUG] [Thread-131032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:39.357 [DEBUG] [Thread-131032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:39.357 [DEBUG] [Thread-131032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:39.357 [DEBUG] [Thread-131032] [transport.py] [_log()] Compression: none
2025-09-28T17:35:39.357 [DEBUG] [Thread-131032] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:39.418 [DEBUG] [Thread-131032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:39.418 [DEBUG] [Thread-131032] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:39.419 [DEBUG] [Thread-131032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:35:39.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:35:39.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:39.475 [DEBUG] [Thread-131032] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:39.476 [DEBUG] [Thread-131032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:39.476 [DEBUG] [Thread-131032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:39.476 [DEBUG] [Thread-131032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:35:39.476 [DEBUG] [Thread-131032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:39.494 [INFO] [Thread-131032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:39.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-28T17:35:39.494 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:40.462 [DEBUG] [Thread-131032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:40.462 [DEBUG] [Thread-131032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:40.511 [DEBUG] [Thread-131032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:40.511 [DEBUG] [Thread-131032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:40.519 [DEBUG] [Thread-131032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:40.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:40.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-28T17:35:40.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') -> 00000000
2025-09-28T17:35:40.543 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:40.543 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:40.543 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:40.550 [DEBUG] [Thread-131032] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:41.581 [DEBUG] [Thread-131034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:35:50.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:35:50.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:35:50.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:35:51.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 35, 39), 13.54, 39.99, 0.0, 14.91, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:35:51.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:35:39
2025-09-28T17:35:51.267 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:35:51.414 [DEBUG] [Thread-131035] [transport.py] [_log()] starting thread (client mode): 0x2b9dc520
2025-09-28T17:35:51.414 [DEBUG] [Thread-131035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:51.435 [DEBUG] [Thread-131035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:35:51.435 [INFO] [Thread-131035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:35:51.438 [DEBUG] [Thread-131035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:51.438 [DEBUG] [Thread-131035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] Compression: none
2025-09-28T17:35:51.439 [DEBUG] [Thread-131035] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:51.455 [DEBUG] [Thread-131035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:51.456 [DEBUG] [Thread-131035] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:51.456 [DEBUG] [Thread-131035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:35:51.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:35:51.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:51.458 [DEBUG] [Thread-131035] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:51.459 [DEBUG] [Thread-131035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:51.459 [DEBUG] [Thread-131035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:51.459 [DEBUG] [Thread-131035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:35:51.459 [DEBUG] [Thread-131035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:51.484 [INFO] [Thread-131035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:51.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:52.260 [DEBUG] [Thread-131035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:52.260 [DEBUG] [Thread-131035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:52.261 [DEBUG] [Thread-131035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:35:52.301 [DEBUG] [Thread-131035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:52.302 [DEBUG] [Thread-131035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:52.305 [DEBUG] [Thread-131035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:52.315 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:52.316 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:35:52.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:35:52.319 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:35:52.324 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:52.326 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:35:52.326 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:52.326 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:52.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:35:52.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649386 -999.00  +15.80   7.66     45   +4.00 1 1 1 1 1   887    0 10.67 -49.71 ----- 7.7 7.7 233.8 20.8 19.3 -27.7 19.0 -26.0 20.3 -26.2 21.0 -28.3
2025-09-28T17:35:52.326 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:35:52.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:35:52.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649386
2025-09-28T17:35:52.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:35:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:35:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:35:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:35:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:35:52.328 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:35:39', tmtdew=13.54, humidity=39.99, cloud=0.0, wind=14.91, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:35:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:35:52.328 [DEBUG] [Thread-131035] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:52.413 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:35:52.422 [DEBUG] [Thread-131038] [transport.py] [_log()] starting thread (client mode): 0x2b9dcc40
2025-09-28T17:35:52.422 [DEBUG] [Thread-131038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:35:52.437 [DEBUG] [Thread-131038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:35:52.437 [INFO] [Thread-131038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] client lang: <none>
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] server lang: <none>
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] kex follows: False
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:35:52.445 [DEBUG] [Thread-131038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:35:52.446 [DEBUG] [Thread-131038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:35:52.446 [DEBUG] [Thread-131038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:35:52.446 [DEBUG] [Thread-131038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:35:52.446 [DEBUG] [Thread-131038] [transport.py] [_log()] Compression: none
2025-09-28T17:35:52.446 [DEBUG] [Thread-131038] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:35:52.502 [DEBUG] [Thread-131038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:35:52.502 [DEBUG] [Thread-131038] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:35:52.503 [DEBUG] [Thread-131038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:35:52.503 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:35:52.504 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:35:52.559 [DEBUG] [Thread-131038] [transport.py] [_log()] userauth is OK
2025-09-28T17:35:52.559 [DEBUG] [Thread-131038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:35:52.559 [DEBUG] [Thread-131038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:35:52.559 [DEBUG] [Thread-131038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:35:52.559 [DEBUG] [Thread-131038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:35:52.578 [INFO] [Thread-131038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:35:52.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-28T17:35:52.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:35:53.521 [DEBUG] [Thread-131038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:35:53.521 [DEBUG] [Thread-131038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:35:53.570 [DEBUG] [Thread-131038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:35:53.570 [DEBUG] [Thread-131038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:35:53.579 [DEBUG] [Thread-131038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:35:53.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:35:53.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')
2025-09-28T17:35:53.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-28T17:35:53.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:35:53.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:35:53.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:35:53.617 [DEBUG] [Thread-131038] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:35:56.613 [DEBUG] [Thread-131040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:03.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:36:03.610 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:36:03.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-28T17:36:04.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 35, 39), 13.54, 39.99, 0.0, 14.91, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:36:04.244 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:35:39
2025-09-28T17:36:04.357 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:36:04.511 [DEBUG] [Thread-131041] [transport.py] [_log()] starting thread (client mode): 0x2e3c2530
2025-09-28T17:36:04.511 [DEBUG] [Thread-131041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:04.530 [DEBUG] [Thread-131041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:36:04.530 [INFO] [Thread-131041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] Compression: none
2025-09-28T17:36:04.534 [DEBUG] [Thread-131041] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:04.549 [DEBUG] [Thread-131041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:04.549 [DEBUG] [Thread-131041] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:04.549 [DEBUG] [Thread-131041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:36:04.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:36:04.550 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:04.550 [DEBUG] [Thread-131041] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:04.550 [DEBUG] [Thread-131041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:04.550 [DEBUG] [Thread-131041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:04.550 [DEBUG] [Thread-131041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:36:04.550 [DEBUG] [Thread-131041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:04.568 [INFO] [Thread-131041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:04.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:05.211 [DEBUG] [Thread-131041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:05.211 [DEBUG] [Thread-131041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:05.212 [DEBUG] [Thread-131041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:36:05.252 [DEBUG] [Thread-131041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:05.253 [DEBUG] [Thread-131041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:05.255 [DEBUG] [Thread-131041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:05.267 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:05.267 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:36:05.268 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:36:05.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:36:05.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:05.275 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:36:05.276 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649733 -999.00  +15.90  12.63     45   +4.00 1 1 1 1 1   887    0 10.74 -49.11 ----- 12.6 12.6 209.3 19.6 19.3 -27.6 19.0 -26.2 20.3 -26.3 20.9 -27.6
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:36:05.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649733
2025-09-28T17:36:05.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:36:05.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:36:05.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:36:05.277 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:36:05.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:36:05.278 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:35:39', tmtdew=13.54, humidity=39.99, cloud=0.0, wind=14.91, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:35:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:36:05.278 [DEBUG] [Thread-131041] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:05.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-28T17:36:05.381 [DEBUG] [Thread-131044] [transport.py] [_log()] starting thread (client mode): 0x2e3c0790
2025-09-28T17:36:05.381 [DEBUG] [Thread-131044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:05.396 [DEBUG] [Thread-131044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:36:05.396 [INFO] [Thread-131044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:36:05.403 [DEBUG] [Thread-131044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] Compression: none
2025-09-28T17:36:05.404 [DEBUG] [Thread-131044] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:05.461 [DEBUG] [Thread-131044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:05.462 [DEBUG] [Thread-131044] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:05.462 [DEBUG] [Thread-131044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:36:05.462 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:36:05.463 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:05.518 [DEBUG] [Thread-131044] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:05.518 [DEBUG] [Thread-131044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:05.518 [DEBUG] [Thread-131044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:05.518 [DEBUG] [Thread-131044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:36:05.518 [DEBUG] [Thread-131044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:05.541 [INFO] [Thread-131044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:05.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-28T17:36:05.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:06.560 [DEBUG] [Thread-131044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:06.560 [DEBUG] [Thread-131044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:06.608 [DEBUG] [Thread-131044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:06.608 [DEBUG] [Thread-131044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:06.616 [DEBUG] [Thread-131044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:06.624 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:06.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-28T17:36:06.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-28T17:36:06.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:06.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:06.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:06.650 [DEBUG] [Thread-131044] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:11.661 [DEBUG] [Thread-131046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:16.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:36:16.653 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:36:16.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-28T17:36:17.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 36, 11), 13.58, 39.89, 0.0, 16.99, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:36:17.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:36:11
2025-09-28T17:36:17.371 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:36:17.519 [DEBUG] [Thread-131047] [transport.py] [_log()] starting thread (client mode): 0x2b91faf0
2025-09-28T17:36:17.519 [DEBUG] [Thread-131047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:17.538 [DEBUG] [Thread-131047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:36:17.538 [INFO] [Thread-131047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] Compression: none
2025-09-28T17:36:17.542 [DEBUG] [Thread-131047] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:17.558 [DEBUG] [Thread-131047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:17.558 [DEBUG] [Thread-131047] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:17.559 [DEBUG] [Thread-131047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:36:17.559 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:36:17.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:17.561 [DEBUG] [Thread-131047] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:17.561 [DEBUG] [Thread-131047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:17.561 [DEBUG] [Thread-131047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:17.561 [DEBUG] [Thread-131047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:36:17.561 [DEBUG] [Thread-131047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:17.597 [INFO] [Thread-131047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:17.598 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:18.341 [DEBUG] [Thread-131047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:18.341 [DEBUG] [Thread-131047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:18.342 [DEBUG] [Thread-131047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:36:18.382 [DEBUG] [Thread-131047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:18.382 [DEBUG] [Thread-131047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:18.386 [DEBUG] [Thread-131047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:18.397 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:18.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:36:18.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:36:18.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:36:18.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:18.406 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:36:18.406 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:18.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:18.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:36:18.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.649733 -999.00  +15.90  12.63     45   +4.00 1 1 1 1 1   887    0 10.74 -49.11 ----- 12.6 12.6 209.3 19.6 19.3 -27.6 19.0 -26.2 20.3 -26.3 20.9 -27.6
2025-09-28T17:36:18.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:36:18.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:36:18.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.649733
2025-09-28T17:36:18.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:36:18.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:36:18.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:36:18.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:36:18.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:36:18.409 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:36:11', tmtdew=13.58, humidity=39.89, cloud=0.0, wind=16.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:35:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:36:18.409 [DEBUG] [Thread-131047] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:18.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-28T17:36:18.504 [DEBUG] [Thread-131050] [transport.py] [_log()] starting thread (client mode): 0x2e3c3730
2025-09-28T17:36:18.504 [DEBUG] [Thread-131050] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:18.518 [DEBUG] [Thread-131050] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:36:18.518 [INFO] [Thread-131050] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:18.526 [DEBUG] [Thread-131050] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:18.527 [DEBUG] [Thread-131050] [transport.py] [_log()] Compression: none
2025-09-28T17:36:18.528 [DEBUG] [Thread-131050] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:18.590 [DEBUG] [Thread-131050] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:18.590 [DEBUG] [Thread-131050] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:18.591 [DEBUG] [Thread-131050] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:36:18.591 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:36:18.592 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:18.648 [DEBUG] [Thread-131050] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:18.649 [DEBUG] [Thread-131050] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:18.649 [DEBUG] [Thread-131050] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:18.649 [DEBUG] [Thread-131050] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:36:18.649 [DEBUG] [Thread-131050] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:18.667 [INFO] [Thread-131050] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36: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-28T17:36:18.668 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:19.639 [DEBUG] [Thread-131050] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:19.639 [DEBUG] [Thread-131050] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:19.687 [DEBUG] [Thread-131050] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:19.688 [DEBUG] [Thread-131050] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:19.697 [DEBUG] [Thread-131050] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:19.706 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:19.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-28T17:36:19.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-28T17:36:19.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:19.723 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:19.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:19.732 [DEBUG] [Thread-131050] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:24.416 [DEBUG] [Thread-131052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:26.705 [DEBUG] [Thread-131053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:29.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:36:29.726 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:36:29.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-28T17:36:30.174 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:30.175 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:30.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 36, 11), 13.58, 39.89, 0.0, 16.99, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:36:30.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:36:11
2025-09-28T17:36:30.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:36:30.594 [DEBUG] [Thread-131054] [transport.py] [_log()] starting thread (client mode): 0x2b91f7c0
2025-09-28T17:36:30.594 [DEBUG] [Thread-131054] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:30.614 [DEBUG] [Thread-131054] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:36:30.614 [INFO] [Thread-131054] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] Compression: none
2025-09-28T17:36:30.617 [DEBUG] [Thread-131054] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:30.633 [DEBUG] [Thread-131054] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:30.633 [DEBUG] [Thread-131054] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:30.634 [DEBUG] [Thread-131054] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:36:30.634 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:36:30.635 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:30.636 [DEBUG] [Thread-131054] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:30.636 [DEBUG] [Thread-131054] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:30.636 [DEBUG] [Thread-131054] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:30.636 [DEBUG] [Thread-131054] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:36:30.637 [DEBUG] [Thread-131054] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:30.660 [INFO] [Thread-131054] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:30.661 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:31.248 [DEBUG] [Thread-131054] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:31.248 [DEBUG] [Thread-131054] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:31.248 [DEBUG] [Thread-131054] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:36:31.289 [DEBUG] [Thread-131054] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:31.289 [DEBUG] [Thread-131054] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:31.292 [DEBUG] [Thread-131054] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:31.306 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:31.306 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:36:31.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:36:31.310 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:36:31.315 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:31.317 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:36:31.317 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:31.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650080 -999.00  +15.90  14.78     44   +3.90 1 1 1 1 1   887    0 10.65 -47.71 ----- 14.8 14.8 189.6 18.2 19.3 -27.5 19.1 -27.8 20.3 -26.9 20.9 -27.9
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650080
2025-09-28T17:36:31.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:36:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:36:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:36:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:36:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:36:31.319 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:36:11', tmtdew=13.58, humidity=39.89, cloud=0.0, wind=16.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:36:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:36:31.320 [DEBUG] [Thread-131054] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:31.405 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:36:31.417 [DEBUG] [Thread-131057] [transport.py] [_log()] starting thread (client mode): 0x2b91ead0
2025-09-28T17:36:31.417 [DEBUG] [Thread-131057] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:31.435 [DEBUG] [Thread-131057] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:36:31.435 [INFO] [Thread-131057] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:36:31.442 [DEBUG] [Thread-131057] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:31.443 [DEBUG] [Thread-131057] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:31.444 [DEBUG] [Thread-131057] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:31.444 [DEBUG] [Thread-131057] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:31.444 [DEBUG] [Thread-131057] [transport.py] [_log()] Compression: none
2025-09-28T17:36:31.444 [DEBUG] [Thread-131057] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:31.504 [DEBUG] [Thread-131057] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:31.504 [DEBUG] [Thread-131057] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:31.504 [DEBUG] [Thread-131057] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:36:31.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:36:31.505 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:31.560 [DEBUG] [Thread-131057] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:31.560 [DEBUG] [Thread-131057] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:31.560 [DEBUG] [Thread-131057] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:31.560 [DEBUG] [Thread-131057] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:36:31.560 [DEBUG] [Thread-131057] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:31.579 [INFO] [Thread-131057] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:31.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-28T17:36:31.579 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:32.544 [DEBUG] [Thread-131057] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:32.544 [DEBUG] [Thread-131057] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:32.592 [DEBUG] [Thread-131057] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:32.592 [DEBUG] [Thread-131057] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:32.601 [DEBUG] [Thread-131057] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:32.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:32.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-28T17:36:32.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-28T17:36:32.627 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:32.627 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:32.628 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:32.636 [DEBUG] [Thread-131057] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:41.745 [DEBUG] [Thread-131059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:42.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:36:42.636 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:36:42.636 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:36:43.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 36, 11), 13.58, 39.89, 0.0, 16.99, 15.78, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:36:43.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:36:11
2025-09-28T17:36:43.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:36:43.499 [DEBUG] [Thread-131060] [transport.py] [_log()] starting thread (client mode): 0x2e3c0820
2025-09-28T17:36:43.499 [DEBUG] [Thread-131060] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:43.520 [DEBUG] [Thread-131060] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:36:43.520 [INFO] [Thread-131060] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:36:43.523 [DEBUG] [Thread-131060] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:43.523 [DEBUG] [Thread-131060] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] Compression: none
2025-09-28T17:36:43.524 [DEBUG] [Thread-131060] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:43.541 [DEBUG] [Thread-131060] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:43.541 [DEBUG] [Thread-131060] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:43.542 [DEBUG] [Thread-131060] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:36:43.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:36:43.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:43.544 [DEBUG] [Thread-131060] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:43.544 [DEBUG] [Thread-131060] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:43.544 [DEBUG] [Thread-131060] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:43.544 [DEBUG] [Thread-131060] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:36:43.544 [DEBUG] [Thread-131060] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:43.559 [INFO] [Thread-131060] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:43.560 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:44.323 [DEBUG] [Thread-131060] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:44.323 [DEBUG] [Thread-131060] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:44.323 [DEBUG] [Thread-131060] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:36:44.364 [DEBUG] [Thread-131060] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:44.364 [DEBUG] [Thread-131060] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:44.366 [DEBUG] [Thread-131060] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:44.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:44.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:36:44.372 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:36:44.373 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:36:44.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:44.376 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:36:44.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650080 -999.00  +15.90  14.78     44   +3.90 1 1 1 1 1   887    0 10.65 -47.71 ----- 14.8 14.8 189.6 18.2 19.3 -27.5 19.1 -27.8 20.3 -26.9 20.9 -27.9
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650080
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:36:44.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:36:11', tmtdew=13.58, humidity=39.89, cloud=0.0, wind=16.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:36:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:36:44.377 [DEBUG] [Thread-131060] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:44.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-28T17:36:44.463 [DEBUG] [Thread-131063] [transport.py] [_log()] starting thread (client mode): 0x2e3c0eb0
2025-09-28T17:36:44.463 [DEBUG] [Thread-131063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:44.479 [DEBUG] [Thread-131063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:36:44.479 [INFO] [Thread-131063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] Compression: none
2025-09-28T17:36:44.486 [DEBUG] [Thread-131063] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:44.541 [DEBUG] [Thread-131063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:44.541 [DEBUG] [Thread-131063] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:44.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:36:44.542 [DEBUG] [Thread-131063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:36:44.542 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:44.598 [DEBUG] [Thread-131063] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:44.598 [DEBUG] [Thread-131063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:44.598 [DEBUG] [Thread-131063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:44.599 [DEBUG] [Thread-131063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:36:44.599 [DEBUG] [Thread-131063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:44.612 [INFO] [Thread-131063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:44.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-28T17:36:44.613 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:45.593 [DEBUG] [Thread-131063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:45.593 [DEBUG] [Thread-131063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:45.642 [DEBUG] [Thread-131063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:45.642 [DEBUG] [Thread-131063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:45.651 [DEBUG] [Thread-131063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:45.659 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36: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-28T17:36:45.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') -> 00000000
2025-09-28T17:36:45.677 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:45.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:45.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:45.685 [DEBUG] [Thread-131063] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:55.687 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:36:55.688 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:36: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-28T17:36:56.287 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 36, 43), 13.68, 39.87, 0.0, 14.36, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:36:56.288 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:36:43
2025-09-28T17:36:56.393 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:36:56.541 [DEBUG] [Thread-131065] [transport.py] [_log()] starting thread (client mode): 0x2e3c2320
2025-09-28T17:36:56.541 [DEBUG] [Thread-131065] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:56.561 [DEBUG] [Thread-131065] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:36:56.561 [INFO] [Thread-131065] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:36:56.564 [DEBUG] [Thread-131065] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:56.564 [DEBUG] [Thread-131065] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:36:56.564 [DEBUG] [Thread-131065] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:56.564 [DEBUG] [Thread-131065] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] Compression: none
2025-09-28T17:36:56.565 [DEBUG] [Thread-131065] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:56.582 [DEBUG] [Thread-131065] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:56.583 [DEBUG] [Thread-131065] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:56.583 [DEBUG] [Thread-131065] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:36:56.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:36:56.584 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:56.585 [DEBUG] [Thread-131065] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:56.586 [DEBUG] [Thread-131065] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:56.586 [DEBUG] [Thread-131065] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:56.586 [DEBUG] [Thread-131065] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:36:56.586 [DEBUG] [Thread-131065] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:56.621 [INFO] [Thread-131065] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:56.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:56.787 [DEBUG] [Thread-131067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:36:57.392 [DEBUG] [Thread-131065] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:57.392 [DEBUG] [Thread-131065] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:57.393 [DEBUG] [Thread-131065] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:36:57.433 [DEBUG] [Thread-131065] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:57.434 [DEBUG] [Thread-131065] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:57.436 [DEBUG] [Thread-131065] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:57.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:57.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:36:57.448 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:36:57.450 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:36:57.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:57.458 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:36:57.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:57.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:57.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:36:57.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650080 -999.00  +15.90  14.78     44   +3.90 1 1 1 1 1   887    0 10.65 -47.71 ----- 14.8 14.8 189.6 18.2 19.3 -27.5 19.1 -27.8 20.3 -26.9 20.9 -27.9
2025-09-28T17:36:57.459 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:36:57.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:36:57.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650080
2025-09-28T17:36:57.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:36:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:36:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:36:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:36:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:36:57.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:36:43', tmtdew=13.68, humidity=39.87, cloud=0.0, wind=14.36, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:36:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:36:57.461 [DEBUG] [Thread-131065] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:36:57.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-28T17:36:57.556 [DEBUG] [Thread-131069] [transport.py] [_log()] starting thread (client mode): 0x2e363ac0
2025-09-28T17:36:57.556 [DEBUG] [Thread-131069] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:36:57.571 [DEBUG] [Thread-131069] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:36:57.571 [INFO] [Thread-131069] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:57.579 [DEBUG] [Thread-131069] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] client lang: <none>
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] server lang: <none>
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] kex follows: False
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:36:57.580 [DEBUG] [Thread-131069] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:36:57.581 [DEBUG] [Thread-131069] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:36:57.581 [DEBUG] [Thread-131069] [transport.py] [_log()] Compression: none
2025-09-28T17:36:57.581 [DEBUG] [Thread-131069] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:36:57.641 [DEBUG] [Thread-131069] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:36:57.642 [DEBUG] [Thread-131069] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:36:57.642 [DEBUG] [Thread-131069] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:36:57.642 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:36:57.643 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:36:57.698 [DEBUG] [Thread-131069] [transport.py] [_log()] userauth is OK
2025-09-28T17:36:57.698 [DEBUG] [Thread-131069] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:36:57.698 [DEBUG] [Thread-131069] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:36:57.698 [DEBUG] [Thread-131069] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:36:57.698 [DEBUG] [Thread-131069] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:36:57.718 [INFO] [Thread-131069] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:36:57.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-28T17:36:57.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:36:58.679 [DEBUG] [Thread-131069] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:36:58.679 [DEBUG] [Thread-131069] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:36:58.727 [DEBUG] [Thread-131069] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:36:58.727 [DEBUG] [Thread-131069] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:36:58.736 [DEBUG] [Thread-131069] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:36:58.744 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:36:58.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-28T17:36:58.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-28T17:36:58.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:36:58.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:36:58.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:36:58.770 [DEBUG] [Thread-131069] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:08.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:37:08.772 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:37:08.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-28T17:37:09.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 36, 43), 13.68, 39.87, 0.0, 14.36, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:37:09.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:36:43
2025-09-28T17:37:09.489 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:37:09.638 [DEBUG] [Thread-131071] [transport.py] [_log()] starting thread (client mode): 0x2e360a30
2025-09-28T17:37:09.639 [DEBUG] [Thread-131071] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:09.661 [DEBUG] [Thread-131071] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:37:09.661 [INFO] [Thread-131071] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:09.663 [DEBUG] [Thread-131071] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] Compression: none
2025-09-28T17:37:09.664 [DEBUG] [Thread-131071] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:09.679 [DEBUG] [Thread-131071] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:09.679 [DEBUG] [Thread-131071] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:09.680 [DEBUG] [Thread-131071] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:37:09.680 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:37:09.681 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:09.682 [DEBUG] [Thread-131071] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:09.682 [DEBUG] [Thread-131071] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:09.683 [DEBUG] [Thread-131071] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:09.683 [DEBUG] [Thread-131071] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:37:09.683 [DEBUG] [Thread-131071] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:09.704 [INFO] [Thread-131071] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:09.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:10.295 [DEBUG] [Thread-131071] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:10.296 [DEBUG] [Thread-131071] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:10.296 [DEBUG] [Thread-131071] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:37:10.336 [DEBUG] [Thread-131071] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:10.336 [DEBUG] [Thread-131071] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:10.338 [DEBUG] [Thread-131071] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:10.350 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:10.351 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:37:10.352 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:37:10.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:37:10.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:10.360 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:37:10.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:10.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650428 -999.00  +15.80  21.75     45   +3.90 1 1 1 1 1   887    0 10.84 -41.17 ----- 21.8 21.8 201.4 28.0 19.3 -26.8 19.0 -28.5 20.2 -27.2 20.8 -28.2
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650428
2025-09-28T17:37:10.361 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:37:10.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:37:10.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:37:10.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:37:10.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:37:10.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:36:43', tmtdew=13.68, humidity=39.87, cloud=0.0, wind=14.36, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:36:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:37:10.362 [DEBUG] [Thread-131071] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:10.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-28T17:37:10.461 [DEBUG] [Thread-131074] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a00
2025-09-28T17:37:10.461 [DEBUG] [Thread-131074] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:10.478 [DEBUG] [Thread-131074] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:37:10.478 [INFO] [Thread-131074] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:37:10.488 [DEBUG] [Thread-131074] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:10.488 [DEBUG] [Thread-131074] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:10.489 [DEBUG] [Thread-131074] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:10.490 [DEBUG] [Thread-131074] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:10.491 [DEBUG] [Thread-131074] [transport.py] [_log()] Compression: none
2025-09-28T17:37:10.491 [DEBUG] [Thread-131074] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:10.547 [DEBUG] [Thread-131074] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:10.548 [DEBUG] [Thread-131074] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:10.548 [DEBUG] [Thread-131074] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:37:10.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:37:10.549 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:10.611 [DEBUG] [Thread-131074] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:10.611 [DEBUG] [Thread-131074] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:10.611 [DEBUG] [Thread-131074] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:10.611 [DEBUG] [Thread-131074] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:37:10.612 [DEBUG] [Thread-131074] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:10.631 [INFO] [Thread-131074] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:10.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-28T17:37:10.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:11.608 [DEBUG] [Thread-131074] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:11.608 [DEBUG] [Thread-131074] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:11.656 [DEBUG] [Thread-131074] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:11.656 [DEBUG] [Thread-131074] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:11.666 [DEBUG] [Thread-131074] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:11.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:11.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')
2025-09-28T17:37:11.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') -> 00000000
2025-09-28T17:37:11.692 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:11.692 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:11.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:11.700 [DEBUG] [Thread-131074] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:11.816 [DEBUG] [Thread-131076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:21.703 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:37:21.703 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:37:21.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-28T17:37:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 37, 15), 13.69, 39.86, 0.0, 16.78, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:37:22.297 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:37:15
2025-09-28T17:37:22.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:37:22.550 [DEBUG] [Thread-131077] [transport.py] [_log()] starting thread (client mode): 0x2b91cb50
2025-09-28T17:37:22.550 [DEBUG] [Thread-131077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:22.579 [DEBUG] [Thread-131077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:37:22.579 [INFO] [Thread-131077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:22.583 [DEBUG] [Thread-131077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:22.584 [DEBUG] [Thread-131077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:22.584 [DEBUG] [Thread-131077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:22.584 [DEBUG] [Thread-131077] [transport.py] [_log()] Compression: none
2025-09-28T17:37:22.584 [DEBUG] [Thread-131077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:22.601 [DEBUG] [Thread-131077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:22.602 [DEBUG] [Thread-131077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:22.602 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:37:22.603 [DEBUG] [Thread-131077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:37:22.603 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:22.604 [DEBUG] [Thread-131077] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:22.605 [DEBUG] [Thread-131077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:22.605 [DEBUG] [Thread-131077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:22.605 [DEBUG] [Thread-131077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:37:22.605 [DEBUG] [Thread-131077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:22.629 [INFO] [Thread-131077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:22.629 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:23.336 [DEBUG] [Thread-131077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:23.336 [DEBUG] [Thread-131077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:23.337 [DEBUG] [Thread-131077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:37:23.377 [DEBUG] [Thread-131077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:23.377 [DEBUG] [Thread-131077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:23.381 [DEBUG] [Thread-131077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:23.395 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:23.396 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:37:23.400 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:37:23.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:37:23.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:23.413 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:37:23.413 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:23.414 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:37:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650428 -999.00  +15.80  21.75     45   +3.90 1 1 1 1 1   887    0 10.84 -41.17 ----- 21.8 21.8 201.4 28.0 19.3 -26.8 19.0 -28.5 20.2 -27.2 20.8 -28.2
2025-09-28T17:37:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:37:23.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:37:23.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650428
2025-09-28T17:37:23.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:37:23.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:37:23.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:37:23.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:37:23.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:37:23.416 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:37:15', tmtdew=13.69, humidity=39.86, cloud=0.0, wind=16.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:36:36.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:37:23.417 [DEBUG] [Thread-131077] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:23.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-28T17:37:23.512 [DEBUG] [Thread-131080] [transport.py] [_log()] starting thread (client mode): 0x2b9b9870
2025-09-28T17:37:23.512 [DEBUG] [Thread-131080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:23.527 [DEBUG] [Thread-131080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:37:23.527 [INFO] [Thread-131080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:37:23.534 [DEBUG] [Thread-131080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:23.534 [DEBUG] [Thread-131080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] Compression: none
2025-09-28T17:37:23.535 [DEBUG] [Thread-131080] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:23.596 [DEBUG] [Thread-131080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:23.596 [DEBUG] [Thread-131080] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:23.597 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:37:23.597 [DEBUG] [Thread-131080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:37:23.598 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:23.652 [DEBUG] [Thread-131080] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:23.652 [DEBUG] [Thread-131080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:23.661 [DEBUG] [Thread-131080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:23.661 [DEBUG] [Thread-131080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:37:23.662 [DEBUG] [Thread-131080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:23.680 [INFO] [Thread-131080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:23.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-28T17:37:23.681 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:24.470 [DEBUG] [Thread-131082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:24.657 [DEBUG] [Thread-131080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:24.657 [DEBUG] [Thread-131080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:24.705 [DEBUG] [Thread-131080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:24.705 [DEBUG] [Thread-131080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:24.715 [DEBUG] [Thread-131080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:24.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:24.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-28T17:37:24.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-28T17:37:24.741 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:24.742 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:24.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:24.750 [DEBUG] [Thread-131080] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:26.861 [DEBUG] [Thread-131083 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:30.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:30.327 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:34.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:37:34.753 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:37:34.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-28T17:37:35.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 37, 15), 13.69, 39.86, 0.0, 16.78, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:37:35.349 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:37:15
2025-09-28T17:37:35.454 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:37:35.604 [DEBUG] [Thread-131084] [transport.py] [_log()] starting thread (client mode): 0x2e3c3a00
2025-09-28T17:37:35.604 [DEBUG] [Thread-131084] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:35.624 [DEBUG] [Thread-131084] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:37:35.624 [INFO] [Thread-131084] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:35.628 [DEBUG] [Thread-131084] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] Compression: none
2025-09-28T17:37:35.629 [DEBUG] [Thread-131084] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:35.648 [DEBUG] [Thread-131084] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:35.649 [DEBUG] [Thread-131084] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:35.649 [DEBUG] [Thread-131084] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:37:35.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:37:35.650 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:35.651 [DEBUG] [Thread-131084] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:35.651 [DEBUG] [Thread-131084] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:35.651 [DEBUG] [Thread-131084] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:35.652 [DEBUG] [Thread-131084] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:37:35.652 [DEBUG] [Thread-131084] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:35.670 [INFO] [Thread-131084] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:35.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:36.298 [DEBUG] [Thread-131084] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:36.298 [DEBUG] [Thread-131084] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:36.299 [DEBUG] [Thread-131084] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:37:36.339 [DEBUG] [Thread-131084] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:36.340 [DEBUG] [Thread-131084] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:36.342 [DEBUG] [Thread-131084] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:36.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:36.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:37:36.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:37:36.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:37:36.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:36.365 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:37:36.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650775 -999.00  +15.80  16.65     45   +4.00 1 1 1 1 1   887    0 10.85 -42.78 ----- 16.6 16.6 191.2 21.9 19.2 -27.4 18.9 -26.7 20.2 -26.4 20.8 -28.2
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:37:36.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650775
2025-09-28T17:37:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:37:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:37:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:37:36.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:37:36.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:37:36.368 [DEBUG] [Thread-131084] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:36.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:37:15', tmtdew=13.69, humidity=39.86, cloud=0.0, wind=16.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:37:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:37:36.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-28T17:37:36.464 [DEBUG] [Thread-131087] [transport.py] [_log()] starting thread (client mode): 0x2e3c2a40
2025-09-28T17:37:36.465 [DEBUG] [Thread-131087] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:36.479 [DEBUG] [Thread-131087] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:37:36.479 [INFO] [Thread-131087] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:36.487 [DEBUG] [Thread-131087] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:36.488 [DEBUG] [Thread-131087] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:36.489 [DEBUG] [Thread-131087] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:36.489 [DEBUG] [Thread-131087] [transport.py] [_log()] Compression: none
2025-09-28T17:37:36.489 [DEBUG] [Thread-131087] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:36.544 [DEBUG] [Thread-131087] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:36.544 [DEBUG] [Thread-131087] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:36.545 [DEBUG] [Thread-131087] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:37:36.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:37:36.545 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:36.599 [DEBUG] [Thread-131087] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:36.600 [DEBUG] [Thread-131087] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:36.600 [DEBUG] [Thread-131087] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:36.600 [DEBUG] [Thread-131087] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:37:36.600 [DEBUG] [Thread-131087] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:36.619 [INFO] [Thread-131087] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:36.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-28T17:37:36.620 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:37.586 [DEBUG] [Thread-131087] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:37.586 [DEBUG] [Thread-131087] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:37.634 [DEBUG] [Thread-131087] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:37.634 [DEBUG] [Thread-131087] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:37.643 [DEBUG] [Thread-131087] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:37.652 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:37.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-28T17:37:37.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-28T17:37:37.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:37.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:37.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:37.678 [DEBUG] [Thread-131087] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:41.906 [DEBUG] [Thread-131089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:37:47.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:37:47.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:37:47.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-28T17:37:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 37, 15), 13.69, 39.86, 0.0, 16.78, 15.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:37:48.305 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:37:15
2025-09-28T17:37:48.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:37:48.570 [DEBUG] [Thread-131090] [transport.py] [_log()] starting thread (client mode): 0x2e3633a0
2025-09-28T17:37:48.570 [DEBUG] [Thread-131090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:48.590 [DEBUG] [Thread-131090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:37:48.590 [INFO] [Thread-131090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:48.593 [DEBUG] [Thread-131090] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] Compression: none
2025-09-28T17:37:48.594 [DEBUG] [Thread-131090] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:48.606 [DEBUG] [Thread-131090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:48.607 [DEBUG] [Thread-131090] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:48.607 [DEBUG] [Thread-131090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:37:48.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:37:48.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:48.608 [DEBUG] [Thread-131090] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:48.608 [DEBUG] [Thread-131090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:48.608 [DEBUG] [Thread-131090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:48.608 [DEBUG] [Thread-131090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:37:48.608 [DEBUG] [Thread-131090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:48.623 [INFO] [Thread-131090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:48.623 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:49.441 [DEBUG] [Thread-131090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:49.442 [DEBUG] [Thread-131090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:49.442 [DEBUG] [Thread-131090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:37:49.482 [DEBUG] [Thread-131090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:49.482 [DEBUG] [Thread-131090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:49.485 [DEBUG] [Thread-131090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:49.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:49.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:37:49.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:37:49.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:37:49.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:49.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:37:49.506 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:49.506 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650775 -999.00  +15.80  16.65     45   +4.00 1 1 1 1 1   887    0 10.85 -42.78 ----- 16.6 16.6 191.2 21.9 19.2 -27.4 18.9 -26.7 20.2 -26.4 20.8 -28.2
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650775
2025-09-28T17:37:49.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:37:49.508 [DEBUG] [Thread-131090] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:37:49.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:37:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:37:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:37:49.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:37:15', tmtdew=13.69, humidity=39.86, cloud=0.0, wind=16.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:37:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:37:49.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-28T17:37:49.602 [DEBUG] [Thread-131093] [transport.py] [_log()] starting thread (client mode): 0x2b997970
2025-09-28T17:37:49.602 [DEBUG] [Thread-131093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:37:49.617 [DEBUG] [Thread-131093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:37:49.617 [INFO] [Thread-131093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] client lang: <none>
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] server lang: <none>
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] kex follows: False
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:37:49.625 [DEBUG] [Thread-131093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:37:49.626 [DEBUG] [Thread-131093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:37:49.626 [DEBUG] [Thread-131093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:37:49.626 [DEBUG] [Thread-131093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:37:49.626 [DEBUG] [Thread-131093] [transport.py] [_log()] Compression: none
2025-09-28T17:37:49.626 [DEBUG] [Thread-131093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:37:49.686 [DEBUG] [Thread-131093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:37:49.686 [DEBUG] [Thread-131093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:37:49.687 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:37:49.687 [DEBUG] [Thread-131093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:37:49.688 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:37:49.742 [DEBUG] [Thread-131093] [transport.py] [_log()] userauth is OK
2025-09-28T17:37:49.743 [DEBUG] [Thread-131093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:37:49.743 [DEBUG] [Thread-131093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:37:49.743 [DEBUG] [Thread-131093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:37:49.743 [DEBUG] [Thread-131093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:37:49.761 [INFO] [Thread-131093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:37:49.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-28T17:37:49.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:37:50.784 [DEBUG] [Thread-131093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:37:50.784 [DEBUG] [Thread-131093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:37:50.832 [DEBUG] [Thread-131093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:37:50.832 [DEBUG] [Thread-131093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:37:50.841 [DEBUG] [Thread-131093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:37:50.849 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:37:50.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-28T17:37:50.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-28T17:37:50.867 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:37:50.867 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:37:50.867 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:37:50.875 [DEBUG] [Thread-131093] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:37:56.944 [DEBUG] [Thread-131095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:00.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:38:00.878 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:38:00.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-28T17:38:01.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 37, 47), 13.69, 39.74, 0.0, 21.6, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:38:01.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:37:47
2025-09-28T17:38:01.581 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:38:01.736 [DEBUG] [Thread-131096] [transport.py] [_log()] starting thread (client mode): 0x2b94ee60
2025-09-28T17:38:01.736 [DEBUG] [Thread-131096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:01.756 [DEBUG] [Thread-131096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:38:01.756 [INFO] [Thread-131096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] Compression: none
2025-09-28T17:38:01.760 [DEBUG] [Thread-131096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:01.778 [DEBUG] [Thread-131096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:01.778 [DEBUG] [Thread-131096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:01.779 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:38:01.779 [DEBUG] [Thread-131096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:38:01.780 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:01.780 [DEBUG] [Thread-131096] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:01.781 [DEBUG] [Thread-131096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:01.781 [DEBUG] [Thread-131096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:01.781 [DEBUG] [Thread-131096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:38:01.781 [DEBUG] [Thread-131096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:01.796 [INFO] [Thread-131096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:01.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:02.605 [DEBUG] [Thread-131096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:02.606 [DEBUG] [Thread-131096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:02.606 [DEBUG] [Thread-131096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:38:02.646 [DEBUG] [Thread-131096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:02.646 [DEBUG] [Thread-131096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:02.649 [DEBUG] [Thread-131096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:02.661 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:02.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:38:02.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:38:02.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:38:02.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:02.671 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:38:02.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.650775 -999.00  +15.80  16.65     45   +4.00 1 1 1 1 1   887    0 10.85 -42.78 ----- 16.6 16.6 191.2 21.9 19.2 -27.4 18.9 -26.7 20.2 -26.4 20.8 -28.2
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.650775
2025-09-28T17:38:02.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:38:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:38:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:38:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:38:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:38:02.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:37:47', tmtdew=13.69, humidity=39.74, cloud=0.0, wind=21.6, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:37:06.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:38:02.673 [DEBUG] [Thread-131096] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:02.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:38:02.769 [DEBUG] [Thread-131099] [transport.py] [_log()] starting thread (client mode): 0x2b9ab760
2025-09-28T17:38:02.769 [DEBUG] [Thread-131099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:02.783 [DEBUG] [Thread-131099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:38:02.784 [INFO] [Thread-131099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:38:02.792 [DEBUG] [Thread-131099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] Compression: none
2025-09-28T17:38:02.793 [DEBUG] [Thread-131099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:02.849 [DEBUG] [Thread-131099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:02.849 [DEBUG] [Thread-131099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:02.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:38:02.850 [DEBUG] [Thread-131099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:38:02.850 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:02.905 [DEBUG] [Thread-131099] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:02.905 [DEBUG] [Thread-131099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:02.905 [DEBUG] [Thread-131099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:02.905 [DEBUG] [Thread-131099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:38:02.905 [DEBUG] [Thread-131099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:02.923 [INFO] [Thread-131099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:02.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-28T17:38:02.923 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:03.911 [DEBUG] [Thread-131099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:03.912 [DEBUG] [Thread-131099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:03.959 [DEBUG] [Thread-131099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:03.959 [DEBUG] [Thread-131099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:03.967 [DEBUG] [Thread-131099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:03.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:03.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-28T17: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-28T17:38:03.993 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:03.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:03.994 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:04.002 [DEBUG] [Thread-131099] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:11.972 [DEBUG] [Thread-131101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:14.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:38:14.004 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:38:14.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-28T17:38:14.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 37, 47), 13.69, 39.74, 0.0, 21.6, 15.83, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:38:14.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:37:47
2025-09-28T17:38:14.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:38:14.857 [DEBUG] [Thread-131102] [transport.py] [_log()] starting thread (client mode): 0x2b9a92d0
2025-09-28T17:38:14.857 [DEBUG] [Thread-131102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:14.875 [DEBUG] [Thread-131102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:38:14.875 [INFO] [Thread-131102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] Compression: none
2025-09-28T17:38:14.877 [DEBUG] [Thread-131102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:14.886 [DEBUG] [Thread-131102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:14.886 [DEBUG] [Thread-131102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:14.886 [DEBUG] [Thread-131102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:38:14.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:38:14.887 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:14.888 [DEBUG] [Thread-131102] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:14.888 [DEBUG] [Thread-131102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:14.888 [DEBUG] [Thread-131102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:14.888 [DEBUG] [Thread-131102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:38:14.888 [DEBUG] [Thread-131102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:14.905 [INFO] [Thread-131102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:14.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:15.551 [DEBUG] [Thread-131102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:15.551 [DEBUG] [Thread-131102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:15.551 [DEBUG] [Thread-131102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:38:15.592 [DEBUG] [Thread-131102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:15.592 [DEBUG] [Thread-131102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:15.594 [DEBUG] [Thread-131102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:15.605 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:15.605 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:38:15.606 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:38:15.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:38:15.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:15.611 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:38:15.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.651122 -999.00  +15.80  15.03     45   +4.00 1 1 1 1 1   887    0 10.92 -38.41 ----- 15.0 15.0 216.8 21.2 19.2 -26.9 18.9 -26.3 20.2 -26.5 20.7 -27.6
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.651122
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:38:15.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:37:47', tmtdew=13.69, humidity=39.74, cloud=0.0, wind=21.6, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:37:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:38:15.612 [DEBUG] [Thread-131102] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:15.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-28T17:38:15.694 [DEBUG] [Thread-131105] [transport.py] [_log()] starting thread (client mode): 0x2b9aac20
2025-09-28T17:38:15.694 [DEBUG] [Thread-131105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:15.709 [DEBUG] [Thread-131105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:38:15.709 [INFO] [Thread-131105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:15.716 [DEBUG] [Thread-131105] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] Compression: none
2025-09-28T17:38:15.717 [DEBUG] [Thread-131105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:15.776 [DEBUG] [Thread-131105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:15.777 [DEBUG] [Thread-131105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:15.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:38:15.778 [DEBUG] [Thread-131105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:38:15.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:15.832 [DEBUG] [Thread-131105] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:15.833 [DEBUG] [Thread-131105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:15.833 [DEBUG] [Thread-131105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:15.833 [DEBUG] [Thread-131105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:38:15.833 [DEBUG] [Thread-131105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:15.855 [INFO] [Thread-131105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:15.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-28T17:38:15.856 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:16.832 [DEBUG] [Thread-131105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:16.833 [DEBUG] [Thread-131105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:16.881 [DEBUG] [Thread-131105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:16.881 [DEBUG] [Thread-131105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:16.889 [DEBUG] [Thread-131105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:16.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:16.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-28T17:38:16.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-28T17:38:16.914 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:16.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:16.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:16.923 [DEBUG] [Thread-131105] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:24.528 [DEBUG] [Thread-131107 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:26.925 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:38:26.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:38:26.928 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:38:27.010 [DEBUG] [Thread-131108 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:27.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 38, 19), 13.72, 39.66, 0.0, 21.1, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:38:27.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:38:19
2025-09-28T17:38:27.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:38:27.791 [DEBUG] [Thread-131109] [transport.py] [_log()] starting thread (client mode): 0x2b9aab90
2025-09-28T17:38:27.791 [DEBUG] [Thread-131109] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:27.811 [DEBUG] [Thread-131109] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:38:27.812 [INFO] [Thread-131109] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:27.813 [DEBUG] [Thread-131109] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] Compression: none
2025-09-28T17:38:27.814 [DEBUG] [Thread-131109] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:27.823 [DEBUG] [Thread-131109] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:27.824 [DEBUG] [Thread-131109] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:27.825 [DEBUG] [Thread-131109] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:38:27.825 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:38:27.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:27.827 [DEBUG] [Thread-131109] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:27.827 [DEBUG] [Thread-131109] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:27.827 [DEBUG] [Thread-131109] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:27.827 [DEBUG] [Thread-131109] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:38:27.827 [DEBUG] [Thread-131109] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:27.852 [INFO] [Thread-131109] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:27.853 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:28.615 [DEBUG] [Thread-131109] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:28.615 [DEBUG] [Thread-131109] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:28.616 [DEBUG] [Thread-131109] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:38:28.656 [DEBUG] [Thread-131109] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:28.656 [DEBUG] [Thread-131109] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:28.659 [DEBUG] [Thread-131109] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:28.671 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:28.672 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:38:28.673 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:38:28.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:38:28.680 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:28.682 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:38:28.682 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:28.682 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:38:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.651122 -999.00  +15.80  15.03     45   +4.00 1 1 1 1 1   887    0 10.92 -38.41 ----- 15.0 15.0 216.8 21.2 19.2 -26.9 18.9 -26.3 20.2 -26.5 20.7 -27.6
2025-09-28T17:38:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:38:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:38:28.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.651122
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:38:28.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:38:19', tmtdew=13.72, humidity=39.66, cloud=0.0, wind=21.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:37:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:38:28.685 [DEBUG] [Thread-131109] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:28.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-28T17:38:28.780 [DEBUG] [Thread-131112] [transport.py] [_log()] starting thread (client mode): 0x2b9a9b10
2025-09-28T17:38:28.781 [DEBUG] [Thread-131112] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:28.795 [DEBUG] [Thread-131112] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:38:28.795 [INFO] [Thread-131112] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:38:28.802 [DEBUG] [Thread-131112] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:28.802 [DEBUG] [Thread-131112] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:38:28.802 [DEBUG] [Thread-131112] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] Compression: none
2025-09-28T17:38:28.803 [DEBUG] [Thread-131112] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:28.859 [DEBUG] [Thread-131112] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:28.860 [DEBUG] [Thread-131112] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:28.860 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:38:28.861 [DEBUG] [Thread-131112] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:38:28.861 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:28.916 [DEBUG] [Thread-131112] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:28.916 [DEBUG] [Thread-131112] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:28.917 [DEBUG] [Thread-131112] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:28.917 [DEBUG] [Thread-131112] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:38:28.917 [DEBUG] [Thread-131112] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:28.940 [INFO] [Thread-131112] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:28.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-28T17:38:28.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:29.906 [DEBUG] [Thread-131112] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:29.906 [DEBUG] [Thread-131112] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:29.954 [DEBUG] [Thread-131112] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:29.954 [DEBUG] [Thread-131112] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:29.963 [DEBUG] [Thread-131112] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:29.972 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:29.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')
2025-09-28T17:38:29.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-28T17:38:29.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:29.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:29.991 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:29.998 [DEBUG] [Thread-131112] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:30.471 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:30.472 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:40.001 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:38:40.001 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:38:40.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-28T17:38:40.590 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 38, 19), 13.72, 39.66, 0.0, 21.1, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:38:40.591 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:38:19
2025-09-28T17:38:40.697 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:38:40.848 [DEBUG] [Thread-131114] [transport.py] [_log()] starting thread (client mode): 0x2b9a8ca0
2025-09-28T17:38:40.848 [DEBUG] [Thread-131114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:40.858 [DEBUG] [Thread-131114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:38:40.859 [INFO] [Thread-131114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:40.861 [DEBUG] [Thread-131114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] Compression: none
2025-09-28T17:38:40.862 [DEBUG] [Thread-131114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:40.871 [DEBUG] [Thread-131114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:40.871 [DEBUG] [Thread-131114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:40.871 [DEBUG] [Thread-131114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:38:40.871 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:38:40.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:40.872 [DEBUG] [Thread-131114] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:40.873 [DEBUG] [Thread-131114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:40.873 [DEBUG] [Thread-131114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:40.873 [DEBUG] [Thread-131114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:38:40.873 [DEBUG] [Thread-131114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:40.884 [INFO] [Thread-131114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:40.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:41.453 [DEBUG] [Thread-131114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:41.453 [DEBUG] [Thread-131114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:41.453 [DEBUG] [Thread-131114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:38:41.494 [DEBUG] [Thread-131114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:41.495 [DEBUG] [Thread-131114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:41.497 [DEBUG] [Thread-131114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:41.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:41.502 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:38:41.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:38:41.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:38:41.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:41.512 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:38:41.512 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.651816 -999.00  +15.90  14.58     45   +4.00 1 1 1 1 1   887    0 10.92 -35.57 ----- 14.6 14.6 201.4 18.9 19.2 -27.2 18.9 -26.3 20.1 -26.8 20.8 -27.8
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:38:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.651816
2025-09-28T17:38:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:38:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:38:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:38:41.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:38:41.514 [DEBUG] [Thread-131114] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:41.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:38:41.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:38:19', tmtdew=13.72, humidity=39.66, cloud=0.0, wind=21.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:38:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:38:41.600 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:38:41.612 [DEBUG] [Thread-131117] [transport.py] [_log()] starting thread (client mode): 0x2e3630a0
2025-09-28T17:38:41.612 [DEBUG] [Thread-131117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:41.627 [DEBUG] [Thread-131117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:38:41.627 [INFO] [Thread-131117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:41.635 [DEBUG] [Thread-131117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:41.636 [DEBUG] [Thread-131117] [transport.py] [_log()] Compression: none
2025-09-28T17:38:41.636 [DEBUG] [Thread-131117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:41.693 [DEBUG] [Thread-131117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:41.693 [DEBUG] [Thread-131117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:41.694 [DEBUG] [Thread-131117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:38:41.694 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:38:41.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:41.751 [DEBUG] [Thread-131117] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:41.751 [DEBUG] [Thread-131117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:41.751 [DEBUG] [Thread-131117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:41.751 [DEBUG] [Thread-131117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:38:41.751 [DEBUG] [Thread-131117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:41.770 [INFO] [Thread-131117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:41.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-28T17:38:41.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:42.045 [DEBUG] [Thread-131119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:38:42.718 [DEBUG] [Thread-131117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:42.719 [DEBUG] [Thread-131117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:42.766 [DEBUG] [Thread-131117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:42.766 [DEBUG] [Thread-131117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:42.774 [DEBUG] [Thread-131117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:42.783 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:42.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-28T17:38:42.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-28T17:38:42.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:42.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:42.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:42.808 [DEBUG] [Thread-131117] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:52.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:38:52.809 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:38:52.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-28T17:38:53.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 38, 19), 13.72, 39.66, 0.0, 21.1, 15.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:38:53.421 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:38:19
2025-09-28T17:38:53.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:38:53.683 [DEBUG] [Thread-131120] [transport.py] [_log()] starting thread (client mode): 0x2e360520
2025-09-28T17:38:53.684 [DEBUG] [Thread-131120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:53.706 [DEBUG] [Thread-131120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:38:53.706 [INFO] [Thread-131120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:38:53.709 [DEBUG] [Thread-131120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:53.709 [DEBUG] [Thread-131120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:38:53.709 [DEBUG] [Thread-131120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:53.709 [DEBUG] [Thread-131120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:53.710 [DEBUG] [Thread-131120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:53.711 [DEBUG] [Thread-131120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:53.711 [DEBUG] [Thread-131120] [transport.py] [_log()] Compression: none
2025-09-28T17:38:53.711 [DEBUG] [Thread-131120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:53.729 [DEBUG] [Thread-131120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:53.729 [DEBUG] [Thread-131120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:53.730 [DEBUG] [Thread-131120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:38:53.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:38:53.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:53.732 [DEBUG] [Thread-131120] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:53.732 [DEBUG] [Thread-131120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:53.732 [DEBUG] [Thread-131120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:53.732 [DEBUG] [Thread-131120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:38:53.733 [DEBUG] [Thread-131120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:53.750 [INFO] [Thread-131120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:53.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:54.555 [DEBUG] [Thread-131120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:54.555 [DEBUG] [Thread-131120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:54.556 [DEBUG] [Thread-131120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:38:54.596 [DEBUG] [Thread-131120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:54.596 [DEBUG] [Thread-131120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:54.600 [DEBUG] [Thread-131120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:54.611 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:54.611 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:38:54.613 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:38:54.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:38:54.619 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:54.620 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:38:54.620 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.651816 -999.00  +15.90  14.58     45   +4.00 1 1 1 1 1   887    0 10.92 -35.57 ----- 14.6 14.6 201.4 18.9 19.2 -27.2 18.9 -26.3 20.1 -26.8 20.8 -27.8
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:38:54.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.651816
2025-09-28T17:38:54.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:38:54.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:38:54.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:38:54.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:38:54.622 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:38:54.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:38:19', tmtdew=13.72, humidity=39.66, cloud=0.0, wind=21.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:38:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:38:54.623 [DEBUG] [Thread-131120] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:54.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-28T17:38:54.717 [DEBUG] [Thread-131123] [transport.py] [_log()] starting thread (client mode): 0x2e360c10
2025-09-28T17:38:54.717 [DEBUG] [Thread-131123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:38:54.731 [DEBUG] [Thread-131123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:38:54.731 [INFO] [Thread-131123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:38:54.739 [DEBUG] [Thread-131123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:38:54.739 [DEBUG] [Thread-131123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:38:54.739 [DEBUG] [Thread-131123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] client lang: <none>
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] server lang: <none>
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] kex follows: False
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] Compression: none
2025-09-28T17:38:54.740 [DEBUG] [Thread-131123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:38:54.798 [DEBUG] [Thread-131123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:38:54.798 [DEBUG] [Thread-131123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:38:54.799 [DEBUG] [Thread-131123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:38:54.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:38:54.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:38:54.860 [DEBUG] [Thread-131123] [transport.py] [_log()] userauth is OK
2025-09-28T17:38:54.860 [DEBUG] [Thread-131123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:38:54.860 [DEBUG] [Thread-131123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:38:54.860 [DEBUG] [Thread-131123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:38:54.860 [DEBUG] [Thread-131123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:38:54.879 [INFO] [Thread-131123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:38:54.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-28T17:38:54.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:38:55.840 [DEBUG] [Thread-131123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:38:55.841 [DEBUG] [Thread-131123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:38:55.888 [DEBUG] [Thread-131123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:38:55.888 [DEBUG] [Thread-131123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:38:55.897 [DEBUG] [Thread-131123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:38:55.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:38:55.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-28T17:38:55.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-28T17:38:55.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:38:55.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:38:55.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:38:55.930 [DEBUG] [Thread-131123] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:38:57.086 [DEBUG] [Thread-131125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:05.932 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:39:05.932 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:39:05.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-28T17:39:06.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 38, 51), 13.73, 39.62, 0.0, 18.23, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:39:06.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:38:51
2025-09-28T17:39:06.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:39:06.787 [DEBUG] [Thread-131126] [transport.py] [_log()] starting thread (client mode): 0x2b9aa710
2025-09-28T17:39:06.787 [DEBUG] [Thread-131126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:06.802 [DEBUG] [Thread-131126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:39:06.802 [INFO] [Thread-131126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:39:06.805 [DEBUG] [Thread-131126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:06.805 [DEBUG] [Thread-131126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:39:06.805 [DEBUG] [Thread-131126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] Compression: none
2025-09-28T17:39:06.806 [DEBUG] [Thread-131126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:06.820 [DEBUG] [Thread-131126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:06.820 [DEBUG] [Thread-131126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:06.820 [DEBUG] [Thread-131126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:39:06.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:39:06.820 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:06.821 [DEBUG] [Thread-131126] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:06.821 [DEBUG] [Thread-131126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:06.821 [DEBUG] [Thread-131126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:06.821 [DEBUG] [Thread-131126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:39:06.821 [DEBUG] [Thread-131126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:06.836 [INFO] [Thread-131126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:06.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:07.650 [DEBUG] [Thread-131126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:07.650 [DEBUG] [Thread-131126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:07.651 [DEBUG] [Thread-131126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:39:07.691 [DEBUG] [Thread-131126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:07.692 [DEBUG] [Thread-131126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:07.695 [DEBUG] [Thread-131126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:07.708 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:07.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:39:07.710 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:39:07.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:39:07.716 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:07.718 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:39:07.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:07.718 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.651816 -999.00  +15.90  14.58     45   +4.00 1 1 1 1 1   887    0 10.92 -35.57 ----- 14.6 14.6 201.4 18.9 19.2 -27.2 18.9 -26.3 20.1 -26.8 20.8 -27.8
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.651816
2025-09-28T17:39:07.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:39:07.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:39:07.720 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:39:07.720 [DEBUG] [Thread-131126] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:07.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:39:07.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:39:07.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:38:51', tmtdew=13.73, humidity=39.62, cloud=0.0, wind=18.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:38:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:39:07.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-28T17:39:07.817 [DEBUG] [Thread-131129] [transport.py] [_log()] starting thread (client mode): 0x2b9a8730
2025-09-28T17:39:07.817 [DEBUG] [Thread-131129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:07.832 [DEBUG] [Thread-131129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:39:07.832 [INFO] [Thread-131129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:39:07.839 [DEBUG] [Thread-131129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] Compression: none
2025-09-28T17:39:07.840 [DEBUG] [Thread-131129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:07.897 [DEBUG] [Thread-131129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:07.898 [DEBUG] [Thread-131129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:07.898 [DEBUG] [Thread-131129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:39:07.898 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:39:07.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:07.953 [DEBUG] [Thread-131129] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:07.953 [DEBUG] [Thread-131129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:07.954 [DEBUG] [Thread-131129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:07.954 [DEBUG] [Thread-131129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:39:07.954 [DEBUG] [Thread-131129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:07.972 [INFO] [Thread-131129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:07.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-28T17:39:07.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:08.931 [DEBUG] [Thread-131129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:08.931 [DEBUG] [Thread-131129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:08.979 [DEBUG] [Thread-131129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:08.979 [DEBUG] [Thread-131129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:08.988 [DEBUG] [Thread-131129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:08.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:08.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-28T17:39:09.006 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T17:39:09.015 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:09.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:09.015 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:09.023 [DEBUG] [Thread-131129] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:12.117 [DEBUG] [Thread-131131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:19.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:39:19.025 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:39:19.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-28T17:39:19.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 38, 51), 13.73, 39.62, 0.0, 18.23, 15.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:39:19.627 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:38:51
2025-09-28T17:39:19.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:39:19.881 [DEBUG] [Thread-131132] [transport.py] [_log()] starting thread (client mode): 0x2b9abd60
2025-09-28T17:39:19.881 [DEBUG] [Thread-131132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:19.901 [DEBUG] [Thread-131132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:39:19.901 [INFO] [Thread-131132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:39:19.904 [DEBUG] [Thread-131132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:19.905 [DEBUG] [Thread-131132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:19.906 [DEBUG] [Thread-131132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:19.906 [DEBUG] [Thread-131132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:19.906 [DEBUG] [Thread-131132] [transport.py] [_log()] Compression: none
2025-09-28T17:39:19.906 [DEBUG] [Thread-131132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:19.923 [DEBUG] [Thread-131132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:19.923 [DEBUG] [Thread-131132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:19.924 [DEBUG] [Thread-131132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:39:19.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:39:19.925 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:19.926 [DEBUG] [Thread-131132] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:19.926 [DEBUG] [Thread-131132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:19.926 [DEBUG] [Thread-131132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:19.926 [DEBUG] [Thread-131132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:39:19.926 [DEBUG] [Thread-131132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:19.949 [INFO] [Thread-131132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:19.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:20.594 [DEBUG] [Thread-131132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:20.594 [DEBUG] [Thread-131132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:20.594 [DEBUG] [Thread-131132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:39:20.635 [DEBUG] [Thread-131132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:20.635 [DEBUG] [Thread-131132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:20.638 [DEBUG] [Thread-131132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:20.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:20.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:39:20.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:39:20.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:39:20.659 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:20.660 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:39:20.660 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:20.660 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652164 -999.00  +15.90  12.11     45   +4.00 1 1 1 1 1   887    0 11.12 -36.23 ----- 12.1 12.1 197.2 21.6 19.2 -27.4 18.9 -27.9 20.1 -26.4 20.7 -27.6
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652164
2025-09-28T17:39:20.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:39:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:39:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:39:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:39:20.662 [DEBUG] [Thread-131132] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:20.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:39:20.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:38:51', tmtdew=13.73, humidity=39.62, cloud=0.0, wind=18.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:39:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:39:20.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-28T17:39:20.757 [DEBUG] [Thread-131135] [transport.py] [_log()] starting thread (client mode): 0x2e361120
2025-09-28T17:39:20.757 [DEBUG] [Thread-131135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:20.772 [DEBUG] [Thread-131135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:39:20.772 [INFO] [Thread-131135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:20.780 [DEBUG] [Thread-131135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:20.781 [DEBUG] [Thread-131135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:20.782 [DEBUG] [Thread-131135] [transport.py] [_log()] Compression: none
2025-09-28T17:39:20.782 [DEBUG] [Thread-131135] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:20.838 [DEBUG] [Thread-131135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:20.838 [DEBUG] [Thread-131135] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:20.839 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:39:20.840 [DEBUG] [Thread-131135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:39:20.841 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:20.893 [DEBUG] [Thread-131135] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:20.893 [DEBUG] [Thread-131135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:20.894 [DEBUG] [Thread-131135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:20.894 [DEBUG] [Thread-131135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:39:20.894 [DEBUG] [Thread-131135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:20.914 [INFO] [Thread-131135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:20.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-28T17:39:20.915 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:21.858 [DEBUG] [Thread-131135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:21.859 [DEBUG] [Thread-131135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:21.906 [DEBUG] [Thread-131135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:21.906 [DEBUG] [Thread-131135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:21.915 [DEBUG] [Thread-131135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:21.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:21.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')
2025-09-28T17:39:21.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-28T17:39:21.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:21.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:21.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:21.949 [DEBUG] [Thread-131135] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:24.574 [DEBUG] [Thread-131137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:27.154 [DEBUG] [Thread-131138 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:30.614 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:30.615 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:31.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:39:31.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:39:31.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-28T17:39:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 39, 23), 13.72, 39.66, 0.0, 20.89, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:39:32.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:39:23
2025-09-28T17:39:32.663 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:39:32.918 [DEBUG] [Thread-131139] [transport.py] [_log()] starting thread (client mode): 0x2b9bb790
2025-09-28T17:39:32.918 [DEBUG] [Thread-131139] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:32.937 [DEBUG] [Thread-131139] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:39:32.937 [INFO] [Thread-131139] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:39:32.940 [DEBUG] [Thread-131139] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:32.940 [DEBUG] [Thread-131139] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:32.941 [DEBUG] [Thread-131139] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:32.942 [DEBUG] [Thread-131139] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:32.942 [DEBUG] [Thread-131139] [transport.py] [_log()] Compression: none
2025-09-28T17:39:32.942 [DEBUG] [Thread-131139] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:32.959 [DEBUG] [Thread-131139] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:32.960 [DEBUG] [Thread-131139] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:32.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:39:32.961 [DEBUG] [Thread-131139] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:39:32.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:32.963 [DEBUG] [Thread-131139] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:32.964 [DEBUG] [Thread-131139] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:32.964 [DEBUG] [Thread-131139] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:32.964 [DEBUG] [Thread-131139] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:39:32.964 [DEBUG] [Thread-131139] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:32.979 [INFO] [Thread-131139] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:32.980 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:33.762 [DEBUG] [Thread-131139] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:33.762 [DEBUG] [Thread-131139] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:33.763 [DEBUG] [Thread-131139] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:39:33.803 [DEBUG] [Thread-131139] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:33.804 [DEBUG] [Thread-131139] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:33.807 [DEBUG] [Thread-131139] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:33.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:33.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:39:33.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:39:33.824 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:39:33.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:33.831 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:39:33.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:33.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:39:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652164 -999.00  +15.90  12.11     45   +4.00 1 1 1 1 1   887    0 11.12 -36.23 ----- 12.1 12.1 197.2 21.6 19.2 -27.4 18.9 -27.9 20.1 -26.4 20.7 -27.6
2025-09-28T17:39:33.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:39:33.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:39:33.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652164
2025-09-28T17:39:33.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:39:33.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:39:33.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:39:33.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:39:33.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:39:33.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:39:23', tmtdew=13.72, humidity=39.66, cloud=0.0, wind=20.89, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:39:06.970', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:39:33.834 [DEBUG] [Thread-131139] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:33.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-28T17:39:33.930 [DEBUG] [Thread-131142] [transport.py] [_log()] starting thread (client mode): 0x2e3632b0
2025-09-28T17:39:33.930 [DEBUG] [Thread-131142] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:33.945 [DEBUG] [Thread-131142] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:39:33.945 [INFO] [Thread-131142] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:39:33.952 [DEBUG] [Thread-131142] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] Compression: none
2025-09-28T17:39:33.953 [DEBUG] [Thread-131142] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:34.016 [DEBUG] [Thread-131142] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:34.017 [DEBUG] [Thread-131142] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:34.018 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:39:34.018 [DEBUG] [Thread-131142] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:39:34.019 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:34.076 [DEBUG] [Thread-131142] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:34.076 [DEBUG] [Thread-131142] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:34.076 [DEBUG] [Thread-131142] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:34.076 [DEBUG] [Thread-131142] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:39:34.077 [DEBUG] [Thread-131142] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:34.096 [INFO] [Thread-131142] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:34.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-28T17:39:34.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:35.018 [DEBUG] [Thread-131142] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:35.019 [DEBUG] [Thread-131142] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:35.066 [DEBUG] [Thread-131142] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:35.066 [DEBUG] [Thread-131142] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:35.075 [DEBUG] [Thread-131142] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:35.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:35.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-28T17:39:35.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-28T17:39:35.101 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:35.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:35.101 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:35.109 [DEBUG] [Thread-131142] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:42.209 [DEBUG] [Thread-131144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:45.112 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:39:45.112 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:39:45.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-28T17:39:45.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 39, 23), 13.72, 39.66, 0.0, 20.89, 15.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:39:45.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:39:23
2025-09-28T17:39:45.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:39:45.949 [DEBUG] [Thread-131145] [transport.py] [_log()] starting thread (client mode): 0x2b9aba60
2025-09-28T17:39:45.949 [DEBUG] [Thread-131145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:45.969 [DEBUG] [Thread-131145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:39:45.969 [INFO] [Thread-131145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:39:45.972 [DEBUG] [Thread-131145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:45.972 [DEBUG] [Thread-131145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] Compression: none
2025-09-28T17:39:45.973 [DEBUG] [Thread-131145] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:45.989 [DEBUG] [Thread-131145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:45.989 [DEBUG] [Thread-131145] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:45.989 [DEBUG] [Thread-131145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:39:45.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:39:45.989 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:45.990 [DEBUG] [Thread-131145] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:45.990 [DEBUG] [Thread-131145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:45.990 [DEBUG] [Thread-131145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:45.990 [DEBUG] [Thread-131145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:39:45.990 [DEBUG] [Thread-131145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:46.004 [INFO] [Thread-131145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:46.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:46.637 [DEBUG] [Thread-131145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:46.637 [DEBUG] [Thread-131145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:46.637 [DEBUG] [Thread-131145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:39:46.678 [DEBUG] [Thread-131145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:46.678 [DEBUG] [Thread-131145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:46.681 [DEBUG] [Thread-131145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:46.694 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:46.694 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:39:46.696 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:39:46.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:39:46.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:46.704 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:39:46.705 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652511 -999.00  +15.80  10.20     45   +4.00 1 1 1 1 1   887    0 11.02 -29.91 ----- 10.2 10.2 198.2 21.0 19.1 -27.4 18.9 -26.0 20.1 -26.3 20.6 -28.4
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:39:46.705 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652511
2025-09-28T17:39:46.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:39:46.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:39:46.707 [DEBUG] [Thread-131145] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:46.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:39:46.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:39:46.707 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:39:46.708 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:39:23', tmtdew=13.72, humidity=39.66, cloud=0.0, wind=20.89, temperature=15.9, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:39:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:39:46.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-28T17:39:46.804 [DEBUG] [Thread-131148] [transport.py] [_log()] starting thread (client mode): 0x2b9bbbb0
2025-09-28T17:39:46.804 [DEBUG] [Thread-131148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:46.819 [DEBUG] [Thread-131148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:39:46.819 [INFO] [Thread-131148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:46.826 [DEBUG] [Thread-131148] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] Compression: none
2025-09-28T17:39:46.827 [DEBUG] [Thread-131148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:46.886 [DEBUG] [Thread-131148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:46.886 [DEBUG] [Thread-131148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:46.886 [DEBUG] [Thread-131148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:39:46.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:39:46.886 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:46.948 [DEBUG] [Thread-131148] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:46.948 [DEBUG] [Thread-131148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:46.948 [DEBUG] [Thread-131148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:46.948 [DEBUG] [Thread-131148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:39:46.948 [DEBUG] [Thread-131148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:46.968 [INFO] [Thread-131148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:46.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-28T17:39:46.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:47.950 [DEBUG] [Thread-131148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:47.950 [DEBUG] [Thread-131148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:47.998 [DEBUG] [Thread-131148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:47.998 [DEBUG] [Thread-131148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:48.007 [DEBUG] [Thread-131148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:48.016 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:48.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-28T17:39:48.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-28T17:39:48.033 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:48.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:48.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:48.042 [DEBUG] [Thread-131148] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:57.254 [DEBUG] [Thread-131150 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:39:58.044 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:39:58.045 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:39:58.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-28T17:39:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 39, 54), 13.5, 40.19, 0.0, 17.79, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:39:58.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:39:54
2025-09-28T17:39:58.753 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:39:58.900 [DEBUG] [Thread-131151] [transport.py] [_log()] starting thread (client mode): 0x2b9aa4d0
2025-09-28T17:39:58.900 [DEBUG] [Thread-131151] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:58.920 [DEBUG] [Thread-131151] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:39:58.920 [INFO] [Thread-131151] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:39:58.923 [DEBUG] [Thread-131151] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:58.923 [DEBUG] [Thread-131151] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] Compression: none
2025-09-28T17:39:58.924 [DEBUG] [Thread-131151] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:39:58.942 [DEBUG] [Thread-131151] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:39:58.943 [DEBUG] [Thread-131151] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:39:58.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:39:58.944 [DEBUG] [Thread-131151] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:39:58.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:39:58.945 [DEBUG] [Thread-131151] [transport.py] [_log()] userauth is OK
2025-09-28T17:39:58.945 [DEBUG] [Thread-131151] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:39:58.945 [DEBUG] [Thread-131151] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:39:58.945 [DEBUG] [Thread-131151] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:39:58.945 [DEBUG] [Thread-131151] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:39:58.963 [INFO] [Thread-131151] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:39:58.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:39:59.782 [DEBUG] [Thread-131151] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:39:59.782 [DEBUG] [Thread-131151] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:39:59.783 [DEBUG] [Thread-131151] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:39:59.823 [DEBUG] [Thread-131151] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:39:59.824 [DEBUG] [Thread-131151] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:39:59.826 [DEBUG] [Thread-131151] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:39:59.840 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:39:59.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:39:59.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:39:59.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:39:59.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:39:59.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:39:59.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:39:59.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:39:59.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:39:59.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652511 -999.00  +15.80  10.20     45   +4.00 1 1 1 1 1   887    0 11.02 -29.91 ----- 10.2 10.2 198.2 21.0 19.1 -27.4 18.9 -26.0 20.1 -26.3 20.6 -28.4
2025-09-28T17:39:59.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:39:59.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:39:59.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652511
2025-09-28T17:39:59.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:39:59.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:39:59.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:39:59.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:39:59.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:39:59.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:39:54', tmtdew=13.5, humidity=40.19, cloud=0.0, wind=17.79, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:39:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:39:59.854 [DEBUG] [Thread-131151] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:39:59.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-28T17:39:59.952 [DEBUG] [Thread-131154] [transport.py] [_log()] starting thread (client mode): 0x2b9a8730
2025-09-28T17:39:59.952 [DEBUG] [Thread-131154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:39:59.967 [DEBUG] [Thread-131154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:39:59.968 [INFO] [Thread-131154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:39:59.975 [DEBUG] [Thread-131154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:39:59.975 [DEBUG] [Thread-131154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] client lang: <none>
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] server lang: <none>
2025-09-28T17:39:59.976 [DEBUG] [Thread-131154] [transport.py] [_log()] kex follows: False
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] Compression: none
2025-09-28T17:39:59.977 [DEBUG] [Thread-131154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:00.035 [DEBUG] [Thread-131154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:00.036 [DEBUG] [Thread-131154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:00.036 [DEBUG] [Thread-131154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:40:00.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:40:00.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:00.091 [DEBUG] [Thread-131154] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:00.091 [DEBUG] [Thread-131154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:00.091 [DEBUG] [Thread-131154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:00.091 [DEBUG] [Thread-131154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:40:00.092 [DEBUG] [Thread-131154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:00.111 [INFO] [Thread-131154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:00.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-28T17:40:00.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:01.069 [DEBUG] [Thread-131154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:01.069 [DEBUG] [Thread-131154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:01.117 [DEBUG] [Thread-131154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:01.117 [DEBUG] [Thread-131154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:01.126 [DEBUG] [Thread-131154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:01.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:01.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-28T17:40:01.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-28T17:40:01.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:01.153 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:01.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:01.161 [DEBUG] [Thread-131154] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:11.154 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:40:11.154 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:40:11.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:40:11.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 39, 54), 13.5, 40.19, 0.0, 17.79, 15.68, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:40:11.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:39:54
2025-09-28T17:40:11.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:40:12.010 [DEBUG] [Thread-131156] [transport.py] [_log()] starting thread (client mode): 0x2b9de4a0
2025-09-28T17:40:12.010 [DEBUG] [Thread-131156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:12.034 [DEBUG] [Thread-131156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:40:12.034 [INFO] [Thread-131156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] Compression: none
2025-09-28T17:40:12.038 [DEBUG] [Thread-131156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:12.053 [DEBUG] [Thread-131156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:12.053 [DEBUG] [Thread-131156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:12.053 [DEBUG] [Thread-131156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:40:12.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:40:12.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:12.054 [DEBUG] [Thread-131156] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:12.054 [DEBUG] [Thread-131156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:12.054 [DEBUG] [Thread-131156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:12.054 [DEBUG] [Thread-131156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:40:12.054 [DEBUG] [Thread-131156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:12.063 [INFO] [Thread-131156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:12.063 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:12.297 [DEBUG] [Thread-131158 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:20.016 [DEBUG] [Thread-131156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:20.016 [DEBUG] [Thread-131156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:20.017 [DEBUG] [Thread-131156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:40:20.057 [DEBUG] [Thread-131156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:20.057 [DEBUG] [Thread-131156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:20.060 [DEBUG] [Thread-131156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:20.172 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:20.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:40:20.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:40:20.185 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:40:20.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:20.193 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:40:20.193 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:20.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:40:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652511 -999.00  +15.80  10.20     45   +4.00 1 1 1 1 1   887    0 11.02 -29.91 ----- 10.2 10.2 198.2 21.0 19.1 -27.4 18.9 -26.0 20.1 -26.3 20.6 -28.4
2025-09-28T17:40:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:40:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:40:20.194 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652511
2025-09-28T17:40:20.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:40:20.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:40:20.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:40:20.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:40:20.195 [DEBUG] [Thread-131156] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:20.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:40:20.196 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:39:54', tmtdew=13.5, humidity=40.19, cloud=0.0, wind=17.79, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:39:36.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:40:20.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-28T17:40:20.294 [DEBUG] [Thread-131160] [transport.py] [_log()] starting thread (client mode): 0x2b9ded70
2025-09-28T17:40:20.294 [DEBUG] [Thread-131160] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:20.312 [DEBUG] [Thread-131160] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:40:20.313 [INFO] [Thread-131160] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:40:20.320 [DEBUG] [Thread-131160] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:20.320 [DEBUG] [Thread-131160] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:40:20.320 [DEBUG] [Thread-131160] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:20.321 [DEBUG] [Thread-131160] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] Compression: none
2025-09-28T17:40:20.322 [DEBUG] [Thread-131160] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:20.381 [DEBUG] [Thread-131160] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:20.381 [DEBUG] [Thread-131160] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:20.382 [DEBUG] [Thread-131160] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:40:20.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:40:20.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:20.438 [DEBUG] [Thread-131160] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:20.438 [DEBUG] [Thread-131160] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:20.438 [DEBUG] [Thread-131160] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:20.438 [DEBUG] [Thread-131160] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:40:20.438 [DEBUG] [Thread-131160] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:20.459 [INFO] [Thread-131160] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:20.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-28T17:40:20.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:21.405 [DEBUG] [Thread-131160] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:21.405 [DEBUG] [Thread-131160] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:21.453 [DEBUG] [Thread-131160] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:21.453 [DEBUG] [Thread-131160] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:21.461 [DEBUG] [Thread-131160] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:21.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40: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-28T17:40:21.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-28T17:40:21.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:21.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:21.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:21.495 [DEBUG] [Thread-131160] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:24.626 [DEBUG] [Thread-131162 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:27.341 [DEBUG] [Thread-131163 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:30.756 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:30.757 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:31.498 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:40:31.498 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:40:31.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-28T17:40:32.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 40, 26), 13.4, 40.46, 0.0, 17.33, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:40:32.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:40:26
2025-09-28T17:40:32.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:40:32.335 [DEBUG] [Thread-131164] [transport.py] [_log()] starting thread (client mode): 0x2b9dd480
2025-09-28T17:40:32.335 [DEBUG] [Thread-131164] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:32.355 [DEBUG] [Thread-131164] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:40:32.355 [INFO] [Thread-131164] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:40:32.358 [DEBUG] [Thread-131164] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:32.359 [DEBUG] [Thread-131164] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] Compression: none
2025-09-28T17:40:32.360 [DEBUG] [Thread-131164] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:32.379 [DEBUG] [Thread-131164] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:32.380 [DEBUG] [Thread-131164] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:32.381 [DEBUG] [Thread-131164] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:40:32.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:40:32.382 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:32.383 [DEBUG] [Thread-131164] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:32.383 [DEBUG] [Thread-131164] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:32.384 [DEBUG] [Thread-131164] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:32.384 [DEBUG] [Thread-131164] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:40:32.384 [DEBUG] [Thread-131164] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:32.404 [INFO] [Thread-131164] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:32.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:32.980 [DEBUG] [Thread-131164] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:32.980 [DEBUG] [Thread-131164] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:32.981 [DEBUG] [Thread-131164] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:40:33.021 [DEBUG] [Thread-131164] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:33.021 [DEBUG] [Thread-131164] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:33.024 [DEBUG] [Thread-131164] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:33.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:33.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:40:33.040 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:40:33.042 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:40:33.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:33.049 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:40:33.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:33.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:40:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652858 -999.00  +15.70  21.61     45   +4.00 1 1 1 1 1   887    0 11.13 -29.18 ----- 21.6 21.6 202.2 26.2 19.1 -27.8 18.6 -29.8 20.0 -26.4 20.6 -28.6
2025-09-28T17:40:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:40:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:40:33.050 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652858
2025-09-28T17:40:33.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:40:33.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:40:33.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:40:33.051 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:40:33.051 [DEBUG] [Thread-131164] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:33.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:40:33.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:40:26', tmtdew=13.4, humidity=40.46, cloud=0.0, wind=17.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:40:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:40:33.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-28T17:40:33.145 [DEBUG] [Thread-131167] [transport.py] [_log()] starting thread (client mode): 0x2b9aae00
2025-09-28T17:40:33.145 [DEBUG] [Thread-131167] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:33.160 [DEBUG] [Thread-131167] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:40:33.160 [INFO] [Thread-131167] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:40:33.167 [DEBUG] [Thread-131167] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] Compression: none
2025-09-28T17:40:33.168 [DEBUG] [Thread-131167] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:33.225 [DEBUG] [Thread-131167] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:33.225 [DEBUG] [Thread-131167] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:33.226 [DEBUG] [Thread-131167] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:40:33.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:40:33.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:33.281 [DEBUG] [Thread-131167] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:33.281 [DEBUG] [Thread-131167] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:33.281 [DEBUG] [Thread-131167] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:33.281 [DEBUG] [Thread-131167] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:40:33.282 [DEBUG] [Thread-131167] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:33.300 [INFO] [Thread-131167] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:33.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-28T17:40:33.302 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:34.280 [DEBUG] [Thread-131167] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:34.280 [DEBUG] [Thread-131167] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:34.328 [DEBUG] [Thread-131167] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:34.328 [DEBUG] [Thread-131167] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:34.337 [DEBUG] [Thread-131167] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:34.346 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:34.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-28T17:40:34.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-28T17:40:34.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:34.364 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:34.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:34.372 [DEBUG] [Thread-131167] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:42.370 [DEBUG] [Thread-131169 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:44.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:40:44.375 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:40:44.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-28T17:40:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 40, 26), 13.4, 40.46, 0.0, 17.33, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:40:44.967 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:40:26
2025-09-28T17:40:45.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:40:45.226 [DEBUG] [Thread-131170] [transport.py] [_log()] starting thread (client mode): 0x2b9b8b50
2025-09-28T17:40:45.226 [DEBUG] [Thread-131170] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:45.245 [DEBUG] [Thread-131170] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:40:45.246 [INFO] [Thread-131170] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:45.249 [DEBUG] [Thread-131170] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] Compression: none
2025-09-28T17:40:45.250 [DEBUG] [Thread-131170] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:45.270 [DEBUG] [Thread-131170] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:45.271 [DEBUG] [Thread-131170] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:45.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:40:45.273 [DEBUG] [Thread-131170] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:40:45.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:45.275 [DEBUG] [Thread-131170] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:45.275 [DEBUG] [Thread-131170] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:45.275 [DEBUG] [Thread-131170] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:45.275 [DEBUG] [Thread-131170] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:40:45.276 [DEBUG] [Thread-131170] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:45.303 [INFO] [Thread-131170] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:45.304 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:46.050 [DEBUG] [Thread-131170] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:46.050 [DEBUG] [Thread-131170] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:46.051 [DEBUG] [Thread-131170] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:40:46.091 [DEBUG] [Thread-131170] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:46.091 [DEBUG] [Thread-131170] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:46.093 [DEBUG] [Thread-131170] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:46.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:46.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:40:46.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:40:46.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:40:46.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:46.114 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:40:46.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.652858 -999.00  +15.70  21.61     45   +4.00 1 1 1 1 1   887    0 11.13 -29.18 ----- 21.6 21.6 202.2 26.2 19.1 -27.8 18.6 -29.8 20.0 -26.4 20.6 -28.6
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:40:46.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.652858
2025-09-28T17:40:46.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:40:46.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:40:46.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:40:46.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:40:46.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:40:46.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:40:26', tmtdew=13.4, humidity=40.46, cloud=0.0, wind=17.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:40:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:40:46.117 [DEBUG] [Thread-131170] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:46.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-28T17:40:46.214 [DEBUG] [Thread-131173] [transport.py] [_log()] starting thread (client mode): 0x2b9a99c0
2025-09-28T17:40:46.214 [DEBUG] [Thread-131173] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:46.228 [DEBUG] [Thread-131173] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:40:46.228 [INFO] [Thread-131173] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:46.236 [DEBUG] [Thread-131173] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] Compression: none
2025-09-28T17:40:46.237 [DEBUG] [Thread-131173] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:46.296 [DEBUG] [Thread-131173] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:46.297 [DEBUG] [Thread-131173] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:46.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:40:46.298 [DEBUG] [Thread-131173] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:40:46.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:46.353 [DEBUG] [Thread-131173] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:46.353 [DEBUG] [Thread-131173] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:46.354 [DEBUG] [Thread-131173] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:46.354 [DEBUG] [Thread-131173] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:40:46.354 [DEBUG] [Thread-131173] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:46.373 [INFO] [Thread-131173] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:46.373 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:40:46.373 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:47.398 [DEBUG] [Thread-131173] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:47.398 [DEBUG] [Thread-131173] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:47.446 [DEBUG] [Thread-131173] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:47.446 [DEBUG] [Thread-131173] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:47.455 [DEBUG] [Thread-131173] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:47.464 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:47.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-28T17:40:47.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-28T17:40:47.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:47.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:47.482 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:47.490 [DEBUG] [Thread-131173] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:57.416 [DEBUG] [Thread-131175 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:40:57.492 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:40:57.492 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:40:57.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-28T17:40:58.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 40, 26), 13.4, 40.46, 0.0, 17.33, 15.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:40:58.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:40:26
2025-09-28T17:40:58.177 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:40:58.325 [DEBUG] [Thread-131176] [transport.py] [_log()] starting thread (client mode): 0x2b9bb8b0
2025-09-28T17:40:58.325 [DEBUG] [Thread-131176] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:58.346 [DEBUG] [Thread-131176] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:40:58.346 [INFO] [Thread-131176] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:40:58.349 [DEBUG] [Thread-131176] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:58.349 [DEBUG] [Thread-131176] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:58.350 [DEBUG] [Thread-131176] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:58.351 [DEBUG] [Thread-131176] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:58.351 [DEBUG] [Thread-131176] [transport.py] [_log()] Compression: none
2025-09-28T17:40:58.351 [DEBUG] [Thread-131176] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:58.368 [DEBUG] [Thread-131176] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:58.369 [DEBUG] [Thread-131176] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:58.369 [DEBUG] [Thread-131176] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:40:58.369 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:40:58.370 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:58.371 [DEBUG] [Thread-131176] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:58.371 [DEBUG] [Thread-131176] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:58.371 [DEBUG] [Thread-131176] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:58.371 [DEBUG] [Thread-131176] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:40:58.371 [DEBUG] [Thread-131176] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:58.388 [INFO] [Thread-131176] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:58.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:40:58.995 [DEBUG] [Thread-131176] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:40:58.995 [DEBUG] [Thread-131176] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:40:58.995 [DEBUG] [Thread-131176] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:40:59.036 [DEBUG] [Thread-131176] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:40:59.036 [DEBUG] [Thread-131176] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:40:59.038 [DEBUG] [Thread-131176] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:40:59.050 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:40:59.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:40:59.051 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:40:59.052 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:40:59.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:40:59.056 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:40:59.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653205 -999.00  +15.50  15.21     45   +3.90 1 1 1 1 1   887    0 11.40 -28.81 ----- 15.2 15.2 200.2 25.7 19.0 -27.4 18.7 -25.9 20.0 -26.4 20.5 -27.8
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:40:59.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653205
2025-09-28T17:40:59.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:40:59.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:40:59.058 [DEBUG] [Thread-131176] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:40:59.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:40:59.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:40:59.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:40:59.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:40:26', tmtdew=13.4, humidity=40.46, cloud=0.0, wind=17.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:40:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:40:59.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-28T17:40:59.146 [DEBUG] [Thread-131179] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T17:40:59.146 [DEBUG] [Thread-131179] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:40:59.161 [DEBUG] [Thread-131179] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:40:59.161 [INFO] [Thread-131179] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:40:59.168 [DEBUG] [Thread-131179] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] client lang: <none>
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] server lang: <none>
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] kex follows: False
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] Compression: none
2025-09-28T17:40:59.169 [DEBUG] [Thread-131179] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:40:59.226 [DEBUG] [Thread-131179] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:40:59.226 [DEBUG] [Thread-131179] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:40:59.226 [DEBUG] [Thread-131179] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:40:59.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:40:59.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:40:59.284 [DEBUG] [Thread-131179] [transport.py] [_log()] userauth is OK
2025-09-28T17:40:59.284 [DEBUG] [Thread-131179] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:40:59.284 [DEBUG] [Thread-131179] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:40:59.284 [DEBUG] [Thread-131179] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:40:59.284 [DEBUG] [Thread-131179] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:40:59.299 [INFO] [Thread-131179] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:40:59.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-28T17:40:59.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:00.288 [DEBUG] [Thread-131179] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:00.288 [DEBUG] [Thread-131179] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:00.337 [DEBUG] [Thread-131179] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:00.337 [DEBUG] [Thread-131179] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:00.345 [DEBUG] [Thread-131179] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:00.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:00.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-28T17:41:00.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-28T17:41:00.369 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:00.369 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:00.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:00.377 [DEBUG] [Thread-131179] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:10.377 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:41:10.378 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:41:10.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-28T17:41:10.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 40, 58), 13.35, 40.57, 0.0, 16.5, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:41:10.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:40:58
2025-09-28T17:41:11.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:41:11.215 [DEBUG] [Thread-131181] [transport.py] [_log()] starting thread (client mode): 0x2b91e1a0
2025-09-28T17:41:11.216 [DEBUG] [Thread-131181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:11.235 [DEBUG] [Thread-131181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:41:11.235 [INFO] [Thread-131181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:41:11.238 [DEBUG] [Thread-131181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:11.238 [DEBUG] [Thread-131181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:41:11.238 [DEBUG] [Thread-131181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:11.239 [DEBUG] [Thread-131181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:11.240 [DEBUG] [Thread-131181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:11.240 [DEBUG] [Thread-131181] [transport.py] [_log()] Compression: none
2025-09-28T17:41:11.240 [DEBUG] [Thread-131181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:11.258 [DEBUG] [Thread-131181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:11.258 [DEBUG] [Thread-131181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:11.259 [DEBUG] [Thread-131181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:41:11.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:41:11.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:11.260 [DEBUG] [Thread-131181] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:11.261 [DEBUG] [Thread-131181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:11.261 [DEBUG] [Thread-131181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:11.261 [DEBUG] [Thread-131181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:41:11.261 [DEBUG] [Thread-131181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:11.278 [INFO] [Thread-131181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:11.279 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:12.021 [DEBUG] [Thread-131181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:12.021 [DEBUG] [Thread-131181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:12.022 [DEBUG] [Thread-131181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:41:12.062 [DEBUG] [Thread-131181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:12.062 [DEBUG] [Thread-131181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:12.065 [DEBUG] [Thread-131181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:12.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:12.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:41:12.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:41:12.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:41:12.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:12.083 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:41:12.083 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:12.083 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:12.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:41:12.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653205 -999.00  +15.50  15.21     45   +3.90 1 1 1 1 1   887    0 11.40 -28.81 ----- 15.2 15.2 200.2 25.7 19.0 -27.4 18.7 -25.9 20.0 -26.4 20.5 -27.8
2025-09-28T17:41:12.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:41:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:41:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653205
2025-09-28T17:41:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:41:12.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:41:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:41:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:41:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:41:12.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:40:58', tmtdew=13.35, humidity=40.57, cloud=0.0, wind=16.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:40:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:41:12.085 [DEBUG] [Thread-131181] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:12.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-28T17:41:12.180 [DEBUG] [Thread-131184] [transport.py] [_log()] starting thread (client mode): 0x2b9b82e0
2025-09-28T17:41:12.180 [DEBUG] [Thread-131184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:12.194 [DEBUG] [Thread-131184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:41:12.195 [INFO] [Thread-131184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:41:12.202 [DEBUG] [Thread-131184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:12.202 [DEBUG] [Thread-131184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:41:12.202 [DEBUG] [Thread-131184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] Compression: none
2025-09-28T17:41:12.203 [DEBUG] [Thread-131184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:12.259 [DEBUG] [Thread-131184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:12.259 [DEBUG] [Thread-131184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:12.260 [DEBUG] [Thread-131184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:41:12.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:41:12.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:12.315 [DEBUG] [Thread-131184] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:12.315 [DEBUG] [Thread-131184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:12.316 [DEBUG] [Thread-131184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:12.316 [DEBUG] [Thread-131184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:41:12.316 [DEBUG] [Thread-131184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:12.335 [INFO] [Thread-131184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:12.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-28T17:41:12.336 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:12.444 [DEBUG] [Thread-131186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:13.286 [DEBUG] [Thread-131184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:13.286 [DEBUG] [Thread-131184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:13.334 [DEBUG] [Thread-131184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:13.334 [DEBUG] [Thread-131184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:13.343 [DEBUG] [Thread-131184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:13.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:13.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-28T17:41:13.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-28T17:41:13.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:13.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:13.370 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:13.378 [DEBUG] [Thread-131184] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:23.381 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:41:23.381 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:41:23.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-28T17:41:23.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 40, 58), 13.35, 40.57, 0.0, 16.5, 15.55, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:41:23.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:40:58
2025-09-28T17:41:24.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:41:24.219 [DEBUG] [Thread-131187] [transport.py] [_log()] starting thread (client mode): 0x2b9b89a0
2025-09-28T17:41:24.219 [DEBUG] [Thread-131187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:24.239 [DEBUG] [Thread-131187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:41:24.239 [INFO] [Thread-131187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:24.242 [DEBUG] [Thread-131187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] Compression: none
2025-09-28T17:41:24.243 [DEBUG] [Thread-131187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:24.257 [DEBUG] [Thread-131187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:24.258 [DEBUG] [Thread-131187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:24.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:41:24.259 [DEBUG] [Thread-131187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:41:24.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:24.261 [DEBUG] [Thread-131187] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:24.262 [DEBUG] [Thread-131187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:24.262 [DEBUG] [Thread-131187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:24.262 [DEBUG] [Thread-131187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:41:24.262 [DEBUG] [Thread-131187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:24.299 [INFO] [Thread-131187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:24.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:24.685 [DEBUG] [Thread-131189 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:25.009 [DEBUG] [Thread-131187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:25.009 [DEBUG] [Thread-131187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:25.010 [DEBUG] [Thread-131187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:41:25.050 [DEBUG] [Thread-131187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:25.050 [DEBUG] [Thread-131187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:25.052 [DEBUG] [Thread-131187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:25.074 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:25.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:41:25.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:41:25.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:41:25.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:25.082 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:41:25.082 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:25.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653205 -999.00  +15.50  15.21     45   +3.90 1 1 1 1 1   887    0 11.40 -28.81 ----- 15.2 15.2 200.2 25.7 19.0 -27.4 18.7 -25.9 20.0 -26.4 20.5 -27.8
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653205
2025-09-28T17:41:25.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:41:25.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:41:25.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:41:25.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:41:25.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:41:25.084 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:40:58', tmtdew=13.35, humidity=40.57, cloud=0.0, wind=16.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:40:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:41:25.085 [DEBUG] [Thread-131187] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:25.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-28T17:41:25.179 [DEBUG] [Thread-131191] [transport.py] [_log()] starting thread (client mode): 0x2b9b84f0
2025-09-28T17:41:25.180 [DEBUG] [Thread-131191] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:25.194 [DEBUG] [Thread-131191] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:41:25.194 [INFO] [Thread-131191] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:41:25.201 [DEBUG] [Thread-131191] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:25.201 [DEBUG] [Thread-131191] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] Compression: none
2025-09-28T17:41:25.202 [DEBUG] [Thread-131191] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:25.259 [DEBUG] [Thread-131191] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:25.259 [DEBUG] [Thread-131191] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:25.260 [DEBUG] [Thread-131191] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:41:25.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:41:25.260 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:25.315 [DEBUG] [Thread-131191] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:25.315 [DEBUG] [Thread-131191] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:25.315 [DEBUG] [Thread-131191] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:25.315 [DEBUG] [Thread-131191] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:41:25.315 [DEBUG] [Thread-131191] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:25.334 [INFO] [Thread-131191] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:25.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-28T17:41:25.335 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:26.300 [DEBUG] [Thread-131191] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:26.300 [DEBUG] [Thread-131191] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:26.348 [DEBUG] [Thread-131191] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:26.348 [DEBUG] [Thread-131191] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:26.357 [DEBUG] [Thread-131191] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:26.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:26.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-28T17:41:26.374 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T17:41:26.383 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:26.383 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:26.384 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:26.391 [DEBUG] [Thread-131191] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:27.488 [DEBUG] [Thread-131193 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:30.898 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:30.899 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:36.394 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:41:36.394 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:41:36.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-28T17:41:36.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 41, 30), 13.36, 40.57, 0.0, 20.24, 15.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:41:36.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:41:30
2025-09-28T17:41:37.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:41:37.239 [DEBUG] [Thread-131194] [transport.py] [_log()] starting thread (client mode): 0x2b9aa650
2025-09-28T17:41:37.239 [DEBUG] [Thread-131194] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:37.260 [DEBUG] [Thread-131194] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:41:37.260 [INFO] [Thread-131194] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:37.263 [DEBUG] [Thread-131194] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] Compression: none
2025-09-28T17:41:37.264 [DEBUG] [Thread-131194] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:37.282 [DEBUG] [Thread-131194] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:37.282 [DEBUG] [Thread-131194] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:37.283 [DEBUG] [Thread-131194] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:41:37.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:41:37.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:37.286 [DEBUG] [Thread-131194] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:37.286 [DEBUG] [Thread-131194] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:37.286 [DEBUG] [Thread-131194] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:37.286 [DEBUG] [Thread-131194] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:41:37.286 [DEBUG] [Thread-131194] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:37.307 [INFO] [Thread-131194] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:37.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:37.912 [DEBUG] [Thread-131194] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:37.912 [DEBUG] [Thread-131194] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:37.912 [DEBUG] [Thread-131194] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:41:37.953 [DEBUG] [Thread-131194] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:37.953 [DEBUG] [Thread-131194] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:37.955 [DEBUG] [Thread-131194] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:37.960 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:37.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:41:37.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:41:37.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:41:37.968 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:37.970 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:41:37.970 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:37.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:41:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653553 -999.00  +15.50  19.61     46   +3.90 1 1 1 1 1   887    0 11.10 -30.00 ----- 19.6 19.6 202.8 22.2 19.0 -28.0 18.6 -26.3 19.9 -26.7 20.5 -28.0
2025-09-28T17:41:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:41:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:41:37.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653553
2025-09-28T17:41:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:41:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:41:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:41:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:41:37.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:41:37.973 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:41:30', tmtdew=13.36, humidity=40.57, cloud=0.0, wind=20.24, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:41:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:41:37.973 [DEBUG] [Thread-131194] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:38.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-28T17:41:38.069 [DEBUG] [Thread-131197] [transport.py] [_log()] starting thread (client mode): 0x2b9df130
2025-09-28T17:41:38.069 [DEBUG] [Thread-131197] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:38.084 [DEBUG] [Thread-131197] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:41:38.084 [INFO] [Thread-131197] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:38.092 [DEBUG] [Thread-131197] [transport.py] [_log()] Compression: none
2025-09-28T17:41:38.093 [DEBUG] [Thread-131197] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:38.150 [DEBUG] [Thread-131197] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:38.150 [DEBUG] [Thread-131197] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:38.151 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:41:38.152 [DEBUG] [Thread-131197] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:41:38.153 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:38.206 [DEBUG] [Thread-131197] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:38.206 [DEBUG] [Thread-131197] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:38.206 [DEBUG] [Thread-131197] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:38.206 [DEBUG] [Thread-131197] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:41:38.207 [DEBUG] [Thread-131197] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:38.225 [INFO] [Thread-131197] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:38.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-28T17:41:38.226 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:39.166 [DEBUG] [Thread-131197] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:39.166 [DEBUG] [Thread-131197] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:39.213 [DEBUG] [Thread-131197] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:39.213 [DEBUG] [Thread-131197] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:39.222 [DEBUG] [Thread-131197] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:39.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:39.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-28T17:41:39.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-28T17:41:39.248 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:39.248 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:39.249 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:39.257 [DEBUG] [Thread-131197] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:42.516 [DEBUG] [Thread-131199 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:41:49.258 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:41:49.259 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:41:49.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-28T17:41:49.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 41, 30), 13.36, 40.57, 0.0, 20.24, 15.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:41:49.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:41:30
2025-09-28T17:41:49.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:41:50.098 [DEBUG] [Thread-131200] [transport.py] [_log()] starting thread (client mode): 0x2e361fc0
2025-09-28T17:41:50.098 [DEBUG] [Thread-131200] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:50.119 [DEBUG] [Thread-131200] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:41:50.119 [INFO] [Thread-131200] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:50.122 [DEBUG] [Thread-131200] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] Compression: none
2025-09-28T17:41:50.123 [DEBUG] [Thread-131200] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:50.139 [DEBUG] [Thread-131200] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:50.139 [DEBUG] [Thread-131200] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:50.140 [DEBUG] [Thread-131200] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:41:50.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:41:50.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:50.141 [DEBUG] [Thread-131200] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:50.142 [DEBUG] [Thread-131200] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:50.142 [DEBUG] [Thread-131200] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:50.142 [DEBUG] [Thread-131200] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:41:50.142 [DEBUG] [Thread-131200] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:50.167 [INFO] [Thread-131200] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:50.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:50.970 [DEBUG] [Thread-131200] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:50.970 [DEBUG] [Thread-131200] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:50.971 [DEBUG] [Thread-131200] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:41:51.011 [DEBUG] [Thread-131200] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:51.012 [DEBUG] [Thread-131200] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:51.014 [DEBUG] [Thread-131200] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:51.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:51.025 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:41:51.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:41:51.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:41:51.033 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:51.034 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:41:51.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:51.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:51.035 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:41:51.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653553 -999.00  +15.50  19.61     46   +3.90 1 1 1 1 1   887    0 11.10 -30.00 ----- 19.6 19.6 202.8 22.2 19.0 -28.0 18.6 -26.3 19.9 -26.7 20.5 -28.0
2025-09-28T17:41:51.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:41:51.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:41:51.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653553
2025-09-28T17:41:51.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:41:51.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:41:51.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:41:51.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:41:51.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:41:51.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:41:30', tmtdew=13.36, humidity=40.57, cloud=0.0, wind=20.24, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:41:06.979', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:41:51.037 [DEBUG] [Thread-131200] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:51.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:41:51.130 [DEBUG] [Thread-131203] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T17:41:51.130 [DEBUG] [Thread-131203] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:41:51.145 [DEBUG] [Thread-131203] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:41:51.145 [INFO] [Thread-131203] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:41:51.153 [DEBUG] [Thread-131203] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:41:51.153 [DEBUG] [Thread-131203] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] client lang: <none>
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] server lang: <none>
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] kex follows: False
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] Compression: none
2025-09-28T17:41:51.154 [DEBUG] [Thread-131203] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:41:51.213 [DEBUG] [Thread-131203] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:41:51.213 [DEBUG] [Thread-131203] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:41:51.214 [DEBUG] [Thread-131203] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:41:51.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:41:51.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:41:51.269 [DEBUG] [Thread-131203] [transport.py] [_log()] userauth is OK
2025-09-28T17:41:51.270 [DEBUG] [Thread-131203] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:41:51.270 [DEBUG] [Thread-131203] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:41:51.270 [DEBUG] [Thread-131203] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:41:51.270 [DEBUG] [Thread-131203] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:41:51.288 [INFO] [Thread-131203] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:41:51.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-28T17:41:51.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:41:52.256 [DEBUG] [Thread-131203] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:41:52.256 [DEBUG] [Thread-131203] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:41:52.304 [DEBUG] [Thread-131203] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:41:52.304 [DEBUG] [Thread-131203] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:41:52.313 [DEBUG] [Thread-131203] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:41:52.322 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:41:52.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-28T17:41: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') -> 00000000
2025-09-28T17:41:52.340 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:41:52.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:41:52.341 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:41:52.348 [DEBUG] [Thread-131203] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:41:57.550 [DEBUG] [Thread-131205 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:02.351 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:42:02.351 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:42:02.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-28T17:42:02.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 41, 30), 13.36, 40.57, 0.0, 20.24, 15.62, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:42:02.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:41:30
2025-09-28T17:42:03.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:42:03.225 [DEBUG] [Thread-131206] [transport.py] [_log()] starting thread (client mode): 0x2b91e6e0
2025-09-28T17:42:03.225 [DEBUG] [Thread-131206] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:42:03.244 [DEBUG] [Thread-131206] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:42:03.244 [INFO] [Thread-131206] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] client lang: <none>
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] server lang: <none>
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] kex follows: False
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] Compression: none
2025-09-28T17:42:03.248 [DEBUG] [Thread-131206] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:42:03.263 [DEBUG] [Thread-131206] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:42:03.264 [DEBUG] [Thread-131206] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:42:03.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:42:03.264 [DEBUG] [Thread-131206] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:42:03.264 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:42:03.265 [DEBUG] [Thread-131206] [transport.py] [_log()] userauth is OK
2025-09-28T17:42:03.265 [DEBUG] [Thread-131206] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:42:03.265 [DEBUG] [Thread-131206] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:42:03.265 [DEBUG] [Thread-131206] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:42:03.265 [DEBUG] [Thread-131206] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:42:03.274 [INFO] [Thread-131206] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:42:03.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:42:03.889 [DEBUG] [Thread-131206] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:42:03.889 [DEBUG] [Thread-131206] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:42:03.889 [DEBUG] [Thread-131206] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:42:03.930 [DEBUG] [Thread-131206] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:42:03.930 [DEBUG] [Thread-131206] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:42:03.932 [DEBUG] [Thread-131206] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:42:03.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:42:03.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:42:03.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:42:03.948 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:42:03.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:42:03.952 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:42:03.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653900 -999.00  +15.50  12.92     46   +4.00 1 1 1 1 1   887    0 11.28 -27.50 ----- 12.9 12.9 210.0 16.5 18.9 -27.3 18.7 -26.0 19.9 -26.5 20.5 -27.9
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653900
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:42:03.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:41:30', tmtdew=13.36, humidity=40.57, cloud=0.0, wind=20.24, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:41:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:42:03.952 [DEBUG] [Thread-131206] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:42:04.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-28T17:42:04.039 [DEBUG] [Thread-131209] [transport.py] [_log()] starting thread (client mode): 0x2b9dd9f0
2025-09-28T17:42:04.039 [DEBUG] [Thread-131209] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:42:04.055 [DEBUG] [Thread-131209] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:42:04.055 [INFO] [Thread-131209] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] client lang: <none>
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] server lang: <none>
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] kex follows: False
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] Compression: none
2025-09-28T17:42:04.063 [DEBUG] [Thread-131209] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:42:04.120 [DEBUG] [Thread-131209] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:42:04.120 [DEBUG] [Thread-131209] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:42:04.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:42:04.120 [DEBUG] [Thread-131209] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:42:04.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:42:04.176 [DEBUG] [Thread-131209] [transport.py] [_log()] userauth is OK
2025-09-28T17:42:04.176 [DEBUG] [Thread-131209] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:42:04.176 [DEBUG] [Thread-131209] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:42:04.176 [DEBUG] [Thread-131209] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:42:04.176 [DEBUG] [Thread-131209] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:42:04.190 [INFO] [Thread-131209] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:42:04.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-28T17:42:04.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:42:05.151 [DEBUG] [Thread-131209] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:42:05.151 [DEBUG] [Thread-131209] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:42:05.199 [DEBUG] [Thread-131209] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:42:05.199 [DEBUG] [Thread-131209] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:42:05.207 [DEBUG] [Thread-131209] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:42:05.216 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:42:05.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-28T17:42:05.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-28T17:42:05.233 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:42:05.234 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:42:05.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:42:05.246 [DEBUG] [Thread-131209] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:42:12.581 [DEBUG] [Thread-131211 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:15.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:42:15.245 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:42:15.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-28T17:42:15.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 42, 2), 13.36, 40.55, 0.0, 19.39, 15.6, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:42:15.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:42:02
2025-09-28T17:42:15.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:42:16.081 [DEBUG] [Thread-131212] [transport.py] [_log()] starting thread (client mode): 0x2e360a00
2025-09-28T17:42:16.081 [DEBUG] [Thread-131212] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:42:16.101 [DEBUG] [Thread-131212] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:42:16.101 [INFO] [Thread-131212] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:42:16.104 [DEBUG] [Thread-131212] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:42:16.104 [DEBUG] [Thread-131212] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:42:16.104 [DEBUG] [Thread-131212] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:42:16.104 [DEBUG] [Thread-131212] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:16.104 [DEBUG] [Thread-131212] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] client lang: <none>
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] server lang: <none>
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] kex follows: False
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] Compression: none
2025-09-28T17:42:16.105 [DEBUG] [Thread-131212] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:42:16.122 [DEBUG] [Thread-131212] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:42:16.123 [DEBUG] [Thread-131212] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:42:16.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:42:16.124 [DEBUG] [Thread-131212] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:42:16.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:42:16.126 [DEBUG] [Thread-131212] [transport.py] [_log()] userauth is OK
2025-09-28T17:42:16.126 [DEBUG] [Thread-131212] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:42:16.126 [DEBUG] [Thread-131212] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:42:16.126 [DEBUG] [Thread-131212] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:42:16.126 [DEBUG] [Thread-131212] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:42:16.144 [INFO] [Thread-131212] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:42:16.145 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:42:16.929 [DEBUG] [Thread-131212] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:42:16.929 [DEBUG] [Thread-131212] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:42:16.930 [DEBUG] [Thread-131212] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:42:16.970 [DEBUG] [Thread-131212] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:42:16.970 [DEBUG] [Thread-131212] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:42:16.973 [DEBUG] [Thread-131212] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:42:16.984 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:42:16.985 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:42:16.987 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:42:16.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:42:16.993 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:42:16.995 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:42:16.995 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:42:16.995 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:42:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:42:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.653900 -999.00  +15.50  12.92     46   +4.00 1 1 1 1 1   887    0 11.28 -27.50 ----- 12.9 12.9 210.0 16.5 18.9 -27.3 18.7 -26.0 19.9 -26.5 20.5 -27.9
2025-09-28T17:42:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:42:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:42:16.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.653900
2025-09-28T17:42:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:42:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:42:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:42:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:42:16.997 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:42:16.998 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:42:02', tmtdew=13.36, humidity=40.55, cloud=0.0, wind=19.39, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:41:36.960', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:42:16.998 [DEBUG] [Thread-131212] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:42:17.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-28T17:42:24.734 [DEBUG] [Thread-131215 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:27.626 [DEBUG] [Thread-131216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:31.044 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:31.045 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:42.674 [DEBUG] [Thread-131217 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:42:52.099 [DEBUG] [Thread-131218] [transport.py] [_log()] starting thread (client mode): 0x2b997610
2025-09-28T17:42:52.100 [DEBUG] [Thread-131218] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:42:52.113 [DEBUG] [Thread-131218] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:42:52.113 [INFO] [Thread-131218] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] client lang: <none>
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] server lang: <none>
2025-09-28T17:42:52.121 [DEBUG] [Thread-131218] [transport.py] [_log()] kex follows: False
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] Compression: none
2025-09-28T17:42:52.122 [DEBUG] [Thread-131218] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:42:52.179 [DEBUG] [Thread-131218] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:42:52.180 [DEBUG] [Thread-131218] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:42:52.180 [DEBUG] [Thread-131218] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:42:52.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:42:52.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:42:52.235 [DEBUG] [Thread-131218] [transport.py] [_log()] userauth is OK
2025-09-28T17:42:52.235 [DEBUG] [Thread-131218] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:42:52.235 [DEBUG] [Thread-131218] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:42:52.235 [DEBUG] [Thread-131218] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:42:52.236 [DEBUG] [Thread-131218] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:42:52.256 [INFO] [Thread-131218] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:42:52.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-28T17:42:52.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:42:53.236 [DEBUG] [Thread-131218] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:42:53.236 [DEBUG] [Thread-131218] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:42:53.284 [DEBUG] [Thread-131218] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:42:53.284 [DEBUG] [Thread-131218] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:42:53.293 [DEBUG] [Thread-131218] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:42:53.302 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:42:53.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-28T17:42:53.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-28T17:42:53.324 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:42:53.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:42:53.325 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:42:53.333 [DEBUG] [Thread-131218] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:42:57.705 [DEBUG] [Thread-131220 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:03.335 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:43:03.335 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:43:03.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-28T17:43:03.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 42, 34), 13.28, 40.64, 0.0, 16.87, 15.47, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:43:03.911 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:42:34
2025-09-28T17:43:04.019 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:43:04.168 [DEBUG] [Thread-131221] [transport.py] [_log()] starting thread (client mode): 0x2b997a30
2025-09-28T17:43:04.169 [DEBUG] [Thread-131221] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:04.188 [DEBUG] [Thread-131221] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:43:04.188 [INFO] [Thread-131221] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:43:04.191 [DEBUG] [Thread-131221] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] Compression: none
2025-09-28T17:43:04.192 [DEBUG] [Thread-131221] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:04.211 [DEBUG] [Thread-131221] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:04.211 [DEBUG] [Thread-131221] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:04.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:43:04.213 [DEBUG] [Thread-131221] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:43:04.213 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:04.215 [DEBUG] [Thread-131221] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:04.215 [DEBUG] [Thread-131221] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:04.215 [DEBUG] [Thread-131221] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:04.215 [DEBUG] [Thread-131221] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:43:04.215 [DEBUG] [Thread-131221] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:04.238 [INFO] [Thread-131221] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:04.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:04.871 [DEBUG] [Thread-131221] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:04.872 [DEBUG] [Thread-131221] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:04.872 [DEBUG] [Thread-131221] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:43:04.913 [DEBUG] [Thread-131221] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:04.914 [DEBUG] [Thread-131221] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:04.917 [DEBUG] [Thread-131221] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:04.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:04.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:43:04.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:43:04.934 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:43:04.939 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:04.941 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:43:04.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:04.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.654247 -999.00  +15.60  14.49     45   +4.00 1 1 1 1 1   887    0 11.16 -25.79 ----- 14.5 14.5 209.8 18.4 18.9 -27.1 18.6 -29.5 19.9 -25.8 20.5 -27.7
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.654247
2025-09-28T17:43:04.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:43:04.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:43:04.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:43:04.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:43:04.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:43:04.943 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:42:34', tmtdew=13.28, humidity=40.64, cloud=0.0, wind=16.87, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:42:06.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:43:04.943 [DEBUG] [Thread-131221] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:05.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:43:05.040 [DEBUG] [Thread-131224] [transport.py] [_log()] starting thread (client mode): 0x2e3c0a60
2025-09-28T17:43:05.040 [DEBUG] [Thread-131224] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:05.056 [DEBUG] [Thread-131224] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:43:05.056 [INFO] [Thread-131224] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] Compression: none
2025-09-28T17:43:05.064 [DEBUG] [Thread-131224] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:05.121 [DEBUG] [Thread-131224] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:05.122 [DEBUG] [Thread-131224] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:05.122 [DEBUG] [Thread-131224] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:43:05.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:43:05.122 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:05.178 [DEBUG] [Thread-131224] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:05.178 [DEBUG] [Thread-131224] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:05.178 [DEBUG] [Thread-131224] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:05.178 [DEBUG] [Thread-131224] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:43:05.178 [DEBUG] [Thread-131224] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:05.192 [INFO] [Thread-131224] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:05.193 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:43:05.193 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:06.173 [DEBUG] [Thread-131224] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:06.174 [DEBUG] [Thread-131224] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:06.221 [DEBUG] [Thread-131224] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:06.221 [DEBUG] [Thread-131224] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:06.230 [DEBUG] [Thread-131224] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:06.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:06.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-28T17:43:06.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-28T17:43:06.256 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:06.256 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:06.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:06.264 [DEBUG] [Thread-131224] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:12.733 [DEBUG] [Thread-131226 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:16.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:43:16.267 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:43:16.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-28T17:43:16.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 43, 6), 13.22, 40.77, 0.0, 15.46, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:43:16.854 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:43:06
2025-09-28T17:43:16.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:43:17.117 [DEBUG] [Thread-131227] [transport.py] [_log()] starting thread (client mode): 0x2e3c0b50
2025-09-28T17:43:17.117 [DEBUG] [Thread-131227] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:17.137 [DEBUG] [Thread-131227] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:43:17.138 [INFO] [Thread-131227] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:43:17.141 [DEBUG] [Thread-131227] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:17.141 [DEBUG] [Thread-131227] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:43:17.141 [DEBUG] [Thread-131227] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] Compression: none
2025-09-28T17:43:17.142 [DEBUG] [Thread-131227] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:17.159 [DEBUG] [Thread-131227] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:17.160 [DEBUG] [Thread-131227] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:17.160 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:43:17.161 [DEBUG] [Thread-131227] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:43:17.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:17.163 [DEBUG] [Thread-131227] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:17.164 [DEBUG] [Thread-131227] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:17.164 [DEBUG] [Thread-131227] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:17.164 [DEBUG] [Thread-131227] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:43:17.164 [DEBUG] [Thread-131227] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:17.200 [INFO] [Thread-131227] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:17.200 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:17.847 [DEBUG] [Thread-131227] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:17.847 [DEBUG] [Thread-131227] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:17.847 [DEBUG] [Thread-131227] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:43:17.888 [DEBUG] [Thread-131227] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:17.889 [DEBUG] [Thread-131227] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:17.892 [DEBUG] [Thread-131227] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:17.905 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:17.905 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:43:17.907 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:43:17.909 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:43:17.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:17.916 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:43:17.916 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:17.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.654594 -999.00  +15.60   6.86     45   +4.00 1 1 1 1 1   887    0 11.38 -25.32 ----- 6.9 6.9 228.8 20.0 18.9 -27.6 18.8 -26.0 19.9 -25.8 20.4 -27.7
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.654594
2025-09-28T17:43:17.917 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:43:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:43:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:43:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:43:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:43:17.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:43:06', tmtdew=13.22, humidity=40.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:42:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:43:17.919 [DEBUG] [Thread-131227] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:18.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-28T17:43:18.016 [DEBUG] [Thread-131230] [transport.py] [_log()] starting thread (client mode): 0x2e3c3340
2025-09-28T17:43:18.017 [DEBUG] [Thread-131230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:18.031 [DEBUG] [Thread-131230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:43:18.031 [INFO] [Thread-131230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:43:18.038 [DEBUG] [Thread-131230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:18.039 [DEBUG] [Thread-131230] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] Compression: none
2025-09-28T17:43:18.040 [DEBUG] [Thread-131230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:18.099 [DEBUG] [Thread-131230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:18.099 [DEBUG] [Thread-131230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:18.100 [DEBUG] [Thread-131230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:43:18.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:43:18.100 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:18.154 [DEBUG] [Thread-131230] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:18.154 [DEBUG] [Thread-131230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:18.155 [DEBUG] [Thread-131230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:18.155 [DEBUG] [Thread-131230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:43:18.155 [DEBUG] [Thread-131230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:18.173 [INFO] [Thread-131230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:18.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-28T17:43:18.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:19.133 [DEBUG] [Thread-131230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:19.134 [DEBUG] [Thread-131230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:19.181 [DEBUG] [Thread-131230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:19.181 [DEBUG] [Thread-131230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:19.190 [DEBUG] [Thread-131230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:19.199 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:19.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-28T17:43:19.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-28T17:43:19.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:19.218 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:19.218 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:19.226 [DEBUG] [Thread-131230] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:24.789 [DEBUG] [Thread-131232 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:27.787 [DEBUG] [Thread-131233 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:29.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:43:29.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:43:29.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-28T17:43:29.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 43, 6), 13.22, 40.77, 0.0, 15.46, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:43:29.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:43:06
2025-09-28T17:43:29.920 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:43:30.068 [DEBUG] [Thread-131234] [transport.py] [_log()] starting thread (client mode): 0x2e3c1b40
2025-09-28T17:43:30.069 [DEBUG] [Thread-131234] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:30.089 [DEBUG] [Thread-131234] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:43:30.089 [INFO] [Thread-131234] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:43:30.092 [DEBUG] [Thread-131234] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:30.092 [DEBUG] [Thread-131234] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:43:30.092 [DEBUG] [Thread-131234] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:30.092 [DEBUG] [Thread-131234] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] Compression: none
2025-09-28T17:43:30.093 [DEBUG] [Thread-131234] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:30.110 [DEBUG] [Thread-131234] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:30.111 [DEBUG] [Thread-131234] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:30.111 [DEBUG] [Thread-131234] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:43:30.111 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:43:30.112 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:30.113 [DEBUG] [Thread-131234] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:30.113 [DEBUG] [Thread-131234] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:30.114 [DEBUG] [Thread-131234] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:30.114 [DEBUG] [Thread-131234] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:43:30.114 [DEBUG] [Thread-131234] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:30.131 [INFO] [Thread-131234] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:30.132 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:30.765 [DEBUG] [Thread-131234] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:30.765 [DEBUG] [Thread-131234] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:30.765 [DEBUG] [Thread-131234] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:43:30.806 [DEBUG] [Thread-131234] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:30.806 [DEBUG] [Thread-131234] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:30.809 [DEBUG] [Thread-131234] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:30.821 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:30.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:43:30.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:43:30.825 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:43:30.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:30.832 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:43:30.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.654594 -999.00  +15.60   6.86     45   +4.00 1 1 1 1 1   887    0 11.38 -25.32 ----- 6.9 6.9 228.8 20.0 18.9 -27.6 18.8 -26.0 19.9 -25.8 20.4 -27.7
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:43:30.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.654594
2025-09-28T17:43:30.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:43:30.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:43:30.835 [DEBUG] [Thread-131234] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:43:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:43:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:43:30.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:43:06', tmtdew=13.22, humidity=40.77, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:42:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:43:30.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-28T17:43:30.933 [DEBUG] [Thread-131237] [transport.py] [_log()] starting thread (client mode): 0x2e3c10f0
2025-09-28T17:43:30.933 [DEBUG] [Thread-131237] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:30.949 [DEBUG] [Thread-131237] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:43:30.949 [INFO] [Thread-131237] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:30.956 [DEBUG] [Thread-131237] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] Compression: none
2025-09-28T17:43:30.957 [DEBUG] [Thread-131237] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:31.013 [DEBUG] [Thread-131237] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:31.013 [DEBUG] [Thread-131237] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:31.014 [DEBUG] [Thread-131237] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:43:31.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:43:31.015 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:31.070 [DEBUG] [Thread-131237] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:31.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:31.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:31.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:43:31.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:31.090 [INFO] [Thread-131237] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:31.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-28T17:43:31.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:31.187 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:31.188 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:32.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:32.071 [DEBUG] [Thread-131237] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:32.119 [DEBUG] [Thread-131237] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:32.119 [DEBUG] [Thread-131237] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:32.128 [DEBUG] [Thread-131237] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:32.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:32.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-28T17:43:32.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-28T17:43:32.154 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:32.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:32.155 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:32.163 [DEBUG] [Thread-131237] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:42.166 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:43:42.166 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:43:42.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-28T17:43:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 43, 38), 13.28, 40.64, 0.0, 19.55, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:43:42.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:43:38
2025-09-28T17:43:42.830 [DEBUG] [Thread-131239 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:42.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:43:42.995 [DEBUG] [Thread-131240] [transport.py] [_log()] starting thread (client mode): 0x2b9552a0
2025-09-28T17:43:42.995 [DEBUG] [Thread-131240] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:43.015 [DEBUG] [Thread-131240] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:43:43.015 [INFO] [Thread-131240] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:43.018 [DEBUG] [Thread-131240] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] Compression: none
2025-09-28T17:43:43.019 [DEBUG] [Thread-131240] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:43.037 [DEBUG] [Thread-131240] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:43.037 [DEBUG] [Thread-131240] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:43.038 [DEBUG] [Thread-131240] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:43:43.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:43:43.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:43.040 [DEBUG] [Thread-131240] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:43.040 [DEBUG] [Thread-131240] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:43.040 [DEBUG] [Thread-131240] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:43.040 [DEBUG] [Thread-131240] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:43:43.040 [DEBUG] [Thread-131240] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:43.064 [INFO] [Thread-131240] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:43.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:43.702 [DEBUG] [Thread-131240] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:43.703 [DEBUG] [Thread-131240] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:43.703 [DEBUG] [Thread-131240] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:43:43.743 [DEBUG] [Thread-131240] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:43.743 [DEBUG] [Thread-131240] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:43.746 [DEBUG] [Thread-131240] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:43.758 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:43.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:43:43.759 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:43:43.761 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:43:43.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:43.769 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:43:43.769 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:43.769 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:43.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:43:43.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655288 -999.00  +15.60  14.01     45   +3.90 1 1 1 1 1   887    0 11.32 -24.32 ----- 14.0 14.0 200.0 22.4 18.9 -27.3 18.6 -26.7 19.8 -26.3 20.4 -28.6
2025-09-28T17:43:43.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:43:43.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:43:43.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655288
2025-09-28T17:43:43.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:43:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:43:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:43:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:43:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:43:43.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:43:38', tmtdew=13.28, humidity=40.64, cloud=0.0, wind=19.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:43:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:43:43.771 [DEBUG] [Thread-131240] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:43.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-28T17:43:43.869 [DEBUG] [Thread-131243] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T17:43:43.869 [DEBUG] [Thread-131243] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:43.886 [DEBUG] [Thread-131243] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:43:43.887 [INFO] [Thread-131243] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:43.894 [DEBUG] [Thread-131243] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] Compression: none
2025-09-28T17:43:43.895 [DEBUG] [Thread-131243] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:43.954 [DEBUG] [Thread-131243] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:43.955 [DEBUG] [Thread-131243] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:43.955 [DEBUG] [Thread-131243] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:43:43.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:43:43.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:44.013 [DEBUG] [Thread-131243] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:44.014 [DEBUG] [Thread-131243] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:44.014 [DEBUG] [Thread-131243] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:44.014 [DEBUG] [Thread-131243] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:43:44.014 [DEBUG] [Thread-131243] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:44.034 [INFO] [Thread-131243] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:44.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-28T17:43:44.034 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:45.003 [DEBUG] [Thread-131243] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:45.003 [DEBUG] [Thread-131243] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:45.055 [DEBUG] [Thread-131243] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:45.055 [DEBUG] [Thread-131243] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:45.064 [DEBUG] [Thread-131243] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:45.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:45.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-28T17:43:45.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-28T17:43:45.093 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:45.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:45.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:45.102 [DEBUG] [Thread-131243] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:55.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:43:55.105 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:43:55.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-28T17:43:55.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 43, 38), 13.28, 40.64, 0.0, 19.55, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:43:55.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:43:38
2025-09-28T17:43:55.776 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:43:55.922 [DEBUG] [Thread-131245] [transport.py] [_log()] starting thread (client mode): 0x2b91cd60
2025-09-28T17:43:55.922 [DEBUG] [Thread-131245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:55.942 [DEBUG] [Thread-131245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:43:55.942 [INFO] [Thread-131245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:55.945 [DEBUG] [Thread-131245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] Compression: none
2025-09-28T17:43:55.946 [DEBUG] [Thread-131245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:55.965 [DEBUG] [Thread-131245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:55.966 [DEBUG] [Thread-131245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:55.966 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:43:55.966 [DEBUG] [Thread-131245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:43:55.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:55.969 [DEBUG] [Thread-131245] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:55.969 [DEBUG] [Thread-131245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:55.969 [DEBUG] [Thread-131245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:55.969 [DEBUG] [Thread-131245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:43:55.969 [DEBUG] [Thread-131245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:56.005 [INFO] [Thread-131245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:56.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:56.646 [DEBUG] [Thread-131245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:56.646 [DEBUG] [Thread-131245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:56.646 [DEBUG] [Thread-131245] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:43:56.687 [DEBUG] [Thread-131245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:56.687 [DEBUG] [Thread-131245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:56.690 [DEBUG] [Thread-131245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:56.701 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:56.702 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:43:56.704 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:43:56.706 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:43:56.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:56.713 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:43:56.713 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:56.713 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:56.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:43:56.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655288 -999.00  +15.60  14.01     45   +3.90 1 1 1 1 1   887    0 11.32 -24.32 ----- 14.0 14.0 200.0 22.4 18.9 -27.3 18.6 -26.7 19.8 -26.3 20.4 -28.6
2025-09-28T17:43:56.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:43:56.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:43:56.714 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655288
2025-09-28T17:43:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:43:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:43:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:43:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:43:56.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:43:56.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:43:38', tmtdew=13.28, humidity=40.64, cloud=0.0, wind=19.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:43:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:43:56.716 [DEBUG] [Thread-131245] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:43:56.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-28T17:43:56.810 [DEBUG] [Thread-131248] [transport.py] [_log()] starting thread (client mode): 0x2b994760
2025-09-28T17:43:56.810 [DEBUG] [Thread-131248] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:43:56.825 [DEBUG] [Thread-131248] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:43:56.825 [INFO] [Thread-131248] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:43:56.832 [DEBUG] [Thread-131248] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:43:56.832 [DEBUG] [Thread-131248] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:43:56.832 [DEBUG] [Thread-131248] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] client lang: <none>
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] server lang: <none>
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] kex follows: False
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] Compression: none
2025-09-28T17:43:56.833 [DEBUG] [Thread-131248] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:43:56.892 [DEBUG] [Thread-131248] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:43:56.892 [DEBUG] [Thread-131248] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:43:56.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:43:56.893 [DEBUG] [Thread-131248] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:43:56.894 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:43:56.949 [DEBUG] [Thread-131248] [transport.py] [_log()] userauth is OK
2025-09-28T17:43:56.949 [DEBUG] [Thread-131248] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:43:56.949 [DEBUG] [Thread-131248] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:43:56.949 [DEBUG] [Thread-131248] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:43:56.949 [DEBUG] [Thread-131248] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:43:57.185 [INFO] [Thread-131248] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:43:57.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-28T17:43:57.186 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:43:57.858 [DEBUG] [Thread-131250 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:43:57.928 [DEBUG] [Thread-131248] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:43:57.928 [DEBUG] [Thread-131248] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:43:57.976 [DEBUG] [Thread-131248] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:43:57.976 [DEBUG] [Thread-131248] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:43:57.985 [DEBUG] [Thread-131248] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:43:57.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:43:57.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-28T17:43:58.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-28T17:43:58.011 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:43:58.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:43:58.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:43:58.019 [DEBUG] [Thread-131248] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:08.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:44:08.022 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:44:08.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-28T17:44:08.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 43, 38), 13.28, 40.64, 0.0, 19.55, 15.43, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:44:08.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:43:38
2025-09-28T17:44:08.692 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:44:08.840 [DEBUG] [Thread-131251] [transport.py] [_log()] starting thread (client mode): 0x2b997610
2025-09-28T17:44:08.840 [DEBUG] [Thread-131251] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:08.862 [DEBUG] [Thread-131251] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:44:08.862 [INFO] [Thread-131251] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:44:08.865 [DEBUG] [Thread-131251] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:08.865 [DEBUG] [Thread-131251] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:44:08.865 [DEBUG] [Thread-131251] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:08.865 [DEBUG] [Thread-131251] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:08.866 [DEBUG] [Thread-131251] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:08.867 [DEBUG] [Thread-131251] [transport.py] [_log()] Compression: none
2025-09-28T17:44:08.867 [DEBUG] [Thread-131251] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:08.887 [DEBUG] [Thread-131251] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:08.887 [DEBUG] [Thread-131251] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:08.888 [DEBUG] [Thread-131251] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:44:08.888 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:44:08.889 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:08.890 [DEBUG] [Thread-131251] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:08.890 [DEBUG] [Thread-131251] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:08.890 [DEBUG] [Thread-131251] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:08.890 [DEBUG] [Thread-131251] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:44:08.890 [DEBUG] [Thread-131251] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:08.908 [INFO] [Thread-131251] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:08.909 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:09.531 [DEBUG] [Thread-131251] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:09.531 [DEBUG] [Thread-131251] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:09.531 [DEBUG] [Thread-131251] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:44:09.572 [DEBUG] [Thread-131251] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:09.573 [DEBUG] [Thread-131251] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:09.576 [DEBUG] [Thread-131251] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:09.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:09.587 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:44:09.589 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:44:09.590 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:44:09.594 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:09.596 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:44:09.596 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:09.596 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655288 -999.00  +15.60  14.01     45   +3.90 1 1 1 1 1   887    0 11.32 -24.32 ----- 14.0 14.0 200.0 22.4 18.9 -27.3 18.6 -26.7 19.8 -26.3 20.4 -28.6
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655288
2025-09-28T17:44:09.597 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:44:09.597 [DEBUG] [Thread-131251] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:09.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:44:09.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:44:09.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:44:09.598 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:44:09.599 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:43:38', tmtdew=13.28, humidity=40.64, cloud=0.0, wind=19.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:43:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:44:09.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-28T17:44:09.693 [DEBUG] [Thread-131254] [transport.py] [_log()] starting thread (client mode): 0x2e3c07c0
2025-09-28T17:44:09.693 [DEBUG] [Thread-131254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:09.709 [DEBUG] [Thread-131254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:44:09.709 [INFO] [Thread-131254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:44:09.716 [DEBUG] [Thread-131254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:09.717 [DEBUG] [Thread-131254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:09.718 [DEBUG] [Thread-131254] [transport.py] [_log()] Compression: none
2025-09-28T17:44:09.718 [DEBUG] [Thread-131254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:09.776 [DEBUG] [Thread-131254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:09.776 [DEBUG] [Thread-131254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:09.777 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:44:09.777 [DEBUG] [Thread-131254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:44:09.778 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:09.832 [DEBUG] [Thread-131254] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:09.832 [DEBUG] [Thread-131254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:09.832 [DEBUG] [Thread-131254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:09.833 [DEBUG] [Thread-131254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:44:09.833 [DEBUG] [Thread-131254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:09.851 [INFO] [Thread-131254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:09.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-28T17:44:09.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:10.870 [DEBUG] [Thread-131254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:10.870 [DEBUG] [Thread-131254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:10.918 [DEBUG] [Thread-131254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:10.918 [DEBUG] [Thread-131254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:10.926 [DEBUG] [Thread-131254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:10.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:10.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-28T17:44:10.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-28T17:44:10.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:10.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:10.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:10.958 [DEBUG] [Thread-131254] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:12.899 [DEBUG] [Thread-131256 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:20.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:44:20.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:44: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-28T17:44:21.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 44, 10), 13.28, 40.6, 0.0, 21.16, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:44:21.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:44:10
2025-09-28T17:44:21.652 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:44:21.800 [DEBUG] [Thread-131257] [transport.py] [_log()] starting thread (client mode): 0x2b996c80
2025-09-28T17:44:21.800 [DEBUG] [Thread-131257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:21.820 [DEBUG] [Thread-131257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:44:21.820 [INFO] [Thread-131257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:21.824 [DEBUG] [Thread-131257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] Compression: none
2025-09-28T17:44:21.825 [DEBUG] [Thread-131257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:21.843 [DEBUG] [Thread-131257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:21.844 [DEBUG] [Thread-131257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:21.844 [DEBUG] [Thread-131257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:44:21.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:44:21.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:21.846 [DEBUG] [Thread-131257] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:21.846 [DEBUG] [Thread-131257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:21.846 [DEBUG] [Thread-131257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:21.846 [DEBUG] [Thread-131257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:44:21.847 [DEBUG] [Thread-131257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:21.870 [INFO] [Thread-131257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:21.870 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:22.481 [DEBUG] [Thread-131257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:22.481 [DEBUG] [Thread-131257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:22.481 [DEBUG] [Thread-131257] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:44:22.522 [DEBUG] [Thread-131257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:22.523 [DEBUG] [Thread-131257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:22.526 [DEBUG] [Thread-131257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:22.537 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:22.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:44:22.539 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:44:22.540 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:44:22.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:22.548 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:44:22.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:22.548 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:22.548 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:44:22.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655636 -999.00  +15.60  11.66     45   +3.80 1 1 1 1 1   887    0 11.21 -24.74 ----- 11.7 11.7 189.5 20.4 18.9 -27.3 18.6 -26.4 19.8 -26.7 20.4 -27.7
2025-09-28T17:44:22.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:44:22.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:44:22.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655636
2025-09-28T17:44:22.549 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:44:22.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:44:22.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:44:22.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:44:22.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:44:22.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:44:10', tmtdew=13.28, humidity=40.6, cloud=0.0, wind=21.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:44:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:44:22.550 [DEBUG] [Thread-131257] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44: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-28T17:44:22.647 [DEBUG] [Thread-131260] [transport.py] [_log()] starting thread (client mode): 0x2b91dab0
2025-09-28T17:44:22.648 [DEBUG] [Thread-131260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:22.663 [DEBUG] [Thread-131260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:44:22.663 [INFO] [Thread-131260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:44:22.670 [DEBUG] [Thread-131260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:22.670 [DEBUG] [Thread-131260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:22.671 [DEBUG] [Thread-131260] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] Compression: none
2025-09-28T17:44:22.672 [DEBUG] [Thread-131260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:22.728 [DEBUG] [Thread-131260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:22.728 [DEBUG] [Thread-131260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:22.729 [DEBUG] [Thread-131260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:44:22.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:44:22.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:22.784 [DEBUG] [Thread-131260] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:22.784 [DEBUG] [Thread-131260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:22.784 [DEBUG] [Thread-131260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:22.785 [DEBUG] [Thread-131260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:44:22.785 [DEBUG] [Thread-131260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:22.804 [INFO] [Thread-131260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:22.805 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:44:22.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:23.733 [DEBUG] [Thread-131260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:23.733 [DEBUG] [Thread-131260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:23.781 [DEBUG] [Thread-131260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:23.781 [DEBUG] [Thread-131260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:23.789 [DEBUG] [Thread-131260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:23.797 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:23.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-28T17:44:23.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-28T17:44:23.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:23.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:23.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:23.820 [DEBUG] [Thread-131260] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:24.841 [DEBUG] [Thread-131262 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:27.928 [DEBUG] [Thread-131263 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:31.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:31.328 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:33.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:44:33.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:44:33.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-28T17:44:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 44, 10), 13.28, 40.6, 0.0, 21.16, 15.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:44:34.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:44:10
2025-09-28T17:44:34.499 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:44:34.649 [DEBUG] [Thread-131264] [transport.py] [_log()] starting thread (client mode): 0x2b995ed0
2025-09-28T17:44:34.649 [DEBUG] [Thread-131264] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:34.670 [DEBUG] [Thread-131264] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:44:34.670 [INFO] [Thread-131264] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:44:34.673 [DEBUG] [Thread-131264] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:34.673 [DEBUG] [Thread-131264] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:44:34.673 [DEBUG] [Thread-131264] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:34.673 [DEBUG] [Thread-131264] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:34.673 [DEBUG] [Thread-131264] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:34.674 [DEBUG] [Thread-131264] [transport.py] [_log()] Compression: none
2025-09-28T17:44:34.675 [DEBUG] [Thread-131264] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:34.693 [DEBUG] [Thread-131264] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:34.694 [DEBUG] [Thread-131264] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:34.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:44:34.695 [DEBUG] [Thread-131264] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:44:34.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:34.696 [DEBUG] [Thread-131264] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:34.696 [DEBUG] [Thread-131264] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:34.697 [DEBUG] [Thread-131264] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:34.697 [DEBUG] [Thread-131264] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:44:34.697 [DEBUG] [Thread-131264] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:34.719 [INFO] [Thread-131264] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:34.720 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:35.397 [DEBUG] [Thread-131264] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:35.398 [DEBUG] [Thread-131264] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:35.398 [DEBUG] [Thread-131264] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:44:35.439 [DEBUG] [Thread-131264] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:35.439 [DEBUG] [Thread-131264] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:35.442 [DEBUG] [Thread-131264] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:35.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:35.454 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:44:35.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:44:35.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:44:35.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:35.466 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:44:35.466 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:35.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:35.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:44:35.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655636 -999.00  +15.60  11.66     45   +3.80 1 1 1 1 1   887    0 11.21 -24.74 ----- 11.7 11.7 189.5 20.4 18.9 -27.3 18.6 -26.4 19.8 -26.7 20.4 -27.7
2025-09-28T17:44:35.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:44:35.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:44:35.467 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655636
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:44:35.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:44:10', tmtdew=13.28, humidity=40.6, cloud=0.0, wind=21.16, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:44:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:44:35.469 [DEBUG] [Thread-131264] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:35.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-28T17:44:35.567 [DEBUG] [Thread-131267] [transport.py] [_log()] starting thread (client mode): 0x2b997e50
2025-09-28T17:44:35.567 [DEBUG] [Thread-131267] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:35.582 [DEBUG] [Thread-131267] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:44:35.582 [INFO] [Thread-131267] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:44:35.589 [DEBUG] [Thread-131267] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:35.589 [DEBUG] [Thread-131267] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:44:35.589 [DEBUG] [Thread-131267] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:35.589 [DEBUG] [Thread-131267] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:35.589 [DEBUG] [Thread-131267] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] Compression: none
2025-09-28T17:44:35.590 [DEBUG] [Thread-131267] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:35.647 [DEBUG] [Thread-131267] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:35.647 [DEBUG] [Thread-131267] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:35.648 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:44:35.648 [DEBUG] [Thread-131267] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:44:35.649 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:35.703 [DEBUG] [Thread-131267] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:35.703 [DEBUG] [Thread-131267] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:35.703 [DEBUG] [Thread-131267] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:35.703 [DEBUG] [Thread-131267] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:44:35.703 [DEBUG] [Thread-131267] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:35.725 [INFO] [Thread-131267] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:35.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-28T17:44:35.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:36.665 [DEBUG] [Thread-131267] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:36.665 [DEBUG] [Thread-131267] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:36.713 [DEBUG] [Thread-131267] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:36.713 [DEBUG] [Thread-131267] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:36.722 [DEBUG] [Thread-131267] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:36.731 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:36.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-28T17:44:36.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') -> 00000000
2025-09-28T17:44:36.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:36.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:36.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:36.756 [DEBUG] [Thread-131267] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:42.972 [DEBUG] [Thread-131269 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:46.759 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:44:46.759 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:44:46.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-28T17:44:47.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 44, 43), 13.3, 40.69, 0.0, 16.2, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:44:47.336 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:44:43
2025-09-28T17:44:47.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:44:47.593 [DEBUG] [Thread-131270] [transport.py] [_log()] starting thread (client mode): 0x2b997820
2025-09-28T17:44:47.593 [DEBUG] [Thread-131270] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:47.604 [DEBUG] [Thread-131270] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:44:47.604 [INFO] [Thread-131270] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:47.607 [DEBUG] [Thread-131270] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:47.608 [DEBUG] [Thread-131270] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:47.608 [DEBUG] [Thread-131270] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:47.608 [DEBUG] [Thread-131270] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:47.608 [DEBUG] [Thread-131270] [transport.py] [_log()] Compression: none
2025-09-28T17:44:47.608 [DEBUG] [Thread-131270] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:47.623 [DEBUG] [Thread-131270] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:47.623 [DEBUG] [Thread-131270] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:47.624 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:44:47.625 [DEBUG] [Thread-131270] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:44:47.625 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:47.627 [DEBUG] [Thread-131270] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:47.627 [DEBUG] [Thread-131270] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:47.627 [DEBUG] [Thread-131270] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:47.628 [DEBUG] [Thread-131270] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:44:47.628 [DEBUG] [Thread-131270] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:47.651 [INFO] [Thread-131270] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:47.652 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:48.294 [DEBUG] [Thread-131270] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:48.294 [DEBUG] [Thread-131270] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:48.294 [DEBUG] [Thread-131270] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:44:48.335 [DEBUG] [Thread-131270] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:48.336 [DEBUG] [Thread-131270] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:48.338 [DEBUG] [Thread-131270] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:48.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:48.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:44:48.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:44:48.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:44:48.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:48.363 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:44:48.363 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:48.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:44:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655983 -999.00  +15.50  17.30     45   +3.80 1 1 1 1 1   887    0 11.10 -21.50 ----- 17.3 17.3 198.2 20.8 18.8 -27.6 18.6 -26.1 19.8 -26.8 20.3 -28.3
2025-09-28T17:44:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:44:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:44:48.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655983
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:44:48.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:44:43', tmtdew=13.3, humidity=40.69, cloud=0.0, wind=16.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:44:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:44:48.366 [DEBUG] [Thread-131270] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:48.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-28T17:44:48.460 [DEBUG] [Thread-131273] [transport.py] [_log()] starting thread (client mode): 0x2b91c340
2025-09-28T17:44:48.460 [DEBUG] [Thread-131273] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:44:48.475 [DEBUG] [Thread-131273] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:44:48.475 [INFO] [Thread-131273] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] client lang: <none>
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] server lang: <none>
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] kex follows: False
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] Compression: none
2025-09-28T17:44:48.483 [DEBUG] [Thread-131273] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:44:48.543 [DEBUG] [Thread-131273] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:44:48.543 [DEBUG] [Thread-131273] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:44:48.544 [DEBUG] [Thread-131273] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:44:48.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:44:48.544 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:44:48.599 [DEBUG] [Thread-131273] [transport.py] [_log()] userauth is OK
2025-09-28T17:44:48.599 [DEBUG] [Thread-131273] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:44:48.599 [DEBUG] [Thread-131273] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:44:48.599 [DEBUG] [Thread-131273] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:44:48.599 [DEBUG] [Thread-131273] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:44:48.618 [INFO] [Thread-131273] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:44:48.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-28T17:44:48.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:44:49.587 [DEBUG] [Thread-131273] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:44:49.587 [DEBUG] [Thread-131273] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:44:49.635 [DEBUG] [Thread-131273] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:44:49.635 [DEBUG] [Thread-131273] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:44:49.644 [DEBUG] [Thread-131273] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:44:49.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:44:49.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-28T17:44:49.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-28T17:44:49.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:44:49.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:44:49.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:44:49.678 [DEBUG] [Thread-131273] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:44:58.002 [DEBUG] [Thread-131275 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:44:59.681 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:44:59.681 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:44:59.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-28T17:45:00.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 44, 43), 13.3, 40.69, 0.0, 16.2, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:45:00.255 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:44:43
2025-09-28T17:45:00.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:45:00.509 [DEBUG] [Thread-131276] [transport.py] [_log()] starting thread (client mode): 0x2b91ff10
2025-09-28T17:45:00.509 [DEBUG] [Thread-131276] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:00.530 [DEBUG] [Thread-131276] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:45:00.530 [INFO] [Thread-131276] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:45:00.534 [DEBUG] [Thread-131276] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:00.534 [DEBUG] [Thread-131276] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] Compression: none
2025-09-28T17:45:00.535 [DEBUG] [Thread-131276] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:00.558 [DEBUG] [Thread-131276] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:00.559 [DEBUG] [Thread-131276] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:00.560 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:45:00.560 [DEBUG] [Thread-131276] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:45:00.561 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:00.562 [DEBUG] [Thread-131276] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:00.562 [DEBUG] [Thread-131276] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:00.562 [DEBUG] [Thread-131276] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:00.562 [DEBUG] [Thread-131276] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:45:00.562 [DEBUG] [Thread-131276] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:00.597 [INFO] [Thread-131276] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:00.597 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:01.183 [DEBUG] [Thread-131276] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:01.183 [DEBUG] [Thread-131276] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:01.183 [DEBUG] [Thread-131276] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:45:01.224 [DEBUG] [Thread-131276] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:01.224 [DEBUG] [Thread-131276] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:01.226 [DEBUG] [Thread-131276] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:01.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:01.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:45:01.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:45:01.239 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:45:01.240 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:01.242 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:45:01.243 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655983 -999.00  +15.50  17.30     45   +3.80 1 1 1 1 1   887    0 11.10 -21.50 ----- 17.3 17.3 198.2 20.8 18.8 -27.6 18.6 -26.1 19.8 -26.8 20.3 -28.3
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655983
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:45:01.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:44:43', tmtdew=13.3, humidity=40.69, cloud=0.0, wind=16.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:44:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:45:01.246 [DEBUG] [Thread-131276] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:01.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-28T17:45:01.329 [DEBUG] [Thread-131279] [transport.py] [_log()] starting thread (client mode): 0x2b9979a0
2025-09-28T17:45:01.329 [DEBUG] [Thread-131279] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:01.344 [DEBUG] [Thread-131279] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:45:01.344 [INFO] [Thread-131279] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] Compression: none
2025-09-28T17:45:01.352 [DEBUG] [Thread-131279] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:01.409 [DEBUG] [Thread-131279] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:01.409 [DEBUG] [Thread-131279] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:01.410 [DEBUG] [Thread-131279] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:45:01.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:45:01.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:01.466 [DEBUG] [Thread-131279] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:01.466 [DEBUG] [Thread-131279] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:01.466 [DEBUG] [Thread-131279] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:01.466 [DEBUG] [Thread-131279] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:45:01.466 [DEBUG] [Thread-131279] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:01.482 [INFO] [Thread-131279] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:01.482 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:45:01.482 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:02.568 [DEBUG] [Thread-131279] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:02.568 [DEBUG] [Thread-131279] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:02.616 [DEBUG] [Thread-131279] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:02.616 [DEBUG] [Thread-131279] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:02.625 [DEBUG] [Thread-131279] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:02.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:02.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-28T17:45:02.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') -> 00000000
2025-09-28T17:45:02.651 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:02.651 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:02.652 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:02.660 [DEBUG] [Thread-131279] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:12.662 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:45:12.662 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:45:12.665 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:45:13.047 [DEBUG] [Thread-131281 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:13.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 44, 43), 13.3, 40.69, 0.0, 16.2, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:45:13.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:44:43
2025-09-28T17:45:13.340 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:45:13.488 [DEBUG] [Thread-131282] [transport.py] [_log()] starting thread (client mode): 0x2b91ee60
2025-09-28T17:45:13.488 [DEBUG] [Thread-131282] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:13.507 [DEBUG] [Thread-131282] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:45:13.507 [INFO] [Thread-131282] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:45:13.510 [DEBUG] [Thread-131282] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] Compression: none
2025-09-28T17:45:13.511 [DEBUG] [Thread-131282] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:13.529 [DEBUG] [Thread-131282] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:13.530 [DEBUG] [Thread-131282] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:13.530 [DEBUG] [Thread-131282] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:45:13.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:45:13.531 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:13.532 [DEBUG] [Thread-131282] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:13.532 [DEBUG] [Thread-131282] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:13.532 [DEBUG] [Thread-131282] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:13.532 [DEBUG] [Thread-131282] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:45:13.533 [DEBUG] [Thread-131282] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:13.567 [INFO] [Thread-131282] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:13.568 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:14.953 [DEBUG] [Thread-131282] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:14.953 [DEBUG] [Thread-131282] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:14.953 [DEBUG] [Thread-131282] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:45:14.994 [DEBUG] [Thread-131282] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:14.995 [DEBUG] [Thread-131282] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:14.998 [DEBUG] [Thread-131282] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:15.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:15.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:45:15.010 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:45:15.012 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:45:15.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:15.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:45:15.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:15.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.655983 -999.00  +15.50  17.30     45   +3.80 1 1 1 1 1   887    0 11.10 -21.50 ----- 17.3 17.3 198.2 20.8 18.8 -27.6 18.6 -26.1 19.8 -26.8 20.3 -28.3
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.655983
2025-09-28T17:45:15.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:45:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:45:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:45:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:45:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:45:15.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:44:43', tmtdew=13.3, humidity=40.69, cloud=0.0, wind=16.2, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:44:36.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:45:15.070 [DEBUG] [Thread-131282] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:15.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-28T17:45:15.165 [DEBUG] [Thread-131285] [transport.py] [_log()] starting thread (client mode): 0x2b9def50
2025-09-28T17:45:15.165 [DEBUG] [Thread-131285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:15.181 [DEBUG] [Thread-131285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:45:15.181 [INFO] [Thread-131285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:15.188 [DEBUG] [Thread-131285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] Compression: none
2025-09-28T17:45:15.189 [DEBUG] [Thread-131285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:15.246 [DEBUG] [Thread-131285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:15.246 [DEBUG] [Thread-131285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:15.247 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:45:15.247 [DEBUG] [Thread-131285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:45:15.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:15.302 [DEBUG] [Thread-131285] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:15.302 [DEBUG] [Thread-131285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:15.302 [DEBUG] [Thread-131285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:15.302 [DEBUG] [Thread-131285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:45:15.303 [DEBUG] [Thread-131285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:15.320 [INFO] [Thread-131285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:15.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-28T17:45:15.321 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:16.298 [DEBUG] [Thread-131285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:16.298 [DEBUG] [Thread-131285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:16.346 [DEBUG] [Thread-131285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:16.346 [DEBUG] [Thread-131285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:16.354 [DEBUG] [Thread-131285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:16.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:16.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-28T17:45:16.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-28T17:45:16.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:16.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:16.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:16.385 [DEBUG] [Thread-131285] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:24.899 [DEBUG] [Thread-131287 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:26.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:45:26.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:45:26.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:45:26.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 45, 15), 13.3, 40.69, 0.0, 16.78, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:45:26.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:45:15
2025-09-28T17:45:27.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:45:27.229 [DEBUG] [Thread-131288] [transport.py] [_log()] starting thread (client mode): 0x2b9957e0
2025-09-28T17:45:27.229 [DEBUG] [Thread-131288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:27.250 [DEBUG] [Thread-131288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:45:27.251 [INFO] [Thread-131288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:45:27.253 [DEBUG] [Thread-131288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:27.254 [DEBUG] [Thread-131288] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] Compression: none
2025-09-28T17:45:27.255 [DEBUG] [Thread-131288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:27.271 [DEBUG] [Thread-131288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:27.271 [DEBUG] [Thread-131288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:27.272 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:45:27.272 [DEBUG] [Thread-131288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:45:27.273 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:27.274 [DEBUG] [Thread-131288] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:27.275 [DEBUG] [Thread-131288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:27.275 [DEBUG] [Thread-131288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:27.275 [DEBUG] [Thread-131288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:45:27.275 [DEBUG] [Thread-131288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:27.293 [INFO] [Thread-131288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:27.293 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:27.871 [DEBUG] [Thread-131288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:27.871 [DEBUG] [Thread-131288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:27.871 [DEBUG] [Thread-131288] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:45:27.912 [DEBUG] [Thread-131288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:27.912 [DEBUG] [Thread-131288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:27.914 [DEBUG] [Thread-131288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:27.928 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:27.928 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:45:27.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:45:27.930 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:45:27.933 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:27.935 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:45:27.935 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.656330 -999.00  +15.50  11.46     45   +3.80 1 1 1 1 1   887    0 11.31 -20.98 ----- 11.5 11.5 210.9 25.4 18.8 -27.3 18.6 -26.0 19.7 -26.2 20.2 -28.2
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:45:27.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.656330
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:45:27.936 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:45:15', tmtdew=13.3, humidity=40.69, cloud=0.0, wind=16.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:45:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:45:27.936 [DEBUG] [Thread-131288] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:28.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-28T17:45:28.025 [DEBUG] [Thread-131291] [transport.py] [_log()] starting thread (client mode): 0x2b91cb50
2025-09-28T17:45:28.025 [DEBUG] [Thread-131291] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:28.039 [DEBUG] [Thread-131291] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:45:28.039 [INFO] [Thread-131291] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] Compression: none
2025-09-28T17:45:28.047 [DEBUG] [Thread-131291] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:28.078 [DEBUG] [Thread-131293 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:28.105 [DEBUG] [Thread-131291] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:28.106 [DEBUG] [Thread-131291] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:28.106 [DEBUG] [Thread-131291] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:45:28.106 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:45:28.107 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:28.161 [DEBUG] [Thread-131291] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:28.162 [DEBUG] [Thread-131291] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:28.162 [DEBUG] [Thread-131291] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:28.162 [DEBUG] [Thread-131291] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:45:28.162 [DEBUG] [Thread-131291] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:28.180 [INFO] [Thread-131291] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:28.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-28T17:45:28.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:29.146 [DEBUG] [Thread-131291] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:29.147 [DEBUG] [Thread-131291] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:29.194 [DEBUG] [Thread-131291] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:29.194 [DEBUG] [Thread-131291] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:29.203 [DEBUG] [Thread-131291] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:29.212 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:29.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-28T17:45:29.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-28T17:45:29.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:29.231 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:29.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:29.239 [DEBUG] [Thread-131291] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:31.468 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:31.469 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:39.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:45:39.242 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:45:39.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-28T17:45:39.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 45, 15), 13.3, 40.69, 0.0, 16.78, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:45:39.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:45:15
2025-09-28T17:45:39.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:45:40.069 [DEBUG] [Thread-131294] [transport.py] [_log()] starting thread (client mode): 0x2e3c1c60
2025-09-28T17:45:40.069 [DEBUG] [Thread-131294] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:40.090 [DEBUG] [Thread-131294] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:45:40.090 [INFO] [Thread-131294] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:45:40.091 [DEBUG] [Thread-131294] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:40.091 [DEBUG] [Thread-131294] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:45:40.091 [DEBUG] [Thread-131294] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:40.091 [DEBUG] [Thread-131294] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] Compression: none
2025-09-28T17:45:40.092 [DEBUG] [Thread-131294] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:40.100 [DEBUG] [Thread-131294] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:40.100 [DEBUG] [Thread-131294] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:40.101 [DEBUG] [Thread-131294] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:45:40.101 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:45:40.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:40.103 [DEBUG] [Thread-131294] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:40.103 [DEBUG] [Thread-131294] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:40.103 [DEBUG] [Thread-131294] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:40.103 [DEBUG] [Thread-131294] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:45:40.103 [DEBUG] [Thread-131294] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:40.138 [INFO] [Thread-131294] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:40.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:41.885 [DEBUG] [Thread-131294] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:41.885 [DEBUG] [Thread-131294] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:41.886 [DEBUG] [Thread-131294] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:45:41.926 [DEBUG] [Thread-131294] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:41.926 [DEBUG] [Thread-131294] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:41.929 [DEBUG] [Thread-131294] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:41.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:41.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:45:41.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:45:41.946 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:45:41.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:41.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:45:41.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:41.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:45:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.656330 -999.00  +15.50  11.46     45   +3.80 1 1 1 1 1   887    0 11.31 -20.98 ----- 11.5 11.5 210.9 25.4 18.8 -27.3 18.6 -26.0 19.7 -26.2 20.2 -28.2
2025-09-28T17:45:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:45:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:45:41.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.656330
2025-09-28T17:45:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:45:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:45:41.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:45:41.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:45:41.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:45:41.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:45:15', tmtdew=13.3, humidity=40.69, cloud=0.0, wind=16.78, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:45:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:45:41.956 [DEBUG] [Thread-131294] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:42.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-28T17:45:42.055 [DEBUG] [Thread-131297] [transport.py] [_log()] starting thread (client mode): 0x2b9b8a00
2025-09-28T17:45:42.055 [DEBUG] [Thread-131297] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:42.070 [DEBUG] [Thread-131297] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:45:42.070 [INFO] [Thread-131297] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:45:42.078 [DEBUG] [Thread-131297] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:42.078 [DEBUG] [Thread-131297] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:45:42.078 [DEBUG] [Thread-131297] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:42.078 [DEBUG] [Thread-131297] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:42.079 [DEBUG] [Thread-131297] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] Compression: none
2025-09-28T17:45:42.080 [DEBUG] [Thread-131297] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:42.137 [DEBUG] [Thread-131297] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:42.137 [DEBUG] [Thread-131297] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:42.138 [DEBUG] [Thread-131297] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:45:42.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:45:42.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:42.193 [DEBUG] [Thread-131297] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:42.193 [DEBUG] [Thread-131297] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:42.193 [DEBUG] [Thread-131297] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:42.194 [DEBUG] [Thread-131297] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:45:42.194 [DEBUG] [Thread-131297] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:42.215 [INFO] [Thread-131297] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:42.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-28T17:45:42.216 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:43.120 [DEBUG] [Thread-131299 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:45:43.167 [DEBUG] [Thread-131297] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:43.167 [DEBUG] [Thread-131297] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:43.215 [DEBUG] [Thread-131297] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:43.215 [DEBUG] [Thread-131297] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:43.227 [DEBUG] [Thread-131297] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:43.237 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:43.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-28T17:45:43.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-28T17:45:43.255 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:43.255 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:43.256 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:43.263 [DEBUG] [Thread-131297] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:53.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:45:53.266 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:45:53.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-28T17:45:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 45, 47), 13.31, 40.52, 0.0, 19.71, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:45:53.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:45:47
2025-09-28T17:45:53.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:45:54.101 [DEBUG] [Thread-131300] [transport.py] [_log()] starting thread (client mode): 0x2b9bb010
2025-09-28T17:45:54.101 [DEBUG] [Thread-131300] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:54.120 [DEBUG] [Thread-131300] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:45:54.120 [INFO] [Thread-131300] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:54.122 [DEBUG] [Thread-131300] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] Compression: none
2025-09-28T17:45:54.123 [DEBUG] [Thread-131300] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:54.136 [DEBUG] [Thread-131300] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:54.137 [DEBUG] [Thread-131300] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:54.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:45:54.138 [DEBUG] [Thread-131300] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:45:54.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:54.140 [DEBUG] [Thread-131300] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:54.140 [DEBUG] [Thread-131300] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:54.140 [DEBUG] [Thread-131300] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:54.140 [DEBUG] [Thread-131300] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:45:54.140 [DEBUG] [Thread-131300] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:54.165 [INFO] [Thread-131300] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:54.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:54.767 [DEBUG] [Thread-131300] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:54.767 [DEBUG] [Thread-131300] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:54.767 [DEBUG] [Thread-131300] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:45:54.808 [DEBUG] [Thread-131300] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:54.808 [DEBUG] [Thread-131300] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:54.811 [DEBUG] [Thread-131300] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:54.817 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:54.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:45:54.819 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:45:54.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:45:54.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:54.827 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:45:54.827 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:54.828 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:54.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:45:54.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.656677 -999.00  +15.50   9.45     45   +3.80 1 1 1 1 1   887    0 11.33 -19.47 ----- 9.4 9.4 212.4 15.3 18.8 -26.9 18.6 -26.3 19.8 -26.6 20.3 -27.1
2025-09-28T17:45:54.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:45:54.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:45:54.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.656677
2025-09-28T17:45:54.829 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:45:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:45:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:45:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:45:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:45:54.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:45:47', tmtdew=13.31, humidity=40.52, cloud=0.0, wind=19.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:45:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:45:54.830 [DEBUG] [Thread-131300] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:54.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-28T17:45:54.923 [DEBUG] [Thread-131303] [transport.py] [_log()] starting thread (client mode): 0x2b9946d0
2025-09-28T17:45:54.924 [DEBUG] [Thread-131303] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:45:54.938 [DEBUG] [Thread-131303] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:45:54.938 [INFO] [Thread-131303] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:45:54.945 [DEBUG] [Thread-131303] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:45:54.945 [DEBUG] [Thread-131303] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] client lang: <none>
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] server lang: <none>
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] kex follows: False
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] Compression: none
2025-09-28T17:45:54.946 [DEBUG] [Thread-131303] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:45:55.004 [DEBUG] [Thread-131303] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:45:55.005 [DEBUG] [Thread-131303] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:45:55.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:45:55.006 [DEBUG] [Thread-131303] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:45:55.007 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:45:55.060 [DEBUG] [Thread-131303] [transport.py] [_log()] userauth is OK
2025-09-28T17:45:55.060 [DEBUG] [Thread-131303] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:45:55.060 [DEBUG] [Thread-131303] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:45:55.060 [DEBUG] [Thread-131303] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:45:55.060 [DEBUG] [Thread-131303] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:45:55.075 [INFO] [Thread-131303] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:45:55.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-28T17:45:55.075 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:45:56.037 [DEBUG] [Thread-131303] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:45:56.037 [DEBUG] [Thread-131303] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:45:56.085 [DEBUG] [Thread-131303] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:45:56.085 [DEBUG] [Thread-131303] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:45:56.094 [DEBUG] [Thread-131303] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:45:56.103 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:45:56.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-28T17:45:56.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-28T17:45:56.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:45:56.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:45:56.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:45:56.128 [DEBUG] [Thread-131303] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:45:58.150 [DEBUG] [Thread-131305 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:06.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:46:06.131 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:46:06.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:46:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 45, 47), 13.31, 40.52, 0.0, 19.71, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:46:06.693 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:45:47
2025-09-28T17:46:06.803 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:46:06.952 [DEBUG] [Thread-131306] [transport.py] [_log()] starting thread (client mode): 0x2b9df400
2025-09-28T17:46:06.952 [DEBUG] [Thread-131306] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:46:06.972 [DEBUG] [Thread-131306] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:46:06.972 [INFO] [Thread-131306] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:06.975 [DEBUG] [Thread-131306] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] client lang: <none>
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] server lang: <none>
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] kex follows: False
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] Compression: none
2025-09-28T17:46:06.976 [DEBUG] [Thread-131306] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:46:06.986 [DEBUG] [Thread-131306] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:46:06.986 [DEBUG] [Thread-131306] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:46:06.987 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:46:06.987 [DEBUG] [Thread-131306] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:46:06.988 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:46:06.989 [DEBUG] [Thread-131306] [transport.py] [_log()] userauth is OK
2025-09-28T17:46:06.989 [DEBUG] [Thread-131306] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:46:06.989 [DEBUG] [Thread-131306] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:46:06.989 [DEBUG] [Thread-131306] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:46:06.989 [DEBUG] [Thread-131306] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:46:07.007 [INFO] [Thread-131306] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:46:07.008 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:46:07.791 [DEBUG] [Thread-131306] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:46:07.791 [DEBUG] [Thread-131306] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:46:07.792 [DEBUG] [Thread-131306] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:46:07.832 [DEBUG] [Thread-131306] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:46:07.832 [DEBUG] [Thread-131306] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:46:07.835 [DEBUG] [Thread-131306] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:46:07.843 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:46:07.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:46:07.844 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:46:07.845 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:46:07.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:46:07.848 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:46:07.848 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:46:07.848 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.656677 -999.00  +15.50   9.45     45   +3.80 1 1 1 1 1   887    0 11.33 -19.47 ----- 9.4 9.4 212.4 15.3 18.8 -26.9 18.6 -26.3 19.8 -26.6 20.3 -27.1
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.656677
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:46:07.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:45:47', tmtdew=13.31, humidity=40.52, cloud=0.0, wind=19.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:45:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:46:07.850 [DEBUG] [Thread-131306] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:46:07.924 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:46:07.936 [DEBUG] [Thread-131309] [transport.py] [_log()] starting thread (client mode): 0x2b9dd120
2025-09-28T17:46:07.936 [DEBUG] [Thread-131309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:46:07.951 [DEBUG] [Thread-131309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:46:07.951 [INFO] [Thread-131309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:07.958 [DEBUG] [Thread-131309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] client lang: <none>
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] server lang: <none>
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] kex follows: False
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] Compression: none
2025-09-28T17:46:07.959 [DEBUG] [Thread-131309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:46:08.020 [DEBUG] [Thread-131309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:46:08.020 [DEBUG] [Thread-131309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:46:08.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:46:08.021 [DEBUG] [Thread-131309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:46:08.021 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:46:08.076 [DEBUG] [Thread-131309] [transport.py] [_log()] userauth is OK
2025-09-28T17:46:08.076 [DEBUG] [Thread-131309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:46:08.076 [DEBUG] [Thread-131309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:46:08.076 [DEBUG] [Thread-131309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:46:08.076 [DEBUG] [Thread-131309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:46:08.090 [INFO] [Thread-131309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:46:08.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-28T17:46:08.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:46:09.061 [DEBUG] [Thread-131309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:46:09.061 [DEBUG] [Thread-131309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:46:09.109 [DEBUG] [Thread-131309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:46:09.109 [DEBUG] [Thread-131309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:46:09.117 [DEBUG] [Thread-131309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:46:09.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:46:09.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-28T17:46:09.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-28T17:46:09.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:46:09.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:46:09.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:46:09.148 [DEBUG] [Thread-131309] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:46:13.203 [DEBUG] [Thread-131311 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:19.151 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:46:19.151 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:46:19.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-28T17:46:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 45, 47), 13.31, 40.52, 0.0, 19.71, 15.37, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:46:19.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:45:47
2025-09-28T17:46:19.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:46:19.985 [DEBUG] [Thread-131312] [transport.py] [_log()] starting thread (client mode): 0x2b997670
2025-09-28T17:46:19.985 [DEBUG] [Thread-131312] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:46:20.005 [DEBUG] [Thread-131312] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:46:20.005 [INFO] [Thread-131312] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] client lang: <none>
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] server lang: <none>
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] kex follows: False
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] Compression: none
2025-09-28T17:46:20.009 [DEBUG] [Thread-131312] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:46:20.016 [DEBUG] [Thread-131312] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:46:20.016 [DEBUG] [Thread-131312] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:46:20.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:46:20.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] userauth is OK
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:46:20.017 [DEBUG] [Thread-131312] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:46:20.043 [INFO] [Thread-131312] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:46:20.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:46:20.776 [DEBUG] [Thread-131312] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:46:20.776 [DEBUG] [Thread-131312] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:46:20.776 [DEBUG] [Thread-131312] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:46:20.817 [DEBUG] [Thread-131312] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:46:20.817 [DEBUG] [Thread-131312] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:46:20.819 [DEBUG] [Thread-131312] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:46:20.832 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:46:20.832 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:46:20.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:46:20.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:46:20.837 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:46:20.837 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:46:20.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:46:20.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.656677 -999.00  +15.50   9.45     45   +3.80 1 1 1 1 1   887    0 11.33 -19.47 ----- 9.4 9.4 212.4 15.3 18.8 -26.9 18.6 -26.3 19.8 -26.6 20.3 -27.1
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.656677
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:46:20.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:45:47', tmtdew=13.31, humidity=40.52, cloud=0.0, wind=19.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:45:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:46:20.838 [DEBUG] [Thread-131312] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:46:20.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:46:24.953 [DEBUG] [Thread-131315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:28.235 [DEBUG] [Thread-131316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:31.612 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:31.613 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:43.266 [DEBUG] [Thread-131317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:46:58.298 [DEBUG] [Thread-131318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:13.328 [DEBUG] [Thread-131319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:25.002 [DEBUG] [Thread-131320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:28.356 [DEBUG] [Thread-131321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:31.753 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:31.754 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:43.383 [DEBUG] [Thread-131322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:47:58.415 [DEBUG] [Thread-131323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:13.443 [DEBUG] [Thread-131324 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:25.058 [DEBUG] [Thread-131325 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:28.474 [DEBUG] [Thread-131326 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:31.895 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:31.897 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:36.154 [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-28T17:48:43.499 [DEBUG] [Thread-131327 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:46.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:48:46.165 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:48:46.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-28T17:48:46.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 48, 27), 13.07, 41.55, 0.0, 19.36, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:48:46.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:48:27
2025-09-28T17:48:46.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:48:47.021 [DEBUG] [Thread-131328] [transport.py] [_log()] starting thread (client mode): 0x2b9ddbd0
2025-09-28T17:48:47.022 [DEBUG] [Thread-131328] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:48:47.042 [DEBUG] [Thread-131328] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:48:47.042 [INFO] [Thread-131328] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:48:47.045 [DEBUG] [Thread-131328] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] client lang: <none>
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] server lang: <none>
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] kex follows: False
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] Compression: none
2025-09-28T17:48:47.046 [DEBUG] [Thread-131328] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:48:47.062 [DEBUG] [Thread-131328] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:48:47.062 [DEBUG] [Thread-131328] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:48:47.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:48:47.063 [DEBUG] [Thread-131328] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:48:47.063 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:48:47.064 [DEBUG] [Thread-131328] [transport.py] [_log()] userauth is OK
2025-09-28T17:48:47.064 [DEBUG] [Thread-131328] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:48:47.065 [DEBUG] [Thread-131328] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:48:47.065 [DEBUG] [Thread-131328] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:48:47.065 [DEBUG] [Thread-131328] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:48:47.085 [INFO] [Thread-131328] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:48:47.085 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:48:47.723 [DEBUG] [Thread-131328] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:48:47.723 [DEBUG] [Thread-131328] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:48:47.724 [DEBUG] [Thread-131328] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:48:47.764 [DEBUG] [Thread-131328] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:48:47.765 [DEBUG] [Thread-131328] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:48:47.767 [DEBUG] [Thread-131328] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:48:47.780 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:48:47.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:48:47.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:48:47.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:48:47.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:48:47.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:48:47.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:48:47.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:48:47.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:48:47.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.658413 -999.00  +15.50  16.06     46   +4.10 1 1 1 1 1   887    0 11.04 -20.18 ----- 16.1 16.1 216.0 22.5 18.7 -27.6 18.5 -26.2 19.5 -25.9 20.1 -27.9
2025-09-28T17:48:47.792 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:48:47.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:48:47.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.658413
2025-09-28T17:48:47.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:48:47.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:48:47.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:48:47.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:48:47.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:48:47.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:48:27', tmtdew=13.07, humidity=41.55, cloud=0.0, wind=19.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:48:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:48:47.794 [DEBUG] [Thread-131328] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:48:47.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-28T17:48:47.889 [DEBUG] [Thread-131331] [transport.py] [_log()] starting thread (client mode): 0x2b9bace0
2025-09-28T17:48:47.889 [DEBUG] [Thread-131331] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:48:47.906 [DEBUG] [Thread-131331] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:48:47.906 [INFO] [Thread-131331] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] client lang: <none>
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] server lang: <none>
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] kex follows: False
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:48:47.914 [DEBUG] [Thread-131331] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:48:47.915 [DEBUG] [Thread-131331] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:48:47.915 [DEBUG] [Thread-131331] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:48:47.915 [DEBUG] [Thread-131331] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:48:47.915 [DEBUG] [Thread-131331] [transport.py] [_log()] Compression: none
2025-09-28T17:48:47.915 [DEBUG] [Thread-131331] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:48:47.976 [DEBUG] [Thread-131331] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:48:47.976 [DEBUG] [Thread-131331] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:48:47.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:48:47.977 [DEBUG] [Thread-131331] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:48:47.977 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:48:48.036 [DEBUG] [Thread-131331] [transport.py] [_log()] userauth is OK
2025-09-28T17:48:48.036 [DEBUG] [Thread-131331] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:48:48.036 [DEBUG] [Thread-131331] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:48:48.036 [DEBUG] [Thread-131331] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:48:48.036 [DEBUG] [Thread-131331] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:48:48.056 [INFO] [Thread-131331] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:48:48.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-28T17:48:48.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:48:49.044 [DEBUG] [Thread-131331] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:48:49.044 [DEBUG] [Thread-131331] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:48:49.092 [DEBUG] [Thread-131331] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:48:49.092 [DEBUG] [Thread-131331] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:48:49.101 [DEBUG] [Thread-131331] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:48:49.110 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:48:49.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')
2025-09-28T17:48:49.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-28T17:48:49.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:48:49.133 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:48:49.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:48:49.144 [DEBUG] [Thread-131331] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:48:58.527 [DEBUG] [Thread-131333 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:48:59.141 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:48:59.142 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:48:59.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-28T17:48:59.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 48, 27), 13.07, 41.55, 0.0, 19.36, 15.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:48:59.779 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:48:27
2025-09-28T17:48:59.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:49:00.047 [DEBUG] [Thread-131334] [transport.py] [_log()] starting thread (client mode): 0x2b9dec80
2025-09-28T17:49:00.048 [DEBUG] [Thread-131334] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:49:00.068 [DEBUG] [Thread-131334] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:49:00.068 [INFO] [Thread-131334] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] client lang: <none>
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] server lang: <none>
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] kex follows: False
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] Compression: none
2025-09-28T17:49:00.071 [DEBUG] [Thread-131334] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:49:00.085 [DEBUG] [Thread-131334] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:49:00.085 [DEBUG] [Thread-131334] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:49:00.085 [DEBUG] [Thread-131334] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:49:00.085 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:49:00.086 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:49:00.086 [DEBUG] [Thread-131334] [transport.py] [_log()] userauth is OK
2025-09-28T17:49:00.086 [DEBUG] [Thread-131334] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:49:00.086 [DEBUG] [Thread-131334] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:49:00.086 [DEBUG] [Thread-131334] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:49:00.086 [DEBUG] [Thread-131334] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:49:00.095 [INFO] [Thread-131334] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:49:00.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:49:00.717 [DEBUG] [Thread-131334] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:49:00.717 [DEBUG] [Thread-131334] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:49:00.717 [DEBUG] [Thread-131334] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:49:00.758 [DEBUG] [Thread-131334] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:49:00.758 [DEBUG] [Thread-131334] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:49:00.760 [DEBUG] [Thread-131334] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:49:00.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:49:00.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:49:00.773 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:49:00.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:49:00.777 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:49:00.778 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:49:00.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.658413 -999.00  +15.50  16.06     46   +4.10 1 1 1 1 1   887    0 11.04 -20.18 ----- 16.1 16.1 216.0 22.5 18.7 -27.6 18.5 -26.2 19.5 -25.9 20.1 -27.9
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.658413
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:49:00.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:48:27', tmtdew=13.07, humidity=41.55, cloud=0.0, wind=19.36, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:48:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:49:00.779 [DEBUG] [Thread-131334] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:49:00.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-28T17:49:00.862 [DEBUG] [Thread-131337] [transport.py] [_log()] starting thread (client mode): 0x2b9dd840
2025-09-28T17:49:00.862 [DEBUG] [Thread-131337] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:49:00.877 [DEBUG] [Thread-131337] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:49:00.877 [INFO] [Thread-131337] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] client lang: <none>
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] server lang: <none>
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] kex follows: False
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] Compression: none
2025-09-28T17:49:00.885 [DEBUG] [Thread-131337] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:49:00.943 [DEBUG] [Thread-131337] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:49:00.943 [DEBUG] [Thread-131337] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:49:00.943 [DEBUG] [Thread-131337] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:49:00.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:49:00.943 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:49:01.000 [DEBUG] [Thread-131337] [transport.py] [_log()] userauth is OK
2025-09-28T17:49:01.000 [DEBUG] [Thread-131337] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:49:01.000 [DEBUG] [Thread-131337] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:49:01.000 [DEBUG] [Thread-131337] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:49:01.000 [DEBUG] [Thread-131337] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:49:01.014 [INFO] [Thread-131337] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:49:01.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-28T17:49:01.014 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:49:01.982 [DEBUG] [Thread-131337] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:49:01.982 [DEBUG] [Thread-131337] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:49:02.030 [DEBUG] [Thread-131337] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:49:02.030 [DEBUG] [Thread-131337] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:49:02.039 [DEBUG] [Thread-131337] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:49:02.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:49:02.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-28T17:49:02.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-28T17:49:02.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:49:02.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:49:02.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:49:02.074 [DEBUG] [Thread-131337] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:49:12.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:49:12.069 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:49:12.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-28T17:49:12.682 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 48, 59), 12.97, 41.68, 0.0, 19.64, 15.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:49:12.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:48:59
2025-09-28T17:49:12.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:49:12.941 [DEBUG] [Thread-131339] [transport.py] [_log()] starting thread (client mode): 0x2b9ba290
2025-09-28T17:49:12.941 [DEBUG] [Thread-131339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:49:12.961 [DEBUG] [Thread-131339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:49:12.961 [INFO] [Thread-131339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] client lang: <none>
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] server lang: <none>
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] kex follows: False
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] Compression: none
2025-09-28T17:49:12.964 [DEBUG] [Thread-131339] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:49:12.981 [DEBUG] [Thread-131339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:49:12.981 [DEBUG] [Thread-131339] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:49:12.982 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:49:12.982 [DEBUG] [Thread-131339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:49:12.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:49:12.984 [DEBUG] [Thread-131339] [transport.py] [_log()] userauth is OK
2025-09-28T17:49:12.985 [DEBUG] [Thread-131339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:49:12.985 [DEBUG] [Thread-131339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:49:12.985 [DEBUG] [Thread-131339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:49:12.985 [DEBUG] [Thread-131339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:49:13.002 [INFO] [Thread-131339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:49:13.003 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:49:13.575 [DEBUG] [Thread-131341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:13.602 [DEBUG] [Thread-131339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:49:13.602 [DEBUG] [Thread-131339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:49:13.602 [DEBUG] [Thread-131339] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:49:13.642 [DEBUG] [Thread-131339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:49:13.642 [DEBUG] [Thread-131339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:49:13.645 [DEBUG] [Thread-131339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:49:13.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:49:13.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:49:13.660 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:49:13.662 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:49:13.667 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:49:13.669 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:49:13.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:49:13.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:49:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:49:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.659108 -999.00  +15.40   9.71     46   +4.10 1 1 1 1 1   887    0 11.04 -24.47 ----- 9.7 9.7 201.0 20.7 18.6 -27.0 18.4 -25.5 19.5 -26.1 20.0 -28.0
2025-09-28T17:49:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:49:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:49:13.670 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.659108
2025-09-28T17:49:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:49:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:49:13.671 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:49:13.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:49:13.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:49:13.672 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:48:59', tmtdew=12.97, humidity=41.68, cloud=0.0, wind=19.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:49:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:49:13.672 [DEBUG] [Thread-131339] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:49:13.757 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:49:25.113 [DEBUG] [Thread-131343 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:28.603 [DEBUG] [Thread-131344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:32.037 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:32.038 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:43.651 [DEBUG] [Thread-131345 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:49:58.679 [DEBUG] [Thread-131346 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:13.704 [DEBUG] [Thread-131347 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:25.161 [DEBUG] [Thread-131348 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:28.733 [DEBUG] [Thread-131349 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:32.180 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:32.181 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:43.760 [DEBUG] [Thread-131350 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:50:58.793 [DEBUG] [Thread-131351 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:13.820 [DEBUG] [Thread-131352 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:25.216 [DEBUG] [Thread-131353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:28.187 [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-28T17:51:28.850 [DEBUG] [Thread-131354 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:32.325 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:32.326 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:38.187 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:51:38.188 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:51:38.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-28T17:51:38.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 51, 7), 12.5, 42.81, 0.0, 19.71, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:51:38.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:51:07
2025-09-28T17:51:38.899 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:51:39.047 [DEBUG] [Thread-131355] [transport.py] [_log()] starting thread (client mode): 0x2e363550
2025-09-28T17:51:39.047 [DEBUG] [Thread-131355] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:51:39.069 [DEBUG] [Thread-131355] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:51:39.069 [INFO] [Thread-131355] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] client lang: <none>
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] server lang: <none>
2025-09-28T17:51:39.072 [DEBUG] [Thread-131355] [transport.py] [_log()] kex follows: False
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] Compression: none
2025-09-28T17:51:39.073 [DEBUG] [Thread-131355] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:51:39.090 [DEBUG] [Thread-131355] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:51:39.091 [DEBUG] [Thread-131355] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:51:39.091 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:51:39.092 [DEBUG] [Thread-131355] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:51:39.093 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:51:39.094 [DEBUG] [Thread-131355] [transport.py] [_log()] userauth is OK
2025-09-28T17:51:39.094 [DEBUG] [Thread-131355] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:51:39.094 [DEBUG] [Thread-131355] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:51:39.094 [DEBUG] [Thread-131355] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:51:39.094 [DEBUG] [Thread-131355] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:51:39.119 [INFO] [Thread-131355] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:51:39.120 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:51:39.742 [DEBUG] [Thread-131355] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:51:39.743 [DEBUG] [Thread-131355] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:51:39.743 [DEBUG] [Thread-131355] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:51:39.784 [DEBUG] [Thread-131355] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:51:39.784 [DEBUG] [Thread-131355] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:51:39.786 [DEBUG] [Thread-131355] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:51:39.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:51:39.798 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:51:39.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:51:39.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:51:39.804 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:51:39.804 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:51:39.804 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:51:39.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.660497 -999.00  +15.20  10.77     47   +4.20 1 1 1 1 1   887    0 10.61 -34.41 ----- 10.8 10.8 204.8 20.8 18.4 -27.1 18.2 -26.5 19.2 -26.0 19.7 -28.0
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.660497
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:51:39.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:51:07', tmtdew=12.5, humidity=42.81, cloud=0.0, wind=19.71, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:51:06.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:51:39.806 [DEBUG] [Thread-131355] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:51:39.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-28T17:51:39.890 [DEBUG] [Thread-131358] [transport.py] [_log()] starting thread (client mode): 0x2b9944f0
2025-09-28T17:51:39.890 [DEBUG] [Thread-131358] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:51:39.905 [DEBUG] [Thread-131358] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:51:39.905 [INFO] [Thread-131358] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:39.912 [DEBUG] [Thread-131358] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] client lang: <none>
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] server lang: <none>
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] kex follows: False
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] Compression: none
2025-09-28T17:51:39.913 [DEBUG] [Thread-131358] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:51:39.971 [DEBUG] [Thread-131358] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:51:39.971 [DEBUG] [Thread-131358] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:51:39.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:51:39.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:51:39.972 [DEBUG] [Thread-131358] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:51:40.028 [DEBUG] [Thread-131358] [transport.py] [_log()] userauth is OK
2025-09-28T17:51:40.028 [DEBUG] [Thread-131358] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:51:40.028 [DEBUG] [Thread-131358] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:51:40.028 [DEBUG] [Thread-131358] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:51:40.028 [DEBUG] [Thread-131358] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:51:40.045 [INFO] [Thread-131358] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:51:40.045 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:51:40.045 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:51:41.110 [DEBUG] [Thread-131358] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:51:41.111 [DEBUG] [Thread-131358] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:51:41.158 [DEBUG] [Thread-131358] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:51:41.159 [DEBUG] [Thread-131358] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:51:41.167 [DEBUG] [Thread-131358] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:51:41.174 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:51:41.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-28T17:51:41.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-28T17:51:41.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:51:41.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:51:41.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:51:41.197 [DEBUG] [Thread-131358] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:51:43.877 [DEBUG] [Thread-131360 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:51:51.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:51:51.194 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:51:51.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-28T17:51:51.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 51, 39), 12.52, 42.88, 0.0, 24.51, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:51:51.844 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:51:39
2025-09-28T17:51:51.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:51:52.112 [DEBUG] [Thread-131361] [transport.py] [_log()] starting thread (client mode): 0x2b9aae90
2025-09-28T17:51:52.113 [DEBUG] [Thread-131361] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:51:52.132 [DEBUG] [Thread-131361] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:51:52.132 [INFO] [Thread-131361] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] client lang: <none>
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] server lang: <none>
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] kex follows: False
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:51:52.134 [DEBUG] [Thread-131361] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:51:52.135 [DEBUG] [Thread-131361] [transport.py] [_log()] Compression: none
2025-09-28T17:51:52.135 [DEBUG] [Thread-131361] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:51:52.150 [DEBUG] [Thread-131361] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:51:52.150 [DEBUG] [Thread-131361] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:51:52.150 [DEBUG] [Thread-131361] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:51:52.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:51:52.150 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:51:52.151 [DEBUG] [Thread-131361] [transport.py] [_log()] userauth is OK
2025-09-28T17:51:52.151 [DEBUG] [Thread-131361] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:51:52.151 [DEBUG] [Thread-131361] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:51:52.151 [DEBUG] [Thread-131361] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:51:52.151 [DEBUG] [Thread-131361] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:51:52.160 [INFO] [Thread-131361] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:51:52.160 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:51:52.772 [DEBUG] [Thread-131361] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:51:52.772 [DEBUG] [Thread-131361] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:51:52.772 [DEBUG] [Thread-131361] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:51:52.813 [DEBUG] [Thread-131361] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:51:52.813 [DEBUG] [Thread-131361] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:51:52.815 [DEBUG] [Thread-131361] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:51:52.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:51:52.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:51:52.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:51:52.831 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:51:52.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:51:52.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:51:52.836 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.660497 -999.00  +15.20  10.77     47   +4.20 1 1 1 1 1   887    0 10.61 -34.41 ----- 10.8 10.8 204.8 20.8 18.4 -27.1 18.2 -26.5 19.2 -26.0 19.7 -28.0
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:51:52.836 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.660497
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:51:52.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:51:39', tmtdew=12.52, humidity=42.88, cloud=0.0, wind=24.51, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:51:06.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:51:52.838 [DEBUG] [Thread-131361] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:51:52.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-28T17:51:52.921 [DEBUG] [Thread-131364] [transport.py] [_log()] starting thread (client mode): 0x2e3628f0
2025-09-28T17:51:52.921 [DEBUG] [Thread-131364] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:51:52.936 [DEBUG] [Thread-131364] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:51:52.936 [INFO] [Thread-131364] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:51:52.943 [DEBUG] [Thread-131364] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:51:52.943 [DEBUG] [Thread-131364] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] client lang: <none>
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] server lang: <none>
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] kex follows: False
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] Compression: none
2025-09-28T17:51:52.944 [DEBUG] [Thread-131364] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:51:52.998 [DEBUG] [Thread-131364] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:51:52.998 [DEBUG] [Thread-131364] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:51:52.999 [DEBUG] [Thread-131364] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:51:52.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:51:52.999 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:51:53.056 [DEBUG] [Thread-131364] [transport.py] [_log()] userauth is OK
2025-09-28T17:51:53.056 [DEBUG] [Thread-131364] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:51:53.056 [DEBUG] [Thread-131364] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:51:53.056 [DEBUG] [Thread-131364] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:51:53.056 [DEBUG] [Thread-131364] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:51:53.070 [INFO] [Thread-131364] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:51:53.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-28T17:51:53.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:51:54.016 [DEBUG] [Thread-131364] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:51:54.016 [DEBUG] [Thread-131364] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:51:54.063 [DEBUG] [Thread-131364] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:51:54.064 [DEBUG] [Thread-131364] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:51:54.072 [DEBUG] [Thread-131364] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:51:54.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:51:54.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-28T17:51:54.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-28T17:51:54.095 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:51:54.095 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:51:54.095 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:51:54.103 [DEBUG] [Thread-131364] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:51:58.922 [DEBUG] [Thread-131366 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:04.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:52:04.097 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:52:04.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-28T17:52:04.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 51, 39), 12.52, 42.88, 0.0, 24.51, 15.12, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:52:04.721 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:51:39
2025-09-28T17:52:04.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:52:04.981 [DEBUG] [Thread-131367] [transport.py] [_log()] starting thread (client mode): 0x2b9aae00
2025-09-28T17:52:04.981 [DEBUG] [Thread-131367] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:05.001 [DEBUG] [Thread-131367] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:52:05.001 [INFO] [Thread-131367] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:52:05.004 [DEBUG] [Thread-131367] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:05.004 [DEBUG] [Thread-131367] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:52:05.004 [DEBUG] [Thread-131367] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] Compression: none
2025-09-28T17:52:05.005 [DEBUG] [Thread-131367] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:05.025 [DEBUG] [Thread-131367] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:05.025 [DEBUG] [Thread-131367] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:05.026 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:52:05.026 [DEBUG] [Thread-131367] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:52:05.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:05.029 [DEBUG] [Thread-131367] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:05.029 [DEBUG] [Thread-131367] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:05.029 [DEBUG] [Thread-131367] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:05.029 [DEBUG] [Thread-131367] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:52:05.029 [DEBUG] [Thread-131367] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:05.053 [INFO] [Thread-131367] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:05.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:05.690 [DEBUG] [Thread-131367] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:05.690 [DEBUG] [Thread-131367] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:05.690 [DEBUG] [Thread-131367] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:52:05.731 [DEBUG] [Thread-131367] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:05.731 [DEBUG] [Thread-131367] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:05.734 [DEBUG] [Thread-131367] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:05.746 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:05.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:52:05.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:52:05.749 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:52:05.754 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:05.755 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:52:05.756 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.660844 -999.00  +15.30  11.25     47   +4.30 1 1 1 1 1   887    0 10.63 -36.75 ----- 11.2 11.2 232.6 18.8 18.4 -26.9 18.1 -26.1 19.1 -25.8 19.7 -27.6
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:52:05.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.660844
2025-09-28T17:52:05.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:52:05.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:52:05.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:52:05.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:52:05.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:52:05.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:51:39', tmtdew=12.52, humidity=42.88, cloud=0.0, wind=24.51, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:51:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:52:05.758 [DEBUG] [Thread-131367] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:05.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-28T17:52:05.855 [DEBUG] [Thread-131370] [transport.py] [_log()] starting thread (client mode): 0x2b9aac80
2025-09-28T17:52:05.855 [DEBUG] [Thread-131370] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:05.871 [DEBUG] [Thread-131370] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:52:05.871 [INFO] [Thread-131370] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:05.880 [DEBUG] [Thread-131370] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:05.881 [DEBUG] [Thread-131370] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:05.881 [DEBUG] [Thread-131370] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:05.881 [DEBUG] [Thread-131370] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:05.881 [DEBUG] [Thread-131370] [transport.py] [_log()] Compression: none
2025-09-28T17:52:05.881 [DEBUG] [Thread-131370] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:05.939 [DEBUG] [Thread-131370] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:05.939 [DEBUG] [Thread-131370] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:05.940 [DEBUG] [Thread-131370] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:52:05.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:52:05.941 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:05.996 [DEBUG] [Thread-131370] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:05.996 [DEBUG] [Thread-131370] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:05.996 [DEBUG] [Thread-131370] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:05.996 [DEBUG] [Thread-131370] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:52:05.996 [DEBUG] [Thread-131370] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:06.016 [INFO] [Thread-131370] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:06.016 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:52:06.016 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:06.970 [DEBUG] [Thread-131370] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:06.970 [DEBUG] [Thread-131370] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:07.021 [DEBUG] [Thread-131370] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:07.021 [DEBUG] [Thread-131370] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:07.032 [DEBUG] [Thread-131370] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:07.041 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:07.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-28T17:52:07.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-28T17:52:07.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:07.065 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:07.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:07.077 [DEBUG] [Thread-131370] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:13.964 [DEBUG] [Thread-131372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:17.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:52:17.076 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:52:17.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-28T17:52:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 52, 11), 12.52, 42.88, 0.0, 22.27, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:52:17.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:52:11
2025-09-28T17:52:17.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:52:17.946 [DEBUG] [Thread-131373] [transport.py] [_log()] starting thread (client mode): 0x2b9ab100
2025-09-28T17:52:17.946 [DEBUG] [Thread-131373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:17.963 [DEBUG] [Thread-131373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:52:17.963 [INFO] [Thread-131373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:17.966 [DEBUG] [Thread-131373] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] Compression: none
2025-09-28T17:52:17.967 [DEBUG] [Thread-131373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:17.982 [DEBUG] [Thread-131373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:17.983 [DEBUG] [Thread-131373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:17.983 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:52:17.984 [DEBUG] [Thread-131373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:52:17.984 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:17.985 [DEBUG] [Thread-131373] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:17.986 [DEBUG] [Thread-131373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:17.986 [DEBUG] [Thread-131373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:17.986 [DEBUG] [Thread-131373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:52:17.986 [DEBUG] [Thread-131373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:18.011 [INFO] [Thread-131373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:18.011 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:18.642 [DEBUG] [Thread-131373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:18.642 [DEBUG] [Thread-131373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:18.643 [DEBUG] [Thread-131373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:52:18.683 [DEBUG] [Thread-131373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:18.683 [DEBUG] [Thread-131373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:18.686 [DEBUG] [Thread-131373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:18.698 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:18.699 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:52:18.701 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:52:18.703 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:52:18.709 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:18.711 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:52:18.711 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:18.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:52:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.660844 -999.00  +15.30  11.25     47   +4.30 1 1 1 1 1   887    0 10.63 -36.75 ----- 11.2 11.2 232.6 18.8 18.4 -26.9 18.1 -26.1 19.1 -25.8 19.7 -27.6
2025-09-28T17:52:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:52:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:52:18.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.660844
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:52:18.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:52:11', tmtdew=12.52, humidity=42.88, cloud=0.0, wind=22.27, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:51:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:52:18.714 [DEBUG] [Thread-131373] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:18.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-28T17:52:18.811 [DEBUG] [Thread-131376] [transport.py] [_log()] starting thread (client mode): 0x2b9aab90
2025-09-28T17:52:18.811 [DEBUG] [Thread-131376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:18.824 [DEBUG] [Thread-131376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:52:18.825 [INFO] [Thread-131376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:52:18.832 [DEBUG] [Thread-131376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:18.832 [DEBUG] [Thread-131376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] Compression: none
2025-09-28T17:52:18.833 [DEBUG] [Thread-131376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:18.891 [DEBUG] [Thread-131376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:18.892 [DEBUG] [Thread-131376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:18.892 [DEBUG] [Thread-131376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:52:18.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:52:18.893 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:18.948 [DEBUG] [Thread-131376] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:18.948 [DEBUG] [Thread-131376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:18.949 [DEBUG] [Thread-131376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:18.949 [DEBUG] [Thread-131376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:52:18.949 [DEBUG] [Thread-131376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:18.968 [INFO] [Thread-131376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:18.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-28T17:52:18.970 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:19.995 [DEBUG] [Thread-131376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:19.995 [DEBUG] [Thread-131376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:20.043 [DEBUG] [Thread-131376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:20.043 [DEBUG] [Thread-131376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:20.052 [DEBUG] [Thread-131376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:20.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52: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')
2025-09-28T17:52:20.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') -> 00000000
2025-09-28T17:52:20.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:20.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:20.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:20.086 [DEBUG] [Thread-131376] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:25.272 [DEBUG] [Thread-131378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:29.002 [DEBUG] [Thread-131379 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:30.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:52:30.088 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:52:30.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-28T17:52:30.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 52, 11), 12.52, 42.88, 0.0, 22.27, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:52:30.719 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:52:11
2025-09-28T17:52:30.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:52:30.987 [DEBUG] [Thread-131380] [transport.py] [_log()] starting thread (client mode): 0x2b9a8670
2025-09-28T17:52:30.987 [DEBUG] [Thread-131380] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:31.007 [DEBUG] [Thread-131380] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:52:31.007 [INFO] [Thread-131380] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] Compression: none
2025-09-28T17:52:31.010 [DEBUG] [Thread-131380] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:31.026 [DEBUG] [Thread-131380] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:31.026 [DEBUG] [Thread-131380] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:52:31.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:52:31.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:52:31.027 [DEBUG] [Thread-131380] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:31.037 [INFO] [Thread-131380] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:31.037 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:31.630 [DEBUG] [Thread-131380] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:31.630 [DEBUG] [Thread-131380] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:31.630 [DEBUG] [Thread-131380] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:52:31.671 [DEBUG] [Thread-131380] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:31.671 [DEBUG] [Thread-131380] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:31.673 [DEBUG] [Thread-131380] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:31.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:31.684 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:52:31.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:52:31.686 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:52:31.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:31.690 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:52:31.690 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661191 -999.00  +15.20  13.20     47   +4.20 1 1 1 1 1   887    0 10.73 -39.30 ----- 13.2 13.2 205.8 23.6 18.4 -27.3 18.2 -26.3 19.1 -26.2 19.7 -27.5
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661191
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:52:31.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:52:11', tmtdew=12.52, humidity=42.88, cloud=0.0, wind=22.27, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:52:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:52:31.691 [DEBUG] [Thread-131380] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:31.765 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:52:31.776 [DEBUG] [Thread-131383] [transport.py] [_log()] starting thread (client mode): 0x2b9ab100
2025-09-28T17:52:31.776 [DEBUG] [Thread-131383] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:31.791 [DEBUG] [Thread-131383] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:52:31.791 [INFO] [Thread-131383] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] Compression: none
2025-09-28T17:52:31.799 [DEBUG] [Thread-131383] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:31.859 [DEBUG] [Thread-131383] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:31.859 [DEBUG] [Thread-131383] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:31.859 [DEBUG] [Thread-131383] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:52:31.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:52:31.859 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:31.915 [DEBUG] [Thread-131383] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:31.915 [DEBUG] [Thread-131383] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:31.915 [DEBUG] [Thread-131383] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:31.915 [DEBUG] [Thread-131383] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:52:31.915 [DEBUG] [Thread-131383] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:31.935 [INFO] [Thread-131383] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:31.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-28T17:52:31.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:32.465 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:32.465 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:32.921 [DEBUG] [Thread-131383] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:32.921 [DEBUG] [Thread-131383] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:32.969 [DEBUG] [Thread-131383] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:32.969 [DEBUG] [Thread-131383] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:32.978 [DEBUG] [Thread-131383] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:32.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:32.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-28T17:52:32.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-28T17:52:33.001 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:33.001 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:33.001 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:33.009 [DEBUG] [Thread-131383] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:43.011 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:52:43.012 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:52:43.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:52:43.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 52, 11), 12.52, 42.88, 0.0, 22.27, 15.1, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:52:43.635 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:52:11
2025-09-28T17:52:43.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:52:43.906 [DEBUG] [Thread-131385] [transport.py] [_log()] starting thread (client mode): 0x2b9aa5f0
2025-09-28T17:52:43.906 [DEBUG] [Thread-131385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:43.927 [DEBUG] [Thread-131385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:52:43.927 [INFO] [Thread-131385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:52:43.930 [DEBUG] [Thread-131385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:43.930 [DEBUG] [Thread-131385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:52:43.930 [DEBUG] [Thread-131385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] Compression: none
2025-09-28T17:52:43.931 [DEBUG] [Thread-131385] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:43.946 [DEBUG] [Thread-131385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:43.946 [DEBUG] [Thread-131385] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:43.946 [DEBUG] [Thread-131385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:52:43.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:52:43.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:43.947 [DEBUG] [Thread-131385] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:43.947 [DEBUG] [Thread-131385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:43.947 [DEBUG] [Thread-131385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:43.947 [DEBUG] [Thread-131385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:52:43.947 [DEBUG] [Thread-131385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:43.959 [INFO] [Thread-131385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:43.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:44.035 [DEBUG] [Thread-131387 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:52:44.619 [DEBUG] [Thread-131385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:44.619 [DEBUG] [Thread-131385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:44.619 [DEBUG] [Thread-131385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:52:44.660 [DEBUG] [Thread-131385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:44.660 [DEBUG] [Thread-131385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:44.662 [DEBUG] [Thread-131385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:44.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:44.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:52:44.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:52:44.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:52:44.678 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:44.679 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:52:44.679 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661191 -999.00  +15.20  13.20     47   +4.20 1 1 1 1 1   887    0 10.73 -39.30 ----- 13.2 13.2 205.8 23.6 18.4 -27.3 18.2 -26.3 19.1 -26.2 19.7 -27.5
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661191
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:52:44.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:52:11', tmtdew=12.52, humidity=42.88, cloud=0.0, wind=22.27, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:52:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:52:44.680 [DEBUG] [Thread-131385] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:44.753 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:52:44.765 [DEBUG] [Thread-131389] [transport.py] [_log()] starting thread (client mode): 0x2e3611e0
2025-09-28T17:52:44.765 [DEBUG] [Thread-131389] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:44.780 [DEBUG] [Thread-131389] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:52:44.780 [INFO] [Thread-131389] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:52:44.787 [DEBUG] [Thread-131389] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:44.787 [DEBUG] [Thread-131389] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] Compression: none
2025-09-28T17:52:44.788 [DEBUG] [Thread-131389] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:44.847 [DEBUG] [Thread-131389] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:44.847 [DEBUG] [Thread-131389] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:44.848 [DEBUG] [Thread-131389] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:52:44.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:52:44.848 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:44.903 [DEBUG] [Thread-131389] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:44.903 [DEBUG] [Thread-131389] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:44.903 [DEBUG] [Thread-131389] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:44.903 [DEBUG] [Thread-131389] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:52:44.903 [DEBUG] [Thread-131389] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:44.918 [INFO] [Thread-131389] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:44.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:52:44.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:45.864 [DEBUG] [Thread-131389] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:45.865 [DEBUG] [Thread-131389] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:45.913 [DEBUG] [Thread-131389] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:45.913 [DEBUG] [Thread-131389] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:45.922 [DEBUG] [Thread-131389] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:45.931 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:45.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-28T17:52:45.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-28T17:52:45.949 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:45.949 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:45.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:45.957 [DEBUG] [Thread-131389] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:55.960 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:52:55.960 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:52:55.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-28T17:52:56.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 52, 43), 12.34, 43.48, 0.0, 19.04, 14.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:52:56.574 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:52:43
2025-09-28T17:52:56.683 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:52:56.833 [DEBUG] [Thread-131391] [transport.py] [_log()] starting thread (client mode): 0x2e360d60
2025-09-28T17:52:56.833 [DEBUG] [Thread-131391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:56.853 [DEBUG] [Thread-131391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:52:56.854 [INFO] [Thread-131391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:52:56.856 [DEBUG] [Thread-131391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] Compression: none
2025-09-28T17:52:56.857 [DEBUG] [Thread-131391] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:56.874 [DEBUG] [Thread-131391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:56.874 [DEBUG] [Thread-131391] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:56.874 [DEBUG] [Thread-131391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:52:56.874 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:52:56.875 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:56.875 [DEBUG] [Thread-131391] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:56.875 [DEBUG] [Thread-131391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:56.875 [DEBUG] [Thread-131391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:56.875 [DEBUG] [Thread-131391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:52:56.875 [DEBUG] [Thread-131391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:56.885 [INFO] [Thread-131391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:56.885 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:57.493 [DEBUG] [Thread-131391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:57.493 [DEBUG] [Thread-131391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:57.493 [DEBUG] [Thread-131391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:52:57.533 [DEBUG] [Thread-131391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:57.533 [DEBUG] [Thread-131391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:57.536 [DEBUG] [Thread-131391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:57.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:57.548 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:52:57.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:52:57.551 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:52:57.556 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:57.558 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:52:57.558 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:57.558 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:57.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:52:57.558 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661191 -999.00  +15.20  13.20     47   +4.20 1 1 1 1 1   887    0 10.73 -39.30 ----- 13.2 13.2 205.8 23.6 18.4 -27.3 18.2 -26.3 19.1 -26.2 19.7 -27.5
2025-09-28T17:52:57.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:52:57.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:52:57.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661191
2025-09-28T17:52:57.559 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:52:57.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:52:57.560 [DEBUG] [Thread-131391] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:57.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:52:57.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:52:57.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:52:57.561 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:52:43', tmtdew=12.34, humidity=43.48, cloud=0.0, wind=19.04, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:52:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:52:57.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-28T17:52:57.654 [DEBUG] [Thread-131394] [transport.py] [_log()] starting thread (client mode): 0x2e361210
2025-09-28T17:52:57.654 [DEBUG] [Thread-131394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:52:57.669 [DEBUG] [Thread-131394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:52:57.669 [INFO] [Thread-131394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:52:57.677 [DEBUG] [Thread-131394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] client lang: <none>
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] server lang: <none>
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] kex follows: False
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] Compression: none
2025-09-28T17:52:57.678 [DEBUG] [Thread-131394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:52:57.736 [DEBUG] [Thread-131394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:52:57.737 [DEBUG] [Thread-131394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:52:57.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:52:57.737 [DEBUG] [Thread-131394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:52:57.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:52:57.795 [DEBUG] [Thread-131394] [transport.py] [_log()] userauth is OK
2025-09-28T17:52:57.795 [DEBUG] [Thread-131394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:52:57.795 [DEBUG] [Thread-131394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:52:57.795 [DEBUG] [Thread-131394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:52:57.795 [DEBUG] [Thread-131394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:52:57.813 [INFO] [Thread-131394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:52:57.813 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:52:57.814 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:52:58.796 [DEBUG] [Thread-131394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:52:58.796 [DEBUG] [Thread-131394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:52:58.844 [DEBUG] [Thread-131394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:52:58.844 [DEBUG] [Thread-131394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:52:58.853 [DEBUG] [Thread-131394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:52:58.862 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:52:58.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-28T17:52: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-28T17:52:58.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:52:58.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:52:58.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:52:58.888 [DEBUG] [Thread-131394] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:52:59.072 [DEBUG] [Thread-131396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:08.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:53:08.890 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:53:08.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-28T17:53:09.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 52, 43), 12.34, 43.48, 0.0, 19.04, 14.99, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:53:09.536 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:52:43
2025-09-28T17:53:09.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:53:09.810 [DEBUG] [Thread-131397] [transport.py] [_log()] starting thread (client mode): 0x2e3618a0
2025-09-28T17:53:09.810 [DEBUG] [Thread-131397] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:53:09.830 [DEBUG] [Thread-131397] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:53:09.830 [INFO] [Thread-131397] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] client lang: <none>
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] server lang: <none>
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] kex follows: False
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] Compression: none
2025-09-28T17:53:09.832 [DEBUG] [Thread-131397] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:53:09.844 [DEBUG] [Thread-131397] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:53:09.844 [DEBUG] [Thread-131397] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:53:09.844 [DEBUG] [Thread-131397] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:53:09.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:53:09.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:53:09.845 [DEBUG] [Thread-131397] [transport.py] [_log()] userauth is OK
2025-09-28T17:53:09.845 [DEBUG] [Thread-131397] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:53:09.845 [DEBUG] [Thread-131397] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:53:09.845 [DEBUG] [Thread-131397] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:53:09.845 [DEBUG] [Thread-131397] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:53:09.875 [INFO] [Thread-131397] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:53:09.876 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:53:10.516 [DEBUG] [Thread-131397] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:53:10.516 [DEBUG] [Thread-131397] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:53:10.516 [DEBUG] [Thread-131397] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:53:10.557 [DEBUG] [Thread-131397] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:53:10.557 [DEBUG] [Thread-131397] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:53:10.560 [DEBUG] [Thread-131397] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:53:10.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:53:10.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:53:10.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:53:10.573 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:53:10.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:53:10.576 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:53:10.576 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661538 -999.00  +15.20  14.13     47   +4.20 1 1 1 1 1   887    0 10.38 -43.39 ----- 14.1 14.1 202.4 19.1 18.3 -27.4 18.1 -26.1 19.1 -26.5 19.6 -27.8
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661538
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:53:10.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:53:10.577 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:52:43', tmtdew=12.34, humidity=43.48, cloud=0.0, wind=19.04, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:52:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:53:10.577 [DEBUG] [Thread-131397] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:53:10.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-28T17:53:10.663 [DEBUG] [Thread-131400] [transport.py] [_log()] starting thread (client mode): 0x2b9badd0
2025-09-28T17:53:10.663 [DEBUG] [Thread-131400] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:53:10.678 [DEBUG] [Thread-131400] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:53:10.678 [INFO] [Thread-131400] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] client lang: <none>
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] server lang: <none>
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] kex follows: False
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:53:10.685 [DEBUG] [Thread-131400] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:53:10.686 [DEBUG] [Thread-131400] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:53:10.686 [DEBUG] [Thread-131400] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:53:10.686 [DEBUG] [Thread-131400] [transport.py] [_log()] Compression: none
2025-09-28T17:53:10.686 [DEBUG] [Thread-131400] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:53:10.741 [DEBUG] [Thread-131400] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:53:10.741 [DEBUG] [Thread-131400] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:53:10.741 [DEBUG] [Thread-131400] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:53:10.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:53:10.741 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:53:10.799 [DEBUG] [Thread-131400] [transport.py] [_log()] userauth is OK
2025-09-28T17:53:10.799 [DEBUG] [Thread-131400] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:53:10.799 [DEBUG] [Thread-131400] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:53:10.799 [DEBUG] [Thread-131400] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:53:10.799 [DEBUG] [Thread-131400] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:53:10.815 [INFO] [Thread-131400] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:53:10.815 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T17:53:10.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:53:11.813 [DEBUG] [Thread-131400] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:53:11.814 [DEBUG] [Thread-131400] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:53:11.861 [DEBUG] [Thread-131400] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:53:11.861 [DEBUG] [Thread-131400] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:53:11.870 [DEBUG] [Thread-131400] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:53:11.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:53:11.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')
2025-09-28T17:53:11.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') -> 00000000
2025-09-28T17:53:11.900 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:53:11.901 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:53:11.901 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:53:11.909 [DEBUG] [Thread-131400] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:53:14.115 [DEBUG] [Thread-131402 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:21.912 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:53:21.912 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:53:21.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-28T17:53:22.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 53, 15), 12.34, 43.46, 0.0, 16.89, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:53:22.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:53:15
2025-09-28T17:53:22.623 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:53:22.770 [DEBUG] [Thread-131403] [transport.py] [_log()] starting thread (client mode): 0x2b9a8c70
2025-09-28T17:53:22.770 [DEBUG] [Thread-131403] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:53:22.790 [DEBUG] [Thread-131403] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:53:22.790 [INFO] [Thread-131403] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] client lang: <none>
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] server lang: <none>
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] kex follows: False
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] Compression: none
2025-09-28T17:53:22.793 [DEBUG] [Thread-131403] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:53:22.809 [DEBUG] [Thread-131403] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:53:22.810 [DEBUG] [Thread-131403] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:53:22.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:53:22.810 [DEBUG] [Thread-131403] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:53:22.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:53:22.812 [DEBUG] [Thread-131403] [transport.py] [_log()] userauth is OK
2025-09-28T17:53:22.812 [DEBUG] [Thread-131403] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:53:22.812 [DEBUG] [Thread-131403] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:53:22.812 [DEBUG] [Thread-131403] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:53:22.812 [DEBUG] [Thread-131403] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:53:22.832 [INFO] [Thread-131403] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:53:22.833 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:53:23.443 [DEBUG] [Thread-131403] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:53:23.443 [DEBUG] [Thread-131403] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:53:23.444 [DEBUG] [Thread-131403] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:53:23.484 [DEBUG] [Thread-131403] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:53:23.484 [DEBUG] [Thread-131403] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:53:23.487 [DEBUG] [Thread-131403] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:53:23.498 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:53:23.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:53:23.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:53:23.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:53:23.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:53:23.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:53:23.508 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:53:23.508 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661538 -999.00  +15.20  14.13     47   +4.20 1 1 1 1 1   887    0 10.38 -43.39 ----- 14.1 14.1 202.4 19.1 18.3 -27.4 18.1 -26.1 19.1 -26.5 19.6 -27.8
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661538
2025-09-28T17:53:23.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:53:23.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:53:23.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:53:23.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:53:23.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:53:23.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:53:15', tmtdew=12.34, humidity=43.46, cloud=0.0, wind=16.89, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:52:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:53:23.511 [DEBUG] [Thread-131403] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:53:23.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-28T17:53:23.604 [DEBUG] [Thread-131406] [transport.py] [_log()] starting thread (client mode): 0x2e3627d0
2025-09-28T17:53:23.604 [DEBUG] [Thread-131406] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:53:23.619 [DEBUG] [Thread-131406] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:53:23.619 [INFO] [Thread-131406] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:53:23.626 [DEBUG] [Thread-131406] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] client lang: <none>
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] server lang: <none>
2025-09-28T17:53:23.627 [DEBUG] [Thread-131406] [transport.py] [_log()] kex follows: False
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] Compression: none
2025-09-28T17:53:23.628 [DEBUG] [Thread-131406] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:53:23.682 [DEBUG] [Thread-131406] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:53:23.682 [DEBUG] [Thread-131406] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:53:23.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:53:23.684 [DEBUG] [Thread-131406] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:53:23.685 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:53:23.739 [DEBUG] [Thread-131406] [transport.py] [_log()] userauth is OK
2025-09-28T17:53:23.739 [DEBUG] [Thread-131406] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:53:23.739 [DEBUG] [Thread-131406] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:53:23.739 [DEBUG] [Thread-131406] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:53:23.739 [DEBUG] [Thread-131406] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:53:23.758 [INFO] [Thread-131406] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:53:23.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-28T17:53:23.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:53:24.742 [DEBUG] [Thread-131406] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:53:24.742 [DEBUG] [Thread-131406] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:53:24.790 [DEBUG] [Thread-131406] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:53:24.790 [DEBUG] [Thread-131406] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:53:24.799 [DEBUG] [Thread-131406] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:53:24.808 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:53:24.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-28T17:53:24.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-28T17:53:24.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:53:24.826 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:53:24.826 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:53:24.834 [DEBUG] [Thread-131406] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:53:25.329 [DEBUG] [Thread-131408 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:29.162 [DEBUG] [Thread-131409 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:32.605 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:32.606 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:34.833 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:53:34.834 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:53:34.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-28T17:53:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 53, 15), 12.34, 43.46, 0.0, 16.89, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:53:35.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:53:15
2025-09-28T17:53:35.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:53:35.707 [DEBUG] [Thread-131410] [transport.py] [_log()] starting thread (client mode): 0x2e3623b0
2025-09-28T17:53:35.708 [DEBUG] [Thread-131410] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:53:35.728 [DEBUG] [Thread-131410] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:53:35.728 [INFO] [Thread-131410] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] client lang: <none>
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] server lang: <none>
2025-09-28T17:53:35.729 [DEBUG] [Thread-131410] [transport.py] [_log()] kex follows: False
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] Compression: none
2025-09-28T17:53:35.730 [DEBUG] [Thread-131410] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:53:35.737 [DEBUG] [Thread-131410] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:53:35.737 [DEBUG] [Thread-131410] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:53:35.737 [DEBUG] [Thread-131410] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:53:35.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:53:35.738 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:53:35.738 [DEBUG] [Thread-131410] [transport.py] [_log()] userauth is OK
2025-09-28T17:53:35.738 [DEBUG] [Thread-131410] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:53:35.738 [DEBUG] [Thread-131410] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:53:35.738 [DEBUG] [Thread-131410] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:53:35.738 [DEBUG] [Thread-131410] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:53:35.747 [INFO] [Thread-131410] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:53:35.747 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:53:36.355 [DEBUG] [Thread-131410] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:53:36.355 [DEBUG] [Thread-131410] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:53:36.356 [DEBUG] [Thread-131410] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:53:36.396 [DEBUG] [Thread-131410] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:53:36.396 [DEBUG] [Thread-131410] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:53:36.401 [DEBUG] [Thread-131410] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:53:36.411 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:53:36.411 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:53:36.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:53:36.415 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:53:36.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:53:36.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:53:36.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:53:36.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:53:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:53:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.661886 -999.00  +15.20  10.53     48   +4.20 1 1 1 1 1   887    0 10.42 -42.98 ----- 10.5 10.5 226.8 17.6 18.3 -27.4 18.1 -25.4 19.1 -26.1 19.6 -26.8
2025-09-28T17:53:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:53:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:53:36.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.661886
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:53:36.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:53:15', tmtdew=12.34, humidity=43.46, cloud=0.0, wind=16.89, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:53:06.950', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:53:36.424 [DEBUG] [Thread-131410] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:53:36.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-28T17:53:44.207 [DEBUG] [Thread-131413 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:53:59.246 [DEBUG] [Thread-131414 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:14.278 [DEBUG] [Thread-131415 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:25.378 [DEBUG] [Thread-131416 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:29.308 [DEBUG] [Thread-131417 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:32.746 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:32.748 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:44.337 [DEBUG] [Thread-131418 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:54:59.367 [DEBUG] [Thread-131419 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:14.398 [DEBUG] [Thread-131420 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:25.423 [DEBUG] [Thread-131421 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:29.428 [DEBUG] [Thread-131422 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:32.890 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:32.891 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:44.459 [DEBUG] [Thread-131423 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:55:50.331 [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-28T17:55:59.489 [DEBUG] [Thread-131424 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:00.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:56:00.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:56:00.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-28T17:56:00.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 55, 55), 12.5, 42.91, 0.0, 19.5, 14.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:56:00.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:55:55
2025-09-28T17:56:01.065 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:56:01.212 [DEBUG] [Thread-131425] [transport.py] [_log()] starting thread (client mode): 0x2e361630
2025-09-28T17:56:01.212 [DEBUG] [Thread-131425] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:01.232 [DEBUG] [Thread-131425] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:56:01.232 [INFO] [Thread-131425] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] Compression: none
2025-09-28T17:56:01.235 [DEBUG] [Thread-131425] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:01.252 [DEBUG] [Thread-131425] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:01.252 [DEBUG] [Thread-131425] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:01.253 [DEBUG] [Thread-131425] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:56:01.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:56:01.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:01.254 [DEBUG] [Thread-131425] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:01.255 [DEBUG] [Thread-131425] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:01.255 [DEBUG] [Thread-131425] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:01.255 [DEBUG] [Thread-131425] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:56:01.255 [DEBUG] [Thread-131425] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:01.273 [INFO] [Thread-131425] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:01.273 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:01.918 [DEBUG] [Thread-131425] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:01.919 [DEBUG] [Thread-131425] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:01.919 [DEBUG] [Thread-131425] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:56:01.959 [DEBUG] [Thread-131425] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:01.959 [DEBUG] [Thread-131425] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:01.962 [DEBUG] [Thread-131425] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:01.974 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:01.975 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:56:01.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:56:01.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:56:01.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:01.985 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:56:01.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:01.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:56:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.663622 -999.00  +15.30  11.06     47   +4.10 1 1 1 1 1   887    0 10.20 -46.70 ----- 11.1 11.1 210.6 16.4 18.2 -27.0 18.1 -26.8 19.0 -26.1 19.5 -28.0
2025-09-28T17:56:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:56:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:56:01.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.663622
2025-09-28T17:56:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:56:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:56:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:56:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:56:01.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:56:01.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:55:55', tmtdew=12.5, humidity=42.91, cloud=0.0, wind=19.5, temperature=14.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:55:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:56:01.988 [DEBUG] [Thread-131425] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:02.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-28T17:56:02.084 [DEBUG] [Thread-131428] [transport.py] [_log()] starting thread (client mode): 0x2b9aa140
2025-09-28T17:56:02.084 [DEBUG] [Thread-131428] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:02.098 [DEBUG] [Thread-131428] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:56:02.099 [INFO] [Thread-131428] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:56:02.106 [DEBUG] [Thread-131428] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:02.106 [DEBUG] [Thread-131428] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:56:02.106 [DEBUG] [Thread-131428] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:02.107 [DEBUG] [Thread-131428] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:02.108 [DEBUG] [Thread-131428] [transport.py] [_log()] Compression: none
2025-09-28T17:56:02.108 [DEBUG] [Thread-131428] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:02.168 [DEBUG] [Thread-131428] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:02.169 [DEBUG] [Thread-131428] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:02.169 [DEBUG] [Thread-131428] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:56:02.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:56:02.170 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:02.223 [DEBUG] [Thread-131428] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:02.224 [DEBUG] [Thread-131428] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:02.224 [DEBUG] [Thread-131428] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:02.224 [DEBUG] [Thread-131428] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:56:02.224 [DEBUG] [Thread-131428] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:02.242 [INFO] [Thread-131428] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:02.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-28T17:56:02.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:03.278 [DEBUG] [Thread-131428] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:03.278 [DEBUG] [Thread-131428] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:03.326 [DEBUG] [Thread-131428] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:03.326 [DEBUG] [Thread-131428] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:03.335 [DEBUG] [Thread-131428] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:03.344 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:03.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-28T17:56:03.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') -> 00000000
2025-09-28T17:56:03.362 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:03.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:03.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:03.370 [DEBUG] [Thread-131428] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:13.370 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:56:13.371 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:56:13.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:56:13.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 55, 55), 12.5, 42.91, 0.0, 19.5, 14.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:56:13.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:55:55
2025-09-28T17:56:14.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:56:14.222 [DEBUG] [Thread-131430] [transport.py] [_log()] starting thread (client mode): 0x2b9aada0
2025-09-28T17:56:14.223 [DEBUG] [Thread-131430] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:14.243 [DEBUG] [Thread-131430] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:56:14.243 [INFO] [Thread-131430] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:14.246 [DEBUG] [Thread-131430] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] Compression: none
2025-09-28T17:56:14.247 [DEBUG] [Thread-131430] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:14.262 [DEBUG] [Thread-131430] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:14.262 [DEBUG] [Thread-131430] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:14.262 [DEBUG] [Thread-131430] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:56:14.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:56:14.262 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:14.263 [DEBUG] [Thread-131430] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:14.263 [DEBUG] [Thread-131430] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:14.263 [DEBUG] [Thread-131430] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:14.263 [DEBUG] [Thread-131430] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:56:14.263 [DEBUG] [Thread-131430] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:14.276 [INFO] [Thread-131430] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:14.277 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:14.519 [DEBUG] [Thread-131432 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:14.923 [DEBUG] [Thread-131430] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:14.923 [DEBUG] [Thread-131430] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:14.923 [DEBUG] [Thread-131430] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:56:14.964 [DEBUG] [Thread-131430] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:14.964 [DEBUG] [Thread-131430] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:14.967 [DEBUG] [Thread-131430] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:14.979 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:14.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:56:14.981 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:56:14.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:56:14.988 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:14.990 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:56:14.990 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:14.990 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.663622 -999.00  +15.30  11.06     47   +4.10 1 1 1 1 1   887    0 10.20 -46.70 ----- 11.1 11.1 210.6 16.4 18.2 -27.0 18.1 -26.8 19.0 -26.1 19.5 -28.0
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.663622
2025-09-28T17:56:14.991 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:56:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:56:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:56:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:56:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:56:14.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:55:55', tmtdew=12.5, humidity=42.91, cloud=0.0, wind=19.5, temperature=14.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:55:36.941', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:56:14.992 [DEBUG] [Thread-131430] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:15.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-28T17:56:15.087 [DEBUG] [Thread-131434] [transport.py] [_log()] starting thread (client mode): 0x2e362d70
2025-09-28T17:56:15.087 [DEBUG] [Thread-131434] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:15.103 [DEBUG] [Thread-131434] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:56:15.103 [INFO] [Thread-131434] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:56:15.110 [DEBUG] [Thread-131434] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] Compression: none
2025-09-28T17:56:15.111 [DEBUG] [Thread-131434] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:15.165 [DEBUG] [Thread-131434] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:15.166 [DEBUG] [Thread-131434] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:15.166 [DEBUG] [Thread-131434] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:56:15.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:56:15.166 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:15.223 [DEBUG] [Thread-131434] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:15.223 [DEBUG] [Thread-131434] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:15.223 [DEBUG] [Thread-131434] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:15.223 [DEBUG] [Thread-131434] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:56:15.223 [DEBUG] [Thread-131434] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:15.237 [INFO] [Thread-131434] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:15.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-28T17:56:15.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:16.186 [DEBUG] [Thread-131434] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:16.186 [DEBUG] [Thread-131434] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:16.233 [DEBUG] [Thread-131434] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:16.233 [DEBUG] [Thread-131434] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:16.242 [DEBUG] [Thread-131434] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:16.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:16.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-28T17:56:16.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-28T17:56:16.268 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:16.268 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:16.269 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:16.277 [DEBUG] [Thread-131434] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:25.476 [DEBUG] [Thread-131436 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:26.274 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:56:26.275 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:56:26.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-28T17:56:26.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 55, 55), 12.5, 42.91, 0.0, 19.5, 14.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:56:26.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:55:55
2025-09-28T17:56:26.994 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:56:27.141 [DEBUG] [Thread-131437] [transport.py] [_log()] starting thread (client mode): 0x2b9df7c0
2025-09-28T17:56:27.141 [DEBUG] [Thread-131437] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:27.159 [DEBUG] [Thread-131437] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:56:27.159 [INFO] [Thread-131437] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:27.162 [DEBUG] [Thread-131437] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] Compression: none
2025-09-28T17:56:27.163 [DEBUG] [Thread-131437] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:27.179 [DEBUG] [Thread-131437] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:27.179 [DEBUG] [Thread-131437] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:27.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:56:27.180 [DEBUG] [Thread-131437] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:56:27.180 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:27.181 [DEBUG] [Thread-131437] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:27.181 [DEBUG] [Thread-131437] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:27.181 [DEBUG] [Thread-131437] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:27.181 [DEBUG] [Thread-131437] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:56:27.181 [DEBUG] [Thread-131437] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:27.193 [INFO] [Thread-131437] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:27.194 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:27.792 [DEBUG] [Thread-131437] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:27.793 [DEBUG] [Thread-131437] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:27.793 [DEBUG] [Thread-131437] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:56:27.834 [DEBUG] [Thread-131437] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:27.835 [DEBUG] [Thread-131437] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:27.836 [DEBUG] [Thread-131437] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:27.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:27.847 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:56:27.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:56:27.849 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:56:27.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:27.852 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:56:27.852 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:27.852 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.663969 -999.00  +15.30  14.10     47   +4.10 1 1 1 1 1   887    0 10.11 -48.14 ----- 14.1 14.1 206.4 21.2 18.3 -27.0 18.1 -26.0 19.0 -25.5 19.5 -27.5
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.663969
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:56:27.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:55:55', tmtdew=12.5, humidity=42.91, cloud=0.0, wind=19.5, temperature=14.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:56:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:56:27.854 [DEBUG] [Thread-131437] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:27.930 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:56:27.941 [DEBUG] [Thread-131440] [transport.py] [_log()] starting thread (client mode): 0x2b9bb4c0
2025-09-28T17:56:27.942 [DEBUG] [Thread-131440] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:27.957 [DEBUG] [Thread-131440] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:56:27.957 [INFO] [Thread-131440] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:56:27.964 [DEBUG] [Thread-131440] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:27.964 [DEBUG] [Thread-131440] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] Compression: none
2025-09-28T17:56:27.965 [DEBUG] [Thread-131440] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:28.022 [DEBUG] [Thread-131440] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:28.022 [DEBUG] [Thread-131440] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:28.022 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:56:28.023 [DEBUG] [Thread-131440] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:56:28.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:28.083 [DEBUG] [Thread-131440] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:28.083 [DEBUG] [Thread-131440] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:28.083 [DEBUG] [Thread-131440] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:28.084 [DEBUG] [Thread-131440] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:56:28.084 [DEBUG] [Thread-131440] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:28.105 [INFO] [Thread-131440] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:28.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-28T17:56:28.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:29.077 [DEBUG] [Thread-131440] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:29.078 [DEBUG] [Thread-131440] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:29.125 [DEBUG] [Thread-131440] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:29.125 [DEBUG] [Thread-131440] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:29.134 [DEBUG] [Thread-131440] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:29.143 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:29.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-28T17:56:29.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-28T17:56:29.160 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:29.161 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:29.161 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:29.169 [DEBUG] [Thread-131440] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:29.563 [DEBUG] [Thread-131442 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:33.032 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:33.033 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:39.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:56:39.172 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:56:39.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:56:39.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 56, 26), 12.49, 42.93, 0.0, 16.94, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:56:39.780 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:56:26
2025-09-28T17:56:39.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:56:40.035 [DEBUG] [Thread-131443] [transport.py] [_log()] starting thread (client mode): 0x2b9aac80
2025-09-28T17:56:40.035 [DEBUG] [Thread-131443] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:40.055 [DEBUG] [Thread-131443] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:56:40.055 [INFO] [Thread-131443] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:40.059 [DEBUG] [Thread-131443] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] Compression: none
2025-09-28T17:56:40.060 [DEBUG] [Thread-131443] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:40.077 [DEBUG] [Thread-131443] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:40.077 [DEBUG] [Thread-131443] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:40.078 [DEBUG] [Thread-131443] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:56:40.078 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:56:40.079 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:40.121 [DEBUG] [Thread-131443] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:40.121 [DEBUG] [Thread-131443] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:40.121 [DEBUG] [Thread-131443] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:40.121 [DEBUG] [Thread-131443] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:56:40.121 [DEBUG] [Thread-131443] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:40.141 [INFO] [Thread-131443] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:40.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:40.783 [DEBUG] [Thread-131443] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:40.783 [DEBUG] [Thread-131443] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:40.784 [DEBUG] [Thread-131443] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:56:40.824 [DEBUG] [Thread-131443] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:40.824 [DEBUG] [Thread-131443] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:40.827 [DEBUG] [Thread-131443] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:40.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:40.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:56:40.841 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:56:40.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:56:40.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:40.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:56:40.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:40.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:40.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:56:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.663969 -999.00  +15.30  14.10     47   +4.10 1 1 1 1 1   887    0 10.11 -48.14 ----- 14.1 14.1 206.4 21.2 18.3 -27.0 18.1 -26.0 19.0 -25.5 19.5 -27.5
2025-09-28T17:56:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:56:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:56:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.663969
2025-09-28T17:56:40.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:56:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:56:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:56:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:56:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:56:40.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:56:26', tmtdew=12.49, humidity=42.93, cloud=0.0, wind=16.94, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:56:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:56:40.852 [DEBUG] [Thread-131443] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:40.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-28T17:56:40.949 [DEBUG] [Thread-131446] [transport.py] [_log()] starting thread (client mode): 0x2b9ab4f0
2025-09-28T17:56:40.949 [DEBUG] [Thread-131446] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:40.964 [DEBUG] [Thread-131446] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:56:40.964 [INFO] [Thread-131446] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:56:40.971 [DEBUG] [Thread-131446] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] Compression: none
2025-09-28T17:56:40.972 [DEBUG] [Thread-131446] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:41.034 [DEBUG] [Thread-131446] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:41.035 [DEBUG] [Thread-131446] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:41.036 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:56:41.036 [DEBUG] [Thread-131446] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:56:41.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:41.091 [DEBUG] [Thread-131446] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:41.092 [DEBUG] [Thread-131446] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:41.092 [DEBUG] [Thread-131446] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:41.092 [DEBUG] [Thread-131446] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:56:41.092 [DEBUG] [Thread-131446] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:41.111 [INFO] [Thread-131446] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:41.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-28T17:56:41.112 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:42.086 [DEBUG] [Thread-131446] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:42.086 [DEBUG] [Thread-131446] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:42.134 [DEBUG] [Thread-131446] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:42.134 [DEBUG] [Thread-131446] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:42.143 [DEBUG] [Thread-131446] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:42.151 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:42.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-28T17:56: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') -> 00000000
2025-09-28T17:56:42.168 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:42.168 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:42.169 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:42.176 [DEBUG] [Thread-131446] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:44.606 [DEBUG] [Thread-131448 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:56:52.179 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:56:52.179 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:56:52.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-28T17:56:52.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 56, 26), 12.49, 42.93, 0.0, 16.94, 14.87, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:56:52.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:56:26
2025-09-28T17:56:52.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:56:53.042 [DEBUG] [Thread-131449] [transport.py] [_log()] starting thread (client mode): 0x2b9badd0
2025-09-28T17:56:53.042 [DEBUG] [Thread-131449] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:53.061 [DEBUG] [Thread-131449] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:56:53.061 [INFO] [Thread-131449] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] Compression: none
2025-09-28T17:56:53.063 [DEBUG] [Thread-131449] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:53.075 [DEBUG] [Thread-131449] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:53.075 [DEBUG] [Thread-131449] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:53.075 [DEBUG] [Thread-131449] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:56:53.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:56:53.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:53.075 [DEBUG] [Thread-131449] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:53.075 [DEBUG] [Thread-131449] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:53.076 [DEBUG] [Thread-131449] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:53.076 [DEBUG] [Thread-131449] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:56:53.076 [DEBUG] [Thread-131449] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:53.102 [INFO] [Thread-131449] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:53.103 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:53.760 [DEBUG] [Thread-131449] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:53.760 [DEBUG] [Thread-131449] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:53.761 [DEBUG] [Thread-131449] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:56:53.801 [DEBUG] [Thread-131449] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:53.802 [DEBUG] [Thread-131449] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:53.805 [DEBUG] [Thread-131449] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:53.818 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:53.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:56:53.820 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:56:53.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:56:53.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:53.829 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:56:53.829 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:53.829 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:56:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.663969 -999.00  +15.30  14.10     47   +4.10 1 1 1 1 1   887    0 10.11 -48.14 ----- 14.1 14.1 206.4 21.2 18.3 -27.0 18.1 -26.0 19.0 -25.5 19.5 -27.5
2025-09-28T17:56:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:56:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:56:53.830 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.663969
2025-09-28T17:56:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:56:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:56:53.831 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:56:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:56:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:56:53.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:56:26', tmtdew=12.49, humidity=42.93, cloud=0.0, wind=16.94, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:56:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:56:53.832 [DEBUG] [Thread-131449] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:53.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-28T17:56:53.916 [DEBUG] [Thread-131452] [transport.py] [_log()] starting thread (client mode): 0x2b91fca0
2025-09-28T17:56:53.916 [DEBUG] [Thread-131452] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:56:53.931 [DEBUG] [Thread-131452] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:56:53.931 [INFO] [Thread-131452] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] client lang: <none>
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] server lang: <none>
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] kex follows: False
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:56:53.939 [DEBUG] [Thread-131452] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:56:53.940 [DEBUG] [Thread-131452] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:56:53.940 [DEBUG] [Thread-131452] [transport.py] [_log()] Compression: none
2025-09-28T17:56:53.940 [DEBUG] [Thread-131452] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:56:53.999 [DEBUG] [Thread-131452] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:56:53.999 [DEBUG] [Thread-131452] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:56:54.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:56:54.000 [DEBUG] [Thread-131452] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:56:54.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:56:54.055 [DEBUG] [Thread-131452] [transport.py] [_log()] userauth is OK
2025-09-28T17:56:54.055 [DEBUG] [Thread-131452] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:56:54.056 [DEBUG] [Thread-131452] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:56:54.056 [DEBUG] [Thread-131452] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:56:54.056 [DEBUG] [Thread-131452] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:56:54.079 [INFO] [Thread-131452] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:56:54.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-28T17:56:54.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:56:55.068 [DEBUG] [Thread-131452] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:56:55.068 [DEBUG] [Thread-131452] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:56:55.116 [DEBUG] [Thread-131452] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:56:55.116 [DEBUG] [Thread-131452] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:56:55.124 [DEBUG] [Thread-131452] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:56:55.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:56:55.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-28T17:56:55.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-28T17:56:55.148 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:56:55.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:56:55.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:56:55.155 [DEBUG] [Thread-131452] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:56:59.649 [DEBUG] [Thread-131454 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:05.158 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:57:05.158 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:57:05.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-28T17:57:05.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 56, 58), 12.42, 43.0, 0.0, 18.37, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:57:05.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:56:58
2025-09-28T17:57:05.862 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:57:06.010 [DEBUG] [Thread-131455] [transport.py] [_log()] starting thread (client mode): 0x2b9aa920
2025-09-28T17:57:06.010 [DEBUG] [Thread-131455] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:06.031 [DEBUG] [Thread-131455] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:57:06.031 [INFO] [Thread-131455] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] Compression: none
2025-09-28T17:57:06.034 [DEBUG] [Thread-131455] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:06.051 [DEBUG] [Thread-131455] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:06.052 [DEBUG] [Thread-131455] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:06.052 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:57:06.053 [DEBUG] [Thread-131455] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:57:06.053 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:06.055 [DEBUG] [Thread-131455] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:06.055 [DEBUG] [Thread-131455] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:06.055 [DEBUG] [Thread-131455] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:06.055 [DEBUG] [Thread-131455] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:57:06.055 [DEBUG] [Thread-131455] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:06.090 [INFO] [Thread-131455] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:06.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:06.724 [DEBUG] [Thread-131455] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:06.724 [DEBUG] [Thread-131455] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:06.725 [DEBUG] [Thread-131455] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:57:06.765 [DEBUG] [Thread-131455] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:06.766 [DEBUG] [Thread-131455] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:06.768 [DEBUG] [Thread-131455] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:06.782 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:06.782 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:57:06.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:57:06.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:57:06.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:06.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:57:06.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.664316 -999.00  +15.10  18.96     47   +4.00 1 1 1 1 1   887    0 10.23 -46.99 ----- 19.0 19.0 201.0 24.4 18.2 -27.3 18.0 -26.2 19.0 -26.6 19.4 -28.1
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:57:06.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.664316
2025-09-28T17:57:06.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:57:06.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:57:06.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:57:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:57:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:57:06.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:56:58', tmtdew=12.42, humidity=43.0, cloud=0.0, wind=18.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:56:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:57:06.795 [DEBUG] [Thread-131455] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:06.880 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:57:06.891 [DEBUG] [Thread-131458] [transport.py] [_log()] starting thread (client mode): 0x2b9a9ea0
2025-09-28T17:57:06.891 [DEBUG] [Thread-131458] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:06.905 [DEBUG] [Thread-131458] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:57:06.905 [INFO] [Thread-131458] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:57:06.913 [DEBUG] [Thread-131458] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:06.913 [DEBUG] [Thread-131458] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:57:06.913 [DEBUG] [Thread-131458] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:06.913 [DEBUG] [Thread-131458] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] Compression: none
2025-09-28T17:57:06.914 [DEBUG] [Thread-131458] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:06.972 [DEBUG] [Thread-131458] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:06.973 [DEBUG] [Thread-131458] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:06.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:57:06.974 [DEBUG] [Thread-131458] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:57:06.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:07.031 [DEBUG] [Thread-131458] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:07.031 [DEBUG] [Thread-131458] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:07.032 [DEBUG] [Thread-131458] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:07.032 [DEBUG] [Thread-131458] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:57:07.032 [DEBUG] [Thread-131458] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:07.051 [INFO] [Thread-131458] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:07.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-28T17:57:07.052 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:08.108 [DEBUG] [Thread-131458] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:08.109 [DEBUG] [Thread-131458] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:08.156 [DEBUG] [Thread-131458] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:08.157 [DEBUG] [Thread-131458] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:08.165 [DEBUG] [Thread-131458] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:08.175 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:08.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-28T17:57:08.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-28T17:57:08.192 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:08.192 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:08.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:08.200 [DEBUG] [Thread-131458] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:14.674 [DEBUG] [Thread-131460 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:18.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:57:18.203 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:57:18.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-28T17:57:18.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 56, 58), 12.42, 43.0, 0.0, 18.37, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:57:18.791 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:56:58
2025-09-28T17:57:18.897 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:57:19.049 [DEBUG] [Thread-131461] [transport.py] [_log()] starting thread (client mode): 0x2b91e4a0
2025-09-28T17:57:19.049 [DEBUG] [Thread-131461] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:19.062 [DEBUG] [Thread-131461] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:57:19.062 [INFO] [Thread-131461] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:19.065 [DEBUG] [Thread-131461] [transport.py] [_log()] Compression: none
2025-09-28T17:57:19.066 [DEBUG] [Thread-131461] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:19.082 [DEBUG] [Thread-131461] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:19.083 [DEBUG] [Thread-131461] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:19.083 [DEBUG] [Thread-131461] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:57:19.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:57:19.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:19.085 [DEBUG] [Thread-131461] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:19.085 [DEBUG] [Thread-131461] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:19.085 [DEBUG] [Thread-131461] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:19.085 [DEBUG] [Thread-131461] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:57:19.085 [DEBUG] [Thread-131461] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:19.120 [INFO] [Thread-131461] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:19.121 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:19.727 [DEBUG] [Thread-131461] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:19.727 [DEBUG] [Thread-131461] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:19.728 [DEBUG] [Thread-131461] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:57:19.768 [DEBUG] [Thread-131461] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:19.768 [DEBUG] [Thread-131461] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:19.771 [DEBUG] [Thread-131461] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:19.784 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:19.784 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:57:19.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:57:19.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:57:19.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:19.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:57:19.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:19.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.664316 -999.00  +15.10  18.96     47   +4.00 1 1 1 1 1   887    0 10.23 -46.99 ----- 19.0 19.0 201.0 24.4 18.2 -27.3 18.0 -26.2 19.0 -26.6 19.4 -28.1
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.664316
2025-09-28T17:57:19.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:57:19.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:57:19.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:57:19.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:57:19.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:57:19.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:56:58', tmtdew=12.42, humidity=43.0, cloud=0.0, wind=18.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:56:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:57:19.794 [DEBUG] [Thread-131461] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:19.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:57:19.888 [DEBUG] [Thread-131464] [transport.py] [_log()] starting thread (client mode): 0x2b994520
2025-09-28T17:57:19.888 [DEBUG] [Thread-131464] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:19.903 [DEBUG] [Thread-131464] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:57:19.904 [INFO] [Thread-131464] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:19.911 [DEBUG] [Thread-131464] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:19.912 [DEBUG] [Thread-131464] [transport.py] [_log()] Compression: none
2025-09-28T17:57:19.912 [DEBUG] [Thread-131464] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:19.970 [DEBUG] [Thread-131464] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:19.970 [DEBUG] [Thread-131464] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:19.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:57:19.971 [DEBUG] [Thread-131464] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:57:19.972 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:20.026 [DEBUG] [Thread-131464] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:20.027 [DEBUG] [Thread-131464] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:20.027 [DEBUG] [Thread-131464] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:20.027 [DEBUG] [Thread-131464] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:57:20.027 [DEBUG] [Thread-131464] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:20.050 [INFO] [Thread-131464] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:20.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-28T17:57:20.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:21.025 [DEBUG] [Thread-131464] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:21.025 [DEBUG] [Thread-131464] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:21.073 [DEBUG] [Thread-131464] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:21.073 [DEBUG] [Thread-131464] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:21.082 [DEBUG] [Thread-131464] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:21.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57: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')
2025-09-28T17:57:21.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-28T17:57:21.107 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:21.108 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:21.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:21.119 [DEBUG] [Thread-131464] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:25.510 [DEBUG] [Thread-131466 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:29.723 [DEBUG] [Thread-131467 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:31.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:57:31.117 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:57:31.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-28T17:57:31.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 56, 58), 12.42, 43.0, 0.0, 18.37, 14.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:57:31.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:56:58
2025-09-28T17:57:31.867 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:57:32.020 [DEBUG] [Thread-131468] [transport.py] [_log()] starting thread (client mode): 0x2b996a70
2025-09-28T17:57:32.020 [DEBUG] [Thread-131468] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:32.040 [DEBUG] [Thread-131468] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:57:32.040 [INFO] [Thread-131468] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:32.043 [DEBUG] [Thread-131468] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] Compression: none
2025-09-28T17:57:32.044 [DEBUG] [Thread-131468] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:32.060 [DEBUG] [Thread-131468] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:32.060 [DEBUG] [Thread-131468] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:32.060 [DEBUG] [Thread-131468] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:57:32.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:57:32.060 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:32.061 [DEBUG] [Thread-131468] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:32.061 [DEBUG] [Thread-131468] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:32.061 [DEBUG] [Thread-131468] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:32.061 [DEBUG] [Thread-131468] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:57:32.061 [DEBUG] [Thread-131468] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:32.072 [INFO] [Thread-131468] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:32.072 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:32.696 [DEBUG] [Thread-131468] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:32.696 [DEBUG] [Thread-131468] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:32.696 [DEBUG] [Thread-131468] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:57:32.737 [DEBUG] [Thread-131468] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:32.737 [DEBUG] [Thread-131468] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:32.738 [DEBUG] [Thread-131468] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:32.751 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:32.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:57:32.751 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:57:32.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:57:32.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:32.764 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:57:32.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.664663 -999.00  +15.10  11.23     47   +4.10 1 1 1 1 1   887    0 10.20 -45.99 ----- 11.2 11.2 200.6 20.9 18.2 -26.8 17.9 -25.9 18.9 -26.3 19.4 -27.7
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:57:32.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.664663
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:57:32.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:56:58', tmtdew=12.42, humidity=43.0, cloud=0.0, wind=18.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:57:32.765 [DEBUG] [Thread-131468] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:32.840 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:57:32.850 [DEBUG] [Thread-131471] [transport.py] [_log()] starting thread (client mode): 0x2b9dece0
2025-09-28T17:57:32.851 [DEBUG] [Thread-131471] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:32.866 [DEBUG] [Thread-131471] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:57:32.866 [INFO] [Thread-131471] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:32.873 [DEBUG] [Thread-131471] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:32.874 [DEBUG] [Thread-131471] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:32.874 [DEBUG] [Thread-131471] [transport.py] [_log()] Compression: none
2025-09-28T17:57:32.874 [DEBUG] [Thread-131471] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:32.930 [DEBUG] [Thread-131471] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:32.930 [DEBUG] [Thread-131471] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:32.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:57:32.931 [DEBUG] [Thread-131471] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:57:32.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:32.990 [DEBUG] [Thread-131471] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:32.990 [DEBUG] [Thread-131471] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:32.990 [DEBUG] [Thread-131471] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:32.990 [DEBUG] [Thread-131471] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:57:32.991 [DEBUG] [Thread-131471] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:33.005 [INFO] [Thread-131471] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57: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-28T17:57:33.005 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:33.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:33.172 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:33.964 [DEBUG] [Thread-131471] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:33.964 [DEBUG] [Thread-131471] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:34.012 [DEBUG] [Thread-131471] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:34.012 [DEBUG] [Thread-131471] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:34.020 [DEBUG] [Thread-131471] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:34.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:34.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')
2025-09-28T17:57:34.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-28T17:57:34.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:34.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:34.044 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:34.051 [DEBUG] [Thread-131471] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:44.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:57:44.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:57:44.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:57:44.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 57, 30), 12.45, 42.9, 0.0, 16.23, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:57:44.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:57:30
2025-09-28T17:57:44.751 [DEBUG] [Thread-131473 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:44.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:57:44.916 [DEBUG] [Thread-131474] [transport.py] [_log()] starting thread (client mode): 0x2b9bbc10
2025-09-28T17:57:44.916 [DEBUG] [Thread-131474] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:44.936 [DEBUG] [Thread-131474] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:57:44.936 [INFO] [Thread-131474] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:57:44.940 [DEBUG] [Thread-131474] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:44.940 [DEBUG] [Thread-131474] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:57:44.940 [DEBUG] [Thread-131474] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:44.940 [DEBUG] [Thread-131474] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] Compression: none
2025-09-28T17:57:44.941 [DEBUG] [Thread-131474] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:44.959 [DEBUG] [Thread-131474] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:44.960 [DEBUG] [Thread-131474] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:44.961 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:57:44.961 [DEBUG] [Thread-131474] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:57:44.962 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:44.963 [DEBUG] [Thread-131474] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:44.963 [DEBUG] [Thread-131474] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:44.963 [DEBUG] [Thread-131474] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:44.963 [DEBUG] [Thread-131474] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:57:44.963 [DEBUG] [Thread-131474] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:44.988 [INFO] [Thread-131474] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:44.988 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:45.631 [DEBUG] [Thread-131474] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:45.631 [DEBUG] [Thread-131474] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:45.632 [DEBUG] [Thread-131474] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:57:45.672 [DEBUG] [Thread-131474] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:45.672 [DEBUG] [Thread-131474] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:45.676 [DEBUG] [Thread-131474] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:45.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:45.688 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:57:45.690 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:57:45.692 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:57:45.697 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:45.699 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:57:45.699 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:45.699 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.664663 -999.00  +15.10  11.23     47   +4.10 1 1 1 1 1   887    0 10.20 -45.99 ----- 11.2 11.2 200.6 20.9 18.2 -26.8 17.9 -25.9 18.9 -26.3 19.4 -27.7
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.664663
2025-09-28T17:57:45.700 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:57:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:57:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:57:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:57:45.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:57:45.701 [DEBUG] [Thread-131474] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:45.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:57:30', tmtdew=12.45, humidity=42.9, cloud=0.0, wind=16.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:57:45.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-28T17:57:45.799 [DEBUG] [Thread-131477] [transport.py] [_log()] starting thread (client mode): 0x2b9dcca0
2025-09-28T17:57:45.799 [DEBUG] [Thread-131477] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:45.814 [DEBUG] [Thread-131477] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:57:45.814 [INFO] [Thread-131477] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:45.822 [DEBUG] [Thread-131477] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] Compression: none
2025-09-28T17:57:45.823 [DEBUG] [Thread-131477] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:45.878 [DEBUG] [Thread-131477] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:45.878 [DEBUG] [Thread-131477] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:45.879 [DEBUG] [Thread-131477] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:57:45.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:57:45.879 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:45.934 [DEBUG] [Thread-131477] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:45.935 [DEBUG] [Thread-131477] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:45.935 [DEBUG] [Thread-131477] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:45.935 [DEBUG] [Thread-131477] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:57:45.935 [DEBUG] [Thread-131477] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:45.953 [INFO] [Thread-131477] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:45.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-28T17:57:45.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:46.971 [DEBUG] [Thread-131477] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:46.971 [DEBUG] [Thread-131477] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:47.020 [DEBUG] [Thread-131477] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:47.020 [DEBUG] [Thread-131477] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:47.029 [DEBUG] [Thread-131477] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:47.038 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:47.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-28T17:57:47.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-28T17:57:47.056 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:47.056 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:47.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:47.065 [DEBUG] [Thread-131477] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:57.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:57:57.067 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:57:57.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-28T17:57:57.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 57, 30), 12.45, 42.9, 0.0, 16.23, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:57:57.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:57:30
2025-09-28T17:57:57.764 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:57:57.911 [DEBUG] [Thread-131479] [transport.py] [_log()] starting thread (client mode): 0x2b9dcbe0
2025-09-28T17:57:57.912 [DEBUG] [Thread-131479] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:57.933 [DEBUG] [Thread-131479] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:57:57.933 [INFO] [Thread-131479] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:57:57.936 [DEBUG] [Thread-131479] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:57.936 [DEBUG] [Thread-131479] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:57:57.936 [DEBUG] [Thread-131479] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:57.936 [DEBUG] [Thread-131479] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:57.936 [DEBUG] [Thread-131479] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] Compression: none
2025-09-28T17:57:57.937 [DEBUG] [Thread-131479] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:57.956 [DEBUG] [Thread-131479] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:57.957 [DEBUG] [Thread-131479] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:57.958 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:57:57.958 [DEBUG] [Thread-131479] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:57:57.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:57.961 [DEBUG] [Thread-131479] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:57.961 [DEBUG] [Thread-131479] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:57.961 [DEBUG] [Thread-131479] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:57.961 [DEBUG] [Thread-131479] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:57:57.961 [DEBUG] [Thread-131479] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:57.983 [INFO] [Thread-131479] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:57.984 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:58.619 [DEBUG] [Thread-131479] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:58.619 [DEBUG] [Thread-131479] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:58.619 [DEBUG] [Thread-131479] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:57:58.660 [DEBUG] [Thread-131479] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:58.661 [DEBUG] [Thread-131479] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:58.664 [DEBUG] [Thread-131479] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:58.675 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57:58.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:57:58.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:57:58.679 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:57:58.685 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:57:58.687 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:57:58.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:58.687 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:57:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.664663 -999.00  +15.10  11.23     47   +4.10 1 1 1 1 1   887    0 10.20 -45.99 ----- 11.2 11.2 200.6 20.9 18.2 -26.8 17.9 -25.9 18.9 -26.3 19.4 -27.7
2025-09-28T17:57:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:57:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:57:58.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.664663
2025-09-28T17:57:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:57:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:57:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:57:58.689 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:57:58.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:57:58.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:57:30', tmtdew=12.45, humidity=42.9, cloud=0.0, wind=16.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:57:58.690 [DEBUG] [Thread-131479] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:57:58.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-28T17:57:58.784 [DEBUG] [Thread-131482] [transport.py] [_log()] starting thread (client mode): 0x2e3c3670
2025-09-28T17:57:58.785 [DEBUG] [Thread-131482] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:57:58.799 [DEBUG] [Thread-131482] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:57:58.799 [INFO] [Thread-131482] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:57:58.806 [DEBUG] [Thread-131482] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] client lang: <none>
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] server lang: <none>
2025-09-28T17:57:58.807 [DEBUG] [Thread-131482] [transport.py] [_log()] kex follows: False
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] Compression: none
2025-09-28T17:57:58.808 [DEBUG] [Thread-131482] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:57:58.871 [DEBUG] [Thread-131482] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:57:58.871 [DEBUG] [Thread-131482] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:57:58.872 [DEBUG] [Thread-131482] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:57:58.872 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:57:58.873 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:57:58.930 [DEBUG] [Thread-131482] [transport.py] [_log()] userauth is OK
2025-09-28T17:57:58.930 [DEBUG] [Thread-131482] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:57:58.930 [DEBUG] [Thread-131482] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:57:58.930 [DEBUG] [Thread-131482] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:57:58.930 [DEBUG] [Thread-131482] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:57:58.949 [INFO] [Thread-131482] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:57:58.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-28T17:57:58.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:57:59.788 [DEBUG] [Thread-131484 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:57:59.911 [DEBUG] [Thread-131482] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:57:59.912 [DEBUG] [Thread-131482] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:57:59.959 [DEBUG] [Thread-131482] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:57:59.959 [DEBUG] [Thread-131482] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:57:59.968 [DEBUG] [Thread-131482] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:57:59.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:57: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')
2025-09-28T17:57:59.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-28T17:57:59.994 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:57:59.994 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:57:59.995 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:00.003 [DEBUG] [Thread-131482] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:10.005 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:58:10.006 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:58:10.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-28T17:58:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 58, 2), 12.5, 42.78, 0.0, 17.5, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:58:10.615 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:58:02
2025-09-28T17:58:10.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:58:10.880 [DEBUG] [Thread-131485] [transport.py] [_log()] starting thread (client mode): 0x2b91fa30
2025-09-28T17:58:10.881 [DEBUG] [Thread-131485] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:10.900 [DEBUG] [Thread-131485] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:58:10.901 [INFO] [Thread-131485] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] Compression: none
2025-09-28T17:58:10.904 [DEBUG] [Thread-131485] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:10.920 [DEBUG] [Thread-131485] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:10.921 [DEBUG] [Thread-131485] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:10.921 [DEBUG] [Thread-131485] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:58:10.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:58:10.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:10.922 [DEBUG] [Thread-131485] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:10.922 [DEBUG] [Thread-131485] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:10.922 [DEBUG] [Thread-131485] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:10.922 [DEBUG] [Thread-131485] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:58:10.922 [DEBUG] [Thread-131485] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:10.936 [INFO] [Thread-131485] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:10.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:11.557 [DEBUG] [Thread-131485] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:11.557 [DEBUG] [Thread-131485] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:11.557 [DEBUG] [Thread-131485] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:58:11.598 [DEBUG] [Thread-131485] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:11.598 [DEBUG] [Thread-131485] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:11.600 [DEBUG] [Thread-131485] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:11.614 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:11.614 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:58:11.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:58:11.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:58:11.618 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:11.619 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:58:11.619 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.665010 -999.00  +15.10  20.06     47   +4.00 1 1 1 1 1   887    0 10.29 -44.80 ----- 20.1 20.1 199.8 23.2 18.1 -27.3 17.9 -26.6 18.9 -26.3 19.3 -28.5
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.665010
2025-09-28T17:58:11.619 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:58:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:58:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:58:11.620 [DEBUG] [Thread-131485] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:58:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:58:11.620 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:58:02', tmtdew=12.5, humidity=42.78, cloud=0.0, wind=17.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:58:11.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-28T17:58:11.711 [DEBUG] [Thread-131488] [transport.py] [_log()] starting thread (client mode): 0x2b9a8c40
2025-09-28T17:58:11.711 [DEBUG] [Thread-131488] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:11.726 [DEBUG] [Thread-131488] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:58:11.726 [INFO] [Thread-131488] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:58:11.733 [DEBUG] [Thread-131488] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] Compression: none
2025-09-28T17:58:11.734 [DEBUG] [Thread-131488] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:11.791 [DEBUG] [Thread-131488] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:11.791 [DEBUG] [Thread-131488] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:11.792 [DEBUG] [Thread-131488] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:58:11.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:58:11.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:11.854 [DEBUG] [Thread-131488] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:11.854 [DEBUG] [Thread-131488] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:11.854 [DEBUG] [Thread-131488] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:11.854 [DEBUG] [Thread-131488] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:58:11.854 [DEBUG] [Thread-131488] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:11.870 [INFO] [Thread-131488] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:11.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-28T17:58:11.871 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:12.856 [DEBUG] [Thread-131488] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:12.856 [DEBUG] [Thread-131488] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:12.904 [DEBUG] [Thread-131488] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:12.904 [DEBUG] [Thread-131488] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:12.913 [DEBUG] [Thread-131488] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:12.920 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:12.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-28T17:58:12.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-28T17:58:12.936 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:12.936 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:12.937 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:12.944 [DEBUG] [Thread-131488] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:14.836 [DEBUG] [Thread-131490 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:22.947 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:58:22.947 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:58:22.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-28T17:58:23.538 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 58, 2), 12.5, 42.78, 0.0, 17.5, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:58:23.539 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:58:02
2025-09-28T17:58:23.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:58:23.793 [DEBUG] [Thread-131491] [transport.py] [_log()] starting thread (client mode): 0x2b9dd660
2025-09-28T17:58:23.793 [DEBUG] [Thread-131491] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:23.812 [DEBUG] [Thread-131491] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:58:23.812 [INFO] [Thread-131491] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:23.815 [DEBUG] [Thread-131491] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] Compression: none
2025-09-28T17:58:23.816 [DEBUG] [Thread-131491] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:23.835 [DEBUG] [Thread-131491] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:23.836 [DEBUG] [Thread-131491] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:23.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:58:23.837 [DEBUG] [Thread-131491] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:58:23.837 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:23.839 [DEBUG] [Thread-131491] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:23.839 [DEBUG] [Thread-131491] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:23.839 [DEBUG] [Thread-131491] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:23.839 [DEBUG] [Thread-131491] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:58:23.839 [DEBUG] [Thread-131491] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:23.862 [INFO] [Thread-131491] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:23.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:24.448 [DEBUG] [Thread-131491] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:24.449 [DEBUG] [Thread-131491] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:24.449 [DEBUG] [Thread-131491] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:58:24.489 [DEBUG] [Thread-131491] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:24.489 [DEBUG] [Thread-131491] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:24.492 [DEBUG] [Thread-131491] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:24.504 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:24.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:58:24.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:58:24.507 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:58:24.511 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:24.513 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:58:24.513 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:24.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:24.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:58:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.665010 -999.00  +15.10  20.06     47   +4.00 1 1 1 1 1   887    0 10.29 -44.80 ----- 20.1 20.1 199.8 23.2 18.1 -27.3 17.9 -26.6 18.9 -26.3 19.3 -28.5
2025-09-28T17:58:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:58:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:58:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.665010
2025-09-28T17:58:24.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:58:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:58:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:58:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:58:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:58:24.515 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:58:02', tmtdew=12.5, humidity=42.78, cloud=0.0, wind=17.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:58:24.515 [DEBUG] [Thread-131491] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:24.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-28T17:58:24.611 [DEBUG] [Thread-131494] [transport.py] [_log()] starting thread (client mode): 0x2b91f520
2025-09-28T17:58:24.611 [DEBUG] [Thread-131494] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:24.626 [DEBUG] [Thread-131494] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:58:24.627 [INFO] [Thread-131494] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:58:24.634 [DEBUG] [Thread-131494] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:24.634 [DEBUG] [Thread-131494] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:58:24.634 [DEBUG] [Thread-131494] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:24.634 [DEBUG] [Thread-131494] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] Compression: none
2025-09-28T17:58:24.635 [DEBUG] [Thread-131494] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:24.694 [DEBUG] [Thread-131494] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:24.694 [DEBUG] [Thread-131494] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:24.695 [DEBUG] [Thread-131494] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:58:24.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:58:24.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:24.754 [DEBUG] [Thread-131494] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:24.754 [DEBUG] [Thread-131494] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:24.754 [DEBUG] [Thread-131494] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:24.754 [DEBUG] [Thread-131494] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:58:24.754 [DEBUG] [Thread-131494] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:24.772 [INFO] [Thread-131494] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:24.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-28T17:58:24.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:25.563 [DEBUG] [Thread-131496 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:25.758 [DEBUG] [Thread-131494] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:25.758 [DEBUG] [Thread-131494] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:25.806 [DEBUG] [Thread-131494] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:25.806 [DEBUG] [Thread-131494] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:25.815 [DEBUG] [Thread-131494] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:25.824 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:25.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-28T17:58:25.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-28T17:58:25.842 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:25.842 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:25.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:25.850 [DEBUG] [Thread-131494] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:29.871 [DEBUG] [Thread-131497 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:33.314 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:33.315 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:35.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:58:35.852 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:58:35.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:58:36.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 58, 2), 12.5, 42.78, 0.0, 17.5, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:58:36.486 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:58:02
2025-09-28T17:58:36.596 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:58:36.746 [DEBUG] [Thread-131498] [transport.py] [_log()] starting thread (client mode): 0x2b9de290
2025-09-28T17:58:36.746 [DEBUG] [Thread-131498] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:36.766 [DEBUG] [Thread-131498] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:58:36.766 [INFO] [Thread-131498] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:58:36.769 [DEBUG] [Thread-131498] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:36.769 [DEBUG] [Thread-131498] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:36.770 [DEBUG] [Thread-131498] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:36.771 [DEBUG] [Thread-131498] [transport.py] [_log()] Compression: none
2025-09-28T17:58:36.771 [DEBUG] [Thread-131498] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:36.789 [DEBUG] [Thread-131498] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:36.789 [DEBUG] [Thread-131498] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:36.790 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:58:36.790 [DEBUG] [Thread-131498] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:58:36.791 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:36.792 [DEBUG] [Thread-131498] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:36.792 [DEBUG] [Thread-131498] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:36.792 [DEBUG] [Thread-131498] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:36.792 [DEBUG] [Thread-131498] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:58:36.792 [DEBUG] [Thread-131498] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:36.816 [INFO] [Thread-131498] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:36.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:37.436 [DEBUG] [Thread-131498] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:37.436 [DEBUG] [Thread-131498] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:37.436 [DEBUG] [Thread-131498] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:58:37.477 [DEBUG] [Thread-131498] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:37.477 [DEBUG] [Thread-131498] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:37.480 [DEBUG] [Thread-131498] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:37.492 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:37.492 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:58:37.494 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:58:37.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:58:37.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:37.502 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:58:37.502 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.665010 -999.00  +15.10  20.06     47   +4.00 1 1 1 1 1   887    0 10.29 -44.80 ----- 20.1 20.1 199.8 23.2 18.1 -27.3 17.9 -26.6 18.9 -26.3 19.3 -28.5
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:58:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.665010
2025-09-28T17:58:37.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:58:37.504 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:58:37.504 [DEBUG] [Thread-131498] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:37.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:58:37.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:58:37.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:58:37.505 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:58:02', tmtdew=12.5, humidity=42.78, cloud=0.0, wind=17.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:57:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:58:37.590 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:58:37.601 [DEBUG] [Thread-131501] [transport.py] [_log()] starting thread (client mode): 0x2b9aaf50
2025-09-28T17:58:37.601 [DEBUG] [Thread-131501] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:37.616 [DEBUG] [Thread-131501] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:58:37.616 [INFO] [Thread-131501] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:37.624 [DEBUG] [Thread-131501] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:37.625 [DEBUG] [Thread-131501] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:37.625 [DEBUG] [Thread-131501] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:37.625 [DEBUG] [Thread-131501] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:37.625 [DEBUG] [Thread-131501] [transport.py] [_log()] Compression: none
2025-09-28T17:58:37.625 [DEBUG] [Thread-131501] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:37.681 [DEBUG] [Thread-131501] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:37.682 [DEBUG] [Thread-131501] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:37.682 [DEBUG] [Thread-131501] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:58:37.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:58:37.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:37.740 [DEBUG] [Thread-131501] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:37.741 [DEBUG] [Thread-131501] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:37.741 [DEBUG] [Thread-131501] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:37.741 [DEBUG] [Thread-131501] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:58:37.741 [DEBUG] [Thread-131501] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:37.760 [INFO] [Thread-131501] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:37.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-28T17:58:37.762 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:38.709 [DEBUG] [Thread-131501] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:38.709 [DEBUG] [Thread-131501] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:38.757 [DEBUG] [Thread-131501] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:38.757 [DEBUG] [Thread-131501] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:38.766 [DEBUG] [Thread-131501] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:38.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:38.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-28T17:58: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-28T17:58:38.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:38.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:38.794 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:38.803 [DEBUG] [Thread-131501] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:44.902 [DEBUG] [Thread-131503 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:58:48.804 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:58:48.804 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:58:48.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-28T17:58:49.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 58, 34), 12.54, 42.67, 0.0, 14.59, 14.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:58:49.418 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:58:34
2025-09-28T17:58:49.537 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:58:49.688 [DEBUG] [Thread-131504] [transport.py] [_log()] starting thread (client mode): 0x2e3c35e0
2025-09-28T17:58:49.689 [DEBUG] [Thread-131504] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:49.707 [DEBUG] [Thread-131504] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:58:49.707 [INFO] [Thread-131504] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:49.710 [DEBUG] [Thread-131504] [transport.py] [_log()] Compression: none
2025-09-28T17:58:49.711 [DEBUG] [Thread-131504] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:49.722 [DEBUG] [Thread-131504] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:49.723 [DEBUG] [Thread-131504] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:49.723 [DEBUG] [Thread-131504] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:58:49.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:58:49.723 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:49.723 [DEBUG] [Thread-131504] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:49.724 [DEBUG] [Thread-131504] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:49.724 [DEBUG] [Thread-131504] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:49.724 [DEBUG] [Thread-131504] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:58:49.724 [DEBUG] [Thread-131504] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:49.750 [INFO] [Thread-131504] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:49.750 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:50.405 [DEBUG] [Thread-131504] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:50.406 [DEBUG] [Thread-131504] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:50.406 [DEBUG] [Thread-131504] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:58:50.447 [DEBUG] [Thread-131504] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:50.447 [DEBUG] [Thread-131504] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:50.449 [DEBUG] [Thread-131504] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:50.463 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:50.463 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:58:50.464 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:58:50.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:58:50.467 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:50.468 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:58:50.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.665358 -999.00  +15.10  12.25     47   +4.10 1 1 1 1 1   887    0 10.11 -46.28 ----- 12.2 12.2 192.9 24.7 18.0 -26.8 17.8 -26.1 18.8 -26.9 19.2 -27.8
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.665358
2025-09-28T17:58:50.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:58:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:58:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:58:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:58:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:58:50.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:58:34', tmtdew=12.54, humidity=42.67, cloud=0.0, wind=14.59, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:58:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:58:50.469 [DEBUG] [Thread-131504] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:50.544 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T17:58:50.553 [DEBUG] [Thread-131507] [transport.py] [_log()] starting thread (client mode): 0x2e3c0940
2025-09-28T17:58:50.553 [DEBUG] [Thread-131507] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:58:50.568 [DEBUG] [Thread-131507] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:58:50.568 [INFO] [Thread-131507] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:58:50.575 [DEBUG] [Thread-131507] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:58:50.575 [DEBUG] [Thread-131507] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:58:50.575 [DEBUG] [Thread-131507] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:58:50.575 [DEBUG] [Thread-131507] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] client lang: <none>
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] server lang: <none>
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] kex follows: False
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] Compression: none
2025-09-28T17:58:50.576 [DEBUG] [Thread-131507] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:58:50.632 [DEBUG] [Thread-131507] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:58:50.632 [DEBUG] [Thread-131507] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:58:50.632 [DEBUG] [Thread-131507] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:58:50.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:58:50.632 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:58:50.693 [DEBUG] [Thread-131507] [transport.py] [_log()] userauth is OK
2025-09-28T17:58:50.693 [DEBUG] [Thread-131507] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:58:50.693 [DEBUG] [Thread-131507] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:58:50.693 [DEBUG] [Thread-131507] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:58:50.693 [DEBUG] [Thread-131507] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:58:50.708 [INFO] [Thread-131507] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:58:50.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-28T17:58:50.708 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:58:51.699 [DEBUG] [Thread-131507] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:58:51.699 [DEBUG] [Thread-131507] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:58:51.747 [DEBUG] [Thread-131507] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:58:51.747 [DEBUG] [Thread-131507] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:58:51.755 [DEBUG] [Thread-131507] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:58:51.763 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:58:51.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-28T17:58:51.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-28T17:58:51.779 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:58:51.779 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:58:51.779 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:58:51.786 [DEBUG] [Thread-131507] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:58:59.936 [DEBUG] [Thread-131509 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:01.784 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:59:01.785 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:59:01.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:59:02.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 58, 34), 12.54, 42.67, 0.0, 14.59, 14.92, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:59:02.374 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:58:34
2025-09-28T17:59:02.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:59:02.632 [DEBUG] [Thread-131510] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-28T17:59:02.632 [DEBUG] [Thread-131510] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:02.645 [DEBUG] [Thread-131510] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:59:02.645 [INFO] [Thread-131510] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:02.649 [DEBUG] [Thread-131510] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:02.650 [DEBUG] [Thread-131510] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:02.650 [DEBUG] [Thread-131510] [transport.py] [_log()] Compression: none
2025-09-28T17:59:02.650 [DEBUG] [Thread-131510] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:02.664 [DEBUG] [Thread-131510] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:02.665 [DEBUG] [Thread-131510] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:02.665 [DEBUG] [Thread-131510] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:59:02.665 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:59:02.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:02.666 [DEBUG] [Thread-131510] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:02.667 [DEBUG] [Thread-131510] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:02.667 [DEBUG] [Thread-131510] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:02.667 [DEBUG] [Thread-131510] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:59:02.667 [DEBUG] [Thread-131510] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:02.684 [INFO] [Thread-131510] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:02.685 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:03.305 [DEBUG] [Thread-131510] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:03.305 [DEBUG] [Thread-131510] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:03.305 [DEBUG] [Thread-131510] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:59:03.346 [DEBUG] [Thread-131510] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:03.347 [DEBUG] [Thread-131510] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:03.350 [DEBUG] [Thread-131510] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:03.361 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:03.361 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:59:03.363 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:59:03.364 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:59:03.369 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:03.371 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:59:03.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:03.371 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.665358 -999.00  +15.10  12.25     47   +4.10 1 1 1 1 1   887    0 10.11 -46.28 ----- 12.2 12.2 192.9 24.7 18.0 -26.8 17.8 -26.1 18.8 -26.9 19.2 -27.8
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.665358
2025-09-28T17:59:03.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:59:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:59:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:59:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:59:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:59:03.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:58:34', tmtdew=12.54, humidity=42.67, cloud=0.0, wind=14.59, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:58:06.931', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:59:03.373 [DEBUG] [Thread-131510] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:03.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-28T17:59:03.471 [DEBUG] [Thread-131513] [transport.py] [_log()] starting thread (client mode): 0x2b997670
2025-09-28T17:59:03.471 [DEBUG] [Thread-131513] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:03.486 [DEBUG] [Thread-131513] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:59:03.486 [INFO] [Thread-131513] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:03.494 [DEBUG] [Thread-131513] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:03.495 [DEBUG] [Thread-131513] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:03.495 [DEBUG] [Thread-131513] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:03.495 [DEBUG] [Thread-131513] [transport.py] [_log()] Compression: none
2025-09-28T17:59:03.495 [DEBUG] [Thread-131513] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:03.554 [DEBUG] [Thread-131513] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:03.555 [DEBUG] [Thread-131513] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:03.555 [DEBUG] [Thread-131513] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:59:03.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:59:03.556 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:03.613 [DEBUG] [Thread-131513] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:03.614 [DEBUG] [Thread-131513] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:03.614 [DEBUG] [Thread-131513] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:03.614 [DEBUG] [Thread-131513] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:59:03.614 [DEBUG] [Thread-131513] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:03.634 [INFO] [Thread-131513] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:03.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-28T17:59:03.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:04.653 [DEBUG] [Thread-131513] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:04.653 [DEBUG] [Thread-131513] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:04.701 [DEBUG] [Thread-131513] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:04.701 [DEBUG] [Thread-131513] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:04.710 [DEBUG] [Thread-131513] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:04.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:04.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')
2025-09-28T17:59:04.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') -> 00000000
2025-09-28T17:59:04.737 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:04.737 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:04.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:04.745 [DEBUG] [Thread-131513] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:14.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:59:14.748 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:59:14.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:59:14.975 [DEBUG] [Thread-131515 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:15.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 59, 6), 12.61, 42.47, 0.0, 15.86, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:59:15.329 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:59:06
2025-09-28T17:59:15.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:59:15.581 [DEBUG] [Thread-131516] [transport.py] [_log()] starting thread (client mode): 0x2b996830
2025-09-28T17:59:15.581 [DEBUG] [Thread-131516] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:15.599 [DEBUG] [Thread-131516] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:59:15.599 [INFO] [Thread-131516] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:59:15.602 [DEBUG] [Thread-131516] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:15.602 [DEBUG] [Thread-131516] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:59:15.602 [DEBUG] [Thread-131516] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] Compression: none
2025-09-28T17:59:15.603 [DEBUG] [Thread-131516] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:15.614 [DEBUG] [Thread-131516] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:15.615 [DEBUG] [Thread-131516] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:15.615 [DEBUG] [Thread-131516] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:59:15.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:59:15.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:15.616 [DEBUG] [Thread-131516] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:15.616 [DEBUG] [Thread-131516] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:15.616 [DEBUG] [Thread-131516] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:15.616 [DEBUG] [Thread-131516] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:59:15.616 [DEBUG] [Thread-131516] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:15.647 [INFO] [Thread-131516] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:15.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:16.192 [DEBUG] [Thread-131516] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:16.192 [DEBUG] [Thread-131516] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:16.192 [DEBUG] [Thread-131516] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:59:16.233 [DEBUG] [Thread-131516] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:16.233 [DEBUG] [Thread-131516] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:16.236 [DEBUG] [Thread-131516] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:16.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:16.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:59:16.251 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:59:16.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:59:16.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:16.260 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:59:16.260 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:16.260 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:16.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:59:16.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666052 -999.00  +14.90  18.05     48   +4.00 1 1 1 1 1   887    0 10.06 -49.81 ----- 18.1 18.1 192.2 21.0 17.9 -26.9 17.7 -27.4 18.7 -26.1 19.1 -27.3
2025-09-28T17:59:16.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:59:16.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:59:16.261 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666052
2025-09-28T17:59:16.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:59:16.262 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:59:16.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:59:16.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:59:16.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:59:16.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:59:06', tmtdew=12.61, humidity=42.47, cloud=0.0, wind=15.86, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:59:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:59:16.263 [DEBUG] [Thread-131516] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:16.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-28T17:59:16.356 [DEBUG] [Thread-131519] [transport.py] [_log()] starting thread (client mode): 0x2b996b90
2025-09-28T17:59:16.356 [DEBUG] [Thread-131519] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:16.370 [DEBUG] [Thread-131519] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:59:16.371 [INFO] [Thread-131519] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:59:16.378 [DEBUG] [Thread-131519] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:16.378 [DEBUG] [Thread-131519] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:59:16.378 [DEBUG] [Thread-131519] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:16.379 [DEBUG] [Thread-131519] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] Compression: none
2025-09-28T17:59:16.380 [DEBUG] [Thread-131519] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:16.437 [DEBUG] [Thread-131519] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:16.437 [DEBUG] [Thread-131519] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:16.438 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:59:16.438 [DEBUG] [Thread-131519] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:59:16.439 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:16.493 [DEBUG] [Thread-131519] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:16.493 [DEBUG] [Thread-131519] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:16.494 [DEBUG] [Thread-131519] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:16.494 [DEBUG] [Thread-131519] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:59:16.494 [DEBUG] [Thread-131519] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:16.512 [INFO] [Thread-131519] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:16.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-28T17:59:16.513 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:17.563 [DEBUG] [Thread-131519] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:17.564 [DEBUG] [Thread-131519] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:17.613 [DEBUG] [Thread-131519] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:17.614 [DEBUG] [Thread-131519] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:17.625 [DEBUG] [Thread-131519] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:17.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:17.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-28T17:59:17.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-28T17:59:17.657 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:17.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:17.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:17.669 [DEBUG] [Thread-131519] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:25.621 [DEBUG] [Thread-131521 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:27.661 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:59:27.661 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:59:27.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-28T17:59:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 59, 6), 12.61, 42.47, 0.0, 15.86, 14.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:59:28.275 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:59:06
2025-09-28T17:59:28.388 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:59:28.540 [DEBUG] [Thread-131522] [transport.py] [_log()] starting thread (client mode): 0x2e3c39a0
2025-09-28T17:59:28.540 [DEBUG] [Thread-131522] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:28.560 [DEBUG] [Thread-131522] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:59:28.560 [INFO] [Thread-131522] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:59:28.563 [DEBUG] [Thread-131522] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:28.563 [DEBUG] [Thread-131522] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:59:28.563 [DEBUG] [Thread-131522] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] Compression: none
2025-09-28T17:59:28.564 [DEBUG] [Thread-131522] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:28.581 [DEBUG] [Thread-131522] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:28.581 [DEBUG] [Thread-131522] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:28.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:59:28.582 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:59:28.582 [DEBUG] [Thread-131522] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:28.593 [INFO] [Thread-131522] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:28.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:29.312 [DEBUG] [Thread-131522] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:29.312 [DEBUG] [Thread-131522] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:29.312 [DEBUG] [Thread-131522] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:59:29.353 [DEBUG] [Thread-131522] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:29.353 [DEBUG] [Thread-131522] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:29.355 [DEBUG] [Thread-131522] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:29.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:29.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:59:29.367 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:59:29.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:59:29.371 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:29.372 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:59:29.372 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666052 -999.00  +14.90  18.05     48   +4.00 1 1 1 1 1   887    0 10.06 -49.81 ----- 18.1 18.1 192.2 21.0 17.9 -26.9 17.7 -27.4 18.7 -26.1 19.1 -27.3
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666052
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:59:29.372 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:59:06', tmtdew=12.61, humidity=42.47, cloud=0.0, wind=15.86, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:59:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:59:29.373 [DEBUG] [Thread-131522] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:29.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-28T17:59:29.459 [DEBUG] [Thread-131525] [transport.py] [_log()] starting thread (client mode): 0x2e3c25f0
2025-09-28T17:59:29.459 [DEBUG] [Thread-131525] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:29.473 [DEBUG] [Thread-131525] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:59:29.473 [INFO] [Thread-131525] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:29.480 [DEBUG] [Thread-131525] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:29.481 [DEBUG] [Thread-131525] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:29.481 [DEBUG] [Thread-131525] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:29.481 [DEBUG] [Thread-131525] [transport.py] [_log()] Compression: none
2025-09-28T17:59:29.481 [DEBUG] [Thread-131525] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:29.539 [DEBUG] [Thread-131525] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:29.540 [DEBUG] [Thread-131525] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:29.540 [DEBUG] [Thread-131525] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:59:29.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:59:29.540 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:29.596 [DEBUG] [Thread-131525] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:29.597 [DEBUG] [Thread-131525] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:29.597 [DEBUG] [Thread-131525] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:29.597 [DEBUG] [Thread-131525] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:59:29.597 [DEBUG] [Thread-131525] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:29.610 [INFO] [Thread-131525] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:29.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-28T17:59:29.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:30.005 [DEBUG] [Thread-131527 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:30.590 [DEBUG] [Thread-131525] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:30.590 [DEBUG] [Thread-131525] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:30.638 [DEBUG] [Thread-131525] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:30.638 [DEBUG] [Thread-131525] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:30.646 [DEBUG] [Thread-131525] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:30.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:30.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-28T17:59:30.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-28T17:59:30.668 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:30.669 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:30.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:30.676 [DEBUG] [Thread-131525] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:33.455 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:33.456 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:40.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:59:40.679 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:59:40.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-28T17:59:41.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 59, 38), 12.58, 42.92, 0.0, 18.3, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:59:41.272 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:59:38
2025-09-28T17:59:41.379 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:59:41.529 [DEBUG] [Thread-131528] [transport.py] [_log()] starting thread (client mode): 0x2e3c08e0
2025-09-28T17:59:41.529 [DEBUG] [Thread-131528] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:41.550 [DEBUG] [Thread-131528] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:59:41.551 [INFO] [Thread-131528] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:59:41.553 [DEBUG] [Thread-131528] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] Compression: none
2025-09-28T17:59:41.554 [DEBUG] [Thread-131528] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:41.571 [DEBUG] [Thread-131528] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:41.571 [DEBUG] [Thread-131528] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:41.572 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:59:41.572 [DEBUG] [Thread-131528] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:59:41.573 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:41.574 [DEBUG] [Thread-131528] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:41.575 [DEBUG] [Thread-131528] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:41.575 [DEBUG] [Thread-131528] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:41.575 [DEBUG] [Thread-131528] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:59:41.575 [DEBUG] [Thread-131528] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:41.599 [INFO] [Thread-131528] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:41.599 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:42.341 [DEBUG] [Thread-131528] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:42.341 [DEBUG] [Thread-131528] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:42.342 [DEBUG] [Thread-131528] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:59:42.382 [DEBUG] [Thread-131528] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:42.382 [DEBUG] [Thread-131528] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:42.385 [DEBUG] [Thread-131528] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:42.399 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:42.399 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:59:42.401 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:59:42.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:59:42.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:42.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:59:42.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666052 -999.00  +14.90  18.05     48   +4.00 1 1 1 1 1   887    0 10.06 -49.81 ----- 18.1 18.1 192.2 21.0 17.9 -26.9 17.7 -27.4 18.7 -26.1 19.1 -27.3
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:59:42.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666052
2025-09-28T17:59:42.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:59:42.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:59:42.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:59:42.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:59:42.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:59:42.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:59:38', tmtdew=12.58, humidity=42.92, cloud=0.0, wind=18.3, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:59:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:59:42.415 [DEBUG] [Thread-131528] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:42.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-28T17:59:42.513 [DEBUG] [Thread-131531] [transport.py] [_log()] starting thread (client mode): 0x2b995f60
2025-09-28T17:59:42.513 [DEBUG] [Thread-131531] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:42.528 [DEBUG] [Thread-131531] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:59:42.528 [INFO] [Thread-131531] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:59:42.535 [DEBUG] [Thread-131531] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:42.536 [DEBUG] [Thread-131531] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:42.537 [DEBUG] [Thread-131531] [transport.py] [_log()] Compression: none
2025-09-28T17:59:42.537 [DEBUG] [Thread-131531] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:42.593 [DEBUG] [Thread-131531] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:42.593 [DEBUG] [Thread-131531] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:42.594 [DEBUG] [Thread-131531] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:59:42.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:59:42.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:42.649 [DEBUG] [Thread-131531] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:42.649 [DEBUG] [Thread-131531] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:42.650 [DEBUG] [Thread-131531] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:42.650 [DEBUG] [Thread-131531] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:59:42.650 [DEBUG] [Thread-131531] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:42.669 [INFO] [Thread-131531] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:42.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-28T17:59:42.670 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:43.689 [DEBUG] [Thread-131531] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:43.689 [DEBUG] [Thread-131531] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:43.737 [DEBUG] [Thread-131531] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:43.737 [DEBUG] [Thread-131531] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:43.746 [DEBUG] [Thread-131531] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:43.757 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:43.758 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T17:59:43.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') -> 00000000
2025-09-28T17:59:43.775 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:43.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:43.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:43.785 [DEBUG] [Thread-131531] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:45.050 [DEBUG] [Thread-131533 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T17:59:53.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T17:59:53.786 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T17:59:53.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T17:59:54.368 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 59, 38), 12.58, 42.92, 0.0, 18.3, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T17:59:54.369 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:59:38
2025-09-28T17:59:54.476 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T17:59:54.623 [DEBUG] [Thread-131534] [transport.py] [_log()] starting thread (client mode): 0x2b995ff0
2025-09-28T17:59:54.623 [DEBUG] [Thread-131534] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:54.643 [DEBUG] [Thread-131534] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T17:59:54.643 [INFO] [Thread-131534] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T17:59:54.646 [DEBUG] [Thread-131534] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:54.646 [DEBUG] [Thread-131534] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T17:59:54.646 [DEBUG] [Thread-131534] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] Compression: none
2025-09-28T17:59:54.647 [DEBUG] [Thread-131534] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:54.664 [DEBUG] [Thread-131534] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:54.665 [DEBUG] [Thread-131534] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:54.666 [DEBUG] [Thread-131534] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T17:59:54.666 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T17:59:54.667 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:54.708 [DEBUG] [Thread-131534] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:54.708 [DEBUG] [Thread-131534] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:54.709 [DEBUG] [Thread-131534] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:54.709 [DEBUG] [Thread-131534] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T17:59:54.709 [DEBUG] [Thread-131534] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:54.729 [INFO] [Thread-131534] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:54.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:55.322 [DEBUG] [Thread-131534] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:55.322 [DEBUG] [Thread-131534] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:55.323 [DEBUG] [Thread-131534] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T17:59:55.363 [DEBUG] [Thread-131534] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:55.364 [DEBUG] [Thread-131534] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:55.367 [DEBUG] [Thread-131534] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:55.377 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:55.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T17:59:55.379 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T17:59:55.381 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T17:59:55.387 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:55.389 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T17:59:55.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666399 -999.00  +14.80  16.19     48   +4.00 1 1 1 1 1   887    0 9.78 -50.35 ----- 16.2 16.2 198.2 20.2 17.9 -26.7 17.6 -26.4 18.6 -26.3 19.1 -27.1
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T17:59:55.389 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666399
2025-09-28T17:59:55.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T17:59:55.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T17:59:55.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T17:59:55.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T17:59:55.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T17:59:55.391 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:59:38', tmtdew=12.58, humidity=42.92, cloud=0.0, wind=18.3, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:59:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T17:59:55.391 [DEBUG] [Thread-131534] [transport.py] [_log()] EOF in transport thread
2025-09-28T17:59:55.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-28T17:59:55.484 [DEBUG] [Thread-131537] [transport.py] [_log()] starting thread (client mode): 0x2b997580
2025-09-28T17:59:55.484 [DEBUG] [Thread-131537] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T17:59:55.501 [DEBUG] [Thread-131537] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T17:59:55.501 [INFO] [Thread-131537] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] client lang: <none>
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] server lang: <none>
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] kex follows: False
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T17:59:55.509 [DEBUG] [Thread-131537] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T17:59:55.510 [DEBUG] [Thread-131537] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T17:59:55.510 [DEBUG] [Thread-131537] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T17:59:55.510 [DEBUG] [Thread-131537] [transport.py] [_log()] Compression: none
2025-09-28T17:59:55.510 [DEBUG] [Thread-131537] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T17:59:55.568 [DEBUG] [Thread-131537] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T17:59:55.569 [DEBUG] [Thread-131537] [transport.py] [_log()] Switch to new keys ...
2025-09-28T17:59:55.569 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T17:59:55.569 [DEBUG] [Thread-131537] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T17:59:55.570 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T17:59:55.627 [DEBUG] [Thread-131537] [transport.py] [_log()] userauth is OK
2025-09-28T17:59:55.627 [DEBUG] [Thread-131537] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T17:59:55.627 [DEBUG] [Thread-131537] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T17:59:55.627 [DEBUG] [Thread-131537] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T17:59:55.627 [DEBUG] [Thread-131537] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T17:59:55.642 [INFO] [Thread-131537] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T17:59:55.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-28T17:59:55.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T17:59:56.604 [DEBUG] [Thread-131537] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T17:59:56.604 [DEBUG] [Thread-131537] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T17:59:56.652 [DEBUG] [Thread-131537] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T17:59:56.652 [DEBUG] [Thread-131537] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T17:59:56.661 [DEBUG] [Thread-131537] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T17:59:56.670 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T17:59:56.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-28T17:59:56.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-28T17:59:56.688 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T17:59:56.688 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T17:59:56.689 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T17:59:56.697 [DEBUG] [Thread-131537] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:00.098 [DEBUG] [Thread-131539 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:06.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:00:06.699 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:00:06.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-28T18:00:07.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 17, 59, 38), 12.58, 42.92, 0.0, 18.3, 14.9, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:00:07.303 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 17:59:38
2025-09-28T18:00:07.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:00:07.566 [DEBUG] [Thread-131540] [transport.py] [_log()] starting thread (client mode): 0x2b997760
2025-09-28T18:00:07.566 [DEBUG] [Thread-131540] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:07.582 [DEBUG] [Thread-131540] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:00:07.583 [INFO] [Thread-131540] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:07.586 [DEBUG] [Thread-131540] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] Compression: none
2025-09-28T18:00:07.587 [DEBUG] [Thread-131540] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:07.594 [DEBUG] [Thread-131540] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:07.595 [DEBUG] [Thread-131540] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:07.595 [DEBUG] [Thread-131540] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:00:07.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:00:07.595 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:07.595 [DEBUG] [Thread-131540] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:07.596 [DEBUG] [Thread-131540] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:07.596 [DEBUG] [Thread-131540] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:07.596 [DEBUG] [Thread-131540] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:00:07.596 [DEBUG] [Thread-131540] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:07.605 [INFO] [Thread-131540] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:07.606 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:15.150 [DEBUG] [Thread-131542 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:17.045 [DEBUG] [Thread-131540] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:17.045 [DEBUG] [Thread-131540] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:17.046 [DEBUG] [Thread-131540] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:00:17.087 [DEBUG] [Thread-131540] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:17.087 [DEBUG] [Thread-131540] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:17.090 [DEBUG] [Thread-131540] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:17.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:17.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:00:17.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:00:17.201 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:00:17.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:17.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:00:17.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:17.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:17.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:00:17.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666399 -999.00  +14.80  16.19     48   +4.00 1 1 1 1 1   887    0 9.78 -50.35 ----- 16.2 16.2 198.2 20.2 17.9 -26.7 17.6 -26.4 18.6 -26.3 19.1 -27.1
2025-09-28T18:00:17.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:00:17.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:00:17.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666399
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:00:17.226 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T17:59:38', tmtdew=12.58, humidity=42.92, cloud=0.0, wind=18.3, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T15:59:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:00:17.227 [DEBUG] [Thread-131540] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:17.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-28T18:00:17.324 [DEBUG] [Thread-131544] [transport.py] [_log()] starting thread (client mode): 0x2b996830
2025-09-28T18:00:17.324 [DEBUG] [Thread-131544] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:17.340 [DEBUG] [Thread-131544] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:00:17.340 [INFO] [Thread-131544] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:17.348 [DEBUG] [Thread-131544] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:17.349 [DEBUG] [Thread-131544] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:17.350 [DEBUG] [Thread-131544] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:17.350 [DEBUG] [Thread-131544] [transport.py] [_log()] Compression: none
2025-09-28T18:00:17.350 [DEBUG] [Thread-131544] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:17.408 [DEBUG] [Thread-131544] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:17.409 [DEBUG] [Thread-131544] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:17.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:00:17.410 [DEBUG] [Thread-131544] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:00:17.411 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:17.465 [DEBUG] [Thread-131544] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:17.465 [DEBUG] [Thread-131544] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:17.465 [DEBUG] [Thread-131544] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:17.466 [DEBUG] [Thread-131544] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:00:17.466 [DEBUG] [Thread-131544] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:17.485 [INFO] [Thread-131544] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:17.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-28T18:00:17.486 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:18.463 [DEBUG] [Thread-131544] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:18.463 [DEBUG] [Thread-131544] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:18.510 [DEBUG] [Thread-131544] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:18.510 [DEBUG] [Thread-131544] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:18.519 [DEBUG] [Thread-131544] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:18.528 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:18.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-28T18:00:18.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-28T18:00:18.546 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:18.546 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:18.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:18.554 [DEBUG] [Thread-131544] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:25.679 [DEBUG] [Thread-131546 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:28.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:00:28.557 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:00:28.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-28T18:00:29.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 0, 10), 12.54, 43.0, 0.0, 16.76, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:00:29.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:00:10
2025-09-28T18:00:29.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:00:29.387 [DEBUG] [Thread-131547] [transport.py] [_log()] starting thread (client mode): 0x2b9946a0
2025-09-28T18:00:29.387 [DEBUG] [Thread-131547] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:29.408 [DEBUG] [Thread-131547] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:00:29.408 [INFO] [Thread-131547] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] Compression: none
2025-09-28T18:00:29.411 [DEBUG] [Thread-131547] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:29.430 [DEBUG] [Thread-131547] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:29.431 [DEBUG] [Thread-131547] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:29.431 [DEBUG] [Thread-131547] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:00:29.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:00:29.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:29.433 [DEBUG] [Thread-131547] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:29.433 [DEBUG] [Thread-131547] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:29.433 [DEBUG] [Thread-131547] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:29.433 [DEBUG] [Thread-131547] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:00:29.433 [DEBUG] [Thread-131547] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:29.452 [INFO] [Thread-131547] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:29.452 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:30.031 [DEBUG] [Thread-131547] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:30.031 [DEBUG] [Thread-131547] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:30.032 [DEBUG] [Thread-131547] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:00:30.072 [DEBUG] [Thread-131547] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:30.073 [DEBUG] [Thread-131547] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:30.075 [DEBUG] [Thread-131547] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:30.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:30.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:00:30.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:00:30.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:00:30.089 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:30.091 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:00:30.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:30.091 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666746 -999.00  +14.90  15.13     48   +4.00 1 1 1 1 1   887    0 9.90 -51.73 ----- 15.1 15.1 202.6 19.8 17.8 -26.7 17.6 -25.8 18.6 -25.8 19.0 -27.3
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666746
2025-09-28T18:00:30.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:00:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:00:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:00:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:00:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:00:30.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:00:10', tmtdew=12.54, humidity=43.0, cloud=0.0, wind=16.76, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:00:06.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:00:30.094 [DEBUG] [Thread-131547] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:30.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-28T18:00:30.179 [DEBUG] [Thread-131550 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:30.187 [DEBUG] [Thread-131551] [transport.py] [_log()] starting thread (client mode): 0x2b91d660
2025-09-28T18:00:30.187 [DEBUG] [Thread-131551] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:30.202 [DEBUG] [Thread-131551] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:00:30.202 [INFO] [Thread-131551] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:30.210 [DEBUG] [Thread-131551] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] Compression: none
2025-09-28T18:00:30.211 [DEBUG] [Thread-131551] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:30.267 [DEBUG] [Thread-131551] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:30.270 [DEBUG] [Thread-131551] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:30.270 [DEBUG] [Thread-131551] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:00:30.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:00:30.271 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:30.324 [DEBUG] [Thread-131551] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:30.324 [DEBUG] [Thread-131551] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:30.324 [DEBUG] [Thread-131551] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:30.324 [DEBUG] [Thread-131551] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:00:30.324 [DEBUG] [Thread-131551] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:30.338 [INFO] [Thread-131551] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:30.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-28T18:00:30.338 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:31.373 [DEBUG] [Thread-131551] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:31.374 [DEBUG] [Thread-131551] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:31.422 [DEBUG] [Thread-131551] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:31.422 [DEBUG] [Thread-131551] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:31.432 [DEBUG] [Thread-131551] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:31.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:31.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-28T18:00:31.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') -> 00000000
2025-09-28T18:00:31.458 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:31.458 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:31.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:31.467 [DEBUG] [Thread-131551] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:33.596 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:33.597 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:41.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:00:41.469 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:00:41.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-28T18:00:42.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 0, 10), 12.54, 43.0, 0.0, 16.76, 14.84, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:00:42.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:00:10
2025-09-28T18:00:42.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:00:42.298 [DEBUG] [Thread-131553] [transport.py] [_log()] starting thread (client mode): 0x2e3c1690
2025-09-28T18:00:42.298 [DEBUG] [Thread-131553] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:42.317 [DEBUG] [Thread-131553] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:00:42.318 [INFO] [Thread-131553] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] Compression: none
2025-09-28T18:00:42.321 [DEBUG] [Thread-131553] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:42.337 [DEBUG] [Thread-131553] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:42.337 [DEBUG] [Thread-131553] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:42.337 [DEBUG] [Thread-131553] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:00:42.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:00:42.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:42.338 [DEBUG] [Thread-131553] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:42.338 [DEBUG] [Thread-131553] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:42.338 [DEBUG] [Thread-131553] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:42.338 [DEBUG] [Thread-131553] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:00:42.338 [DEBUG] [Thread-131553] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:42.355 [INFO] [Thread-131553] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:42.356 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:43.113 [DEBUG] [Thread-131553] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:43.113 [DEBUG] [Thread-131553] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:43.114 [DEBUG] [Thread-131553] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:00:43.156 [DEBUG] [Thread-131553] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:43.156 [DEBUG] [Thread-131553] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:43.158 [DEBUG] [Thread-131553] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:43.164 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:43.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:00:43.165 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:00:43.166 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:00:43.168 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:43.169 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:00:43.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.666746 -999.00  +14.90  15.13     48   +4.00 1 1 1 1 1   887    0 9.90 -51.73 ----- 15.1 15.1 202.6 19.8 17.8 -26.7 17.6 -25.8 18.6 -25.8 19.0 -27.3
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.666746
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:00:43.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:00:10', tmtdew=12.54, humidity=43.0, cloud=0.0, wind=16.76, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:00:06.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:00:43.170 [DEBUG] [Thread-131553] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:43.245 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:00:43.257 [DEBUG] [Thread-131556] [transport.py] [_log()] starting thread (client mode): 0x2e3c1b40
2025-09-28T18:00:43.257 [DEBUG] [Thread-131556] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:43.272 [DEBUG] [Thread-131556] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:00:43.272 [INFO] [Thread-131556] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:43.279 [DEBUG] [Thread-131556] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] Compression: none
2025-09-28T18:00:43.280 [DEBUG] [Thread-131556] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:43.335 [DEBUG] [Thread-131556] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:43.335 [DEBUG] [Thread-131556] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:43.335 [DEBUG] [Thread-131556] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:00:43.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:00:43.335 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:43.392 [DEBUG] [Thread-131556] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:43.392 [DEBUG] [Thread-131556] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:43.392 [DEBUG] [Thread-131556] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:43.392 [DEBUG] [Thread-131556] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:00:43.392 [DEBUG] [Thread-131556] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:43.405 [INFO] [Thread-131556] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:43.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-28T18:00:43.406 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:44.353 [DEBUG] [Thread-131556] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:44.353 [DEBUG] [Thread-131556] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:44.404 [DEBUG] [Thread-131556] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:44.404 [DEBUG] [Thread-131556] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:44.414 [DEBUG] [Thread-131556] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:44.422 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:44.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')
2025-09-28T18:00:44.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-28T18:00:44.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:44.446 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:44.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:44.457 [DEBUG] [Thread-131556] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:45.211 [DEBUG] [Thread-131558 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:00:54.453 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:00:54.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:00:54.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-28T18:00:55.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 0, 42), 12.5, 42.62, 0.0, 21.05, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:00:55.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:00:42
2025-09-28T18:00:55.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:00:55.284 [DEBUG] [Thread-131559] [transport.py] [_log()] starting thread (client mode): 0x2b9de260
2025-09-28T18:00:55.284 [DEBUG] [Thread-131559] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:55.304 [DEBUG] [Thread-131559] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:00:55.304 [INFO] [Thread-131559] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:00:55.307 [DEBUG] [Thread-131559] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:55.307 [DEBUG] [Thread-131559] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:00:55.307 [DEBUG] [Thread-131559] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] Compression: none
2025-09-28T18:00:55.308 [DEBUG] [Thread-131559] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:55.324 [DEBUG] [Thread-131559] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:55.324 [DEBUG] [Thread-131559] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:55.325 [DEBUG] [Thread-131559] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:00:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:00:55.325 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:55.326 [DEBUG] [Thread-131559] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:55.327 [DEBUG] [Thread-131559] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:55.327 [DEBUG] [Thread-131559] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:55.327 [DEBUG] [Thread-131559] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:00:55.327 [DEBUG] [Thread-131559] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:55.351 [INFO] [Thread-131559] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:55.352 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:55.961 [DEBUG] [Thread-131559] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:55.962 [DEBUG] [Thread-131559] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:55.962 [DEBUG] [Thread-131559] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:00:56.002 [DEBUG] [Thread-131559] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:56.003 [DEBUG] [Thread-131559] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:56.005 [DEBUG] [Thread-131559] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:56.019 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:56.020 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:00:56.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:00:56.023 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:00:56.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:56.029 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:00:56.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:56.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:56.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:00:56.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.667094 -999.00  +14.90  18.46     48   +4.00 1 1 1 1 1   887    0 10.04 -48.40 ----- 18.5 18.5 190.6 20.0 17.8 -26.6 17.6 -26.3 18.5 -26.2 19.0 -27.4
2025-09-28T18:00:56.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:00:56.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:00:56.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.667094
2025-09-28T18:00:56.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:00:56.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:00:56.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:00:56.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:00:56.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:00:56.031 [DEBUG] [Thread-131559] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:00:56.032 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:00:42', tmtdew=12.5, humidity=42.62, cloud=0.0, wind=21.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:00:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:00:56.121 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:00:56.131 [DEBUG] [Thread-131562] [transport.py] [_log()] starting thread (client mode): 0x2b994370
2025-09-28T18:00:56.131 [DEBUG] [Thread-131562] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:00:56.145 [DEBUG] [Thread-131562] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:00:56.145 [INFO] [Thread-131562] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] client lang: <none>
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] server lang: <none>
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] kex follows: False
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] Compression: none
2025-09-28T18:00:56.153 [DEBUG] [Thread-131562] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:00:56.211 [DEBUG] [Thread-131562] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:00:56.212 [DEBUG] [Thread-131562] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:00:56.212 [DEBUG] [Thread-131562] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:00:56.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:00:56.214 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:00:56.268 [DEBUG] [Thread-131562] [transport.py] [_log()] userauth is OK
2025-09-28T18:00:56.268 [DEBUG] [Thread-131562] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:00:56.268 [DEBUG] [Thread-131562] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:00:56.268 [DEBUG] [Thread-131562] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:00:56.268 [DEBUG] [Thread-131562] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:00:56.288 [INFO] [Thread-131562] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:00:56.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-28T18:00:56.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:00:57.270 [DEBUG] [Thread-131562] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:00:57.270 [DEBUG] [Thread-131562] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:00:57.318 [DEBUG] [Thread-131562] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:00:57.318 [DEBUG] [Thread-131562] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:00:57.327 [DEBUG] [Thread-131562] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:00:57.336 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:00:57.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-28T18:00:57.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') -> 00000000
2025-09-28T18:00:57.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:00:57.353 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:00:57.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:00:57.361 [DEBUG] [Thread-131562] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:01:00.239 [DEBUG] [Thread-131564 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:07.364 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:01:07.364 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:01:07.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-28T18:01:07.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 0, 42), 12.5, 42.62, 0.0, 21.05, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:01:07.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:00:42
2025-09-28T18:01:08.034 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:01:08.185 [DEBUG] [Thread-131565] [transport.py] [_log()] starting thread (client mode): 0x2b996500
2025-09-28T18:01:08.185 [DEBUG] [Thread-131565] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:01:08.204 [DEBUG] [Thread-131565] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:01:08.205 [INFO] [Thread-131565] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:01:08.207 [DEBUG] [Thread-131565] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] client lang: <none>
2025-09-28T18:01:08.208 [DEBUG] [Thread-131565] [transport.py] [_log()] server lang: <none>
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] kex follows: False
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] Compression: none
2025-09-28T18:01:08.209 [DEBUG] [Thread-131565] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:01:08.225 [DEBUG] [Thread-131565] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:01:08.225 [DEBUG] [Thread-131565] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:01:08.226 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:01:08.226 [DEBUG] [Thread-131565] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:01:08.227 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:01:08.229 [DEBUG] [Thread-131565] [transport.py] [_log()] userauth is OK
2025-09-28T18:01:08.229 [DEBUG] [Thread-131565] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:01:08.230 [DEBUG] [Thread-131565] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:01:08.230 [DEBUG] [Thread-131565] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:01:08.230 [DEBUG] [Thread-131565] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:01:08.253 [INFO] [Thread-131565] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:01:08.254 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:01:09.020 [DEBUG] [Thread-131565] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:01:09.020 [DEBUG] [Thread-131565] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:01:09.021 [DEBUG] [Thread-131565] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:01:09.061 [DEBUG] [Thread-131565] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:01:09.062 [DEBUG] [Thread-131565] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:01:09.064 [DEBUG] [Thread-131565] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:01:09.075 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:01:09.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:01:09.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:01:09.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:01:09.084 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:01:09.086 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:01:09.086 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.667094 -999.00  +14.90  18.46     48   +4.00 1 1 1 1 1   887    0 10.04 -48.40 ----- 18.5 18.5 190.6 20.0 17.8 -26.6 17.6 -26.3 18.5 -26.2 19.0 -27.4
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:01:09.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.667094
2025-09-28T18:01:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:01:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:01:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:01:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:01:09.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:01:09.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:00:42', tmtdew=12.5, humidity=42.62, cloud=0.0, wind=21.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:00:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:01:09.089 [DEBUG] [Thread-131565] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:01:09.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-28T18:01:09.186 [DEBUG] [Thread-131568] [transport.py] [_log()] starting thread (client mode): 0x2b9977f0
2025-09-28T18:01:09.186 [DEBUG] [Thread-131568] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:01:09.200 [DEBUG] [Thread-131568] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:01:09.201 [INFO] [Thread-131568] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:01:09.208 [DEBUG] [Thread-131568] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:01:09.208 [DEBUG] [Thread-131568] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:01:09.208 [DEBUG] [Thread-131568] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] client lang: <none>
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] server lang: <none>
2025-09-28T18:01:09.209 [DEBUG] [Thread-131568] [transport.py] [_log()] kex follows: False
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] Compression: none
2025-09-28T18:01:09.210 [DEBUG] [Thread-131568] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:01:09.268 [DEBUG] [Thread-131568] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:01:09.268 [DEBUG] [Thread-131568] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:01:09.269 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:01:09.269 [DEBUG] [Thread-131568] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:01:09.270 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:01:09.324 [DEBUG] [Thread-131568] [transport.py] [_log()] userauth is OK
2025-09-28T18:01:09.324 [DEBUG] [Thread-131568] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:01:09.324 [DEBUG] [Thread-131568] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:01:09.324 [DEBUG] [Thread-131568] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:01:09.324 [DEBUG] [Thread-131568] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:01:09.343 [INFO] [Thread-131568] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:01:09.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-28T18:01:09.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:01:10.312 [DEBUG] [Thread-131568] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:01:10.313 [DEBUG] [Thread-131568] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:01:10.360 [DEBUG] [Thread-131568] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:01:10.360 [DEBUG] [Thread-131568] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:01:10.369 [DEBUG] [Thread-131568] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:01:10.378 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:01:10.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-28T18:01:10.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-28T18:01:10.396 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:01:10.397 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:01:10.397 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:01:10.405 [DEBUG] [Thread-131568] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:01:15.280 [DEBUG] [Thread-131570 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:20.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:01:20.408 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:01:20.408 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:01:21.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 1, 14), 12.5, 42.63, 0.0, 22.92, 14.82, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:01:21.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:01:14
2025-09-28T18:01:21.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:01:21.275 [DEBUG] [Thread-131571] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-28T18:01:21.275 [DEBUG] [Thread-131571] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:01:21.296 [DEBUG] [Thread-131571] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:01:21.296 [INFO] [Thread-131571] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] client lang: <none>
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] server lang: <none>
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] kex follows: False
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] Compression: none
2025-09-28T18:01:21.299 [DEBUG] [Thread-131571] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:01:21.315 [DEBUG] [Thread-131571] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:01:21.315 [DEBUG] [Thread-131571] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:01:21.315 [DEBUG] [Thread-131571] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:01:21.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:01:21.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:01:21.316 [DEBUG] [Thread-131571] [transport.py] [_log()] userauth is OK
2025-09-28T18:01:21.316 [DEBUG] [Thread-131571] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:01:21.316 [DEBUG] [Thread-131571] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:01:21.316 [DEBUG] [Thread-131571] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:01:21.316 [DEBUG] [Thread-131571] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:01:21.324 [INFO] [Thread-131571] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:01:21.325 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:01:22.092 [DEBUG] [Thread-131571] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:01:22.092 [DEBUG] [Thread-131571] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:01:22.092 [DEBUG] [Thread-131571] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:01:22.133 [DEBUG] [Thread-131571] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:01:22.133 [DEBUG] [Thread-131571] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:01:22.135 [DEBUG] [Thread-131571] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:01:22.146 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:01:22.146 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:01:22.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:01:22.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:01:22.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:01:22.152 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:01:22.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.667094 -999.00  +14.90  18.46     48   +4.00 1 1 1 1 1   887    0 10.04 -48.40 ----- 18.5 18.5 190.6 20.0 17.8 -26.6 17.6 -26.3 18.5 -26.2 19.0 -27.4
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:01:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.667094
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:01:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:01:14', tmtdew=12.5, humidity=42.63, cloud=0.0, wind=22.92, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:00:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:01:22.153 [DEBUG] [Thread-131571] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:01:22.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-28T18:01:25.733 [DEBUG] [Thread-131574 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:30.307 [DEBUG] [Thread-131575 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:33.741 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:33.744 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:01:45.354 [DEBUG] [Thread-131576 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:00.387 [DEBUG] [Thread-131577 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:15.408 [DEBUG] [Thread-131578 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:25.784 [DEBUG] [Thread-131579 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:30.432 [DEBUG] [Thread-131580 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:33.887 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:33.888 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:02:45.464 [DEBUG] [Thread-131581 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:00.494 [DEBUG] [Thread-131582 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:15.522 [DEBUG] [Thread-131583 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:25.839 [DEBUG] [Thread-131584 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:30.543 [DEBUG] [Thread-131585 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:34.028 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:34.030 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:37.275 [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-28T18:03:45.577 [DEBUG] [Thread-131586 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:03:47.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:03:47.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:03:47.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-28T18:03:47.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 3, 21), 12.56, 42.58, 0.0, 16.07, 14.79, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:03:47.906 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:03:21
2025-09-28T18:03:48.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:03:48.167 [DEBUG] [Thread-131587] [transport.py] [_log()] starting thread (client mode): 0x2e363970
2025-09-28T18:03:48.167 [DEBUG] [Thread-131587] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:03:48.187 [DEBUG] [Thread-131587] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:03:48.188 [INFO] [Thread-131587] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] client lang: <none>
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] server lang: <none>
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] kex follows: False
2025-09-28T18:03:48.191 [DEBUG] [Thread-131587] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] Compression: none
2025-09-28T18:03:48.192 [DEBUG] [Thread-131587] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:03:48.209 [DEBUG] [Thread-131587] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:03:48.210 [DEBUG] [Thread-131587] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:03:48.210 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:03:48.211 [DEBUG] [Thread-131587] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:03:48.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:03:48.212 [DEBUG] [Thread-131587] [transport.py] [_log()] userauth is OK
2025-09-28T18:03:48.213 [DEBUG] [Thread-131587] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:03:48.213 [DEBUG] [Thread-131587] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:03:48.213 [DEBUG] [Thread-131587] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:03:48.213 [DEBUG] [Thread-131587] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:03:48.236 [INFO] [Thread-131587] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:03:48.236 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:03:48.850 [DEBUG] [Thread-131587] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:03:48.851 [DEBUG] [Thread-131587] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:03:48.851 [DEBUG] [Thread-131587] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:03:48.891 [DEBUG] [Thread-131587] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:03:48.891 [DEBUG] [Thread-131587] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:03:48.894 [DEBUG] [Thread-131587] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:03:48.906 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:03:48.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:03:48.908 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:03:48.910 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:03:48.915 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:03:48.917 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:03:48.917 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:03:48.917 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.668830 -999.00  +14.70  13.95     48   +3.90 1 1 1 1 1   887    0 9.61 -53.22 ----- 13.9 13.9 213.8 22.2 17.6 -26.7 17.4 -26.3 18.2 -25.6 18.7 -27.1
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.668830
2025-09-28T18:03:48.918 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:03:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:03:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:03:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:03:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:03:48.919 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:03:21', tmtdew=12.56, humidity=42.58, cloud=0.0, wind=16.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:03:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:03:48.919 [DEBUG] [Thread-131587] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:03:49.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-28T18:03:49.017 [DEBUG] [Thread-131590] [transport.py] [_log()] starting thread (client mode): 0x2b994610
2025-09-28T18:03:49.017 [DEBUG] [Thread-131590] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:03:49.032 [DEBUG] [Thread-131590] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:03:49.032 [INFO] [Thread-131590] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:03:49.039 [DEBUG] [Thread-131590] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:03:49.039 [DEBUG] [Thread-131590] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:03:49.039 [DEBUG] [Thread-131590] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] client lang: <none>
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] server lang: <none>
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] kex follows: False
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] Compression: none
2025-09-28T18:03:49.040 [DEBUG] [Thread-131590] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:03:49.097 [DEBUG] [Thread-131590] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:03:49.098 [DEBUG] [Thread-131590] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:03:49.098 [DEBUG] [Thread-131590] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:03:49.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:03:49.099 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:03:49.154 [DEBUG] [Thread-131590] [transport.py] [_log()] userauth is OK
2025-09-28T18:03:49.154 [DEBUG] [Thread-131590] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:03:49.154 [DEBUG] [Thread-131590] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:03:49.154 [DEBUG] [Thread-131590] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:03:49.154 [DEBUG] [Thread-131590] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:03:49.172 [INFO] [Thread-131590] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:03:49.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-28T18:03:49.173 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:03:50.173 [DEBUG] [Thread-131590] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:03:50.173 [DEBUG] [Thread-131590] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:03:50.224 [DEBUG] [Thread-131590] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:03:50.224 [DEBUG] [Thread-131590] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:03:50.232 [DEBUG] [Thread-131590] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:03:50.241 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:03:50.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-28T18:03:50.250 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T18:03:50.259 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:03:50.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:03:50.259 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:03:50.268 [DEBUG] [Thread-131590] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:00.270 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:04:00.270 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:04:00.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-28T18:04:00.601 [DEBUG] [Thread-131592 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:00.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 3, 53), 12.51, 42.58, 0.0, 21.62, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:04:00.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:03:53
2025-09-28T18:04:00.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:04:01.157 [DEBUG] [Thread-131593] [transport.py] [_log()] starting thread (client mode): 0x2e3c1b40
2025-09-28T18:04:01.157 [DEBUG] [Thread-131593] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:01.174 [DEBUG] [Thread-131593] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:04:01.174 [INFO] [Thread-131593] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:01.177 [DEBUG] [Thread-131593] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] Compression: none
2025-09-28T18:04:01.178 [DEBUG] [Thread-131593] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:01.196 [DEBUG] [Thread-131593] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:01.197 [DEBUG] [Thread-131593] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:01.197 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:04:01.198 [DEBUG] [Thread-131593] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:04:01.198 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:01.199 [DEBUG] [Thread-131593] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:01.199 [DEBUG] [Thread-131593] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:01.200 [DEBUG] [Thread-131593] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:01.200 [DEBUG] [Thread-131593] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:04:01.200 [DEBUG] [Thread-131593] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:01.223 [INFO] [Thread-131593] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:01.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:01.868 [DEBUG] [Thread-131593] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:01.868 [DEBUG] [Thread-131593] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:01.869 [DEBUG] [Thread-131593] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:04:01.909 [DEBUG] [Thread-131593] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:01.910 [DEBUG] [Thread-131593] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:01.914 [DEBUG] [Thread-131593] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:01.929 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:01.929 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:04:01.931 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:04:01.932 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:04:01.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:01.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:04:01.940 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:01.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:01.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:04:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.668830 -999.00  +14.70  13.95     48   +3.90 1 1 1 1 1   887    0 9.61 -53.22 ----- 13.9 13.9 213.8 22.2 17.6 -26.7 17.4 -26.3 18.2 -25.6 18.7 -27.1
2025-09-28T18:04:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:04:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:04:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.668830
2025-09-28T18:04:01.941 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:04:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:04:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:04:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:04:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:04:01.942 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:03:53', tmtdew=12.51, humidity=42.58, cloud=0.0, wind=21.62, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:03:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:04:01.943 [DEBUG] [Thread-131593] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:02.028 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:04:02.037 [DEBUG] [Thread-131596] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d10
2025-09-28T18:04:02.037 [DEBUG] [Thread-131596] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:02.052 [DEBUG] [Thread-131596] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:04:02.052 [INFO] [Thread-131596] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:04:02.059 [DEBUG] [Thread-131596] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:02.060 [DEBUG] [Thread-131596] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] Compression: none
2025-09-28T18:04:02.061 [DEBUG] [Thread-131596] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:02.122 [DEBUG] [Thread-131596] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:02.122 [DEBUG] [Thread-131596] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:02.123 [DEBUG] [Thread-131596] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:04:02.123 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:04:02.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:02.186 [DEBUG] [Thread-131596] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:02.186 [DEBUG] [Thread-131596] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:02.186 [DEBUG] [Thread-131596] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:02.186 [DEBUG] [Thread-131596] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:04:02.186 [DEBUG] [Thread-131596] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:02.208 [INFO] [Thread-131596] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:02.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-28T18:04:02.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:03.204 [DEBUG] [Thread-131596] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:03.204 [DEBUG] [Thread-131596] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:03.252 [DEBUG] [Thread-131596] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:03.252 [DEBUG] [Thread-131596] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:03.261 [DEBUG] [Thread-131596] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:03.270 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:03.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')
2025-09-28T18:04:03.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-28T18:04:03.288 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:03.288 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:03.288 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:03.296 [DEBUG] [Thread-131596] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:13.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:04:13.299 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:04:13.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-28T18:04:13.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 3, 53), 12.51, 42.58, 0.0, 21.62, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:04:13.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:03:53
2025-09-28T18:04:14.017 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:04:14.165 [DEBUG] [Thread-131598] [transport.py] [_log()] starting thread (client mode): 0x2b9dc280
2025-09-28T18:04:14.165 [DEBUG] [Thread-131598] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:14.187 [DEBUG] [Thread-131598] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:04:14.187 [INFO] [Thread-131598] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:14.188 [DEBUG] [Thread-131598] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] Compression: none
2025-09-28T18:04:14.189 [DEBUG] [Thread-131598] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:14.207 [DEBUG] [Thread-131598] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:14.207 [DEBUG] [Thread-131598] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:14.208 [DEBUG] [Thread-131598] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:04:14.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:04:14.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:14.210 [DEBUG] [Thread-131598] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:14.210 [DEBUG] [Thread-131598] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:14.210 [DEBUG] [Thread-131598] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:14.210 [DEBUG] [Thread-131598] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:04:14.210 [DEBUG] [Thread-131598] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:14.246 [INFO] [Thread-131598] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:14.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:14.887 [DEBUG] [Thread-131598] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:14.888 [DEBUG] [Thread-131598] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:14.888 [DEBUG] [Thread-131598] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:04:14.928 [DEBUG] [Thread-131598] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:14.929 [DEBUG] [Thread-131598] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:14.932 [DEBUG] [Thread-131598] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:14.943 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:14.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:04:14.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:04:14.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:04:14.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:14.954 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:04:14.954 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:14.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:14.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:04:14.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.669524 -999.00  +14.70  12.62     48   +4.00 1 1 1 1 1   887    0 9.75 -53.29 ----- 12.6 12.6 201.7 21.0 17.5 -26.6 17.3 -25.6 18.1 -25.3 18.6 -26.8
2025-09-28T18:04:14.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:04:14.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:04:14.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.669524
2025-09-28T18:04:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:04:14.956 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:04:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:04:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:04:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:04:14.957 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:03:53', tmtdew=12.51, humidity=42.58, cloud=0.0, wind=21.62, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:04:06.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:04:14.957 [DEBUG] [Thread-131598] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:15.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-28T18:04:15.054 [DEBUG] [Thread-131601] [transport.py] [_log()] starting thread (client mode): 0x2e363c40
2025-09-28T18:04:15.054 [DEBUG] [Thread-131601] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:15.068 [DEBUG] [Thread-131601] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:04:15.068 [INFO] [Thread-131601] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:04:15.076 [DEBUG] [Thread-131601] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:15.076 [DEBUG] [Thread-131601] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] Compression: none
2025-09-28T18:04:15.077 [DEBUG] [Thread-131601] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:15.133 [DEBUG] [Thread-131601] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:15.134 [DEBUG] [Thread-131601] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:15.135 [DEBUG] [Thread-131601] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:04:15.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:04:15.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:15.190 [DEBUG] [Thread-131601] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:15.190 [DEBUG] [Thread-131601] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:15.190 [DEBUG] [Thread-131601] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:15.190 [DEBUG] [Thread-131601] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:04:15.190 [DEBUG] [Thread-131601] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:15.209 [INFO] [Thread-131601] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:15.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-28T18:04:15.210 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:15.636 [DEBUG] [Thread-131603 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:16.139 [DEBUG] [Thread-131601] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:16.139 [DEBUG] [Thread-131601] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:16.187 [DEBUG] [Thread-131601] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:16.187 [DEBUG] [Thread-131601] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:16.196 [DEBUG] [Thread-131601] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:16.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04: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')
2025-09-28T18:04:16.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-28T18:04:16.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:16.223 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:16.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:16.230 [DEBUG] [Thread-131601] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:25.892 [DEBUG] [Thread-131604 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:26.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:04:26.232 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:04:26.233 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:04:26.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 3, 53), 12.51, 42.58, 0.0, 21.62, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:04:26.878 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:03:53
2025-09-28T18:04:26.992 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:04:27.144 [DEBUG] [Thread-131605] [transport.py] [_log()] starting thread (client mode): 0x2e362530
2025-09-28T18:04:27.144 [DEBUG] [Thread-131605] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:27.163 [DEBUG] [Thread-131605] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:04:27.163 [INFO] [Thread-131605] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] Compression: none
2025-09-28T18:04:27.166 [DEBUG] [Thread-131605] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:27.174 [DEBUG] [Thread-131605] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:27.174 [DEBUG] [Thread-131605] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:27.174 [DEBUG] [Thread-131605] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:04:27.174 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:04:27.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:27.175 [DEBUG] [Thread-131605] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:27.175 [DEBUG] [Thread-131605] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:27.175 [DEBUG] [Thread-131605] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:27.175 [DEBUG] [Thread-131605] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:04:27.175 [DEBUG] [Thread-131605] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:27.191 [INFO] [Thread-131605] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:27.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:27.844 [DEBUG] [Thread-131605] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:27.844 [DEBUG] [Thread-131605] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:27.845 [DEBUG] [Thread-131605] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:04:27.886 [DEBUG] [Thread-131605] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:27.886 [DEBUG] [Thread-131605] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:27.888 [DEBUG] [Thread-131605] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:27.902 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:27.902 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:04:27.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:04:27.903 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:04:27.906 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:27.907 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:04:27.907 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.669524 -999.00  +14.70  12.62     48   +4.00 1 1 1 1 1   887    0 9.75 -53.29 ----- 12.6 12.6 201.7 21.0 17.5 -26.6 17.3 -25.6 18.1 -25.3 18.6 -26.8
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.669524
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:04:27.907 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:03:53', tmtdew=12.51, humidity=42.58, cloud=0.0, wind=21.62, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:04:06.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:04:27.908 [DEBUG] [Thread-131605] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:27.987 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:04:27.997 [DEBUG] [Thread-131608] [transport.py] [_log()] starting thread (client mode): 0x2e3600d0
2025-09-28T18:04:27.997 [DEBUG] [Thread-131608] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:28.014 [DEBUG] [Thread-131608] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:04:28.014 [INFO] [Thread-131608] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:04:28.021 [DEBUG] [Thread-131608] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:28.021 [DEBUG] [Thread-131608] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:04:28.021 [DEBUG] [Thread-131608] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:28.021 [DEBUG] [Thread-131608] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:28.021 [DEBUG] [Thread-131608] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] Compression: none
2025-09-28T18:04:28.022 [DEBUG] [Thread-131608] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:28.082 [DEBUG] [Thread-131608] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:28.083 [DEBUG] [Thread-131608] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:28.083 [DEBUG] [Thread-131608] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:04:28.083 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:04:28.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:28.137 [DEBUG] [Thread-131608] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:28.138 [DEBUG] [Thread-131608] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:28.138 [DEBUG] [Thread-131608] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:28.138 [DEBUG] [Thread-131608] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:04:28.138 [DEBUG] [Thread-131608] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:28.158 [INFO] [Thread-131608] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:28.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-28T18:04:28.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:29.232 [DEBUG] [Thread-131608] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:29.233 [DEBUG] [Thread-131608] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:29.280 [DEBUG] [Thread-131608] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:29.280 [DEBUG] [Thread-131608] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:29.289 [DEBUG] [Thread-131608] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:29.298 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:29.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-28T18:04:29.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-28T18:04:29.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:29.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:29.317 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:29.324 [DEBUG] [Thread-131608] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:30.683 [DEBUG] [Thread-131610 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:34.171 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:34.172 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:39.327 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:04:39.327 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:04:39.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-28T18:04:39.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 4, 25), 12.45, 42.75, 0.0, 22.64, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:04:39.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:04:25
2025-09-28T18:04:40.042 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:04:40.189 [DEBUG] [Thread-131611] [transport.py] [_log()] starting thread (client mode): 0x2b9dc730
2025-09-28T18:04:40.189 [DEBUG] [Thread-131611] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:40.206 [DEBUG] [Thread-131611] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:04:40.206 [INFO] [Thread-131611] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:40.207 [DEBUG] [Thread-131611] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] Compression: none
2025-09-28T18:04:40.208 [DEBUG] [Thread-131611] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:40.217 [DEBUG] [Thread-131611] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:40.217 [DEBUG] [Thread-131611] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:40.217 [DEBUG] [Thread-131611] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:04:40.217 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:04:40.218 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:40.218 [DEBUG] [Thread-131611] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:40.218 [DEBUG] [Thread-131611] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:40.219 [DEBUG] [Thread-131611] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:40.219 [DEBUG] [Thread-131611] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:04:40.219 [DEBUG] [Thread-131611] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:40.240 [INFO] [Thread-131611] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:40.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:40.885 [DEBUG] [Thread-131611] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:40.886 [DEBUG] [Thread-131611] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:40.886 [DEBUG] [Thread-131611] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:04:40.926 [DEBUG] [Thread-131611] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:40.927 [DEBUG] [Thread-131611] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:40.930 [DEBUG] [Thread-131611] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:40.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:40.941 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:04:40.943 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:04:40.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:04:40.951 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:40.953 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:04:40.953 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:40.953 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.669524 -999.00  +14.70  12.62     48   +4.00 1 1 1 1 1   887    0 9.75 -53.29 ----- 12.6 12.6 201.7 21.0 17.5 -26.6 17.3 -25.6 18.1 -25.3 18.6 -26.8
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.669524
2025-09-28T18:04:40.954 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:04:40.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:04:40.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:04:40.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:04:40.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:04:40.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:04:25', tmtdew=12.45, humidity=42.75, cloud=0.0, wind=22.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:04:06.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:04:40.956 [DEBUG] [Thread-131611] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:41.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-28T18:04:41.052 [DEBUG] [Thread-131614] [transport.py] [_log()] starting thread (client mode): 0x2e362320
2025-09-28T18:04:41.052 [DEBUG] [Thread-131614] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:41.067 [DEBUG] [Thread-131614] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:04:41.067 [INFO] [Thread-131614] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:41.075 [DEBUG] [Thread-131614] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:41.076 [DEBUG] [Thread-131614] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:41.076 [DEBUG] [Thread-131614] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:41.076 [DEBUG] [Thread-131614] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:41.076 [DEBUG] [Thread-131614] [transport.py] [_log()] Compression: none
2025-09-28T18:04:41.076 [DEBUG] [Thread-131614] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:41.134 [DEBUG] [Thread-131614] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:41.134 [DEBUG] [Thread-131614] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:41.135 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:04:41.135 [DEBUG] [Thread-131614] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:04:41.136 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:41.189 [DEBUG] [Thread-131614] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:41.190 [DEBUG] [Thread-131614] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:41.190 [DEBUG] [Thread-131614] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:41.190 [DEBUG] [Thread-131614] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:04:41.190 [DEBUG] [Thread-131614] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:41.212 [INFO] [Thread-131614] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:41.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-28T18:04:41.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:42.167 [DEBUG] [Thread-131614] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:42.167 [DEBUG] [Thread-131614] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:42.215 [DEBUG] [Thread-131614] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:42.215 [DEBUG] [Thread-131614] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:42.223 [DEBUG] [Thread-131614] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:42.231 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:42.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-28T18:04:42.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-28T18:04:42.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:42.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:42.247 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:42.255 [DEBUG] [Thread-131614] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:45.710 [DEBUG] [Thread-131616 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:04:52.257 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:04:52.258 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:04:52.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-28T18:04:52.856 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 4, 25), 12.45, 42.75, 0.0, 22.64, 14.76, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:04:52.857 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:04:25
2025-09-28T18:04:52.963 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:04:53.110 [DEBUG] [Thread-131617] [transport.py] [_log()] starting thread (client mode): 0x2b9946d0
2025-09-28T18:04:53.110 [DEBUG] [Thread-131617] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:53.130 [DEBUG] [Thread-131617] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:04:53.130 [INFO] [Thread-131617] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:04:53.131 [DEBUG] [Thread-131617] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:53.132 [DEBUG] [Thread-131617] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:53.133 [DEBUG] [Thread-131617] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:53.133 [DEBUG] [Thread-131617] [transport.py] [_log()] Compression: none
2025-09-28T18:04:53.133 [DEBUG] [Thread-131617] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:53.143 [DEBUG] [Thread-131617] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:53.143 [DEBUG] [Thread-131617] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:53.144 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:04:53.145 [DEBUG] [Thread-131617] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:04:53.145 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:53.146 [DEBUG] [Thread-131617] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:53.147 [DEBUG] [Thread-131617] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:53.147 [DEBUG] [Thread-131617] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:53.147 [DEBUG] [Thread-131617] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:04:53.147 [DEBUG] [Thread-131617] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:53.161 [INFO] [Thread-131617] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:53.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:53.782 [DEBUG] [Thread-131617] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:53.783 [DEBUG] [Thread-131617] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:53.783 [DEBUG] [Thread-131617] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:04:53.823 [DEBUG] [Thread-131617] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:53.823 [DEBUG] [Thread-131617] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:53.827 [DEBUG] [Thread-131617] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:53.838 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:53.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:04:53.840 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:04:53.842 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:04:53.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:53.850 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:04:53.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:53.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:53.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:04:53.850 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.669871 -999.00  +14.70  16.64     48   +4.00 1 1 1 1 1   887    0 9.37 -54.96 ----- 16.6 16.6 210.3 25.7 17.4 -26.5 17.2 -25.6 18.1 -25.7 18.6 -27.1
2025-09-28T18:04:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:04:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:04:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.669871
2025-09-28T18:04:53.851 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:04:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:04:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:04:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:04:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:04:53.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:04:25', tmtdew=12.45, humidity=42.75, cloud=0.0, wind=22.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:04:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:04:53.852 [DEBUG] [Thread-131617] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:04:53.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-28T18:04:53.949 [DEBUG] [Thread-131620] [transport.py] [_log()] starting thread (client mode): 0x2b9dd390
2025-09-28T18:04:53.949 [DEBUG] [Thread-131620] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:04:53.964 [DEBUG] [Thread-131620] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:04:53.964 [INFO] [Thread-131620] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:53.972 [DEBUG] [Thread-131620] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] client lang: <none>
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] server lang: <none>
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] kex follows: False
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:04:53.973 [DEBUG] [Thread-131620] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:04:53.974 [DEBUG] [Thread-131620] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:04:53.974 [DEBUG] [Thread-131620] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:04:53.974 [DEBUG] [Thread-131620] [transport.py] [_log()] Compression: none
2025-09-28T18:04:53.974 [DEBUG] [Thread-131620] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:04:54.030 [DEBUG] [Thread-131620] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:04:54.031 [DEBUG] [Thread-131620] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:04:54.031 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:04:54.032 [DEBUG] [Thread-131620] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:04:54.033 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:04:54.086 [DEBUG] [Thread-131620] [transport.py] [_log()] userauth is OK
2025-09-28T18:04:54.086 [DEBUG] [Thread-131620] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:04:54.086 [DEBUG] [Thread-131620] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:04:54.086 [DEBUG] [Thread-131620] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:04:54.086 [DEBUG] [Thread-131620] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:04:54.105 [INFO] [Thread-131620] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:04:54.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-28T18:04:54.106 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:04:55.055 [DEBUG] [Thread-131620] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:04:55.056 [DEBUG] [Thread-131620] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:04:55.103 [DEBUG] [Thread-131620] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:04:55.103 [DEBUG] [Thread-131620] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:04:55.112 [DEBUG] [Thread-131620] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:04:55.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:04:55.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-28T18:04:55.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-28T18:04:55.137 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:04:55.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:04:55.138 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:04:55.146 [DEBUG] [Thread-131620] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:00.761 [DEBUG] [Thread-131622 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:05.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:05:05.147 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:05:05.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-28T18:05:05.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 4, 57), 12.31, 43.35, 0.0, 24.56, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:05:05.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:04:57
2025-09-28T18:05:05.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:05:06.003 [DEBUG] [Thread-131623] [transport.py] [_log()] starting thread (client mode): 0x2b9aab00
2025-09-28T18:05:06.003 [DEBUG] [Thread-131623] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:06.022 [DEBUG] [Thread-131623] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:05:06.022 [INFO] [Thread-131623] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] Compression: none
2025-09-28T18:05:06.024 [DEBUG] [Thread-131623] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:06.044 [DEBUG] [Thread-131623] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:06.045 [DEBUG] [Thread-131623] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:06.045 [DEBUG] [Thread-131623] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:05:06.045 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:05:06.046 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:06.047 [DEBUG] [Thread-131623] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:06.047 [DEBUG] [Thread-131623] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:06.047 [DEBUG] [Thread-131623] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:06.047 [DEBUG] [Thread-131623] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:05:06.048 [DEBUG] [Thread-131623] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:06.072 [INFO] [Thread-131623] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:06.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:12.528 [DEBUG] [Thread-131623] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:12.528 [DEBUG] [Thread-131623] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:12.528 [DEBUG] [Thread-131623] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:05:12.569 [DEBUG] [Thread-131623] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:12.569 [DEBUG] [Thread-131623] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:12.571 [DEBUG] [Thread-131623] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:12.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:12.583 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:05:12.584 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:05:12.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:05:12.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:12.594 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:05:12.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.669871 -999.00  +14.70  16.64     48   +4.00 1 1 1 1 1   887    0 9.37 -54.96 ----- 16.6 16.6 210.3 25.7 17.4 -26.5 17.2 -25.6 18.1 -25.7 18.6 -27.1
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.669871
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:05:12.594 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:04:57', tmtdew=12.31, humidity=43.35, cloud=0.0, wind=24.56, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:04:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:05:12.595 [DEBUG] [Thread-131623] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05: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-28T18:05:12.680 [DEBUG] [Thread-131626] [transport.py] [_log()] starting thread (client mode): 0x2e3c2d10
2025-09-28T18:05:12.681 [DEBUG] [Thread-131626] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:12.695 [DEBUG] [Thread-131626] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:05:12.695 [INFO] [Thread-131626] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] Compression: none
2025-09-28T18:05:12.703 [DEBUG] [Thread-131626] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:12.760 [DEBUG] [Thread-131626] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:12.760 [DEBUG] [Thread-131626] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:12.760 [DEBUG] [Thread-131626] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:05:12.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:05:12.760 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:12.817 [DEBUG] [Thread-131626] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:12.817 [DEBUG] [Thread-131626] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:12.817 [DEBUG] [Thread-131626] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:12.817 [DEBUG] [Thread-131626] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:05:12.817 [DEBUG] [Thread-131626] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:12.831 [INFO] [Thread-131626] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:12.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-28T18:05:12.831 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:13.777 [DEBUG] [Thread-131626] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:13.777 [DEBUG] [Thread-131626] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:13.825 [DEBUG] [Thread-131626] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:13.826 [DEBUG] [Thread-131626] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:13.835 [DEBUG] [Thread-131626] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:13.846 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:13.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-28T18:05:13.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-28T18:05:13.863 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:13.863 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:13.864 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:13.872 [DEBUG] [Thread-131626] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:15.803 [DEBUG] [Thread-131628 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:23.874 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:05:23.875 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:05:23.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-28T18:05:24.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 4, 57), 12.31, 43.35, 0.0, 24.56, 14.67, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:05:24.501 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:04:57
2025-09-28T18:05:24.607 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:05:24.754 [DEBUG] [Thread-131629] [transport.py] [_log()] starting thread (client mode): 0x2b9dd000
2025-09-28T18:05:24.754 [DEBUG] [Thread-131629] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:24.774 [DEBUG] [Thread-131629] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:05:24.774 [INFO] [Thread-131629] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:24.776 [DEBUG] [Thread-131629] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] Compression: none
2025-09-28T18:05:24.777 [DEBUG] [Thread-131629] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:24.796 [DEBUG] [Thread-131629] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:24.796 [DEBUG] [Thread-131629] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:24.797 [DEBUG] [Thread-131629] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:05:24.797 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:05:24.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:24.800 [DEBUG] [Thread-131629] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:24.800 [DEBUG] [Thread-131629] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:24.800 [DEBUG] [Thread-131629] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:24.800 [DEBUG] [Thread-131629] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:05:24.801 [DEBUG] [Thread-131629] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:24.823 [INFO] [Thread-131629] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:24.824 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:25.441 [DEBUG] [Thread-131629] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:25.441 [DEBUG] [Thread-131629] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:25.442 [DEBUG] [Thread-131629] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:05:25.482 [DEBUG] [Thread-131629] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:25.482 [DEBUG] [Thread-131629] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:25.485 [DEBUG] [Thread-131629] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:25.497 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:25.497 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:05:25.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:05:25.501 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:05:25.506 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:25.508 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:05:25.509 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.670219 -999.00  +14.60  18.30     49   +4.00 1 1 1 1 1   887    0 9.49 -55.99 ----- 18.3 18.3 207.0 26.1 17.4 -26.5 17.2 -27.5 18.1 -25.9 18.5 -27.5
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:05:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.670219
2025-09-28T18:05:25.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:05:25.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:05:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:05:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:05:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:05:25.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:04:57', tmtdew=12.31, humidity=43.35, cloud=0.0, wind=24.56, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:05:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:05:25.511 [DEBUG] [Thread-131629] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:25.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-28T18:05:25.614 [DEBUG] [Thread-131632] [transport.py] [_log()] starting thread (client mode): 0x2b9aadd0
2025-09-28T18:05:25.614 [DEBUG] [Thread-131632] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:25.629 [DEBUG] [Thread-131632] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:05:25.629 [INFO] [Thread-131632] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:25.637 [DEBUG] [Thread-131632] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:25.638 [DEBUG] [Thread-131632] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:25.638 [DEBUG] [Thread-131632] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:25.638 [DEBUG] [Thread-131632] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:25.638 [DEBUG] [Thread-131632] [transport.py] [_log()] Compression: none
2025-09-28T18:05:25.638 [DEBUG] [Thread-131632] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:25.692 [DEBUG] [Thread-131632] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:25.693 [DEBUG] [Thread-131632] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:25.693 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:05:25.694 [DEBUG] [Thread-131632] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:05:25.695 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:25.749 [DEBUG] [Thread-131632] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:25.749 [DEBUG] [Thread-131632] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:25.749 [DEBUG] [Thread-131632] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:25.749 [DEBUG] [Thread-131632] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:05:25.750 [DEBUG] [Thread-131632] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:25.769 [INFO] [Thread-131632] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:25.770 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:05:25.770 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:25.944 [DEBUG] [Thread-131634 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:26.711 [DEBUG] [Thread-131632] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:26.711 [DEBUG] [Thread-131632] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:26.759 [DEBUG] [Thread-131632] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:26.759 [DEBUG] [Thread-131632] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:26.768 [DEBUG] [Thread-131632] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:26.777 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:26.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-28T18:05:26.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-28T18:05:26.794 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:26.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:26.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:26.803 [DEBUG] [Thread-131632] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:30.849 [DEBUG] [Thread-131635 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:34.312 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:34.313 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:36.805 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:05:36.806 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:05: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-28T18:05:37.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 5, 29), 12.18, 43.71, 0.0, 22.89, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:05:37.396 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:05:29
2025-09-28T18:05:37.503 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:05:37.653 [DEBUG] [Thread-131636] [transport.py] [_log()] starting thread (client mode): 0x2b9ab940
2025-09-28T18:05:37.653 [DEBUG] [Thread-131636] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:37.673 [DEBUG] [Thread-131636] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:05:37.673 [INFO] [Thread-131636] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] Compression: none
2025-09-28T18:05:37.677 [DEBUG] [Thread-131636] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:37.694 [DEBUG] [Thread-131636] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:37.695 [DEBUG] [Thread-131636] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:37.695 [DEBUG] [Thread-131636] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:05:37.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:05:37.696 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:37.697 [DEBUG] [Thread-131636] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:37.697 [DEBUG] [Thread-131636] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:37.697 [DEBUG] [Thread-131636] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:37.698 [DEBUG] [Thread-131636] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:05:37.698 [DEBUG] [Thread-131636] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:37.711 [INFO] [Thread-131636] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:37.711 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:38.457 [DEBUG] [Thread-131636] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:38.457 [DEBUG] [Thread-131636] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:38.457 [DEBUG] [Thread-131636] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:05:38.498 [DEBUG] [Thread-131636] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:38.499 [DEBUG] [Thread-131636] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:38.502 [DEBUG] [Thread-131636] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:38.514 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:38.515 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:05:38.516 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:05:38.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:05:38.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:38.526 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:05:38.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:38.526 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:05:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.670219 -999.00  +14.60  18.30     49   +4.00 1 1 1 1 1   887    0 9.49 -55.99 ----- 18.3 18.3 207.0 26.1 17.4 -26.5 17.2 -27.5 18.1 -25.9 18.5 -27.5
2025-09-28T18:05:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:05:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:05:38.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.670219
2025-09-28T18:05:38.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:05:38.528 [DEBUG] [Thread-131636] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:05:38.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:05:38.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:05:38.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:05:38.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:05:29', tmtdew=12.18, humidity=43.71, cloud=0.0, wind=22.89, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:05:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:05:38.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-28T18:05:38.627 [DEBUG] [Thread-131639] [transport.py] [_log()] starting thread (client mode): 0x2b9a8cd0
2025-09-28T18:05:38.627 [DEBUG] [Thread-131639] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:38.642 [DEBUG] [Thread-131639] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:05:38.642 [INFO] [Thread-131639] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:38.650 [DEBUG] [Thread-131639] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:38.651 [DEBUG] [Thread-131639] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:38.652 [DEBUG] [Thread-131639] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:38.652 [DEBUG] [Thread-131639] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:38.652 [DEBUG] [Thread-131639] [transport.py] [_log()] Compression: none
2025-09-28T18:05:38.652 [DEBUG] [Thread-131639] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:38.713 [DEBUG] [Thread-131639] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:38.714 [DEBUG] [Thread-131639] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:38.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:05:38.715 [DEBUG] [Thread-131639] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:05:38.716 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:38.769 [DEBUG] [Thread-131639] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:38.769 [DEBUG] [Thread-131639] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:38.769 [DEBUG] [Thread-131639] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:38.769 [DEBUG] [Thread-131639] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:05:38.769 [DEBUG] [Thread-131639] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:38.789 [INFO] [Thread-131639] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:38.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-28T18:05:38.789 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:39.767 [DEBUG] [Thread-131639] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:39.767 [DEBUG] [Thread-131639] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:39.815 [DEBUG] [Thread-131639] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:39.815 [DEBUG] [Thread-131639] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:39.824 [DEBUG] [Thread-131639] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:39.833 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:39.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')
2025-09-28T18:05:39.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') -> 00000000
2025-09-28T18:05:39.851 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:39.851 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:39.852 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:39.859 [DEBUG] [Thread-131639] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:45.884 [DEBUG] [Thread-131641 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:05:49.858 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:05:49.858 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:05:49.859 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:05:50.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 5, 29), 12.18, 43.71, 0.0, 22.89, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:05:50.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:05:29
2025-09-28T18:05:50.572 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:05:50.723 [DEBUG] [Thread-131642] [transport.py] [_log()] starting thread (client mode): 0x2b9a9c00
2025-09-28T18:05:50.723 [DEBUG] [Thread-131642] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:50.737 [DEBUG] [Thread-131642] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:05:50.737 [INFO] [Thread-131642] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:05:50.739 [DEBUG] [Thread-131642] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:50.739 [DEBUG] [Thread-131642] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:05:50.739 [DEBUG] [Thread-131642] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] Compression: none
2025-09-28T18:05:50.740 [DEBUG] [Thread-131642] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:50.750 [DEBUG] [Thread-131642] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:50.750 [DEBUG] [Thread-131642] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:50.750 [DEBUG] [Thread-131642] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:05:50.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:05:50.751 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:50.751 [DEBUG] [Thread-131642] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:50.751 [DEBUG] [Thread-131642] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:50.751 [DEBUG] [Thread-131642] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:50.751 [DEBUG] [Thread-131642] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:05:50.751 [DEBUG] [Thread-131642] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:50.781 [INFO] [Thread-131642] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:50.781 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:51.388 [DEBUG] [Thread-131642] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:51.388 [DEBUG] [Thread-131642] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:51.388 [DEBUG] [Thread-131642] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:05:51.429 [DEBUG] [Thread-131642] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:51.429 [DEBUG] [Thread-131642] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:51.430 [DEBUG] [Thread-131642] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:51.441 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:51.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:05:51.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:05:51.442 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:05:51.444 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:51.445 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:05:51.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.670566 -999.00  +14.60  16.55     49   +4.10 1 1 1 1 1   887    0 9.32 -59.19 ----- 16.6 16.6 202.4 27.2 17.4 -26.6 17.1 -27.5 18.0 -25.4 18.4 -27.0
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:05:51.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.670566
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:05:51.446 [DEBUG] [Thread-131642] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:05:51.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:05:29', tmtdew=12.18, humidity=43.71, cloud=0.0, wind=22.89, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:05:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:05:51.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-28T18:05:51.534 [DEBUG] [Thread-131645] [transport.py] [_log()] starting thread (client mode): 0x2e3602e0
2025-09-28T18:05:51.534 [DEBUG] [Thread-131645] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:05:51.548 [DEBUG] [Thread-131645] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:05:51.548 [INFO] [Thread-131645] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] client lang: <none>
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] server lang: <none>
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] kex follows: False
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] Compression: none
2025-09-28T18:05:51.556 [DEBUG] [Thread-131645] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:05:51.613 [DEBUG] [Thread-131645] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:05:51.613 [DEBUG] [Thread-131645] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:05:51.614 [DEBUG] [Thread-131645] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:05:51.614 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:05:51.615 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:05:51.668 [DEBUG] [Thread-131645] [transport.py] [_log()] userauth is OK
2025-09-28T18:05:51.669 [DEBUG] [Thread-131645] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:05:51.669 [DEBUG] [Thread-131645] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:05:51.669 [DEBUG] [Thread-131645] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:05:51.669 [DEBUG] [Thread-131645] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:05:51.688 [INFO] [Thread-131645] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:05:51.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-28T18:05:51.689 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:05:52.652 [DEBUG] [Thread-131645] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:05:52.652 [DEBUG] [Thread-131645] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:05:52.700 [DEBUG] [Thread-131645] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:05:52.700 [DEBUG] [Thread-131645] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:05:52.709 [DEBUG] [Thread-131645] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:05:52.718 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:05:52.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-28T18:05:52.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-28T18:05:52.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:05:52.736 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:05:52.736 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:05:52.744 [DEBUG] [Thread-131645] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:06:00.926 [DEBUG] [Thread-131647 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:02.746 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:06:02.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:06:02.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-28T18:06:03.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 5, 29), 12.18, 43.71, 0.0, 22.89, 14.57, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:06:03.405 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:05:29
2025-09-28T18:06:03.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:06:03.670 [DEBUG] [Thread-131648] [transport.py] [_log()] starting thread (client mode): 0x2e362ec0
2025-09-28T18:06:03.670 [DEBUG] [Thread-131648] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:06:03.690 [DEBUG] [Thread-131648] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:06:03.690 [INFO] [Thread-131648] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:06:03.693 [DEBUG] [Thread-131648] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:06:03.693 [DEBUG] [Thread-131648] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:06:03.693 [DEBUG] [Thread-131648] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] client lang: <none>
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] server lang: <none>
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] kex follows: False
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:06:03.694 [DEBUG] [Thread-131648] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:06:03.695 [DEBUG] [Thread-131648] [transport.py] [_log()] Compression: none
2025-09-28T18:06:03.695 [DEBUG] [Thread-131648] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:06:03.712 [DEBUG] [Thread-131648] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:06:03.712 [DEBUG] [Thread-131648] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:06:03.713 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:06:03.713 [DEBUG] [Thread-131648] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:06:03.714 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:06:03.715 [DEBUG] [Thread-131648] [transport.py] [_log()] userauth is OK
2025-09-28T18:06:03.715 [DEBUG] [Thread-131648] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:06:03.715 [DEBUG] [Thread-131648] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:06:03.715 [DEBUG] [Thread-131648] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:06:03.715 [DEBUG] [Thread-131648] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:06:03.733 [INFO] [Thread-131648] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:06:03.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:06:04.516 [DEBUG] [Thread-131648] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:06:04.517 [DEBUG] [Thread-131648] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:06:04.517 [DEBUG] [Thread-131648] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:06:04.557 [DEBUG] [Thread-131648] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:06:04.557 [DEBUG] [Thread-131648] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:06:04.560 [DEBUG] [Thread-131648] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:06:04.572 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:06:04.572 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:06:04.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:06:04.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:06:04.581 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:06:04.582 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:06:04.583 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.670566 -999.00  +14.60  16.55     49   +4.10 1 1 1 1 1   887    0 9.32 -59.19 ----- 16.6 16.6 202.4 27.2 17.4 -26.6 17.1 -27.5 18.0 -25.4 18.4 -27.0
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:06:04.583 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.670566
2025-09-28T18:06:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:06:04.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:06:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:06:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:06:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:06:04.585 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:05:29', tmtdew=12.18, humidity=43.71, cloud=0.0, wind=22.89, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:05:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:06:04.585 [DEBUG] [Thread-131648] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:06:04.668 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:06:04.680 [DEBUG] [Thread-131651] [transport.py] [_log()] starting thread (client mode): 0x2e3606d0
2025-09-28T18:06:04.680 [DEBUG] [Thread-131651] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:06:04.695 [DEBUG] [Thread-131651] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:06:04.695 [INFO] [Thread-131651] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:06:04.702 [DEBUG] [Thread-131651] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] client lang: <none>
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] server lang: <none>
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] kex follows: False
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] Compression: none
2025-09-28T18:06:04.703 [DEBUG] [Thread-131651] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:06:04.760 [DEBUG] [Thread-131651] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:06:04.761 [DEBUG] [Thread-131651] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:06:04.761 [DEBUG] [Thread-131651] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:06:04.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:06:04.762 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:06:04.817 [DEBUG] [Thread-131651] [transport.py] [_log()] userauth is OK
2025-09-28T18:06:04.817 [DEBUG] [Thread-131651] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:06:04.817 [DEBUG] [Thread-131651] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:06:04.817 [DEBUG] [Thread-131651] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:06:04.817 [DEBUG] [Thread-131651] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:06:04.835 [INFO] [Thread-131651] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:06:04.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-28T18:06:04.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:06:05.815 [DEBUG] [Thread-131651] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:06:05.815 [DEBUG] [Thread-131651] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:06:05.863 [DEBUG] [Thread-131651] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:06:05.863 [DEBUG] [Thread-131651] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:06:05.872 [DEBUG] [Thread-131651] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:06:05.881 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:06: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')
2025-09-28T18:06:05.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-28T18:06:05.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:06:05.898 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:06:05.899 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:06:05.909 [DEBUG] [Thread-131651] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:06:15.909 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:06:15.909 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:06:15.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-28T18:06:15.967 [DEBUG] [Thread-131653 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:16.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 6, 1), 12.06, 43.94, 0.0, 22.89, 14.51, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:06:16.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:06:01
2025-09-28T18:06:16.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:06:16.754 [DEBUG] [Thread-131654] [transport.py] [_log()] starting thread (client mode): 0x2e362d10
2025-09-28T18:06:16.754 [DEBUG] [Thread-131654] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:06:16.774 [DEBUG] [Thread-131654] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:06:16.775 [INFO] [Thread-131654] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:06:16.776 [DEBUG] [Thread-131654] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:06:16.776 [DEBUG] [Thread-131654] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] client lang: <none>
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] server lang: <none>
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] kex follows: False
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:06:16.777 [DEBUG] [Thread-131654] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:06:16.778 [DEBUG] [Thread-131654] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:06:16.778 [DEBUG] [Thread-131654] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:06:16.778 [DEBUG] [Thread-131654] [transport.py] [_log()] Compression: none
2025-09-28T18:06:16.778 [DEBUG] [Thread-131654] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:06:16.790 [DEBUG] [Thread-131654] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:06:16.791 [DEBUG] [Thread-131654] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:06:16.791 [DEBUG] [Thread-131654] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:06:16.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:06:16.792 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:06:16.793 [DEBUG] [Thread-131654] [transport.py] [_log()] userauth is OK
2025-09-28T18:06:16.793 [DEBUG] [Thread-131654] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:06:16.794 [DEBUG] [Thread-131654] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:06:16.794 [DEBUG] [Thread-131654] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:06:16.794 [DEBUG] [Thread-131654] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:06:16.811 [INFO] [Thread-131654] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:06:16.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:06:17.591 [DEBUG] [Thread-131654] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:06:17.591 [DEBUG] [Thread-131654] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:06:17.592 [DEBUG] [Thread-131654] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:06:17.632 [DEBUG] [Thread-131654] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:06:17.633 [DEBUG] [Thread-131654] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:06:17.635 [DEBUG] [Thread-131654] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:06:17.646 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:06:17.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:06:17.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:06:17.650 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:06:17.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:06:17.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:06:17.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:06:17.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:06:17.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:06:17.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.670566 -999.00  +14.60  16.55     49   +4.10 1 1 1 1 1   887    0 9.32 -59.19 ----- 16.6 16.6 202.4 27.2 17.4 -26.6 17.1 -27.5 18.0 -25.4 18.4 -27.0
2025-09-28T18:06:17.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:06:17.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:06:17.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.670566
2025-09-28T18:06:17.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:06:17.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:06:17.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:06:17.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:06:17.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:06:17.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:06:01', tmtdew=12.06, humidity=43.94, cloud=0.0, wind=22.89, temperature=14.51, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:05:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:06:17.658 [DEBUG] [Thread-131654] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:06:17.742 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:06:25.993 [DEBUG] [Thread-131657 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:30.992 [DEBUG] [Thread-131658 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:34.458 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:34.459 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:06:46.033 [DEBUG] [Thread-131659 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:01.057 [DEBUG] [Thread-131660 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:16.085 [DEBUG] [Thread-131661 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:26.045 [DEBUG] [Thread-131662 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:31.117 [DEBUG] [Thread-131663 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:34.600 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:34.601 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:07:46.143 [DEBUG] [Thread-131664 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:01.175 [DEBUG] [Thread-131665 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:16.207 [DEBUG] [Thread-131666 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:26.096 [DEBUG] [Thread-131667 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:31.235 [DEBUG] [Thread-131668 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:32.187 [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-28T18:08:34.742 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:34.743 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:42.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:08:42.197 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:08:42.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-28T18:08:42.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 8, 9), 11.65, 45.38, 0.0, 21.76, 14.34, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:08:42.835 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:08:09
2025-09-28T18:08:42.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:08:43.102 [DEBUG] [Thread-131669] [transport.py] [_log()] starting thread (client mode): 0x2e360250
2025-09-28T18:08:43.102 [DEBUG] [Thread-131669] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:08:43.122 [DEBUG] [Thread-131669] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:08:43.122 [INFO] [Thread-131669] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:08:43.125 [DEBUG] [Thread-131669] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:08:43.125 [DEBUG] [Thread-131669] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:08:43.125 [DEBUG] [Thread-131669] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] client lang: <none>
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] server lang: <none>
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] kex follows: False
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] Compression: none
2025-09-28T18:08:43.126 [DEBUG] [Thread-131669] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:08:43.142 [DEBUG] [Thread-131669] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:08:43.142 [DEBUG] [Thread-131669] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:08:43.142 [DEBUG] [Thread-131669] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:08:43.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:08:43.142 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:08:43.142 [DEBUG] [Thread-131669] [transport.py] [_log()] userauth is OK
2025-09-28T18:08:43.142 [DEBUG] [Thread-131669] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:08:43.143 [DEBUG] [Thread-131669] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:08:43.143 [DEBUG] [Thread-131669] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:08:43.143 [DEBUG] [Thread-131669] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:08:43.152 [INFO] [Thread-131669] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:08:43.152 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:08:43.824 [DEBUG] [Thread-131669] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:08:43.824 [DEBUG] [Thread-131669] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:08:43.824 [DEBUG] [Thread-131669] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:08:43.864 [DEBUG] [Thread-131669] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:08:43.865 [DEBUG] [Thread-131669] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:08:43.868 [DEBUG] [Thread-131669] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:08:43.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:08:43.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:08:43.882 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:08:43.884 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:08:43.890 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:08:43.892 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:08:43.892 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:08:43.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:08:43.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:08:43.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.672302 -999.00  +14.50  18.70     50   +4.40 1 1 1 1 1   887    0 9.05 -68.79 ----- 18.7 18.7 203.2 26.1 17.2 -26.6 17.0 -26.4 17.8 -26.1 18.2 -26.9
2025-09-28T18:08:43.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:08:43.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:08:43.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.672302
2025-09-28T18:08:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:08:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:08:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:08:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:08:43.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:08:43.895 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:08:09', tmtdew=11.65, humidity=45.38, cloud=0.0, wind=21.76, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:08:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:08:43.895 [DEBUG] [Thread-131669] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:08:43.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-28T18:08:43.992 [DEBUG] [Thread-131672] [transport.py] [_log()] starting thread (client mode): 0x2e3615a0
2025-09-28T18:08:43.992 [DEBUG] [Thread-131672] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:08:44.007 [DEBUG] [Thread-131672] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:08:44.007 [INFO] [Thread-131672] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:08:44.014 [DEBUG] [Thread-131672] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:08:44.014 [DEBUG] [Thread-131672] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:08:44.014 [DEBUG] [Thread-131672] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:08:44.014 [DEBUG] [Thread-131672] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] client lang: <none>
2025-09-28T18:08:44.015 [DEBUG] [Thread-131672] [transport.py] [_log()] server lang: <none>
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] kex follows: False
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] Compression: none
2025-09-28T18:08:44.016 [DEBUG] [Thread-131672] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:08:44.071 [DEBUG] [Thread-131672] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:08:44.071 [DEBUG] [Thread-131672] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:08:44.072 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:08:44.072 [DEBUG] [Thread-131672] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:08:44.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:08:44.127 [DEBUG] [Thread-131672] [transport.py] [_log()] userauth is OK
2025-09-28T18:08:44.127 [DEBUG] [Thread-131672] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:08:44.127 [DEBUG] [Thread-131672] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:08:44.128 [DEBUG] [Thread-131672] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:08:44.128 [DEBUG] [Thread-131672] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:08:44.147 [INFO] [Thread-131672] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:08:44.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-28T18:08:44.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:08:45.097 [DEBUG] [Thread-131672] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:08:45.097 [DEBUG] [Thread-131672] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:08:45.145 [DEBUG] [Thread-131672] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:08:45.145 [DEBUG] [Thread-131672] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:08:45.154 [DEBUG] [Thread-131672] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:08:45.163 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:08:45.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-28T18:08:45.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-28T18:08:45.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:08:45.180 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:08:45.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:08:45.188 [DEBUG] [Thread-131672] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:08:46.269 [DEBUG] [Thread-131674 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:08:55.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:08:55.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:08:55.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-28T18:08:55.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 8, 41), 11.47, 46.12, 0.0, 22.06, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:08:55.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:08:41
2025-09-28T18:08:55.905 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:08:56.052 [DEBUG] [Thread-131675] [transport.py] [_log()] starting thread (client mode): 0x2b9a8400
2025-09-28T18:08:56.052 [DEBUG] [Thread-131675] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:08:56.072 [DEBUG] [Thread-131675] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:08:56.073 [INFO] [Thread-131675] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:56.076 [DEBUG] [Thread-131675] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] client lang: <none>
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] server lang: <none>
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] kex follows: False
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] Compression: none
2025-09-28T18:08:56.077 [DEBUG] [Thread-131675] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:08:56.096 [DEBUG] [Thread-131675] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:08:56.096 [DEBUG] [Thread-131675] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:08:56.097 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:08:56.097 [DEBUG] [Thread-131675] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:08:56.098 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:08:56.099 [DEBUG] [Thread-131675] [transport.py] [_log()] userauth is OK
2025-09-28T18:08:56.100 [DEBUG] [Thread-131675] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:08:56.100 [DEBUG] [Thread-131675] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:08:56.100 [DEBUG] [Thread-131675] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:08:56.100 [DEBUG] [Thread-131675] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:08:56.124 [INFO] [Thread-131675] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:08:56.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:08:56.771 [DEBUG] [Thread-131675] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:08:56.771 [DEBUG] [Thread-131675] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:08:56.772 [DEBUG] [Thread-131675] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:08:56.813 [DEBUG] [Thread-131675] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:08:56.813 [DEBUG] [Thread-131675] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:08:56.815 [DEBUG] [Thread-131675] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:08:56.828 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:08:56.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:08:56.829 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:08:56.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:08:56.833 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:08:56.834 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:08:56.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.672302 -999.00  +14.50  18.70     50   +4.40 1 1 1 1 1   887    0 9.05 -68.79 ----- 18.7 18.7 203.2 26.1 17.2 -26.6 17.0 -26.4 17.8 -26.1 18.2 -26.9
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.672302
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:08:56.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:08:41', tmtdew=11.47, humidity=46.12, cloud=0.0, wind=22.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:08:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:08:56.835 [DEBUG] [Thread-131675] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:08:56.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-28T18:08:56.917 [DEBUG] [Thread-131678] [transport.py] [_log()] starting thread (client mode): 0x2b9bbf10
2025-09-28T18:08:56.917 [DEBUG] [Thread-131678] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:08:56.932 [DEBUG] [Thread-131678] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:08:56.932 [INFO] [Thread-131678] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] client lang: <none>
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] server lang: <none>
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] kex follows: False
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:08:56.939 [DEBUG] [Thread-131678] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:08:56.940 [DEBUG] [Thread-131678] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:08:56.940 [DEBUG] [Thread-131678] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:08:56.940 [DEBUG] [Thread-131678] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:08:56.940 [DEBUG] [Thread-131678] [transport.py] [_log()] Compression: none
2025-09-28T18:08:56.940 [DEBUG] [Thread-131678] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:08:56.997 [DEBUG] [Thread-131678] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:08:56.997 [DEBUG] [Thread-131678] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:08:56.997 [DEBUG] [Thread-131678] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:08:56.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:08:56.997 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:08:57.055 [DEBUG] [Thread-131678] [transport.py] [_log()] userauth is OK
2025-09-28T18:08:57.055 [DEBUG] [Thread-131678] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:08:57.055 [DEBUG] [Thread-131678] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:08:57.055 [DEBUG] [Thread-131678] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:08:57.055 [DEBUG] [Thread-131678] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:08:57.068 [INFO] [Thread-131678] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:08:57.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-28T18:08:57.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:08:58.035 [DEBUG] [Thread-131678] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:08:58.035 [DEBUG] [Thread-131678] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:08:58.083 [DEBUG] [Thread-131678] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:08:58.083 [DEBUG] [Thread-131678] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:08:58.091 [DEBUG] [Thread-131678] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:08:58.099 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:08:58.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-28T18:08:58.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-28T18:08:58.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:08:58.115 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:08:58.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:08:58.122 [DEBUG] [Thread-131678] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:01.319 [DEBUG] [Thread-131680 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:09:08.125 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:09:08.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-28T18:09:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 8, 41), 11.47, 46.12, 0.0, 22.06, 14.27, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:09:08.722 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:08:41
2025-09-28T18:09:08.832 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:09:08.979 [DEBUG] [Thread-131681] [transport.py] [_log()] starting thread (client mode): 0x2e3610f0
2025-09-28T18:09:08.979 [DEBUG] [Thread-131681] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:08.989 [DEBUG] [Thread-131681] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:09:08.989 [INFO] [Thread-131681] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:09:08.990 [DEBUG] [Thread-131681] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] Compression: none
2025-09-28T18:09:08.991 [DEBUG] [Thread-131681] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:09.000 [DEBUG] [Thread-131681] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:09.001 [DEBUG] [Thread-131681] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:09.001 [DEBUG] [Thread-131681] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:09:09.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:09:09.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:09.002 [DEBUG] [Thread-131681] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:09.002 [DEBUG] [Thread-131681] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:09.002 [DEBUG] [Thread-131681] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:09.002 [DEBUG] [Thread-131681] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:09:09.002 [DEBUG] [Thread-131681] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:09.021 [INFO] [Thread-131681] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:09.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:09.580 [DEBUG] [Thread-131681] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:09.580 [DEBUG] [Thread-131681] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:09.581 [DEBUG] [Thread-131681] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:09:09.621 [DEBUG] [Thread-131681] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:09.621 [DEBUG] [Thread-131681] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:09.624 [DEBUG] [Thread-131681] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:09.637 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:09.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:09:09.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:09:09.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:09:09.644 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:09.645 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:09:09.645 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.672649 -999.00  +14.50   8.35     51   +4.50 1 1 1 1 1   887    0 8.92 -69.96 ----- 8.3 8.3 230.4 22.5 17.2 -26.4 17.0 -24.8 17.8 -25.8 18.2 -26.8
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:09:09.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.672649
2025-09-28T18:09:09.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:09:09.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:09:09.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:09:09.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:09:09.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:09:09.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:08:41', tmtdew=11.47, humidity=46.12, cloud=0.0, wind=22.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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:08:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:09:09.648 [DEBUG] [Thread-131681] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:09.724 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:09:09.735 [DEBUG] [Thread-131684] [transport.py] [_log()] starting thread (client mode): 0x2b9abfa0
2025-09-28T18:09:09.735 [DEBUG] [Thread-131684] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:09.750 [DEBUG] [Thread-131684] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:09:09.750 [INFO] [Thread-131684] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:09:09.757 [DEBUG] [Thread-131684] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] Compression: none
2025-09-28T18:09:09.758 [DEBUG] [Thread-131684] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:09.814 [DEBUG] [Thread-131684] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:09.814 [DEBUG] [Thread-131684] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:09.814 [DEBUG] [Thread-131684] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:09:09.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:09:09.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:09.871 [DEBUG] [Thread-131684] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:09.871 [DEBUG] [Thread-131684] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:09.871 [DEBUG] [Thread-131684] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:09.871 [DEBUG] [Thread-131684] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:09:09.872 [DEBUG] [Thread-131684] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:09.891 [INFO] [Thread-131684] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:09.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-28T18:09:09.892 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:10.817 [DEBUG] [Thread-131684] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:10.817 [DEBUG] [Thread-131684] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:10.865 [DEBUG] [Thread-131684] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:10.865 [DEBUG] [Thread-131684] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:10.874 [DEBUG] [Thread-131684] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:10.882 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:10.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-28T18:09:10.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-28T18:09:10.899 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:10.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:10.900 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:10.907 [DEBUG] [Thread-131684] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:16.353 [DEBUG] [Thread-131686 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:20.910 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:09:20.910 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:09:20.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-28T18:09:21.511 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 9, 13), 11.43, 46.26, 0.0, 22.07, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:09:21.512 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:09:13
2025-09-28T18:09:21.621 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:09:21.769 [DEBUG] [Thread-131687] [transport.py] [_log()] starting thread (client mode): 0x2e363a60
2025-09-28T18:09:21.769 [DEBUG] [Thread-131687] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:21.788 [DEBUG] [Thread-131687] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:09:21.788 [INFO] [Thread-131687] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] Compression: none
2025-09-28T18:09:21.789 [DEBUG] [Thread-131687] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:21.797 [DEBUG] [Thread-131687] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:21.797 [DEBUG] [Thread-131687] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:21.797 [DEBUG] [Thread-131687] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:09:21.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:09:21.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:21.799 [DEBUG] [Thread-131687] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:21.799 [DEBUG] [Thread-131687] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:21.799 [DEBUG] [Thread-131687] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:21.799 [DEBUG] [Thread-131687] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:09:21.799 [DEBUG] [Thread-131687] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:21.816 [INFO] [Thread-131687] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:21.816 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:22.479 [DEBUG] [Thread-131687] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:22.479 [DEBUG] [Thread-131687] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:22.479 [DEBUG] [Thread-131687] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:09:22.520 [DEBUG] [Thread-131687] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:22.521 [DEBUG] [Thread-131687] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:22.524 [DEBUG] [Thread-131687] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:22.535 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:22.535 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:09:22.544 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:09:22.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:09:22.552 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:22.554 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:09:22.554 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.672649 -999.00  +14.50   8.35     51   +4.50 1 1 1 1 1   887    0 8.92 -69.96 ----- 8.3 8.3 230.4 22.5 17.2 -26.4 17.0 -24.8 17.8 -25.8 18.2 -26.8
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:09:22.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.672649
2025-09-28T18:09:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:09:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:09:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:09:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:09:22.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:09:22.557 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:09:13', tmtdew=11.43, humidity=46.26, cloud=0.0, wind=22.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:08:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:09:22.557 [DEBUG] [Thread-131687] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:22.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-28T18:09:22.662 [DEBUG] [Thread-131690] [transport.py] [_log()] starting thread (client mode): 0x2b9947f0
2025-09-28T18:09:22.662 [DEBUG] [Thread-131690] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:22.677 [DEBUG] [Thread-131690] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:09:22.677 [INFO] [Thread-131690] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:09:22.684 [DEBUG] [Thread-131690] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:22.685 [DEBUG] [Thread-131690] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:22.686 [DEBUG] [Thread-131690] [transport.py] [_log()] Compression: none
2025-09-28T18:09:22.687 [DEBUG] [Thread-131690] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:22.743 [DEBUG] [Thread-131690] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:22.744 [DEBUG] [Thread-131690] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:22.745 [DEBUG] [Thread-131690] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:09:22.745 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:09:22.746 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:22.799 [DEBUG] [Thread-131690] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:22.800 [DEBUG] [Thread-131690] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:22.800 [DEBUG] [Thread-131690] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:22.800 [DEBUG] [Thread-131690] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:09:22.800 [DEBUG] [Thread-131690] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:22.818 [INFO] [Thread-131690] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:22.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-28T18:09:22.819 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:23.764 [DEBUG] [Thread-131690] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:23.765 [DEBUG] [Thread-131690] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:23.812 [DEBUG] [Thread-131690] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:23.812 [DEBUG] [Thread-131690] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:23.821 [DEBUG] [Thread-131690] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:23.830 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:23.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-28T18:09:23.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-28T18:09:23.847 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:23.847 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:23.848 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:23.855 [DEBUG] [Thread-131690] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:26.149 [DEBUG] [Thread-131692 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:31.394 [DEBUG] [Thread-131693 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:33.855 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:09:33.855 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:09:33.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-28T18:09:34.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 9, 13), 11.43, 46.26, 0.0, 22.07, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:09:34.446 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:09:13
2025-09-28T18:09:34.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:09:34.703 [DEBUG] [Thread-131694] [transport.py] [_log()] starting thread (client mode): 0x2b9aa6e0
2025-09-28T18:09:34.703 [DEBUG] [Thread-131694] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:34.724 [DEBUG] [Thread-131694] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:09:34.724 [INFO] [Thread-131694] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:09:34.726 [DEBUG] [Thread-131694] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:34.727 [DEBUG] [Thread-131694] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:34.728 [DEBUG] [Thread-131694] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:34.728 [DEBUG] [Thread-131694] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:34.728 [DEBUG] [Thread-131694] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:34.728 [DEBUG] [Thread-131694] [transport.py] [_log()] Compression: none
2025-09-28T18:09:34.728 [DEBUG] [Thread-131694] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:34.737 [DEBUG] [Thread-131694] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:34.737 [DEBUG] [Thread-131694] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:34.737 [DEBUG] [Thread-131694] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:09:34.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:09:34.737 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:34.738 [DEBUG] [Thread-131694] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:34.738 [DEBUG] [Thread-131694] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:34.738 [DEBUG] [Thread-131694] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:34.738 [DEBUG] [Thread-131694] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:09:34.738 [DEBUG] [Thread-131694] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:34.758 [INFO] [Thread-131694] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:34.758 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:34.886 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:34.887 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:35.297 [DEBUG] [Thread-131694] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:35.297 [DEBUG] [Thread-131694] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:35.297 [DEBUG] [Thread-131694] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:09:35.338 [DEBUG] [Thread-131694] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:35.338 [DEBUG] [Thread-131694] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:35.341 [DEBUG] [Thread-131694] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:35.353 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:35.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:09:35.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:09:35.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:09:35.357 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:35.358 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:09:35.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.672649 -999.00  +14.50   8.35     51   +4.50 1 1 1 1 1   887    0 8.92 -69.96 ----- 8.3 8.3 230.4 22.5 17.2 -26.4 17.0 -24.8 17.8 -25.8 18.2 -26.8
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:09:35.358 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.672649
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:09:35.359 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:09:13', tmtdew=11.43, humidity=46.26, cloud=0.0, wind=22.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:08:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:09:35.359 [DEBUG] [Thread-131694] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:35.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-28T18:09:35.445 [DEBUG] [Thread-131697] [transport.py] [_log()] starting thread (client mode): 0x2b9a92d0
2025-09-28T18:09:35.445 [DEBUG] [Thread-131697] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:35.460 [DEBUG] [Thread-131697] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:09:35.460 [INFO] [Thread-131697] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] Compression: none
2025-09-28T18:09:35.467 [DEBUG] [Thread-131697] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:35.522 [DEBUG] [Thread-131697] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:35.522 [DEBUG] [Thread-131697] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:35.522 [DEBUG] [Thread-131697] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:09:35.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:09:35.522 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:35.580 [DEBUG] [Thread-131697] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:35.580 [DEBUG] [Thread-131697] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:35.580 [DEBUG] [Thread-131697] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:35.580 [DEBUG] [Thread-131697] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:09:35.580 [DEBUG] [Thread-131697] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:35.594 [INFO] [Thread-131697] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:35.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-28T18:09:35.594 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:36.522 [DEBUG] [Thread-131697] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:36.522 [DEBUG] [Thread-131697] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:36.570 [DEBUG] [Thread-131697] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:36.570 [DEBUG] [Thread-131697] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:36.582 [DEBUG] [Thread-131697] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:36.593 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:36.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-28T18:09:36.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-28T18:09:36.615 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:36.615 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:36.615 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:36.625 [DEBUG] [Thread-131697] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:46.437 [DEBUG] [Thread-131699 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:09:46.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:09:46.625 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:09:46.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-28T18:09:47.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 9, 13), 11.43, 46.26, 0.0, 22.07, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:09:47.245 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:09:13
2025-09-28T18:09:47.353 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:09:47.505 [DEBUG] [Thread-131700] [transport.py] [_log()] starting thread (client mode): 0x2b9b9f60
2025-09-28T18:09:47.505 [DEBUG] [Thread-131700] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:47.524 [DEBUG] [Thread-131700] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:09:47.524 [INFO] [Thread-131700] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] Compression: none
2025-09-28T18:09:47.527 [DEBUG] [Thread-131700] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:47.542 [DEBUG] [Thread-131700] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:09:47.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:09:47.543 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:09:47.543 [DEBUG] [Thread-131700] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:47.552 [INFO] [Thread-131700] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:47.552 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:48.173 [DEBUG] [Thread-131700] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:48.174 [DEBUG] [Thread-131700] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:48.174 [DEBUG] [Thread-131700] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:09:48.214 [DEBUG] [Thread-131700] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:48.214 [DEBUG] [Thread-131700] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:48.217 [DEBUG] [Thread-131700] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:48.229 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:48.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:09:48.231 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:09:48.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:09:48.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:48.240 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:09:48.240 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:48.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:09:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.673344 -999.00  +14.50  16.23     51   +4.50 1 1 1 1 1   887    0 8.81 -77.16 ----- 16.2 16.2 214.9 24.4 17.1 -26.3 16.9 -25.5 17.7 -25.9 18.1 -27.1
2025-09-28T18:09:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:09:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:09:48.241 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.673344
2025-09-28T18:09:48.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:09:48.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:09:48.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:09:48.242 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:09:48.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:09:48.243 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:09:13', tmtdew=11.43, humidity=46.26, cloud=0.0, wind=22.07, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:09:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:09:48.243 [DEBUG] [Thread-131700] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:48.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-28T18:09:48.333 [DEBUG] [Thread-131703] [transport.py] [_log()] starting thread (client mode): 0x2b9b9f30
2025-09-28T18:09:48.333 [DEBUG] [Thread-131703] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:09:48.348 [DEBUG] [Thread-131703] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:09:48.348 [INFO] [Thread-131703] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:09:48.356 [DEBUG] [Thread-131703] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] client lang: <none>
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] server lang: <none>
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] kex follows: False
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:09:48.357 [DEBUG] [Thread-131703] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:09:48.358 [DEBUG] [Thread-131703] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:09:48.358 [DEBUG] [Thread-131703] [transport.py] [_log()] Compression: none
2025-09-28T18:09:48.358 [DEBUG] [Thread-131703] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:09:48.416 [DEBUG] [Thread-131703] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:09:48.417 [DEBUG] [Thread-131703] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:09:48.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:09:48.418 [DEBUG] [Thread-131703] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:09:48.419 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:09:48.472 [DEBUG] [Thread-131703] [transport.py] [_log()] userauth is OK
2025-09-28T18:09:48.472 [DEBUG] [Thread-131703] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:09:48.472 [DEBUG] [Thread-131703] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:09:48.473 [DEBUG] [Thread-131703] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:09:48.473 [DEBUG] [Thread-131703] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:09:48.492 [INFO] [Thread-131703] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:09:48.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-28T18:09:48.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:09:49.508 [DEBUG] [Thread-131703] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:09:49.508 [DEBUG] [Thread-131703] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:09:49.556 [DEBUG] [Thread-131703] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:09:49.557 [DEBUG] [Thread-131703] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:09:49.566 [DEBUG] [Thread-131703] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:09:49.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:09:49.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-28T18:09:49.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-28T18:09:49.592 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:09:49.592 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:09:49.593 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:09:49.600 [DEBUG] [Thread-131703] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:09:59.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:09:59.603 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:09:59.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-28T18:10:00.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 9, 45), 11.23, 46.72, 0.0, 23.57, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:10:00.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:09:45
2025-09-28T18:10:00.307 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:10:00.454 [DEBUG] [Thread-131705] [transport.py] [_log()] starting thread (client mode): 0x2b9a8670
2025-09-28T18:10:00.454 [DEBUG] [Thread-131705] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:00.470 [DEBUG] [Thread-131705] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:10:00.470 [INFO] [Thread-131705] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:00.474 [DEBUG] [Thread-131705] [transport.py] [_log()] Compression: none
2025-09-28T18:10:00.475 [DEBUG] [Thread-131705] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:00.493 [DEBUG] [Thread-131705] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:00.493 [DEBUG] [Thread-131705] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:00.494 [DEBUG] [Thread-131705] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:10:00.494 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:10:00.495 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:00.496 [DEBUG] [Thread-131705] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:00.497 [DEBUG] [Thread-131705] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:00.497 [DEBUG] [Thread-131705] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:00.497 [DEBUG] [Thread-131705] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:10:00.497 [DEBUG] [Thread-131705] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:00.521 [INFO] [Thread-131705] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:00.522 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:01.298 [DEBUG] [Thread-131705] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:01.298 [DEBUG] [Thread-131705] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:01.298 [DEBUG] [Thread-131705] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:10:01.338 [DEBUG] [Thread-131705] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:01.338 [DEBUG] [Thread-131705] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:01.341 [DEBUG] [Thread-131705] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:01.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:01.353 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:10:01.354 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:10:01.356 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:10:01.362 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:01.364 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:10:01.365 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:01.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.673344 -999.00  +14.50  16.23     51   +4.50 1 1 1 1 1   887    0 8.81 -77.16 ----- 16.2 16.2 214.9 24.4 17.1 -26.3 16.9 -25.5 17.7 -25.9 18.1 -27.1
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.673344
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:10:01.366 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:10:01.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:10:01.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:10:01.367 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:09:45', tmtdew=11.23, humidity=46.72, cloud=0.0, wind=23.57, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:09:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:10:01.368 [DEBUG] [Thread-131705] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:01.459 [DEBUG] [Thread-131708 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:01.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-28T18:10:01.492 [DEBUG] [Thread-131709] [transport.py] [_log()] starting thread (client mode): 0x2e3614e0
2025-09-28T18:10:01.493 [DEBUG] [Thread-131709] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:01.506 [DEBUG] [Thread-131709] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:10:01.507 [INFO] [Thread-131709] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:10:01.514 [DEBUG] [Thread-131709] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:01.514 [DEBUG] [Thread-131709] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] Compression: none
2025-09-28T18:10:01.515 [DEBUG] [Thread-131709] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:01.576 [DEBUG] [Thread-131709] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:01.577 [DEBUG] [Thread-131709] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:01.577 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:10:01.578 [DEBUG] [Thread-131709] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:10:01.579 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:01.636 [DEBUG] [Thread-131709] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:01.637 [DEBUG] [Thread-131709] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:01.637 [DEBUG] [Thread-131709] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:01.637 [DEBUG] [Thread-131709] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:10:01.637 [DEBUG] [Thread-131709] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:01.655 [INFO] [Thread-131709] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:01.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-28T18:10:01.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:02.674 [DEBUG] [Thread-131709] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:02.674 [DEBUG] [Thread-131709] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:02.722 [DEBUG] [Thread-131709] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:02.722 [DEBUG] [Thread-131709] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:02.731 [DEBUG] [Thread-131709] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:02.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:02.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-28T18:10:02.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-28T18:10:02.759 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:02.759 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:02.760 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:02.768 [DEBUG] [Thread-131709] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:12.770 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:10:12.770 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:10:12.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-28T18:10:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 9, 45), 11.23, 46.72, 0.0, 23.57, 14.31, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:10:13.382 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:09:45
2025-09-28T18:10:13.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:10:13.651 [DEBUG] [Thread-131711] [transport.py] [_log()] starting thread (client mode): 0x2b9badd0
2025-09-28T18:10:13.651 [DEBUG] [Thread-131711] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:13.671 [DEBUG] [Thread-131711] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:10:13.671 [INFO] [Thread-131711] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] Compression: none
2025-09-28T18:10:13.675 [DEBUG] [Thread-131711] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:13.683 [DEBUG] [Thread-131711] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:13.683 [DEBUG] [Thread-131711] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:13.683 [DEBUG] [Thread-131711] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:10:13.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:10:13.683 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:13.684 [DEBUG] [Thread-131711] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:13.684 [DEBUG] [Thread-131711] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:13.684 [DEBUG] [Thread-131711] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:13.684 [DEBUG] [Thread-131711] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:10:13.684 [DEBUG] [Thread-131711] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:13.693 [INFO] [Thread-131711] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:13.693 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:16.493 [DEBUG] [Thread-131713 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:22.092 [DEBUG] [Thread-131711] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:22.092 [DEBUG] [Thread-131711] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:22.092 [DEBUG] [Thread-131711] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:10:22.133 [DEBUG] [Thread-131711] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:22.133 [DEBUG] [Thread-131711] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:22.135 [DEBUG] [Thread-131711] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:22.181 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:22.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:10:22.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:10:22.183 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:10:22.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:22.228 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:10:22.228 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:22.228 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:22.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:10:22.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.673344 -999.00  +14.50  16.23     51   +4.50 1 1 1 1 1   887    0 8.81 -77.16 ----- 16.2 16.2 214.9 24.4 17.1 -26.3 16.9 -25.5 17.7 -25.9 18.1 -27.1
2025-09-28T18:10:22.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:10:22.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:10:22.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.673344
2025-09-28T18:10:22.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:10:22.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:10:22.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:10:22.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:10:22.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:10:22.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:09:45', tmtdew=11.23, humidity=46.72, cloud=0.0, wind=23.57, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:09:36.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:10:22.231 [DEBUG] [Thread-131711] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:22.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-28T18:10:22.328 [DEBUG] [Thread-131715] [transport.py] [_log()] starting thread (client mode): 0x2b996f80
2025-09-28T18:10:22.328 [DEBUG] [Thread-131715] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:22.344 [DEBUG] [Thread-131715] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:10:22.344 [INFO] [Thread-131715] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:10:22.351 [DEBUG] [Thread-131715] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:22.352 [DEBUG] [Thread-131715] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:22.353 [DEBUG] [Thread-131715] [transport.py] [_log()] Compression: none
2025-09-28T18:10:22.353 [DEBUG] [Thread-131715] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:22.408 [DEBUG] [Thread-131715] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:22.409 [DEBUG] [Thread-131715] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:22.410 [DEBUG] [Thread-131715] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:10:22.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:10:22.410 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:22.465 [DEBUG] [Thread-131715] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:22.465 [DEBUG] [Thread-131715] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:22.465 [DEBUG] [Thread-131715] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:22.465 [DEBUG] [Thread-131715] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:10:22.465 [DEBUG] [Thread-131715] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:22.483 [INFO] [Thread-131715] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:22.484 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:10:22.484 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:23.453 [DEBUG] [Thread-131715] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:23.453 [DEBUG] [Thread-131715] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:23.501 [DEBUG] [Thread-131715] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:23.501 [DEBUG] [Thread-131715] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:23.510 [DEBUG] [Thread-131715] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:23.519 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:23.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-28T18:10:23.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-28T18:10:23.536 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:23.536 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:23.537 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:23.545 [DEBUG] [Thread-131715] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:26.182 [DEBUG] [Thread-131717 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:31.518 [DEBUG] [Thread-131718 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:33.547 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:10:33.547 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:10:33.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-28T18:10:34.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 10, 17), 11.18, 46.89, 0.0, 25.53, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:10:34.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:10:17
2025-09-28T18:10:34.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:10:34.411 [DEBUG] [Thread-131719] [transport.py] [_log()] starting thread (client mode): 0x2b9979d0
2025-09-28T18:10:34.411 [DEBUG] [Thread-131719] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:34.432 [DEBUG] [Thread-131719] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:10:34.432 [INFO] [Thread-131719] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:34.435 [DEBUG] [Thread-131719] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] Compression: none
2025-09-28T18:10:34.436 [DEBUG] [Thread-131719] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:34.452 [DEBUG] [Thread-131719] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:34.452 [DEBUG] [Thread-131719] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:34.452 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:10:34.453 [DEBUG] [Thread-131719] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:10:34.453 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:34.454 [DEBUG] [Thread-131719] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:34.454 [DEBUG] [Thread-131719] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:34.454 [DEBUG] [Thread-131719] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:34.454 [DEBUG] [Thread-131719] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:10:34.454 [DEBUG] [Thread-131719] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:34.466 [INFO] [Thread-131719] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:34.466 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:35.033 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:35.034 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:35.063 [DEBUG] [Thread-131719] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:35.064 [DEBUG] [Thread-131719] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:35.064 [DEBUG] [Thread-131719] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:10:35.104 [DEBUG] [Thread-131719] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:35.104 [DEBUG] [Thread-131719] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:35.106 [DEBUG] [Thread-131719] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:35.120 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:35.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:10:35.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:10:35.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:10:35.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:35.130 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:10:35.130 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:35.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:35.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:10:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.673690 -999.00  +14.40  12.47     51   +4.60 1 1 1 1 1   887    0 8.18 -83.93 ----- 12.5 12.5 186.4 28.0 17.1 -26.0 16.9 -26.4 17.6 -25.2 18.0 -26.9
2025-09-28T18:10:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:10:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:10:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.673690
2025-09-28T18:10:35.131 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:10:35.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:10:35.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:10:35.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:10:35.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:10:35.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:10:17', tmtdew=11.18, humidity=46.89, cloud=0.0, wind=25.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:10:06.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:10:35.132 [DEBUG] [Thread-131719] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:35.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-28T18:10:35.230 [DEBUG] [Thread-131722] [transport.py] [_log()] starting thread (client mode): 0x2b997d00
2025-09-28T18:10:35.230 [DEBUG] [Thread-131722] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:35.244 [DEBUG] [Thread-131722] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:10:35.245 [INFO] [Thread-131722] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:10:35.252 [DEBUG] [Thread-131722] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:35.253 [DEBUG] [Thread-131722] [transport.py] [_log()] Compression: none
2025-09-28T18:10:35.254 [DEBUG] [Thread-131722] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:35.308 [DEBUG] [Thread-131722] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:35.309 [DEBUG] [Thread-131722] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:35.309 [DEBUG] [Thread-131722] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:10:35.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:10:35.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:35.365 [DEBUG] [Thread-131722] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:35.365 [DEBUG] [Thread-131722] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:35.366 [DEBUG] [Thread-131722] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:35.366 [DEBUG] [Thread-131722] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:10:35.366 [DEBUG] [Thread-131722] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:35.384 [INFO] [Thread-131722] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:35.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-28T18:10:35.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:36.320 [DEBUG] [Thread-131722] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:36.320 [DEBUG] [Thread-131722] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:36.368 [DEBUG] [Thread-131722] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:36.368 [DEBUG] [Thread-131722] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:36.377 [DEBUG] [Thread-131722] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:36.386 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:36.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-28T18:10:36.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-28T18:10:36.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:36.404 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:36.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:36.412 [DEBUG] [Thread-131722] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:46.411 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:10:46.412 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:10:46.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-28T18:10:46.542 [DEBUG] [Thread-131724 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:10:46.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 10, 17), 11.18, 46.89, 0.0, 25.53, 14.28, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:10:46.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:10:17
2025-09-28T18:10:47.105 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:10:47.254 [DEBUG] [Thread-131725] [transport.py] [_log()] starting thread (client mode): 0x2b9ab4c0
2025-09-28T18:10:47.254 [DEBUG] [Thread-131725] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:47.273 [DEBUG] [Thread-131725] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:10:47.274 [INFO] [Thread-131725] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:47.277 [DEBUG] [Thread-131725] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] Compression: none
2025-09-28T18:10:47.278 [DEBUG] [Thread-131725] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:47.294 [DEBUG] [Thread-131725] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:47.294 [DEBUG] [Thread-131725] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:47.294 [DEBUG] [Thread-131725] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:10:47.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:10:47.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:47.295 [DEBUG] [Thread-131725] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:47.295 [DEBUG] [Thread-131725] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:47.296 [DEBUG] [Thread-131725] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:47.296 [DEBUG] [Thread-131725] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:10:47.296 [DEBUG] [Thread-131725] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:47.308 [INFO] [Thread-131725] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:47.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:48.102 [DEBUG] [Thread-131725] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:48.103 [DEBUG] [Thread-131725] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:48.103 [DEBUG] [Thread-131725] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:10:48.143 [DEBUG] [Thread-131725] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:48.143 [DEBUG] [Thread-131725] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:48.146 [DEBUG] [Thread-131725] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:48.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:48.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:10:48.160 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:10:48.162 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:10:48.167 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:48.169 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:10:48.169 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:48.169 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:10:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.673690 -999.00  +14.40  12.47     51   +4.60 1 1 1 1 1   887    0 8.18 -83.93 ----- 12.5 12.5 186.4 28.0 17.1 -26.0 16.9 -26.4 17.6 -25.2 18.0 -26.9
2025-09-28T18:10:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:10:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:10:48.170 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.673690
2025-09-28T18:10:48.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:10:48.171 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:10:48.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:10:48.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:10:48.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:10:48.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:10:17', tmtdew=11.18, humidity=46.89, cloud=0.0, wind=25.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:10:06.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:10:48.172 [DEBUG] [Thread-131725] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:48.257 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:10:48.266 [DEBUG] [Thread-131728] [transport.py] [_log()] starting thread (client mode): 0x2e3c29b0
2025-09-28T18:10:48.267 [DEBUG] [Thread-131728] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:10:48.282 [DEBUG] [Thread-131728] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:10:48.282 [INFO] [Thread-131728] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:48.289 [DEBUG] [Thread-131728] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] client lang: <none>
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] server lang: <none>
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] kex follows: False
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] Compression: none
2025-09-28T18:10:48.290 [DEBUG] [Thread-131728] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:10:48.350 [DEBUG] [Thread-131728] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:10:48.350 [DEBUG] [Thread-131728] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:10:48.351 [DEBUG] [Thread-131728] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:10:48.351 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:10:48.352 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:10:48.405 [DEBUG] [Thread-131728] [transport.py] [_log()] userauth is OK
2025-09-28T18:10:48.406 [DEBUG] [Thread-131728] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:10:48.406 [DEBUG] [Thread-131728] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:10:48.406 [DEBUG] [Thread-131728] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:10:48.406 [DEBUG] [Thread-131728] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:10:48.422 [INFO] [Thread-131728] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:10:48.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-28T18:10:48.423 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:10:49.379 [DEBUG] [Thread-131728] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:10:49.379 [DEBUG] [Thread-131728] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:10:49.427 [DEBUG] [Thread-131728] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:10:49.427 [DEBUG] [Thread-131728] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:10:49.435 [DEBUG] [Thread-131728] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:10:49.443 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:10:49.443 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T18:10:49.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-28T18:10:49.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:10:49.459 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:10:49.459 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:10:49.467 [DEBUG] [Thread-131728] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:10:59.465 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:10:59.466 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:10:59.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-28T18:11:00.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 10, 48), 11.11, 47.1, 0.0, 23.03, 14.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:11:00.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:10:48
2025-09-28T18:11:00.163 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:11:00.310 [DEBUG] [Thread-131730] [transport.py] [_log()] starting thread (client mode): 0x2e3c28c0
2025-09-28T18:11:00.311 [DEBUG] [Thread-131730] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:00.330 [DEBUG] [Thread-131730] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:11:00.330 [INFO] [Thread-131730] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:00.333 [DEBUG] [Thread-131730] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] Compression: none
2025-09-28T18:11:00.334 [DEBUG] [Thread-131730] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:00.352 [DEBUG] [Thread-131730] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:00.353 [DEBUG] [Thread-131730] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:00.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:11:00.354 [DEBUG] [Thread-131730] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:11:00.354 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:00.355 [DEBUG] [Thread-131730] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:00.356 [DEBUG] [Thread-131730] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:00.356 [DEBUG] [Thread-131730] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:00.356 [DEBUG] [Thread-131730] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:11:00.356 [DEBUG] [Thread-131730] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:00.379 [INFO] [Thread-131730] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:00.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:01.010 [DEBUG] [Thread-131730] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:01.010 [DEBUG] [Thread-131730] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:01.010 [DEBUG] [Thread-131730] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:11:01.051 [DEBUG] [Thread-131730] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:01.052 [DEBUG] [Thread-131730] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:01.055 [DEBUG] [Thread-131730] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:01.065 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:01.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:11:01.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:11:01.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:11:01.074 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:01.076 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:11:01.076 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:01.076 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:01.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:11:01.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674038 -999.00  +14.40  15.77     51   +4.60 1 1 1 1 1   887    0 8.48 -79.80 ----- 15.8 15.8 203.0 22.9 17.1 -26.0 16.9 -24.8 17.6 -25.8 17.9 -27.1
2025-09-28T18:11:01.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:11:01.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:11:01.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674038
2025-09-28T18:11:01.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:11:01.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:11:01.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:11:01.078 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:11:01.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:11:01.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:10:48', tmtdew=11.11, humidity=47.1, cloud=0.0, wind=23.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:10:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:11:01.079 [DEBUG] [Thread-131730] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:01.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-28T18:11:01.176 [DEBUG] [Thread-131733] [transport.py] [_log()] starting thread (client mode): 0x2b9b9690
2025-09-28T18:11:01.176 [DEBUG] [Thread-131733] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:01.190 [DEBUG] [Thread-131733] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:11:01.190 [INFO] [Thread-131733] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:01.198 [DEBUG] [Thread-131733] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:01.199 [DEBUG] [Thread-131733] [transport.py] [_log()] Compression: none
2025-09-28T18:11:01.199 [DEBUG] [Thread-131733] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:01.257 [DEBUG] [Thread-131733] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:01.258 [DEBUG] [Thread-131733] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:01.258 [DEBUG] [Thread-131733] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:11:01.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:11:01.259 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:01.313 [DEBUG] [Thread-131733] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:01.314 [DEBUG] [Thread-131733] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:01.314 [DEBUG] [Thread-131733] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:01.314 [DEBUG] [Thread-131733] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:11:01.314 [DEBUG] [Thread-131733] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:01.332 [INFO] [Thread-131733] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:01.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-28T18:11:01.333 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:01.577 [DEBUG] [Thread-131735 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:02.322 [DEBUG] [Thread-131733] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:02.323 [DEBUG] [Thread-131733] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:02.371 [DEBUG] [Thread-131733] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:02.371 [DEBUG] [Thread-131733] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:02.379 [DEBUG] [Thread-131733] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:02.387 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11: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-28T18:11: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-28T18:11:02.403 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:02.403 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:02.404 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:02.411 [DEBUG] [Thread-131733] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:12.412 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:11:12.413 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:11:12.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-28T18:11:13.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 10, 48), 11.11, 47.1, 0.0, 23.03, 14.19, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:11:13.000 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:10:48
2025-09-28T18:11:13.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:11:13.259 [DEBUG] [Thread-131736] [transport.py] [_log()] starting thread (client mode): 0x2b9a9a80
2025-09-28T18:11:13.259 [DEBUG] [Thread-131736] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:13.277 [DEBUG] [Thread-131736] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:11:13.278 [INFO] [Thread-131736] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:13.281 [DEBUG] [Thread-131736] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] Compression: none
2025-09-28T18:11:13.282 [DEBUG] [Thread-131736] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:13.298 [DEBUG] [Thread-131736] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:13.299 [DEBUG] [Thread-131736] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:13.299 [DEBUG] [Thread-131736] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:11:13.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:11:13.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:13.301 [DEBUG] [Thread-131736] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:13.302 [DEBUG] [Thread-131736] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:13.302 [DEBUG] [Thread-131736] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:13.302 [DEBUG] [Thread-131736] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:11:13.302 [DEBUG] [Thread-131736] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:13.326 [INFO] [Thread-131736] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:13.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:14.126 [DEBUG] [Thread-131736] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:14.126 [DEBUG] [Thread-131736] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:14.126 [DEBUG] [Thread-131736] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:11:14.167 [DEBUG] [Thread-131736] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:14.167 [DEBUG] [Thread-131736] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:14.174 [DEBUG] [Thread-131736] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:14.187 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:14.187 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:11:14.189 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:11:14.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:11:14.195 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:14.197 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:11:14.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:14.197 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:14.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:11:14.197 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674038 -999.00  +14.40  15.77     51   +4.60 1 1 1 1 1   887    0 8.48 -79.80 ----- 15.8 15.8 203.0 22.9 17.1 -26.0 16.9 -24.8 17.6 -25.8 17.9 -27.1
2025-09-28T18:11:14.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:11:14.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:11:14.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674038
2025-09-28T18:11:14.198 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:11:14.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:11:14.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:11:14.199 [DEBUG] [Thread-131736] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:14.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:11:14.199 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:11:14.200 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:10:48', tmtdew=11.11, humidity=47.1, cloud=0.0, wind=23.03, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:10:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:11:14.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-28T18:11:14.293 [DEBUG] [Thread-131739] [transport.py] [_log()] starting thread (client mode): 0x2b994880
2025-09-28T18:11:14.293 [DEBUG] [Thread-131739] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:14.308 [DEBUG] [Thread-131739] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:11:14.308 [INFO] [Thread-131739] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:11:14.316 [DEBUG] [Thread-131739] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:14.316 [DEBUG] [Thread-131739] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] Compression: none
2025-09-28T18:11:14.317 [DEBUG] [Thread-131739] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:14.373 [DEBUG] [Thread-131739] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:14.374 [DEBUG] [Thread-131739] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:14.374 [DEBUG] [Thread-131739] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:11:14.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:11:14.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:14.430 [DEBUG] [Thread-131739] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:14.430 [DEBUG] [Thread-131739] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:14.430 [DEBUG] [Thread-131739] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:14.430 [DEBUG] [Thread-131739] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:11:14.430 [DEBUG] [Thread-131739] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:14.449 [INFO] [Thread-131739] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:14.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-28T18:11:14.449 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:15.393 [DEBUG] [Thread-131739] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:15.393 [DEBUG] [Thread-131739] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:15.441 [DEBUG] [Thread-131739] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:15.441 [DEBUG] [Thread-131739] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:15.450 [DEBUG] [Thread-131739] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:15.459 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:15.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-28T18:11:15.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-28T18:11:15.476 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:15.477 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:15.477 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:15.485 [DEBUG] [Thread-131739] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:16.623 [DEBUG] [Thread-131741 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:25.488 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:11:25.488 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:11:25.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-28T18:11:26.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 11, 20), 11.1, 47.12, 0.0, 20.84, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:11:26.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:11:20
2025-09-28T18:11:26.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:11:26.229 [DEBUG] [Thread-131742 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:26.332 [DEBUG] [Thread-131743] [transport.py] [_log()] starting thread (client mode): 0x2b9dfdc0
2025-09-28T18:11:26.333 [DEBUG] [Thread-131743] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:26.352 [DEBUG] [Thread-131743] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:11:26.352 [INFO] [Thread-131743] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:26.355 [DEBUG] [Thread-131743] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] Compression: none
2025-09-28T18:11:26.356 [DEBUG] [Thread-131743] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:26.372 [DEBUG] [Thread-131743] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:26.373 [DEBUG] [Thread-131743] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:26.374 [DEBUG] [Thread-131743] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:11:26.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:11:26.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:26.376 [DEBUG] [Thread-131743] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:26.376 [DEBUG] [Thread-131743] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:26.376 [DEBUG] [Thread-131743] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:26.376 [DEBUG] [Thread-131743] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:11:26.376 [DEBUG] [Thread-131743] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:26.393 [INFO] [Thread-131743] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:26.394 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:27.122 [DEBUG] [Thread-131743] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:27.123 [DEBUG] [Thread-131743] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:27.123 [DEBUG] [Thread-131743] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:11:27.163 [DEBUG] [Thread-131743] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:27.163 [DEBUG] [Thread-131743] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:27.166 [DEBUG] [Thread-131743] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:27.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:27.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:11:27.182 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:11:27.184 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:11:27.188 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:27.190 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:11:27.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:27.190 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:11:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674038 -999.00  +14.40  15.77     51   +4.60 1 1 1 1 1   887    0 8.48 -79.80 ----- 15.8 15.8 203.0 22.9 17.1 -26.0 16.9 -24.8 17.6 -25.8 17.9 -27.1
2025-09-28T18:11:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:11:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:11:27.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674038
2025-09-28T18:11:27.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:11:27.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:11:27.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:11:27.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:11:27.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:11:27.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:11:20', tmtdew=11.1, humidity=47.12, cloud=0.0, wind=20.84, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:10:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:11:27.193 [DEBUG] [Thread-131743] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:27.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-28T18:11:27.293 [DEBUG] [Thread-131746] [transport.py] [_log()] starting thread (client mode): 0x2b9dd150
2025-09-28T18:11:27.293 [DEBUG] [Thread-131746] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:27.308 [DEBUG] [Thread-131746] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:11:27.308 [INFO] [Thread-131746] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:11:27.315 [DEBUG] [Thread-131746] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] Compression: none
2025-09-28T18:11:27.316 [DEBUG] [Thread-131746] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:27.374 [DEBUG] [Thread-131746] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:27.374 [DEBUG] [Thread-131746] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:27.375 [DEBUG] [Thread-131746] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:11:27.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:11:27.375 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:27.430 [DEBUG] [Thread-131746] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:27.430 [DEBUG] [Thread-131746] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:27.430 [DEBUG] [Thread-131746] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:27.431 [DEBUG] [Thread-131746] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:11:27.431 [DEBUG] [Thread-131746] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:27.450 [INFO] [Thread-131746] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:27.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-28T18:11:27.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:28.415 [DEBUG] [Thread-131746] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:28.415 [DEBUG] [Thread-131746] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:28.463 [DEBUG] [Thread-131746] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:28.463 [DEBUG] [Thread-131746] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:28.472 [DEBUG] [Thread-131746] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:28.481 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:28.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-28T18:11:28.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-28T18:11:28.499 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:28.499 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:28.500 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:28.507 [DEBUG] [Thread-131746] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:31.651 [DEBUG] [Thread-131748 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:35.177 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:35.178 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:38.510 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:11:38.510 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:11:38.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-28T18:11:39.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 11, 20), 11.1, 47.12, 0.0, 20.84, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:11:39.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:11:20
2025-09-28T18:11:39.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:11:39.364 [DEBUG] [Thread-131749] [transport.py] [_log()] starting thread (client mode): 0x2b91f340
2025-09-28T18:11:39.364 [DEBUG] [Thread-131749] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:39.385 [DEBUG] [Thread-131749] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:11:39.385 [INFO] [Thread-131749] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:11:39.388 [DEBUG] [Thread-131749] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:39.388 [DEBUG] [Thread-131749] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] Compression: none
2025-09-28T18:11:39.389 [DEBUG] [Thread-131749] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:39.406 [DEBUG] [Thread-131749] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:39.407 [DEBUG] [Thread-131749] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:39.407 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:11:39.408 [DEBUG] [Thread-131749] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:11:39.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:39.409 [DEBUG] [Thread-131749] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:39.410 [DEBUG] [Thread-131749] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:39.410 [DEBUG] [Thread-131749] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:39.410 [DEBUG] [Thread-131749] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:11:39.410 [DEBUG] [Thread-131749] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:39.428 [INFO] [Thread-131749] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:39.428 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:40.029 [DEBUG] [Thread-131749] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:40.029 [DEBUG] [Thread-131749] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:40.030 [DEBUG] [Thread-131749] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:11:40.070 [DEBUG] [Thread-131749] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:40.071 [DEBUG] [Thread-131749] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:40.073 [DEBUG] [Thread-131749] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:40.085 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:40.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:11:40.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:11:40.090 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:11:40.094 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:40.096 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:11:40.096 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:40.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:11:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674385 -999.00  +14.40  16.16     51   +4.50 1 1 1 1 1   887    0 8.22 -85.89 ----- 16.2 16.2 211.7 23.6 17.0 -26.2 16.8 -25.1 17.5 -25.3 17.9 -26.7
2025-09-28T18:11:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:11:40.097 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:11:40.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674385
2025-09-28T18:11:40.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:11:40.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:11:40.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:11:40.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:11:40.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:11:40.099 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:11:20', tmtdew=11.1, humidity=47.12, cloud=0.0, wind=20.84, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:11:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:11:40.099 [DEBUG] [Thread-131749] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:40.184 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:11:40.197 [DEBUG] [Thread-131752] [transport.py] [_log()] starting thread (client mode): 0x2b9a9c60
2025-09-28T18:11:40.197 [DEBUG] [Thread-131752] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:40.211 [DEBUG] [Thread-131752] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:11:40.211 [INFO] [Thread-131752] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:40.219 [DEBUG] [Thread-131752] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:40.220 [DEBUG] [Thread-131752] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:40.221 [DEBUG] [Thread-131752] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:40.221 [DEBUG] [Thread-131752] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:40.221 [DEBUG] [Thread-131752] [transport.py] [_log()] Compression: none
2025-09-28T18:11:40.221 [DEBUG] [Thread-131752] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:40.278 [DEBUG] [Thread-131752] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:40.278 [DEBUG] [Thread-131752] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:40.279 [DEBUG] [Thread-131752] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:11:40.279 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:11:40.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:40.334 [DEBUG] [Thread-131752] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:40.334 [DEBUG] [Thread-131752] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:40.335 [DEBUG] [Thread-131752] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:40.335 [DEBUG] [Thread-131752] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:11:40.335 [DEBUG] [Thread-131752] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:40.353 [INFO] [Thread-131752] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:40.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-28T18:11:40.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:41.292 [DEBUG] [Thread-131752] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:41.292 [DEBUG] [Thread-131752] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:41.341 [DEBUG] [Thread-131752] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:41.341 [DEBUG] [Thread-131752] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:41.350 [DEBUG] [Thread-131752] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:41.359 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:41.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-28T18:11:41.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-28T18:11:41.376 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:41.377 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:41.377 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:41.385 [DEBUG] [Thread-131752] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:46.689 [DEBUG] [Thread-131754 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:11:51.387 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:11:51.388 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:11:51.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-28T18:11:51.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 11, 20), 11.1, 47.12, 0.0, 20.84, 14.16, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:11:51.977 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:11:20
2025-09-28T18:11:52.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:11:52.234 [DEBUG] [Thread-131755] [transport.py] [_log()] starting thread (client mode): 0x2b9df0d0
2025-09-28T18:11:52.234 [DEBUG] [Thread-131755] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:52.254 [DEBUG] [Thread-131755] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:11:52.254 [INFO] [Thread-131755] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:52.257 [DEBUG] [Thread-131755] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] Compression: none
2025-09-28T18:11:52.258 [DEBUG] [Thread-131755] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:52.278 [DEBUG] [Thread-131755] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:52.279 [DEBUG] [Thread-131755] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:52.280 [DEBUG] [Thread-131755] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:11:52.280 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:11:52.281 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:52.282 [DEBUG] [Thread-131755] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:52.282 [DEBUG] [Thread-131755] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:52.283 [DEBUG] [Thread-131755] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:52.283 [DEBUG] [Thread-131755] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:11:52.283 [DEBUG] [Thread-131755] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:52.306 [INFO] [Thread-131755] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:52.306 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:53.074 [DEBUG] [Thread-131755] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:53.074 [DEBUG] [Thread-131755] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:53.074 [DEBUG] [Thread-131755] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:11:53.115 [DEBUG] [Thread-131755] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:53.115 [DEBUG] [Thread-131755] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:53.116 [DEBUG] [Thread-131755] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:53.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11:53.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:11:53.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:11:53.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:11:53.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:53.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:11:53.126 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674385 -999.00  +14.40  16.16     51   +4.50 1 1 1 1 1   887    0 8.22 -85.89 ----- 16.2 16.2 211.7 23.6 17.0 -26.2 16.8 -25.1 17.5 -25.3 17.9 -26.7
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674385
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:11:53.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:11:20', tmtdew=11.1, humidity=47.12, cloud=0.0, wind=20.84, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:11:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:11:53.126 [DEBUG] [Thread-131755] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:11:53.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-28T18:11:53.210 [DEBUG] [Thread-131758] [transport.py] [_log()] starting thread (client mode): 0x2b9dd660
2025-09-28T18:11:53.210 [DEBUG] [Thread-131758] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:11:53.225 [DEBUG] [Thread-131758] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:11:53.225 [INFO] [Thread-131758] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] client lang: <none>
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] server lang: <none>
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] kex follows: False
2025-09-28T18:11:53.232 [DEBUG] [Thread-131758] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] Compression: none
2025-09-28T18:11:53.233 [DEBUG] [Thread-131758] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:11:53.289 [DEBUG] [Thread-131758] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:11:53.289 [DEBUG] [Thread-131758] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:11:53.289 [DEBUG] [Thread-131758] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:11:53.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:11:53.290 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:11:53.347 [DEBUG] [Thread-131758] [transport.py] [_log()] userauth is OK
2025-09-28T18:11:53.347 [DEBUG] [Thread-131758] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:11:53.347 [DEBUG] [Thread-131758] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:11:53.347 [DEBUG] [Thread-131758] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:11:53.347 [DEBUG] [Thread-131758] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:11:53.362 [INFO] [Thread-131758] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:11:53.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-28T18:11:53.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:11:54.294 [DEBUG] [Thread-131758] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:11:54.294 [DEBUG] [Thread-131758] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:11:54.342 [DEBUG] [Thread-131758] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:11:54.342 [DEBUG] [Thread-131758] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:11:54.350 [DEBUG] [Thread-131758] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:11:54.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:11: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-28T18:11: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-28T18:11:54.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:11:54.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:11:54.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:11:54.383 [DEBUG] [Thread-131758] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:01.735 [DEBUG] [Thread-131760 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:04.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:12:04.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:12:04.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-28T18:12:04.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 11, 52), 11.08, 47.17, 0.0, 22.41, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:12:04.965 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:11:52
2025-09-28T18:12:05.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:12:05.225 [DEBUG] [Thread-131761] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-28T18:12:05.225 [DEBUG] [Thread-131761] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:05.244 [DEBUG] [Thread-131761] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:12:05.244 [INFO] [Thread-131761] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] Compression: none
2025-09-28T18:12:05.248 [DEBUG] [Thread-131761] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:05.266 [DEBUG] [Thread-131761] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:05.267 [DEBUG] [Thread-131761] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:05.267 [DEBUG] [Thread-131761] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:12:05.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:12:05.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:05.269 [DEBUG] [Thread-131761] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:05.269 [DEBUG] [Thread-131761] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:05.270 [DEBUG] [Thread-131761] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:05.270 [DEBUG] [Thread-131761] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:12:05.270 [DEBUG] [Thread-131761] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:05.294 [INFO] [Thread-131761] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:05.295 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:05.921 [DEBUG] [Thread-131761] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:05.922 [DEBUG] [Thread-131761] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:05.922 [DEBUG] [Thread-131761] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:12:05.962 [DEBUG] [Thread-131761] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:05.962 [DEBUG] [Thread-131761] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:05.965 [DEBUG] [Thread-131761] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:05.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:05.976 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:12:05.978 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:12:05.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:12:05.983 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:05.984 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:12:05.985 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674732 -999.00  +14.30  16.27     51   +4.50 1 1 1 1 1   887    0 7.90 -96.25 ----- 16.3 16.3 213.8 21.2 17.0 -26.2 16.8 -25.3 17.4 -25.8 17.9 -26.3
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:12:05.985 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674732
2025-09-28T18:12:05.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:12:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:12:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:12:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:12:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:12:05.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:11:52', tmtdew=11.08, humidity=47.17, cloud=0.0, wind=22.41, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:11:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:12:05.988 [DEBUG] [Thread-131761] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:06.065 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:12:06.076 [DEBUG] [Thread-131764] [transport.py] [_log()] starting thread (client mode): 0x2e3c0370
2025-09-28T18:12:06.076 [DEBUG] [Thread-131764] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:06.090 [DEBUG] [Thread-131764] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:12:06.090 [INFO] [Thread-131764] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] Compression: none
2025-09-28T18:12:06.098 [DEBUG] [Thread-131764] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:06.158 [DEBUG] [Thread-131764] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:06.158 [DEBUG] [Thread-131764] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:06.158 [DEBUG] [Thread-131764] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:12:06.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:12:06.159 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:06.219 [DEBUG] [Thread-131764] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:06.219 [DEBUG] [Thread-131764] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:06.219 [DEBUG] [Thread-131764] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:06.219 [DEBUG] [Thread-131764] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:12:06.220 [DEBUG] [Thread-131764] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:06.239 [INFO] [Thread-131764] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:06.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-28T18:12:06.240 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:07.233 [DEBUG] [Thread-131764] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:07.233 [DEBUG] [Thread-131764] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:07.281 [DEBUG] [Thread-131764] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:07.281 [DEBUG] [Thread-131764] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:07.291 [DEBUG] [Thread-131764] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:07.299 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:07.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-28T18:12: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-28T18:12:07.319 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:07.319 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:07.320 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:07.327 [DEBUG] [Thread-131764] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:16.767 [DEBUG] [Thread-131766 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:17.330 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:12:17.330 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:12:17.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-28T18:12:17.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 11, 52), 11.08, 47.17, 0.0, 22.41, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:12:17.908 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:11:52
2025-09-28T18:12:18.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:12:18.169 [DEBUG] [Thread-131767] [transport.py] [_log()] starting thread (client mode): 0x2b9de620
2025-09-28T18:12:18.170 [DEBUG] [Thread-131767] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:18.190 [DEBUG] [Thread-131767] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:12:18.190 [INFO] [Thread-131767] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:12:18.193 [DEBUG] [Thread-131767] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:18.194 [DEBUG] [Thread-131767] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:18.195 [DEBUG] [Thread-131767] [transport.py] [_log()] Compression: none
2025-09-28T18:12:18.195 [DEBUG] [Thread-131767] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:18.210 [DEBUG] [Thread-131767] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:18.210 [DEBUG] [Thread-131767] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:18.211 [DEBUG] [Thread-131767] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:12:18.211 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:12:18.212 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:18.213 [DEBUG] [Thread-131767] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:18.213 [DEBUG] [Thread-131767] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:18.213 [DEBUG] [Thread-131767] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:18.213 [DEBUG] [Thread-131767] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:12:18.213 [DEBUG] [Thread-131767] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:18.236 [INFO] [Thread-131767] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:18.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:19.051 [DEBUG] [Thread-131767] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:19.051 [DEBUG] [Thread-131767] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:19.052 [DEBUG] [Thread-131767] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:12:19.092 [DEBUG] [Thread-131767] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:19.092 [DEBUG] [Thread-131767] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:19.095 [DEBUG] [Thread-131767] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:19.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:19.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:12:19.108 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:12:19.110 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:12:19.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:19.116 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:12:19.116 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:19.116 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:19.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:12:19.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674732 -999.00  +14.30  16.27     51   +4.50 1 1 1 1 1   887    0 7.90 -96.25 ----- 16.3 16.3 213.8 21.2 17.0 -26.2 16.8 -25.3 17.4 -25.8 17.9 -26.3
2025-09-28T18:12:19.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:12:19.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:12:19.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674732
2025-09-28T18:12:19.117 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:12:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:12:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:12:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:12:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:12:19.118 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:11:52', tmtdew=11.08, humidity=47.17, cloud=0.0, wind=22.41, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:11:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:12:19.118 [DEBUG] [Thread-131767] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:19.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-28T18:12:19.214 [DEBUG] [Thread-131770] [transport.py] [_log()] starting thread (client mode): 0x2b91e770
2025-09-28T18:12:19.214 [DEBUG] [Thread-131770] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:19.228 [DEBUG] [Thread-131770] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:12:19.228 [INFO] [Thread-131770] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:12:19.235 [DEBUG] [Thread-131770] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:19.236 [DEBUG] [Thread-131770] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] Compression: none
2025-09-28T18:12:19.237 [DEBUG] [Thread-131770] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:19.295 [DEBUG] [Thread-131770] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:19.295 [DEBUG] [Thread-131770] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:19.296 [DEBUG] [Thread-131770] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:12:19.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:12:19.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:19.351 [DEBUG] [Thread-131770] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:19.351 [DEBUG] [Thread-131770] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:19.351 [DEBUG] [Thread-131770] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:19.351 [DEBUG] [Thread-131770] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:12:19.351 [DEBUG] [Thread-131770] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:19.374 [INFO] [Thread-131770] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:19.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-28T18:12:19.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:20.362 [DEBUG] [Thread-131770] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:20.363 [DEBUG] [Thread-131770] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:20.410 [DEBUG] [Thread-131770] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:20.410 [DEBUG] [Thread-131770] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:20.419 [DEBUG] [Thread-131770] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:20.428 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:20.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-28T18:12:20.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-28T18:12:20.445 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:20.445 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:20.446 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:20.454 [DEBUG] [Thread-131770] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:26.274 [DEBUG] [Thread-131772 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:30.452 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:12:30.453 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:12:30.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-28T18:12:31.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 12, 24), 11.07, 47.22, 0.0, 20.17, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:12:31.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:12:24
2025-09-28T18:12:31.132 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:12:31.284 [DEBUG] [Thread-131773] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-28T18:12:31.285 [DEBUG] [Thread-131773] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:31.304 [DEBUG] [Thread-131773] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:12:31.305 [INFO] [Thread-131773] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] Compression: none
2025-09-28T18:12:31.308 [DEBUG] [Thread-131773] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:31.323 [DEBUG] [Thread-131773] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:31.323 [DEBUG] [Thread-131773] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:31.323 [DEBUG] [Thread-131773] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:12:31.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:12:31.324 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:31.324 [DEBUG] [Thread-131773] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:31.324 [DEBUG] [Thread-131773] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:31.324 [DEBUG] [Thread-131773] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:31.324 [DEBUG] [Thread-131773] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:12:31.324 [DEBUG] [Thread-131773] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:31.340 [INFO] [Thread-131773] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:31.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:31.809 [DEBUG] [Thread-131775 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:32.149 [DEBUG] [Thread-131773] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:32.150 [DEBUG] [Thread-131773] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:32.150 [DEBUG] [Thread-131773] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:12:32.190 [DEBUG] [Thread-131773] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:32.191 [DEBUG] [Thread-131773] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:32.193 [DEBUG] [Thread-131773] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:32.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:32.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:12:32.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:12:32.209 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:12:32.214 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:32.216 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:12:32.217 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:32.217 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:32.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:12:32.217 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.674732 -999.00  +14.30  16.27     51   +4.50 1 1 1 1 1   887    0 7.90 -96.25 ----- 16.3 16.3 213.8 21.2 17.0 -26.2 16.8 -25.3 17.4 -25.8 17.9 -26.3
2025-09-28T18:12:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:12:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:12:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.674732
2025-09-28T18:12:32.218 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:12:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:12:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:12:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:12:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:12:32.219 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:12:24', tmtdew=11.07, humidity=47.22, cloud=0.0, wind=20.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:11:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:12:32.219 [DEBUG] [Thread-131773] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:32.304 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:12:32.315 [DEBUG] [Thread-131777] [transport.py] [_log()] starting thread (client mode): 0x2b91c7c0
2025-09-28T18:12:32.315 [DEBUG] [Thread-131777] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:32.330 [DEBUG] [Thread-131777] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:12:32.330 [INFO] [Thread-131777] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:32.338 [DEBUG] [Thread-131777] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:32.339 [DEBUG] [Thread-131777] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:32.339 [DEBUG] [Thread-131777] [transport.py] [_log()] Compression: none
2025-09-28T18:12:32.339 [DEBUG] [Thread-131777] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:32.395 [DEBUG] [Thread-131777] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:32.395 [DEBUG] [Thread-131777] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:32.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:12:32.396 [DEBUG] [Thread-131777] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:12:32.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:32.451 [DEBUG] [Thread-131777] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:32.452 [DEBUG] [Thread-131777] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:32.452 [DEBUG] [Thread-131777] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:32.452 [DEBUG] [Thread-131777] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:12:32.452 [DEBUG] [Thread-131777] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:32.470 [INFO] [Thread-131777] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:32.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-28T18:12:32.471 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:33.428 [DEBUG] [Thread-131777] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:33.428 [DEBUG] [Thread-131777] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:33.476 [DEBUG] [Thread-131777] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:33.476 [DEBUG] [Thread-131777] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:33.485 [DEBUG] [Thread-131777] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:33.494 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:33.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-28T18:12:33.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') -> 00000000
2025-09-28T18:12:33.511 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:33.511 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:33.512 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:33.519 [DEBUG] [Thread-131777] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:35.316 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:35.317 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:43.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:12:43.515 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:12:43.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:12:44.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 12, 24), 11.07, 47.22, 0.0, 20.17, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:12:44.104 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:12:24
2025-09-28T18:12:44.214 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:12:44.364 [DEBUG] [Thread-131779] [transport.py] [_log()] starting thread (client mode): 0x2b9dfb80
2025-09-28T18:12:44.364 [DEBUG] [Thread-131779] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:44.388 [DEBUG] [Thread-131779] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:12:44.388 [INFO] [Thread-131779] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:12:44.392 [DEBUG] [Thread-131779] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:44.392 [DEBUG] [Thread-131779] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:12:44.392 [DEBUG] [Thread-131779] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:44.392 [DEBUG] [Thread-131779] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:44.392 [DEBUG] [Thread-131779] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:44.393 [DEBUG] [Thread-131779] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] Compression: none
2025-09-28T18:12:44.394 [DEBUG] [Thread-131779] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:44.413 [DEBUG] [Thread-131779] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:44.414 [DEBUG] [Thread-131779] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:44.414 [DEBUG] [Thread-131779] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:12:44.415 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:12:44.416 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:44.417 [DEBUG] [Thread-131779] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:44.417 [DEBUG] [Thread-131779] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:44.417 [DEBUG] [Thread-131779] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:44.418 [DEBUG] [Thread-131779] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:12:44.418 [DEBUG] [Thread-131779] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:44.444 [INFO] [Thread-131779] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:44.444 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:45.079 [DEBUG] [Thread-131779] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:45.079 [DEBUG] [Thread-131779] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:45.079 [DEBUG] [Thread-131779] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:12:45.120 [DEBUG] [Thread-131779] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:45.120 [DEBUG] [Thread-131779] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:45.123 [DEBUG] [Thread-131779] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:45.135 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:45.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:12:45.136 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:12:45.137 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:12:45.139 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:45.140 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:12:45.140 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.675080 -999.00  +14.30  10.56     51   +4.50 1 1 1 1 1   887    0 8.35 -89.28 ----- 10.6 10.6 195.2 23.3 17.0 -26.1 16.8 -25.1 17.4 -25.1 17.8 -26.7
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.675080
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:12:45.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:12:24', tmtdew=11.07, humidity=47.22, cloud=0.0, wind=20.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:12:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:12:45.141 [DEBUG] [Thread-131779] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:45.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-28T18:12:45.228 [DEBUG] [Thread-131782] [transport.py] [_log()] starting thread (client mode): 0x2b9deec0
2025-09-28T18:12:45.228 [DEBUG] [Thread-131782] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:45.242 [DEBUG] [Thread-131782] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:12:45.242 [INFO] [Thread-131782] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] Compression: none
2025-09-28T18:12:45.250 [DEBUG] [Thread-131782] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:45.306 [DEBUG] [Thread-131782] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:45.306 [DEBUG] [Thread-131782] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:45.307 [DEBUG] [Thread-131782] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:12:45.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:12:45.307 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:45.363 [DEBUG] [Thread-131782] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:45.363 [DEBUG] [Thread-131782] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:45.363 [DEBUG] [Thread-131782] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:45.363 [DEBUG] [Thread-131782] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:12:45.363 [DEBUG] [Thread-131782] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:45.381 [INFO] [Thread-131782] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:45.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-28T18:12:45.382 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:46.357 [DEBUG] [Thread-131782] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:46.357 [DEBUG] [Thread-131782] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:46.405 [DEBUG] [Thread-131782] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:46.405 [DEBUG] [Thread-131782] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:46.413 [DEBUG] [Thread-131782] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:46.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:46.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-28T18:12:46.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-28T18:12:46.437 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:46.438 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:46.438 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:46.445 [DEBUG] [Thread-131782] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:46.835 [DEBUG] [Thread-131784 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:12:56.448 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:12:56.448 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:12:56.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-28T18:12:57.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 12, 24), 11.07, 47.22, 0.0, 20.17, 14.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:12:57.045 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:12:24
2025-09-28T18:12:57.162 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:12:57.314 [DEBUG] [Thread-131785] [transport.py] [_log()] starting thread (client mode): 0x2b9dea10
2025-09-28T18:12:57.314 [DEBUG] [Thread-131785] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:57.333 [DEBUG] [Thread-131785] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:12:57.334 [INFO] [Thread-131785] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:57.337 [DEBUG] [Thread-131785] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:57.338 [DEBUG] [Thread-131785] [transport.py] [_log()] Compression: none
2025-09-28T18:12:57.338 [DEBUG] [Thread-131785] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:57.352 [DEBUG] [Thread-131785] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:12:57.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:12:57.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:12:57.353 [DEBUG] [Thread-131785] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:57.362 [INFO] [Thread-131785] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:57.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:58.162 [DEBUG] [Thread-131785] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:58.163 [DEBUG] [Thread-131785] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:58.163 [DEBUG] [Thread-131785] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:12:58.204 [DEBUG] [Thread-131785] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:58.204 [DEBUG] [Thread-131785] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:58.206 [DEBUG] [Thread-131785] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:58.219 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:58.219 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:12:58.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:12:58.221 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:12:58.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:58.224 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:12:58.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.675080 -999.00  +14.30  10.56     51   +4.50 1 1 1 1 1   887    0 8.35 -89.28 ----- 10.6 10.6 195.2 23.3 17.0 -26.1 16.8 -25.1 17.4 -25.1 17.8 -26.7
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.675080
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:12:58.224 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:12:24', tmtdew=11.07, humidity=47.22, cloud=0.0, wind=20.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:12:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:12:58.225 [DEBUG] [Thread-131785] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:12:58.299 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:12:58.308 [DEBUG] [Thread-131788] [transport.py] [_log()] starting thread (client mode): 0x2b9dc370
2025-09-28T18:12:58.308 [DEBUG] [Thread-131788] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:12:58.323 [DEBUG] [Thread-131788] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:12:58.323 [INFO] [Thread-131788] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] client lang: <none>
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] server lang: <none>
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] kex follows: False
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:12:58.331 [DEBUG] [Thread-131788] [transport.py] [_log()] Compression: none
2025-09-28T18:12:58.332 [DEBUG] [Thread-131788] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:12:58.386 [DEBUG] [Thread-131788] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:12:58.387 [DEBUG] [Thread-131788] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:12:58.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:12:58.387 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:12:58.387 [DEBUG] [Thread-131788] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:12:58.443 [DEBUG] [Thread-131788] [transport.py] [_log()] userauth is OK
2025-09-28T18:12:58.444 [DEBUG] [Thread-131788] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:12:58.444 [DEBUG] [Thread-131788] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:12:58.444 [DEBUG] [Thread-131788] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:12:58.444 [DEBUG] [Thread-131788] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:12:58.461 [INFO] [Thread-131788] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:12:58.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-28T18:12:58.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:12:59.406 [DEBUG] [Thread-131788] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:12:59.406 [DEBUG] [Thread-131788] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:12:59.453 [DEBUG] [Thread-131788] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:12:59.454 [DEBUG] [Thread-131788] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:12:59.463 [DEBUG] [Thread-131788] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:12:59.471 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:12:59.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-28T18:12:59.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-28T18:12:59.489 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:12:59.489 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:12:59.489 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:12:59.497 [DEBUG] [Thread-131788] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:01.872 [DEBUG] [Thread-131790 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:09.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:13:09.500 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:13:09.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-28T18:13:10.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 12, 56), 11.07, 47.2, 0.0, 21.86, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:13:10.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:12:56
2025-09-28T18:13:10.185 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:13:10.336 [DEBUG] [Thread-131791] [transport.py] [_log()] starting thread (client mode): 0x2b91e200
2025-09-28T18:13:10.336 [DEBUG] [Thread-131791] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:10.356 [DEBUG] [Thread-131791] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:13:10.356 [INFO] [Thread-131791] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:13:10.358 [DEBUG] [Thread-131791] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:10.359 [DEBUG] [Thread-131791] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:10.360 [DEBUG] [Thread-131791] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:10.360 [DEBUG] [Thread-131791] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:10.360 [DEBUG] [Thread-131791] [transport.py] [_log()] Compression: none
2025-09-28T18:13:10.360 [DEBUG] [Thread-131791] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:10.372 [DEBUG] [Thread-131791] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:10.372 [DEBUG] [Thread-131791] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:10.373 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:13:10.373 [DEBUG] [Thread-131791] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:13:10.374 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:10.375 [DEBUG] [Thread-131791] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:10.375 [DEBUG] [Thread-131791] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:10.375 [DEBUG] [Thread-131791] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:10.375 [DEBUG] [Thread-131791] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:13:10.375 [DEBUG] [Thread-131791] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:10.399 [INFO] [Thread-131791] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:10.400 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:11.057 [DEBUG] [Thread-131791] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:11.057 [DEBUG] [Thread-131791] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:11.057 [DEBUG] [Thread-131791] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:13:11.098 [DEBUG] [Thread-131791] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:11.098 [DEBUG] [Thread-131791] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:11.101 [DEBUG] [Thread-131791] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:11.114 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:11.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:13:11.116 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:13:11.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:13:11.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:11.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:13:11.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.675427 -999.00  +14.40   7.35     51   +4.50 1 1 1 1 1   887    0 8.15 -93.22 ----- 7.3 7.3 211.9 17.6 16.9 -26.0 16.8 -24.6 17.4 -24.8 17.9 -26.2
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:13:11.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.675427
2025-09-28T18:13:11.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:13:11.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:13:11.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:13:11.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:13:11.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:13:11.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:12:56', tmtdew=11.07, humidity=47.2, cloud=0.0, wind=21.86, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:12:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:13:11.127 [DEBUG] [Thread-131791] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:11.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-28T18:13:11.224 [DEBUG] [Thread-131794] [transport.py] [_log()] starting thread (client mode): 0x2b91c730
2025-09-28T18:13:11.224 [DEBUG] [Thread-131794] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:11.238 [DEBUG] [Thread-131794] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:13:11.239 [INFO] [Thread-131794] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:13:11.246 [DEBUG] [Thread-131794] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:11.246 [DEBUG] [Thread-131794] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:13:11.246 [DEBUG] [Thread-131794] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:11.247 [DEBUG] [Thread-131794] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] Compression: none
2025-09-28T18:13:11.248 [DEBUG] [Thread-131794] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:11.304 [DEBUG] [Thread-131794] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:11.304 [DEBUG] [Thread-131794] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:11.305 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:13:11.305 [DEBUG] [Thread-131794] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:13:11.306 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:11.360 [DEBUG] [Thread-131794] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:11.360 [DEBUG] [Thread-131794] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:11.360 [DEBUG] [Thread-131794] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:11.360 [DEBUG] [Thread-131794] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:13:11.360 [DEBUG] [Thread-131794] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:11.379 [INFO] [Thread-131794] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:11.380 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:13:11.380 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:12.341 [DEBUG] [Thread-131794] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:12.342 [DEBUG] [Thread-131794] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:12.389 [DEBUG] [Thread-131794] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:12.389 [DEBUG] [Thread-131794] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:12.398 [DEBUG] [Thread-131794] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:12.407 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:12.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')
2025-09-28T18:13:12.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-28T18:13:12.425 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:12.425 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:12.425 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:12.433 [DEBUG] [Thread-131794] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:16.906 [DEBUG] [Thread-131796 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:22.435 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:13:22.435 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:13:22.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-28T18:13:23.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 12, 56), 11.07, 47.2, 0.0, 21.86, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:13:23.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:12:56
2025-09-28T18:13:23.148 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:13:23.299 [DEBUG] [Thread-131797] [transport.py] [_log()] starting thread (client mode): 0x2b9dd0c0
2025-09-28T18:13:23.299 [DEBUG] [Thread-131797] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:23.319 [DEBUG] [Thread-131797] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:13:23.319 [INFO] [Thread-131797] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:23.322 [DEBUG] [Thread-131797] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] Compression: none
2025-09-28T18:13:23.323 [DEBUG] [Thread-131797] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:23.334 [DEBUG] [Thread-131797] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:23.334 [DEBUG] [Thread-131797] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:23.334 [DEBUG] [Thread-131797] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:13:23.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:13:23.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:23.335 [DEBUG] [Thread-131797] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:23.335 [DEBUG] [Thread-131797] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:23.335 [DEBUG] [Thread-131797] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:23.335 [DEBUG] [Thread-131797] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:13:23.335 [DEBUG] [Thread-131797] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:23.344 [INFO] [Thread-131797] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:23.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:24.133 [DEBUG] [Thread-131797] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:24.133 [DEBUG] [Thread-131797] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:24.133 [DEBUG] [Thread-131797] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:13:24.174 [DEBUG] [Thread-131797] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:24.174 [DEBUG] [Thread-131797] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:24.176 [DEBUG] [Thread-131797] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:24.190 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:24.190 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:13:24.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:13:24.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:13:24.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:24.195 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:13:24.195 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.675427 -999.00  +14.40   7.35     51   +4.50 1 1 1 1 1   887    0 8.15 -93.22 ----- 7.3 7.3 211.9 17.6 16.9 -26.0 16.8 -24.6 17.4 -24.8 17.9 -26.2
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.675427
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:13:24.195 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:12:56', tmtdew=11.07, humidity=47.2, cloud=0.0, wind=21.86, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:12:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:13:24.196 [DEBUG] [Thread-131797] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:24.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-28T18:13:24.279 [DEBUG] [Thread-131800] [transport.py] [_log()] starting thread (client mode): 0x2b9a9f00
2025-09-28T18:13:24.280 [DEBUG] [Thread-131800] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:24.298 [DEBUG] [Thread-131800] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:13:24.298 [INFO] [Thread-131800] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] Compression: none
2025-09-28T18:13:24.306 [DEBUG] [Thread-131800] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:24.363 [DEBUG] [Thread-131800] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:24.363 [DEBUG] [Thread-131800] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:24.363 [DEBUG] [Thread-131800] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:13:24.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:13:24.363 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:24.420 [DEBUG] [Thread-131800] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:24.420 [DEBUG] [Thread-131800] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:24.420 [DEBUG] [Thread-131800] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:24.420 [DEBUG] [Thread-131800] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:13:24.420 [DEBUG] [Thread-131800] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:24.434 [INFO] [Thread-131800] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:24.434 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:13:24.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:25.390 [DEBUG] [Thread-131800] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:25.390 [DEBUG] [Thread-131800] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:25.438 [DEBUG] [Thread-131800] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:25.438 [DEBUG] [Thread-131800] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:25.446 [DEBUG] [Thread-131800] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:25.454 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:25.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-28T18:13:25.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-28T18:13:25.470 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:25.470 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:25.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:25.477 [DEBUG] [Thread-131800] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:26.320 [DEBUG] [Thread-131802 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:31.953 [DEBUG] [Thread-131803 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:35.457 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:35.458 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:35.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:13:35.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:13:35.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-28T18:13:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 13, 28), 11.11, 47.07, 0.0, 21.33, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:13:36.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:13:28
2025-09-28T18:13:36.165 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:13:36.314 [DEBUG] [Thread-131804] [transport.py] [_log()] starting thread (client mode): 0x2b91dae0
2025-09-28T18:13:36.314 [DEBUG] [Thread-131804] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:36.329 [DEBUG] [Thread-131804] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:13:36.329 [INFO] [Thread-131804] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:13:36.332 [DEBUG] [Thread-131804] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] Compression: none
2025-09-28T18:13:36.333 [DEBUG] [Thread-131804] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:36.351 [DEBUG] [Thread-131804] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:36.352 [DEBUG] [Thread-131804] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:36.352 [DEBUG] [Thread-131804] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:13:36.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:13:36.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:36.354 [DEBUG] [Thread-131804] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:36.354 [DEBUG] [Thread-131804] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:36.355 [DEBUG] [Thread-131804] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:36.355 [DEBUG] [Thread-131804] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:13:36.355 [DEBUG] [Thread-131804] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:36.390 [INFO] [Thread-131804] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:36.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:37.139 [DEBUG] [Thread-131804] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:37.140 [DEBUG] [Thread-131804] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:37.140 [DEBUG] [Thread-131804] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:13:37.180 [DEBUG] [Thread-131804] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:37.181 [DEBUG] [Thread-131804] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:37.183 [DEBUG] [Thread-131804] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:37.196 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:37.197 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:13:37.198 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:13:37.200 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:13:37.204 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:37.206 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:13:37.206 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:37.206 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:13:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.675427 -999.00  +14.40   7.35     51   +4.50 1 1 1 1 1   887    0 8.15 -93.22 ----- 7.3 7.3 211.9 17.6 16.9 -26.0 16.8 -24.6 17.4 -24.8 17.9 -26.2
2025-09-28T18:13:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:13:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:13:37.207 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.675427
2025-09-28T18:13:37.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:13:37.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:13:37.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:13:37.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:13:37.208 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:13:37.209 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:13:28', tmtdew=11.11, humidity=47.07, cloud=0.0, wind=21.33, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:12:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:13:37.209 [DEBUG] [Thread-131804] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:37.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-28T18:13:37.314 [DEBUG] [Thread-131807] [transport.py] [_log()] starting thread (client mode): 0x2b91c0a0
2025-09-28T18:13:37.314 [DEBUG] [Thread-131807] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:37.330 [DEBUG] [Thread-131807] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:13:37.330 [INFO] [Thread-131807] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:37.337 [DEBUG] [Thread-131807] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] Compression: none
2025-09-28T18:13:37.338 [DEBUG] [Thread-131807] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:37.395 [DEBUG] [Thread-131807] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:37.395 [DEBUG] [Thread-131807] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:37.395 [DEBUG] [Thread-131807] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:13:37.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:13:37.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:37.452 [DEBUG] [Thread-131807] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:37.452 [DEBUG] [Thread-131807] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:37.452 [DEBUG] [Thread-131807] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:37.452 [DEBUG] [Thread-131807] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:13:37.453 [DEBUG] [Thread-131807] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:37.471 [INFO] [Thread-131807] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:37.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:13:37.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:38.458 [DEBUG] [Thread-131807] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:38.458 [DEBUG] [Thread-131807] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:38.505 [DEBUG] [Thread-131807] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:38.506 [DEBUG] [Thread-131807] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:38.515 [DEBUG] [Thread-131807] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:38.523 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13: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')
2025-09-28T18:13:38.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-28T18:13:38.541 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:38.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:38.541 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:38.549 [DEBUG] [Thread-131807] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:46.980 [DEBUG] [Thread-131809 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:13:48.552 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:13:48.552 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:13:48.555 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:13:49.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 13, 28), 11.11, 47.07, 0.0, 21.33, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:13:49.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:13:28
2025-09-28T18:13:49.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:13:49.386 [DEBUG] [Thread-131810] [transport.py] [_log()] starting thread (client mode): 0x2b91f280
2025-09-28T18:13:49.387 [DEBUG] [Thread-131810] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:49.407 [DEBUG] [Thread-131810] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:13:49.407 [INFO] [Thread-131810] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:13:49.410 [DEBUG] [Thread-131810] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:49.410 [DEBUG] [Thread-131810] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:13:49.410 [DEBUG] [Thread-131810] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] Compression: none
2025-09-28T18:13:49.411 [DEBUG] [Thread-131810] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:49.429 [DEBUG] [Thread-131810] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:49.430 [DEBUG] [Thread-131810] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:49.430 [DEBUG] [Thread-131810] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:13:49.430 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:13:49.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:49.432 [DEBUG] [Thread-131810] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:49.432 [DEBUG] [Thread-131810] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:49.432 [DEBUG] [Thread-131810] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:49.433 [DEBUG] [Thread-131810] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:13:49.433 [DEBUG] [Thread-131810] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:49.455 [INFO] [Thread-131810] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:49.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:50.068 [DEBUG] [Thread-131810] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:50.068 [DEBUG] [Thread-131810] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:50.069 [DEBUG] [Thread-131810] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:13:50.109 [DEBUG] [Thread-131810] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:50.110 [DEBUG] [Thread-131810] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:50.113 [DEBUG] [Thread-131810] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:50.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:50.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:13:50.126 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:13:50.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:13:50.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:50.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:13:50.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:50.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676121 -999.00  +14.30  15.98     51   +4.40 1 1 1 1 1   887    0 7.83 -96.03 ----- 16.0 16.0 210.1 25.0 16.8 -26.2 16.7 -26.4 17.3 -25.4 17.7 -27.1
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676121
2025-09-28T18:13:50.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:13:50.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:13:50.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:13:50.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:13:50.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:13:50.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:13:28', tmtdew=11.11, humidity=47.07, cloud=0.0, wind=21.33, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:13:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:13:50.139 [DEBUG] [Thread-131810] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:13:50.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-28T18:13:50.234 [DEBUG] [Thread-131813] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-28T18:13:50.234 [DEBUG] [Thread-131813] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:13:50.249 [DEBUG] [Thread-131813] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:13:50.249 [INFO] [Thread-131813] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:13:50.257 [DEBUG] [Thread-131813] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:13:50.258 [DEBUG] [Thread-131813] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] client lang: <none>
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] server lang: <none>
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] kex follows: False
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:13:50.259 [DEBUG] [Thread-131813] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:13:50.260 [DEBUG] [Thread-131813] [transport.py] [_log()] Compression: none
2025-09-28T18:13:50.260 [DEBUG] [Thread-131813] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:13:50.317 [DEBUG] [Thread-131813] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:13:50.317 [DEBUG] [Thread-131813] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:13:50.317 [DEBUG] [Thread-131813] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:13:50.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:13:50.318 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:13:50.372 [DEBUG] [Thread-131813] [transport.py] [_log()] userauth is OK
2025-09-28T18:13:50.373 [DEBUG] [Thread-131813] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:13:50.373 [DEBUG] [Thread-131813] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:13:50.373 [DEBUG] [Thread-131813] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:13:50.373 [DEBUG] [Thread-131813] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:13:50.392 [INFO] [Thread-131813] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:13:50.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-28T18:13:50.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:13:51.353 [DEBUG] [Thread-131813] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:13:51.353 [DEBUG] [Thread-131813] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:13:51.404 [DEBUG] [Thread-131813] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:13:51.405 [DEBUG] [Thread-131813] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:13:51.414 [DEBUG] [Thread-131813] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:13:51.426 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:13:51.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-28T18:13:51.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-28T18:13:51.450 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:13:51.450 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:13:51.451 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:13:51.461 [DEBUG] [Thread-131813] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:01.460 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:14:01.460 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:14:01.461 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:14:02.034 [DEBUG] [Thread-131815 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:02.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 13, 28), 11.11, 47.07, 0.0, 21.33, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:14:02.085 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:13:28
2025-09-28T18:14:02.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:14:02.358 [DEBUG] [Thread-131816] [transport.py] [_log()] starting thread (client mode): 0x2b91c3a0
2025-09-28T18:14:02.358 [DEBUG] [Thread-131816] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:02.378 [DEBUG] [Thread-131816] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:14:02.378 [INFO] [Thread-131816] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:02.381 [DEBUG] [Thread-131816] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] Compression: none
2025-09-28T18:14:02.382 [DEBUG] [Thread-131816] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:02.395 [DEBUG] [Thread-131816] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:02.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:14:02.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:14:02.396 [DEBUG] [Thread-131816] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:02.405 [INFO] [Thread-131816] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:02.405 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:03.168 [DEBUG] [Thread-131816] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:03.168 [DEBUG] [Thread-131816] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:03.168 [DEBUG] [Thread-131816] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:14:03.209 [DEBUG] [Thread-131816] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:03.209 [DEBUG] [Thread-131816] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:03.211 [DEBUG] [Thread-131816] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:03.224 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:03.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:14:03.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:14:03.226 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:14:03.229 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:03.230 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:14:03.230 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676121 -999.00  +14.30  15.98     51   +4.40 1 1 1 1 1   887    0 7.83 -96.03 ----- 16.0 16.0 210.1 25.0 16.8 -26.2 16.7 -26.4 17.3 -25.4 17.7 -27.1
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676121
2025-09-28T18:14:03.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:14:03.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:14:03.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:14:03.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:14:03.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:14:03.231 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:13:28', tmtdew=11.11, humidity=47.07, cloud=0.0, wind=21.33, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:13:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:14:03.231 [DEBUG] [Thread-131816] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:03.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-28T18:14:03.316 [DEBUG] [Thread-131819] [transport.py] [_log()] starting thread (client mode): 0x2b9abfa0
2025-09-28T18:14:03.316 [DEBUG] [Thread-131819] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:03.331 [DEBUG] [Thread-131819] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:14:03.331 [INFO] [Thread-131819] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:03.338 [DEBUG] [Thread-131819] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:03.339 [DEBUG] [Thread-131819] [transport.py] [_log()] Compression: none
2025-09-28T18:14:03.339 [DEBUG] [Thread-131819] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:03.395 [DEBUG] [Thread-131819] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:03.395 [DEBUG] [Thread-131819] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:03.395 [DEBUG] [Thread-131819] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:14:03.395 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:14:03.396 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:03.454 [DEBUG] [Thread-131819] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:03.454 [DEBUG] [Thread-131819] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:03.454 [DEBUG] [Thread-131819] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:03.454 [DEBUG] [Thread-131819] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:14:03.454 [DEBUG] [Thread-131819] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:03.469 [INFO] [Thread-131819] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:03.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-28T18:14:03.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:04.426 [DEBUG] [Thread-131819] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:04.426 [DEBUG] [Thread-131819] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:04.474 [DEBUG] [Thread-131819] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:04.474 [DEBUG] [Thread-131819] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:04.482 [DEBUG] [Thread-131819] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:04.490 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:04.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-28T18:14:04.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-28T18:14:04.505 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:04.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:04.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:04.513 [DEBUG] [Thread-131819] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:14.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:14:14.516 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:14:14.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-28T18:14:15.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 13, 28), 11.11, 47.07, 0.0, 19.53, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:14:15.082 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:13:28
2025-09-28T18:14:15.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:14:15.340 [DEBUG] [Thread-131821] [transport.py] [_log()] starting thread (client mode): 0x2b9abe80
2025-09-28T18:14:15.340 [DEBUG] [Thread-131821] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:15.359 [DEBUG] [Thread-131821] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:14:15.360 [INFO] [Thread-131821] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:14:15.361 [DEBUG] [Thread-131821] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:15.362 [DEBUG] [Thread-131821] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] Compression: none
2025-09-28T18:14:15.363 [DEBUG] [Thread-131821] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:15.371 [DEBUG] [Thread-131821] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:15.371 [DEBUG] [Thread-131821] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:15.371 [DEBUG] [Thread-131821] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:14:15.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:14:15.372 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:15.373 [DEBUG] [Thread-131821] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:15.373 [DEBUG] [Thread-131821] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:15.373 [DEBUG] [Thread-131821] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:15.373 [DEBUG] [Thread-131821] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:14:15.373 [DEBUG] [Thread-131821] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:15.391 [INFO] [Thread-131821] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:15.392 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:16.021 [DEBUG] [Thread-131821] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:16.021 [DEBUG] [Thread-131821] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:16.022 [DEBUG] [Thread-131821] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:14:16.062 [DEBUG] [Thread-131821] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:16.062 [DEBUG] [Thread-131821] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:16.066 [DEBUG] [Thread-131821] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:16.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:16.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:14:16.081 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:14:16.083 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:14:16.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:16.090 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:14:16.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:16.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:14:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676469 -999.00  +14.30  20.07     51   +4.40 1 1 1 1 1   887    0 7.77 -96.10 ----- 20.1 20.1 215.2 23.7 16.8 -26.2 16.6 -25.0 17.3 -25.2 17.6 -27.1
2025-09-28T18:14:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:14:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:14:16.091 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676469
2025-09-28T18:14:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:14:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:14:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:14:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:14:16.092 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:14:16.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:13:28', tmtdew=11.11, humidity=47.07, cloud=0.0, wind=19.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:14:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:14:16.093 [DEBUG] [Thread-131821] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:16.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-28T18:14:16.187 [DEBUG] [Thread-131824] [transport.py] [_log()] starting thread (client mode): 0x2b9dce80
2025-09-28T18:14:16.187 [DEBUG] [Thread-131824] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:16.201 [DEBUG] [Thread-131824] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:14:16.201 [INFO] [Thread-131824] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:14:16.208 [DEBUG] [Thread-131824] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:16.209 [DEBUG] [Thread-131824] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] Compression: none
2025-09-28T18:14:16.210 [DEBUG] [Thread-131824] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:16.265 [DEBUG] [Thread-131824] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:16.265 [DEBUG] [Thread-131824] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:16.266 [DEBUG] [Thread-131824] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:14:16.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:14:16.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:16.321 [DEBUG] [Thread-131824] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:16.321 [DEBUG] [Thread-131824] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:16.321 [DEBUG] [Thread-131824] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:16.321 [DEBUG] [Thread-131824] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:14:16.321 [DEBUG] [Thread-131824] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:16.340 [INFO] [Thread-131824] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:16.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-28T18:14:16.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:17.070 [DEBUG] [Thread-131826 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:17.281 [DEBUG] [Thread-131824] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:17.281 [DEBUG] [Thread-131824] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:17.332 [DEBUG] [Thread-131824] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:17.332 [DEBUG] [Thread-131824] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:17.341 [DEBUG] [Thread-131824] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:17.355 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:17.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-28T18:14:17.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-28T18:14:17.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:17.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:17.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:17.383 [DEBUG] [Thread-131824] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:26.380 [DEBUG] [Thread-131827 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:27.385 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:14:27.385 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:14:27.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-28T18:14:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 13, 28), 11.11, 47.07, 0.0, 19.53, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:14:27.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:13:28
2025-09-28T18:14:28.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:14:28.204 [DEBUG] [Thread-131828] [transport.py] [_log()] starting thread (client mode): 0x2b9aab30
2025-09-28T18:14:28.204 [DEBUG] [Thread-131828] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:28.217 [DEBUG] [Thread-131828] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:14:28.217 [INFO] [Thread-131828] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:28.219 [DEBUG] [Thread-131828] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] Compression: none
2025-09-28T18:14:28.220 [DEBUG] [Thread-131828] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:28.227 [DEBUG] [Thread-131828] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:28.227 [DEBUG] [Thread-131828] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:28.228 [DEBUG] [Thread-131828] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:14:28.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:14:28.228 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:28.229 [DEBUG] [Thread-131828] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:28.229 [DEBUG] [Thread-131828] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:28.229 [DEBUG] [Thread-131828] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:28.229 [DEBUG] [Thread-131828] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:14:28.229 [DEBUG] [Thread-131828] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:28.242 [INFO] [Thread-131828] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:28.243 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:29.029 [DEBUG] [Thread-131828] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:29.029 [DEBUG] [Thread-131828] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:29.030 [DEBUG] [Thread-131828] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:14:29.070 [DEBUG] [Thread-131828] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:29.070 [DEBUG] [Thread-131828] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:29.073 [DEBUG] [Thread-131828] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:29.084 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:29.085 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:14:29.086 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:14:29.088 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:14:29.092 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:29.094 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:14:29.094 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:29.094 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:29.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:14:29.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676469 -999.00  +14.30  20.07     51   +4.40 1 1 1 1 1   887    0 7.77 -96.10 ----- 20.1 20.1 215.2 23.7 16.8 -26.2 16.6 -25.0 17.3 -25.2 17.6 -27.1
2025-09-28T18:14:29.094 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:14:29.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:14:29.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676469
2025-09-28T18:14:29.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:14:29.095 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:14:29.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:14:29.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:14:29.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:14:29.096 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:13:28', tmtdew=11.11, humidity=47.07, cloud=0.0, wind=19.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:14:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:14:29.096 [DEBUG] [Thread-131828] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:29.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-28T18:14:29.191 [DEBUG] [Thread-131831] [transport.py] [_log()] starting thread (client mode): 0x2b994880
2025-09-28T18:14:29.191 [DEBUG] [Thread-131831] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:29.205 [DEBUG] [Thread-131831] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:14:29.205 [INFO] [Thread-131831] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] Compression: none
2025-09-28T18:14:29.213 [DEBUG] [Thread-131831] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:29.273 [DEBUG] [Thread-131831] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:29.274 [DEBUG] [Thread-131831] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:29.274 [DEBUG] [Thread-131831] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:14:29.274 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:14:29.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:29.329 [DEBUG] [Thread-131831] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:29.329 [DEBUG] [Thread-131831] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:29.329 [DEBUG] [Thread-131831] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:29.330 [DEBUG] [Thread-131831] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:14:29.330 [DEBUG] [Thread-131831] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:29.349 [INFO] [Thread-131831] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:29.349 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:14:29.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:30.334 [DEBUG] [Thread-131831] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:30.334 [DEBUG] [Thread-131831] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:30.381 [DEBUG] [Thread-131831] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:30.382 [DEBUG] [Thread-131831] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:30.391 [DEBUG] [Thread-131831] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:30.400 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:30.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-28T18:14:30.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-28T18:14:30.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:30.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:30.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:30.425 [DEBUG] [Thread-131831] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:32.113 [DEBUG] [Thread-131833 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:35.598 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:35.599 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:40.427 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:14:40.427 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:14:40.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-28T18:14:41.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 14, 32), 11.15, 46.95, 0.0, 21.47, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:14:41.025 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:14:32
2025-09-28T18:14:41.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:14:41.293 [DEBUG] [Thread-131834] [transport.py] [_log()] starting thread (client mode): 0x2e3c0070
2025-09-28T18:14:41.293 [DEBUG] [Thread-131834] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:41.313 [DEBUG] [Thread-131834] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:14:41.313 [INFO] [Thread-131834] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:14:41.316 [DEBUG] [Thread-131834] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:41.316 [DEBUG] [Thread-131834] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:14:41.316 [DEBUG] [Thread-131834] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:41.316 [DEBUG] [Thread-131834] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:41.316 [DEBUG] [Thread-131834] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] Compression: none
2025-09-28T18:14:41.317 [DEBUG] [Thread-131834] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:41.333 [DEBUG] [Thread-131834] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:41.333 [DEBUG] [Thread-131834] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:41.334 [DEBUG] [Thread-131834] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:14:41.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:14:41.334 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:41.335 [DEBUG] [Thread-131834] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:41.335 [DEBUG] [Thread-131834] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:41.335 [DEBUG] [Thread-131834] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:41.335 [DEBUG] [Thread-131834] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:14:41.335 [DEBUG] [Thread-131834] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:41.353 [INFO] [Thread-131834] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:41.354 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:42.176 [DEBUG] [Thread-131834] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:42.176 [DEBUG] [Thread-131834] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:42.177 [DEBUG] [Thread-131834] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:14:42.217 [DEBUG] [Thread-131834] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:42.217 [DEBUG] [Thread-131834] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:42.220 [DEBUG] [Thread-131834] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:42.232 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:42.232 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:14:42.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:14:42.234 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:14:42.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:42.238 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:14:42.239 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676469 -999.00  +14.30  20.07     51   +4.40 1 1 1 1 1   887    0 7.77 -96.10 ----- 20.1 20.1 215.2 23.7 16.8 -26.2 16.6 -25.0 17.3 -25.2 17.6 -27.1
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676469
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:14:42.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:14:32', tmtdew=11.15, humidity=46.95, cloud=0.0, wind=21.47, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:14:06.922', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:14:42.240 [DEBUG] [Thread-131834] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:42.314 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:14:42.327 [DEBUG] [Thread-131837] [transport.py] [_log()] starting thread (client mode): 0x2e3c19f0
2025-09-28T18:14:42.327 [DEBUG] [Thread-131837] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:42.343 [DEBUG] [Thread-131837] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:14:42.343 [INFO] [Thread-131837] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:42.350 [DEBUG] [Thread-131837] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] Compression: none
2025-09-28T18:14:42.351 [DEBUG] [Thread-131837] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:42.408 [DEBUG] [Thread-131837] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:42.408 [DEBUG] [Thread-131837] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:42.408 [DEBUG] [Thread-131837] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:14:42.408 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:14:42.409 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:42.465 [DEBUG] [Thread-131837] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:42.465 [DEBUG] [Thread-131837] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:42.465 [DEBUG] [Thread-131837] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:42.465 [DEBUG] [Thread-131837] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:14:42.465 [DEBUG] [Thread-131837] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:42.479 [INFO] [Thread-131837] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:42.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-28T18:14:42.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:43.437 [DEBUG] [Thread-131837] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:43.437 [DEBUG] [Thread-131837] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:43.485 [DEBUG] [Thread-131837] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:43.485 [DEBUG] [Thread-131837] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:43.493 [DEBUG] [Thread-131837] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:43.501 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:43.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-28T18:14:43.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-28T18:14:43.517 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:43.517 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:43.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:43.525 [DEBUG] [Thread-131837] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:47.142 [DEBUG] [Thread-131839 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:14:53.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:14:53.527 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:14:53.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-28T18:14:54.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 14, 32), 11.15, 46.95, 0.0, 21.47, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:14:54.119 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:14:32
2025-09-28T18:14:54.229 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:14:54.376 [DEBUG] [Thread-131840] [transport.py] [_log()] starting thread (client mode): 0x2b9a9f00
2025-09-28T18:14:54.376 [DEBUG] [Thread-131840] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:54.398 [DEBUG] [Thread-131840] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:14:54.398 [INFO] [Thread-131840] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:14:54.401 [DEBUG] [Thread-131840] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:54.401 [DEBUG] [Thread-131840] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:54.402 [DEBUG] [Thread-131840] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:54.403 [DEBUG] [Thread-131840] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:54.403 [DEBUG] [Thread-131840] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:54.403 [DEBUG] [Thread-131840] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:54.403 [DEBUG] [Thread-131840] [transport.py] [_log()] Compression: none
2025-09-28T18:14:54.403 [DEBUG] [Thread-131840] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:54.421 [DEBUG] [Thread-131840] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:54.422 [DEBUG] [Thread-131840] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:54.422 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:14:54.423 [DEBUG] [Thread-131840] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:14:54.424 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:54.425 [DEBUG] [Thread-131840] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:54.425 [DEBUG] [Thread-131840] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:54.426 [DEBUG] [Thread-131840] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:54.426 [DEBUG] [Thread-131840] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:14:54.426 [DEBUG] [Thread-131840] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:54.451 [INFO] [Thread-131840] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:54.451 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:55.075 [DEBUG] [Thread-131840] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:55.076 [DEBUG] [Thread-131840] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:55.076 [DEBUG] [Thread-131840] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:14:55.116 [DEBUG] [Thread-131840] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:55.117 [DEBUG] [Thread-131840] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:55.120 [DEBUG] [Thread-131840] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:55.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:55.132 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:14:55.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:14:55.135 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:14:55.140 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:55.141 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:14:55.141 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676816 -999.00  +14.30   8.16     51   +4.50 1 1 1 1 1   887    0 7.92 -94.53 ----- 8.2 8.2 214.8 16.9 16.8 -26.0 16.6 -24.8 17.2 -25.0 17.6 -26.7
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:14:55.142 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676816
2025-09-28T18:14:55.143 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:14:55.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:14:55.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:14:55.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:14:55.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:14:55.144 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:14:32', tmtdew=11.15, humidity=46.95, cloud=0.0, wind=21.47, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:14:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:14:55.144 [DEBUG] [Thread-131840] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:14:55.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-28T18:14:55.239 [DEBUG] [Thread-131843] [transport.py] [_log()] starting thread (client mode): 0x2b9dec80
2025-09-28T18:14:55.239 [DEBUG] [Thread-131843] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:14:55.254 [DEBUG] [Thread-131843] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:14:55.254 [INFO] [Thread-131843] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:14:55.262 [DEBUG] [Thread-131843] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:14:55.262 [DEBUG] [Thread-131843] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:14:55.262 [DEBUG] [Thread-131843] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:14:55.262 [DEBUG] [Thread-131843] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] client lang: <none>
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] server lang: <none>
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] kex follows: False
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] Compression: none
2025-09-28T18:14:55.263 [DEBUG] [Thread-131843] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:14:55.321 [DEBUG] [Thread-131843] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:14:55.321 [DEBUG] [Thread-131843] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:14:55.322 [DEBUG] [Thread-131843] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:14:55.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:14:55.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:14:55.380 [DEBUG] [Thread-131843] [transport.py] [_log()] userauth is OK
2025-09-28T18:14:55.380 [DEBUG] [Thread-131843] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:14:55.380 [DEBUG] [Thread-131843] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:14:55.380 [DEBUG] [Thread-131843] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:14:55.380 [DEBUG] [Thread-131843] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:14:55.398 [INFO] [Thread-131843] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:14:55.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-28T18:14:55.399 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:14:56.341 [DEBUG] [Thread-131843] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:14:56.342 [DEBUG] [Thread-131843] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:14:56.393 [DEBUG] [Thread-131843] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:14:56.393 [DEBUG] [Thread-131843] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:14:56.403 [DEBUG] [Thread-131843] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:14:56.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:14:56.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-28T18:14:56.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-28T18:14:56.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:14:56.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:14:56.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:14:56.442 [DEBUG] [Thread-131843] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:02.182 [DEBUG] [Thread-131845 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:06.444 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:15:06.444 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:15:06.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-28T18:15:07.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 15, 4), 11.16, 46.92, 0.0, 20.38, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:15:07.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:15:04
2025-09-28T18:15:07.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:15:07.296 [DEBUG] [Thread-131846] [transport.py] [_log()] starting thread (client mode): 0x2e3c02b0
2025-09-28T18:15:07.296 [DEBUG] [Thread-131846] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:07.315 [DEBUG] [Thread-131846] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:15:07.316 [INFO] [Thread-131846] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:07.319 [DEBUG] [Thread-131846] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] Compression: none
2025-09-28T18:15:07.320 [DEBUG] [Thread-131846] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:07.337 [DEBUG] [Thread-131846] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:07.337 [DEBUG] [Thread-131846] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:07.338 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:15:07.338 [DEBUG] [Thread-131846] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:15:07.339 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:07.340 [DEBUG] [Thread-131846] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:07.340 [DEBUG] [Thread-131846] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:07.341 [DEBUG] [Thread-131846] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:07.341 [DEBUG] [Thread-131846] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:15:07.341 [DEBUG] [Thread-131846] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:07.362 [INFO] [Thread-131846] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:07.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:16.659 [DEBUG] [Thread-131846] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:16.659 [DEBUG] [Thread-131846] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:16.659 [DEBUG] [Thread-131846] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:15:16.700 [DEBUG] [Thread-131846] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:16.700 [DEBUG] [Thread-131846] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:16.703 [DEBUG] [Thread-131846] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:16.786 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:16.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:15:16.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:15:16.790 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:15:16.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:16.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:15:16.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.676816 -999.00  +14.30   8.16     51   +4.50 1 1 1 1 1   887    0 7.92 -94.53 ----- 8.2 8.2 214.8 16.9 16.8 -26.0 16.6 -24.8 17.2 -25.0 17.6 -26.7
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:15:16.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.676816
2025-09-28T18:15:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:15:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:15:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:15:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:15:16.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:15:16.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:15:04', tmtdew=11.16, humidity=46.92, cloud=0.0, wind=20.38, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:14:36.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:15:16.825 [DEBUG] [Thread-131846] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:16.913 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:15:16.923 [DEBUG] [Thread-131849] [transport.py] [_log()] starting thread (client mode): 0x2b9ab9a0
2025-09-28T18:15:16.923 [DEBUG] [Thread-131849] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:16.939 [DEBUG] [Thread-131849] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:15:16.939 [INFO] [Thread-131849] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:15:16.946 [DEBUG] [Thread-131849] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] Compression: none
2025-09-28T18:15:16.947 [DEBUG] [Thread-131849] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:17.004 [DEBUG] [Thread-131849] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:17.004 [DEBUG] [Thread-131849] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:17.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:15:17.004 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:17.005 [DEBUG] [Thread-131849] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:15:17.061 [DEBUG] [Thread-131849] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:17.061 [DEBUG] [Thread-131849] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:17.061 [DEBUG] [Thread-131849] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:17.061 [DEBUG] [Thread-131849] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:15:17.061 [DEBUG] [Thread-131849] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:17.077 [INFO] [Thread-131849] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:17.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-28T18:15:17.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:17.214 [DEBUG] [Thread-131851 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:18.041 [DEBUG] [Thread-131849] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:18.041 [DEBUG] [Thread-131849] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:18.089 [DEBUG] [Thread-131849] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:18.089 [DEBUG] [Thread-131849] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:18.097 [DEBUG] [Thread-131849] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:18.106 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:18.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-28T18:15:18.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T18:15:18.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:18.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:18.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:18.130 [DEBUG] [Thread-131849] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:26.442 [DEBUG] [Thread-131852 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:28.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:15:28.130 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:15:28.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-28T18:15:28.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 15, 4), 11.16, 46.92, 0.0, 20.38, 14.11, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:15:28.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:15:04
2025-09-28T18:15:28.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:15:28.959 [DEBUG] [Thread-131853] [transport.py] [_log()] starting thread (client mode): 0x2b995fc0
2025-09-28T18:15:28.959 [DEBUG] [Thread-131853] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:28.979 [DEBUG] [Thread-131853] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:15:28.979 [INFO] [Thread-131853] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:15:28.982 [DEBUG] [Thread-131853] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:28.982 [DEBUG] [Thread-131853] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:15:28.982 [DEBUG] [Thread-131853] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:28.982 [DEBUG] [Thread-131853] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:28.983 [DEBUG] [Thread-131853] [transport.py] [_log()] Compression: none
2025-09-28T18:15:28.984 [DEBUG] [Thread-131853] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:29.003 [DEBUG] [Thread-131853] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:29.004 [DEBUG] [Thread-131853] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:29.004 [DEBUG] [Thread-131853] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:15:29.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:15:29.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:29.049 [DEBUG] [Thread-131853] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:29.049 [DEBUG] [Thread-131853] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:29.049 [DEBUG] [Thread-131853] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:29.049 [DEBUG] [Thread-131853] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:15:29.049 [DEBUG] [Thread-131853] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:29.081 [INFO] [Thread-131853] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:29.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:29.686 [DEBUG] [Thread-131853] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:29.686 [DEBUG] [Thread-131853] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:29.686 [DEBUG] [Thread-131853] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:15:29.727 [DEBUG] [Thread-131853] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:29.727 [DEBUG] [Thread-131853] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:29.730 [DEBUG] [Thread-131853] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:29.738 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:29.738 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:15:29.740 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:15:29.742 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:15:29.746 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:29.748 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:15:29.748 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:29.748 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:29.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:15:29.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677163 -999.00  +14.30  13.93     51   +4.40 1 1 1 1 1   887    0 8.16 -88.12 ----- 13.9 13.9 192.9 19.0 16.8 -25.8 16.5 -25.5 17.1 -25.1 17.6 -26.6
2025-09-28T18:15:29.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:15:29.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:15:29.749 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677163
2025-09-28T18:15:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:15:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:15:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:15:29.750 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:15:29.750 [DEBUG] [Thread-131853] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:29.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:15:29.751 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:15:04', tmtdew=11.16, humidity=46.92, cloud=0.0, wind=20.38, temperature=14.11, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:15:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:15:29.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-28T18:15:29.848 [DEBUG] [Thread-131856] [transport.py] [_log()] starting thread (client mode): 0x2b995f00
2025-09-28T18:15:29.848 [DEBUG] [Thread-131856] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:29.863 [DEBUG] [Thread-131856] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:15:29.863 [INFO] [Thread-131856] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] Compression: none
2025-09-28T18:15:29.871 [DEBUG] [Thread-131856] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:29.930 [DEBUG] [Thread-131856] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:29.930 [DEBUG] [Thread-131856] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:29.931 [DEBUG] [Thread-131856] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:15:29.931 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:15:29.932 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:29.985 [DEBUG] [Thread-131856] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:29.986 [DEBUG] [Thread-131856] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:29.986 [DEBUG] [Thread-131856] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:29.986 [DEBUG] [Thread-131856] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:15:29.986 [DEBUG] [Thread-131856] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:30.008 [INFO] [Thread-131856] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:30.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-28T18:15:30.009 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:30.963 [DEBUG] [Thread-131856] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:30.963 [DEBUG] [Thread-131856] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:31.011 [DEBUG] [Thread-131856] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:31.012 [DEBUG] [Thread-131856] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:31.021 [DEBUG] [Thread-131856] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:31.029 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:31.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-28T18:15:31.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-28T18:15:31.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:31.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:31.048 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:31.055 [DEBUG] [Thread-131856] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:32.252 [DEBUG] [Thread-131858 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:35.740 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:35.741 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:41.052 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:15:41.052 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:15:41.055 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:15:41.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 15, 36), 11.11, 46.92, 0.0, 17.17, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:15:41.626 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:15:36
2025-09-28T18:15:41.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:15:41.884 [DEBUG] [Thread-131859] [transport.py] [_log()] starting thread (client mode): 0x2b9a95d0
2025-09-28T18:15:41.884 [DEBUG] [Thread-131859] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:41.905 [DEBUG] [Thread-131859] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:15:41.905 [INFO] [Thread-131859] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:41.908 [DEBUG] [Thread-131859] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:41.909 [DEBUG] [Thread-131859] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:41.910 [DEBUG] [Thread-131859] [transport.py] [_log()] Compression: none
2025-09-28T18:15:41.910 [DEBUG] [Thread-131859] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:41.927 [DEBUG] [Thread-131859] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:41.928 [DEBUG] [Thread-131859] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:41.928 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:15:41.929 [DEBUG] [Thread-131859] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:15:41.929 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:41.930 [DEBUG] [Thread-131859] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:41.931 [DEBUG] [Thread-131859] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:41.931 [DEBUG] [Thread-131859] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:41.931 [DEBUG] [Thread-131859] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:15:41.931 [DEBUG] [Thread-131859] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:41.954 [INFO] [Thread-131859] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:41.955 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:42.716 [DEBUG] [Thread-131859] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:42.716 [DEBUG] [Thread-131859] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:42.716 [DEBUG] [Thread-131859] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:15:42.757 [DEBUG] [Thread-131859] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:42.758 [DEBUG] [Thread-131859] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:42.761 [DEBUG] [Thread-131859] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:42.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:42.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:15:42.776 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:15:42.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:15:42.783 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:42.785 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:15:42.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:42.785 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:15:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677163 -999.00  +14.30  13.93     51   +4.40 1 1 1 1 1   887    0 8.16 -88.12 ----- 13.9 13.9 192.9 19.0 16.8 -25.8 16.5 -25.5 17.1 -25.1 17.6 -26.6
2025-09-28T18:15:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:15:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:15:42.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677163
2025-09-28T18:15:42.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:15:42.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:15:42.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:15:42.787 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:15:42.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:15:42.788 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:15:36', tmtdew=11.11, humidity=46.92, cloud=0.0, wind=17.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:15:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:15:42.788 [DEBUG] [Thread-131859] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:42.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-28T18:15:42.885 [DEBUG] [Thread-131862] [transport.py] [_log()] starting thread (client mode): 0x2b9de4a0
2025-09-28T18:15:42.886 [DEBUG] [Thread-131862] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:42.900 [DEBUG] [Thread-131862] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:15:42.900 [INFO] [Thread-131862] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:15:42.907 [DEBUG] [Thread-131862] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] Compression: none
2025-09-28T18:15:42.908 [DEBUG] [Thread-131862] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:42.965 [DEBUG] [Thread-131862] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:42.966 [DEBUG] [Thread-131862] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:42.966 [DEBUG] [Thread-131862] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:15:42.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:15:42.967 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:43.022 [DEBUG] [Thread-131862] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:43.023 [DEBUG] [Thread-131862] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:43.023 [DEBUG] [Thread-131862] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:43.023 [DEBUG] [Thread-131862] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:15:43.023 [DEBUG] [Thread-131862] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:43.042 [INFO] [Thread-131862] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:43.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-28T18:15:43.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:43.978 [DEBUG] [Thread-131862] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:43.978 [DEBUG] [Thread-131862] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:44.026 [DEBUG] [Thread-131862] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:44.026 [DEBUG] [Thread-131862] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:44.037 [DEBUG] [Thread-131862] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:44.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:44.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')
2025-09-28T18:15:44.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-28T18:15:44.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:44.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:44.073 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:44.081 [DEBUG] [Thread-131862] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:47.307 [DEBUG] [Thread-131864 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:15:54.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:15:54.081 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:15:54.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-28T18:15:54.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 15, 36), 11.11, 46.92, 0.0, 17.17, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:15:54.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:15:36
2025-09-28T18:15:54.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:15:54.942 [DEBUG] [Thread-131865] [transport.py] [_log()] starting thread (client mode): 0x2b9bbbb0
2025-09-28T18:15:54.942 [DEBUG] [Thread-131865] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:54.955 [DEBUG] [Thread-131865] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:15:54.955 [INFO] [Thread-131865] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] Compression: none
2025-09-28T18:15:54.959 [DEBUG] [Thread-131865] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:54.974 [DEBUG] [Thread-131865] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:54.974 [DEBUG] [Thread-131865] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:54.974 [DEBUG] [Thread-131865] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:15:54.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:15:54.974 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:54.975 [DEBUG] [Thread-131865] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:54.975 [DEBUG] [Thread-131865] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:54.975 [DEBUG] [Thread-131865] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:54.975 [DEBUG] [Thread-131865] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:15:54.975 [DEBUG] [Thread-131865] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:54.987 [INFO] [Thread-131865] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:54.987 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:55.542 [DEBUG] [Thread-131865] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:55.543 [DEBUG] [Thread-131865] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:55.543 [DEBUG] [Thread-131865] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:15:55.584 [DEBUG] [Thread-131865] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:55.584 [DEBUG] [Thread-131865] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:55.586 [DEBUG] [Thread-131865] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:55.595 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:55.595 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:15:55.596 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:15:55.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:15:55.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:55.601 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:15:55.601 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677510 -999.00  +14.20  11.35     51   +4.40 1 1 1 1 1   887    0 8.09 -88.64 ----- 11.3 11.3 185.0 26.5 16.7 -26.1 16.5 -25.7 17.1 -24.8 17.6 -26.7
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677510
2025-09-28T18:15:55.601 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:15:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:15:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:15:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:15:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:15:55.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:15:36', tmtdew=11.11, humidity=46.92, cloud=0.0, wind=17.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:15:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:15:55.602 [DEBUG] [Thread-131865] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:15:55.676 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:15:55.686 [DEBUG] [Thread-131868] [transport.py] [_log()] starting thread (client mode): 0x2b9b9990
2025-09-28T18:15:55.686 [DEBUG] [Thread-131868] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:15:55.700 [DEBUG] [Thread-131868] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:15:55.700 [INFO] [Thread-131868] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:15:55.707 [DEBUG] [Thread-131868] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:15:55.707 [DEBUG] [Thread-131868] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] client lang: <none>
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] server lang: <none>
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] kex follows: False
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] Compression: none
2025-09-28T18:15:55.708 [DEBUG] [Thread-131868] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:15:55.765 [DEBUG] [Thread-131868] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:15:55.765 [DEBUG] [Thread-131868] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:15:55.765 [DEBUG] [Thread-131868] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:15:55.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:15:55.765 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:15:55.822 [DEBUG] [Thread-131868] [transport.py] [_log()] userauth is OK
2025-09-28T18:15:55.822 [DEBUG] [Thread-131868] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:15:55.822 [DEBUG] [Thread-131868] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:15:55.822 [DEBUG] [Thread-131868] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:15:55.822 [DEBUG] [Thread-131868] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:15:55.836 [INFO] [Thread-131868] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:15:55.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-28T18:15:55.836 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:15:56.770 [DEBUG] [Thread-131868] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:15:56.770 [DEBUG] [Thread-131868] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:15:56.818 [DEBUG] [Thread-131868] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:15:56.818 [DEBUG] [Thread-131868] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:15:56.826 [DEBUG] [Thread-131868] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:15:56.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:15:56.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T18:15:56.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') -> 00000000
2025-09-28T18:15:56.850 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:15:56.850 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:15:56.850 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:15:56.858 [DEBUG] [Thread-131868] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:02.349 [DEBUG] [Thread-131870 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:06.860 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:16:06.861 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:16:06.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-28T18:16:07.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 15, 36), 11.11, 46.92, 0.0, 17.17, 14.06, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:16:07.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:15:36
2025-09-28T18:16:07.540 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:16:07.689 [DEBUG] [Thread-131871] [transport.py] [_log()] starting thread (client mode): 0x2b9a9c60
2025-09-28T18:16:07.689 [DEBUG] [Thread-131871] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:07.710 [DEBUG] [Thread-131871] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:16:07.711 [INFO] [Thread-131871] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:07.714 [DEBUG] [Thread-131871] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] Compression: none
2025-09-28T18:16:07.715 [DEBUG] [Thread-131871] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:07.728 [DEBUG] [Thread-131871] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:07.729 [DEBUG] [Thread-131871] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:07.729 [DEBUG] [Thread-131871] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:16:07.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:16:07.730 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:07.731 [DEBUG] [Thread-131871] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:07.731 [DEBUG] [Thread-131871] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:07.731 [DEBUG] [Thread-131871] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:07.732 [DEBUG] [Thread-131871] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:16:07.732 [DEBUG] [Thread-131871] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:07.745 [INFO] [Thread-131871] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:07.745 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:08.542 [DEBUG] [Thread-131871] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:08.542 [DEBUG] [Thread-131871] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:08.542 [DEBUG] [Thread-131871] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:16:08.583 [DEBUG] [Thread-131871] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:08.583 [DEBUG] [Thread-131871] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:08.585 [DEBUG] [Thread-131871] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:08.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:08.597 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:16:08.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:16:08.599 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:16:08.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:08.602 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:16:08.602 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677510 -999.00  +14.20  11.35     51   +4.40 1 1 1 1 1   887    0 8.09 -88.64 ----- 11.3 11.3 185.0 26.5 16.7 -26.1 16.5 -25.7 17.1 -24.8 17.6 -26.7
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677510
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:16:08.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:15:36', tmtdew=11.11, humidity=46.92, cloud=0.0, wind=17.17, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:15:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:16:08.603 [DEBUG] [Thread-131871] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:08.677 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:16:08.688 [DEBUG] [Thread-131874] [transport.py] [_log()] starting thread (client mode): 0x2e361180
2025-09-28T18:16:08.688 [DEBUG] [Thread-131874] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:08.704 [DEBUG] [Thread-131874] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:16:08.704 [INFO] [Thread-131874] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:08.711 [DEBUG] [Thread-131874] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:08.712 [DEBUG] [Thread-131874] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:08.712 [DEBUG] [Thread-131874] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:08.712 [DEBUG] [Thread-131874] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:08.712 [DEBUG] [Thread-131874] [transport.py] [_log()] Compression: none
2025-09-28T18:16:08.712 [DEBUG] [Thread-131874] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:08.768 [DEBUG] [Thread-131874] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:08.768 [DEBUG] [Thread-131874] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:08.768 [DEBUG] [Thread-131874] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:16:08.768 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:16:08.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:08.826 [DEBUG] [Thread-131874] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:08.826 [DEBUG] [Thread-131874] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:08.826 [DEBUG] [Thread-131874] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:08.826 [DEBUG] [Thread-131874] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:16:08.826 [DEBUG] [Thread-131874] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:08.840 [INFO] [Thread-131874] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:08.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-28T18:16:08.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:09.758 [DEBUG] [Thread-131874] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:09.758 [DEBUG] [Thread-131874] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:09.806 [DEBUG] [Thread-131874] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:09.806 [DEBUG] [Thread-131874] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:09.814 [DEBUG] [Thread-131874] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:09.822 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:09.822 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T18:16:09.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-28T18:16:09.839 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:09.839 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:09.839 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:09.846 [DEBUG] [Thread-131874] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:17.385 [DEBUG] [Thread-131876 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:19.849 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:16:19.849 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:16:19.852 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:16:20.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 16, 8), 11.11, 46.94, 0.0, 19.55, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:16:20.425 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:16:08
2025-09-28T18:16:20.535 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:16:20.682 [DEBUG] [Thread-131877] [transport.py] [_log()] starting thread (client mode): 0x2b9baa40
2025-09-28T18:16:20.682 [DEBUG] [Thread-131877] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:20.703 [DEBUG] [Thread-131877] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:16:20.703 [INFO] [Thread-131877] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:20.707 [DEBUG] [Thread-131877] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] Compression: none
2025-09-28T18:16:20.708 [DEBUG] [Thread-131877] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:20.728 [DEBUG] [Thread-131877] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:20.729 [DEBUG] [Thread-131877] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:20.729 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:16:20.730 [DEBUG] [Thread-131877] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:16:20.731 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:20.732 [DEBUG] [Thread-131877] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:20.732 [DEBUG] [Thread-131877] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:20.732 [DEBUG] [Thread-131877] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:20.732 [DEBUG] [Thread-131877] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:16:20.732 [DEBUG] [Thread-131877] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:20.767 [INFO] [Thread-131877] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:20.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:21.577 [DEBUG] [Thread-131877] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:21.577 [DEBUG] [Thread-131877] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:21.577 [DEBUG] [Thread-131877] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:16:21.618 [DEBUG] [Thread-131877] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:21.619 [DEBUG] [Thread-131877] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:21.621 [DEBUG] [Thread-131877] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:21.634 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:21.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:16:21.636 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:16:21.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:16:21.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:21.643 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:16:21.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:21.643 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677510 -999.00  +14.20  11.35     51   +4.40 1 1 1 1 1   887    0 8.09 -88.64 ----- 11.3 11.3 185.0 26.5 16.7 -26.1 16.5 -25.7 17.1 -24.8 17.6 -26.7
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677510
2025-09-28T18:16:21.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:16:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:16:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:16:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:16:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:16:21.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:16:08', tmtdew=11.11, humidity=46.94, cloud=0.0, wind=19.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:15:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:16:21.646 [DEBUG] [Thread-131877] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:21.735 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:16:21.744 [DEBUG] [Thread-131880] [transport.py] [_log()] starting thread (client mode): 0x2b9bbee0
2025-09-28T18:16:21.744 [DEBUG] [Thread-131880] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:21.760 [DEBUG] [Thread-131880] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:16:21.760 [INFO] [Thread-131880] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:16:21.767 [DEBUG] [Thread-131880] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:21.767 [DEBUG] [Thread-131880] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:16:21.767 [DEBUG] [Thread-131880] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:21.767 [DEBUG] [Thread-131880] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:21.767 [DEBUG] [Thread-131880] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] Compression: none
2025-09-28T18:16:21.768 [DEBUG] [Thread-131880] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:21.826 [DEBUG] [Thread-131880] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:21.826 [DEBUG] [Thread-131880] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:21.827 [DEBUG] [Thread-131880] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:16:21.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:16:21.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:21.883 [DEBUG] [Thread-131880] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:21.883 [DEBUG] [Thread-131880] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:21.883 [DEBUG] [Thread-131880] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:21.883 [DEBUG] [Thread-131880] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:16:21.883 [DEBUG] [Thread-131880] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:21.903 [INFO] [Thread-131880] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:21.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-28T18:16:21.905 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:22.832 [DEBUG] [Thread-131880] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:22.833 [DEBUG] [Thread-131880] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:22.880 [DEBUG] [Thread-131880] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:22.880 [DEBUG] [Thread-131880] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:22.889 [DEBUG] [Thread-131880] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:22.898 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:22.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-28T18:16:22.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') -> 00000000
2025-09-28T18:16:22.915 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:22.916 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:22.916 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:22.924 [DEBUG] [Thread-131880] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:26.495 [DEBUG] [Thread-131882 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:32.418 [DEBUG] [Thread-131883 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:32.926 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:16:32.926 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:16:32.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-28T18:16:33.516 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 16, 8), 11.11, 46.94, 0.0, 19.55, 14.04, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:16:33.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:16:08
2025-09-28T18:16:33.632 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:16:33.785 [DEBUG] [Thread-131884] [transport.py] [_log()] starting thread (client mode): 0x2b995e70
2025-09-28T18:16:33.785 [DEBUG] [Thread-131884] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:33.807 [DEBUG] [Thread-131884] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:16:33.807 [INFO] [Thread-131884] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:33.810 [DEBUG] [Thread-131884] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] Compression: none
2025-09-28T18:16:33.811 [DEBUG] [Thread-131884] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:33.826 [DEBUG] [Thread-131884] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:33.826 [DEBUG] [Thread-131884] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:16:33.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:16:33.827 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:16:33.827 [DEBUG] [Thread-131884] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:33.837 [INFO] [Thread-131884] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:33.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:34.488 [DEBUG] [Thread-131884] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:34.488 [DEBUG] [Thread-131884] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:34.489 [DEBUG] [Thread-131884] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:16:34.530 [DEBUG] [Thread-131884] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:34.530 [DEBUG] [Thread-131884] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:34.532 [DEBUG] [Thread-131884] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:34.545 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:34.545 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:16:34.546 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:16:34.547 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:16:34.549 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:34.550 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:16:34.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677857 -999.00  +14.20  17.37     51   +4.40 1 1 1 1 1   887    0 7.63 -92.73 ----- 17.4 17.4 205.8 22.6 16.6 -25.9 16.5 -24.7 17.0 -25.1 17.4 -26.7
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677857
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:16:34.550 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:16:08', tmtdew=11.11, humidity=46.94, cloud=0.0, wind=19.55, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:16:06.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:16:34.551 [DEBUG] [Thread-131884] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:34.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-28T18:16:34.636 [DEBUG] [Thread-131887] [transport.py] [_log()] starting thread (client mode): 0x2b9b8b80
2025-09-28T18:16:34.637 [DEBUG] [Thread-131887] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:34.652 [DEBUG] [Thread-131887] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:16:34.652 [INFO] [Thread-131887] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:34.659 [DEBUG] [Thread-131887] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] Compression: none
2025-09-28T18:16:34.660 [DEBUG] [Thread-131887] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:34.717 [DEBUG] [Thread-131887] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:34.717 [DEBUG] [Thread-131887] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:34.717 [DEBUG] [Thread-131887] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:16:34.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:16:34.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:34.774 [DEBUG] [Thread-131887] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:34.774 [DEBUG] [Thread-131887] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:34.774 [DEBUG] [Thread-131887] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:34.774 [DEBUG] [Thread-131887] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:16:34.774 [DEBUG] [Thread-131887] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:34.792 [INFO] [Thread-131887] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:34.792 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:16:34.792 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:35.726 [DEBUG] [Thread-131887] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:35.726 [DEBUG] [Thread-131887] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:35.774 [DEBUG] [Thread-131887] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:35.774 [DEBUG] [Thread-131887] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:35.782 [DEBUG] [Thread-131887] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:35.790 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:35.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-28T18:16:35.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-28T18:16:35.806 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:35.806 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:35.806 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:35.813 [DEBUG] [Thread-131887] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:35.882 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:35.883 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:45.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:16:45.811 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:16:45.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:16:46.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 16, 40), 11.16, 46.92, 0.0, 18.23, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:16:46.390 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:16:40
2025-09-28T18:16:46.500 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:16:46.650 [DEBUG] [Thread-131889] [transport.py] [_log()] starting thread (client mode): 0x2b9dc970
2025-09-28T18:16:46.650 [DEBUG] [Thread-131889] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:46.672 [DEBUG] [Thread-131889] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:16:46.672 [INFO] [Thread-131889] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:16:46.676 [DEBUG] [Thread-131889] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:46.676 [DEBUG] [Thread-131889] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:16:46.676 [DEBUG] [Thread-131889] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:46.676 [DEBUG] [Thread-131889] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:46.676 [DEBUG] [Thread-131889] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:46.677 [DEBUG] [Thread-131889] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:46.678 [DEBUG] [Thread-131889] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:46.678 [DEBUG] [Thread-131889] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:46.678 [DEBUG] [Thread-131889] [transport.py] [_log()] Compression: none
2025-09-28T18:16:46.678 [DEBUG] [Thread-131889] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:46.696 [DEBUG] [Thread-131889] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:46.697 [DEBUG] [Thread-131889] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:46.698 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:16:46.698 [DEBUG] [Thread-131889] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:16:46.699 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:46.700 [DEBUG] [Thread-131889] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:46.701 [DEBUG] [Thread-131889] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:46.701 [DEBUG] [Thread-131889] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:46.701 [DEBUG] [Thread-131889] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:16:46.701 [DEBUG] [Thread-131889] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:46.730 [INFO] [Thread-131889] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:46.732 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:47.459 [DEBUG] [Thread-131891 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:16:47.541 [DEBUG] [Thread-131889] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:47.541 [DEBUG] [Thread-131889] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:47.542 [DEBUG] [Thread-131889] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:16:47.582 [DEBUG] [Thread-131889] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:47.583 [DEBUG] [Thread-131889] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:47.585 [DEBUG] [Thread-131889] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:47.597 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:47.598 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:16:47.600 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:16:47.601 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:16:47.607 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:47.609 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:16:47.609 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:47.609 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:47.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:16:47.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.677857 -999.00  +14.20  17.37     51   +4.40 1 1 1 1 1   887    0 7.63 -92.73 ----- 17.4 17.4 205.8 22.6 16.6 -25.9 16.5 -24.7 17.0 -25.1 17.4 -26.7
2025-09-28T18:16:47.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:16:47.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:16:47.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.677857
2025-09-28T18:16:47.610 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:16:47.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:16:47.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:16:47.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:16:47.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:16:47.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:16:40', tmtdew=11.16, humidity=46.92, cloud=0.0, wind=18.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:16:06.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:16:47.611 [DEBUG] [Thread-131889] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:47.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-28T18:16:47.715 [DEBUG] [Thread-131893] [transport.py] [_log()] starting thread (client mode): 0x2b9e6b00
2025-09-28T18:16:47.715 [DEBUG] [Thread-131893] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:47.730 [DEBUG] [Thread-131893] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:16:47.730 [INFO] [Thread-131893] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] Compression: none
2025-09-28T18:16:47.738 [DEBUG] [Thread-131893] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:47.797 [DEBUG] [Thread-131893] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:47.798 [DEBUG] [Thread-131893] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:47.798 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:16:47.799 [DEBUG] [Thread-131893] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:16:47.799 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:47.854 [DEBUG] [Thread-131893] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:47.855 [DEBUG] [Thread-131893] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:47.855 [DEBUG] [Thread-131893] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:47.855 [DEBUG] [Thread-131893] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:16:47.855 [DEBUG] [Thread-131893] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:47.874 [INFO] [Thread-131893] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:47.874 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:16:47.874 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:16:48.857 [DEBUG] [Thread-131893] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:16:48.858 [DEBUG] [Thread-131893] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:16:48.905 [DEBUG] [Thread-131893] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:16:48.905 [DEBUG] [Thread-131893] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:16:48.914 [DEBUG] [Thread-131893] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:16:48.922 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:16:48.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-28T18:16:48.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-28T18:16:48.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:16:48.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:16:48.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:16:48.948 [DEBUG] [Thread-131893] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:16:58.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:16:58.951 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:16:58.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-28T18:16:59.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 16, 40), 11.16, 46.92, 0.0, 18.23, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:16:59.518 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:16:40
2025-09-28T18:16:59.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:16:59.775 [DEBUG] [Thread-131895] [transport.py] [_log()] starting thread (client mode): 0x2b9e51b0
2025-09-28T18:16:59.775 [DEBUG] [Thread-131895] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:16:59.795 [DEBUG] [Thread-131895] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:16:59.795 [INFO] [Thread-131895] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:16:59.798 [DEBUG] [Thread-131895] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] client lang: <none>
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] server lang: <none>
2025-09-28T18:16:59.799 [DEBUG] [Thread-131895] [transport.py] [_log()] kex follows: False
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] Compression: none
2025-09-28T18:16:59.800 [DEBUG] [Thread-131895] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:16:59.817 [DEBUG] [Thread-131895] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:16:59.817 [DEBUG] [Thread-131895] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:16:59.818 [DEBUG] [Thread-131895] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:16:59.818 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:16:59.819 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:16:59.820 [DEBUG] [Thread-131895] [transport.py] [_log()] userauth is OK
2025-09-28T18:16:59.820 [DEBUG] [Thread-131895] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:16:59.820 [DEBUG] [Thread-131895] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:16:59.820 [DEBUG] [Thread-131895] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:16:59.821 [DEBUG] [Thread-131895] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:16:59.843 [INFO] [Thread-131895] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:16:59.844 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:00.587 [DEBUG] [Thread-131895] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:00.588 [DEBUG] [Thread-131895] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:00.588 [DEBUG] [Thread-131895] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:17:00.628 [DEBUG] [Thread-131895] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:00.628 [DEBUG] [Thread-131895] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:00.631 [DEBUG] [Thread-131895] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:00.643 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:00.643 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:17:00.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:17:00.648 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:17:00.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:00.656 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:17:00.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:00.657 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678205 -999.00  +14.20  17.66     51   +4.40 1 1 1 1 1   887    0 7.75 -89.35 ----- 17.7 17.7 211.8 24.0 16.6 -25.9 16.4 -25.1 17.0 -25.2 17.4 -26.8
2025-09-28T18:17:00.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678205
2025-09-28T18:17:00.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:17:00.659 [DEBUG] [Thread-131895] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:00.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:17:00.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:17:00.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:17:00.660 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:16:40', tmtdew=11.16, humidity=46.92, cloud=0.0, wind=18.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:16:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:17:00.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-28T18:17:00.760 [DEBUG] [Thread-131898] [transport.py] [_log()] starting thread (client mode): 0x2b9e5f90
2025-09-28T18:17:00.760 [DEBUG] [Thread-131898] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:00.775 [DEBUG] [Thread-131898] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:17:00.775 [INFO] [Thread-131898] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:17:00.782 [DEBUG] [Thread-131898] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:00.783 [DEBUG] [Thread-131898] [transport.py] [_log()] Compression: none
2025-09-28T18:17:00.784 [DEBUG] [Thread-131898] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:00.843 [DEBUG] [Thread-131898] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:00.843 [DEBUG] [Thread-131898] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:00.844 [DEBUG] [Thread-131898] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:17:00.844 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:17:00.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:00.898 [DEBUG] [Thread-131898] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:00.899 [DEBUG] [Thread-131898] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:00.899 [DEBUG] [Thread-131898] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:00.899 [DEBUG] [Thread-131898] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:17:00.899 [DEBUG] [Thread-131898] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:00.918 [INFO] [Thread-131898] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:00.918 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:17:00.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:01.930 [DEBUG] [Thread-131898] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:01.930 [DEBUG] [Thread-131898] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:01.978 [DEBUG] [Thread-131898] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:01.978 [DEBUG] [Thread-131898] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:01.986 [DEBUG] [Thread-131898] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:01.996 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:01.996 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T18:17:02.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-28T18:17:02.018 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:02.018 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:02.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:02.027 [DEBUG] [Thread-131898] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:02.507 [DEBUG] [Thread-131900 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:12.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:17:12.029 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:17:12.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-28T18:17:12.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 16, 40), 11.16, 46.92, 0.0, 18.23, 14.09, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:17:12.638 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:16:40
2025-09-28T18:17:12.755 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:17:12.910 [DEBUG] [Thread-131901] [transport.py] [_log()] starting thread (client mode): 0x2e363430
2025-09-28T18:17:12.910 [DEBUG] [Thread-131901] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:12.929 [DEBUG] [Thread-131901] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:17:12.930 [INFO] [Thread-131901] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] Compression: none
2025-09-28T18:17:12.933 [DEBUG] [Thread-131901] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:12.949 [DEBUG] [Thread-131901] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:12.949 [DEBUG] [Thread-131901] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:12.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:17:12.949 [DEBUG] [Thread-131901] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:17:12.949 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:12.950 [DEBUG] [Thread-131901] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:12.950 [DEBUG] [Thread-131901] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:12.950 [DEBUG] [Thread-131901] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:12.950 [DEBUG] [Thread-131901] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:17:12.950 [DEBUG] [Thread-131901] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:12.959 [INFO] [Thread-131901] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:12.959 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:13.614 [DEBUG] [Thread-131901] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:13.614 [DEBUG] [Thread-131901] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:13.614 [DEBUG] [Thread-131901] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:17:13.655 [DEBUG] [Thread-131901] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:13.655 [DEBUG] [Thread-131901] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:13.657 [DEBUG] [Thread-131901] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:13.669 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:13.669 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:17:13.670 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:17:13.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:17:13.675 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:13.676 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:17:13.676 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678205 -999.00  +14.20  17.66     51   +4.40 1 1 1 1 1   887    0 7.75 -89.35 ----- 17.7 17.7 211.8 24.0 16.6 -25.9 16.4 -25.1 17.0 -25.2 17.4 -26.8
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678205
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:17:13.676 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:16:40', tmtdew=11.16, humidity=46.92, cloud=0.0, wind=18.23, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:16:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:17:13.677 [DEBUG] [Thread-131901] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:13.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-28T18:17:13.760 [DEBUG] [Thread-131904] [transport.py] [_log()] starting thread (client mode): 0x2e363220
2025-09-28T18:17:13.761 [DEBUG] [Thread-131904] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:13.775 [DEBUG] [Thread-131904] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:17:13.776 [INFO] [Thread-131904] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:13.783 [DEBUG] [Thread-131904] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:13.784 [DEBUG] [Thread-131904] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:13.784 [DEBUG] [Thread-131904] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:13.784 [DEBUG] [Thread-131904] [transport.py] [_log()] Compression: none
2025-09-28T18:17:13.784 [DEBUG] [Thread-131904] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:13.841 [DEBUG] [Thread-131904] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:13.841 [DEBUG] [Thread-131904] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:13.842 [DEBUG] [Thread-131904] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:17:13.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:17:13.842 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:13.898 [DEBUG] [Thread-131904] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:13.898 [DEBUG] [Thread-131904] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:13.898 [DEBUG] [Thread-131904] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:13.898 [DEBUG] [Thread-131904] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:17:13.898 [DEBUG] [Thread-131904] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:13.914 [INFO] [Thread-131904] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:13.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-28T18:17:13.914 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:14.870 [DEBUG] [Thread-131904] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:14.870 [DEBUG] [Thread-131904] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:14.918 [DEBUG] [Thread-131904] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:14.918 [DEBUG] [Thread-131904] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:14.926 [DEBUG] [Thread-131904] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:14.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:14.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-28T18:17:14.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-28T18:17:14.950 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:14.950 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:14.950 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:14.958 [DEBUG] [Thread-131904] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:17.547 [DEBUG] [Thread-131906 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:24.961 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:17:24.961 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:17:24.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-28T18:17:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 17, 12), 11.13, 47.02, 0.0, 23.5, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:17:25.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:17:12
2025-09-28T18:17:25.637 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:17:25.784 [DEBUG] [Thread-131907] [transport.py] [_log()] starting thread (client mode): 0x2b9e4ca0
2025-09-28T18:17:25.784 [DEBUG] [Thread-131907] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:25.804 [DEBUG] [Thread-131907] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:17:25.804 [INFO] [Thread-131907] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:25.807 [DEBUG] [Thread-131907] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:25.808 [DEBUG] [Thread-131907] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:25.808 [DEBUG] [Thread-131907] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:25.808 [DEBUG] [Thread-131907] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:25.808 [DEBUG] [Thread-131907] [transport.py] [_log()] Compression: none
2025-09-28T18:17:25.808 [DEBUG] [Thread-131907] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:25.829 [DEBUG] [Thread-131907] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:25.829 [DEBUG] [Thread-131907] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:25.830 [DEBUG] [Thread-131907] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:17:25.830 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:17:25.831 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:25.832 [DEBUG] [Thread-131907] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:25.832 [DEBUG] [Thread-131907] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:25.832 [DEBUG] [Thread-131907] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:25.832 [DEBUG] [Thread-131907] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:17:25.832 [DEBUG] [Thread-131907] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:25.865 [INFO] [Thread-131907] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:25.866 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:26.547 [DEBUG] [Thread-131909 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:26.669 [DEBUG] [Thread-131907] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:26.669 [DEBUG] [Thread-131907] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:26.669 [DEBUG] [Thread-131907] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:17:26.709 [DEBUG] [Thread-131907] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:26.709 [DEBUG] [Thread-131907] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:26.712 [DEBUG] [Thread-131907] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:26.723 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:26.723 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:17:26.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:17:26.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:17:26.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:26.732 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:17:26.733 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678205 -999.00  +14.20  17.66     51   +4.40 1 1 1 1 1   887    0 7.75 -89.35 ----- 17.7 17.7 211.8 24.0 16.6 -25.9 16.4 -25.1 17.0 -25.2 17.4 -26.8
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:17:26.733 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678205
2025-09-28T18:17:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:17:26.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:17:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:17:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:17:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:17:26.735 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:17:12', tmtdew=11.13, humidity=47.02, cloud=0.0, wind=23.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:16:36.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:17:26.735 [DEBUG] [Thread-131907] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:26.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-28T18:17:26.837 [DEBUG] [Thread-131911] [transport.py] [_log()] starting thread (client mode): 0x2b9e7640
2025-09-28T18:17:26.837 [DEBUG] [Thread-131911] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:26.852 [DEBUG] [Thread-131911] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:17:26.852 [INFO] [Thread-131911] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:26.860 [DEBUG] [Thread-131911] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:26.861 [DEBUG] [Thread-131911] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:26.861 [DEBUG] [Thread-131911] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:26.861 [DEBUG] [Thread-131911] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:26.861 [DEBUG] [Thread-131911] [transport.py] [_log()] Compression: none
2025-09-28T18:17:26.861 [DEBUG] [Thread-131911] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:26.919 [DEBUG] [Thread-131911] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:26.920 [DEBUG] [Thread-131911] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:26.920 [DEBUG] [Thread-131911] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:17:26.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:17:26.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:26.975 [DEBUG] [Thread-131911] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:26.975 [DEBUG] [Thread-131911] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:26.975 [DEBUG] [Thread-131911] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:26.975 [DEBUG] [Thread-131911] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:17:26.975 [DEBUG] [Thread-131911] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:26.995 [INFO] [Thread-131911] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:26.995 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:17:26.996 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:27.965 [DEBUG] [Thread-131911] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:27.966 [DEBUG] [Thread-131911] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:28.013 [DEBUG] [Thread-131911] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:28.013 [DEBUG] [Thread-131911] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:28.022 [DEBUG] [Thread-131911] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:28.031 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:28.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-28T18:17:28.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-28T18:17:28.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:28.049 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:28.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:28.057 [DEBUG] [Thread-131911] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:32.582 [DEBUG] [Thread-131913 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:36.025 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:36.027 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:38.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:17:38.060 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:17:38.063 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:17:38.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 17, 12), 11.13, 47.02, 0.0, 23.5, 14.08, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:17:38.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:17:12
2025-09-28T18:17:38.734 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:17:38.884 [DEBUG] [Thread-131914] [transport.py] [_log()] starting thread (client mode): 0x2b9e6d40
2025-09-28T18:17:38.884 [DEBUG] [Thread-131914] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:38.904 [DEBUG] [Thread-131914] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:17:38.904 [INFO] [Thread-131914] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] Compression: none
2025-09-28T18:17:38.908 [DEBUG] [Thread-131914] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:38.924 [DEBUG] [Thread-131914] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:38.925 [DEBUG] [Thread-131914] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:38.925 [DEBUG] [Thread-131914] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:17:38.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:17:38.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:38.927 [DEBUG] [Thread-131914] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:38.928 [DEBUG] [Thread-131914] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:38.928 [DEBUG] [Thread-131914] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:38.928 [DEBUG] [Thread-131914] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:17:38.928 [DEBUG] [Thread-131914] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:38.951 [INFO] [Thread-131914] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:38.952 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:39.598 [DEBUG] [Thread-131914] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:39.598 [DEBUG] [Thread-131914] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:39.599 [DEBUG] [Thread-131914] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:17:39.639 [DEBUG] [Thread-131914] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:39.639 [DEBUG] [Thread-131914] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:39.641 [DEBUG] [Thread-131914] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:39.653 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:39.653 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:17:39.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:17:39.655 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:17:39.657 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:39.658 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:17:39.658 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678552 -999.00  +14.10  11.97     51   +4.30 1 1 1 1 1   887    0 8.11 -86.91 ----- 12.0 12.0 180.4 19.6 16.6 -25.8 16.4 -26.6 16.9 -25.1 17.4 -26.1
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678552
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:17:39.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:17:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:17:39.659 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:17:12', tmtdew=11.13, humidity=47.02, cloud=0.0, wind=23.5, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:17:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:17:39.659 [DEBUG] [Thread-131914] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:39.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-28T18:17:39.746 [DEBUG] [Thread-131917] [transport.py] [_log()] starting thread (client mode): 0x2e363580
2025-09-28T18:17:39.746 [DEBUG] [Thread-131917] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:39.761 [DEBUG] [Thread-131917] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:17:39.761 [INFO] [Thread-131917] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:39.769 [DEBUG] [Thread-131917] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:39.770 [DEBUG] [Thread-131917] [transport.py] [_log()] Compression: none
2025-09-28T18:17:39.770 [DEBUG] [Thread-131917] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:39.827 [DEBUG] [Thread-131917] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:39.827 [DEBUG] [Thread-131917] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:39.828 [DEBUG] [Thread-131917] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:17:39.828 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:17:39.829 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:39.883 [DEBUG] [Thread-131917] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:39.883 [DEBUG] [Thread-131917] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:39.883 [DEBUG] [Thread-131917] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:39.883 [DEBUG] [Thread-131917] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:17:39.883 [DEBUG] [Thread-131917] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:39.902 [INFO] [Thread-131917] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:39.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-28T18:17:39.903 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:40.880 [DEBUG] [Thread-131917] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:40.880 [DEBUG] [Thread-131917] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:40.928 [DEBUG] [Thread-131917] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:40.928 [DEBUG] [Thread-131917] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:40.937 [DEBUG] [Thread-131917] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:40.946 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:40.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-28T18:17:40.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-28T18:17:40.964 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:40.964 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:40.964 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:40.972 [DEBUG] [Thread-131917] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:47.629 [DEBUG] [Thread-131919 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:17:50.969 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:17:50.969 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:17:50.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:17:51.575 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 17, 44), 11.04, 47.14, 0.0, 19.25, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:17:51.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:17:44
2025-09-28T18:17:51.688 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:17:51.839 [DEBUG] [Thread-131920] [transport.py] [_log()] starting thread (client mode): 0x2e3634f0
2025-09-28T18:17:51.839 [DEBUG] [Thread-131920] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:51.859 [DEBUG] [Thread-131920] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:17:51.860 [INFO] [Thread-131920] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:51.861 [DEBUG] [Thread-131920] [transport.py] [_log()] Compression: none
2025-09-28T18:17:51.862 [DEBUG] [Thread-131920] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:51.877 [DEBUG] [Thread-131920] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:51.877 [DEBUG] [Thread-131920] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:17:51.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:17:51.878 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:17:51.878 [DEBUG] [Thread-131920] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:51.887 [INFO] [Thread-131920] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:51.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:52.708 [DEBUG] [Thread-131920] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:52.708 [DEBUG] [Thread-131920] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:52.708 [DEBUG] [Thread-131920] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:17:52.749 [DEBUG] [Thread-131920] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:52.749 [DEBUG] [Thread-131920] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:52.751 [DEBUG] [Thread-131920] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:52.764 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:52.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:17:52.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:17:52.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:17:52.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:52.768 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:17:52.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678552 -999.00  +14.10  11.97     51   +4.30 1 1 1 1 1   887    0 8.11 -86.91 ----- 12.0 12.0 180.4 19.6 16.6 -25.8 16.4 -26.6 16.9 -25.1 17.4 -26.1
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678552
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:17:52.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:17:44', tmtdew=11.04, humidity=47.14, cloud=0.0, wind=19.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:17:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:17:52.769 [DEBUG] [Thread-131920] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:17:52.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-28T18:17:52.853 [DEBUG] [Thread-131923] [transport.py] [_log()] starting thread (client mode): 0x2b9e60b0
2025-09-28T18:17:52.853 [DEBUG] [Thread-131923] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:17:52.868 [DEBUG] [Thread-131923] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:17:52.868 [INFO] [Thread-131923] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] client lang: <none>
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] server lang: <none>
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] kex follows: False
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] Compression: none
2025-09-28T18:17:52.876 [DEBUG] [Thread-131923] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:17:52.936 [DEBUG] [Thread-131923] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:17:52.936 [DEBUG] [Thread-131923] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:17:52.936 [DEBUG] [Thread-131923] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:17:52.936 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:17:52.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:17:52.995 [DEBUG] [Thread-131923] [transport.py] [_log()] userauth is OK
2025-09-28T18:17:52.995 [DEBUG] [Thread-131923] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:17:52.995 [DEBUG] [Thread-131923] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:17:52.995 [DEBUG] [Thread-131923] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:17:52.995 [DEBUG] [Thread-131923] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:17:53.013 [INFO] [Thread-131923] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:17:53.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-28T18:17:53.013 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:17:53.983 [DEBUG] [Thread-131923] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:17:53.984 [DEBUG] [Thread-131923] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:17:54.031 [DEBUG] [Thread-131923] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:17:54.032 [DEBUG] [Thread-131923] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:17:54.040 [DEBUG] [Thread-131923] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:17:54.049 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:17:54.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')
2025-09-28T18:17:54.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-28T18:17:54.066 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:17:54.066 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:17:54.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:17:54.074 [DEBUG] [Thread-131923] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:02.680 [DEBUG] [Thread-131925 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:04.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:18:04.077 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:18:04.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-28T18:18:04.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 17, 44), 11.04, 47.14, 0.0, 19.25, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:18:04.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:17:44
2025-09-28T18:18:04.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:18:04.909 [DEBUG] [Thread-131926] [transport.py] [_log()] starting thread (client mode): 0x2b9b9570
2025-09-28T18:18:04.909 [DEBUG] [Thread-131926] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:04.929 [DEBUG] [Thread-131926] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:18:04.929 [INFO] [Thread-131926] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] Compression: none
2025-09-28T18:18:04.933 [DEBUG] [Thread-131926] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:04.945 [DEBUG] [Thread-131926] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:04.945 [DEBUG] [Thread-131926] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:04.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:18:04.946 [DEBUG] [Thread-131926] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:18:04.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:04.947 [DEBUG] [Thread-131926] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:04.947 [DEBUG] [Thread-131926] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:04.947 [DEBUG] [Thread-131926] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:04.947 [DEBUG] [Thread-131926] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:18:04.947 [DEBUG] [Thread-131926] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:04.960 [INFO] [Thread-131926] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:04.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:05.732 [DEBUG] [Thread-131926] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:05.732 [DEBUG] [Thread-131926] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:05.732 [DEBUG] [Thread-131926] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:18:05.773 [DEBUG] [Thread-131926] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:05.773 [DEBUG] [Thread-131926] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:05.776 [DEBUG] [Thread-131926] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:05.787 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:05.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:18:05.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:18:05.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:18:05.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:05.798 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:18:05.798 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:05.798 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:05.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:18:05.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678552 -999.00  +14.10  11.97     51   +4.30 1 1 1 1 1   887    0 8.11 -86.91 ----- 12.0 12.0 180.4 19.6 16.6 -25.8 16.4 -26.6 16.9 -25.1 17.4 -26.1
2025-09-28T18:18:05.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:18:05.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:18:05.799 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678552
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:18:05.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:17:44', tmtdew=11.04, humidity=47.14, cloud=0.0, wind=19.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:17:06.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:18:05.801 [DEBUG] [Thread-131926] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:05.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-28T18:18:05.896 [DEBUG] [Thread-131929] [transport.py] [_log()] starting thread (client mode): 0x2b9bbf10
2025-09-28T18:18:05.897 [DEBUG] [Thread-131929] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:05.912 [DEBUG] [Thread-131929] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:18:05.912 [INFO] [Thread-131929] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:18:05.919 [DEBUG] [Thread-131929] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:05.919 [DEBUG] [Thread-131929] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] Compression: none
2025-09-28T18:18:05.920 [DEBUG] [Thread-131929] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:05.978 [DEBUG] [Thread-131929] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:05.979 [DEBUG] [Thread-131929] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:05.979 [DEBUG] [Thread-131929] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:18:05.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:18:05.980 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:06.035 [DEBUG] [Thread-131929] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:06.035 [DEBUG] [Thread-131929] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:06.035 [DEBUG] [Thread-131929] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:06.035 [DEBUG] [Thread-131929] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:18:06.035 [DEBUG] [Thread-131929] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:06.054 [INFO] [Thread-131929] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:06.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-28T18:18:06.054 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:07.079 [DEBUG] [Thread-131929] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:07.079 [DEBUG] [Thread-131929] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:07.127 [DEBUG] [Thread-131929] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:07.127 [DEBUG] [Thread-131929] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:07.136 [DEBUG] [Thread-131929] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:07.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:07.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-28T18:18:07.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-28T18:18:07.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:07.162 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:07.163 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:07.170 [DEBUG] [Thread-131929] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:17.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:18:17.168 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:18:17.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-28T18:18:17.724 [DEBUG] [Thread-131931 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:17.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 17, 44), 11.04, 47.14, 0.0, 19.25, 13.96, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:18:17.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:17:44
2025-09-28T18:18:17.888 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:18:18.039 [DEBUG] [Thread-131932] [transport.py] [_log()] starting thread (client mode): 0x2b9e7250
2025-09-28T18:18:18.040 [DEBUG] [Thread-131932] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:18.058 [DEBUG] [Thread-131932] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:18:18.058 [INFO] [Thread-131932] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:18.061 [DEBUG] [Thread-131932] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] Compression: none
2025-09-28T18:18:18.062 [DEBUG] [Thread-131932] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:18.079 [DEBUG] [Thread-131932] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:18.080 [DEBUG] [Thread-131932] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:18.080 [DEBUG] [Thread-131932] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:18:18.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:18:18.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:18.082 [DEBUG] [Thread-131932] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:18.082 [DEBUG] [Thread-131932] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:18.082 [DEBUG] [Thread-131932] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:18.082 [DEBUG] [Thread-131932] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:18:18.082 [DEBUG] [Thread-131932] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:18.100 [INFO] [Thread-131932] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:18.101 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:18.707 [DEBUG] [Thread-131932] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:18.707 [DEBUG] [Thread-131932] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:18.708 [DEBUG] [Thread-131932] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:18:18.748 [DEBUG] [Thread-131932] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:18.748 [DEBUG] [Thread-131932] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:18.751 [DEBUG] [Thread-131932] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:18.762 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:18.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:18:18.764 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:18:18.766 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:18:18.771 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:18.772 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:18:18.772 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678899 -999.00  +14.10   9.67     51   +4.40 1 1 1 1 1   887    0 8.01 -83.84 ----- 9.7 9.7 213.9 23.0 16.4 -25.6 16.4 -24.5 16.9 -24.5 17.2 -26.3
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:18:18.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678899
2025-09-28T18:18:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:18:18.774 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:18:18.774 [DEBUG] [Thread-131932] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:18:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:18:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:18:18.775 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:17:44', tmtdew=11.04, humidity=47.14, cloud=0.0, wind=19.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:17:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:18:18.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-28T18:18:18.868 [DEBUG] [Thread-131935] [transport.py] [_log()] starting thread (client mode): 0x2e3610c0
2025-09-28T18:18:18.868 [DEBUG] [Thread-131935] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:18.882 [DEBUG] [Thread-131935] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:18:18.882 [INFO] [Thread-131935] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:18:18.890 [DEBUG] [Thread-131935] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:18.890 [DEBUG] [Thread-131935] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:18:18.890 [DEBUG] [Thread-131935] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:18.890 [DEBUG] [Thread-131935] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:18.890 [DEBUG] [Thread-131935] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:18.891 [DEBUG] [Thread-131935] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:18.892 [DEBUG] [Thread-131935] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:18.892 [DEBUG] [Thread-131935] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:18.892 [DEBUG] [Thread-131935] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:18.892 [DEBUG] [Thread-131935] [transport.py] [_log()] Compression: none
2025-09-28T18:18:18.892 [DEBUG] [Thread-131935] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:18.945 [DEBUG] [Thread-131935] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:18.946 [DEBUG] [Thread-131935] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:18.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:18:18.947 [DEBUG] [Thread-131935] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:18:18.948 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:19.003 [DEBUG] [Thread-131935] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:19.003 [DEBUG] [Thread-131935] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:19.003 [DEBUG] [Thread-131935] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:19.003 [DEBUG] [Thread-131935] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:18:19.004 [DEBUG] [Thread-131935] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:19.023 [INFO] [Thread-131935] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:19.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-28T18:18:19.023 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:19.943 [DEBUG] [Thread-131935] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:19.943 [DEBUG] [Thread-131935] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:19.990 [DEBUG] [Thread-131935] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:19.990 [DEBUG] [Thread-131935] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:19.999 [DEBUG] [Thread-131935] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:20.008 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:20.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-28T18:18:20.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-28T18:18:20.025 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:20.025 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:20.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:20.033 [DEBUG] [Thread-131935] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:26.596 [DEBUG] [Thread-131937 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:30.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:18:30.031 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:18:30.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-28T18:18:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 18, 15), 11.03, 47.19, 0.0, 20.33, 14.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:18:30.625 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:18:15
2025-09-28T18:18:30.736 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:18:30.890 [DEBUG] [Thread-131938] [transport.py] [_log()] starting thread (client mode): 0x2b9b8d00
2025-09-28T18:18:30.890 [DEBUG] [Thread-131938] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:30.911 [DEBUG] [Thread-131938] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:18:30.911 [INFO] [Thread-131938] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:18:30.913 [DEBUG] [Thread-131938] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] Compression: none
2025-09-28T18:18:30.914 [DEBUG] [Thread-131938] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:30.930 [DEBUG] [Thread-131938] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:30.930 [DEBUG] [Thread-131938] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:30.930 [DEBUG] [Thread-131938] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:18:30.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:18:30.930 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:30.931 [DEBUG] [Thread-131938] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:30.931 [DEBUG] [Thread-131938] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:30.931 [DEBUG] [Thread-131938] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:30.931 [DEBUG] [Thread-131938] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:18:30.931 [DEBUG] [Thread-131938] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:30.940 [INFO] [Thread-131938] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:30.940 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:31.757 [DEBUG] [Thread-131938] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:31.757 [DEBUG] [Thread-131938] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:31.758 [DEBUG] [Thread-131938] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:18:31.798 [DEBUG] [Thread-131938] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:31.798 [DEBUG] [Thread-131938] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:31.801 [DEBUG] [Thread-131938] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:31.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:31.813 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:18:31.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:18:31.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:18:31.821 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:31.822 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:18:31.823 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.678899 -999.00  +14.10   9.67     51   +4.40 1 1 1 1 1   887    0 8.01 -83.84 ----- 9.7 9.7 213.9 23.0 16.4 -25.6 16.4 -24.5 16.9 -24.5 17.2 -26.3
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:18:31.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.678899
2025-09-28T18:18:31.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:18:31.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:18:31.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:18:31.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:18:31.824 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:18:31.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:18:15', tmtdew=11.03, humidity=47.19, cloud=0.0, wind=20.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:17:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:18:31.825 [DEBUG] [Thread-131938] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:31.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-28T18:18:31.919 [DEBUG] [Thread-131941] [transport.py] [_log()] starting thread (client mode): 0x2b9e4ac0
2025-09-28T18:18:31.920 [DEBUG] [Thread-131941] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:31.934 [DEBUG] [Thread-131941] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:18:31.934 [INFO] [Thread-131941] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:18:31.941 [DEBUG] [Thread-131941] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:31.942 [DEBUG] [Thread-131941] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:31.943 [DEBUG] [Thread-131941] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:31.944 [DEBUG] [Thread-131941] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:31.944 [DEBUG] [Thread-131941] [transport.py] [_log()] Compression: none
2025-09-28T18:18:31.944 [DEBUG] [Thread-131941] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:31.999 [DEBUG] [Thread-131941] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:31.999 [DEBUG] [Thread-131941] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:31.999 [DEBUG] [Thread-131941] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:18:32.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:18:32.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:32.056 [DEBUG] [Thread-131941] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:32.056 [DEBUG] [Thread-131941] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:32.057 [DEBUG] [Thread-131941] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:32.057 [DEBUG] [Thread-131941] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:18:32.057 [DEBUG] [Thread-131941] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:32.076 [INFO] [Thread-131941] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:32.076 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:18:32.077 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:32.750 [DEBUG] [Thread-131943 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:33.068 [DEBUG] [Thread-131941] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:33.068 [DEBUG] [Thread-131941] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:33.117 [DEBUG] [Thread-131941] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:33.117 [DEBUG] [Thread-131941] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:33.125 [DEBUG] [Thread-131941] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:33.133 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:33.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-28T18:18:33.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-28T18:18:33.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:33.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:33.149 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:33.157 [DEBUG] [Thread-131941] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:36.168 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:36.169 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:43.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:18:43.159 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:18:43.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-28T18:18:43.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 18, 15), 11.03, 47.19, 0.0, 20.33, 14.01, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:18:43.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:18:15
2025-09-28T18:18:43.848 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:18:43.997 [DEBUG] [Thread-131944] [transport.py] [_log()] starting thread (client mode): 0x2b9e5000
2025-09-28T18:18:43.998 [DEBUG] [Thread-131944] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:44.017 [DEBUG] [Thread-131944] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:18:44.017 [INFO] [Thread-131944] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] Compression: none
2025-09-28T18:18:44.020 [DEBUG] [Thread-131944] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:44.036 [DEBUG] [Thread-131944] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:44.036 [DEBUG] [Thread-131944] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:44.037 [DEBUG] [Thread-131944] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:18:44.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:18:44.037 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:44.038 [DEBUG] [Thread-131944] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:44.038 [DEBUG] [Thread-131944] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:44.039 [DEBUG] [Thread-131944] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:44.039 [DEBUG] [Thread-131944] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:18:44.039 [DEBUG] [Thread-131944] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:44.058 [INFO] [Thread-131944] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:44.059 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:44.711 [DEBUG] [Thread-131944] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:44.711 [DEBUG] [Thread-131944] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:44.712 [DEBUG] [Thread-131944] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:18:44.752 [DEBUG] [Thread-131944] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:44.753 [DEBUG] [Thread-131944] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:44.755 [DEBUG] [Thread-131944] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:44.767 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:44.767 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:18:44.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:18:44.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:18:44.774 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:44.776 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:18:44.776 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:44.776 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.679593 -999.00  +14.10  10.45     52   +4.40 1 1 1 1 1   887    0 8.20 -80.67 ----- 10.4 10.4 196.6 22.3 16.4 -25.4 16.3 -24.6 16.8 -25.0 17.2 -25.8
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.679593
2025-09-28T18:18:44.777 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:18:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:18:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:18:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:18:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:18:44.778 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:18:15', tmtdew=11.03, humidity=47.19, cloud=0.0, wind=20.33, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:18:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:18:44.779 [DEBUG] [Thread-131944] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:44.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-28T18:18:44.878 [DEBUG] [Thread-131947] [transport.py] [_log()] starting thread (client mode): 0x2b9e6650
2025-09-28T18:18:44.878 [DEBUG] [Thread-131947] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:44.893 [DEBUG] [Thread-131947] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:18:44.893 [INFO] [Thread-131947] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:18:44.901 [DEBUG] [Thread-131947] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:44.901 [DEBUG] [Thread-131947] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:18:44.901 [DEBUG] [Thread-131947] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:44.901 [DEBUG] [Thread-131947] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:44.901 [DEBUG] [Thread-131947] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] Compression: none
2025-09-28T18:18:44.902 [DEBUG] [Thread-131947] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:44.959 [DEBUG] [Thread-131947] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:44.959 [DEBUG] [Thread-131947] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:44.960 [DEBUG] [Thread-131947] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:18:44.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:18:44.960 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:45.015 [DEBUG] [Thread-131947] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:45.015 [DEBUG] [Thread-131947] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:45.016 [DEBUG] [Thread-131947] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:45.016 [DEBUG] [Thread-131947] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:18:45.016 [DEBUG] [Thread-131947] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:45.034 [INFO] [Thread-131947] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:45.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-28T18:18:45.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:45.987 [DEBUG] [Thread-131947] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:45.987 [DEBUG] [Thread-131947] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:46.035 [DEBUG] [Thread-131947] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:46.035 [DEBUG] [Thread-131947] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:46.044 [DEBUG] [Thread-131947] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:46.053 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:46.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-28T18:18:46.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-28T18:18:46.071 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:46.071 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:46.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:46.083 [DEBUG] [Thread-131947] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:47.800 [DEBUG] [Thread-131949 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:18:56.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:18:56.082 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:18:56.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-28T18:18:56.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 18, 47), 10.99, 47.12, 0.0, 19.53, 13.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:18:56.653 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:18:47
2025-09-28T18:18:56.760 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:18:56.907 [DEBUG] [Thread-131950] [transport.py] [_log()] starting thread (client mode): 0x2b9b8880
2025-09-28T18:18:56.907 [DEBUG] [Thread-131950] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:56.928 [DEBUG] [Thread-131950] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:18:56.928 [INFO] [Thread-131950] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:18:56.931 [DEBUG] [Thread-131950] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:56.931 [DEBUG] [Thread-131950] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] Compression: none
2025-09-28T18:18:56.932 [DEBUG] [Thread-131950] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:56.949 [DEBUG] [Thread-131950] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:56.949 [DEBUG] [Thread-131950] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:56.950 [DEBUG] [Thread-131950] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:18:56.950 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:18:56.951 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:56.952 [DEBUG] [Thread-131950] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:56.952 [DEBUG] [Thread-131950] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:56.952 [DEBUG] [Thread-131950] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:56.952 [DEBUG] [Thread-131950] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:18:56.952 [DEBUG] [Thread-131950] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:56.970 [INFO] [Thread-131950] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:56.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:57.743 [DEBUG] [Thread-131950] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:57.743 [DEBUG] [Thread-131950] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:57.744 [DEBUG] [Thread-131950] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:18:57.784 [DEBUG] [Thread-131950] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:57.784 [DEBUG] [Thread-131950] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:57.787 [DEBUG] [Thread-131950] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:57.799 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:57.800 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:18:57.801 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:18:57.803 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:18:57.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:57.810 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:18:57.810 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:57.810 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.679593 -999.00  +14.10  10.45     52   +4.40 1 1 1 1 1   887    0 8.20 -80.67 ----- 10.4 10.4 196.6 22.3 16.4 -25.4 16.3 -24.6 16.8 -25.0 17.2 -25.8
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.679593
2025-09-28T18:18:57.811 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:18:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:18:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:18:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:18:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:18:57.812 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:18:47', tmtdew=10.99, humidity=47.12, cloud=0.0, wind=19.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:18:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:18:57.813 [DEBUG] [Thread-131950] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:18:57.904 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:18:57.913 [DEBUG] [Thread-131953] [transport.py] [_log()] starting thread (client mode): 0x2e362f50
2025-09-28T18:18:57.913 [DEBUG] [Thread-131953] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:18:57.927 [DEBUG] [Thread-131953] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:18:57.927 [INFO] [Thread-131953] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:18:57.935 [DEBUG] [Thread-131953] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] client lang: <none>
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] server lang: <none>
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] kex follows: False
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:18:57.936 [DEBUG] [Thread-131953] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:18:57.937 [DEBUG] [Thread-131953] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:18:57.937 [DEBUG] [Thread-131953] [transport.py] [_log()] Compression: none
2025-09-28T18:18:57.937 [DEBUG] [Thread-131953] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:18:57.991 [DEBUG] [Thread-131953] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:18:57.991 [DEBUG] [Thread-131953] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:18:57.992 [DEBUG] [Thread-131953] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:18:57.992 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:18:57.993 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:18:58.048 [DEBUG] [Thread-131953] [transport.py] [_log()] userauth is OK
2025-09-28T18:18:58.048 [DEBUG] [Thread-131953] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:18:58.048 [DEBUG] [Thread-131953] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:18:58.048 [DEBUG] [Thread-131953] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:18:58.048 [DEBUG] [Thread-131953] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:18:58.067 [INFO] [Thread-131953] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:18:58.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-28T18:18:58.068 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:18:58.973 [DEBUG] [Thread-131953] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:18:58.973 [DEBUG] [Thread-131953] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:18:59.021 [DEBUG] [Thread-131953] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:18:59.021 [DEBUG] [Thread-131953] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:18:59.030 [DEBUG] [Thread-131953] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:18:59.039 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:18:59.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-28T18:18:59.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-28T18:18:59.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:18:59.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:18:59.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:18:59.065 [DEBUG] [Thread-131953] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:02.853 [DEBUG] [Thread-131955 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:09.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:19:09.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:19:09.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-28T18:19:09.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 18, 47), 10.99, 47.12, 0.0, 19.53, 13.88, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:19:09.650 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:18:47
2025-09-28T18:19:09.758 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:19:09.904 [DEBUG] [Thread-131956] [transport.py] [_log()] starting thread (client mode): 0x2e3c3790
2025-09-28T18:19:09.904 [DEBUG] [Thread-131956] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:09.924 [DEBUG] [Thread-131956] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:19:09.924 [INFO] [Thread-131956] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:19:09.925 [DEBUG] [Thread-131956] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:09.925 [DEBUG] [Thread-131956] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:19:09.925 [DEBUG] [Thread-131956] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:09.926 [DEBUG] [Thread-131956] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:09.927 [DEBUG] [Thread-131956] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:09.927 [DEBUG] [Thread-131956] [transport.py] [_log()] Compression: none
2025-09-28T18:19:09.927 [DEBUG] [Thread-131956] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:09.936 [DEBUG] [Thread-131956] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:09.936 [DEBUG] [Thread-131956] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:09.937 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:19:09.938 [DEBUG] [Thread-131956] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:19:09.938 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:09.939 [DEBUG] [Thread-131956] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:09.940 [DEBUG] [Thread-131956] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:09.940 [DEBUG] [Thread-131956] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:09.940 [DEBUG] [Thread-131956] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:19:09.940 [DEBUG] [Thread-131956] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:09.959 [INFO] [Thread-131956] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:09.960 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:10.705 [DEBUG] [Thread-131956] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:10.705 [DEBUG] [Thread-131956] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:10.705 [DEBUG] [Thread-131956] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:19:10.746 [DEBUG] [Thread-131956] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:10.746 [DEBUG] [Thread-131956] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:10.749 [DEBUG] [Thread-131956] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:10.761 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:10.762 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:19:10.763 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:19:10.765 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:19:10.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:10.771 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:19:10.771 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:10.771 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:10.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:19:10.771 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.679593 -999.00  +14.10  10.45     52   +4.40 1 1 1 1 1   887    0 8.20 -80.67 ----- 10.4 10.4 196.6 22.3 16.4 -25.4 16.3 -24.6 16.8 -25.0 17.2 -25.8
2025-09-28T18:19:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:19:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:19:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.679593
2025-09-28T18:19:10.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:19:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:19:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:19:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:19:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:19:10.773 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:18:47', tmtdew=10.99, humidity=47.12, cloud=0.0, wind=19.53, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:18:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:19:10.773 [DEBUG] [Thread-131956] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:10.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-28T18:19:10.867 [DEBUG] [Thread-131959] [transport.py] [_log()] starting thread (client mode): 0x2e3c0670
2025-09-28T18:19:10.867 [DEBUG] [Thread-131959] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:10.882 [DEBUG] [Thread-131959] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:19:10.882 [INFO] [Thread-131959] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] Compression: none
2025-09-28T18:19:10.890 [DEBUG] [Thread-131959] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:10.946 [DEBUG] [Thread-131959] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:10.946 [DEBUG] [Thread-131959] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:10.946 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:19:10.946 [DEBUG] [Thread-131959] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:19:10.947 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:11.003 [DEBUG] [Thread-131959] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:11.003 [DEBUG] [Thread-131959] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:11.003 [DEBUG] [Thread-131959] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:11.004 [DEBUG] [Thread-131959] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:19:11.004 [DEBUG] [Thread-131959] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:11.019 [INFO] [Thread-131959] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:11.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-28T18:19:11.020 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:11.949 [DEBUG] [Thread-131959] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:11.949 [DEBUG] [Thread-131959] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:11.997 [DEBUG] [Thread-131959] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:11.997 [DEBUG] [Thread-131959] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:12.005 [DEBUG] [Thread-131959] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:12.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:12.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-28T18:19:12.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-28T18:19:12.034 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:12.035 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:12.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:12.043 [DEBUG] [Thread-131959] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:17.898 [DEBUG] [Thread-131961 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:22.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:19:22.037 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:19:22.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-28T18:19:22.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 19, 19), 11.01, 47.07, 0.0, 19.09, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:19:22.609 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:19:19
2025-09-28T18:19:22.716 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:19:22.863 [DEBUG] [Thread-131962] [transport.py] [_log()] starting thread (client mode): 0x2e3631c0
2025-09-28T18:19:22.863 [DEBUG] [Thread-131962] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:22.884 [DEBUG] [Thread-131962] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:19:22.884 [INFO] [Thread-131962] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] Compression: none
2025-09-28T18:19:22.887 [DEBUG] [Thread-131962] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:22.904 [DEBUG] [Thread-131962] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:22.905 [DEBUG] [Thread-131962] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:22.905 [DEBUG] [Thread-131962] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:19:22.905 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:19:22.906 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:22.948 [DEBUG] [Thread-131962] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:22.949 [DEBUG] [Thread-131962] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:22.949 [DEBUG] [Thread-131962] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:22.949 [DEBUG] [Thread-131962] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:19:22.949 [DEBUG] [Thread-131962] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:22.985 [INFO] [Thread-131962] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:22.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:23.669 [DEBUG] [Thread-131962] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:23.669 [DEBUG] [Thread-131962] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:23.669 [DEBUG] [Thread-131962] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:19:23.710 [DEBUG] [Thread-131962] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:23.711 [DEBUG] [Thread-131962] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:23.714 [DEBUG] [Thread-131962] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:23.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:23.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:19:23.729 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:19:23.731 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:19:23.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:23.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:19:23.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:23.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:23.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:19:23.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.679941 -999.00  +14.10   8.49     51   +4.40 1 1 1 1 1   887    0 7.87 -80.68 ----- 8.5 8.5 179.7 17.4 16.4 -25.5 16.2 -24.1 16.7 -24.8 17.1 -25.7
2025-09-28T18:19:23.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:19:23.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:19:23.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.679941
2025-09-28T18:19:23.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:19:23.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:19:23.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:19:23.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:19:23.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:19:23.742 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:19:19', tmtdew=11.01, humidity=47.07, cloud=0.0, wind=19.09, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:19:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:19:23.742 [DEBUG] [Thread-131962] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:23.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-28T18:19:23.839 [DEBUG] [Thread-131965] [transport.py] [_log()] starting thread (client mode): 0x2b9ba710
2025-09-28T18:19:23.839 [DEBUG] [Thread-131965] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:23.853 [DEBUG] [Thread-131965] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:19:23.853 [INFO] [Thread-131965] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:23.861 [DEBUG] [Thread-131965] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:23.862 [DEBUG] [Thread-131965] [transport.py] [_log()] Compression: none
2025-09-28T18:19:23.862 [DEBUG] [Thread-131965] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:23.920 [DEBUG] [Thread-131965] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:23.920 [DEBUG] [Thread-131965] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:23.921 [DEBUG] [Thread-131965] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:19:23.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:19:23.922 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:23.979 [DEBUG] [Thread-131965] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:23.980 [DEBUG] [Thread-131965] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:23.980 [DEBUG] [Thread-131965] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:23.980 [DEBUG] [Thread-131965] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:19:23.980 [DEBUG] [Thread-131965] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:23.998 [INFO] [Thread-131965] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:23.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-28T18:19:23.999 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:24.969 [DEBUG] [Thread-131965] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:24.969 [DEBUG] [Thread-131965] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:25.016 [DEBUG] [Thread-131965] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:25.016 [DEBUG] [Thread-131965] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:25.025 [DEBUG] [Thread-131965] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:25.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:25.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-28T18:19:25.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-28T18:19:25.057 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:25.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:25.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:25.066 [DEBUG] [Thread-131965] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:26.651 [DEBUG] [Thread-131967 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:32.928 [DEBUG] [Thread-131968 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:35.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:19:35.068 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:19:35.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-28T18:19:35.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 19, 19), 11.01, 47.07, 0.0, 19.09, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:19:35.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:19:19
2025-09-28T18:19:35.754 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:19:35.905 [DEBUG] [Thread-131969] [transport.py] [_log()] starting thread (client mode): 0x2e3c3790
2025-09-28T18:19:35.905 [DEBUG] [Thread-131969] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:35.925 [DEBUG] [Thread-131969] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:19:35.925 [INFO] [Thread-131969] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] Compression: none
2025-09-28T18:19:35.929 [DEBUG] [Thread-131969] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:35.944 [DEBUG] [Thread-131969] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:35.944 [DEBUG] [Thread-131969] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:35.944 [DEBUG] [Thread-131969] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:19:35.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:19:35.944 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:35.945 [DEBUG] [Thread-131969] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:35.945 [DEBUG] [Thread-131969] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:35.945 [DEBUG] [Thread-131969] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:35.945 [DEBUG] [Thread-131969] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:19:35.945 [DEBUG] [Thread-131969] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:35.954 [INFO] [Thread-131969] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:35.954 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:36.309 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:36.310 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:36.756 [DEBUG] [Thread-131969] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:36.756 [DEBUG] [Thread-131969] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:36.756 [DEBUG] [Thread-131969] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:19:36.797 [DEBUG] [Thread-131969] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:36.798 [DEBUG] [Thread-131969] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:36.800 [DEBUG] [Thread-131969] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:36.814 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:36.814 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:19:36.816 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:19:36.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:19:36.823 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:36.825 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:19:36.825 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:36.825 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:36.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:19:36.825 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.679941 -999.00  +14.10   8.49     51   +4.40 1 1 1 1 1   887    0 7.87 -80.68 ----- 8.5 8.5 179.7 17.4 16.4 -25.5 16.2 -24.1 16.7 -24.8 17.1 -25.7
2025-09-28T18:19:36.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:19:36.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:19:36.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.679941
2025-09-28T18:19:36.826 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:19:36.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:19:36.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:19:36.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:19:36.827 [DEBUG] [Thread-131969] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:36.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:19:36.828 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:19:19', tmtdew=11.01, humidity=47.07, cloud=0.0, wind=19.09, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:19:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:19:36.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-28T18:19:36.925 [DEBUG] [Thread-131972] [transport.py] [_log()] starting thread (client mode): 0x2b9e5390
2025-09-28T18:19:36.925 [DEBUG] [Thread-131972] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:36.944 [DEBUG] [Thread-131972] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:19:36.945 [INFO] [Thread-131972] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:36.952 [DEBUG] [Thread-131972] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] Compression: none
2025-09-28T18:19:36.953 [DEBUG] [Thread-131972] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:37.015 [DEBUG] [Thread-131972] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:37.016 [DEBUG] [Thread-131972] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:37.016 [DEBUG] [Thread-131972] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:19:37.016 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:19:37.017 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:37.072 [DEBUG] [Thread-131972] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:37.072 [DEBUG] [Thread-131972] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:37.072 [DEBUG] [Thread-131972] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:37.072 [DEBUG] [Thread-131972] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:19:37.072 [DEBUG] [Thread-131972] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:37.091 [INFO] [Thread-131972] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:37.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-28T18:19:37.092 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:38.058 [DEBUG] [Thread-131972] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:38.058 [DEBUG] [Thread-131972] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:38.106 [DEBUG] [Thread-131972] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:38.106 [DEBUG] [Thread-131972] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:38.115 [DEBUG] [Thread-131972] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:38.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:38.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-28T18:19:38.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-28T18:19:38.142 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:38.142 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:38.143 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:38.150 [DEBUG] [Thread-131972] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:47.963 [DEBUG] [Thread-131974 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:19:48.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:19:48.153 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:19:48.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-28T18:19:48.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 19, 19), 11.01, 47.07, 0.0, 19.09, 13.93, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:19:48.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:19:19
2025-09-28T18:19:48.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:19:48.969 [DEBUG] [Thread-131975] [transport.py] [_log()] starting thread (client mode): 0x2b9e7010
2025-09-28T18:19:48.970 [DEBUG] [Thread-131975] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:48.989 [DEBUG] [Thread-131975] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:19:48.990 [INFO] [Thread-131975] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:19:48.993 [DEBUG] [Thread-131975] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:48.993 [DEBUG] [Thread-131975] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:19:48.993 [DEBUG] [Thread-131975] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:48.993 [DEBUG] [Thread-131975] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:48.993 [DEBUG] [Thread-131975] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] Compression: none
2025-09-28T18:19:48.994 [DEBUG] [Thread-131975] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:49.010 [DEBUG] [Thread-131975] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:49.011 [DEBUG] [Thread-131975] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:49.011 [DEBUG] [Thread-131975] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:19:49.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:19:49.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:49.013 [DEBUG] [Thread-131975] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:49.013 [DEBUG] [Thread-131975] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:49.013 [DEBUG] [Thread-131975] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:49.013 [DEBUG] [Thread-131975] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:19:49.013 [DEBUG] [Thread-131975] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:49.038 [INFO] [Thread-131975] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:49.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:49.674 [DEBUG] [Thread-131975] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:49.674 [DEBUG] [Thread-131975] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:49.674 [DEBUG] [Thread-131975] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:19:49.715 [DEBUG] [Thread-131975] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:49.715 [DEBUG] [Thread-131975] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:49.718 [DEBUG] [Thread-131975] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:49.730 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:49.730 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:19:49.732 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:19:49.733 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:19:49.737 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:49.739 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:19:49.739 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:49.739 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:49.739 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:19:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680288 -999.00  +14.10  15.11     51   +4.30 1 1 1 1 1   887    0 7.94 -81.41 ----- 15.1 15.1 199.8 22.1 16.4 -25.7 16.1 -25.2 16.7 -24.8 17.1 -26.1
2025-09-28T18:19:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:19:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:19:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680288
2025-09-28T18:19:49.740 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:19:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:19:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:19:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:19:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:19:49.741 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:19:19', tmtdew=11.01, humidity=47.07, cloud=0.0, wind=19.09, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:19:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:19:49.741 [DEBUG] [Thread-131975] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:19:49.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-28T18:19:49.836 [DEBUG] [Thread-131978] [transport.py] [_log()] starting thread (client mode): 0x2b91d570
2025-09-28T18:19:49.837 [DEBUG] [Thread-131978] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:19:49.852 [DEBUG] [Thread-131978] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:19:49.852 [INFO] [Thread-131978] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:19:49.863 [DEBUG] [Thread-131978] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] client lang: <none>
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] server lang: <none>
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] kex follows: False
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:19:49.864 [DEBUG] [Thread-131978] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:19:49.865 [DEBUG] [Thread-131978] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:19:49.865 [DEBUG] [Thread-131978] [transport.py] [_log()] Compression: none
2025-09-28T18:19:49.865 [DEBUG] [Thread-131978] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:19:49.919 [DEBUG] [Thread-131978] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:19:49.920 [DEBUG] [Thread-131978] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:19:49.920 [DEBUG] [Thread-131978] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:19:49.920 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:19:49.921 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:19:49.976 [DEBUG] [Thread-131978] [transport.py] [_log()] userauth is OK
2025-09-28T18:19:49.976 [DEBUG] [Thread-131978] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:19:49.976 [DEBUG] [Thread-131978] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:19:49.976 [DEBUG] [Thread-131978] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:19:49.976 [DEBUG] [Thread-131978] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:19:49.996 [INFO] [Thread-131978] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:19:49.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-28T18:19:49.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:19:50.995 [DEBUG] [Thread-131978] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:19:50.995 [DEBUG] [Thread-131978] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:19:51.043 [DEBUG] [Thread-131978] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:19:51.044 [DEBUG] [Thread-131978] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:19:51.053 [DEBUG] [Thread-131978] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:19:51.061 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:19:51.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')
2025-09-28T18:19:51.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') -> 00000000
2025-09-28T18:19:51.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:19:51.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:19:51.079 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:19:51.087 [DEBUG] [Thread-131978] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:01.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:20:01.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:20:01.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-28T18:20:01.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 19, 51), 11.19, 46.82, 0.0, 16.64, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:20:01.679 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:19:51
2025-09-28T18:20:01.786 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:20:01.933 [DEBUG] [Thread-131980] [transport.py] [_log()] starting thread (client mode): 0x2e3c08e0
2025-09-28T18:20:01.933 [DEBUG] [Thread-131980] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:01.943 [DEBUG] [Thread-131980] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:20:01.943 [INFO] [Thread-131980] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:20:01.944 [DEBUG] [Thread-131980] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:01.944 [DEBUG] [Thread-131980] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:20:01.944 [DEBUG] [Thread-131980] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:01.944 [DEBUG] [Thread-131980] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] Compression: none
2025-09-28T18:20:01.945 [DEBUG] [Thread-131980] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:01.955 [DEBUG] [Thread-131980] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:01.955 [DEBUG] [Thread-131980] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:01.955 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:20:01.956 [DEBUG] [Thread-131980] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:20:01.956 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:01.957 [DEBUG] [Thread-131980] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:01.957 [DEBUG] [Thread-131980] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:01.957 [DEBUG] [Thread-131980] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:01.957 [DEBUG] [Thread-131980] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:20:01.957 [DEBUG] [Thread-131980] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:01.973 [INFO] [Thread-131980] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:01.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:02.721 [DEBUG] [Thread-131980] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:02.721 [DEBUG] [Thread-131980] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:02.721 [DEBUG] [Thread-131980] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:20:02.761 [DEBUG] [Thread-131980] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:02.761 [DEBUG] [Thread-131980] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:02.764 [DEBUG] [Thread-131980] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:02.778 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:02.778 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:20:02.780 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:20:02.781 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:20:02.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:02.788 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:20:02.788 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:02.788 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:02.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:20:02.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680288 -999.00  +14.10  15.11     51   +4.30 1 1 1 1 1   887    0 7.94 -81.41 ----- 15.1 15.1 199.8 22.1 16.4 -25.7 16.1 -25.2 16.7 -24.8 17.1 -26.1
2025-09-28T18:20:02.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:20:02.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:20:02.789 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680288
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:20:02.790 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:19:51', tmtdew=11.19, humidity=46.82, cloud=0.0, wind=16.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:19:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:20:02.791 [DEBUG] [Thread-131980] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:02.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-28T18:20:02.886 [DEBUG] [Thread-131983] [transport.py] [_log()] starting thread (client mode): 0x2b91d570
2025-09-28T18:20:02.886 [DEBUG] [Thread-131983] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:02.901 [DEBUG] [Thread-131983] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:20:02.901 [INFO] [Thread-131983] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:02.908 [DEBUG] [Thread-131983] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] Compression: none
2025-09-28T18:20:02.909 [DEBUG] [Thread-131983] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:02.969 [DEBUG] [Thread-131983] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:02.970 [DEBUG] [Thread-131983] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:02.970 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:20:02.971 [DEBUG] [Thread-131983] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:20:02.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:02.995 [DEBUG] [Thread-131985 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:03.025 [DEBUG] [Thread-131983] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:03.025 [DEBUG] [Thread-131983] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:03.025 [DEBUG] [Thread-131983] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:03.025 [DEBUG] [Thread-131983] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:20:03.025 [DEBUG] [Thread-131983] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:03.043 [INFO] [Thread-131983] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:03.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-28T18:20:03.044 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:04.039 [DEBUG] [Thread-131983] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:04.040 [DEBUG] [Thread-131983] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:04.087 [DEBUG] [Thread-131983] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:04.087 [DEBUG] [Thread-131983] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:04.097 [DEBUG] [Thread-131983] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:04.105 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:04.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-28T18:20:04.114 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T18:20:04.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:04.123 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:04.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:04.131 [DEBUG] [Thread-131983] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:14.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:20:14.134 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:20:14.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-28T18:20:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 19, 51), 11.19, 46.82, 0.0, 16.64, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:20:14.706 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:19:51
2025-09-28T18:20:14.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:20:14.961 [DEBUG] [Thread-131986] [transport.py] [_log()] starting thread (client mode): 0x2b9dfe50
2025-09-28T18:20:14.961 [DEBUG] [Thread-131986] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:14.982 [DEBUG] [Thread-131986] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:20:14.982 [INFO] [Thread-131986] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] Compression: none
2025-09-28T18:20:14.986 [DEBUG] [Thread-131986] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:15.004 [DEBUG] [Thread-131986] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:15.004 [DEBUG] [Thread-131986] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:15.005 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:20:15.005 [DEBUG] [Thread-131986] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:20:15.006 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:15.007 [DEBUG] [Thread-131986] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:15.007 [DEBUG] [Thread-131986] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:15.008 [DEBUG] [Thread-131986] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:15.008 [DEBUG] [Thread-131986] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:20:15.008 [DEBUG] [Thread-131986] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:15.031 [INFO] [Thread-131986] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:15.032 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:16.577 [DEBUG] [Thread-131986] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:16.578 [DEBUG] [Thread-131986] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:16.578 [DEBUG] [Thread-131986] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:20:16.618 [DEBUG] [Thread-131986] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:16.619 [DEBUG] [Thread-131986] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:16.621 [DEBUG] [Thread-131986] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:16.633 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:16.633 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:20:16.635 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:20:16.637 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:20:16.642 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:16.644 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:20:16.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680288 -999.00  +14.10  15.11     51   +4.30 1 1 1 1 1   887    0 7.94 -81.41 ----- 15.1 15.1 199.8 22.1 16.4 -25.7 16.1 -25.2 16.7 -24.8 17.1 -26.1
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:20:16.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680288
2025-09-28T18:20:16.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:20:16.645 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:20:16.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:20:16.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:20:16.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:20:16.646 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:19:51', tmtdew=11.19, humidity=46.82, cloud=0.0, wind=16.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:19:36.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:20:16.646 [DEBUG] [Thread-131986] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:16.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-28T18:20:16.738 [DEBUG] [Thread-131989] [transport.py] [_log()] starting thread (client mode): 0x2b9dee90
2025-09-28T18:20:16.739 [DEBUG] [Thread-131989] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:16.754 [DEBUG] [Thread-131989] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:20:16.754 [INFO] [Thread-131989] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:20:16.761 [DEBUG] [Thread-131989] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:16.761 [DEBUG] [Thread-131989] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:20:16.761 [DEBUG] [Thread-131989] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:16.761 [DEBUG] [Thread-131989] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] Compression: none
2025-09-28T18:20:16.762 [DEBUG] [Thread-131989] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:16.820 [DEBUG] [Thread-131989] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:16.820 [DEBUG] [Thread-131989] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:16.821 [DEBUG] [Thread-131989] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:20:16.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:20:16.821 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:16.875 [DEBUG] [Thread-131989] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:16.876 [DEBUG] [Thread-131989] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:16.876 [DEBUG] [Thread-131989] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:16.876 [DEBUG] [Thread-131989] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:20:16.876 [DEBUG] [Thread-131989] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:16.898 [INFO] [Thread-131989] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:16.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-28T18:20:16.899 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:17.858 [DEBUG] [Thread-131989] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:17.859 [DEBUG] [Thread-131989] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:17.906 [DEBUG] [Thread-131989] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:17.906 [DEBUG] [Thread-131989] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:17.915 [DEBUG] [Thread-131989] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:17.924 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:17.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')
2025-09-28T18:20:17.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-28T18:20:17.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:17.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:17.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:17.949 [DEBUG] [Thread-131989] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:18.036 [DEBUG] [Thread-131991 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:26.701 [DEBUG] [Thread-131992 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:27.952 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:20:27.952 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:20:27.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-28T18:20:28.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 20, 23), 11.23, 46.69, 0.0, 22.39, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:20:28.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:20:23
2025-09-28T18:20:28.618 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:20:28.766 [DEBUG] [Thread-131993] [transport.py] [_log()] starting thread (client mode): 0x2b9df6d0
2025-09-28T18:20:28.766 [DEBUG] [Thread-131993] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:28.786 [DEBUG] [Thread-131993] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:20:28.786 [INFO] [Thread-131993] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:28.789 [DEBUG] [Thread-131993] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] Compression: none
2025-09-28T18:20:28.790 [DEBUG] [Thread-131993] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:28.810 [DEBUG] [Thread-131993] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:28.811 [DEBUG] [Thread-131993] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:28.811 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:20:28.812 [DEBUG] [Thread-131993] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:20:28.813 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:28.814 [DEBUG] [Thread-131993] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:28.814 [DEBUG] [Thread-131993] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:28.815 [DEBUG] [Thread-131993] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:28.815 [DEBUG] [Thread-131993] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:20:28.815 [DEBUG] [Thread-131993] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:28.840 [INFO] [Thread-131993] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:28.840 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:29.400 [DEBUG] [Thread-131993] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:29.400 [DEBUG] [Thread-131993] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:29.401 [DEBUG] [Thread-131993] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:20:29.441 [DEBUG] [Thread-131993] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:29.442 [DEBUG] [Thread-131993] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:29.445 [DEBUG] [Thread-131993] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:29.456 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:29.456 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:20:29.458 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:20:29.460 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:20:29.465 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:29.467 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:20:29.467 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:29.467 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:20:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680635 -999.00  +14.00  13.95     51   +4.20 1 1 1 1 1   887    0 8.14 -76.17 ----- 13.9 13.9 195.6 25.2 16.2 -25.5 16.1 -24.1 16.6 -24.6 17.0 -25.9
2025-09-28T18:20:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:20:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:20:29.468 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680635
2025-09-28T18:20:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:20:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:20:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:20:29.469 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:20:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:20:29.470 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:20:23', tmtdew=11.23, humidity=46.69, cloud=0.0, wind=22.39, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:20:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:20:29.470 [DEBUG] [Thread-131993] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:29.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-28T18:20:29.567 [DEBUG] [Thread-131996] [transport.py] [_log()] starting thread (client mode): 0x2e3c17b0
2025-09-28T18:20:29.567 [DEBUG] [Thread-131996] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:29.583 [DEBUG] [Thread-131996] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:20:29.583 [INFO] [Thread-131996] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:29.590 [DEBUG] [Thread-131996] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] Compression: none
2025-09-28T18:20:29.591 [DEBUG] [Thread-131996] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:29.646 [DEBUG] [Thread-131996] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:29.646 [DEBUG] [Thread-131996] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:29.646 [DEBUG] [Thread-131996] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:20:29.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:20:29.647 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:29.704 [DEBUG] [Thread-131996] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:29.704 [DEBUG] [Thread-131996] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:29.704 [DEBUG] [Thread-131996] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:29.704 [DEBUG] [Thread-131996] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:20:29.704 [DEBUG] [Thread-131996] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:29.723 [INFO] [Thread-131996] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:29.723 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:20:29.724 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:30.729 [DEBUG] [Thread-131996] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:30.730 [DEBUG] [Thread-131996] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:30.777 [DEBUG] [Thread-131996] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:30.777 [DEBUG] [Thread-131996] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:30.786 [DEBUG] [Thread-131996] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:30.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:30.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-28T18:20:30.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-28T18:20:30.812 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:30.812 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:30.812 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:30.820 [DEBUG] [Thread-131996] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:33.065 [DEBUG] [Thread-131998 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:36.452 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:36.453 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:40.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:20:40.823 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:20:40.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-28T18:20:41.402 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 20, 23), 11.23, 46.69, 0.0, 22.39, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:20:41.403 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:20:23
2025-09-28T18:20:41.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:20:41.661 [DEBUG] [Thread-131999] [transport.py] [_log()] starting thread (client mode): 0x2b9dd0f0
2025-09-28T18:20:41.661 [DEBUG] [Thread-131999] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:41.681 [DEBUG] [Thread-131999] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:20:41.682 [INFO] [Thread-131999] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:41.685 [DEBUG] [Thread-131999] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] Compression: none
2025-09-28T18:20:41.686 [DEBUG] [Thread-131999] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:41.704 [DEBUG] [Thread-131999] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:41.705 [DEBUG] [Thread-131999] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:41.706 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:20:41.706 [DEBUG] [Thread-131999] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:20:41.707 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:41.708 [DEBUG] [Thread-131999] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:41.709 [DEBUG] [Thread-131999] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:41.709 [DEBUG] [Thread-131999] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:41.709 [DEBUG] [Thread-131999] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:20:41.709 [DEBUG] [Thread-131999] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:41.732 [INFO] [Thread-131999] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:41.733 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:42.354 [DEBUG] [Thread-131999] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:42.354 [DEBUG] [Thread-131999] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:42.355 [DEBUG] [Thread-131999] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:20:42.395 [DEBUG] [Thread-131999] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:42.395 [DEBUG] [Thread-131999] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:42.398 [DEBUG] [Thread-131999] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:42.410 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:42.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:20:42.412 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:20:42.413 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:20:42.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:42.421 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:20:42.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:42.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680635 -999.00  +14.00  13.95     51   +4.20 1 1 1 1 1   887    0 8.14 -76.17 ----- 13.9 13.9 195.6 25.2 16.2 -25.5 16.1 -24.1 16.6 -24.6 17.0 -25.9
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680635
2025-09-28T18:20:42.422 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:20:42.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:20:42.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:20:42.423 [DEBUG] [Thread-131999] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:42.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:20:42.423 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:20:42.424 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:20:23', tmtdew=11.23, humidity=46.69, cloud=0.0, wind=22.39, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:20:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:20:42.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-28T18:20:42.519 [DEBUG] [Thread-132002] [transport.py] [_log()] starting thread (client mode): 0x2b9df5b0
2025-09-28T18:20:42.519 [DEBUG] [Thread-132002] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:42.533 [DEBUG] [Thread-132002] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:20:42.533 [INFO] [Thread-132002] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:20:42.541 [DEBUG] [Thread-132002] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:42.541 [DEBUG] [Thread-132002] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:20:42.541 [DEBUG] [Thread-132002] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:42.541 [DEBUG] [Thread-132002] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] Compression: none
2025-09-28T18:20:42.542 [DEBUG] [Thread-132002] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:42.599 [DEBUG] [Thread-132002] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:42.599 [DEBUG] [Thread-132002] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:42.600 [DEBUG] [Thread-132002] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:20:42.600 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:20:42.601 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:42.655 [DEBUG] [Thread-132002] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:42.656 [DEBUG] [Thread-132002] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:42.656 [DEBUG] [Thread-132002] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:42.656 [DEBUG] [Thread-132002] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:20:42.656 [DEBUG] [Thread-132002] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:42.675 [INFO] [Thread-132002] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:42.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-28T18:20:42.677 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:43.621 [DEBUG] [Thread-132002] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:43.621 [DEBUG] [Thread-132002] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:43.669 [DEBUG] [Thread-132002] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:43.669 [DEBUG] [Thread-132002] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:43.678 [DEBUG] [Thread-132002] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:43.687 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:43.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-28T18:20: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-28T18:20:43.704 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:43.704 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:43.705 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:43.712 [DEBUG] [Thread-132002] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:48.108 [DEBUG] [Thread-132004 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:20:53.715 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:20:53.715 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:20:53.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-28T18:20:54.291 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 20, 23), 11.23, 46.69, 0.0, 22.39, 13.98, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:20:54.292 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:20:23
2025-09-28T18:20:54.401 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:20:54.549 [DEBUG] [Thread-132005] [transport.py] [_log()] starting thread (client mode): 0x2b9e5cf0
2025-09-28T18:20:54.549 [DEBUG] [Thread-132005] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:54.569 [DEBUG] [Thread-132005] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:20:54.569 [INFO] [Thread-132005] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:54.571 [DEBUG] [Thread-132005] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] Compression: none
2025-09-28T18:20:54.572 [DEBUG] [Thread-132005] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:54.589 [DEBUG] [Thread-132005] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:54.589 [DEBUG] [Thread-132005] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:54.590 [DEBUG] [Thread-132005] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:20:54.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:20:54.590 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:54.591 [DEBUG] [Thread-132005] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:54.592 [DEBUG] [Thread-132005] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:54.592 [DEBUG] [Thread-132005] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:54.592 [DEBUG] [Thread-132005] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:20:54.592 [DEBUG] [Thread-132005] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:54.616 [INFO] [Thread-132005] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:54.617 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:55.218 [DEBUG] [Thread-132005] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:55.218 [DEBUG] [Thread-132005] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:55.219 [DEBUG] [Thread-132005] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:20:55.259 [DEBUG] [Thread-132005] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:55.259 [DEBUG] [Thread-132005] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:55.263 [DEBUG] [Thread-132005] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:55.269 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:55.270 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:20:55.272 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:20:55.273 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:20:55.278 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:55.279 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:20:55.280 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:55.280 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:55.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:20:55.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680982 -999.00  +14.00  11.04     51   +4.20 1 1 1 1 1   887    0 7.95 -80.33 ----- 11.0 11.0 209.9 18.6 16.3 -25.6 16.1 -24.3 16.6 -24.9 16.9 -26.2
2025-09-28T18:20:55.280 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:20:55.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:20:55.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680982
2025-09-28T18:20:55.281 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:20:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:20:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:20:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:20:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:20:55.282 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:20:23', tmtdew=11.23, humidity=46.69, cloud=0.0, wind=22.39, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:20:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:20:55.282 [DEBUG] [Thread-132005] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:20:55.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-28T18:20:55.376 [DEBUG] [Thread-132008] [transport.py] [_log()] starting thread (client mode): 0x2b9dee90
2025-09-28T18:20:55.376 [DEBUG] [Thread-132008] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:20:55.391 [DEBUG] [Thread-132008] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:20:55.391 [INFO] [Thread-132008] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:20:55.398 [DEBUG] [Thread-132008] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:20:55.398 [DEBUG] [Thread-132008] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:20:55.398 [DEBUG] [Thread-132008] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] client lang: <none>
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] server lang: <none>
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] kex follows: False
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] Compression: none
2025-09-28T18:20:55.399 [DEBUG] [Thread-132008] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:20:55.455 [DEBUG] [Thread-132008] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:20:55.456 [DEBUG] [Thread-132008] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:20:55.456 [DEBUG] [Thread-132008] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:20:55.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:20:55.457 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:20:55.512 [DEBUG] [Thread-132008] [transport.py] [_log()] userauth is OK
2025-09-28T18:20:55.512 [DEBUG] [Thread-132008] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:20:55.512 [DEBUG] [Thread-132008] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:20:55.512 [DEBUG] [Thread-132008] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:20:55.512 [DEBUG] [Thread-132008] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:20:55.530 [INFO] [Thread-132008] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:20:55.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-28T18:20:55.531 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:20:56.463 [DEBUG] [Thread-132008] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:20:56.463 [DEBUG] [Thread-132008] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:20:56.511 [DEBUG] [Thread-132008] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:20:56.511 [DEBUG] [Thread-132008] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:20:56.519 [DEBUG] [Thread-132008] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:20:56.526 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:20:56.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-28T18:20:56.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-28T18:20:56.542 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:20:56.542 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:20:56.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:20:56.550 [DEBUG] [Thread-132008] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:03.136 [DEBUG] [Thread-132010 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:06.553 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:21:06.553 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:21:06.556 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:21:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 20, 55), 11.18, 46.84, 0.0, 22.37, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:21:07.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:20:55
2025-09-28T18:21:07.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:21:07.371 [DEBUG] [Thread-132011] [transport.py] [_log()] starting thread (client mode): 0x2b9dff40
2025-09-28T18:21:07.371 [DEBUG] [Thread-132011] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:07.387 [DEBUG] [Thread-132011] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:21:07.387 [INFO] [Thread-132011] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] Compression: none
2025-09-28T18:21:07.390 [DEBUG] [Thread-132011] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:07.404 [DEBUG] [Thread-132011] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:07.404 [DEBUG] [Thread-132011] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:07.404 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:21:07.405 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:21:07.405 [DEBUG] [Thread-132011] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:07.414 [INFO] [Thread-132011] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:07.415 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:08.057 [DEBUG] [Thread-132011] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:08.057 [DEBUG] [Thread-132011] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:08.058 [DEBUG] [Thread-132011] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:21:08.099 [DEBUG] [Thread-132011] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:08.099 [DEBUG] [Thread-132011] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:08.102 [DEBUG] [Thread-132011] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:08.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:08.113 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:21:08.115 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:21:08.117 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:21:08.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:08.124 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:21:08.124 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:08.124 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:08.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:21:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680982 -999.00  +14.00  11.04     51   +4.20 1 1 1 1 1   887    0 7.95 -80.33 ----- 11.0 11.0 209.9 18.6 16.3 -25.6 16.1 -24.3 16.6 -24.9 16.9 -26.2
2025-09-28T18:21:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:21:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:21:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680982
2025-09-28T18:21:08.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:21:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:21:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:21:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:21:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:21:08.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:20:55', tmtdew=11.18, humidity=46.84, cloud=0.0, wind=22.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:20:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:21:08.126 [DEBUG] [Thread-132011] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:08.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-28T18:21:08.222 [DEBUG] [Thread-132014] [transport.py] [_log()] starting thread (client mode): 0x2b9aba30
2025-09-28T18:21:08.222 [DEBUG] [Thread-132014] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:08.238 [DEBUG] [Thread-132014] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:21:08.238 [INFO] [Thread-132014] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:08.246 [DEBUG] [Thread-132014] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:08.247 [DEBUG] [Thread-132014] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:08.247 [DEBUG] [Thread-132014] [transport.py] [_log()] Compression: none
2025-09-28T18:21:08.247 [DEBUG] [Thread-132014] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:08.308 [DEBUG] [Thread-132014] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:08.308 [DEBUG] [Thread-132014] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:08.309 [DEBUG] [Thread-132014] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:21:08.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:21:08.310 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:08.364 [DEBUG] [Thread-132014] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:08.364 [DEBUG] [Thread-132014] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:08.364 [DEBUG] [Thread-132014] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:08.364 [DEBUG] [Thread-132014] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:21:08.364 [DEBUG] [Thread-132014] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:08.383 [INFO] [Thread-132014] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:08.383 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:21:08.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:09.351 [DEBUG] [Thread-132014] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:09.351 [DEBUG] [Thread-132014] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:09.399 [DEBUG] [Thread-132014] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:09.399 [DEBUG] [Thread-132014] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:09.408 [DEBUG] [Thread-132014] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:09.417 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:09.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-28T18:21: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') -> 00000000
2025-09-28T18:21:09.434 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:09.434 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:09.434 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:09.442 [DEBUG] [Thread-132014] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:18.180 [DEBUG] [Thread-132016 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:19.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:21:19.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:21:19.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-28T18:21:20.012 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 20, 55), 11.18, 46.84, 0.0, 22.37, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:21:20.013 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:20:55
2025-09-28T18:21:20.121 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:21:20.268 [DEBUG] [Thread-132017] [transport.py] [_log()] starting thread (client mode): 0x2b9a8c70
2025-09-28T18:21:20.268 [DEBUG] [Thread-132017] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:20.290 [DEBUG] [Thread-132017] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:21:20.290 [INFO] [Thread-132017] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:21:20.294 [DEBUG] [Thread-132017] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:20.294 [DEBUG] [Thread-132017] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:21:20.294 [DEBUG] [Thread-132017] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:20.295 [DEBUG] [Thread-132017] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:20.296 [DEBUG] [Thread-132017] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:20.296 [DEBUG] [Thread-132017] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:20.296 [DEBUG] [Thread-132017] [transport.py] [_log()] Compression: none
2025-09-28T18:21:20.296 [DEBUG] [Thread-132017] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:20.314 [DEBUG] [Thread-132017] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:20.314 [DEBUG] [Thread-132017] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:20.315 [DEBUG] [Thread-132017] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:21:20.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:21:20.316 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:20.317 [DEBUG] [Thread-132017] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:20.317 [DEBUG] [Thread-132017] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:20.317 [DEBUG] [Thread-132017] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:20.317 [DEBUG] [Thread-132017] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:21:20.317 [DEBUG] [Thread-132017] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:20.341 [INFO] [Thread-132017] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:20.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:20.991 [DEBUG] [Thread-132017] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:20.991 [DEBUG] [Thread-132017] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:20.992 [DEBUG] [Thread-132017] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:21:21.032 [DEBUG] [Thread-132017] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:21.032 [DEBUG] [Thread-132017] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:21.035 [DEBUG] [Thread-132017] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:21.047 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:21.047 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:21:21.049 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:21:21.050 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:21:21.056 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:21.058 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:21:21.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:21.058 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:21:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.680982 -999.00  +14.00  11.04     51   +4.20 1 1 1 1 1   887    0 7.95 -80.33 ----- 11.0 11.0 209.9 18.6 16.3 -25.6 16.1 -24.3 16.6 -24.9 16.9 -26.2
2025-09-28T18:21:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:21:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:21:21.059 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.680982
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:21:21.060 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:20:55', tmtdew=11.18, humidity=46.84, cloud=0.0, wind=22.37, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:20:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:21:21.061 [DEBUG] [Thread-132017] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:21.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-28T18:21:21.155 [DEBUG] [Thread-132020] [transport.py] [_log()] starting thread (client mode): 0x2b9a8d90
2025-09-28T18:21:21.155 [DEBUG] [Thread-132020] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:21.170 [DEBUG] [Thread-132020] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:21:21.170 [INFO] [Thread-132020] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:21:21.177 [DEBUG] [Thread-132020] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:21.178 [DEBUG] [Thread-132020] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] Compression: none
2025-09-28T18:21:21.179 [DEBUG] [Thread-132020] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:21.236 [DEBUG] [Thread-132020] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:21.237 [DEBUG] [Thread-132020] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:21.237 [DEBUG] [Thread-132020] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:21:21.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:21:21.238 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:21.292 [DEBUG] [Thread-132020] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:21.292 [DEBUG] [Thread-132020] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:21.292 [DEBUG] [Thread-132020] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:21.293 [DEBUG] [Thread-132020] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:21:21.293 [DEBUG] [Thread-132020] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:21.316 [INFO] [Thread-132020] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:21.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-28T18:21:21.317 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:22.271 [DEBUG] [Thread-132020] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:22.271 [DEBUG] [Thread-132020] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:22.319 [DEBUG] [Thread-132020] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:22.319 [DEBUG] [Thread-132020] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:22.328 [DEBUG] [Thread-132020] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:22.337 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21: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')
2025-09-28T18:21:22.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-28T18:21:22.354 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:22.355 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:22.355 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:22.363 [DEBUG] [Thread-132020] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:26.752 [DEBUG] [Thread-132022 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:32.365 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:21:32.366 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:21:32.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-28T18:21:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 21, 27), 11.14, 46.97, 0.0, 23.86, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:21:32.934 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:21:27
2025-09-28T18:21:33.043 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:21:33.191 [DEBUG] [Thread-132023] [transport.py] [_log()] starting thread (client mode): 0x2b9a81c0
2025-09-28T18:21:33.192 [DEBUG] [Thread-132023] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:33.211 [DEBUG] [Thread-132023] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:21:33.211 [INFO] [Thread-132023] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:21:33.214 [DEBUG] [Thread-132023] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:33.215 [DEBUG] [Thread-132023] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:33.216 [DEBUG] [Thread-132023] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:33.216 [DEBUG] [Thread-132023] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:33.216 [DEBUG] [Thread-132023] [transport.py] [_log()] Compression: none
2025-09-28T18:21:33.216 [DEBUG] [Thread-132023] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:33.223 [DEBUG] [Thread-132025 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:33.234 [DEBUG] [Thread-132023] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:33.235 [DEBUG] [Thread-132023] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:33.236 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:21:33.236 [DEBUG] [Thread-132023] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:21:33.237 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:33.238 [DEBUG] [Thread-132023] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:33.238 [DEBUG] [Thread-132023] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:33.238 [DEBUG] [Thread-132023] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:33.238 [DEBUG] [Thread-132023] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:21:33.239 [DEBUG] [Thread-132023] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:33.263 [INFO] [Thread-132023] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:33.263 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:33.905 [DEBUG] [Thread-132023] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:33.905 [DEBUG] [Thread-132023] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:33.906 [DEBUG] [Thread-132023] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:21:33.946 [DEBUG] [Thread-132023] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:33.947 [DEBUG] [Thread-132023] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:33.950 [DEBUG] [Thread-132023] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:33.961 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:33.961 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:21:33.963 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:21:33.965 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:21:33.971 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:33.973 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:21:33.973 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:33.973 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:33.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:21:33.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.681330 -999.00  +14.00  14.76     51   +4.20 1 1 1 1 1   887    0 7.87 -79.44 ----- 14.8 14.8 199.7 18.2 16.3 -25.5 16.1 -25.0 16.6 -24.6 17.0 -26.2
2025-09-28T18:21:33.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:21:33.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:21:33.974 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.681330
2025-09-28T18:21:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:21:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:21:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:21:33.975 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:21:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:21:33.976 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:21:27', tmtdew=11.14, humidity=46.97, cloud=0.0, wind=23.86, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:21:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:21:33.976 [DEBUG] [Thread-132023] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:34.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-28T18:21:34.083 [DEBUG] [Thread-132027] [transport.py] [_log()] starting thread (client mode): 0x2b9aafb0
2025-09-28T18:21:34.083 [DEBUG] [Thread-132027] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:34.098 [DEBUG] [Thread-132027] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:21:34.099 [INFO] [Thread-132027] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] Compression: none
2025-09-28T18:21:34.106 [DEBUG] [Thread-132027] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:34.163 [DEBUG] [Thread-132027] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:34.163 [DEBUG] [Thread-132027] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:34.163 [DEBUG] [Thread-132027] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:21:34.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:21:34.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:34.220 [DEBUG] [Thread-132027] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:34.220 [DEBUG] [Thread-132027] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:34.220 [DEBUG] [Thread-132027] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:34.220 [DEBUG] [Thread-132027] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:21:34.220 [DEBUG] [Thread-132027] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:34.234 [INFO] [Thread-132027] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:34.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-28T18:21:34.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:35.181 [DEBUG] [Thread-132027] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:35.181 [DEBUG] [Thread-132027] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:35.229 [DEBUG] [Thread-132027] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:35.229 [DEBUG] [Thread-132027] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:35.238 [DEBUG] [Thread-132027] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:35.247 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:35.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-28T18:21:35.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-28T18:21:35.265 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:35.265 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:35.265 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:35.273 [DEBUG] [Thread-132027] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:36.596 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:36.597 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:45.276 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:21:45.276 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:21:45.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-28T18:21:45.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 21, 27), 11.14, 46.97, 0.0, 23.86, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:21:45.840 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:21:27
2025-09-28T18:21:45.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:21:46.098 [DEBUG] [Thread-132029] [transport.py] [_log()] starting thread (client mode): 0x2b9aba60
2025-09-28T18:21:46.098 [DEBUG] [Thread-132029] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:46.117 [DEBUG] [Thread-132029] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:21:46.117 [INFO] [Thread-132029] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] Compression: none
2025-09-28T18:21:46.121 [DEBUG] [Thread-132029] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:46.139 [DEBUG] [Thread-132029] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:46.140 [DEBUG] [Thread-132029] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:46.140 [DEBUG] [Thread-132029] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:21:46.140 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:21:46.141 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:46.142 [DEBUG] [Thread-132029] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:46.142 [DEBUG] [Thread-132029] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:46.142 [DEBUG] [Thread-132029] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:46.142 [DEBUG] [Thread-132029] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:21:46.142 [DEBUG] [Thread-132029] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:46.167 [INFO] [Thread-132029] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:46.167 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:46.823 [DEBUG] [Thread-132029] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:46.824 [DEBUG] [Thread-132029] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:46.824 [DEBUG] [Thread-132029] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:21:46.864 [DEBUG] [Thread-132029] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:46.864 [DEBUG] [Thread-132029] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:46.867 [DEBUG] [Thread-132029] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:46.879 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:46.880 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:21:46.881 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:21:46.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:21:46.887 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:46.888 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:21:46.889 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.681330 -999.00  +14.00  14.76     51   +4.20 1 1 1 1 1   887    0 7.87 -79.44 ----- 14.8 14.8 199.7 18.2 16.3 -25.5 16.1 -25.0 16.6 -24.6 17.0 -26.2
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:21:46.889 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.681330
2025-09-28T18:21:46.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:21:46.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:21:46.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:21:46.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:21:46.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:21:46.891 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:21:27', tmtdew=11.14, humidity=46.97, cloud=0.0, wind=23.86, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:21:06.912', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:21:46.891 [DEBUG] [Thread-132029] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:46.977 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:21:46.988 [DEBUG] [Thread-132032] [transport.py] [_log()] starting thread (client mode): 0x2b9aaf20
2025-09-28T18:21:46.989 [DEBUG] [Thread-132032] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:47.004 [DEBUG] [Thread-132032] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:21:47.004 [INFO] [Thread-132032] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:21:47.011 [DEBUG] [Thread-132032] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] Compression: none
2025-09-28T18:21:47.012 [DEBUG] [Thread-132032] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:47.072 [DEBUG] [Thread-132032] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:47.072 [DEBUG] [Thread-132032] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:47.073 [DEBUG] [Thread-132032] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:21:47.073 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:21:47.074 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:47.128 [DEBUG] [Thread-132032] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:47.128 [DEBUG] [Thread-132032] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:47.128 [DEBUG] [Thread-132032] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:47.128 [DEBUG] [Thread-132032] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:21:47.128 [DEBUG] [Thread-132032] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:47.147 [INFO] [Thread-132032] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:47.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-28T18:21:47.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:48.131 [DEBUG] [Thread-132032] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:48.131 [DEBUG] [Thread-132032] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:48.179 [DEBUG] [Thread-132032] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:48.179 [DEBUG] [Thread-132032] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:48.188 [DEBUG] [Thread-132032] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:48.197 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:48.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-28T18:21:48.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-28T18:21:48.214 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:48.214 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:48.215 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:48.222 [DEBUG] [Thread-132032] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:48.251 [DEBUG] [Thread-132034 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:21:58.225 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:21:58.225 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:21:58.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-28T18:21:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 21, 27), 11.14, 46.97, 0.0, 23.86, 13.91, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:21:58.785 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:21:27
2025-09-28T18:21:58.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:21:59.041 [DEBUG] [Thread-132035] [transport.py] [_log()] starting thread (client mode): 0x2b9aa710
2025-09-28T18:21:59.041 [DEBUG] [Thread-132035] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:59.060 [DEBUG] [Thread-132035] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:21:59.060 [INFO] [Thread-132035] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:59.063 [DEBUG] [Thread-132035] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] Compression: none
2025-09-28T18:21:59.064 [DEBUG] [Thread-132035] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:59.079 [DEBUG] [Thread-132035] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:59.080 [DEBUG] [Thread-132035] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:59.080 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:21:59.081 [DEBUG] [Thread-132035] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:21:59.081 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:59.082 [DEBUG] [Thread-132035] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:59.082 [DEBUG] [Thread-132035] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:59.082 [DEBUG] [Thread-132035] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:59.082 [DEBUG] [Thread-132035] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:21:59.082 [DEBUG] [Thread-132035] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:59.096 [INFO] [Thread-132035] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:59.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:21:59.669 [DEBUG] [Thread-132035] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:21:59.669 [DEBUG] [Thread-132035] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:21:59.669 [DEBUG] [Thread-132035] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:21:59.710 [DEBUG] [Thread-132035] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:21:59.710 [DEBUG] [Thread-132035] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:21:59.712 [DEBUG] [Thread-132035] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:21:59.724 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:21:59.725 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:21:59.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:21:59.726 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:21:59.728 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:21:59.729 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:21:59.729 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.681677 -999.00  +14.00  20.45     51   +4.20 1 1 1 1 1   887    0 7.71 -84.67 ----- 20.4 20.4 196.4 23.8 16.2 -25.7 16.0 -25.3 16.6 -24.5 16.9 -26.3
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.681677
2025-09-28T18:21:59.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:21:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:21:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:21:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:21:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:21:59.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:21:27', tmtdew=11.14, humidity=46.97, cloud=0.0, wind=23.86, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:21:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:21:59.730 [DEBUG] [Thread-132035] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:21:59.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-28T18:21:59.817 [DEBUG] [Thread-132038] [transport.py] [_log()] starting thread (client mode): 0x2b9aa050
2025-09-28T18:21:59.817 [DEBUG] [Thread-132038] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:21:59.832 [DEBUG] [Thread-132038] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:21:59.832 [INFO] [Thread-132038] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] client lang: <none>
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] server lang: <none>
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] kex follows: False
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] Compression: none
2025-09-28T18:21:59.840 [DEBUG] [Thread-132038] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:21:59.898 [DEBUG] [Thread-132038] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:21:59.899 [DEBUG] [Thread-132038] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:21:59.899 [DEBUG] [Thread-132038] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:21:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:21:59.899 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:21:59.956 [DEBUG] [Thread-132038] [transport.py] [_log()] userauth is OK
2025-09-28T18:21:59.956 [DEBUG] [Thread-132038] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:21:59.956 [DEBUG] [Thread-132038] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:21:59.956 [DEBUG] [Thread-132038] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:21:59.956 [DEBUG] [Thread-132038] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:21:59.971 [INFO] [Thread-132038] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:21:59.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-28T18:21:59.971 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:22:00.963 [DEBUG] [Thread-132038] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:22:00.963 [DEBUG] [Thread-132038] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:22:01.012 [DEBUG] [Thread-132038] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:22:01.012 [DEBUG] [Thread-132038] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:22:01.020 [DEBUG] [Thread-132038] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:22:01.027 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:22:01.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-28T18:22:01.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-28T18:22:01.043 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:22:01.043 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:22:01.043 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:22:01.051 [DEBUG] [Thread-132038] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:22:03.287 [DEBUG] [Thread-132040 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:11.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:22:11.054 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:22:11.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-28T18:22:11.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 21, 59), 11.1, 47.07, 0.0, 19.8, 13.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:22:11.628 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:21:59
2025-09-28T18:22:11.737 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:22:11.886 [DEBUG] [Thread-132041] [transport.py] [_log()] starting thread (client mode): 0x2b9df1c0
2025-09-28T18:22:11.886 [DEBUG] [Thread-132041] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:22:11.901 [DEBUG] [Thread-132041] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:22:11.901 [INFO] [Thread-132041] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:22:11.904 [DEBUG] [Thread-132041] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:22:11.904 [DEBUG] [Thread-132041] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:22:11.904 [DEBUG] [Thread-132041] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:22:11.904 [DEBUG] [Thread-132041] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:11.904 [DEBUG] [Thread-132041] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] client lang: <none>
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] server lang: <none>
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] kex follows: False
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] Compression: none
2025-09-28T18:22:11.905 [DEBUG] [Thread-132041] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:22:11.923 [DEBUG] [Thread-132041] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:22:11.924 [DEBUG] [Thread-132041] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:22:11.924 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:22:11.925 [DEBUG] [Thread-132041] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:22:11.926 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:22:11.927 [DEBUG] [Thread-132041] [transport.py] [_log()] userauth is OK
2025-09-28T18:22:11.927 [DEBUG] [Thread-132041] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:22:11.927 [DEBUG] [Thread-132041] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:22:11.928 [DEBUG] [Thread-132041] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:22:11.928 [DEBUG] [Thread-132041] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:22:11.946 [INFO] [Thread-132041] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:22:11.947 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:22:12.589 [DEBUG] [Thread-132041] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:22:12.589 [DEBUG] [Thread-132041] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:22:12.589 [DEBUG] [Thread-132041] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:22:12.630 [DEBUG] [Thread-132041] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:22:12.631 [DEBUG] [Thread-132041] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:22:12.634 [DEBUG] [Thread-132041] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:22:12.644 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:22:12.645 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:22:12.647 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:22:12.649 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:22:12.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:22:12.655 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:22:12.656 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:22:12.656 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:22:12.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:22:12.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.681677 -999.00  +14.00  20.45     51   +4.20 1 1 1 1 1   887    0 7.71 -84.67 ----- 20.4 20.4 196.4 23.8 16.2 -25.7 16.0 -25.3 16.6 -24.5 16.9 -26.3
2025-09-28T18:22:12.656 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:22:12.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:22:12.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.681677
2025-09-28T18:22:12.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:22:12.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:22:12.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:22:12.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:22:12.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:22:12.658 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:21:59', tmtdew=11.1, humidity=47.07, cloud=0.0, wind=19.8, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:21:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:22:12.658 [DEBUG] [Thread-132041] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:22:12.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-28T18:22:12.754 [DEBUG] [Thread-132044] [transport.py] [_log()] starting thread (client mode): 0x2b91eaa0
2025-09-28T18:22:12.755 [DEBUG] [Thread-132044] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:22:12.769 [DEBUG] [Thread-132044] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:22:12.769 [INFO] [Thread-132044] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:22:12.776 [DEBUG] [Thread-132044] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:22:12.776 [DEBUG] [Thread-132044] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] client lang: <none>
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] server lang: <none>
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] kex follows: False
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] Compression: none
2025-09-28T18:22:12.777 [DEBUG] [Thread-132044] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:22:12.836 [DEBUG] [Thread-132044] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:22:12.836 [DEBUG] [Thread-132044] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:22:12.836 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:22:12.837 [DEBUG] [Thread-132044] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:22:12.838 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:22:12.892 [DEBUG] [Thread-132044] [transport.py] [_log()] userauth is OK
2025-09-28T18:22:12.892 [DEBUG] [Thread-132044] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:22:12.893 [DEBUG] [Thread-132044] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:22:12.893 [DEBUG] [Thread-132044] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:22:12.893 [DEBUG] [Thread-132044] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:22:12.912 [INFO] [Thread-132044] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:22:12.912 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:22:12.912 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:22:13.857 [DEBUG] [Thread-132044] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:22:13.857 [DEBUG] [Thread-132044] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:22:13.905 [DEBUG] [Thread-132044] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:22:13.905 [DEBUG] [Thread-132044] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:22:13.914 [DEBUG] [Thread-132044] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:22:13.923 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:22:13.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-28T18:22:13.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-28T18:22:13.941 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:22:13.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:22:13.942 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:22:13.949 [DEBUG] [Thread-132044] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:22:18.330 [DEBUG] [Thread-132046 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:23.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:22:23.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:22:23.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:22:24.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 21, 59), 11.1, 47.07, 0.0, 19.8, 13.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:22:24.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:21:59
2025-09-28T18:22:24.617 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:22:24.764 [DEBUG] [Thread-132047] [transport.py] [_log()] starting thread (client mode): 0x2b9deec0
2025-09-28T18:22:24.765 [DEBUG] [Thread-132047] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:22:24.784 [DEBUG] [Thread-132047] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:22:24.784 [INFO] [Thread-132047] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] client lang: <none>
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] server lang: <none>
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] kex follows: False
2025-09-28T18:22:24.788 [DEBUG] [Thread-132047] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] Compression: none
2025-09-28T18:22:24.789 [DEBUG] [Thread-132047] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:22:24.807 [DEBUG] [Thread-132047] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:22:24.808 [DEBUG] [Thread-132047] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:22:24.808 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:22:24.809 [DEBUG] [Thread-132047] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:22:24.810 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:22:24.811 [DEBUG] [Thread-132047] [transport.py] [_log()] userauth is OK
2025-09-28T18:22:24.811 [DEBUG] [Thread-132047] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:22:24.811 [DEBUG] [Thread-132047] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:22:24.812 [DEBUG] [Thread-132047] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:22:24.812 [DEBUG] [Thread-132047] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:22:24.832 [INFO] [Thread-132047] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:22:24.832 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:22:25.439 [DEBUG] [Thread-132047] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:22:25.439 [DEBUG] [Thread-132047] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:22:25.439 [DEBUG] [Thread-132047] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:22:25.480 [DEBUG] [Thread-132047] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:22:25.481 [DEBUG] [Thread-132047] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:22:25.484 [DEBUG] [Thread-132047] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:22:25.496 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:22:25.496 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:22:25.498 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:22:25.499 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:22:25.505 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:22:25.506 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:22:25.507 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:22:25.507 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:22:25.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:22:25.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.681677 -999.00  +14.00  20.45     51   +4.20 1 1 1 1 1   887    0 7.71 -84.67 ----- 20.4 20.4 196.4 23.8 16.2 -25.7 16.0 -25.3 16.6 -24.5 16.9 -26.3
2025-09-28T18:22:25.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:22:25.507 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:22:25.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.681677
2025-09-28T18:22:25.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:22:25.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:22:25.508 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:22:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:22:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:22:25.509 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:21:59', tmtdew=11.1, humidity=47.07, cloud=0.0, wind=19.8, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:21:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:22:25.509 [DEBUG] [Thread-132047] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:22:25.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-28T18:22:26.809 [DEBUG] [Thread-132050 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:33.361 [DEBUG] [Thread-132051 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:36.736 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:36.737 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:22:48.391 [DEBUG] [Thread-132052 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:03.422 [DEBUG] [Thread-132053 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:18.453 [DEBUG] [Thread-132054 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:26.864 [DEBUG] [Thread-132055 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:33.482 [DEBUG] [Thread-132056 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:36.877 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:36.878 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:23:48.509 [DEBUG] [Thread-132057 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:03.540 [DEBUG] [Thread-132058 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:18.570 [DEBUG] [Thread-132059 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:26.918 [DEBUG] [Thread-132060 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:33.602 [DEBUG] [Thread-132061 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:37.018 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:37.019 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:38.843 [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-28T18:24:48.630 [DEBUG] [Thread-132062 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:24:48.853 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:24:48.853 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:24:48.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-28T18:24:49.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 24, 39), 10.64, 48.25, 0.0, 20.1, 13.58, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:24:49.487 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:24:39
2025-09-28T18:24:49.602 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:24:49.754 [DEBUG] [Thread-132063] [transport.py] [_log()] starting thread (client mode): 0x2b9dca90
2025-09-28T18:24:49.754 [DEBUG] [Thread-132063] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:24:49.773 [DEBUG] [Thread-132063] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:24:49.773 [INFO] [Thread-132063] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:24:49.776 [DEBUG] [Thread-132063] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] client lang: <none>
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] server lang: <none>
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] kex follows: False
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] Compression: none
2025-09-28T18:24:49.777 [DEBUG] [Thread-132063] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:24:49.793 [DEBUG] [Thread-132063] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:24:49.793 [DEBUG] [Thread-132063] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:24:49.793 [DEBUG] [Thread-132063] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:24:49.793 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:24:49.794 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:24:49.794 [DEBUG] [Thread-132063] [transport.py] [_log()] userauth is OK
2025-09-28T18:24:49.794 [DEBUG] [Thread-132063] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:24:49.794 [DEBUG] [Thread-132063] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:24:49.794 [DEBUG] [Thread-132063] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:24:49.794 [DEBUG] [Thread-132063] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:24:49.804 [INFO] [Thread-132063] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:24:49.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:24:50.466 [DEBUG] [Thread-132063] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:24:50.466 [DEBUG] [Thread-132063] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:24:50.466 [DEBUG] [Thread-132063] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:24:50.507 [DEBUG] [Thread-132063] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:24:50.507 [DEBUG] [Thread-132063] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:24:50.509 [DEBUG] [Thread-132063] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:24:50.522 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:24:50.522 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:24:50.523 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:24:50.524 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:24:50.526 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:24:50.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:24:50.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.683760 -999.00  +13.70  15.63     53   +4.30 1 1 1 1 1   887    0 7.26 -87.67 ----- 15.6 15.6 194.6 23.6 15.9 -25.4 15.7 -24.1 16.2 -24.5 16.5 -25.7
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:24:50.527 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.683760
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:24:50.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:24:39', tmtdew=10.64, humidity=48.25, cloud=0.0, wind=20.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:24:36.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:24:50.529 [DEBUG] [Thread-132063] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:24:50.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-28T18:25:03.658 [DEBUG] [Thread-132066 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:18.704 [DEBUG] [Thread-132067 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:26.968 [DEBUG] [Thread-132068 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:33.734 [DEBUG] [Thread-132069 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:37.160 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:37.162 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:25:48.762 [DEBUG] [Thread-132070 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:03.791 [DEBUG] [Thread-132071 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:18.816 [DEBUG] [Thread-132072 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:27.021 [DEBUG] [Thread-132073 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:33.845 [DEBUG] [Thread-132074 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:37.305 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:37.306 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:26:48.872 [DEBUG] [Thread-132075 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:02.202 [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-28T18:27:03.901 [DEBUG] [Thread-132076 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:12.213 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:27:12.213 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:27:12.215 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:27:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 26, 47), 10.48, 48.95, 0.0, 22.62, 13.48, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:27:12.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:26:47
2025-09-28T18:27:12.935 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:27:13.082 [DEBUG] [Thread-132077] [transport.py] [_log()] starting thread (client mode): 0x2b9aa800
2025-09-28T18:27:13.083 [DEBUG] [Thread-132077] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:13.098 [DEBUG] [Thread-132077] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:27:13.098 [INFO] [Thread-132077] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:27:13.101 [DEBUG] [Thread-132077] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:13.101 [DEBUG] [Thread-132077] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:27:13.101 [DEBUG] [Thread-132077] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:13.101 [DEBUG] [Thread-132077] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] Compression: none
2025-09-28T18:27:13.102 [DEBUG] [Thread-132077] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:13.118 [DEBUG] [Thread-132077] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:13.119 [DEBUG] [Thread-132077] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:13.119 [DEBUG] [Thread-132077] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:27:13.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:27:13.120 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:13.121 [DEBUG] [Thread-132077] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:13.121 [DEBUG] [Thread-132077] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:13.122 [DEBUG] [Thread-132077] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:13.122 [DEBUG] [Thread-132077] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:27:13.122 [DEBUG] [Thread-132077] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:13.153 [INFO] [Thread-132077] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:13.154 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:13.813 [DEBUG] [Thread-132077] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:13.813 [DEBUG] [Thread-132077] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:13.813 [DEBUG] [Thread-132077] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:27:13.854 [DEBUG] [Thread-132077] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:13.854 [DEBUG] [Thread-132077] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:13.857 [DEBUG] [Thread-132077] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:13.868 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:13.869 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:27:13.871 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:27:13.873 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:27:13.878 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:13.880 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:27:13.880 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:13.880 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:13.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:27:13.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685149 -999.00  +13.60  11.92     53   +4.40 1 1 1 1 1   886    0 7.08 -88.31 ----- 11.9 11.9 204.6 27.0 15.8 -25.4 15.5 -25.0 15.9 -24.8 16.2 -25.8
2025-09-28T18:27:13.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:27:13.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:27:13.881 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685149
2025-09-28T18:27:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:27:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:27:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:27:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:27:13.882 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:27:13.883 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:26:47', tmtdew=10.48, humidity=48.95, cloud=0.0, wind=22.62, temperature=13.48, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:26:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:27:13.883 [DEBUG] [Thread-132077] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:13.967 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:27:13.980 [DEBUG] [Thread-132080] [transport.py] [_log()] starting thread (client mode): 0x2b9aa620
2025-09-28T18:27:13.980 [DEBUG] [Thread-132080] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:13.996 [DEBUG] [Thread-132080] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:27:13.996 [INFO] [Thread-132080] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:27:14.003 [DEBUG] [Thread-132080] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:14.003 [DEBUG] [Thread-132080] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:27:14.003 [DEBUG] [Thread-132080] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:14.003 [DEBUG] [Thread-132080] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] Compression: none
2025-09-28T18:27:14.004 [DEBUG] [Thread-132080] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:14.060 [DEBUG] [Thread-132080] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:14.060 [DEBUG] [Thread-132080] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:14.061 [DEBUG] [Thread-132080] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:27:14.061 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:27:14.062 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:14.116 [DEBUG] [Thread-132080] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:14.117 [DEBUG] [Thread-132080] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:14.117 [DEBUG] [Thread-132080] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:14.117 [DEBUG] [Thread-132080] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:27:14.117 [DEBUG] [Thread-132080] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:14.137 [INFO] [Thread-132080] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:14.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-28T18:27:14.138 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:15.137 [DEBUG] [Thread-132080] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:15.137 [DEBUG] [Thread-132080] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:15.185 [DEBUG] [Thread-132080] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:15.185 [DEBUG] [Thread-132080] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:15.194 [DEBUG] [Thread-132080] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:15.203 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:15.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-28T18:27:15.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-28T18:27:15.220 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:15.220 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:15.220 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:15.228 [DEBUG] [Thread-132080] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:18.926 [DEBUG] [Thread-132082 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:25.230 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:27:25.231 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:27:25.232 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:27:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 27, 18), 10.47, 48.95, 0.0, 22.5, 13.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:27:25.827 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:27:18
2025-09-28T18:27:25.933 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:27:26.080 [DEBUG] [Thread-132083] [transport.py] [_log()] starting thread (client mode): 0x2b9de710
2025-09-28T18:27:26.080 [DEBUG] [Thread-132083] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:26.100 [DEBUG] [Thread-132083] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:27:26.100 [INFO] [Thread-132083] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:26.103 [DEBUG] [Thread-132083] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] Compression: none
2025-09-28T18:27:26.104 [DEBUG] [Thread-132083] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:26.122 [DEBUG] [Thread-132083] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:26.123 [DEBUG] [Thread-132083] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:26.124 [DEBUG] [Thread-132083] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:27:26.124 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:27:26.125 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:26.126 [DEBUG] [Thread-132083] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:26.126 [DEBUG] [Thread-132083] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:26.126 [DEBUG] [Thread-132083] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:26.126 [DEBUG] [Thread-132083] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:27:26.127 [DEBUG] [Thread-132083] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:26.147 [INFO] [Thread-132083] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:26.148 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:26.771 [DEBUG] [Thread-132083] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:26.772 [DEBUG] [Thread-132083] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:26.772 [DEBUG] [Thread-132083] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:27:26.812 [DEBUG] [Thread-132083] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:26.812 [DEBUG] [Thread-132083] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:26.815 [DEBUG] [Thread-132083] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:26.826 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:26.827 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:27:26.828 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:27:26.830 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:27:26.834 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:26.836 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:27:26.837 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685149 -999.00  +13.60  11.92     53   +4.40 1 1 1 1 1   886    0 7.08 -88.31 ----- 11.9 11.9 204.6 27.0 15.8 -25.4 15.5 -25.0 15.9 -24.8 16.2 -25.8
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:27:26.837 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685149
2025-09-28T18:27:26.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:27:26.838 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:27:26.839 [DEBUG] [Thread-132083] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:26.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:27:26.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:27:26.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:27:26.839 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:27:18', tmtdew=10.47, humidity=48.95, cloud=0.0, wind=22.5, temperature=13.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:26:36.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:27:26.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-28T18:27:26.931 [DEBUG] [Thread-132086] [transport.py] [_log()] starting thread (client mode): 0x2b91cbe0
2025-09-28T18:27:26.931 [DEBUG] [Thread-132086] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:26.946 [DEBUG] [Thread-132086] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:27:26.946 [INFO] [Thread-132086] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:27:26.954 [DEBUG] [Thread-132086] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:26.954 [DEBUG] [Thread-132086] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:27:26.954 [DEBUG] [Thread-132086] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:26.954 [DEBUG] [Thread-132086] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:26.954 [DEBUG] [Thread-132086] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] Compression: none
2025-09-28T18:27:26.955 [DEBUG] [Thread-132086] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:27.012 [DEBUG] [Thread-132086] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:27.012 [DEBUG] [Thread-132086] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:27.013 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:27:27.013 [DEBUG] [Thread-132086] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:27:27.014 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:27.068 [DEBUG] [Thread-132086] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:27.068 [DEBUG] [Thread-132086] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:27.068 [DEBUG] [Thread-132086] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:27.068 [DEBUG] [Thread-132086] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:27:27.068 [DEBUG] [Thread-132086] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:27.077 [DEBUG] [Thread-132088 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:27.082 [INFO] [Thread-132086] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:27.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-28T18:27:27.082 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:28.066 [DEBUG] [Thread-132086] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:28.067 [DEBUG] [Thread-132086] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:28.114 [DEBUG] [Thread-132086] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:28.114 [DEBUG] [Thread-132086] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:28.123 [DEBUG] [Thread-132086] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:28.132 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:28.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-28T18:27:28.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-28T18:27:28.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:28.149 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:28.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:28.158 [DEBUG] [Thread-132086] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:33.957 [DEBUG] [Thread-132089 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:37.447 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:37.448 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:38.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:27:38.160 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:27:38.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-28T18:27:38.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 27, 18), 10.47, 48.95, 0.0, 22.5, 13.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:27:38.765 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:27:18
2025-09-28T18:27:38.871 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:27:39.021 [DEBUG] [Thread-132090] [transport.py] [_log()] starting thread (client mode): 0x2b9dd630
2025-09-28T18:27:39.021 [DEBUG] [Thread-132090] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:39.040 [DEBUG] [Thread-132090] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:27:39.041 [INFO] [Thread-132090] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:27:39.044 [DEBUG] [Thread-132090] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:39.044 [DEBUG] [Thread-132090] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:27:39.044 [DEBUG] [Thread-132090] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:39.044 [DEBUG] [Thread-132090] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:39.045 [DEBUG] [Thread-132090] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:39.046 [DEBUG] [Thread-132090] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:39.046 [DEBUG] [Thread-132090] [transport.py] [_log()] Compression: none
2025-09-28T18:27:39.046 [DEBUG] [Thread-132090] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:39.064 [DEBUG] [Thread-132090] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:39.064 [DEBUG] [Thread-132090] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:39.065 [DEBUG] [Thread-132090] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:27:39.065 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:27:39.066 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:39.067 [DEBUG] [Thread-132090] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:39.067 [DEBUG] [Thread-132090] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:39.068 [DEBUG] [Thread-132090] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:39.068 [DEBUG] [Thread-132090] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:27:39.068 [DEBUG] [Thread-132090] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:39.104 [INFO] [Thread-132090] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:39.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:39.750 [DEBUG] [Thread-132090] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:39.750 [DEBUG] [Thread-132090] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:39.750 [DEBUG] [Thread-132090] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:27:39.791 [DEBUG] [Thread-132090] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:39.792 [DEBUG] [Thread-132090] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:39.795 [DEBUG] [Thread-132090] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:39.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:39.808 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:27:39.809 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:27:39.811 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:27:39.818 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:39.820 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:27:39.820 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:39.820 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685496 -999.00  +13.60  20.33     53   +4.40 1 1 1 1 1   886    0 7.46 -88.12 ----- 20.3 20.3 198.4 23.0 15.7 -25.2 15.4 -24.3 15.8 -24.7 16.2 -25.9
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685496
2025-09-28T18:27:39.821 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:27:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:27:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:27:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:27:39.822 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:27:39.823 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:27:18', tmtdew=10.47, humidity=48.95, cloud=0.0, wind=22.5, temperature=13.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:27:06.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:27:39.823 [DEBUG] [Thread-132090] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:39.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-28T18:27:39.918 [DEBUG] [Thread-132093] [transport.py] [_log()] starting thread (client mode): 0x2b9def80
2025-09-28T18:27:39.918 [DEBUG] [Thread-132093] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:39.933 [DEBUG] [Thread-132093] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:27:39.933 [INFO] [Thread-132093] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:27:39.941 [DEBUG] [Thread-132093] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:39.941 [DEBUG] [Thread-132093] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:27:39.950 [DEBUG] [Thread-132093] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:39.950 [DEBUG] [Thread-132093] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:39.950 [DEBUG] [Thread-132093] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] Compression: none
2025-09-28T18:27:39.951 [DEBUG] [Thread-132093] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:40.000 [DEBUG] [Thread-132093] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:40.001 [DEBUG] [Thread-132093] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:40.001 [DEBUG] [Thread-132093] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:27:40.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:27:40.002 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:40.056 [DEBUG] [Thread-132093] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:40.057 [DEBUG] [Thread-132093] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:40.057 [DEBUG] [Thread-132093] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:40.057 [DEBUG] [Thread-132093] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:27:40.057 [DEBUG] [Thread-132093] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:40.079 [INFO] [Thread-132093] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:40.080 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:27:40.080 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:41.034 [DEBUG] [Thread-132093] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:41.034 [DEBUG] [Thread-132093] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:41.082 [DEBUG] [Thread-132093] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:41.082 [DEBUG] [Thread-132093] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:41.092 [DEBUG] [Thread-132093] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:41.100 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:41.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-28T18:27:41.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-28T18:27:41.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:41.118 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:41.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:41.126 [DEBUG] [Thread-132093] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:48.997 [DEBUG] [Thread-132095 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:27:51.129 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:27:51.129 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:27:51.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-28T18:27:51.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 27, 18), 10.47, 48.95, 0.0, 22.5, 13.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:27:51.772 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:27:18
2025-09-28T18:27:51.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:27:52.036 [DEBUG] [Thread-132096] [transport.py] [_log()] starting thread (client mode): 0x2b91ded0
2025-09-28T18:27:52.036 [DEBUG] [Thread-132096] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:52.056 [DEBUG] [Thread-132096] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:27:52.056 [INFO] [Thread-132096] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] Compression: none
2025-09-28T18:27:52.059 [DEBUG] [Thread-132096] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:52.074 [DEBUG] [Thread-132096] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:52.074 [DEBUG] [Thread-132096] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:52.074 [DEBUG] [Thread-132096] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:27:52.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:27:52.075 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:52.075 [DEBUG] [Thread-132096] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:52.075 [DEBUG] [Thread-132096] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:52.075 [DEBUG] [Thread-132096] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:52.075 [DEBUG] [Thread-132096] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:27:52.075 [DEBUG] [Thread-132096] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:52.084 [INFO] [Thread-132096] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:52.084 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:52.739 [DEBUG] [Thread-132096] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:52.739 [DEBUG] [Thread-132096] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:52.739 [DEBUG] [Thread-132096] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:27:52.780 [DEBUG] [Thread-132096] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:52.780 [DEBUG] [Thread-132096] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:52.782 [DEBUG] [Thread-132096] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:52.793 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:52.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:27:52.795 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:27:52.796 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:27:52.799 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:52.800 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:27:52.800 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685496 -999.00  +13.60  20.33     53   +4.40 1 1 1 1 1   886    0 7.46 -88.12 ----- 20.3 20.3 198.4 23.0 15.7 -25.2 15.4 -24.3 15.8 -24.7 16.2 -25.9
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685496
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:27:52.800 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:27:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:27:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:27:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:27:52.801 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:27:18', tmtdew=10.47, humidity=48.95, cloud=0.0, wind=22.5, temperature=13.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:27:06.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:27:52.801 [DEBUG] [Thread-132096] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:27:52.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-28T18:27:52.882 [DEBUG] [Thread-132099] [transport.py] [_log()] starting thread (client mode): 0x2b995180
2025-09-28T18:27:52.882 [DEBUG] [Thread-132099] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:27:52.896 [DEBUG] [Thread-132099] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:27:52.896 [INFO] [Thread-132099] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] client lang: <none>
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] server lang: <none>
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] kex follows: False
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] Compression: none
2025-09-28T18:27:52.904 [DEBUG] [Thread-132099] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:27:52.959 [DEBUG] [Thread-132099] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:27:52.959 [DEBUG] [Thread-132099] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:27:52.959 [DEBUG] [Thread-132099] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:27:52.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:27:52.959 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:27:53.016 [DEBUG] [Thread-132099] [transport.py] [_log()] userauth is OK
2025-09-28T18:27:53.016 [DEBUG] [Thread-132099] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:27:53.017 [DEBUG] [Thread-132099] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:27:53.017 [DEBUG] [Thread-132099] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:27:53.017 [DEBUG] [Thread-132099] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:27:53.037 [INFO] [Thread-132099] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:27:53.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-28T18:27:53.038 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:27:54.043 [DEBUG] [Thread-132099] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:27:54.043 [DEBUG] [Thread-132099] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:27:54.091 [DEBUG] [Thread-132099] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:27:54.091 [DEBUG] [Thread-132099] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:27:54.099 [DEBUG] [Thread-132099] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:27:54.108 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:27:54.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-28T18:27:54.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-28T18:27:54.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:27:54.130 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:27:54.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:27:54.138 [DEBUG] [Thread-132099] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:04.044 [DEBUG] [Thread-132101 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:04.140 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:28:04.141 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:28:04.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-28T18:28:04.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 27, 50), 10.43, 49.1, 0.0, 24.84, 13.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:28:04.738 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:27:50
2025-09-28T18:28:04.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:28:04.994 [DEBUG] [Thread-132102] [transport.py] [_log()] starting thread (client mode): 0x2b9dd390
2025-09-28T18:28:04.994 [DEBUG] [Thread-132102] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:05.014 [DEBUG] [Thread-132102] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:28:05.014 [INFO] [Thread-132102] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:05.017 [DEBUG] [Thread-132102] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] Compression: none
2025-09-28T18:28:05.018 [DEBUG] [Thread-132102] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:05.037 [DEBUG] [Thread-132102] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:05.037 [DEBUG] [Thread-132102] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:05.038 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:28:05.038 [DEBUG] [Thread-132102] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:28:05.039 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:05.040 [DEBUG] [Thread-132102] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:05.041 [DEBUG] [Thread-132102] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:05.041 [DEBUG] [Thread-132102] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:05.041 [DEBUG] [Thread-132102] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:28:05.041 [DEBUG] [Thread-132102] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:05.056 [INFO] [Thread-132102] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:05.057 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:05.617 [DEBUG] [Thread-132102] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:05.617 [DEBUG] [Thread-132102] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:05.617 [DEBUG] [Thread-132102] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:28:05.658 [DEBUG] [Thread-132102] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:05.658 [DEBUG] [Thread-132102] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:05.661 [DEBUG] [Thread-132102] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:05.674 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:05.674 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:28:05.676 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:28:05.677 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:28:05.681 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:05.683 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:28:05.684 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685843 -999.00  +13.50  13.10     54   +4.40 1 1 1 1 1   886    0 7.53 -83.39 ----- 13.1 13.1 206.0 29.8 15.6 -25.5 15.4 -24.2 15.8 -24.7 16.1 -25.4
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:28:05.684 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685843
2025-09-28T18:28:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:28:05.685 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:28:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:28:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:28:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:28:05.686 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:27:50', tmtdew=10.43, humidity=49.1, cloud=0.0, wind=24.84, temperature=13.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:27:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:28:05.686 [DEBUG] [Thread-132102] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:05.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-28T18:28:05.782 [DEBUG] [Thread-132105] [transport.py] [_log()] starting thread (client mode): 0x2b9dca60
2025-09-28T18:28:05.782 [DEBUG] [Thread-132105] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:05.798 [DEBUG] [Thread-132105] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:28:05.799 [INFO] [Thread-132105] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:28:05.806 [DEBUG] [Thread-132105] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:05.806 [DEBUG] [Thread-132105] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:28:05.806 [DEBUG] [Thread-132105] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:05.807 [DEBUG] [Thread-132105] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] Compression: none
2025-09-28T18:28:05.808 [DEBUG] [Thread-132105] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:05.864 [DEBUG] [Thread-132105] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:05.864 [DEBUG] [Thread-132105] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:05.865 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:28:05.865 [DEBUG] [Thread-132105] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:28:05.866 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:05.920 [DEBUG] [Thread-132105] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:05.920 [DEBUG] [Thread-132105] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:05.921 [DEBUG] [Thread-132105] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:05.921 [DEBUG] [Thread-132105] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:28:05.921 [DEBUG] [Thread-132105] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:05.939 [INFO] [Thread-132105] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:05.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-28T18:28:05.941 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:06.882 [DEBUG] [Thread-132105] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:06.882 [DEBUG] [Thread-132105] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:06.929 [DEBUG] [Thread-132105] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:06.929 [DEBUG] [Thread-132105] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:06.938 [DEBUG] [Thread-132105] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:06.947 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:06.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-28T18:28:06.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-28T18:28:06.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:06.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:06.970 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:06.977 [DEBUG] [Thread-132105] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:16.980 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:28:16.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:28:16.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-28T18:28:17.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 27, 50), 10.43, 49.1, 0.0, 24.84, 13.45, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:28:17.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:27:50
2025-09-28T18:28:17.690 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:28:17.837 [DEBUG] [Thread-132107] [transport.py] [_log()] starting thread (client mode): 0x2b91d480
2025-09-28T18:28:17.837 [DEBUG] [Thread-132107] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:17.859 [DEBUG] [Thread-132107] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:28:17.859 [INFO] [Thread-132107] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:28:17.862 [DEBUG] [Thread-132107] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] Compression: none
2025-09-28T18:28:17.863 [DEBUG] [Thread-132107] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:17.880 [DEBUG] [Thread-132107] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:17.881 [DEBUG] [Thread-132107] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:17.881 [DEBUG] [Thread-132107] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:28:17.881 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:28:17.882 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:17.883 [DEBUG] [Thread-132107] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:17.883 [DEBUG] [Thread-132107] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:17.883 [DEBUG] [Thread-132107] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:17.884 [DEBUG] [Thread-132107] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:28:17.884 [DEBUG] [Thread-132107] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:17.918 [INFO] [Thread-132107] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:17.919 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:18.583 [DEBUG] [Thread-132107] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:18.583 [DEBUG] [Thread-132107] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:18.584 [DEBUG] [Thread-132107] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:28:18.624 [DEBUG] [Thread-132107] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:18.624 [DEBUG] [Thread-132107] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:18.626 [DEBUG] [Thread-132107] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:18.639 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:18.639 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:28:18.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:28:18.641 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:28:18.646 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:18.647 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:28:18.647 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685843 -999.00  +13.50  13.10     54   +4.40 1 1 1 1 1   886    0 7.53 -83.39 ----- 13.1 13.1 206.0 29.8 15.6 -25.5 15.4 -24.2 15.8 -24.7 16.1 -25.4
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:28:18.647 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685843
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:28:18.648 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:27:50', tmtdew=10.43, humidity=49.1, cloud=0.0, wind=24.84, temperature=13.45, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:27:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:28:18.648 [DEBUG] [Thread-132107] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:18.721 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:28:18.730 [DEBUG] [Thread-132110] [transport.py] [_log()] starting thread (client mode): 0x2b9dcfd0
2025-09-28T18:28:18.730 [DEBUG] [Thread-132110] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:18.746 [DEBUG] [Thread-132110] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:28:18.746 [INFO] [Thread-132110] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:28:18.753 [DEBUG] [Thread-132110] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] Compression: none
2025-09-28T18:28:18.754 [DEBUG] [Thread-132110] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:18.813 [DEBUG] [Thread-132110] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:18.813 [DEBUG] [Thread-132110] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:18.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:28:18.814 [DEBUG] [Thread-132110] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:28:18.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:18.868 [DEBUG] [Thread-132110] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:18.869 [DEBUG] [Thread-132110] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:18.869 [DEBUG] [Thread-132110] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:18.869 [DEBUG] [Thread-132110] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:28:18.869 [DEBUG] [Thread-132110] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:18.888 [INFO] [Thread-132110] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:18.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-28T18:28:18.888 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:19.075 [DEBUG] [Thread-132112 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:19.855 [DEBUG] [Thread-132110] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:19.855 [DEBUG] [Thread-132110] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:19.903 [DEBUG] [Thread-132110] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:19.903 [DEBUG] [Thread-132110] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:19.913 [DEBUG] [Thread-132110] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:19.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:19.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-28T18:28:19.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-28T18:28:19.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:19.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:19.940 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:19.947 [DEBUG] [Thread-132110] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:27.128 [DEBUG] [Thread-132113 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:29.950 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:28:29.950 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:28:29.953 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:28:30.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 28, 22), 10.4, 49.18, 0.0, 21.49, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:28:30.551 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:28:22
2025-09-28T18:28:30.657 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:28:30.806 [DEBUG] [Thread-132114] [transport.py] [_log()] starting thread (client mode): 0x2b997940
2025-09-28T18:28:30.806 [DEBUG] [Thread-132114] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:30.826 [DEBUG] [Thread-132114] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:28:30.826 [INFO] [Thread-132114] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:30.830 [DEBUG] [Thread-132114] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] Compression: none
2025-09-28T18:28:30.831 [DEBUG] [Thread-132114] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:30.850 [DEBUG] [Thread-132114] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:30.851 [DEBUG] [Thread-132114] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:30.851 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:28:30.852 [DEBUG] [Thread-132114] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:28:30.852 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:30.854 [DEBUG] [Thread-132114] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:30.854 [DEBUG] [Thread-132114] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:30.854 [DEBUG] [Thread-132114] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:30.854 [DEBUG] [Thread-132114] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:28:30.854 [DEBUG] [Thread-132114] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:30.878 [INFO] [Thread-132114] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:30.879 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:31.520 [DEBUG] [Thread-132114] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:31.521 [DEBUG] [Thread-132114] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:31.521 [DEBUG] [Thread-132114] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:28:31.561 [DEBUG] [Thread-132114] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:31.561 [DEBUG] [Thread-132114] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:31.564 [DEBUG] [Thread-132114] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:31.575 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:31.576 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:28:31.577 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:28:31.579 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:28:31.585 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:31.586 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:28:31.587 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.685843 -999.00  +13.50  13.10     54   +4.40 1 1 1 1 1   886    0 7.53 -83.39 ----- 13.1 13.1 206.0 29.8 15.6 -25.5 15.4 -24.2 15.8 -24.7 16.1 -25.4
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:28:31.587 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.685843
2025-09-28T18:28:31.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:28:31.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:28:31.588 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:28:31.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:28:31.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:28:31.589 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:28:22', tmtdew=10.4, humidity=49.18, cloud=0.0, wind=21.49, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:27:36.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:28:31.589 [DEBUG] [Thread-132114] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:31.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-28T18:28:31.685 [DEBUG] [Thread-132117] [transport.py] [_log()] starting thread (client mode): 0x2b9e6d10
2025-09-28T18:28:31.685 [DEBUG] [Thread-132117] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:31.701 [DEBUG] [Thread-132117] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:28:31.701 [INFO] [Thread-132117] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:31.708 [DEBUG] [Thread-132117] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] Compression: none
2025-09-28T18:28:31.709 [DEBUG] [Thread-132117] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:31.768 [DEBUG] [Thread-132117] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:31.769 [DEBUG] [Thread-132117] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:31.769 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:28:31.770 [DEBUG] [Thread-132117] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:28:31.770 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:31.824 [DEBUG] [Thread-132117] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:31.824 [DEBUG] [Thread-132117] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:31.825 [DEBUG] [Thread-132117] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:31.825 [DEBUG] [Thread-132117] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:28:31.825 [DEBUG] [Thread-132117] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:31.843 [INFO] [Thread-132117] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:31.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-28T18:28:31.843 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:32.868 [DEBUG] [Thread-132117] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:32.868 [DEBUG] [Thread-132117] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:32.916 [DEBUG] [Thread-132117] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:32.916 [DEBUG] [Thread-132117] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:32.925 [DEBUG] [Thread-132117] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:32.934 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:32.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-28T18:28: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-28T18:28:32.951 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:32.951 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:32.952 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:32.960 [DEBUG] [Thread-132117] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:34.133 [DEBUG] [Thread-132119 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:37.590 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:37.590 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:42.962 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:28:42.962 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:28:42.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-28T18:28:43.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 28, 22), 10.4, 49.18, 0.0, 21.49, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:28:43.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:28:22
2025-09-28T18:28:43.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:28:43.815 [DEBUG] [Thread-132120] [transport.py] [_log()] starting thread (client mode): 0x2b91f490
2025-09-28T18:28:43.815 [DEBUG] [Thread-132120] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:43.835 [DEBUG] [Thread-132120] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:28:43.835 [INFO] [Thread-132120] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:28:43.838 [DEBUG] [Thread-132120] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] Compression: none
2025-09-28T18:28:43.839 [DEBUG] [Thread-132120] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:43.857 [DEBUG] [Thread-132120] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:43.857 [DEBUG] [Thread-132120] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:43.857 [DEBUG] [Thread-132120] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:28:43.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:28:43.857 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:43.900 [DEBUG] [Thread-132120] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:43.900 [DEBUG] [Thread-132120] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:43.900 [DEBUG] [Thread-132120] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:43.900 [DEBUG] [Thread-132120] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:28:43.901 [DEBUG] [Thread-132120] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:43.928 [INFO] [Thread-132120] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:43.928 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:44.574 [DEBUG] [Thread-132120] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:44.575 [DEBUG] [Thread-132120] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:44.575 [DEBUG] [Thread-132120] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:28:44.615 [DEBUG] [Thread-132120] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:44.615 [DEBUG] [Thread-132120] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:44.618 [DEBUG] [Thread-132120] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:44.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:44.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:28:44.632 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:28:44.634 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:28:44.640 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:44.641 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:28:44.642 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.686191 -999.00  +13.50  18.24     54   +4.40 1 1 1 1 1   885    0 7.24 -85.37 ----- 18.2 18.2 204.5 25.8 15.5 -25.2 15.4 -24.4 15.7 -24.6 16.0 -25.6
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:28:44.642 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.686191
2025-09-28T18:28:44.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:28:44.643 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:28:44.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:28:44.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:28:44.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:28:44.644 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:28:22', tmtdew=10.4, humidity=49.18, cloud=0.0, wind=21.49, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:28:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:28:44.644 [DEBUG] [Thread-132120] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:44.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-28T18:28:44.739 [DEBUG] [Thread-132123] [transport.py] [_log()] starting thread (client mode): 0x2b9a8190
2025-09-28T18:28:44.739 [DEBUG] [Thread-132123] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:44.754 [DEBUG] [Thread-132123] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:28:44.754 [INFO] [Thread-132123] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:44.762 [DEBUG] [Thread-132123] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:44.763 [DEBUG] [Thread-132123] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:44.763 [DEBUG] [Thread-132123] [transport.py] [_log()] Compression: none
2025-09-28T18:28:44.763 [DEBUG] [Thread-132123] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:44.823 [DEBUG] [Thread-132123] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:44.824 [DEBUG] [Thread-132123] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:44.824 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:28:44.825 [DEBUG] [Thread-132123] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:28:44.826 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:44.880 [DEBUG] [Thread-132123] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:44.880 [DEBUG] [Thread-132123] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:44.880 [DEBUG] [Thread-132123] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:44.881 [DEBUG] [Thread-132123] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:28:44.881 [DEBUG] [Thread-132123] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:44.899 [INFO] [Thread-132123] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:44.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-28T18:28:44.900 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:45.880 [DEBUG] [Thread-132123] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:45.880 [DEBUG] [Thread-132123] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:45.928 [DEBUG] [Thread-132123] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:45.929 [DEBUG] [Thread-132123] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:45.941 [DEBUG] [Thread-132123] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:45.952 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:45.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-28T18:28:45.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-28T18:28:45.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:45.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:45.969 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:45.977 [DEBUG] [Thread-132123] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:49.186 [DEBUG] [Thread-132125 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:28:55.979 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:28:55.980 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:28:55.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-28T18:28:56.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 28, 22), 10.4, 49.18, 0.0, 21.49, 13.38, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:28:56.614 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:28:22
2025-09-28T18:28:56.726 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:28:56.876 [DEBUG] [Thread-132126] [transport.py] [_log()] starting thread (client mode): 0x2b9a8a60
2025-09-28T18:28:56.876 [DEBUG] [Thread-132126] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:56.896 [DEBUG] [Thread-132126] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:28:56.896 [INFO] [Thread-132126] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:56.899 [DEBUG] [Thread-132126] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] Compression: none
2025-09-28T18:28:56.900 [DEBUG] [Thread-132126] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:56.908 [DEBUG] [Thread-132126] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:56.908 [DEBUG] [Thread-132126] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:56.909 [DEBUG] [Thread-132126] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:28:56.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:28:56.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:56.910 [DEBUG] [Thread-132126] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:56.911 [DEBUG] [Thread-132126] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:56.911 [DEBUG] [Thread-132126] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:56.911 [DEBUG] [Thread-132126] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:28:56.911 [DEBUG] [Thread-132126] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:56.935 [INFO] [Thread-132126] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:56.935 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:57.597 [DEBUG] [Thread-132126] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:57.597 [DEBUG] [Thread-132126] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:57.598 [DEBUG] [Thread-132126] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:28:57.638 [DEBUG] [Thread-132126] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:57.639 [DEBUG] [Thread-132126] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:57.642 [DEBUG] [Thread-132126] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:57.654 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:57.654 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:28:57.656 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:28:57.658 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:28:57.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:57.665 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:28:57.666 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:57.666 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:57.666 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:28:57.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.686191 -999.00  +13.50  18.24     54   +4.40 1 1 1 1 1   885    0 7.24 -85.37 ----- 18.2 18.2 204.5 25.8 15.5 -25.2 15.4 -24.4 15.7 -24.6 16.0 -25.6
2025-09-28T18:28:57.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:28:57.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:28:57.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.686191
2025-09-28T18:28:57.667 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:28:57.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:28:57.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:28:57.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:28:57.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:28:57.668 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:28:22', tmtdew=10.4, humidity=49.18, cloud=0.0, wind=21.49, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:28:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:28:57.669 [DEBUG] [Thread-132126] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:28:57.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-28T18:28:57.764 [DEBUG] [Thread-132129] [transport.py] [_log()] starting thread (client mode): 0x2b9ab790
2025-09-28T18:28:57.764 [DEBUG] [Thread-132129] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:28:57.778 [DEBUG] [Thread-132129] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:28:57.778 [INFO] [Thread-132129] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:28:57.786 [DEBUG] [Thread-132129] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] client lang: <none>
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] server lang: <none>
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] kex follows: False
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] Compression: none
2025-09-28T18:28:57.787 [DEBUG] [Thread-132129] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:28:57.844 [DEBUG] [Thread-132129] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:28:57.845 [DEBUG] [Thread-132129] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:28:57.845 [DEBUG] [Thread-132129] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:28:57.845 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:28:57.846 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:28:57.900 [DEBUG] [Thread-132129] [transport.py] [_log()] userauth is OK
2025-09-28T18:28:57.900 [DEBUG] [Thread-132129] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:28:57.901 [DEBUG] [Thread-132129] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:28:57.901 [DEBUG] [Thread-132129] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:28:57.901 [DEBUG] [Thread-132129] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:28:57.920 [INFO] [Thread-132129] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:28:57.920 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:28:57.920 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:28:58.837 [DEBUG] [Thread-132129] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:28:58.837 [DEBUG] [Thread-132129] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:28:58.885 [DEBUG] [Thread-132129] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:28:58.885 [DEBUG] [Thread-132129] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:28:58.894 [DEBUG] [Thread-132129] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:28:58.903 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:28:58.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-28T18:28:58.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T18:28:58.921 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:28:58.921 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:28:58.922 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:28:58.929 [DEBUG] [Thread-132129] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:04.229 [DEBUG] [Thread-132131 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:08.927 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:29:08.928 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:29:08.930 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:29:09.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 28, 54), 10.34, 49.21, 0.0, 24.1, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:29:09.517 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:28:54
2025-09-28T18:29:09.624 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:29:09.770 [DEBUG] [Thread-132132] [transport.py] [_log()] starting thread (client mode): 0x2b91e8f0
2025-09-28T18:29:09.770 [DEBUG] [Thread-132132] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:09.790 [DEBUG] [Thread-132132] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:29:09.790 [INFO] [Thread-132132] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:09.793 [DEBUG] [Thread-132132] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:09.794 [DEBUG] [Thread-132132] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:09.794 [DEBUG] [Thread-132132] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:09.794 [DEBUG] [Thread-132132] [transport.py] [_log()] Compression: none
2025-09-28T18:29:09.794 [DEBUG] [Thread-132132] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:09.812 [DEBUG] [Thread-132132] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:09.813 [DEBUG] [Thread-132132] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:09.814 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:29:09.814 [DEBUG] [Thread-132132] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:29:09.815 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:09.816 [DEBUG] [Thread-132132] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:09.816 [DEBUG] [Thread-132132] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:09.816 [DEBUG] [Thread-132132] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:09.816 [DEBUG] [Thread-132132] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:29:09.816 [DEBUG] [Thread-132132] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:09.840 [INFO] [Thread-132132] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:09.841 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:10.462 [DEBUG] [Thread-132132] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:10.462 [DEBUG] [Thread-132132] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:10.462 [DEBUG] [Thread-132132] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:29:10.502 [DEBUG] [Thread-132132] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:10.502 [DEBUG] [Thread-132132] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:10.505 [DEBUG] [Thread-132132] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:10.516 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:10.517 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:29:10.518 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:29:10.520 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:29:10.525 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:10.527 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:29:10.527 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:10.527 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:10.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:29:10.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.686191 -999.00  +13.50  18.24     54   +4.40 1 1 1 1 1   885    0 7.24 -85.37 ----- 18.2 18.2 204.5 25.8 15.5 -25.2 15.4 -24.4 15.7 -24.6 16.0 -25.6
2025-09-28T18:29:10.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:29:10.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:29:10.528 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.686191
2025-09-28T18:29:10.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:29:10.529 [DEBUG] [Thread-132132] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:10.529 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:29:10.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:29:10.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:29:10.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:29:10.530 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:28:54', tmtdew=10.34, humidity=49.21, cloud=0.0, wind=24.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:28:06.902', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:29:10.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-28T18:29:10.626 [DEBUG] [Thread-132135] [transport.py] [_log()] starting thread (client mode): 0x2b9ab010
2025-09-28T18:29:10.626 [DEBUG] [Thread-132135] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:10.640 [DEBUG] [Thread-132135] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:29:10.640 [INFO] [Thread-132135] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:29:10.648 [DEBUG] [Thread-132135] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:10.648 [DEBUG] [Thread-132135] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:29:10.648 [DEBUG] [Thread-132135] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:10.649 [DEBUG] [Thread-132135] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] Compression: none
2025-09-28T18:29:10.650 [DEBUG] [Thread-132135] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:10.708 [DEBUG] [Thread-132135] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:10.708 [DEBUG] [Thread-132135] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:10.709 [DEBUG] [Thread-132135] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:29:10.709 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:29:10.710 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:10.764 [DEBUG] [Thread-132135] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:10.764 [DEBUG] [Thread-132135] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:10.764 [DEBUG] [Thread-132135] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:10.764 [DEBUG] [Thread-132135] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:29:10.765 [DEBUG] [Thread-132135] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:10.783 [INFO] [Thread-132135] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:10.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-28T18:29:10.784 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:11.723 [DEBUG] [Thread-132135] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:11.724 [DEBUG] [Thread-132135] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:11.771 [DEBUG] [Thread-132135] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:11.771 [DEBUG] [Thread-132135] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:11.780 [DEBUG] [Thread-132135] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:11.789 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:11.789 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w')
2025-09-28T18:29:11.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-28T18:29:11.807 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:11.807 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:11.807 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:11.815 [DEBUG] [Thread-132135] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:19.258 [DEBUG] [Thread-132137 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:21.813 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:29:21.813 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:29:21.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-28T18:29:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 28, 54), 10.34, 49.21, 0.0, 24.1, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:29:22.407 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:28:54
2025-09-28T18:29:22.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:29:22.660 [DEBUG] [Thread-132138] [transport.py] [_log()] starting thread (client mode): 0x2e3600d0
2025-09-28T18:29:22.660 [DEBUG] [Thread-132138] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:22.681 [DEBUG] [Thread-132138] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:29:22.681 [INFO] [Thread-132138] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:29:22.684 [DEBUG] [Thread-132138] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:22.684 [DEBUG] [Thread-132138] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] Compression: none
2025-09-28T18:29:22.685 [DEBUG] [Thread-132138] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:22.702 [DEBUG] [Thread-132138] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:22.703 [DEBUG] [Thread-132138] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:22.703 [DEBUG] [Thread-132138] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:29:22.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:29:22.704 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:22.705 [DEBUG] [Thread-132138] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:22.706 [DEBUG] [Thread-132138] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:22.706 [DEBUG] [Thread-132138] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:22.706 [DEBUG] [Thread-132138] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:29:22.706 [DEBUG] [Thread-132138] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:22.724 [INFO] [Thread-132138] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:22.725 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:23.346 [DEBUG] [Thread-132138] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:23.346 [DEBUG] [Thread-132138] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:23.347 [DEBUG] [Thread-132138] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:29:23.387 [DEBUG] [Thread-132138] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:23.387 [DEBUG] [Thread-132138] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:23.390 [DEBUG] [Thread-132138] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:23.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:23.402 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:29:23.403 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:29:23.405 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:29:23.410 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:23.412 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:29:23.412 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:23.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:23.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:29:23.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.686885 -999.00  +13.50  16.62     53   +4.30 1 1 1 1 1   885    0 7.35 -77.92 ----- 16.6 16.6 197.0 23.1 15.5 -25.2 15.2 -24.5 15.6 -24.5 15.9 -25.5
2025-09-28T18:29:23.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:29:23.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:29:23.413 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.686885
2025-09-28T18:29:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:29:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:29:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:29:23.414 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:29:23.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:29:23.415 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:28:54', tmtdew=10.34, humidity=49.21, cloud=0.0, wind=24.1, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:29:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:29:23.415 [DEBUG] [Thread-132138] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:23.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-28T18:29:23.509 [DEBUG] [Thread-132141] [transport.py] [_log()] starting thread (client mode): 0x2b9e6a10
2025-09-28T18:29:23.509 [DEBUG] [Thread-132141] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:23.524 [DEBUG] [Thread-132141] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:29:23.524 [INFO] [Thread-132141] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:23.532 [DEBUG] [Thread-132141] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] Compression: none
2025-09-28T18:29:23.533 [DEBUG] [Thread-132141] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:23.592 [DEBUG] [Thread-132141] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:23.593 [DEBUG] [Thread-132141] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:23.593 [DEBUG] [Thread-132141] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:29:23.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:29:23.594 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:23.652 [DEBUG] [Thread-132141] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:23.652 [DEBUG] [Thread-132141] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:23.652 [DEBUG] [Thread-132141] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:23.652 [DEBUG] [Thread-132141] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:29:23.653 [DEBUG] [Thread-132141] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:23.671 [INFO] [Thread-132141] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:23.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-28T18:29:23.672 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:24.655 [DEBUG] [Thread-132141] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:24.655 [DEBUG] [Thread-132141] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:24.703 [DEBUG] [Thread-132141] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:24.703 [DEBUG] [Thread-132141] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:24.712 [DEBUG] [Thread-132141] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:24.719 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:24.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-28T18:29:24.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-28T18:29:24.735 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:24.735 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:24.735 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:24.743 [DEBUG] [Thread-132141] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:27.187 [DEBUG] [Thread-132143 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:34.302 [DEBUG] [Thread-132144 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:34.745 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:29:34.746 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:29:34.748 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:29:35.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 29, 26), 10.32, 49.3, 0.0, 24.83, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:29:35.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:29:26
2025-09-28T18:29:35.419 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:29:35.565 [DEBUG] [Thread-132145] [transport.py] [_log()] starting thread (client mode): 0x2b9dd450
2025-09-28T18:29:35.566 [DEBUG] [Thread-132145] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:35.585 [DEBUG] [Thread-132145] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:29:35.585 [INFO] [Thread-132145] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:35.588 [DEBUG] [Thread-132145] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] Compression: none
2025-09-28T18:29:35.589 [DEBUG] [Thread-132145] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:35.606 [DEBUG] [Thread-132145] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:35.607 [DEBUG] [Thread-132145] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:35.607 [DEBUG] [Thread-132145] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:29:35.607 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:29:35.608 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:35.609 [DEBUG] [Thread-132145] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:35.609 [DEBUG] [Thread-132145] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:35.610 [DEBUG] [Thread-132145] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:35.610 [DEBUG] [Thread-132145] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:29:35.610 [DEBUG] [Thread-132145] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:35.634 [INFO] [Thread-132145] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:35.635 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:36.248 [DEBUG] [Thread-132145] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:36.248 [DEBUG] [Thread-132145] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:36.248 [DEBUG] [Thread-132145] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:29:36.289 [DEBUG] [Thread-132145] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:36.289 [DEBUG] [Thread-132145] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:36.292 [DEBUG] [Thread-132145] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:36.304 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:36.305 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:29:36.307 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:29:36.308 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:29:36.314 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:36.316 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:29:36.316 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:36.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.686885 -999.00  +13.50  16.62     53   +4.30 1 1 1 1 1   885    0 7.35 -77.92 ----- 16.6 16.6 197.0 23.1 15.5 -25.2 15.2 -24.5 15.6 -24.5 15.9 -25.5
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.686885
2025-09-28T18:29:36.317 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:29:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:29:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:29:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:29:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:29:36.318 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:29:26', tmtdew=10.32, humidity=49.3, cloud=0.0, wind=24.83, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:29:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:29:36.319 [DEBUG] [Thread-132145] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:36.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-28T18:29:36.414 [DEBUG] [Thread-132148] [transport.py] [_log()] starting thread (client mode): 0x2b9dcbe0
2025-09-28T18:29:36.414 [DEBUG] [Thread-132148] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:36.429 [DEBUG] [Thread-132148] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:29:36.429 [INFO] [Thread-132148] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:36.437 [DEBUG] [Thread-132148] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:36.438 [DEBUG] [Thread-132148] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:36.438 [DEBUG] [Thread-132148] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:36.438 [DEBUG] [Thread-132148] [transport.py] [_log()] Compression: none
2025-09-28T18:29:36.438 [DEBUG] [Thread-132148] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:36.495 [DEBUG] [Thread-132148] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:36.496 [DEBUG] [Thread-132148] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:36.496 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:29:36.497 [DEBUG] [Thread-132148] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:29:36.497 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:36.552 [DEBUG] [Thread-132148] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:36.552 [DEBUG] [Thread-132148] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:36.552 [DEBUG] [Thread-132148] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:36.552 [DEBUG] [Thread-132148] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:29:36.553 [DEBUG] [Thread-132148] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:36.571 [INFO] [Thread-132148] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:36.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-28T18:29:36.571 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:37.547 [DEBUG] [Thread-132148] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:37.548 [DEBUG] [Thread-132148] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:37.595 [DEBUG] [Thread-132148] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:37.595 [DEBUG] [Thread-132148] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:37.604 [DEBUG] [Thread-132148] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:37.613 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:37.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-28T18:29:37.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-28T18:29:37.630 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:37.631 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:37.631 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:37.639 [DEBUG] [Thread-132148] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:37.730 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:37.731 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:47.634 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:29:47.634 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:29:47.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-28T18:29:48.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 29, 26), 10.32, 49.3, 0.0, 24.83, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:29:48.205 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:29:26
2025-09-28T18:29:48.312 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:29:48.459 [DEBUG] [Thread-132150] [transport.py] [_log()] starting thread (client mode): 0x2b91ef50
2025-09-28T18:29:48.459 [DEBUG] [Thread-132150] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:48.487 [DEBUG] [Thread-132150] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:29:48.487 [INFO] [Thread-132150] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] Compression: none
2025-09-28T18:29:48.490 [DEBUG] [Thread-132150] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:48.499 [DEBUG] [Thread-132150] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:48.499 [DEBUG] [Thread-132150] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:48.499 [DEBUG] [Thread-132150] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:29:48.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:29:48.499 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:48.541 [DEBUG] [Thread-132150] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:48.541 [DEBUG] [Thread-132150] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:48.541 [DEBUG] [Thread-132150] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:48.541 [DEBUG] [Thread-132150] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:29:48.541 [DEBUG] [Thread-132150] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:48.577 [INFO] [Thread-132150] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:48.577 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:49.195 [DEBUG] [Thread-132150] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:49.195 [DEBUG] [Thread-132150] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:49.196 [DEBUG] [Thread-132150] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:29:49.236 [DEBUG] [Thread-132150] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:49.236 [DEBUG] [Thread-132150] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:49.239 [DEBUG] [Thread-132150] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:49.251 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:49.252 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:29:49.253 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:29:49.255 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:29:49.261 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:49.263 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:29:49.263 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687232 -999.00  +13.50  17.91     54   +4.30 1 1 1 1 1   885    0 7.50 -77.27 ----- 17.9 17.9 194.9 23.0 15.4 -25.2 15.2 -24.3 15.5 -24.5 15.8 -25.5
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:29:49.264 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687232
2025-09-28T18:29:49.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:29:49.265 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:29:49.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:29:49.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:29:49.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:29:49.266 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:29:26', tmtdew=10.32, humidity=49.3, cloud=0.0, wind=24.83, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:29:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:29:49.266 [DEBUG] [Thread-132150] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:29:49.337 [DEBUG] [Thread-132153 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:29:49.351 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:29:49.360 [DEBUG] [Thread-132154] [transport.py] [_log()] starting thread (client mode): 0x2e3c0490
2025-09-28T18:29:49.360 [DEBUG] [Thread-132154] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:29:49.377 [DEBUG] [Thread-132154] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:29:49.377 [INFO] [Thread-132154] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:29:49.384 [DEBUG] [Thread-132154] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:29:49.385 [DEBUG] [Thread-132154] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:29:49.385 [DEBUG] [Thread-132154] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:29:49.385 [DEBUG] [Thread-132154] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:49.385 [DEBUG] [Thread-132154] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:29:49.385 [DEBUG] [Thread-132154] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] client lang: <none>
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] server lang: <none>
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] kex follows: False
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] Compression: none
2025-09-28T18:29:49.386 [DEBUG] [Thread-132154] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:29:49.444 [DEBUG] [Thread-132154] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:29:49.445 [DEBUG] [Thread-132154] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:29:49.445 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:29:49.446 [DEBUG] [Thread-132154] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:29:49.447 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:29:49.500 [DEBUG] [Thread-132154] [transport.py] [_log()] userauth is OK
2025-09-28T18:29:49.500 [DEBUG] [Thread-132154] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:29:49.500 [DEBUG] [Thread-132154] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:29:49.501 [DEBUG] [Thread-132154] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:29:49.501 [DEBUG] [Thread-132154] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:29:49.520 [INFO] [Thread-132154] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:29:49.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-28T18:29:49.521 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:29:50.531 [DEBUG] [Thread-132154] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:29:50.531 [DEBUG] [Thread-132154] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:29:50.579 [DEBUG] [Thread-132154] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:29:50.579 [DEBUG] [Thread-132154] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:29:50.587 [DEBUG] [Thread-132154] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:29:50.594 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:29:50.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-28T18:29:50.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-28T18:29:50.610 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:29:50.610 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:29:50.610 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:29:50.618 [DEBUG] [Thread-132154] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:00.611 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:30:00.611 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:30:00.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-28T18:30:01.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 29, 26), 10.32, 49.3, 0.0, 24.83, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:30:01.192 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:29:26
2025-09-28T18:30:01.299 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:30:01.449 [DEBUG] [Thread-132156] [transport.py] [_log()] starting thread (client mode): 0x2b9ba050
2025-09-28T18:30:01.449 [DEBUG] [Thread-132156] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:01.470 [DEBUG] [Thread-132156] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:30:01.470 [INFO] [Thread-132156] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] Compression: none
2025-09-28T18:30:01.474 [DEBUG] [Thread-132156] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:01.491 [DEBUG] [Thread-132156] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:01.491 [DEBUG] [Thread-132156] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:01.492 [DEBUG] [Thread-132156] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:30:01.492 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:30:01.493 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:01.494 [DEBUG] [Thread-132156] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:01.494 [DEBUG] [Thread-132156] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:01.494 [DEBUG] [Thread-132156] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:01.494 [DEBUG] [Thread-132156] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:30:01.494 [DEBUG] [Thread-132156] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:01.517 [INFO] [Thread-132156] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:01.518 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:02.073 [DEBUG] [Thread-132156] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:02.073 [DEBUG] [Thread-132156] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:02.073 [DEBUG] [Thread-132156] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:30:02.115 [DEBUG] [Thread-132156] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:02.115 [DEBUG] [Thread-132156] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:02.117 [DEBUG] [Thread-132156] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:02.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:02.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:30:02.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:30:02.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:30:02.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:02.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:30:02.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687232 -999.00  +13.50  17.91     54   +4.30 1 1 1 1 1   885    0 7.50 -77.27 ----- 17.9 17.9 194.9 23.0 15.4 -25.2 15.2 -24.3 15.5 -24.5 15.8 -25.5
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687232
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:30:02.135 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:29:26', tmtdew=10.32, humidity=49.3, cloud=0.0, wind=24.83, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:29:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:30:02.136 [DEBUG] [Thread-132156] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:02.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-28T18:30:02.224 [DEBUG] [Thread-132159] [transport.py] [_log()] starting thread (client mode): 0x2b9ba350
2025-09-28T18:30:02.224 [DEBUG] [Thread-132159] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:02.243 [DEBUG] [Thread-132159] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:30:02.243 [INFO] [Thread-132159] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:02.250 [DEBUG] [Thread-132159] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:02.251 [DEBUG] [Thread-132159] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:02.251 [DEBUG] [Thread-132159] [transport.py] [_log()] Compression: none
2025-09-28T18:30:02.251 [DEBUG] [Thread-132159] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:02.307 [DEBUG] [Thread-132159] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:02.307 [DEBUG] [Thread-132159] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:02.308 [DEBUG] [Thread-132159] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:30:02.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:30:02.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:02.364 [DEBUG] [Thread-132159] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:02.364 [DEBUG] [Thread-132159] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:02.364 [DEBUG] [Thread-132159] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:02.364 [DEBUG] [Thread-132159] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:30:02.364 [DEBUG] [Thread-132159] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:02.378 [INFO] [Thread-132159] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:02.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-28T18:30:02.378 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:03.338 [DEBUG] [Thread-132159] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:03.338 [DEBUG] [Thread-132159] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:03.386 [DEBUG] [Thread-132159] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:03.386 [DEBUG] [Thread-132159] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:03.395 [DEBUG] [Thread-132159] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:03.404 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30: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-28T18:30: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-28T18:30:03.421 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:03.421 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:03.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:03.429 [DEBUG] [Thread-132159] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:04.371 [DEBUG] [Thread-132161 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:13.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:30:13.432 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:30:13.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-28T18:30:14.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 29, 58), 10.37, 49.28, 0.0, 25.99, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:30:14.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:29:58
2025-09-28T18:30:14.127 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:30:14.275 [DEBUG] [Thread-132162] [transport.py] [_log()] starting thread (client mode): 0x2e361630
2025-09-28T18:30:14.275 [DEBUG] [Thread-132162] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:14.296 [DEBUG] [Thread-132162] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:30:14.296 [INFO] [Thread-132162] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:30:14.299 [DEBUG] [Thread-132162] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:14.300 [DEBUG] [Thread-132162] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] Compression: none
2025-09-28T18:30:14.301 [DEBUG] [Thread-132162] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:14.321 [DEBUG] [Thread-132162] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:14.322 [DEBUG] [Thread-132162] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:14.322 [DEBUG] [Thread-132162] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:30:14.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:30:14.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:14.324 [DEBUG] [Thread-132162] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:14.325 [DEBUG] [Thread-132162] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:14.325 [DEBUG] [Thread-132162] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:14.325 [DEBUG] [Thread-132162] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:30:14.325 [DEBUG] [Thread-132162] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:14.348 [INFO] [Thread-132162] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:14.348 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:15.150 [DEBUG] [Thread-132162] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:15.150 [DEBUG] [Thread-132162] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:15.150 [DEBUG] [Thread-132162] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:30:15.191 [DEBUG] [Thread-132162] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:15.191 [DEBUG] [Thread-132162] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:15.193 [DEBUG] [Thread-132162] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:15.205 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:15.205 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:30:15.206 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:30:15.207 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:30:15.248 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:15.250 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:30:15.250 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:15.250 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687232 -999.00  +13.50  17.91     54   +4.30 1 1 1 1 1   885    0 7.50 -77.27 ----- 17.9 17.9 194.9 23.0 15.4 -25.2 15.2 -24.3 15.5 -24.5 15.8 -25.5
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687232
2025-09-28T18:30:15.251 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:30:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:30:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:30:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:30:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:30:15.252 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:29:58', tmtdew=10.37, humidity=49.28, cloud=0.0, wind=25.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:29:36.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:30:15.253 [DEBUG] [Thread-132162] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:15.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-28T18:30:15.348 [DEBUG] [Thread-132165] [transport.py] [_log()] starting thread (client mode): 0x2e3630a0
2025-09-28T18:30:15.348 [DEBUG] [Thread-132165] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:15.363 [DEBUG] [Thread-132165] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:30:15.363 [INFO] [Thread-132165] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:30:15.370 [DEBUG] [Thread-132165] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:15.370 [DEBUG] [Thread-132165] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:15.371 [DEBUG] [Thread-132165] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] Compression: none
2025-09-28T18:30:15.372 [DEBUG] [Thread-132165] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:15.429 [DEBUG] [Thread-132165] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:15.430 [DEBUG] [Thread-132165] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:15.431 [DEBUG] [Thread-132165] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:30:15.431 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:30:15.432 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:15.484 [DEBUG] [Thread-132165] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:15.484 [DEBUG] [Thread-132165] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:15.484 [DEBUG] [Thread-132165] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:15.484 [DEBUG] [Thread-132165] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:30:15.485 [DEBUG] [Thread-132165] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:15.503 [INFO] [Thread-132165] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:15.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-28T18:30:15.505 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:16.492 [DEBUG] [Thread-132165] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:16.492 [DEBUG] [Thread-132165] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:16.540 [DEBUG] [Thread-132165] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:16.540 [DEBUG] [Thread-132165] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:16.549 [DEBUG] [Thread-132165] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:16.557 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:16.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-28T18:30:16.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-28T18:30:16.574 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:16.574 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:16.575 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:16.582 [DEBUG] [Thread-132165] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:19.401 [DEBUG] [Thread-132167 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:26.578 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:30:26.579 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:30: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-28T18:30:27.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 29, 58), 10.37, 49.28, 0.0, 25.99, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:30:27.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:29:58
2025-09-28T18:30:27.233 [DEBUG] [Thread-132168 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:27.260 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:30:27.409 [DEBUG] [Thread-132169] [transport.py] [_log()] starting thread (client mode): 0x2e361c30
2025-09-28T18:30:27.409 [DEBUG] [Thread-132169] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:27.429 [DEBUG] [Thread-132169] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:30:27.429 [INFO] [Thread-132169] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:27.432 [DEBUG] [Thread-132169] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] Compression: none
2025-09-28T18:30:27.433 [DEBUG] [Thread-132169] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:27.449 [DEBUG] [Thread-132169] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:27.450 [DEBUG] [Thread-132169] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:27.450 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:30:27.451 [DEBUG] [Thread-132169] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:30:27.451 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:27.453 [DEBUG] [Thread-132169] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:27.453 [DEBUG] [Thread-132169] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:27.453 [DEBUG] [Thread-132169] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:27.453 [DEBUG] [Thread-132169] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:30:27.453 [DEBUG] [Thread-132169] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:27.479 [INFO] [Thread-132169] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:27.480 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:28.073 [DEBUG] [Thread-132169] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:28.073 [DEBUG] [Thread-132169] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:28.073 [DEBUG] [Thread-132169] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:30:28.114 [DEBUG] [Thread-132169] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:28.114 [DEBUG] [Thread-132169] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:28.116 [DEBUG] [Thread-132169] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:28.123 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:28.123 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:30:28.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:30:28.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:30:28.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:28.127 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:30:28.128 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687579 -999.00  +13.50  12.38     54   +4.40 1 1 1 1 1   884    0 7.61 -74.60 ----- 12.4 12.4 207.4 20.5 15.4 -25.2 15.2 -24.2 15.4 -24.4 15.8 -25.2
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687579
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:30:28.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:29:58', tmtdew=10.37, humidity=49.28, cloud=0.0, wind=25.99, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:30:06.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:30:28.128 [DEBUG] [Thread-132169] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:28.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-28T18:30:28.214 [DEBUG] [Thread-132172] [transport.py] [_log()] starting thread (client mode): 0x2e363790
2025-09-28T18:30:28.215 [DEBUG] [Thread-132172] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:28.236 [DEBUG] [Thread-132172] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:30:28.236 [INFO] [Thread-132172] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:28.244 [DEBUG] [Thread-132172] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] Compression: none
2025-09-28T18:30:28.245 [DEBUG] [Thread-132172] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:28.299 [DEBUG] [Thread-132172] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:28.300 [DEBUG] [Thread-132172] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:28.300 [DEBUG] [Thread-132172] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:30:28.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:30:28.300 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:28.355 [DEBUG] [Thread-132172] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:28.356 [DEBUG] [Thread-132172] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:28.356 [DEBUG] [Thread-132172] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:28.356 [DEBUG] [Thread-132172] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:30:28.356 [DEBUG] [Thread-132172] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:28.370 [INFO] [Thread-132172] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:28.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-28T18:30:28.370 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:29.386 [DEBUG] [Thread-132172] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:29.386 [DEBUG] [Thread-132172] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:29.434 [DEBUG] [Thread-132172] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:29.434 [DEBUG] [Thread-132172] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:29.442 [DEBUG] [Thread-132172] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:29.453 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:29.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-28T18:30:29.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-28T18:30:29.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:29.468 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:29.469 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:29.476 [DEBUG] [Thread-132172] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:34.455 [DEBUG] [Thread-132174 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:37.873 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:37.875 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:39.479 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:30:39.479 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:30:39.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-28T18:30:40.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 30, 30), 10.36, 49.31, 0.0, 24.21, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:30:40.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:30:30
2025-09-28T18:30:40.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:30:40.310 [DEBUG] [Thread-132175] [transport.py] [_log()] starting thread (client mode): 0x2b9bba90
2025-09-28T18:30:40.310 [DEBUG] [Thread-132175] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:40.331 [DEBUG] [Thread-132175] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:30:40.332 [INFO] [Thread-132175] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] Compression: none
2025-09-28T18:30:40.333 [DEBUG] [Thread-132175] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:40.350 [DEBUG] [Thread-132175] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:40.350 [DEBUG] [Thread-132175] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:40.350 [DEBUG] [Thread-132175] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:30:40.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:30:40.350 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:40.351 [DEBUG] [Thread-132175] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:40.351 [DEBUG] [Thread-132175] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:40.351 [DEBUG] [Thread-132175] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:40.351 [DEBUG] [Thread-132175] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:30:40.351 [DEBUG] [Thread-132175] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:40.360 [INFO] [Thread-132175] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:40.360 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:42.098 [DEBUG] [Thread-132175] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:42.098 [DEBUG] [Thread-132175] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:42.098 [DEBUG] [Thread-132175] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:30:42.139 [DEBUG] [Thread-132175] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:42.140 [DEBUG] [Thread-132175] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:42.143 [DEBUG] [Thread-132175] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:42.156 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:42.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:30:42.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:30:42.159 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:30:42.164 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:42.166 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:30:42.166 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:42.166 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:30:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687579 -999.00  +13.50  12.38     54   +4.40 1 1 1 1 1   884    0 7.61 -74.60 ----- 12.4 12.4 207.4 20.5 15.4 -25.2 15.2 -24.2 15.4 -24.4 15.8 -25.2
2025-09-28T18:30:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:30:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:30:42.167 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687579
2025-09-28T18:30:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:30:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:30:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:30:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:30:42.168 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:30:42.169 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:30:30', tmtdew=10.36, humidity=49.31, cloud=0.0, wind=24.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:30:06.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:30:42.169 [DEBUG] [Thread-132175] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:42.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-28T18:30:42.269 [DEBUG] [Thread-132178] [transport.py] [_log()] starting thread (client mode): 0x2b9e6fe0
2025-09-28T18:30:42.269 [DEBUG] [Thread-132178] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:42.285 [DEBUG] [Thread-132178] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:30:42.285 [INFO] [Thread-132178] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:30:42.292 [DEBUG] [Thread-132178] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:42.293 [DEBUG] [Thread-132178] [transport.py] [_log()] Compression: none
2025-09-28T18:30:42.294 [DEBUG] [Thread-132178] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:42.352 [DEBUG] [Thread-132178] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:42.352 [DEBUG] [Thread-132178] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:42.353 [DEBUG] [Thread-132178] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:30:42.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:30:42.353 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:42.408 [DEBUG] [Thread-132178] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:42.408 [DEBUG] [Thread-132178] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:42.408 [DEBUG] [Thread-132178] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:42.408 [DEBUG] [Thread-132178] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:30:42.408 [DEBUG] [Thread-132178] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:42.428 [INFO] [Thread-132178] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:42.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-28T18:30:42.429 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:43.403 [DEBUG] [Thread-132178] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:43.403 [DEBUG] [Thread-132178] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:43.452 [DEBUG] [Thread-132178] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:43.452 [DEBUG] [Thread-132178] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:43.460 [DEBUG] [Thread-132178] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:43.468 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:43.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-28T18:30:43.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') -> 00000000
2025-09-28T18:30:43.483 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:43.483 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:43.484 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:43.491 [DEBUG] [Thread-132178] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:49.507 [DEBUG] [Thread-132180 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:30:53.493 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:30:53.493 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:30:53.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-28T18:30:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 30, 30), 10.36, 49.31, 0.0, 24.21, 13.35, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:30:54.067 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:30:30
2025-09-28T18:30:54.174 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:30:54.319 [DEBUG] [Thread-132181] [transport.py] [_log()] starting thread (client mode): 0x2e363730
2025-09-28T18:30:54.319 [DEBUG] [Thread-132181] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:54.339 [DEBUG] [Thread-132181] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:30:54.339 [INFO] [Thread-132181] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:54.342 [DEBUG] [Thread-132181] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] Compression: none
2025-09-28T18:30:54.343 [DEBUG] [Thread-132181] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:54.363 [DEBUG] [Thread-132181] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:54.364 [DEBUG] [Thread-132181] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:54.364 [DEBUG] [Thread-132181] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:30:54.364 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:30:54.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:54.366 [DEBUG] [Thread-132181] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:54.366 [DEBUG] [Thread-132181] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:54.366 [DEBUG] [Thread-132181] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:54.366 [DEBUG] [Thread-132181] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:30:54.366 [DEBUG] [Thread-132181] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:54.390 [INFO] [Thread-132181] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:54.390 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:55.011 [DEBUG] [Thread-132181] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:55.011 [DEBUG] [Thread-132181] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:55.012 [DEBUG] [Thread-132181] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:30:55.052 [DEBUG] [Thread-132181] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:55.052 [DEBUG] [Thread-132181] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:55.055 [DEBUG] [Thread-132181] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:55.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:55.063 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:30:55.064 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:30:55.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:30:55.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:55.073 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:30:55.073 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:55.073 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:55.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:30:55.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687927 -999.00  +13.40  13.21     54   +4.30 1 1 1 1 1   884    0 7.36 -72.25 ----- 13.2 13.2 195.8 25.1 15.4 -24.9 15.2 -23.9 15.4 -24.5 15.8 -24.8
2025-09-28T18:30:55.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:30:55.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:30:55.074 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687927
2025-09-28T18:30:55.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:30:55.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:30:55.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:30:55.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:30:55.075 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:30:55.076 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:30:30', tmtdew=10.36, humidity=49.31, cloud=0.0, wind=24.21, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:30:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:30:55.076 [DEBUG] [Thread-132181] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:30:55.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-28T18:30:55.168 [DEBUG] [Thread-132184] [transport.py] [_log()] starting thread (client mode): 0x2e363df0
2025-09-28T18:30:55.168 [DEBUG] [Thread-132184] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:30:55.183 [DEBUG] [Thread-132184] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:30:55.183 [INFO] [Thread-132184] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:30:55.190 [DEBUG] [Thread-132184] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:30:55.190 [DEBUG] [Thread-132184] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:30:55.190 [DEBUG] [Thread-132184] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:30:55.190 [DEBUG] [Thread-132184] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] client lang: <none>
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] server lang: <none>
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] kex follows: False
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] Compression: none
2025-09-28T18:30:55.191 [DEBUG] [Thread-132184] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:30:55.247 [DEBUG] [Thread-132184] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:30:55.248 [DEBUG] [Thread-132184] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:30:55.248 [DEBUG] [Thread-132184] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:30:55.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:30:55.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:30:55.304 [DEBUG] [Thread-132184] [transport.py] [_log()] userauth is OK
2025-09-28T18:30:55.304 [DEBUG] [Thread-132184] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:30:55.304 [DEBUG] [Thread-132184] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:30:55.304 [DEBUG] [Thread-132184] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:30:55.305 [DEBUG] [Thread-132184] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:30:55.323 [INFO] [Thread-132184] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:30:55.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-28T18:30:55.324 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:30:56.304 [DEBUG] [Thread-132184] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:30:56.305 [DEBUG] [Thread-132184] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:30:56.352 [DEBUG] [Thread-132184] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:30:56.352 [DEBUG] [Thread-132184] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:30:56.361 [DEBUG] [Thread-132184] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:30:56.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:30:56.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-28T18:30:56.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-28T18:30:56.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:30:56.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:30:56.388 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:30:56.396 [DEBUG] [Thread-132184] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:04.552 [DEBUG] [Thread-132186 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:06.398 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:31:06.398 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:31:06.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-28T18:31:06.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 31, 2), 10.35, 49.36, 0.0, 25.64, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:31:06.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:31:02
2025-09-28T18:31:07.083 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:31:07.238 [DEBUG] [Thread-132187] [transport.py] [_log()] starting thread (client mode): 0x2b9bb340
2025-09-28T18:31:07.238 [DEBUG] [Thread-132187] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:07.257 [DEBUG] [Thread-132187] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:31:07.257 [INFO] [Thread-132187] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] Compression: none
2025-09-28T18:31:07.260 [DEBUG] [Thread-132187] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:07.275 [DEBUG] [Thread-132187] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:07.275 [DEBUG] [Thread-132187] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:07.275 [DEBUG] [Thread-132187] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:31:07.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:31:07.275 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:07.276 [DEBUG] [Thread-132187] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:07.276 [DEBUG] [Thread-132187] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:07.276 [DEBUG] [Thread-132187] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:07.276 [DEBUG] [Thread-132187] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:31:07.276 [DEBUG] [Thread-132187] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:07.286 [INFO] [Thread-132187] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:07.286 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:08.067 [DEBUG] [Thread-132187] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:08.067 [DEBUG] [Thread-132187] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:08.067 [DEBUG] [Thread-132187] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:31:08.109 [DEBUG] [Thread-132187] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:08.109 [DEBUG] [Thread-132187] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:08.111 [DEBUG] [Thread-132187] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:08.118 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:08.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:31:08.118 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:31:08.119 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:31:08.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:08.122 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:31:08.122 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687927 -999.00  +13.40  13.21     54   +4.30 1 1 1 1 1   884    0 7.36 -72.25 ----- 13.2 13.2 195.8 25.1 15.4 -24.9 15.2 -23.9 15.4 -24.5 15.8 -24.8
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687927
2025-09-28T18:31:08.122 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:31:08.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:31:08.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:31:08.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:31:08.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:31:08.123 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:31:02', tmtdew=10.35, humidity=49.36, cloud=0.0, wind=25.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:30:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:31:08.123 [DEBUG] [Thread-132187] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:08.197 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:31:08.209 [DEBUG] [Thread-132190] [transport.py] [_log()] starting thread (client mode): 0x2b996260
2025-09-28T18:31:08.209 [DEBUG] [Thread-132190] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:08.224 [DEBUG] [Thread-132190] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:31:08.224 [INFO] [Thread-132190] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:08.232 [DEBUG] [Thread-132190] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:08.233 [DEBUG] [Thread-132190] [transport.py] [_log()] Compression: none
2025-09-28T18:31:08.233 [DEBUG] [Thread-132190] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:08.291 [DEBUG] [Thread-132190] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:08.291 [DEBUG] [Thread-132190] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:08.291 [DEBUG] [Thread-132190] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:31:08.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:31:08.291 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:08.348 [DEBUG] [Thread-132190] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:08.348 [DEBUG] [Thread-132190] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:08.348 [DEBUG] [Thread-132190] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:08.348 [DEBUG] [Thread-132190] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:31:08.348 [DEBUG] [Thread-132190] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:08.362 [INFO] [Thread-132190] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:08.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-28T18:31:08.362 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:09.351 [DEBUG] [Thread-132190] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:09.351 [DEBUG] [Thread-132190] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:09.399 [DEBUG] [Thread-132190] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:09.399 [DEBUG] [Thread-132190] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:09.408 [DEBUG] [Thread-132190] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:09.416 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:09.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-28T18:31:09.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-28T18:31:09.432 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:09.432 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:09.432 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:09.440 [DEBUG] [Thread-132190] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:19.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:31:19.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:31:19.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-28T18:31:19.585 [DEBUG] [Thread-132192 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:20.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 31, 2), 10.35, 49.36, 0.0, 25.64, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:31:20.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:31:02
2025-09-28T18:31:20.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:31:20.287 [DEBUG] [Thread-132193] [transport.py] [_log()] starting thread (client mode): 0x2e363430
2025-09-28T18:31:20.287 [DEBUG] [Thread-132193] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:20.306 [DEBUG] [Thread-132193] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:31:20.306 [INFO] [Thread-132193] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:31:20.309 [DEBUG] [Thread-132193] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:20.309 [DEBUG] [Thread-132193] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:20.310 [DEBUG] [Thread-132193] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:20.311 [DEBUG] [Thread-132193] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:20.311 [DEBUG] [Thread-132193] [transport.py] [_log()] Compression: none
2025-09-28T18:31:20.311 [DEBUG] [Thread-132193] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:20.327 [DEBUG] [Thread-132193] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:20.328 [DEBUG] [Thread-132193] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:20.328 [DEBUG] [Thread-132193] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:31:20.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:31:20.329 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:20.330 [DEBUG] [Thread-132193] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:20.330 [DEBUG] [Thread-132193] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:20.330 [DEBUG] [Thread-132193] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:20.330 [DEBUG] [Thread-132193] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:31:20.330 [DEBUG] [Thread-132193] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:20.348 [INFO] [Thread-132193] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:20.349 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:21.078 [DEBUG] [Thread-132193] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:21.078 [DEBUG] [Thread-132193] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:21.079 [DEBUG] [Thread-132193] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:31:21.119 [DEBUG] [Thread-132193] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:21.119 [DEBUG] [Thread-132193] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:21.122 [DEBUG] [Thread-132193] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:21.129 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:21.129 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:31:21.130 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:31:21.131 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:31:21.133 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:21.134 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:31:21.134 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.687927 -999.00  +13.40  13.21     54   +4.30 1 1 1 1 1   884    0 7.36 -72.25 ----- 13.2 13.2 195.8 25.1 15.4 -24.9 15.2 -23.9 15.4 -24.5 15.8 -24.8
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.687927
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:31:21.134 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:31:02', tmtdew=10.35, humidity=49.36, cloud=0.0, wind=25.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:30:36.893', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:31:21.135 [DEBUG] [Thread-132193] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:21.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-28T18:31:21.217 [DEBUG] [Thread-132196] [transport.py] [_log()] starting thread (client mode): 0x2b9bbca0
2025-09-28T18:31:21.217 [DEBUG] [Thread-132196] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:21.231 [DEBUG] [Thread-132196] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:31:21.231 [INFO] [Thread-132196] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] Compression: none
2025-09-28T18:31:21.239 [DEBUG] [Thread-132196] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:21.296 [DEBUG] [Thread-132196] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:21.297 [DEBUG] [Thread-132196] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:21.297 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:31:21.298 [DEBUG] [Thread-132196] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:31:21.299 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:21.352 [DEBUG] [Thread-132196] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:21.352 [DEBUG] [Thread-132196] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:21.352 [DEBUG] [Thread-132196] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:21.352 [DEBUG] [Thread-132196] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:31:21.352 [DEBUG] [Thread-132196] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:21.374 [INFO] [Thread-132196] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:21.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-28T18:31:21.376 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:22.357 [DEBUG] [Thread-132196] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:22.357 [DEBUG] [Thread-132196] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:22.405 [DEBUG] [Thread-132196] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:22.405 [DEBUG] [Thread-132196] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:22.414 [DEBUG] [Thread-132196] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:22.423 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:22.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-28T18:31:22.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-28T18:31:22.440 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:22.440 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:22.441 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:22.448 [DEBUG] [Thread-132196] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:27.290 [DEBUG] [Thread-132198 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:32.442 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:31:32.442 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:31:32.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-28T18:31:33.021 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 31, 2), 10.35, 49.36, 0.0, 25.64, 13.33, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:31:33.022 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:31:02
2025-09-28T18:31:33.128 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:31:33.275 [DEBUG] [Thread-132199] [transport.py] [_log()] starting thread (client mode): 0x2b9e4970
2025-09-28T18:31:33.275 [DEBUG] [Thread-132199] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:33.295 [DEBUG] [Thread-132199] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:31:33.296 [INFO] [Thread-132199] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:33.297 [DEBUG] [Thread-132199] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] Compression: none
2025-09-28T18:31:33.298 [DEBUG] [Thread-132199] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:33.307 [DEBUG] [Thread-132199] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:33.308 [DEBUG] [Thread-132199] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:33.308 [DEBUG] [Thread-132199] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:31:33.308 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:31:33.309 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:33.352 [DEBUG] [Thread-132199] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:33.353 [DEBUG] [Thread-132199] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:33.353 [DEBUG] [Thread-132199] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:33.353 [DEBUG] [Thread-132199] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:31:33.353 [DEBUG] [Thread-132199] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:33.389 [INFO] [Thread-132199] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:33.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:34.003 [DEBUG] [Thread-132199] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:34.004 [DEBUG] [Thread-132199] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:34.004 [DEBUG] [Thread-132199] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:31:34.044 [DEBUG] [Thread-132199] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:34.044 [DEBUG] [Thread-132199] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:34.048 [DEBUG] [Thread-132199] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:34.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:34.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:31:34.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:31:34.062 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:31:34.067 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:34.068 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:31:34.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:34.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:31:34.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688274 -999.00  +13.40  13.74     54   +4.30 1 1 1 1 1   884    0 7.39 -78.50 ----- 13.7 13.7 205.7 20.7 15.3 -25.2 15.2 -24.3 15.4 -24.1 15.7 -25.4
2025-09-28T18:31:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:31:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:31:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688274
2025-09-28T18:31:34.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:31:34.071 [DEBUG] [Thread-132199] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:34.071 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:31:34.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:31:34.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:31:34.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:31:34.072 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:31:02', tmtdew=10.35, humidity=49.36, cloud=0.0, wind=25.64, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:31:06.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:31:34.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-28T18:31:34.170 [DEBUG] [Thread-132202] [transport.py] [_log()] starting thread (client mode): 0x2e363fa0
2025-09-28T18:31:34.170 [DEBUG] [Thread-132202] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:34.184 [DEBUG] [Thread-132202] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:31:34.184 [INFO] [Thread-132202] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:34.192 [DEBUG] [Thread-132202] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] Compression: none
2025-09-28T18:31:34.193 [DEBUG] [Thread-132202] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:34.252 [DEBUG] [Thread-132202] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:34.252 [DEBUG] [Thread-132202] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:34.253 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:31:34.253 [DEBUG] [Thread-132202] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:31:34.254 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:34.308 [DEBUG] [Thread-132202] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:34.308 [DEBUG] [Thread-132202] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:34.308 [DEBUG] [Thread-132202] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:34.308 [DEBUG] [Thread-132202] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:31:34.309 [DEBUG] [Thread-132202] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:34.327 [INFO] [Thread-132202] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:34.327 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:31:34.328 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:34.621 [DEBUG] [Thread-132204 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:35.274 [DEBUG] [Thread-132202] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:35.274 [DEBUG] [Thread-132202] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:35.323 [DEBUG] [Thread-132202] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:35.323 [DEBUG] [Thread-132202] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:35.331 [DEBUG] [Thread-132202] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:35.339 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:35.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-28T18:31:35.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-28T18:31:35.358 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:35.358 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:35.358 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:35.366 [DEBUG] [Thread-132202] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:38.017 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:38.018 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:45.362 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:31:45.362 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:31:45.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-28T18:31:45.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 31, 34), 10.34, 49.38, 0.0, 20.49, 13.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:31:45.964 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:31:34
2025-09-28T18:31:46.077 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:31:46.231 [DEBUG] [Thread-132205] [transport.py] [_log()] starting thread (client mode): 0x2b9e7550
2025-09-28T18:31:46.231 [DEBUG] [Thread-132205] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:46.252 [DEBUG] [Thread-132205] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:31:46.252 [INFO] [Thread-132205] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:46.253 [DEBUG] [Thread-132205] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] Compression: none
2025-09-28T18:31:46.254 [DEBUG] [Thread-132205] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:46.265 [DEBUG] [Thread-132205] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:46.266 [DEBUG] [Thread-132205] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:46.266 [DEBUG] [Thread-132205] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:31:46.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:31:46.266 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:46.267 [DEBUG] [Thread-132205] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:46.267 [DEBUG] [Thread-132205] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:46.267 [DEBUG] [Thread-132205] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:46.267 [DEBUG] [Thread-132205] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:31:46.267 [DEBUG] [Thread-132205] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:46.289 [INFO] [Thread-132205] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:46.289 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:47.070 [DEBUG] [Thread-132205] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:47.070 [DEBUG] [Thread-132205] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:47.070 [DEBUG] [Thread-132205] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:31:47.111 [DEBUG] [Thread-132205] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:47.111 [DEBUG] [Thread-132205] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:47.114 [DEBUG] [Thread-132205] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:47.119 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:47.120 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:31:47.121 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:31:47.122 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:31:47.124 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:47.125 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:31:47.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688274 -999.00  +13.40  13.74     54   +4.30 1 1 1 1 1   884    0 7.39 -78.50 ----- 13.7 13.7 205.7 20.7 15.3 -25.2 15.2 -24.3 15.4 -24.1 15.7 -25.4
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:31:47.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688274
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:31:47.126 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:31:34', tmtdew=10.34, humidity=49.38, cloud=0.0, wind=20.49, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:31:06.874', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:31:47.126 [DEBUG] [Thread-132205] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:47.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-28T18:31:47.213 [DEBUG] [Thread-132208] [transport.py] [_log()] starting thread (client mode): 0x2e3c3dc0
2025-09-28T18:31:47.213 [DEBUG] [Thread-132208] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:47.228 [DEBUG] [Thread-132208] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:31:47.228 [INFO] [Thread-132208] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] Compression: none
2025-09-28T18:31:47.235 [DEBUG] [Thread-132208] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:47.292 [DEBUG] [Thread-132208] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:47.292 [DEBUG] [Thread-132208] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:47.292 [DEBUG] [Thread-132208] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:31:47.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:31:47.293 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:47.348 [DEBUG] [Thread-132208] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:47.348 [DEBUG] [Thread-132208] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:47.348 [DEBUG] [Thread-132208] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:47.348 [DEBUG] [Thread-132208] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:31:47.348 [DEBUG] [Thread-132208] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:47.363 [INFO] [Thread-132208] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:47.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-28T18:31:47.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:48.381 [DEBUG] [Thread-132208] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:48.381 [DEBUG] [Thread-132208] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:48.429 [DEBUG] [Thread-132208] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:31:48.429 [DEBUG] [Thread-132208] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:31:48.438 [DEBUG] [Thread-132208] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:31:48.446 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:31:48.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')
2025-09-28T18:31:48.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-28T18:31:48.461 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:31:48.461 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:31:48.462 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:31:48.469 [DEBUG] [Thread-132208] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:31:49.664 [DEBUG] [Thread-132210 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:31:58.472 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:31:58.472 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:31:58.475 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:31:59.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 31, 34), 10.34, 49.38, 0.0, 20.49, 13.3, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:31:59.066 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:31:34
2025-09-28T18:31:59.172 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:31:59.320 [DEBUG] [Thread-132211] [transport.py] [_log()] starting thread (client mode): 0x2b9e6890
2025-09-28T18:31:59.320 [DEBUG] [Thread-132211] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:31:59.339 [DEBUG] [Thread-132211] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:31:59.340 [INFO] [Thread-132211] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:31:59.343 [DEBUG] [Thread-132211] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] client lang: <none>
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] server lang: <none>
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] kex follows: False
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] Compression: none
2025-09-28T18:31:59.344 [DEBUG] [Thread-132211] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:31:59.364 [DEBUG] [Thread-132211] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:31:59.365 [DEBUG] [Thread-132211] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:31:59.365 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:31:59.366 [DEBUG] [Thread-132211] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:31:59.366 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:31:59.367 [DEBUG] [Thread-132211] [transport.py] [_log()] userauth is OK
2025-09-28T18:31:59.367 [DEBUG] [Thread-132211] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:31:59.368 [DEBUG] [Thread-132211] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:31:59.368 [DEBUG] [Thread-132211] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:31:59.368 [DEBUG] [Thread-132211] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:31:59.390 [INFO] [Thread-132211] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:31:59.391 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:31:59.962 [DEBUG] [Thread-132211] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:31:59.963 [DEBUG] [Thread-132211] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:31:59.963 [DEBUG] [Thread-132211] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:32:00.003 [DEBUG] [Thread-132211] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:00.003 [DEBUG] [Thread-132211] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:00.006 [DEBUG] [Thread-132211] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:00.017 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:00.018 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:32:00.019 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:32:00.021 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:32:00.027 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:00.028 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:32:00.028 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688621 -999.00  +13.40  14.77     54   +4.30 1 1 1 1 1   883    0 7.09 -76.37 ----- 14.8 14.8 221.0 24.0 15.3 -25.1 15.1 -24.2 15.4 -24.2 15.6 -25.3
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:32:00.029 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688621
2025-09-28T18:32:00.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:32:00.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:32:00.030 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:32:00.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:32:00.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:32:00.031 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:31:34', tmtdew=10.34, humidity=49.38, cloud=0.0, wind=20.49, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:31:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:32:00.031 [DEBUG] [Thread-132211] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:00.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-28T18:32:00.125 [DEBUG] [Thread-132214] [transport.py] [_log()] starting thread (client mode): 0x2e3612a0
2025-09-28T18:32:00.125 [DEBUG] [Thread-132214] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:00.140 [DEBUG] [Thread-132214] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:32:00.140 [INFO] [Thread-132214] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:32:00.148 [DEBUG] [Thread-132214] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:00.148 [DEBUG] [Thread-132214] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:32:00.148 [DEBUG] [Thread-132214] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:00.148 [DEBUG] [Thread-132214] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] Compression: none
2025-09-28T18:32:00.149 [DEBUG] [Thread-132214] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:00.207 [DEBUG] [Thread-132214] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:00.208 [DEBUG] [Thread-132214] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:00.208 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:32:00.209 [DEBUG] [Thread-132214] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:32:00.209 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:00.264 [DEBUG] [Thread-132214] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:00.264 [DEBUG] [Thread-132214] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:00.264 [DEBUG] [Thread-132214] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:00.264 [DEBUG] [Thread-132214] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:32:00.264 [DEBUG] [Thread-132214] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:00.283 [INFO] [Thread-132214] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:00.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-28T18:32:00.284 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:01.292 [DEBUG] [Thread-132214] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:01.292 [DEBUG] [Thread-132214] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:01.340 [DEBUG] [Thread-132214] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:01.340 [DEBUG] [Thread-132214] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:01.349 [DEBUG] [Thread-132214] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:01.357 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:01.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-28T18:32:01.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-28T18:32:01.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:01.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:01.375 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:01.383 [DEBUG] [Thread-132214] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:04.710 [DEBUG] [Thread-132216 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:11.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:32:11.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:32:11.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-28T18:32:11.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 32, 6), 10.32, 49.45, 0.0, 22.48, 13.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:32:11.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:32:06
2025-09-28T18:32:12.093 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:32:12.241 [DEBUG] [Thread-132217] [transport.py] [_log()] starting thread (client mode): 0x2e3c0670
2025-09-28T18:32:12.241 [DEBUG] [Thread-132217] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:12.262 [DEBUG] [Thread-132217] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:32:12.262 [INFO] [Thread-132217] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:12.265 [DEBUG] [Thread-132217] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] Compression: none
2025-09-28T18:32:12.266 [DEBUG] [Thread-132217] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:12.282 [DEBUG] [Thread-132217] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:12.283 [DEBUG] [Thread-132217] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:12.283 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:32:12.284 [DEBUG] [Thread-132217] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:32:12.284 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:12.285 [DEBUG] [Thread-132217] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:12.285 [DEBUG] [Thread-132217] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:12.285 [DEBUG] [Thread-132217] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:12.285 [DEBUG] [Thread-132217] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:32:12.286 [DEBUG] [Thread-132217] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:12.308 [INFO] [Thread-132217] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:12.308 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:13.068 [DEBUG] [Thread-132217] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:13.069 [DEBUG] [Thread-132217] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:13.069 [DEBUG] [Thread-132217] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:32:13.109 [DEBUG] [Thread-132217] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:13.109 [DEBUG] [Thread-132217] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:13.112 [DEBUG] [Thread-132217] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:13.125 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:13.125 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:32:13.127 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:32:13.128 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:32:13.134 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:13.136 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:32:13.136 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:13.136 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:13.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:32:13.136 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688621 -999.00  +13.40  14.77     54   +4.30 1 1 1 1 1   883    0 7.09 -76.37 ----- 14.8 14.8 221.0 24.0 15.3 -25.1 15.1 -24.2 15.4 -24.2 15.6 -25.3
2025-09-28T18:32:13.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:32:13.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:32:13.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688621
2025-09-28T18:32:13.137 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:32:13.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:32:13.138 [DEBUG] [Thread-132217] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:13.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:32:13.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:32:13.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:32:13.138 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:32:06', tmtdew=10.32, humidity=49.45, cloud=0.0, wind=22.48, temperature=13.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:31:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:32:13.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-28T18:32:13.234 [DEBUG] [Thread-132220] [transport.py] [_log()] starting thread (client mode): 0x2b91f3a0
2025-09-28T18:32:13.234 [DEBUG] [Thread-132220] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:13.249 [DEBUG] [Thread-132220] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:32:13.249 [INFO] [Thread-132220] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:13.257 [DEBUG] [Thread-132220] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:13.258 [DEBUG] [Thread-132220] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:13.259 [DEBUG] [Thread-132220] [transport.py] [_log()] Compression: none
2025-09-28T18:32:13.259 [DEBUG] [Thread-132220] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:13.321 [DEBUG] [Thread-132220] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:13.321 [DEBUG] [Thread-132220] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:13.322 [DEBUG] [Thread-132220] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:32:13.322 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:32:13.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:13.380 [DEBUG] [Thread-132220] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:13.380 [DEBUG] [Thread-132220] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:13.381 [DEBUG] [Thread-132220] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:13.381 [DEBUG] [Thread-132220] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:32:13.381 [DEBUG] [Thread-132220] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:13.400 [INFO] [Thread-132220] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:13.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-28T18:32:13.401 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:14.352 [DEBUG] [Thread-132220] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:14.352 [DEBUG] [Thread-132220] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:14.400 [DEBUG] [Thread-132220] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:14.400 [DEBUG] [Thread-132220] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:14.409 [DEBUG] [Thread-132220] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:14.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:14.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-28T18:32:14.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-28T18:32:14.435 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:14.435 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:14.436 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:14.444 [DEBUG] [Thread-132220] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:19.760 [DEBUG] [Thread-132222 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:24.445 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:32:24.445 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:32:24.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-28T18:32:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 32, 6), 10.32, 49.45, 0.0, 22.48, 13.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:32:25.053 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:32:06
2025-09-28T18:32:25.161 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:32:25.313 [DEBUG] [Thread-132223] [transport.py] [_log()] starting thread (client mode): 0x2b996800
2025-09-28T18:32:25.313 [DEBUG] [Thread-132223] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:25.333 [DEBUG] [Thread-132223] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:32:25.333 [INFO] [Thread-132223] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:32:25.334 [DEBUG] [Thread-132223] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:25.334 [DEBUG] [Thread-132223] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] Compression: none
2025-09-28T18:32:25.335 [DEBUG] [Thread-132223] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:25.343 [DEBUG] [Thread-132223] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:25.343 [DEBUG] [Thread-132223] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:25.343 [DEBUG] [Thread-132223] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:32:25.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:32:25.344 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:25.344 [DEBUG] [Thread-132223] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:25.344 [DEBUG] [Thread-132223] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:25.344 [DEBUG] [Thread-132223] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:25.344 [DEBUG] [Thread-132223] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:32:25.344 [DEBUG] [Thread-132223] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:25.357 [INFO] [Thread-132223] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:25.357 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:26.097 [DEBUG] [Thread-132223] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:26.097 [DEBUG] [Thread-132223] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:26.097 [DEBUG] [Thread-132223] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:32:26.138 [DEBUG] [Thread-132223] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:26.138 [DEBUG] [Thread-132223] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:26.141 [DEBUG] [Thread-132223] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:26.153 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:26.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:32:26.154 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:32:26.156 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:32:26.158 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:26.159 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:32:26.159 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688621 -999.00  +13.40  14.77     54   +4.30 1 1 1 1 1   883    0 7.09 -76.37 ----- 14.8 14.8 221.0 24.0 15.3 -25.1 15.1 -24.2 15.4 -24.2 15.6 -25.3
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688621
2025-09-28T18:32:26.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:32:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:32:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:32:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:32:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:32:26.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:32:06', tmtdew=10.32, humidity=49.45, cloud=0.0, wind=22.48, temperature=13.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:31:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:32:26.160 [DEBUG] [Thread-132223] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32: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-28T18:32:26.244 [DEBUG] [Thread-132226] [transport.py] [_log()] starting thread (client mode): 0x2b9e6e60
2025-09-28T18:32:26.244 [DEBUG] [Thread-132226] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:26.258 [DEBUG] [Thread-132226] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:32:26.258 [INFO] [Thread-132226] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:26.266 [DEBUG] [Thread-132226] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] Compression: none
2025-09-28T18:32:26.267 [DEBUG] [Thread-132226] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:26.323 [DEBUG] [Thread-132226] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:26.323 [DEBUG] [Thread-132226] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:26.323 [DEBUG] [Thread-132226] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:32:26.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:32:26.323 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:26.379 [DEBUG] [Thread-132226] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:26.379 [DEBUG] [Thread-132226] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:26.379 [DEBUG] [Thread-132226] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:26.379 [DEBUG] [Thread-132226] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:32:26.379 [DEBUG] [Thread-132226] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:26.394 [INFO] [Thread-132226] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:26.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-28T18:32:26.395 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:27.333 [DEBUG] [Thread-132228 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:27.385 [DEBUG] [Thread-132226] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:27.385 [DEBUG] [Thread-132226] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:27.433 [DEBUG] [Thread-132226] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:27.434 [DEBUG] [Thread-132226] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:27.443 [DEBUG] [Thread-132226] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:27.451 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:27.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-28T18:32:27.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-28T18:32:27.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:27.469 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:27.470 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:27.477 [DEBUG] [Thread-132226] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:34.807 [DEBUG] [Thread-132229 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:37.480 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:32:37.480 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:32:37.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-28T18:32:38.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 32, 6), 10.32, 49.45, 0.0, 22.48, 13.32, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:32:38.057 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:32:06
2025-09-28T18:32:38.158 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:38.159 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:38.164 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:32:38.313 [DEBUG] [Thread-132230] [transport.py] [_log()] starting thread (client mode): 0x2e363b50
2025-09-28T18:32:38.313 [DEBUG] [Thread-132230] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:38.333 [DEBUG] [Thread-132230] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:32:38.333 [INFO] [Thread-132230] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:32:38.336 [DEBUG] [Thread-132230] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:38.336 [DEBUG] [Thread-132230] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:32:38.336 [DEBUG] [Thread-132230] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:38.336 [DEBUG] [Thread-132230] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:38.336 [DEBUG] [Thread-132230] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:38.337 [DEBUG] [Thread-132230] [transport.py] [_log()] Compression: none
2025-09-28T18:32:38.338 [DEBUG] [Thread-132230] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:38.356 [DEBUG] [Thread-132230] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:38.356 [DEBUG] [Thread-132230] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:38.357 [DEBUG] [Thread-132230] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:32:38.357 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:32:38.358 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:38.359 [DEBUG] [Thread-132230] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:38.359 [DEBUG] [Thread-132230] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:38.359 [DEBUG] [Thread-132230] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:38.359 [DEBUG] [Thread-132230] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:32:38.359 [DEBUG] [Thread-132230] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:38.383 [INFO] [Thread-132230] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:38.384 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:38.948 [DEBUG] [Thread-132230] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:38.948 [DEBUG] [Thread-132230] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:38.948 [DEBUG] [Thread-132230] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:32:38.990 [DEBUG] [Thread-132230] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:38.990 [DEBUG] [Thread-132230] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:38.992 [DEBUG] [Thread-132230] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:39.003 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:39.003 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:32:39.004 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:32:39.005 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:32:39.009 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:39.010 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:32:39.010 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688968 -999.00  +13.40  14.01     54   +4.30 1 1 1 1 1   883    0 7.43 -77.98 ----- 14.0 14.0 207.3 24.1 15.2 -24.9 15.1 -23.8 15.3 -24.3 15.6 -25.0
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688968
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:32:39.010 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:32:06', tmtdew=10.32, humidity=49.45, cloud=0.0, wind=22.48, temperature=13.32, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:32:06.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:32:39.011 [DEBUG] [Thread-132230] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:39.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-28T18:32:39.096 [DEBUG] [Thread-132233] [transport.py] [_log()] starting thread (client mode): 0x2e3c2c50
2025-09-28T18:32:39.097 [DEBUG] [Thread-132233] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:39.111 [DEBUG] [Thread-132233] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:32:39.111 [INFO] [Thread-132233] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] Compression: none
2025-09-28T18:32:39.119 [DEBUG] [Thread-132233] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:39.174 [DEBUG] [Thread-132233] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:39.174 [DEBUG] [Thread-132233] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:39.175 [DEBUG] [Thread-132233] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:32:39.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:32:39.175 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:39.232 [DEBUG] [Thread-132233] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:39.232 [DEBUG] [Thread-132233] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:39.232 [DEBUG] [Thread-132233] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:39.232 [DEBUG] [Thread-132233] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:32:39.232 [DEBUG] [Thread-132233] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:39.246 [INFO] [Thread-132233] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:39.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-28T18:32:39.246 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:40.222 [DEBUG] [Thread-132233] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:40.222 [DEBUG] [Thread-132233] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:40.270 [DEBUG] [Thread-132233] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:40.270 [DEBUG] [Thread-132233] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:40.278 [DEBUG] [Thread-132233] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:40.285 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:40.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-28T18:32:40.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-28T18:32:40.301 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:40.301 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:40.301 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:40.309 [DEBUG] [Thread-132233] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:49.837 [DEBUG] [Thread-132235 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:32:50.311 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:32:50.312 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:32:50.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-28T18:32:50.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 32, 38), 10.21, 49.98, 0.0, 22.83, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:32:50.890 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:32:38
2025-09-28T18:32:50.996 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:32:51.143 [DEBUG] [Thread-132236] [transport.py] [_log()] starting thread (client mode): 0x2b91e590
2025-09-28T18:32:51.143 [DEBUG] [Thread-132236] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:51.158 [DEBUG] [Thread-132236] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:32:51.158 [INFO] [Thread-132236] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:51.162 [DEBUG] [Thread-132236] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:51.163 [DEBUG] [Thread-132236] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:51.163 [DEBUG] [Thread-132236] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:51.163 [DEBUG] [Thread-132236] [transport.py] [_log()] Compression: none
2025-09-28T18:32:51.163 [DEBUG] [Thread-132236] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:51.181 [DEBUG] [Thread-132236] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:51.181 [DEBUG] [Thread-132236] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:51.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:32:51.182 [DEBUG] [Thread-132236] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:32:51.183 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:51.184 [DEBUG] [Thread-132236] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:51.184 [DEBUG] [Thread-132236] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:51.184 [DEBUG] [Thread-132236] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:51.184 [DEBUG] [Thread-132236] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:32:51.184 [DEBUG] [Thread-132236] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:51.207 [INFO] [Thread-132236] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:51.208 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:52.004 [DEBUG] [Thread-132236] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:52.004 [DEBUG] [Thread-132236] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:52.004 [DEBUG] [Thread-132236] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:32:52.045 [DEBUG] [Thread-132236] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:52.045 [DEBUG] [Thread-132236] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:52.047 [DEBUG] [Thread-132236] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:52.058 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:52.058 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:32:52.060 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:32:52.061 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:32:52.066 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:52.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:32:52.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:52.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:52.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:32:52.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.688968 -999.00  +13.40  14.01     54   +4.30 1 1 1 1 1   883    0 7.43 -77.98 ----- 14.0 14.0 207.3 24.1 15.2 -24.9 15.1 -23.8 15.3 -24.3 15.6 -25.0
2025-09-28T18:32:52.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:32:52.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:32:52.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.688968
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:32:52.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:32:38', tmtdew=10.21, humidity=49.98, cloud=0.0, wind=22.83, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:32:06.835', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:32:52.070 [DEBUG] [Thread-132236] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:32:52.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-28T18:32:52.162 [DEBUG] [Thread-132239] [transport.py] [_log()] starting thread (client mode): 0x2b9964a0
2025-09-28T18:32:52.163 [DEBUG] [Thread-132239] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:32:52.177 [DEBUG] [Thread-132239] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:32:52.177 [INFO] [Thread-132239] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:32:52.185 [DEBUG] [Thread-132239] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:32:52.185 [DEBUG] [Thread-132239] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] client lang: <none>
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] server lang: <none>
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] kex follows: False
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] Compression: none
2025-09-28T18:32:52.186 [DEBUG] [Thread-132239] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:32:52.243 [DEBUG] [Thread-132239] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:32:52.244 [DEBUG] [Thread-132239] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:32:52.244 [DEBUG] [Thread-132239] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:32:52.244 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:32:52.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:32:52.300 [DEBUG] [Thread-132239] [transport.py] [_log()] userauth is OK
2025-09-28T18:32:52.300 [DEBUG] [Thread-132239] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:32:52.300 [DEBUG] [Thread-132239] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:32:52.300 [DEBUG] [Thread-132239] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:32:52.300 [DEBUG] [Thread-132239] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:32:52.319 [INFO] [Thread-132239] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:32:52.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-28T18:32:52.320 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:32:53.305 [DEBUG] [Thread-132239] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:32:53.305 [DEBUG] [Thread-132239] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:32:53.353 [DEBUG] [Thread-132239] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:32:53.353 [DEBUG] [Thread-132239] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:32:53.362 [DEBUG] [Thread-132239] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:32:53.371 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:32:53.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-28T18:32: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') -> 00000000
2025-09-28T18:32:53.389 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:32:53.389 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:32:53.390 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:32:53.398 [DEBUG] [Thread-132239] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:03.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:33:03.399 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:33:03.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-28T18:33:03.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 32, 38), 10.21, 49.98, 0.0, 22.83, 13.23, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:33:03.990 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:32:38
2025-09-28T18:33:04.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:33:04.254 [DEBUG] [Thread-132241] [transport.py] [_log()] starting thread (client mode): 0x2e3c3cd0
2025-09-28T18:33:04.254 [DEBUG] [Thread-132241] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:04.274 [DEBUG] [Thread-132241] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:33:04.274 [INFO] [Thread-132241] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:33:04.277 [DEBUG] [Thread-132241] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:04.277 [DEBUG] [Thread-132241] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] Compression: none
2025-09-28T18:33:04.278 [DEBUG] [Thread-132241] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:04.286 [DEBUG] [Thread-132241] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:04.286 [DEBUG] [Thread-132241] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:04.286 [DEBUG] [Thread-132241] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:33:04.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:33:04.286 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:04.287 [DEBUG] [Thread-132241] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:04.287 [DEBUG] [Thread-132241] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:04.287 [DEBUG] [Thread-132241] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:04.287 [DEBUG] [Thread-132241] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:33:04.287 [DEBUG] [Thread-132241] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:04.296 [INFO] [Thread-132241] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:04.296 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:04.886 [DEBUG] [Thread-132243 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:04.900 [DEBUG] [Thread-132241] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:04.901 [DEBUG] [Thread-132241] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:04.901 [DEBUG] [Thread-132241] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:33:04.941 [DEBUG] [Thread-132241] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:04.941 [DEBUG] [Thread-132241] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:04.946 [DEBUG] [Thread-132241] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:04.958 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:04.958 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:33:04.960 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:33:04.962 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:33:04.967 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:04.969 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:33:04.969 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:04.969 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689315 -999.00  +13.40  15.53     54   +4.40 1 1 1 1 1   882    0 7.33 -78.51 ----- 15.5 15.5 220.0 25.5 15.2 -24.9 15.0 -24.0 15.2 -24.4 15.5 -25.1
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689315
2025-09-28T18:33:04.970 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:33:04.970 [DEBUG] [Thread-132241] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:04.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:33:04.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:33:04.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:33:04.971 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:33:04.972 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:32:38', tmtdew=10.21, humidity=49.98, cloud=0.0, wind=22.83, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:32:36.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:33:05.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-28T18:33:05.068 [DEBUG] [Thread-132245] [transport.py] [_log()] starting thread (client mode): 0x2b91ded0
2025-09-28T18:33:05.068 [DEBUG] [Thread-132245] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:05.082 [DEBUG] [Thread-132245] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:33:05.082 [INFO] [Thread-132245] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:33:05.089 [DEBUG] [Thread-132245] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] Compression: none
2025-09-28T18:33:05.090 [DEBUG] [Thread-132245] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:05.146 [DEBUG] [Thread-132245] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:05.146 [DEBUG] [Thread-132245] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:05.146 [DEBUG] [Thread-132245] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:33:05.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:33:05.146 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:05.203 [DEBUG] [Thread-132245] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:05.204 [DEBUG] [Thread-132245] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:05.204 [DEBUG] [Thread-132245] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:05.204 [DEBUG] [Thread-132245] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:33:05.204 [DEBUG] [Thread-132245] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:05.227 [INFO] [Thread-132245] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:05.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-28T18:33:05.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:06.207 [DEBUG] [Thread-132245] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:06.207 [DEBUG] [Thread-132245] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:06.255 [DEBUG] [Thread-132245] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:06.255 [DEBUG] [Thread-132245] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:06.264 [DEBUG] [Thread-132245] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:06.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:06.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-28T18:33:06.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-28T18:33:06.290 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:06.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:06.291 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:06.298 [DEBUG] [Thread-132245] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:16.301 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:33:16.301 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:33:16.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-28T18:33:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 33, 10), 10.15, 50.16, 0.0, 22.25, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:33:16.880 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:33:10
2025-09-28T18:33:16.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:33:17.133 [DEBUG] [Thread-132247] [transport.py] [_log()] starting thread (client mode): 0x2b9a8640
2025-09-28T18:33:17.134 [DEBUG] [Thread-132247] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:17.153 [DEBUG] [Thread-132247] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:33:17.153 [INFO] [Thread-132247] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:33:17.156 [DEBUG] [Thread-132247] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:17.156 [DEBUG] [Thread-132247] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:33:17.156 [DEBUG] [Thread-132247] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:17.156 [DEBUG] [Thread-132247] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] Compression: none
2025-09-28T18:33:17.157 [DEBUG] [Thread-132247] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:17.180 [DEBUG] [Thread-132247] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:17.180 [DEBUG] [Thread-132247] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:17.181 [DEBUG] [Thread-132247] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:33:17.181 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:33:17.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:17.183 [DEBUG] [Thread-132247] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:17.183 [DEBUG] [Thread-132247] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:17.183 [DEBUG] [Thread-132247] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:17.183 [DEBUG] [Thread-132247] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:33:17.183 [DEBUG] [Thread-132247] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:17.206 [INFO] [Thread-132247] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:17.207 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:18.012 [DEBUG] [Thread-132247] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:18.012 [DEBUG] [Thread-132247] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:18.012 [DEBUG] [Thread-132247] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:33:18.052 [DEBUG] [Thread-132247] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:18.052 [DEBUG] [Thread-132247] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:18.056 [DEBUG] [Thread-132247] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:18.068 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:18.068 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:33:18.070 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:33:18.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:33:18.076 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:18.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:33:18.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:18.078 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:33:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689315 -999.00  +13.40  15.53     54   +4.40 1 1 1 1 1   882    0 7.33 -78.51 ----- 15.5 15.5 220.0 25.5 15.2 -24.9 15.0 -24.0 15.2 -24.4 15.5 -25.1
2025-09-28T18:33:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:33:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:33:18.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689315
2025-09-28T18:33:18.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:33:18.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:33:18.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:33:18.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:33:18.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:33:18.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:33:10', tmtdew=10.15, humidity=50.16, cloud=0.0, wind=22.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:32:36.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:33:18.081 [DEBUG] [Thread-132247] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:18.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-28T18:33:18.175 [DEBUG] [Thread-132250] [transport.py] [_log()] starting thread (client mode): 0x2b91ffd0
2025-09-28T18:33:18.175 [DEBUG] [Thread-132250] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:18.190 [DEBUG] [Thread-132250] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:33:18.190 [INFO] [Thread-132250] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] Compression: none
2025-09-28T18:33:18.198 [DEBUG] [Thread-132250] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:18.260 [DEBUG] [Thread-132250] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:18.261 [DEBUG] [Thread-132250] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:18.261 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:33:18.262 [DEBUG] [Thread-132250] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:33:18.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:18.316 [DEBUG] [Thread-132250] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:18.316 [DEBUG] [Thread-132250] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:18.316 [DEBUG] [Thread-132250] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:18.316 [DEBUG] [Thread-132250] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:33:18.316 [DEBUG] [Thread-132250] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:18.336 [INFO] [Thread-132250] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:18.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-28T18:33:18.337 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:19.332 [DEBUG] [Thread-132250] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:19.332 [DEBUG] [Thread-132250] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:19.380 [DEBUG] [Thread-132250] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:19.380 [DEBUG] [Thread-132250] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:19.389 [DEBUG] [Thread-132250] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:19.398 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:19.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-28T18:33:19.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-28T18:33:19.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:19.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:19.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:19.427 [DEBUG] [Thread-132250] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:19.940 [DEBUG] [Thread-132252 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:27.408 [DEBUG] [Thread-132253 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:29.429 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:33:29.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:33:29.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-28T18:33:30.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 33, 10), 10.15, 50.16, 0.0, 22.25, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:33:30.018 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:33:10
2025-09-28T18:33:30.124 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:33:30.274 [DEBUG] [Thread-132254] [transport.py] [_log()] starting thread (client mode): 0x2b9a8b80
2025-09-28T18:33:30.274 [DEBUG] [Thread-132254] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:30.296 [DEBUG] [Thread-132254] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:33:30.296 [INFO] [Thread-132254] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:33:30.297 [DEBUG] [Thread-132254] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:30.297 [DEBUG] [Thread-132254] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:33:30.297 [DEBUG] [Thread-132254] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:30.297 [DEBUG] [Thread-132254] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:30.297 [DEBUG] [Thread-132254] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] Compression: none
2025-09-28T18:33:30.298 [DEBUG] [Thread-132254] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:30.313 [DEBUG] [Thread-132254] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:30.313 [DEBUG] [Thread-132254] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:30.313 [DEBUG] [Thread-132254] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:33:30.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:33:30.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:30.314 [DEBUG] [Thread-132254] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:30.314 [DEBUG] [Thread-132254] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:30.314 [DEBUG] [Thread-132254] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:30.314 [DEBUG] [Thread-132254] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:33:30.314 [DEBUG] [Thread-132254] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:30.340 [INFO] [Thread-132254] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:30.341 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:31.093 [DEBUG] [Thread-132254] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:31.094 [DEBUG] [Thread-132254] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:31.094 [DEBUG] [Thread-132254] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:33:31.135 [DEBUG] [Thread-132254] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:31.135 [DEBUG] [Thread-132254] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:31.138 [DEBUG] [Thread-132254] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:31.149 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:31.150 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:33:31.151 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:33:31.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:33:31.157 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:31.158 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:33:31.158 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:31.158 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689315 -999.00  +13.40  15.53     54   +4.40 1 1 1 1 1   882    0 7.33 -78.51 ----- 15.5 15.5 220.0 25.5 15.2 -24.9 15.0 -24.0 15.2 -24.4 15.5 -25.1
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689315
2025-09-28T18:33:31.159 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:33:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:33:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:33:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:33:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:33:31.160 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:33:10', tmtdew=10.15, humidity=50.16, cloud=0.0, wind=22.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:32:36.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:33:31.161 [DEBUG] [Thread-132254] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:31.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-28T18:33:31.256 [DEBUG] [Thread-132257] [transport.py] [_log()] starting thread (client mode): 0x2b9e4f70
2025-09-28T18:33:31.256 [DEBUG] [Thread-132257] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:31.271 [DEBUG] [Thread-132257] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:33:31.271 [INFO] [Thread-132257] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:33:31.279 [DEBUG] [Thread-132257] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:31.279 [DEBUG] [Thread-132257] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:33:31.279 [DEBUG] [Thread-132257] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] Compression: none
2025-09-28T18:33:31.280 [DEBUG] [Thread-132257] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:31.335 [DEBUG] [Thread-132257] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:31.335 [DEBUG] [Thread-132257] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:31.336 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:33:31.336 [DEBUG] [Thread-132257] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:33:31.337 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:31.392 [DEBUG] [Thread-132257] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:31.392 [DEBUG] [Thread-132257] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:31.392 [DEBUG] [Thread-132257] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:31.392 [DEBUG] [Thread-132257] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:33:31.392 [DEBUG] [Thread-132257] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:31.416 [INFO] [Thread-132257] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:31.416 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:33:31.417 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:32.483 [DEBUG] [Thread-132257] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:32.483 [DEBUG] [Thread-132257] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:32.531 [DEBUG] [Thread-132257] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:32.531 [DEBUG] [Thread-132257] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:32.540 [DEBUG] [Thread-132257] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:32.548 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:32.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-28T18:33:32.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-28T18:33:32.565 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:32.565 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:32.566 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:32.573 [DEBUG] [Thread-132257] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:34.981 [DEBUG] [Thread-132259 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:38.298 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:38.299 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:42.576 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:33:42.576 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:33:42.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-28T18:33:43.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 33, 10), 10.15, 50.16, 0.0, 22.25, 13.2, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:33:43.210 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:33:10
2025-09-28T18:33:43.324 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:33:43.478 [DEBUG] [Thread-132260] [transport.py] [_log()] starting thread (client mode): 0x2b9e4940
2025-09-28T18:33:43.478 [DEBUG] [Thread-132260] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:43.498 [DEBUG] [Thread-132260] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:33:43.498 [INFO] [Thread-132260] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:33:43.501 [DEBUG] [Thread-132260] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:43.501 [DEBUG] [Thread-132260] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] Compression: none
2025-09-28T18:33:43.502 [DEBUG] [Thread-132260] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:43.520 [DEBUG] [Thread-132260] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:43.520 [DEBUG] [Thread-132260] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:43.521 [DEBUG] [Thread-132260] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:33:43.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:33:43.521 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:43.522 [DEBUG] [Thread-132260] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:43.522 [DEBUG] [Thread-132260] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:43.522 [DEBUG] [Thread-132260] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:43.522 [DEBUG] [Thread-132260] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:33:43.522 [DEBUG] [Thread-132260] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:43.531 [INFO] [Thread-132260] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:43.532 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:44.168 [DEBUG] [Thread-132260] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:44.168 [DEBUG] [Thread-132260] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:44.168 [DEBUG] [Thread-132260] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:33:44.209 [DEBUG] [Thread-132260] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:44.209 [DEBUG] [Thread-132260] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:44.211 [DEBUG] [Thread-132260] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:44.223 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:44.223 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:33:44.224 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:33:44.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:33:44.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:44.227 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:33:44.227 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:44.227 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689663 -999.00  +13.40  15.03     54   +4.40 1 1 1 1 1   882    0 7.50 -78.08 ----- 15.0 15.0 212.3 29.8 15.1 -25.1 15.0 -24.2 15.2 -24.1 15.4 -24.8
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689663
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:33:44.228 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:33:10', tmtdew=10.15, humidity=50.16, cloud=0.0, wind=22.25, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:33:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:33:44.228 [DEBUG] [Thread-132260] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:44.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-28T18:33:44.315 [DEBUG] [Thread-132263] [transport.py] [_log()] starting thread (client mode): 0x2e3c1d50
2025-09-28T18:33:44.315 [DEBUG] [Thread-132263] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:44.330 [DEBUG] [Thread-132263] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:33:44.330 [INFO] [Thread-132263] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:44.338 [DEBUG] [Thread-132263] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] Compression: none
2025-09-28T18:33:44.339 [DEBUG] [Thread-132263] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:44.395 [DEBUG] [Thread-132263] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:44.396 [DEBUG] [Thread-132263] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:44.396 [DEBUG] [Thread-132263] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:33:44.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:33:44.397 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:44.451 [DEBUG] [Thread-132263] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:44.452 [DEBUG] [Thread-132263] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:44.452 [DEBUG] [Thread-132263] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:44.452 [DEBUG] [Thread-132263] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:33:44.452 [DEBUG] [Thread-132263] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:44.471 [INFO] [Thread-132263] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:44.472 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:33:44.472 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:45.421 [DEBUG] [Thread-132263] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:45.421 [DEBUG] [Thread-132263] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:45.468 [DEBUG] [Thread-132263] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:45.468 [DEBUG] [Thread-132263] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:45.477 [DEBUG] [Thread-132263] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:45.485 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:45.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-28T18:33:45.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-28T18:33:45.503 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:45.503 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:45.504 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:45.511 [DEBUG] [Thread-132263] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:50.010 [DEBUG] [Thread-132265 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:33:55.513 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:33:55.513 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:33:55.514 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:33:56.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 33, 42), 9.97, 50.61, 0.0, 22.32, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:33:56.087 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:33:42
2025-09-28T18:33:56.193 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:33:56.341 [DEBUG] [Thread-132266] [transport.py] [_log()] starting thread (client mode): 0x2b9955a0
2025-09-28T18:33:56.341 [DEBUG] [Thread-132266] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:56.362 [DEBUG] [Thread-132266] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:33:56.362 [INFO] [Thread-132266] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:56.365 [DEBUG] [Thread-132266] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:56.366 [DEBUG] [Thread-132266] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:56.366 [DEBUG] [Thread-132266] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:56.366 [DEBUG] [Thread-132266] [transport.py] [_log()] Compression: none
2025-09-28T18:33:56.366 [DEBUG] [Thread-132266] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:56.387 [DEBUG] [Thread-132266] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:56.388 [DEBUG] [Thread-132266] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:56.389 [DEBUG] [Thread-132266] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:33:56.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:33:56.389 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:56.391 [DEBUG] [Thread-132266] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:56.391 [DEBUG] [Thread-132266] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:56.391 [DEBUG] [Thread-132266] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:56.391 [DEBUG] [Thread-132266] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:33:56.391 [DEBUG] [Thread-132266] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:56.414 [INFO] [Thread-132266] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:56.416 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:57.217 [DEBUG] [Thread-132266] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:57.217 [DEBUG] [Thread-132266] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:57.218 [DEBUG] [Thread-132266] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:33:57.258 [DEBUG] [Thread-132266] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:57.259 [DEBUG] [Thread-132266] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:57.261 [DEBUG] [Thread-132266] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:57.273 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:57.274 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:33:57.275 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:33:57.277 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:33:57.281 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:57.283 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:33:57.283 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:57.283 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:57.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:33:57.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689663 -999.00  +13.40  15.03     54   +4.40 1 1 1 1 1   882    0 7.50 -78.08 ----- 15.0 15.0 212.3 29.8 15.1 -25.1 15.0 -24.2 15.2 -24.1 15.4 -24.8
2025-09-28T18:33:57.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:33:57.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:33:57.284 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689663
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:33:57.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:33:42', tmtdew=9.97, humidity=50.61, cloud=0.0, wind=22.32, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:33:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:33:57.286 [DEBUG] [Thread-132266] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:33:57.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-28T18:33:57.380 [DEBUG] [Thread-132269] [transport.py] [_log()] starting thread (client mode): 0x2b997670
2025-09-28T18:33:57.380 [DEBUG] [Thread-132269] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:33:57.395 [DEBUG] [Thread-132269] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:33:57.395 [INFO] [Thread-132269] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:33:57.402 [DEBUG] [Thread-132269] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:33:57.402 [DEBUG] [Thread-132269] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:33:57.402 [DEBUG] [Thread-132269] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] client lang: <none>
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] server lang: <none>
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] kex follows: False
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] Compression: none
2025-09-28T18:33:57.403 [DEBUG] [Thread-132269] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:33:57.459 [DEBUG] [Thread-132269] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:33:57.459 [DEBUG] [Thread-132269] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:33:57.460 [DEBUG] [Thread-132269] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:33:57.460 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:33:57.461 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:33:57.519 [DEBUG] [Thread-132269] [transport.py] [_log()] userauth is OK
2025-09-28T18:33:57.519 [DEBUG] [Thread-132269] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:33:57.519 [DEBUG] [Thread-132269] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:33:57.519 [DEBUG] [Thread-132269] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:33:57.519 [DEBUG] [Thread-132269] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:33:57.541 [INFO] [Thread-132269] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:33:57.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-28T18:33:57.541 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:33:58.467 [DEBUG] [Thread-132269] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:33:58.467 [DEBUG] [Thread-132269] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:33:58.515 [DEBUG] [Thread-132269] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:33:58.515 [DEBUG] [Thread-132269] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:33:58.524 [DEBUG] [Thread-132269] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:33:58.533 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:33:58.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-28T18:33:58.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-28T18:33:58.550 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:33:58.550 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:33:58.550 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:33:58.557 [DEBUG] [Thread-132269] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:05.055 [DEBUG] [Thread-132271 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:08.560 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:34:08.560 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:34:08.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-28T18:34:09.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 33, 42), 9.97, 50.61, 0.0, 22.32, 13.13, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:34:09.130 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:33:42
2025-09-28T18:34:09.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:34:09.385 [DEBUG] [Thread-132272] [transport.py] [_log()] starting thread (client mode): 0x2b9dc370
2025-09-28T18:34:09.385 [DEBUG] [Thread-132272] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:09.404 [DEBUG] [Thread-132272] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:34:09.404 [INFO] [Thread-132272] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:34:09.406 [DEBUG] [Thread-132272] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:09.406 [DEBUG] [Thread-132272] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] Compression: none
2025-09-28T18:34:09.407 [DEBUG] [Thread-132272] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:09.419 [DEBUG] [Thread-132272] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:09.419 [DEBUG] [Thread-132272] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:09.420 [DEBUG] [Thread-132272] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:34:09.420 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:34:09.421 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:09.422 [DEBUG] [Thread-132272] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:09.422 [DEBUG] [Thread-132272] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:09.422 [DEBUG] [Thread-132272] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:09.422 [DEBUG] [Thread-132272] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:34:09.422 [DEBUG] [Thread-132272] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:09.440 [INFO] [Thread-132272] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:09.441 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:10.170 [DEBUG] [Thread-132272] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:10.170 [DEBUG] [Thread-132272] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:10.170 [DEBUG] [Thread-132272] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:34:10.211 [DEBUG] [Thread-132272] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:10.211 [DEBUG] [Thread-132272] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:10.214 [DEBUG] [Thread-132272] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:10.225 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:10.225 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:34:10.227 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:34:10.228 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:34:10.233 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:10.235 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:34:10.235 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:10.235 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:10.235 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:34:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.689663 -999.00  +13.40  15.03     54   +4.40 1 1 1 1 1   882    0 7.50 -78.08 ----- 15.0 15.0 212.3 29.8 15.1 -25.1 15.0 -24.2 15.2 -24.1 15.4 -24.8
2025-09-28T18:34:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:34:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:34:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.689663
2025-09-28T18:34:10.236 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:34:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:34:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:34:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:34:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:34:10.237 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:33:42', tmtdew=9.97, humidity=50.61, cloud=0.0, wind=22.32, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:33:06.883', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:34:10.237 [DEBUG] [Thread-132272] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:10.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-28T18:34:10.334 [DEBUG] [Thread-132275] [transport.py] [_log()] starting thread (client mode): 0x2e3c1600
2025-09-28T18:34:10.334 [DEBUG] [Thread-132275] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:10.348 [DEBUG] [Thread-132275] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:34:10.348 [INFO] [Thread-132275] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:34:10.355 [DEBUG] [Thread-132275] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:10.356 [DEBUG] [Thread-132275] [transport.py] [_log()] Compression: none
2025-09-28T18:34:10.357 [DEBUG] [Thread-132275] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:10.416 [DEBUG] [Thread-132275] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:10.417 [DEBUG] [Thread-132275] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:10.417 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:34:10.417 [DEBUG] [Thread-132275] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:34:10.418 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:10.472 [DEBUG] [Thread-132275] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:10.472 [DEBUG] [Thread-132275] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:10.472 [DEBUG] [Thread-132275] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:10.472 [DEBUG] [Thread-132275] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:34:10.472 [DEBUG] [Thread-132275] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:10.491 [INFO] [Thread-132275] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:10.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-28T18:34:10.492 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:11.490 [DEBUG] [Thread-132275] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:11.490 [DEBUG] [Thread-132275] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:11.538 [DEBUG] [Thread-132275] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:11.538 [DEBUG] [Thread-132275] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:11.547 [DEBUG] [Thread-132275] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:11.556 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:11.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-28T18:34:11.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-28T18:34:11.573 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:11.573 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:11.574 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:11.581 [DEBUG] [Thread-132275] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:20.103 [DEBUG] [Thread-132277 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:21.584 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:34:21.585 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:34: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-28T18:34:22.152 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 34, 14), 10.02, 50.46, 0.0, 21.76, 13.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:34:22.153 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:34:14
2025-09-28T18:34:22.263 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:34:22.411 [DEBUG] [Thread-132278] [transport.py] [_log()] starting thread (client mode): 0x2b9dd240
2025-09-28T18:34:22.411 [DEBUG] [Thread-132278] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:22.430 [DEBUG] [Thread-132278] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:34:22.430 [INFO] [Thread-132278] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:34:22.433 [DEBUG] [Thread-132278] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] Compression: none
2025-09-28T18:34:22.434 [DEBUG] [Thread-132278] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:22.453 [DEBUG] [Thread-132278] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:22.453 [DEBUG] [Thread-132278] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:22.454 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:34:22.454 [DEBUG] [Thread-132278] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:34:22.455 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:22.456 [DEBUG] [Thread-132278] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:22.456 [DEBUG] [Thread-132278] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:22.456 [DEBUG] [Thread-132278] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:22.456 [DEBUG] [Thread-132278] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:34:22.457 [DEBUG] [Thread-132278] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:22.480 [INFO] [Thread-132278] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:22.481 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:23.089 [DEBUG] [Thread-132278] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:23.089 [DEBUG] [Thread-132278] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:23.090 [DEBUG] [Thread-132278] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:34:23.130 [DEBUG] [Thread-132278] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:23.130 [DEBUG] [Thread-132278] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:23.133 [DEBUG] [Thread-132278] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:23.145 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:23.145 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:34:23.147 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:34:23.148 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:34:23.153 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:23.155 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:34:23.155 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:23.155 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.690357 -999.00  +13.30  10.89     54   +4.40 1 1 1 1 1   880    0 7.07 -80.46 ----- 10.9 10.9 217.2 27.5 15.1 -24.9 14.9 -23.9 15.1 -24.2 15.3 -25.4
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.690357
2025-09-28T18:34:23.156 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:34:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:34:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:34:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:34:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:34:23.157 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:34:14', tmtdew=10.02, humidity=50.46, cloud=0.0, wind=21.76, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:34:06.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:34:23.158 [DEBUG] [Thread-132278] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:23.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-28T18:34:23.252 [DEBUG] [Thread-132281] [transport.py] [_log()] starting thread (client mode): 0x2b9dcac0
2025-09-28T18:34:23.252 [DEBUG] [Thread-132281] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:23.267 [DEBUG] [Thread-132281] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:34:23.267 [INFO] [Thread-132281] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] Compression: none
2025-09-28T18:34:23.275 [DEBUG] [Thread-132281] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:23.330 [DEBUG] [Thread-132281] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:23.331 [DEBUG] [Thread-132281] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:23.331 [DEBUG] [Thread-132281] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:34:23.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:34:23.332 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:23.387 [DEBUG] [Thread-132281] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:23.388 [DEBUG] [Thread-132281] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:23.388 [DEBUG] [Thread-132281] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:23.388 [DEBUG] [Thread-132281] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:34:23.388 [DEBUG] [Thread-132281] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:23.406 [INFO] [Thread-132281] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:23.407 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:34:23.407 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:24.396 [DEBUG] [Thread-132281] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:24.397 [DEBUG] [Thread-132281] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:24.444 [DEBUG] [Thread-132281] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:24.444 [DEBUG] [Thread-132281] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:24.453 [DEBUG] [Thread-132281] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:24.462 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34: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')
2025-09-28T18:34:24.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-28T18:34:24.479 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:24.479 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:24.480 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:24.487 [DEBUG] [Thread-132281] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:27.502 [DEBUG] [Thread-132283 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:34.481 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:34:34.481 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:34:34.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-28T18:34:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 34, 14), 10.02, 50.46, 0.0, 21.76, 13.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:34:35.036 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:34:14
2025-09-28T18:34:35.131 [DEBUG] [Thread-132284 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:35.147 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:34:35.298 [DEBUG] [Thread-132285] [transport.py] [_log()] starting thread (client mode): 0x2b9dc7c0
2025-09-28T18:34:35.298 [DEBUG] [Thread-132285] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:35.318 [DEBUG] [Thread-132285] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:34:35.318 [INFO] [Thread-132285] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:35.321 [DEBUG] [Thread-132285] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] Compression: none
2025-09-28T18:34:35.322 [DEBUG] [Thread-132285] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:35.339 [DEBUG] [Thread-132285] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:35.339 [DEBUG] [Thread-132285] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:35.340 [DEBUG] [Thread-132285] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:34:35.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:34:35.340 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:35.341 [DEBUG] [Thread-132285] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:35.342 [DEBUG] [Thread-132285] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:35.342 [DEBUG] [Thread-132285] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:35.342 [DEBUG] [Thread-132285] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:34:35.342 [DEBUG] [Thread-132285] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:35.362 [INFO] [Thread-132285] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:35.363 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:36.134 [DEBUG] [Thread-132285] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:36.134 [DEBUG] [Thread-132285] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:36.134 [DEBUG] [Thread-132285] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:34:36.175 [DEBUG] [Thread-132285] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:36.175 [DEBUG] [Thread-132285] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:36.177 [DEBUG] [Thread-132285] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:36.191 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:36.191 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:34:36.193 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:34:36.194 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:34:36.199 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:36.201 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:34:36.201 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:36.201 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.690357 -999.00  +13.30  10.89     54   +4.40 1 1 1 1 1   880    0 7.07 -80.46 ----- 10.9 10.9 217.2 27.5 15.1 -24.9 14.9 -23.9 15.1 -24.2 15.3 -25.4
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.690357
2025-09-28T18:34:36.202 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:34:36.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:34:36.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:34:36.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:34:36.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:34:36.203 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:34:14', tmtdew=10.02, humidity=50.46, cloud=0.0, wind=21.76, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:34:06.845', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:34:36.204 [DEBUG] [Thread-132285] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:36.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-28T18:34:36.293 [DEBUG] [Thread-132288] [transport.py] [_log()] starting thread (client mode): 0x2b9dfe20
2025-09-28T18:34:36.293 [DEBUG] [Thread-132288] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:36.308 [DEBUG] [Thread-132288] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:34:36.308 [INFO] [Thread-132288] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:36.315 [DEBUG] [Thread-132288] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] Compression: none
2025-09-28T18:34:36.316 [DEBUG] [Thread-132288] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:36.378 [DEBUG] [Thread-132288] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:36.378 [DEBUG] [Thread-132288] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:36.378 [DEBUG] [Thread-132288] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:34:36.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:34:36.378 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:36.439 [DEBUG] [Thread-132288] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:36.439 [DEBUG] [Thread-132288] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:36.439 [DEBUG] [Thread-132288] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:36.439 [DEBUG] [Thread-132288] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:34:36.439 [DEBUG] [Thread-132288] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:36.455 [INFO] [Thread-132288] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:36.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-28T18:34:36.456 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:37.403 [DEBUG] [Thread-132288] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:37.403 [DEBUG] [Thread-132288] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:37.451 [DEBUG] [Thread-132288] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:37.451 [DEBUG] [Thread-132288] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:37.460 [DEBUG] [Thread-132288] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:37.469 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:37.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-28T18:34:37.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-28T18:34:37.487 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:37.487 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:37.487 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:37.495 [DEBUG] [Thread-132288] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:45.816 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:45.817 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:47.497 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:34:47.497 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:34:47.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-28T18:34:48.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 34, 14), 10.02, 50.46, 0.0, 21.76, 13.18, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:34:48.089 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:34:14
2025-09-28T18:34:48.204 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:34:48.355 [DEBUG] [Thread-132290] [transport.py] [_log()] starting thread (client mode): 0x2b9df1f0
2025-09-28T18:34:48.355 [DEBUG] [Thread-132290] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:48.375 [DEBUG] [Thread-132290] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:34:48.376 [INFO] [Thread-132290] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:34:48.377 [DEBUG] [Thread-132290] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:48.377 [DEBUG] [Thread-132290] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] Compression: none
2025-09-28T18:34:48.378 [DEBUG] [Thread-132290] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:48.390 [DEBUG] [Thread-132290] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:48.390 [DEBUG] [Thread-132290] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:48.391 [DEBUG] [Thread-132290] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:34:48.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:34:48.391 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:48.392 [DEBUG] [Thread-132290] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:48.392 [DEBUG] [Thread-132290] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:48.392 [DEBUG] [Thread-132290] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:48.392 [DEBUG] [Thread-132290] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:34:48.393 [DEBUG] [Thread-132290] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:48.412 [INFO] [Thread-132290] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:48.412 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:48.981 [DEBUG] [Thread-132290] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:48.981 [DEBUG] [Thread-132290] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:48.981 [DEBUG] [Thread-132290] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:34:49.022 [DEBUG] [Thread-132290] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:49.022 [DEBUG] [Thread-132290] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:49.023 [DEBUG] [Thread-132290] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:49.035 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:49.035 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:34:49.036 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:34:49.037 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:34:49.039 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:49.040 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:34:49.040 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.690704 -999.00  +13.30   9.67     55   +4.40 1 1 1 1 1   879    0 7.22 -76.80 ----- 9.7 9.7 222.9 21.7 15.1 -24.8 14.9 -23.7 15.0 -24.0 15.3 -24.9
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.690704
2025-09-28T18:34:49.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:34:49.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:34:49.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:34:49.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:34:49.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:34:49.041 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:34:14', tmtdew=10.02, humidity=50.46, cloud=0.0, wind=21.76, temperature=13.18, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:34:36.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:34:49.041 [DEBUG] [Thread-132290] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:34:49.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:34:49.135 [DEBUG] [Thread-132293] [transport.py] [_log()] starting thread (client mode): 0x2b9dca30
2025-09-28T18:34:49.135 [DEBUG] [Thread-132293] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:34:49.149 [DEBUG] [Thread-132293] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:34:49.149 [INFO] [Thread-132293] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] client lang: <none>
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] server lang: <none>
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] kex follows: False
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] Compression: none
2025-09-28T18:34:49.157 [DEBUG] [Thread-132293] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:34:49.220 [DEBUG] [Thread-132293] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:34:49.220 [DEBUG] [Thread-132293] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:34:49.221 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:34:49.221 [DEBUG] [Thread-132293] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:34:49.222 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:34:49.279 [DEBUG] [Thread-132293] [transport.py] [_log()] userauth is OK
2025-09-28T18:34:49.279 [DEBUG] [Thread-132293] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:34:49.279 [DEBUG] [Thread-132293] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:34:49.279 [DEBUG] [Thread-132293] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:34:49.279 [DEBUG] [Thread-132293] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:34:49.298 [INFO] [Thread-132293] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:34:49.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-28T18:34:49.299 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:34:50.167 [DEBUG] [Thread-132295 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:34:50.288 [DEBUG] [Thread-132293] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:34:50.288 [DEBUG] [Thread-132293] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:34:50.336 [DEBUG] [Thread-132293] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:34:50.336 [DEBUG] [Thread-132293] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:34:50.344 [DEBUG] [Thread-132293] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:34:50.352 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:34:50.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-28T18:34:50.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-28T18:34:50.367 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:34:50.368 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:34:50.368 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:34:50.375 [DEBUG] [Thread-132293] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:00.373 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:35:00.373 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:35:00.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-28T18:35:00.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 34, 46), 9.99, 51.04, 0.0, 19.74, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:35:00.946 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:34:46
2025-09-28T18:35:01.054 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:35:01.203 [DEBUG] [Thread-132296] [transport.py] [_log()] starting thread (client mode): 0x2b9dd9f0
2025-09-28T18:35:01.203 [DEBUG] [Thread-132296] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:35:01.224 [DEBUG] [Thread-132296] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:35:01.224 [INFO] [Thread-132296] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:35:01.227 [DEBUG] [Thread-132296] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:35:01.227 [DEBUG] [Thread-132296] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:35:01.227 [DEBUG] [Thread-132296] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] client lang: <none>
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] server lang: <none>
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] kex follows: False
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] Compression: none
2025-09-28T18:35:01.228 [DEBUG] [Thread-132296] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:35:01.244 [DEBUG] [Thread-132296] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:35:01.244 [DEBUG] [Thread-132296] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:35:01.245 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:35:01.245 [DEBUG] [Thread-132296] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:35:01.246 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:35:01.247 [DEBUG] [Thread-132296] [transport.py] [_log()] userauth is OK
2025-09-28T18:35:01.248 [DEBUG] [Thread-132296] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:35:01.248 [DEBUG] [Thread-132296] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:35:01.248 [DEBUG] [Thread-132296] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:35:01.248 [DEBUG] [Thread-132296] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:35:01.267 [INFO] [Thread-132296] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:35:01.269 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:35:02.054 [DEBUG] [Thread-132296] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:35:02.054 [DEBUG] [Thread-132296] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:35:02.055 [DEBUG] [Thread-132296] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:35:02.095 [DEBUG] [Thread-132296] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:35:02.095 [DEBUG] [Thread-132296] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:35:02.097 [DEBUG] [Thread-132296] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:35:02.104 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:35:02.104 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:35:02.105 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:35:02.107 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:35:02.111 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:35:02.113 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:35:02.113 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:35:02.113 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:35:02.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:35:02.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.690704 -999.00  +13.30   9.67     55   +4.40 1 1 1 1 1   879    0 7.22 -76.80 ----- 9.7 9.7 222.9 21.7 15.1 -24.8 14.9 -23.7 15.0 -24.0 15.3 -24.9
2025-09-28T18:35:02.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:35:02.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:35:02.114 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.690704
2025-09-28T18:35:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:35:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:35:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:35:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:35:02.115 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:35:02.116 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:34:46', tmtdew=9.99, humidity=51.04, cloud=0.0, wind=19.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:34:36.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:35:02.116 [DEBUG] [Thread-132296] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:02.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-28T18:35:02.214 [DEBUG] [Thread-132299] [transport.py] [_log()] starting thread (client mode): 0x2b91c5e0
2025-09-28T18:35:02.214 [DEBUG] [Thread-132299] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:35:02.229 [DEBUG] [Thread-132299] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:35:02.229 [INFO] [Thread-132299] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] client lang: <none>
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] server lang: <none>
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] kex follows: False
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] Compression: none
2025-09-28T18:35:02.236 [DEBUG] [Thread-132299] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:35:02.295 [DEBUG] [Thread-132299] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:35:02.295 [DEBUG] [Thread-132299] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:35:02.295 [DEBUG] [Thread-132299] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:35:02.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:35:02.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:35:02.351 [DEBUG] [Thread-132299] [transport.py] [_log()] userauth is OK
2025-09-28T18:35:02.351 [DEBUG] [Thread-132299] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:35:02.351 [DEBUG] [Thread-132299] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:35:02.351 [DEBUG] [Thread-132299] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:35:02.351 [DEBUG] [Thread-132299] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:35:02.365 [INFO] [Thread-132299] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:35:02.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-28T18:35:02.365 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:35:03.335 [DEBUG] [Thread-132299] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:35:03.336 [DEBUG] [Thread-132299] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:35:03.383 [DEBUG] [Thread-132299] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:35:03.383 [DEBUG] [Thread-132299] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:35:03.392 [DEBUG] [Thread-132299] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:35:03.401 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:35:03.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-28T18:35:03.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-28T18:35:03.419 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:35:03.419 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:35:03.419 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:35:03.430 [DEBUG] [Thread-132299] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:05.212 [DEBUG] [Thread-132301 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:13.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:35:13.430 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:35:13.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-28T18:35:13.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 34, 46), 9.99, 51.04, 0.0, 19.74, 13.17, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:35:13.995 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:34:46
2025-09-28T18:35:14.103 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:35:14.253 [DEBUG] [Thread-132302] [transport.py] [_log()] starting thread (client mode): 0x2b9ab9a0
2025-09-28T18:35:14.253 [DEBUG] [Thread-132302] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:35:14.271 [DEBUG] [Thread-132302] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:35:14.271 [INFO] [Thread-132302] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:35:14.274 [DEBUG] [Thread-132302] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:35:14.274 [DEBUG] [Thread-132302] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:35:14.274 [DEBUG] [Thread-132302] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:35:14.274 [DEBUG] [Thread-132302] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] client lang: <none>
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] server lang: <none>
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] kex follows: False
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] Compression: none
2025-09-28T18:35:14.275 [DEBUG] [Thread-132302] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:35:14.294 [DEBUG] [Thread-132302] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:35:14.294 [DEBUG] [Thread-132302] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:35:14.295 [DEBUG] [Thread-132302] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:35:14.295 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:35:14.296 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:35:14.297 [DEBUG] [Thread-132302] [transport.py] [_log()] userauth is OK
2025-09-28T18:35:14.297 [DEBUG] [Thread-132302] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:35:14.297 [DEBUG] [Thread-132302] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:35:14.297 [DEBUG] [Thread-132302] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:35:14.297 [DEBUG] [Thread-132302] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:35:14.315 [INFO] [Thread-132302] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:35:14.316 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:35:19.821 [DEBUG] [Thread-132302] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:35:19.821 [DEBUG] [Thread-132302] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:35:19.821 [DEBUG] [Thread-132302] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:35:19.862 [DEBUG] [Thread-132302] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:35:19.862 [DEBUG] [Thread-132302] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:35:19.864 [DEBUG] [Thread-132302] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:35:19.912 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:35:19.912 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:35:19.913 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:35:19.914 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:35:19.938 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:35:19.939 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:35:19.939 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.690704 -999.00  +13.30   9.67     55   +4.40 1 1 1 1 1   879    0 7.22 -76.80 ----- 9.7 9.7 222.9 21.7 15.1 -24.8 14.9 -23.7 15.0 -24.0 15.3 -24.9
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.690704
2025-09-28T18:35:19.939 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:35:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:35:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:35:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:35:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:35:19.940 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:34:46', tmtdew=9.99, humidity=51.04, cloud=0.0, wind=19.74, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:34:36.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:35:19.940 [DEBUG] [Thread-132302] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:20.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-28T18:35:20.024 [DEBUG] [Thread-132305] [transport.py] [_log()] starting thread (client mode): 0x2b9a8640
2025-09-28T18:35:20.024 [DEBUG] [Thread-132305] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:35:20.039 [DEBUG] [Thread-132305] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:35:20.039 [INFO] [Thread-132305] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] client lang: <none>
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] server lang: <none>
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] kex follows: False
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] Compression: none
2025-09-28T18:35:20.047 [DEBUG] [Thread-132305] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:35:20.101 [DEBUG] [Thread-132305] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:35:20.102 [DEBUG] [Thread-132305] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:35:20.102 [DEBUG] [Thread-132305] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:35:20.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:35:20.102 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:35:20.159 [DEBUG] [Thread-132305] [transport.py] [_log()] userauth is OK
2025-09-28T18:35:20.159 [DEBUG] [Thread-132305] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:35:20.160 [DEBUG] [Thread-132305] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:35:20.160 [DEBUG] [Thread-132305] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:35:20.160 [DEBUG] [Thread-132305] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:35:20.174 [INFO] [Thread-132305] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:35:20.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-28T18:35:20.174 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:35:20.259 [DEBUG] [Thread-132307 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:21.096 [DEBUG] [Thread-132305] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:35:21.096 [DEBUG] [Thread-132305] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:35:21.144 [DEBUG] [Thread-132305] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:35:21.144 [DEBUG] [Thread-132305] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:35:21.153 [DEBUG] [Thread-132305] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:35:21.162 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:35:21.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-28T18:35:21.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-28T18:35:21.180 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:35:21.181 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:35:21.181 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:35:21.189 [DEBUG] [Thread-132305] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:27.576 [DEBUG] [Thread-132308 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:31.191 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:35:31.191 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18: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-28T18:35:31.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 35, 18), 9.99, 51.06, 0.0, 22.8, 13.15, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:35:31.769 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:35:18
2025-09-28T18:35:31.884 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:35:32.037 [DEBUG] [Thread-132309] [transport.py] [_log()] starting thread (client mode): 0x2b91e110
2025-09-28T18:35:32.037 [DEBUG] [Thread-132309] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:35:32.049 [DEBUG] [Thread-132309] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:35:32.049 [INFO] [Thread-132309] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:35:32.050 [DEBUG] [Thread-132309] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] client lang: <none>
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] server lang: <none>
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] kex follows: False
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] Compression: none
2025-09-28T18:35:32.051 [DEBUG] [Thread-132309] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:35:32.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:35:32.059 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] userauth is OK
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:35:32.059 [DEBUG] [Thread-132309] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:35:32.060 [DEBUG] [Thread-132309] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:35:32.060 [DEBUG] [Thread-132309] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:35:32.069 [INFO] [Thread-132309] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:35:32.069 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:35:32.649 [DEBUG] [Thread-132309] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:35:32.649 [DEBUG] [Thread-132309] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:35:32.649 [DEBUG] [Thread-132309] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:35:32.690 [DEBUG] [Thread-132309] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:35:32.690 [DEBUG] [Thread-132309] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:35:32.693 [DEBUG] [Thread-132309] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:35:32.707 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:35:32.707 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:35:32.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:35:32.708 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:35:32.711 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:35:32.712 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:35:32.712 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.691051 -999.00  +13.30   8.96     55   +4.50 1 1 1 1 1   878    0 7.39 -73.80 ----- 9.0 9.0 201.4 17.9 15.1 -24.8 14.9 -24.8 14.9 -23.9 15.3 -25.1
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.691051
2025-09-28T18:35:32.712 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:35:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:35:32.713 [DEBUG] [Thread-132309] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:35:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:35:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:35:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:35:32.713 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:35:18', tmtdew=9.99, humidity=51.06, cloud=0.0, wind=22.8, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:35:06.806', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:35:32.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-28T18:35:35.290 [DEBUG] [Thread-132312 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:50.325 [DEBUG] [Thread-132313 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:53.808 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:35:53.809 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:36:05.353 [DEBUG] [Thread-132314 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:36:20.384 [DEBUG] [Thread-132315 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:36:27.667 [DEBUG] [Thread-132316 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:36:35.421 [DEBUG] [Thread-132317 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:36:50.449 [DEBUG] [Thread-132318 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:02.532 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:02.534 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:05.477 [DEBUG] [Thread-132319 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:20.508 [DEBUG] [Thread-132320 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:27.736 [DEBUG] [Thread-132321 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:35.540 [DEBUG] [Thread-132322 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:45.274 [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-28T18:37:50.572 [DEBUG] [Thread-132323 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:37:55.285 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:37:55.285 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:37: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-28T18:37:55.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 37, 25), 9.7, 51.34, 0.0, 23.7, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:37:55.893 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:37:25
2025-09-28T18:37:56.003 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:37:56.151 [DEBUG] [Thread-132324] [transport.py] [_log()] starting thread (client mode): 0x2b9dd150
2025-09-28T18:37:56.151 [DEBUG] [Thread-132324] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:37:56.165 [DEBUG] [Thread-132324] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:37:56.165 [INFO] [Thread-132324] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:37:56.166 [DEBUG] [Thread-132324] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:37:56.166 [DEBUG] [Thread-132324] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:37:56.166 [DEBUG] [Thread-132324] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:37:56.166 [DEBUG] [Thread-132324] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:37:56.166 [DEBUG] [Thread-132324] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] client lang: <none>
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] server lang: <none>
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] kex follows: False
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] Compression: none
2025-09-28T18:37:56.167 [DEBUG] [Thread-132324] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:37:56.180 [DEBUG] [Thread-132324] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:37:56.181 [DEBUG] [Thread-132324] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:37:56.182 [DEBUG] [Thread-132324] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:37:56.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:37:56.182 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:37:56.183 [DEBUG] [Thread-132324] [transport.py] [_log()] userauth is OK
2025-09-28T18:37:56.183 [DEBUG] [Thread-132324] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:37:56.183 [DEBUG] [Thread-132324] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:37:56.183 [DEBUG] [Thread-132324] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:37:56.183 [DEBUG] [Thread-132324] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:37:56.215 [INFO] [Thread-132324] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:37:56.215 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:37:57.000 [DEBUG] [Thread-132324] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:37:57.001 [DEBUG] [Thread-132324] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:37:57.001 [DEBUG] [Thread-132324] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:37:57.041 [DEBUG] [Thread-132324] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:37:57.041 [DEBUG] [Thread-132324] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:37:57.044 [DEBUG] [Thread-132324] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:37:57.055 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:37:57.055 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:37:57.057 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:37:57.059 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:37:57.065 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:37:57.067 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:37:57.067 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:37:57.067 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:37:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:37:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.692440 -999.00  +13.10  14.74     56   +4.50 1 1 1 1 1   874    0 7.54 -67.85 ----- 14.7 14.7 224.1 24.2 14.8 -24.8 14.7 -24.1 14.7 -23.9 15.0 -24.9
2025-09-28T18:37:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:37:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:37:57.068 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.692440
2025-09-28T18:37:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:37:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:37:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:37:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:37:57.069 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:37:57.070 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:37:25', tmtdew=9.7, humidity=51.34, cloud=0.0, wind=23.7, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:37:06.816', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:37:57.070 [DEBUG] [Thread-132324] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:37:57.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-28T18:37:57.168 [DEBUG] [Thread-132327] [transport.py] [_log()] starting thread (client mode): 0x2b9df430
2025-09-28T18:37:57.168 [DEBUG] [Thread-132327] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:37:57.182 [DEBUG] [Thread-132327] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:37:57.183 [INFO] [Thread-132327] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:37:57.190 [DEBUG] [Thread-132327] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:37:57.190 [DEBUG] [Thread-132327] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] client lang: <none>
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] server lang: <none>
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] kex follows: False
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] Compression: none
2025-09-28T18:37:57.191 [DEBUG] [Thread-132327] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:37:57.247 [DEBUG] [Thread-132327] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:37:57.248 [DEBUG] [Thread-132327] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:37:57.248 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:37:57.249 [DEBUG] [Thread-132327] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:37:57.250 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:37:57.308 [DEBUG] [Thread-132327] [transport.py] [_log()] userauth is OK
2025-09-28T18:37:57.308 [DEBUG] [Thread-132327] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:37:57.308 [DEBUG] [Thread-132327] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:37:57.308 [DEBUG] [Thread-132327] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:37:57.309 [DEBUG] [Thread-132327] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:37:57.329 [INFO] [Thread-132327] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:37:57.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-28T18:37:57.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:37:58.294 [DEBUG] [Thread-132327] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:37:58.294 [DEBUG] [Thread-132327] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:37:58.343 [DEBUG] [Thread-132327] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:37:58.343 [DEBUG] [Thread-132327] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:37:58.351 [DEBUG] [Thread-132327] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:37:58.360 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:37:58.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-28T18:37:58.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-28T18:37:58.375 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:37:58.375 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:37:58.376 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:37:58.383 [DEBUG] [Thread-132327] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:05.598 [DEBUG] [Thread-132329 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:08.386 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:38:08.386 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:38:08.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-28T18:38:08.567 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:08.568 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:08.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 37, 57), 9.73, 51.43, 0.0, 23.27, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:38:08.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:37:57
2025-09-28T18:38:09.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:38:09.245 [DEBUG] [Thread-132330] [transport.py] [_log()] starting thread (client mode): 0x2b9ab040
2025-09-28T18:38:09.245 [DEBUG] [Thread-132330] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:09.265 [DEBUG] [Thread-132330] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:38:09.265 [INFO] [Thread-132330] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] Compression: none
2025-09-28T18:38:09.268 [DEBUG] [Thread-132330] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:09.286 [DEBUG] [Thread-132330] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:09.286 [DEBUG] [Thread-132330] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:09.287 [DEBUG] [Thread-132330] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:38:09.287 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:38:09.288 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:09.289 [DEBUG] [Thread-132330] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:09.289 [DEBUG] [Thread-132330] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:09.289 [DEBUG] [Thread-132330] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:09.289 [DEBUG] [Thread-132330] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:38:09.289 [DEBUG] [Thread-132330] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:09.307 [INFO] [Thread-132330] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:09.307 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:09.969 [DEBUG] [Thread-132330] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:09.969 [DEBUG] [Thread-132330] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:09.969 [DEBUG] [Thread-132330] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:38:10.009 [DEBUG] [Thread-132330] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:10.009 [DEBUG] [Thread-132330] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:10.012 [DEBUG] [Thread-132330] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:10.026 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:10.026 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:38:10.028 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:38:10.029 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:38:10.034 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:10.036 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:38:10.036 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:10.036 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:38:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.692787 -999.00  +13.10  12.40     56   +4.60 1 1 1 1 1   872    0 7.49 -67.53 ----- 12.4 12.4 219.2 22.8 14.8 -24.7 14.7 -23.8 14.6 -24.2 14.9 -24.8
2025-09-28T18:38:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:38:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:38:10.037 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.692787
2025-09-28T18:38:10.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:38:10.038 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:38:10.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:38:10.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:38:10.039 [DEBUG] [Thread-132330] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:10.039 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:38:10.040 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:37:57', tmtdew=9.73, humidity=51.43, cloud=0.0, wind=23.27, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:37:36.797', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:38:10.125 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:38:10.134 [DEBUG] [Thread-132333] [transport.py] [_log()] starting thread (client mode): 0x2b9dfa30
2025-09-28T18:38:10.134 [DEBUG] [Thread-132333] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:10.148 [DEBUG] [Thread-132333] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:38:10.148 [INFO] [Thread-132333] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:10.156 [DEBUG] [Thread-132333] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] Compression: none
2025-09-28T18:38:10.157 [DEBUG] [Thread-132333] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:10.214 [DEBUG] [Thread-132333] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:10.215 [DEBUG] [Thread-132333] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:10.215 [DEBUG] [Thread-132333] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:38:10.215 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:38:10.216 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:10.271 [DEBUG] [Thread-132333] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:10.271 [DEBUG] [Thread-132333] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:10.271 [DEBUG] [Thread-132333] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:10.271 [DEBUG] [Thread-132333] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:38:10.271 [DEBUG] [Thread-132333] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:10.289 [INFO] [Thread-132333] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:10.290 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:38:10.290 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:11.246 [DEBUG] [Thread-132333] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:11.246 [DEBUG] [Thread-132333] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:11.294 [DEBUG] [Thread-132333] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:11.294 [DEBUG] [Thread-132333] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:11.303 [DEBUG] [Thread-132333] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:11.312 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:11.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-28T18:38:11.321 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/docker_data/io.saao.ac.za/wp-app/IO/current_weather.json', 'w') -> 00000000
2025-09-28T18:38:11.330 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:11.330 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:11.330 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:11.338 [DEBUG] [Thread-132333] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:20.630 [DEBUG] [Thread-132335 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:21.341 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:38:21.341 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:38:21.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-28T18:38:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 37, 57), 9.73, 51.43, 0.0, 23.27, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:38:21.938 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:37:57
2025-09-28T18:38:22.047 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:38:22.194 [DEBUG] [Thread-132336] [transport.py] [_log()] starting thread (client mode): 0x2b9aaec0
2025-09-28T18:38:22.194 [DEBUG] [Thread-132336] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:22.212 [DEBUG] [Thread-132336] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:38:22.212 [INFO] [Thread-132336] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:22.214 [DEBUG] [Thread-132336] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:22.215 [DEBUG] [Thread-132336] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:22.215 [DEBUG] [Thread-132336] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:22.215 [DEBUG] [Thread-132336] [transport.py] [_log()] Compression: none
2025-09-28T18:38:22.215 [DEBUG] [Thread-132336] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:22.232 [DEBUG] [Thread-132336] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:22.232 [DEBUG] [Thread-132336] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:22.233 [DEBUG] [Thread-132336] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:38:22.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:38:22.233 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:22.234 [DEBUG] [Thread-132336] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:22.235 [DEBUG] [Thread-132336] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:22.235 [DEBUG] [Thread-132336] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:22.235 [DEBUG] [Thread-132336] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:38:22.235 [DEBUG] [Thread-132336] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:22.259 [INFO] [Thread-132336] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:22.259 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:23.037 [DEBUG] [Thread-132336] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:23.037 [DEBUG] [Thread-132336] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:23.037 [DEBUG] [Thread-132336] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:38:23.078 [DEBUG] [Thread-132336] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:23.078 [DEBUG] [Thread-132336] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:23.080 [DEBUG] [Thread-132336] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:23.091 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:23.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:38:23.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:38:23.093 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:38:23.097 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:23.097 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:38:23.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.692787 -999.00  +13.10  12.40     56   +4.60 1 1 1 1 1   872    0 7.49 -67.53 ----- 12.4 12.4 219.2 22.8 14.8 -24.7 14.7 -23.8 14.6 -24.2 14.9 -24.8
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.692787
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:38:23.098 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:37:57', tmtdew=9.73, humidity=51.43, cloud=0.0, wind=23.27, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:37:36.797', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:38:23.099 [DEBUG] [Thread-132336] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:23.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-28T18:38:23.182 [DEBUG] [Thread-132339] [transport.py] [_log()] starting thread (client mode): 0x2b9a9960
2025-09-28T18:38:23.182 [DEBUG] [Thread-132339] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:23.197 [DEBUG] [Thread-132339] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:38:23.197 [INFO] [Thread-132339] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:38:23.204 [DEBUG] [Thread-132339] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:23.204 [DEBUG] [Thread-132339] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:38:23.204 [DEBUG] [Thread-132339] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] Compression: none
2025-09-28T18:38:23.205 [DEBUG] [Thread-132339] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:23.266 [DEBUG] [Thread-132339] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:23.266 [DEBUG] [Thread-132339] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:23.267 [DEBUG] [Thread-132339] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:38:23.267 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:38:23.268 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:23.323 [DEBUG] [Thread-132339] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:23.323 [DEBUG] [Thread-132339] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:23.323 [DEBUG] [Thread-132339] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:23.323 [DEBUG] [Thread-132339] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:38:23.323 [DEBUG] [Thread-132339] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:23.344 [INFO] [Thread-132339] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:23.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-28T18:38:23.344 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:24.304 [DEBUG] [Thread-132339] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:24.305 [DEBUG] [Thread-132339] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:24.352 [DEBUG] [Thread-132339] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:24.353 [DEBUG] [Thread-132339] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:24.362 [DEBUG] [Thread-132339] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:24.370 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:24.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-28T18:38:24.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-28T18:38:24.388 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:24.388 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:24.389 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:24.399 [DEBUG] [Thread-132339] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:27.812 [DEBUG] [Thread-132341 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:34.399 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:38:34.400 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:38:34.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-28T18:38:35.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 38, 29), 9.71, 51.47, 0.0, 20.68, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:38:35.015 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:38:29
2025-09-28T18:38:35.125 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:38:35.275 [DEBUG] [Thread-132342] [transport.py] [_log()] starting thread (client mode): 0x2b9a94e0
2025-09-28T18:38:35.275 [DEBUG] [Thread-132342] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:35.290 [DEBUG] [Thread-132342] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:38:35.290 [INFO] [Thread-132342] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:35.294 [DEBUG] [Thread-132342] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] Compression: none
2025-09-28T18:38:35.295 [DEBUG] [Thread-132342] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:35.313 [DEBUG] [Thread-132342] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:35.313 [DEBUG] [Thread-132342] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:35.314 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:38:35.314 [DEBUG] [Thread-132342] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:38:35.315 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:35.316 [DEBUG] [Thread-132342] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:35.316 [DEBUG] [Thread-132342] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:35.316 [DEBUG] [Thread-132342] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:35.316 [DEBUG] [Thread-132342] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:38:35.316 [DEBUG] [Thread-132342] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:35.340 [INFO] [Thread-132342] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:35.340 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:35.677 [DEBUG] [Thread-132344 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:38:36.013 [DEBUG] [Thread-132342] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:36.013 [DEBUG] [Thread-132342] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:36.014 [DEBUG] [Thread-132342] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:38:36.054 [DEBUG] [Thread-132342] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:36.054 [DEBUG] [Thread-132342] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:36.057 [DEBUG] [Thread-132342] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:36.069 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:36.069 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:38:36.071 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:38:36.072 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:38:36.077 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:36.078 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:38:36.078 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.692787 -999.00  +13.10  12.40     56   +4.60 1 1 1 1 1   872    0 7.49 -67.53 ----- 12.4 12.4 219.2 22.8 14.8 -24.7 14.7 -23.8 14.6 -24.2 14.9 -24.8
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:38:36.079 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.692787
2025-09-28T18:38:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:38:36.080 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:38:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:38:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:38:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:38:36.081 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:38:29', tmtdew=9.71, humidity=51.47, cloud=0.0, wind=20.68, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:37:36.797', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:38:36.081 [DEBUG] [Thread-132342] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:36.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-28T18:38:36.180 [DEBUG] [Thread-132346] [transport.py] [_log()] starting thread (client mode): 0x2b9ba980
2025-09-28T18:38:36.180 [DEBUG] [Thread-132346] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:36.195 [DEBUG] [Thread-132346] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:38:36.195 [INFO] [Thread-132346] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:38:36.202 [DEBUG] [Thread-132346] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] Compression: none
2025-09-28T18:38:36.203 [DEBUG] [Thread-132346] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:36.262 [DEBUG] [Thread-132346] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:36.262 [DEBUG] [Thread-132346] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:36.263 [DEBUG] [Thread-132346] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:38:36.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:38:36.263 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:36.318 [DEBUG] [Thread-132346] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:36.319 [DEBUG] [Thread-132346] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:36.319 [DEBUG] [Thread-132346] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:36.319 [DEBUG] [Thread-132346] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:38:36.319 [DEBUG] [Thread-132346] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:36.341 [INFO] [Thread-132346] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:36.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-28T18:38:36.342 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:37.283 [DEBUG] [Thread-132346] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:37.283 [DEBUG] [Thread-132346] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:37.331 [DEBUG] [Thread-132346] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:37.332 [DEBUG] [Thread-132346] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:37.340 [DEBUG] [Thread-132346] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:37.349 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:37.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')
2025-09-28T18:38: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') -> 00000000
2025-09-28T18:38:37.366 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:37.366 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:37.366 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:37.374 [DEBUG] [Thread-132346] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:47.376 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:38:47.377 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:38: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-28T18:38:47.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 38, 29), 9.71, 51.47, 0.0, 20.68, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:38:47.978 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:38:29
2025-09-28T18:38:48.088 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:38:48.236 [DEBUG] [Thread-132348] [transport.py] [_log()] starting thread (client mode): 0x2b9a8640
2025-09-28T18:38:48.236 [DEBUG] [Thread-132348] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:48.257 [DEBUG] [Thread-132348] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:38:48.257 [INFO] [Thread-132348] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] Compression: none
2025-09-28T18:38:48.260 [DEBUG] [Thread-132348] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:48.277 [DEBUG] [Thread-132348] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:48.277 [DEBUG] [Thread-132348] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:38:48.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:38:48.278 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:38:48.278 [DEBUG] [Thread-132348] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:48.287 [INFO] [Thread-132348] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:48.287 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:48.921 [DEBUG] [Thread-132348] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:48.921 [DEBUG] [Thread-132348] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:48.922 [DEBUG] [Thread-132348] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:38:48.962 [DEBUG] [Thread-132348] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:48.963 [DEBUG] [Thread-132348] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:48.965 [DEBUG] [Thread-132348] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:48.976 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:48.977 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:38:48.979 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:38:48.980 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:38:48.984 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:48.986 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:38:48.986 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.693135 -999.00  +13.10  12.41     56   +4.50 1 1 1 1 1   871    0 7.13 -68.63 ----- 12.4 12.4 249.9 26.6 14.8 -24.8 14.6 -24.2 14.6 -23.8 14.9 -24.9
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:38:48.986 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.693135
2025-09-28T18:38:48.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:38:48.987 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:38:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:38:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:38:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:38:48.988 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:38:29', tmtdew=9.71, humidity=51.47, cloud=0.0, wind=20.68, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:38:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:38:48.988 [DEBUG] [Thread-132348] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:49.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-28T18:38:49.083 [DEBUG] [Thread-132351] [transport.py] [_log()] starting thread (client mode): 0x2b91cdc0
2025-09-28T18:38:49.083 [DEBUG] [Thread-132351] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:38:49.098 [DEBUG] [Thread-132351] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:38:49.098 [INFO] [Thread-132351] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:38:49.105 [DEBUG] [Thread-132351] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] client lang: <none>
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] server lang: <none>
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] kex follows: False
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] Compression: none
2025-09-28T18:38:49.106 [DEBUG] [Thread-132351] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:38:49.161 [DEBUG] [Thread-132351] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:38:49.162 [DEBUG] [Thread-132351] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:38:49.162 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:38:49.163 [DEBUG] [Thread-132351] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:38:49.163 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:38:49.223 [DEBUG] [Thread-132351] [transport.py] [_log()] userauth is OK
2025-09-28T18:38:49.223 [DEBUG] [Thread-132351] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:38:49.223 [DEBUG] [Thread-132351] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:38:49.223 [DEBUG] [Thread-132351] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:38:49.224 [DEBUG] [Thread-132351] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:38:49.246 [INFO] [Thread-132351] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:38:49.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-28T18:38:49.247 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:38:50.240 [DEBUG] [Thread-132351] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:38:50.240 [DEBUG] [Thread-132351] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:38:50.288 [DEBUG] [Thread-132351] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:38:50.288 [DEBUG] [Thread-132351] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:38:50.297 [DEBUG] [Thread-132351] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:38:50.307 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:38:50.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-28T18:38:50.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') -> 00000000
2025-09-28T18:38:50.327 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:38:50.327 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:38:50.327 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:38:50.339 [DEBUG] [Thread-132351] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:38:50.703 [DEBUG] [Thread-132353 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:00.338 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:39:00.338 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:39:00.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-28T18:39:00.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 38, 29), 9.71, 51.47, 0.0, 20.68, 12.97, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:39:00.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:38:29
2025-09-28T18:39:01.058 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:39:01.208 [DEBUG] [Thread-132354] [transport.py] [_log()] starting thread (client mode): 0x2b9baa10
2025-09-28T18:39:01.208 [DEBUG] [Thread-132354] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:01.231 [DEBUG] [Thread-132354] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:39:01.231 [INFO] [Thread-132354] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:39:01.235 [DEBUG] [Thread-132354] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:01.235 [DEBUG] [Thread-132354] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:39:01.235 [DEBUG] [Thread-132354] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:01.235 [DEBUG] [Thread-132354] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:01.235 [DEBUG] [Thread-132354] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:01.236 [DEBUG] [Thread-132354] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:01.237 [DEBUG] [Thread-132354] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:01.237 [DEBUG] [Thread-132354] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:01.237 [DEBUG] [Thread-132354] [transport.py] [_log()] Compression: none
2025-09-28T18:39:01.237 [DEBUG] [Thread-132354] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:01.247 [DEBUG] [Thread-132354] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:01.248 [DEBUG] [Thread-132354] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:01.248 [DEBUG] [Thread-132354] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:39:01.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:39:01.249 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:01.250 [DEBUG] [Thread-132354] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:01.250 [DEBUG] [Thread-132354] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:01.250 [DEBUG] [Thread-132354] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:01.250 [DEBUG] [Thread-132354] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:39:01.250 [DEBUG] [Thread-132354] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:01.274 [INFO] [Thread-132354] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:01.274 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:01.889 [DEBUG] [Thread-132354] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:01.889 [DEBUG] [Thread-132354] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:01.889 [DEBUG] [Thread-132354] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:39:01.930 [DEBUG] [Thread-132354] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:01.930 [DEBUG] [Thread-132354] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:01.932 [DEBUG] [Thread-132354] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:01.944 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:01.944 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:39:01.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:39:01.945 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:39:01.947 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:01.948 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:39:01.948 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.693135 -999.00  +13.10  12.41     56   +4.50 1 1 1 1 1   871    0 7.13 -68.63 ----- 12.4 12.4 249.9 26.6 14.8 -24.8 14.6 -24.2 14.6 -23.8 14.9 -24.9
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.693135
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:39:01.948 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:38:29', tmtdew=9.71, humidity=51.47, cloud=0.0, wind=20.68, temperature=12.97, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:38:06.864', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:39:01.948 [DEBUG] [Thread-132354] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:02.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-28T18:39:02.033 [DEBUG] [Thread-132357] [transport.py] [_log()] starting thread (client mode): 0x2b9a93f0
2025-09-28T18:39:02.033 [DEBUG] [Thread-132357] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:02.048 [DEBUG] [Thread-132357] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:39:02.048 [INFO] [Thread-132357] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] Compression: none
2025-09-28T18:39:02.056 [DEBUG] [Thread-132357] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:02.113 [DEBUG] [Thread-132357] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:02.114 [DEBUG] [Thread-132357] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:02.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:39:02.114 [DEBUG] [Thread-132357] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:39:02.114 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:02.174 [DEBUG] [Thread-132357] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:02.174 [DEBUG] [Thread-132357] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:02.174 [DEBUG] [Thread-132357] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:02.174 [DEBUG] [Thread-132357] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:39:02.174 [DEBUG] [Thread-132357] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:02.191 [INFO] [Thread-132357] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:02.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-28T18:39:02.191 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:03.158 [DEBUG] [Thread-132357] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:03.158 [DEBUG] [Thread-132357] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:03.206 [DEBUG] [Thread-132357] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:03.206 [DEBUG] [Thread-132357] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:03.214 [DEBUG] [Thread-132357] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:03.222 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:03.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-28T18:39:03.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-28T18:39:03.238 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:03.238 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:03.238 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:03.246 [DEBUG] [Thread-132357] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:05.747 [DEBUG] [Thread-132359 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:13.239 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:39:13.239 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:39:13.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-28T18:39:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 39, 1), 9.66, 52.01, 0.0, 19.82, 12.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:39:13.845 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:39:01
2025-09-28T18:39:13.955 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:39:14.103 [DEBUG] [Thread-132360] [transport.py] [_log()] starting thread (client mode): 0x2e3c22c0
2025-09-28T18:39:14.103 [DEBUG] [Thread-132360] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:14.123 [DEBUG] [Thread-132360] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:39:14.123 [INFO] [Thread-132360] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] Compression: none
2025-09-28T18:39:14.126 [DEBUG] [Thread-132360] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:14.137 [DEBUG] [Thread-132360] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:14.137 [DEBUG] [Thread-132360] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:14.138 [DEBUG] [Thread-132360] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:39:14.138 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:39:14.139 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:14.139 [DEBUG] [Thread-132360] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:14.140 [DEBUG] [Thread-132360] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:14.140 [DEBUG] [Thread-132360] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:14.140 [DEBUG] [Thread-132360] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:39:14.140 [DEBUG] [Thread-132360] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:14.164 [INFO] [Thread-132360] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:14.165 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:14.782 [DEBUG] [Thread-132360] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:14.782 [DEBUG] [Thread-132360] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:14.782 [DEBUG] [Thread-132360] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:39:14.822 [DEBUG] [Thread-132360] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:14.823 [DEBUG] [Thread-132360] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:14.825 [DEBUG] [Thread-132360] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:14.834 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:14.835 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:39:14.836 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:39:14.838 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:39:14.843 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:14.845 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:39:14.845 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:14.845 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.693829 -999.00  +13.10  16.80     56   +4.50 1 1 1 1 1   867    0 7.33 -64.09 ----- 16.8 16.8 208.6 20.7 14.7 -24.4 14.5 -23.6 14.4 -23.6 14.8 -24.7
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.693829
2025-09-28T18:39:14.846 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:39:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:39:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:39:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:39:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:39:14.847 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:39:01', tmtdew=9.66, humidity=52.01, cloud=0.0, wind=19.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:39:06.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:39:14.848 [DEBUG] [Thread-132360] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:14.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-28T18:39:14.942 [DEBUG] [Thread-132363] [transport.py] [_log()] starting thread (client mode): 0x2b9b87f0
2025-09-28T18:39:14.942 [DEBUG] [Thread-132363] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:14.957 [DEBUG] [Thread-132363] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:39:14.957 [INFO] [Thread-132363] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:39:14.965 [DEBUG] [Thread-132363] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:14.965 [DEBUG] [Thread-132363] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:39:14.965 [DEBUG] [Thread-132363] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:14.965 [DEBUG] [Thread-132363] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] Compression: none
2025-09-28T18:39:14.966 [DEBUG] [Thread-132363] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:15.022 [DEBUG] [Thread-132363] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:15.022 [DEBUG] [Thread-132363] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:15.023 [DEBUG] [Thread-132363] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:39:15.023 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:39:15.024 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:15.079 [DEBUG] [Thread-132363] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:15.079 [DEBUG] [Thread-132363] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:15.079 [DEBUG] [Thread-132363] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:15.079 [DEBUG] [Thread-132363] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:39:15.079 [DEBUG] [Thread-132363] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:15.098 [INFO] [Thread-132363] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:15.098 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:39:15.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:16.087 [DEBUG] [Thread-132363] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:16.087 [DEBUG] [Thread-132363] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:16.135 [DEBUG] [Thread-132363] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:16.135 [DEBUG] [Thread-132363] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:16.144 [DEBUG] [Thread-132363] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:16.152 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:16.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-28T18:39:16.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-28T18:39:16.170 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:16.170 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:16.171 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:16.178 [DEBUG] [Thread-132363] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:16.303 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:16.305 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:20.775 [DEBUG] [Thread-132365 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:26.181 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:39:26.181 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:39:26.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-28T18:39:26.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 39, 1), 9.66, 52.01, 0.0, 19.82, 12.94, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:39:26.782 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:39:01
2025-09-28T18:39:26.892 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:39:27.041 [DEBUG] [Thread-132366] [transport.py] [_log()] starting thread (client mode): 0x2e3c3b50
2025-09-28T18:39:27.041 [DEBUG] [Thread-132366] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:27.061 [DEBUG] [Thread-132366] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:39:27.061 [INFO] [Thread-132366] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:27.064 [DEBUG] [Thread-132366] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] Compression: none
2025-09-28T18:39:27.065 [DEBUG] [Thread-132366] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:27.082 [DEBUG] [Thread-132366] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:27.083 [DEBUG] [Thread-132366] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:27.083 [DEBUG] [Thread-132366] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:39:27.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:39:27.084 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:27.085 [DEBUG] [Thread-132366] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:27.086 [DEBUG] [Thread-132366] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:27.086 [DEBUG] [Thread-132366] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:27.086 [DEBUG] [Thread-132366] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:39:27.086 [DEBUG] [Thread-132366] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:27.104 [INFO] [Thread-132366] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:27.105 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:27.689 [DEBUG] [Thread-132366] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:27.689 [DEBUG] [Thread-132366] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:27.690 [DEBUG] [Thread-132366] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:39:27.730 [DEBUG] [Thread-132366] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:27.730 [DEBUG] [Thread-132366] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:27.733 [DEBUG] [Thread-132366] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:27.745 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:27.745 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:39:27.747 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:39:27.748 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:39:27.753 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:27.755 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:39:27.755 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:27.755 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.693829 -999.00  +13.10  16.80     56   +4.50 1 1 1 1 1   867    0 7.33 -64.09 ----- 16.8 16.8 208.6 20.7 14.7 -24.4 14.5 -23.6 14.4 -23.6 14.8 -24.7
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.693829
2025-09-28T18:39:27.756 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:39:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:39:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:39:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:39:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:39:27.757 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:39:01', tmtdew=9.66, humidity=52.01, cloud=0.0, wind=19.82, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:39:06.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:39:27.758 [DEBUG] [Thread-132366] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:27.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-28T18:39:27.853 [DEBUG] [Thread-132369] [transport.py] [_log()] starting thread (client mode): 0x2e3c30a0
2025-09-28T18:39:27.853 [DEBUG] [Thread-132369] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:27.868 [DEBUG] [Thread-132369] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:39:27.869 [INFO] [Thread-132369] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] Compression: none
2025-09-28T18:39:27.876 [DEBUG] [Thread-132369] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:27.886 [DEBUG] [Thread-132371 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:27.939 [DEBUG] [Thread-132369] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:27.940 [DEBUG] [Thread-132369] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:27.940 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:39:27.941 [DEBUG] [Thread-132369] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:39:27.942 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:27.994 [DEBUG] [Thread-132369] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:27.995 [DEBUG] [Thread-132369] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:27.995 [DEBUG] [Thread-132369] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:27.995 [DEBUG] [Thread-132369] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:39:27.995 [DEBUG] [Thread-132369] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:28.014 [INFO] [Thread-132369] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:28.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-28T18:39:28.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:29.006 [DEBUG] [Thread-132369] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:29.006 [DEBUG] [Thread-132369] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:29.054 [DEBUG] [Thread-132369] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:29.054 [DEBUG] [Thread-132369] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:29.063 [DEBUG] [Thread-132369] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:29.072 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:29.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-28T18:39:29.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-28T18:39:29.090 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:29.090 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:29.091 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:29.099 [DEBUG] [Thread-132369] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:35.824 [DEBUG] [Thread-132372 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:39.101 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:39:39.101 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:39:39.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-28T18:39:39.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 39, 33), 9.66, 51.99, 0.0, 23.1, 12.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:39:39.699 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:39:33
2025-09-28T18:39:39.809 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:39:39.959 [DEBUG] [Thread-132373] [transport.py] [_log()] starting thread (client mode): 0x2b9a93f0
2025-09-28T18:39:39.959 [DEBUG] [Thread-132373] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:39.979 [DEBUG] [Thread-132373] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:39:39.979 [INFO] [Thread-132373] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:39:39.980 [DEBUG] [Thread-132373] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] Compression: none
2025-09-28T18:39:39.981 [DEBUG] [Thread-132373] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:39.994 [DEBUG] [Thread-132373] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:39.995 [DEBUG] [Thread-132373] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:39.995 [DEBUG] [Thread-132373] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:39:39.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:39:39.996 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:39.997 [DEBUG] [Thread-132373] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:39.997 [DEBUG] [Thread-132373] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:39.997 [DEBUG] [Thread-132373] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:39.997 [DEBUG] [Thread-132373] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:39:39.997 [DEBUG] [Thread-132373] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:40.015 [INFO] [Thread-132373] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:40.015 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:40.658 [DEBUG] [Thread-132373] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:40.658 [DEBUG] [Thread-132373] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:40.658 [DEBUG] [Thread-132373] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:39:40.699 [DEBUG] [Thread-132373] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:40.700 [DEBUG] [Thread-132373] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:40.702 [DEBUG] [Thread-132373] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:40.715 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:40.715 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:39:40.717 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:39:40.719 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:39:40.724 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:40.726 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:39:40.727 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:40.727 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:40.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:39:40.727 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.693829 -999.00  +13.10  16.80     56   +4.50 1 1 1 1 1   867    0 7.33 -64.09 ----- 16.8 16.8 208.6 20.7 14.7 -24.4 14.5 -23.6 14.4 -23.6 14.8 -24.7
2025-09-28T18:39:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:39:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:39:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.693829
2025-09-28T18:39:40.728 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:39:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:39:40.729 [DEBUG] [Thread-132373] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:40.729 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:39:40.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:39:40.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:39:40.730 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:39:33', tmtdew=9.66, humidity=51.99, cloud=0.0, wind=23.1, temperature=12.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:39:06.826', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:39:40.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-28T18:39:40.826 [DEBUG] [Thread-132376] [transport.py] [_log()] starting thread (client mode): 0x2b9aa260
2025-09-28T18:39:40.826 [DEBUG] [Thread-132376] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:40.841 [DEBUG] [Thread-132376] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:39:40.841 [INFO] [Thread-132376] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:40.849 [DEBUG] [Thread-132376] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:40.850 [DEBUG] [Thread-132376] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:40.851 [DEBUG] [Thread-132376] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:40.851 [DEBUG] [Thread-132376] [transport.py] [_log()] Compression: none
2025-09-28T18:39:40.851 [DEBUG] [Thread-132376] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:40.907 [DEBUG] [Thread-132376] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:40.908 [DEBUG] [Thread-132376] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:40.908 [DEBUG] [Thread-132376] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:39:40.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:39:40.909 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:40.966 [DEBUG] [Thread-132376] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:40.967 [DEBUG] [Thread-132376] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:40.967 [DEBUG] [Thread-132376] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:40.967 [DEBUG] [Thread-132376] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:39:40.967 [DEBUG] [Thread-132376] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:40.988 [INFO] [Thread-132376] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:40.989 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:39:40.989 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:42.013 [DEBUG] [Thread-132376] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:42.013 [DEBUG] [Thread-132376] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:42.061 [DEBUG] [Thread-132376] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:42.061 [DEBUG] [Thread-132376] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:42.071 [DEBUG] [Thread-132376] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:42.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:42.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-28T18:39:42.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') -> 00000000
2025-09-28T18:39:42.097 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:42.097 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:42.098 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:42.106 [DEBUG] [Thread-132376] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:50.854 [DEBUG] [Thread-132378 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:39:52.107 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:39:52.108 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:39:52.110 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:39:52.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 39, 33), 9.66, 51.99, 0.0, 23.1, 12.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:39:52.723 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:39:33
2025-09-28T18:39:52.834 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:39:52.983 [DEBUG] [Thread-132379] [transport.py] [_log()] starting thread (client mode): 0x2e3c3910
2025-09-28T18:39:52.983 [DEBUG] [Thread-132379] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:53.003 [DEBUG] [Thread-132379] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:39:53.003 [INFO] [Thread-132379] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:39:53.006 [DEBUG] [Thread-132379] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:53.006 [DEBUG] [Thread-132379] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:39:53.006 [DEBUG] [Thread-132379] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:53.006 [DEBUG] [Thread-132379] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] Compression: none
2025-09-28T18:39:53.007 [DEBUG] [Thread-132379] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:53.026 [DEBUG] [Thread-132379] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:53.026 [DEBUG] [Thread-132379] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:53.027 [DEBUG] [Thread-132379] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:39:53.027 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:39:53.028 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:53.068 [DEBUG] [Thread-132379] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:53.069 [DEBUG] [Thread-132379] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:53.069 [DEBUG] [Thread-132379] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:53.069 [DEBUG] [Thread-132379] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:39:53.069 [DEBUG] [Thread-132379] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:53.099 [INFO] [Thread-132379] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:53.100 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:53.736 [DEBUG] [Thread-132379] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:53.736 [DEBUG] [Thread-132379] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:53.736 [DEBUG] [Thread-132379] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:39:53.777 [DEBUG] [Thread-132379] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:53.777 [DEBUG] [Thread-132379] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:53.780 [DEBUG] [Thread-132379] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:53.785 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:53.786 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:39:53.787 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:39:53.788 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:39:53.791 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:53.792 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:39:53.792 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.694176 -999.00  +13.10  11.07     56   +4.50 1 1 1 1 1   865    0 7.32 -68.24 ----- 11.1 11.1 210.0 18.4 14.6 -24.6 14.5 -23.7 14.3 -23.5 14.8 -24.7
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:39:53.793 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.694176
2025-09-28T18:39:53.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:39:53.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:39:53.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:39:53.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:39:53.794 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:39:53.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:39:33', tmtdew=9.66, humidity=51.99, cloud=0.0, wind=23.1, temperature=12.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:39:36.806', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:39:53.795 [DEBUG] [Thread-132379] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:39:53.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-28T18:39:53.890 [DEBUG] [Thread-132382] [transport.py] [_log()] starting thread (client mode): 0x2b996290
2025-09-28T18:39:53.891 [DEBUG] [Thread-132382] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:39:53.905 [DEBUG] [Thread-132382] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:39:53.905 [INFO] [Thread-132382] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] client lang: <none>
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] server lang: <none>
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] kex follows: False
2025-09-28T18:39:53.913 [DEBUG] [Thread-132382] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] Compression: none
2025-09-28T18:39:53.914 [DEBUG] [Thread-132382] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:39:53.969 [DEBUG] [Thread-132382] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:39:53.970 [DEBUG] [Thread-132382] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:39:53.970 [DEBUG] [Thread-132382] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:39:53.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:39:53.971 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:39:54.026 [DEBUG] [Thread-132382] [transport.py] [_log()] userauth is OK
2025-09-28T18:39:54.026 [DEBUG] [Thread-132382] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:39:54.026 [DEBUG] [Thread-132382] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:39:54.026 [DEBUG] [Thread-132382] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:39:54.027 [DEBUG] [Thread-132382] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:39:54.046 [INFO] [Thread-132382] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:39:54.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-28T18:39:54.047 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:39:54.997 [DEBUG] [Thread-132382] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:39:54.997 [DEBUG] [Thread-132382] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:39:55.045 [DEBUG] [Thread-132382] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:39:55.045 [DEBUG] [Thread-132382] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:39:55.054 [DEBUG] [Thread-132382] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:39:55.062 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:39:55.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-28T18:39:55.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-28T18:39:55.079 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:39:55.079 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:39:55.080 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:39:55.087 [DEBUG] [Thread-132382] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:05.090 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:40:05.090 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:40:05.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-28T18:40:05.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 39, 33), 9.66, 51.99, 0.0, 23.1, 12.89, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:40:05.701 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:39:33
2025-09-28T18:40:05.818 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:40:05.903 [DEBUG] [Thread-132384 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:05.972 [DEBUG] [Thread-132385] [transport.py] [_log()] starting thread (client mode): 0x2b994460
2025-09-28T18:40:05.972 [DEBUG] [Thread-132385] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:05.991 [DEBUG] [Thread-132385] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:40:05.991 [INFO] [Thread-132385] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] Compression: none
2025-09-28T18:40:05.995 [DEBUG] [Thread-132385] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:06.012 [DEBUG] [Thread-132385] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:06.012 [DEBUG] [Thread-132385] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:06.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:40:06.012 [DEBUG] [Thread-132385] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:40:06.012 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:06.013 [DEBUG] [Thread-132385] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:06.013 [DEBUG] [Thread-132385] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:06.013 [DEBUG] [Thread-132385] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:06.013 [DEBUG] [Thread-132385] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:40:06.013 [DEBUG] [Thread-132385] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:06.022 [INFO] [Thread-132385] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:06.022 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:12.630 [DEBUG] [Thread-132385] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:12.631 [DEBUG] [Thread-132385] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:12.631 [DEBUG] [Thread-132385] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:40:12.671 [DEBUG] [Thread-132385] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:12.672 [DEBUG] [Thread-132385] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:12.674 [DEBUG] [Thread-132385] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:12.768 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:12.769 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:40:12.770 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:40:12.772 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:40:12.793 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:12.795 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:40:12.795 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:12.795 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:12.795 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:40:12.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.694176 -999.00  +13.10  11.07     56   +4.50 1 1 1 1 1   865    0 7.32 -68.24 ----- 11.1 11.1 210.0 18.4 14.6 -24.6 14.5 -23.7 14.3 -23.5 14.8 -24.7
2025-09-28T18:40:12.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:40:12.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:40:12.796 [DEBUG] [Thread-132385] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:12.796 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.694176
2025-09-28T18:40:12.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:40:12.797 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:40:12.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:40:12.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:40:12.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:40:12.798 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:39:33', tmtdew=9.66, humidity=51.99, cloud=0.0, wind=23.1, temperature=12.89, tmtdew_warn=0, humidity_warn=0, rain_warn=0, cloud_warn=2, wind_warn=0, temperature_warn=0, seeing_timestamp='2025-09-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:39:36.806', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:40:12.879 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connecting to io.saao.ac.za as io using private key
2025-09-28T18:40:12.891 [DEBUG] [Thread-132388] [transport.py] [_log()] starting thread (client mode): 0x2b996f80
2025-09-28T18:40:12.891 [DEBUG] [Thread-132388] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:12.910 [DEBUG] [Thread-132388] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:40:12.910 [INFO] [Thread-132388] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:40:12.917 [DEBUG] [Thread-132388] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:12.917 [DEBUG] [Thread-132388] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:40:12.917 [DEBUG] [Thread-132388] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] Compression: none
2025-09-28T18:40:12.918 [DEBUG] [Thread-132388] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:12.974 [DEBUG] [Thread-132388] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:12.974 [DEBUG] [Thread-132388] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:12.975 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:40:12.975 [DEBUG] [Thread-132388] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:40:12.976 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:13.030 [DEBUG] [Thread-132388] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:13.031 [DEBUG] [Thread-132388] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:13.031 [DEBUG] [Thread-132388] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:13.031 [DEBUG] [Thread-132388] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:40:13.031 [DEBUG] [Thread-132388] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:13.049 [INFO] [Thread-132388] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:13.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-28T18:40:13.050 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:14.016 [DEBUG] [Thread-132388] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:14.016 [DEBUG] [Thread-132388] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:14.064 [DEBUG] [Thread-132388] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:14.064 [DEBUG] [Thread-132388] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:14.073 [DEBUG] [Thread-132388] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:14.081 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:14.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-28T18:40:14.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-28T18:40:14.098 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:14.099 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:14.099 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:14.107 [DEBUG] [Thread-132388] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:20.444 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:20.446 [DEBUG] [Thread-30 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:20.941 [DEBUG] [Thread-132390 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:24.109 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:40:24.109 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:40:24.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-28T18:40:24.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 40, 5), 9.62, 52.12, 0.0, 21.93, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:40:24.702 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:40:05
2025-09-28T18:40:24.810 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:40:24.957 [DEBUG] [Thread-132391] [transport.py] [_log()] starting thread (client mode): 0x2e3c06d0
2025-09-28T18:40:24.957 [DEBUG] [Thread-132391] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:24.978 [DEBUG] [Thread-132391] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:40:24.978 [INFO] [Thread-132391] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:24.980 [DEBUG] [Thread-132391] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] Compression: none
2025-09-28T18:40:24.981 [DEBUG] [Thread-132391] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:24.999 [DEBUG] [Thread-132391] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:24.999 [DEBUG] [Thread-132391] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:25.000 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:40:25.000 [DEBUG] [Thread-132391] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:40:25.001 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:25.002 [DEBUG] [Thread-132391] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:25.002 [DEBUG] [Thread-132391] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:25.002 [DEBUG] [Thread-132391] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:25.002 [DEBUG] [Thread-132391] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:40:25.002 [DEBUG] [Thread-132391] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:25.020 [INFO] [Thread-132391] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:25.021 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:25.605 [DEBUG] [Thread-132391] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:25.605 [DEBUG] [Thread-132391] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:25.606 [DEBUG] [Thread-132391] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:40:25.646 [DEBUG] [Thread-132391] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:25.646 [DEBUG] [Thread-132391] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:25.649 [DEBUG] [Thread-132391] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:25.663 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:25.663 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:40:25.665 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:40:25.666 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:40:25.671 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:25.673 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:40:25.673 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:25.673 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:25.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:40:25.673 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.694523 -999.00  +13.00  10.39     56   +4.50 1 1 1 1 1   862    0 6.69 -74.87 ----- 10.4 10.4 221.0 18.1 14.6 -24.6 14.4 -23.9 14.4 -23.4 14.7 -24.1
2025-09-28T18:40:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:40:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:40:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.694523
2025-09-28T18:40:25.674 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:40:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:40:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:40:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:40:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:40:25.675 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:40:05', tmtdew=9.62, humidity=52.12, cloud=0.0, wind=21.93, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:40:06.787', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:40:25.675 [DEBUG] [Thread-132391] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:25.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-28T18:40:25.769 [DEBUG] [Thread-132394] [transport.py] [_log()] starting thread (client mode): 0x2e360c10
2025-09-28T18:40:25.769 [DEBUG] [Thread-132394] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:25.785 [DEBUG] [Thread-132394] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:40:25.785 [INFO] [Thread-132394] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:40:25.792 [DEBUG] [Thread-132394] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:25.792 [DEBUG] [Thread-132394] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:40:25.792 [DEBUG] [Thread-132394] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:25.792 [DEBUG] [Thread-132394] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:25.793 [DEBUG] [Thread-132394] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] Compression: none
2025-09-28T18:40:25.794 [DEBUG] [Thread-132394] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:25.849 [DEBUG] [Thread-132394] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:25.849 [DEBUG] [Thread-132394] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:25.849 [DEBUG] [Thread-132394] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:40:25.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:40:25.849 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:25.906 [DEBUG] [Thread-132394] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:25.906 [DEBUG] [Thread-132394] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:25.906 [DEBUG] [Thread-132394] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:25.906 [DEBUG] [Thread-132394] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:40:25.906 [DEBUG] [Thread-132394] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:25.922 [INFO] [Thread-132394] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:25.922 [DEBUG] [poll_weather_worker] [driver.py] [write_weather_to_remote_file()] Connected to io.saao.ac.za as io using private key
2025-09-28T18:40:25.922 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:26.914 [DEBUG] [Thread-132394] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:26.914 [DEBUG] [Thread-132394] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:26.962 [DEBUG] [Thread-132394] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:26.962 [DEBUG] [Thread-132394] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:26.971 [DEBUG] [Thread-132394] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:26.980 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:26.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-28T18:40:26.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-28T18:40:26.997 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:26.997 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:26.998 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:27.006 [DEBUG] [Thread-132394] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:27.957 [DEBUG] [Thread-132396 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:35.971 [DEBUG] [Thread-132397 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:37.008 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:40:37.008 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:40:37.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-28T18:40:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 40, 5), 9.62, 52.12, 0.0, 21.93, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:40:37.649 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:40:05
2025-09-28T18:40:37.768 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:40:37.923 [DEBUG] [Thread-132398] [transport.py] [_log()] starting thread (client mode): 0x2b9973d0
2025-09-28T18:40:37.923 [DEBUG] [Thread-132398] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:37.943 [DEBUG] [Thread-132398] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:40:37.944 [INFO] [Thread-132398] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:40:37.946 [DEBUG] [Thread-132398] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] Compression: none
2025-09-28T18:40:37.947 [DEBUG] [Thread-132398] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:37.964 [DEBUG] [Thread-132398] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:37.964 [DEBUG] [Thread-132398] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:37.964 [DEBUG] [Thread-132398] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:40:37.964 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:40:37.965 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:37.965 [DEBUG] [Thread-132398] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:37.965 [DEBUG] [Thread-132398] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:37.965 [DEBUG] [Thread-132398] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:37.965 [DEBUG] [Thread-132398] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:40:37.965 [DEBUG] [Thread-132398] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:37.974 [INFO] [Thread-132398] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:37.975 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:39.475 [DEBUG] [Thread-132398] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:39.475 [DEBUG] [Thread-132398] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:39.475 [DEBUG] [Thread-132398] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:40:39.516 [DEBUG] [Thread-132398] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:39.516 [DEBUG] [Thread-132398] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:39.520 [DEBUG] [Thread-132398] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:39.532 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:39.532 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:40:39.534 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:40:39.536 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:40:39.542 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:39.543 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:40:39.544 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:39.544 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:39.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:40:39.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.694523 -999.00  +13.00  10.39     56   +4.50 1 1 1 1 1   862    0 6.69 -74.87 ----- 10.4 10.4 221.0 18.1 14.6 -24.6 14.4 -23.9 14.4 -23.4 14.7 -24.1
2025-09-28T18:40:39.544 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:40:39.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:40:39.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.694523
2025-09-28T18:40:39.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:40:39.545 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:40:39.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:40:39.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:40:39.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:40:39.546 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:40:05', tmtdew=9.62, humidity=52.12, cloud=0.0, wind=21.93, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:40:06.787', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:40:39.546 [DEBUG] [Thread-132398] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:39.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-28T18:40:39.632 [DEBUG] [Thread-132401] [transport.py] [_log()] starting thread (client mode): 0x2b9e4eb0
2025-09-28T18:40:39.632 [DEBUG] [Thread-132401] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:39.646 [DEBUG] [Thread-132401] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:40:39.647 [INFO] [Thread-132401] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:39.654 [DEBUG] [Thread-132401] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] Compression: none
2025-09-28T18:40:39.655 [DEBUG] [Thread-132401] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:39.716 [DEBUG] [Thread-132401] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:39.716 [DEBUG] [Thread-132401] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:39.717 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for io.saao.ac.za: b'00503ecc12de43871af86ff856296a9d'
2025-09-28T18:40:39.717 [DEBUG] [Thread-132401] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521'}
2025-09-28T18:40:39.718 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:39.774 [DEBUG] [Thread-132401] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:39.775 [DEBUG] [Thread-132401] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:39.775 [DEBUG] [Thread-132401] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:39.775 [DEBUG] [Thread-132401] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521']
2025-09-28T18:40:39.775 [DEBUG] [Thread-132401] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:39.796 [INFO] [Thread-132401] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:39.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-28T18:40:39.796 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:40.788 [DEBUG] [Thread-132401] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:40.788 [DEBUG] [Thread-132401] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:40.838 [DEBUG] [Thread-132401] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:40.838 [DEBUG] [Thread-132401] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:40.850 [DEBUG] [Thread-132401] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:40.860 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:40.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-28T18:40:40.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-28T18:40:40.883 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:40.883 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:40.883 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:40.892 [DEBUG] [Thread-132401] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:50.894 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Polling weather from database
2025-09-28T18:40:50.894 [INFO] [poll_weather_worker] [driver.py] [connect()] Connecting to database localhost as user suthweather
2025-09-28T18:40:50.896 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Issuing SQL command SELECT timestamp, avg_t_min_tdew, avg_hum, avg_cloud, avg_wind, avg_temp, t_min_tdew_warn, hum_warn, rain_warn, cloud_warn, wind_warn, temp_warn FROM current_weather ORDER BY timestamp DESC LIMIT 1
2025-09-28T18:40:51.005 [DEBUG] [Thread-132403 (handle)] [driver.py] [get_weather_state()] Getting weather_state
2025-09-28T18:40:51.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] cw_data = ((datetime.datetime(2025, 9, 28, 18, 40, 37), 9.62, 52.11, 0.0, 24.88, 12.85, 0, 0, 0, 2, 0, 0),)
2025-09-28T18:40:51.494 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Datetime = 2025-09-28 18:40:37
2025-09-28T18:40:51.603 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting Atlas cloud sensor data
2025-09-28T18:40:51.752 [DEBUG] [Thread-132404] [transport.py] [_log()] starting thread (client mode): 0x2b9e4ac0
2025-09-28T18:40:51.752 [DEBUG] [Thread-132404] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:51.771 [DEBUG] [Thread-132404] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.13
2025-09-28T18:40:51.772 [INFO] [Thread-132404] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_8.2p1)
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, kex-strict-s-v00@openssh.com
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] server key: rsa-sha2-512, rsa-sha2-256, ssh-rsa, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] client encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] server encrypt: chacha20-poly1305@openssh.com, aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, aes256-gcm@openssh.com
2025-09-28T18:40:51.773 [DEBUG] [Thread-132404] [transport.py] [_log()] client mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] server mac: umac-64-etm@openssh.com, umac-128-etm@openssh.com, hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com, hmac-sha1-etm@openssh.com, umac-64@openssh.com, umac-128@openssh.com, hmac-sha2-256, hmac-sha2-512, hmac-sha1
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] client compress: none, zlib@openssh.com
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] server compress: none, zlib@openssh.com
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] client lang: <none>
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] server lang: <none>
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] kex follows: False
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] === Key exchange agreements ===
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] Kex: curve25519-sha256@libssh.org
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] HostKey: ssh-ed25519
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] Cipher: aes128-ctr
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] MAC: hmac-sha2-256
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] Compression: none
2025-09-28T18:40:51.774 [DEBUG] [Thread-132404] [transport.py] [_log()] === End of kex handshake ===
2025-09-28T18:40:51.783 [DEBUG] [Thread-132404] [transport.py] [_log()] kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
2025-09-28T18:40:51.784 [DEBUG] [Thread-132404] [transport.py] [_log()] Switch to new keys ...
2025-09-28T18:40:51.784 [DEBUG] [Thread-132404] [transport.py] [_log()] Got EXT_INFO: {'server-sig-algs': b'ssh-ed25519,sk-ssh-ed25519@openssh.com,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ecdsa-sha2-nistp256@openssh.com'}
2025-09-28T18:40:51.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Adding ssh-ed25519 host key for atlasallsky.suth.saao.ac.za: b'c0949f18cce87e4d835f6e07603ff9b8'
2025-09-28T18:40:51.785 [DEBUG] [poll_weather_worker] [transport.py] [_log()] Trying SSH key b'ede500ba65c9d1f2496be9b8baf59e24'
2025-09-28T18:40:51.786 [DEBUG] [Thread-132404] [transport.py] [_log()] userauth is OK
2025-09-28T18:40:51.786 [DEBUG] [Thread-132404] [transport.py] [_log()] Finalizing pubkey algorithm for key of type 'ssh-rsa'
2025-09-28T18:40:51.786 [DEBUG] [Thread-132404] [transport.py] [_log()] Our pubkey algorithm list: ['rsa-sha2-512', 'rsa-sha2-256', 'ssh-rsa']
2025-09-28T18:40:51.786 [DEBUG] [Thread-132404] [transport.py] [_log()] Server-side algorithm list: ['ssh-ed25519', 'sk-ssh-ed25519@openssh.com', 'ssh-rsa', 'rsa-sha2-256', 'rsa-sha2-512', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com']
2025-09-28T18:40:51.786 [DEBUG] [Thread-132404] [transport.py] [_log()] Agreed upon 'rsa-sha2-512' pubkey algorithm
2025-09-28T18:40:51.804 [INFO] [Thread-132404] [transport.py] [_log()] Authentication (publickey) successful!
2025-09-28T18:40:51.804 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] Max packet in: 32768 bytes
2025-09-28T18:40:52.362 [DEBUG] [Thread-132404] [transport.py] [_log()] Received global request "hostkeys-00@openssh.com"
2025-09-28T18:40:52.363 [DEBUG] [Thread-132404] [transport.py] [_log()] Rejecting "hostkeys-00@openssh.com" global request from server.
2025-09-28T18:40:52.363 [DEBUG] [Thread-132404] [transport.py] [_log()] Debug msg: b'/home/weather/.ssh/authorized_keys:5: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding'
2025-09-28T18:40:52.403 [DEBUG] [Thread-132404] [channel.py] [_log()] [chan 0] Max packet out: 32768 bytes
2025-09-28T18:40:52.403 [DEBUG] [Thread-132404] [transport.py] [_log()] Secsh channel 0 opened.
2025-09-28T18:40:52.406 [DEBUG] [Thread-132404] [channel.py] [_log()] [chan 0] Sesch channel 0 request ok
2025-09-28T18:40:52.418 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] Opened sftp connection (server version 3)
2025-09-28T18:40:52.418 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] stat(b'/home/weather/weather.log')
2025-09-28T18:40:52.420 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb')
2025-09-28T18:40:52.422 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] open(b'/home/weather/weather.log', 'rb') -> 00000000
2025-09-28T18:40:52.428 [DEBUG] [poll_weather_worker] [sftp.py] [_log()] [chan 0] close(00000000)
2025-09-28T18:40:52.429 [INFO] [poll_weather_worker] [driver.py] [read_atlas_file()] File '/home/weather/weather.log' copied to '/tmp/weather.log'
2025-09-28T18:40:52.430 [INFO] [poll_weather_worker] [sftp.py] [_log()] [chan 0] sftp session closed.
2025-09-28T18:40:52.430 [DEBUG] [poll_weather_worker] [channel.py] [_log()] [chan 0] EOF sent (0)
2025-09-28T18:40:52.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got atlas file
2025-09-28T18:40:52.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got last line: 60946.694871 -999.00  +13.00  16.40     56   +4.50 1 1 1 1 1   859    0 7.05 -75.46 ----- 16.4 16.4 198.8 20.0 14.6 -24.6 14.3 -23.4 14.3 -23.5 14.7 -24.3
2025-09-28T18:40:52.430 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Splitting last line
2025-09-28T18:40:52.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting timestamp token
2025-09-28T18:40:52.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud timestamp = 60946.694871
2025-09-28T18:40:52.431 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got timestamp in astropy Time
2025-09-28T18:40:52.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting rain token
2025-09-28T18:40:52.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got rain token = 1
2025-09-28T18:40:52.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Getting cloud token
2025-09-28T18:40:52.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Got cloud token = 1
2025-09-28T18:40:52.432 [DEBUG] [poll_weather_worker] [driver.py] [poll_weather_state()] Returning weather state: WeatherState(timestamp='2025-09-28T18:40:37', tmtdew=9.62, humidity=52.11, cloud=0.0, wind=24.88, 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-28T05:07:36', seeing=0.96, atlas_timestamp='2025-09-28T16:40:36.854', atlas_cloud=1, atlas_rain=1, zp_data=[0.11374999999999957, 0.004250000000000753, 0.1407500000000006, 0.10999999999999943, 0.20800000000000018, 0.04025000000000034, 0.08549999999999969, 0.07624999999999993, 0.12399999999999878, 0.08099999999999952, 0.05224999999999902, 0.1169999999999991, 0.26699999999999946, 0.15274999999999928, 0.08099999999999952, 0.01699999999999946, 0.11824999999999974, 0.10999999999999943, 0.12099999999999866, 0.06124999999999936, 0.2309999999999981, 0.23974999999999902, 0.19125000000000014, 0.14874999999999972, 0.13049999999999962, 0.09750000000000014, 0.09474999999999945, 0.182500000000001, 0.32399999999999984, 0.2660000000000009, 0.19500000000000028, 0.23950000000000138, 0.1717499999999994], zp_timestamp='2025-09-28T03:37:00')
2025-09-28T18:40:52.433 [DEBUG] [Thread-132404] [transport.py] [_log()] EOF in transport thread
2025-09-28T18:40:52.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-28T18:40:52.526 [DEBUG] [Thread-132407] [transport.py] [_log()] starting thread (client mode): 0x2e3c14b0
2025-09-28T18:40:52.526 [DEBUG] [Thread-132407] [transport.py] [_log()] Local version/idstring: SSH-2.0-paramiko_3.0.0
2025-09-28T18:40:52.541 [DEBUG] [Thread-132407] [transport.py] [_log()] Remote version/idstring: SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
2025-09-28T18:40:52.541 [INFO] [Thread-132407] [transport.py] [_log()] Connected (version 2.0, client OpenSSH_7.6p1)
2025-09-28T18:40:52.549 [DEBUG] [Thread-132407] [transport.py] [_log()] === Key exchange possibilities ===
2025-09-28T18:40:52.549 [DEBUG] [Thread-132407] [transport.py] [_log()] kex algos: curve25519-sha256, curve25519-sha256@libssh.org, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, diffie-hellman-group-exchange-sha256, diffie-hellman-group16-sha512, diffie-hellman-group18-sha512, diffie-hellman-group14-sha256, diffie-hellman-group14-sha1
2025-09-28T18:40:52.549 [DEBUG] [Thread-132407] [transport.py] [_log()] server key: ssh-rsa, rsa-sha2-512, rsa-sha2-256, ecdsa-sha2-nistp256, ssh-ed25519
2025-09-28T18:40:52.549 [DEBU
[file cut: first 33554432 bytes kept]
[document cut: first 32645681 of 33554432 characters kept]
